Deploying to gh-pages from @ RSS-Bridge/rss-bridge@76f5de3d0f 🚀

This commit is contained in:
Bockiii 2022-03-22 20:34:02 +00:00
parent 90f0f6f92f
commit 06dd2e3300
91 changed files with 11052 additions and 0 deletions

View File

@ -0,0 +1,512 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>BridgeAbstract - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item Nav__item--active'><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Bridge_API/index.html">Bridge API</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/05_Bridge_API/02_BridgeAbstract.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p><code>BridgeAbstract</code> is a base class for standard bridges. It implements the most common functions to simplify the process of adding new bridges.</p>
<hr />
<h1><a id="creating-a-new-bridge" href="#creating-a-new-bridge" class="Permalink" aria-hidden="true" title="Permalink">#</a>Creating a new bridge</h1>
<p>You need four basic steps in order to create a new bridge:</p>
<p><a href="#step-1---create-a-new-file"><strong>Step 1</strong></a> - Create a new file<br />
<a href="#step-2---add-a-class-extending-bridgeabstract"><strong>Step 2</strong></a> - Add a class, extending <code>BridgeAbstract</code><br />
<a href="#step-3---add-general-constants-to-the-class"><strong>Step 3</strong></a> - Add general constants to the class<br />
<a href="#step-4---implement-a-function-to-collect-feed-data"><strong>Step 4</strong></a> - Implement a function to collect feed data</p>
<p>These steps are described in more detail below. At the end of this document youll find a complete <a href="#template">template</a> based on these instructions. The pictures below show an example based on these instructions:</p>
<details><summary>Show pictures</summary><div>
<p><img src="../images/screenshot_bridgeabstract_example_card.png" alt="example card" /></p>
<hr />
<p><img src="../images/screenshot_bridgeabstract_example_atom.png" alt="example atom" /></p>
</div></details><br>
<p>Make sure to read these instructions carefully. Please dont hesitate to open an <a href="https://github.com/RSS-Bridge/rss-bridge/issues" class="Link--external" rel="noopener noreferrer">Issue</a> if you have further questions (or suggestions). Once your bridge is finished, please open a <a href="https://github.com/RSS-Bridge/rss-bridge/pulls" class="Link--external" rel="noopener noreferrer">Pull Request</a>, in order to get your bridge merge into RSS-Bridge.</p>
<hr />
<h2><a id="step-1-create-a-new-file" href="#step-1-create-a-new-file" class="Permalink" aria-hidden="true" title="Permalink">#</a>Step 1 - Create a new file</h2>
<p>Please read <a href="How_to_create_a_new_bridge.html">these instructions</a> on how to create a new file for RSS-Bridge.</p>
<h2><a id="step-2-add-a-class-extending-bridgeabstract" href="#step-2-add-a-class-extending-bridgeabstract" class="Permalink" aria-hidden="true" title="Permalink">#</a>Step 2 - Add a class, extending <code>BridgeAbstract</code></h2>
<p>Your bridge needs to be a class, which extends <code>BridgeAbstract</code>. The class name must <strong>exactly</strong> match the name of the file, without the file extension.</p>
<p>For example: <code>MyBridge.php</code> =&gt; <code>MyBridge</code></p>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">&lt;?PHP
class MyBridge extends BridgeAbstract {
}
// This line is empty (just imagine it!)
</code></pre>
</div></details>
<h2><a id="step-3-add-general-constants-to-the-class" href="#step-3-add-general-constants-to-the-class" class="Permalink" aria-hidden="true" title="Permalink">#</a>Step 3 - Add general constants to the class</h2>
<p>In order to present your bridge on the front page, RSS-Bridge requires a few constants:</p>
<pre><code class="language-PHP">const NAME // Name of the Bridge (default: &quot;Unnamed Bridge&quot;)
const URI // URI to the target website of the bridge (default: empty)
const DESCRIPTION // A brief description of the Bridge (default: &quot;No description provided&quot;)
const MAINTAINER // Name of the maintainer, i.e. your name on GitHub (default: &quot;No maintainer&quot;)
const PARAMETERS // (optional) Definition of additional parameters (default: empty)
const CACHE_TIMEOUT // (optional) Defines the maximum duration for the cache in seconds (default: 3600)
</code></pre>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">&lt;?PHP
class MyBridge extends BridgeAbstract {
const NAME = 'My Bridge';
const URI = 'https://github.com/RSS-Bridge/rss-bridge/wiki/BridgeAbstract';
const DESCRIPTION = 'Returns &quot;Hello World!&quot;';
const MAINTAINER = 'ghost';
}
// This line is empty (just imagine it!)
</code></pre>
</div></details><br>
<p><strong>Notice</strong>: <code>const PARAMETERS</code> can be used to request information from the user. Refer to <a href="#parameters">these instructions</a> for more information.</p>
<h2><a id="step-4-implement-a-function-to-collect-feed-data" href="#step-4-implement-a-function-to-collect-feed-data" class="Permalink" aria-hidden="true" title="Permalink">#</a>Step 4 - Implement a function to collect feed data</h2>
<p>In order for RSS-Bridge to collect data, you must implement the <strong>public</strong> function <code>collectData</code>. This function takes no arguments and returns nothing. It generates a list of feed elements, which must be placed into the variable <code>$this-&gt;items</code>.</p>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">&lt;?PHP
class MyBridge extends BridgeAbstract {
const NAME = 'My Bridge';
const URI = 'https://github.com/RSS-Bridge/rss-bridge/wiki/BridgeAbstract';
const DESCRIPTION = 'Returns &quot;Hello World!&quot;';
const MAINTAINER = 'ghost';
public function collectData() {
$item = array(); // Create an empty item
$item['title'] = 'Hello World!';
$this-&gt;items[] = $item; // Add item to the list
}
}
// This line is empty (just imagine it!)
</code></pre>
</div></details><br>
<p>For more details on the <code>collectData</code> function refer to <a href="#collectdata">these instructions</a>.</p>
<hr />
<h1><a id="template" href="#template" class="Permalink" aria-hidden="true" title="Permalink">#</a>Template</h1>
<p>Use this template to create your own bridge. Please remove any unnecessary comments and parameters.</p>
<pre><code class="hljs php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MyBridge</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">BridgeAbstract</span> </span>{
<span class="hljs-keyword">const</span> NAME = <span class="hljs-string">'Unnamed bridge'</span>;
<span class="hljs-keyword">const</span> URI = <span class="hljs-string">''</span>;
<span class="hljs-keyword">const</span> DESCRIPTION = <span class="hljs-string">'No description provided'</span>;
<span class="hljs-keyword">const</span> MAINTAINER = <span class="hljs-string">'No maintainer'</span>;
<span class="hljs-keyword">const</span> PARAMETERS = <span class="hljs-keyword">array</span>(); <span class="hljs-comment">// Can be omitted!</span>
<span class="hljs-keyword">const</span> CACHE_TIMEOUT = <span class="hljs-number">3600</span>; <span class="hljs-comment">// Can be omitted!</span>
<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">collectData</span><span class="hljs-params">()</span> </span>{
$item = <span class="hljs-keyword">array</span>(); <span class="hljs-comment">// Create an empty item</span>
$item[<span class="hljs-string">'title'</span>] = <span class="hljs-string">'Hello World!'</span>;
<span class="hljs-keyword">$this</span>-&gt;items[] = $item; <span class="hljs-comment">// Add item to the list</span>
}
}
<span class="hljs-comment">// This line is empty (just imagine it!)</span>
</code></pre>
<h1><a id="parameters" href="#parameters" class="Permalink" aria-hidden="true" title="Permalink">#</a>PARAMETERS</h1>
<p>You can specify additional parameters in order to customize the bridge (i.e. to specify how many items to return). This document explains how to specify those parameters and which options are available to you.</p>
<p>For information on how to read parameter values during execution, please refer to the <a href="../Helper_functions/index.html#getinput">getInput</a> function.</p>
<hr />
<h2><a id="adding-parameters-to-a-bridge" href="#adding-parameters-to-a-bridge" class="Permalink" aria-hidden="true" title="Permalink">#</a>Adding parameters to a bridge</h2>
<p>Parameters are specified as part of the bridge class. An empty list of parameters is defined as <code>const PARAMETERS = array();</code></p>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">&lt;?PHP
class MyBridge extends BridgeAbstract {
/* ... */
const PARAMETERS = array(); // Empty list of parameters (can be omitted)
/* ... */
}
</code></pre>
</div></details><br>
<p>Parameters are organized in two levels:</p>
<p><a href="##level-1---context"><strong>Level 1</strong></a> - Context<br />
<a href="##level-2---parameter"><strong>Level 2</strong></a> - Parameter</p>
<h2><a id="level-1-context" href="#level-1-context" class="Permalink" aria-hidden="true" title="Permalink">#</a>Level 1 - Context</h2>
<p>A context is defined as a associative array of parameters. The name of a context is displayed by RSS-Bridge.</p>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">const PARAMETERS = array(
'My Context 1' =&gt; array(),
'My Context 2' =&gt; array()
);
</code></pre>
<p><strong>Output</strong></p>
<p><img src="../images/bridge_context_named.png" alt="bridge context named" /></p>
</div></details><br>
<p><em>Notice</em>: The name of a context can be left empty if only one context is needed!</p>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">const PARAMETERS = array(
array()
);
</code></pre>
</div></details><br>
<p>You can also define a set of parameters that will be applied to every possible context of your bridge. To do this, specify a context named <code>global</code>.</p>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">const PARAMETERS = array(
'global' =&gt; array() // Applies to all contexts!
);
</code></pre>
</div></details>
<h2><a id="level-2-parameter" href="#level-2-parameter" class="Permalink" aria-hidden="true" title="Permalink">#</a>Level 2 - Parameter</h2>
<p>Parameters are placed inside a context. They are defined as associative array of parameter specifications. Each parameter is defined by its internal input name, a definition in the form <code>'n' =&gt; array();</code>, where <code>n</code> is the name with which the bridge can access the parameter during execution.</p>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">const PARAMETERS = array(
'My Context' =&gt; array(
'n' =&gt; array()
)
);
</code></pre>
</div></details><br>
<p>The parameter specification consists of various fields, listed in the table below.</p>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">const PARAMETERS = array(
'My Context' =&gt; array(
'n' =&gt; array(
'name' =&gt; 'Limit',
'type' =&gt; 'number',
'required' =&gt; false,
'title' =&gt; 'Maximum number of items to return',
'defaultValue' =&gt; 10
)
)
);
</code></pre>
<p><strong>Output</strong></p>
<p><img src="../images/context_parameter_example.png" alt="context parameter" /></p>
</div></details>
<hr />
<table>
<thead>
<tr>
<th>Parameter Name</th>
<th>Required</th>
<th>Type</th>
<th>Supported values</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>name</code></td>
<td><strong>yes</strong></td>
<td>Text</td>
<td></td>
<td>Input name as displayed to the user</td>
</tr>
<tr>
<td><code>type</code></td>
<td>no</td>
<td>Text</td>
<td><code>text</code>, <code>number</code>, <code>list</code>, <code>checkbox</code></td>
<td>Type of the input (default: <code>text</code>)</td>
</tr>
<tr>
<td><code>required</code></td>
<td>no</td>
<td>Boolean</td>
<td><code>true</code>, <code>false</code></td>
<td>Specifies if the parameter is required or not (default: <code>false</code>). Not supported for lists and checkboxes.</td>
</tr>
<tr>
<td><a href="#list-values"><code>values</code></a></td>
<td>no</td>
<td>associative array</td>
<td></td>
<td>name/value pairs used by the HTML option tag, required for type <code>list</code></td>
</tr>
<tr>
<td><code>title</code></td>
<td>no</td>
<td>Text</td>
<td></td>
<td>Used as tool-tip when mouse-hovering over the input box</td>
</tr>
<tr>
<td><code>pattern</code></td>
<td>no</td>
<td>Text</td>
<td></td>
<td>Defines a pattern for an element of type <code>text</code>. The pattern should be mentioned in the <code>title</code> attribute!</td>
</tr>
<tr>
<td><code>exampleValue</code></td>
<td>no</td>
<td>Text</td>
<td></td>
<td>Defines an example value displayed for elements of type <code>text</code> and <code>number</code> when no data has been entered yet</td>
</tr>
<tr>
<td><a href="#defaultvalue"><code>defaultValue</code></a></td>
<td>no</td>
<td></td>
<td></td>
<td>Defines the default value if left blank by the user</td>
</tr>
</tbody>
</table>
<h4><a id="list-values" href="#list-values" class="Permalink" aria-hidden="true" title="Permalink">#</a>List values</h4>
<p>List values are defined in an associative array where keys are the string displayed in the combo list of the <strong>RSS-Bridge</strong> web interface, and values are the content of the &lt;option&gt; HTML tag value attribute.</p>
<pre><code class="language-PHP">...
'type' =&gt; 'list',
'values' =&gt; array(
'Item A' =&gt; 'itemA'
'Item B' =&gt; 'itemB'
)
...
</code></pre>
<p>If a more complex organization is required to display the values, the above key/value can be used to set a title as a key and another array as a value:</p>
<pre><code class="language-PHP">...
'type' =&gt; 'list',
'values' =&gt; array(
'Item A' =&gt; 'itemA',
'List 1' =&gt; array(
'Item C' =&gt; 'itemC',
'Item D' =&gt; 'itemD'
),
'List 2' =&gt; array(
'Item E' =&gt; 'itemE',
'Item F' =&gt; 'itemF'
),
'Item B' =&gt; 'itemB'
)
...
</code></pre>
<h4><a id="defaultvalue" href="#defaultvalue" class="Permalink" aria-hidden="true" title="Permalink">#</a>defaultValue</h4>
<p>This attribute defines the default value for your parameter. Its behavior depends on the <code>type</code>:</p>
<ul>
<li>
<code>text</code>: Allows any text</li>
<li>
<code>number</code>: Allows any number</li>
<li>
<code>list</code>: Must match either name or value of one element</li>
<li>
<code>checkbox</code>: Must be “checked” to activate the checkbox</li>
</ul>
<hr />
<h1><a id="queriedcontext" href="#queriedcontext" class="Permalink" aria-hidden="true" title="Permalink">#</a>queriedContext</h1>
<p>The queried context is defined via <code>PARAMETERS</code> and can be accessed via <code>$this-&gt;queriedContext</code>.
It provides a way to identify which context the bridge is called with.</p>
<p>Example:</p>
<pre><code class="language-PHP">...
const PARAMETERS = array(
'By user name' =&gt; array(
'u' =&gt; array('name' =&gt; 'Username')
),
'By user ID' =&gt; array(
'id' =&gt; array('name' =&gt; 'User ID')
)
);
...
</code></pre>
<p>In this example <code>$this-&gt;queriedContext</code> will either return <strong>By user name</strong> or <strong>By user ID</strong>. The queried context might return no value, so the best way to handle it is by using a case-structure:</p>
<pre><code class="language-PHP">switch($this-&gt;queriedContext){
case 'By user name':
break;
case 'By user ID':
break;
default: // Return default value
}
</code></pre>
<h1><a id="collectdata" href="#collectdata" class="Permalink" aria-hidden="true" title="Permalink">#</a>collectData</h1>
<p>The <code>collectData</code> function is responsible for collecting data and adding items to generate feeds from. If you are unsure how to solve a specific problem, please dont hesitate to open an <a href="https://github.com/RSS-Bridge/rss-bridge/issues" class="Link--external" rel="noopener noreferrer">Issue</a> on GitHub. Existing bridges are also a good source to learn implementing your own bridge.</p>
<h2><a id="implementing-the-collectdata-function" href="#implementing-the-collectdata-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>Implementing the <code>collectData</code> function</h2>
<p>Implementation for the <code>collectData</code> function is specific to each bridge. However, there are certain reoccurring elements, described below. RSS-Bridge also provides functions to simplify the process of collecting and parsing HTML data (see “Helper Functions” on the sidebar)</p>
<p>Elements collected by this function must be stored in <code>$this-&gt;items</code>. The <code>items</code> variable is an array of item elements, each of which is an associative array that may contain arbitrary keys. RSS-Bridge specifies common keys which are used to generate most common feed formats.</p>
<details><summary>Show example</summary><div>
<pre><code class="language-PHP">
$item = array(); // Create a new item
$item['title'] = 'Hello World!';
$this-&gt;items[] = $item; // Add item to the list
</code></pre>
</div></details><br>
Additional keys may be added for custom APIs (ignored by RSS-Bridge).
<h2><a id="item-parameters" href="#item-parameters" class="Permalink" aria-hidden="true" title="Permalink">#</a>Item parameters</h2>
<p>The item array should provide as much information as possible for RSS-Bridge to generate feature rich feeds. Find below list of keys supported by RSS-Bridge.</p>
<pre><code class="language-PHP">$item['uri'] // URI to reach the subject (&quot;https://...&quot;)
$item['title'] // Title of the item
$item['timestamp'] // Timestamp of the item in numeric or text format (compatible for strtotime())
$item['author'] // Name of the author for this item
$item['content'] // Content in HTML format
$item['enclosures'] // Array of URIs to an attachments (pictures, files, etc...)
$item['categories'] // Array of categories / tags / topics
$item['uid'] // A unique ID to identify the current item
</code></pre>
<p>All formats support these parameters. The formats <code>Plaintext</code> and <code>JSON</code> also support custom parameters.</p>
<h1><a id="getdescription" href="#getdescription" class="Permalink" aria-hidden="true" title="Permalink">#</a>getDescription</h1>
<p>The <code>getDescription</code> function returns the description for a bridge.</p>
<p><strong>Notice:</strong> By default <strong>RSS-Bridge</strong> returns the contents of <code>const DESCRIPTION</code>, so you only have to implement this function if you require different behavior!</p>
<pre><code class="language-PHP"> public function getDescription(){
return self::DESCRIPTION;
}
</code></pre>
<h1><a id="getmaintainer" href="#getmaintainer" class="Permalink" aria-hidden="true" title="Permalink">#</a>getMaintainer</h1>
<p>The <code>getMaintainer</code> function returns the name of the maintainer for a bridge.</p>
<p><strong>Notice:</strong> By default <strong>RSS-Bridge</strong> returns <code>const MAINTAINER</code>, so you only have to implement this function if you require different behavior!</p>
<pre><code class="language-PHP"> public function getMaintainer(){
return self::MAINTAINER;
}
</code></pre>
<h1><a id="getname" href="#getname" class="Permalink" aria-hidden="true" title="Permalink">#</a>getName</h1>
<p>The <code>getName</code> function returns the name of a bridge.</p>
<p><strong>Notice:</strong> By default <strong>RSS-Bridge</strong> returns <code>const NAME</code>, so you only have to implement this function if you require different behavior!</p>
<pre><code class="language-PHP"> public function getName(){
return self::NAME;
}
</code></pre>
<h1><a id="geturi" href="#geturi" class="Permalink" aria-hidden="true" title="Permalink">#</a>getURI</h1>
<p>The <code>getURI</code> function returns the base URI for a bridge.</p>
<p><strong>Notice:</strong> By default <strong>RSS-Bridge</strong> returns <code>const URI</code>, so you only have to implement this function if you require different behavior!</p>
<pre><code class="language-PHP"> public function getURI(){
return self::URI;
}
</code></pre>
<h1><a id="geticon" href="#geticon" class="Permalink" aria-hidden="true" title="Permalink">#</a>getIcon</h1>
<p>The <code>getIcon</code> function returns the URI for an icon, used as favicon in feeds.</p>
<p>If no icon is specified by the bridge, RSS-Bridge will use a default location: <code>static::URI . '/favicon.ico'</code> (i.e. “https://github.com/favicon.ico”) which may or may not exist.</p>
<pre><code class="language-PHP"> public function getIcon(){
return static::URI . '/favicon.ico';
}
</code></pre>
<h1><a id="detectparameters" href="#detectparameters" class="Permalink" aria-hidden="true" title="Permalink">#</a>detectParameters</h1>
<p>The <code>detectParameters</code> function takes a URL and attempts to extract a valid set of parameters for the current bridge.</p>
<p>If the passed URL is valid for this bridge the function should return an array of parameter -&gt; value pairs that can be used by this bridge, or an empty array if the bridge requires no parameters. If the URL is not relevant for this bridge the function should return <code>null</code>.</p>
<p><strong>Notice:</strong> Implementing this function is optional. By default <strong>RSS-Bridge</strong> tries to match the supplied URL to the <code>URI</code> constant defined in the bridge which may be enough for bridges without any parameters defined.</p>
<pre><code class="language-PHP">public function detectParameters($url){
$regex = '/^(https?:\/\/)?(www\.)?(.+?)(\/)?$/';
if(empty(static::PARAMETERS)
&amp;&amp; preg_match($regex, $url, $urlMatches) &gt; 0
&amp;&amp; preg_match($regex, static::URI, $bridgeUriMatches) &gt; 0
&amp;&amp; $urlMatches[3] === $bridgeUriMatches[3]) {
return array();
} else {
return null;
}
}
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Bridge_API/How_to_create_a_new_bridge.html">Previous</a></li> <li class=Pager--next><a href="../Bridge_API/FeedExpander.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,274 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>FeedExpander - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item Nav__item--active'><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Bridge_API/index.html">Bridge API</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../Bridge_API/FeedExpander.html">FeedExpander</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/05_Bridge_API/03_FeedExpander.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p><code>FeedExpander</code> extends <a href="BridgeAbstract.html"><code>BridgeAbstract</code></a> and adds functions to collect data from existing feeds.</p>
<p><strong>Usage example</strong>: <em>You have discovered a site that provides feeds which are hidden and inaccessible by normal means. You want your bridge to directly read the feeds and provide them via <strong>RSS-Bridge</strong></em></p>
<p>To create a new Bridge extending <code>FeedExpander</code> you must implement all required functions of <a href="BridgeAbstract.html"><code>BridgeAbstract</code></a>. <code>FeedExpander</code> additionally provides following functions:</p>
<ul>
<li>
<a href="#the-parseitem-function"><code>parseItem</code></a>
</li>
<li>
<a href="#the-getname-function"><code>getName</code></a>
</li>
<li>
<a href="#the-geturi-function"><code>getURI</code></a>
</li>
<li>
<a href="#the-getdescription-function"><code>getDescription</code></a>
</li>
</ul>
<p>Find a <a href="#template">template</a> at the end of this file.</p>
<p><strong>Notice:</strong> For a standard feed only <code>collectData</code> need to be implemented. <code>collectData</code> should call <code>$this-&gt;collectExpandableDatas('your URI here');</code> to automatically load feed items and header data (will subsequently call <code>parseItem</code> for each item in the feed). You can limit the number of items to fetch by specifying an additional parameter for: <code>$this-&gt;collectExpandableDatas('your URI here', 10)</code> (limited to 10 items).</p>
<h2><a id="the-parseitem-function" href="#the-parseitem-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>parseItem</code> function</h2>
<p>This function receives one item from the current feed and should return one <strong>RSS-Bridge</strong> item.
The default function does all the work to get the item data from the feed, whether it is RSS 1.0,
RSS 2.0 or Atom 1.0. If you have to redefine this function in your <strong>RSS-Bridge</strong> for whatever reason,
you should first call the parent function to initialize the item, then apply the changes that you require.</p>
<p><strong>Notice:</strong> The following code sample is just an example. Implementation depends on your requirements!</p>
<pre><code class="language-PHP">protected function parseItem($feedItem){
$item = parent::parseItem($feedItem);
$item['content'] = str_replace('rssbridge','RSS-Bridge',$feedItem-&gt;content);
return $item;
}
</code></pre>
<h3><a id="helper-functions" href="#helper-functions" class="Permalink" aria-hidden="true" title="Permalink">#</a>Helper functions</h3>
<p>The <code>FeedExpander</code> already provides a set of functions to parse RSS or Atom items based on the specifications. Where possible make use of these functions:</p>
<table>
<thead>
<tr>
<th>Function</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>parseATOMItem</code></td>
<td>Parses an Atom 1.0 feed item</td>
</tr>
<tr>
<td><code>parseRSS_0_9_1_Item</code></td>
<td>Parses an RSS 0.91 feed item</td>
</tr>
<tr>
<td><code>parseRSS_1_0_Item</code></td>
<td>Parses an RSS 1.0 feed item</td>
</tr>
<tr>
<td><code>parseRSS_2_0_Item</code></td>
<td>Parses an RSS 2.0 feed item</td>
</tr>
</tbody>
</table>
<p>In the following list youll find the feed tags assigned to the the <strong>RSS-Bridge</strong> item keys:</p>
<table>
<thead>
<tr>
<th>Function</th>
<th>uri</th>
<th>title</th>
<th>timestamp</th>
<th>author</th>
<th>content</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>parseATOMItem</code></td>
<td>id</td>
<td>title</td>
<td>updated</td>
<td>author</td>
<td>content</td>
</tr>
<tr>
<td><code>parseRSS_0_9_1_Item</code></td>
<td>link</td>
<td>title</td>
<td></td>
<td></td>
<td>description</td>
</tr>
<tr>
<td><code>parseRSS_1_0_Item</code></td>
<td>link</td>
<td>title</td>
<td>dc:date</td>
<td>dc:creator</td>
<td>description</td>
</tr>
<tr>
<td><code>parseRSS_2_0_Item</code></td>
<td>link, guid</td>
<td>title</td>
<td>pubDate, dc:date</td>
<td>author, dc:creator</td>
<td>description</td>
</tr>
</tbody>
</table>
<h2><a id="the-getname-function" href="#the-getname-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>getName</code> function</h2>
<p>Returns the name of the current feed.</p>
<pre><code class="language-PHP">return $this-&gt;name;
</code></pre>
<p><strong>Notice:</strong> Only implement this function if you require different behavior!</p>
<h2><a id="the-geturi-function" href="#the-geturi-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>getURI</code> function</h2>
<p>Return the uri for the current feed.</p>
<pre><code class="language-PHP">return $this-&gt;uri;
</code></pre>
<p><strong>Notice:</strong> Only implement this function if you require different behavior!</p>
<h2><a id="the-getdescription-function" href="#the-getdescription-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>getDescription</code> function</h2>
<p>Returns the description for the current bridge.</p>
<pre><code class="language-PHP">return $this-&gt;description;
</code></pre>
<p><strong>Notice:</strong> Only implement this function if you require different behavior!</p>
<h1><a id="template" href="#template" class="Permalink" aria-hidden="true" title="Permalink">#</a>Template</h1>
<p>This is the template for a new bridge:</p>
<pre><code class="language-PHP">&lt;?php
class MySiteBridge extends FeedExpander {
const MAINTAINER = 'No maintainer';
const NAME = 'Unnamed bridge';
const URI = '';
const DESCRIPTION = 'No description provided';
const PARAMETERS = array();
const CACHE_TIMEOUT = 3600;
public function collectData(){
$this-&gt;collectExpandableDatas('your feed URI');
}
}
// Imaginary empty line!
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Bridge_API/BridgeAbstract.html">Previous</a></li> <li class=Pager--next><a href="../Bridge_API/XPathAbstract.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,178 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>How to create a new bridge - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item Nav__item--active'><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Bridge_API/index.html">Bridge API</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/05_Bridge_API/01_How_to_create_a_new_bridge.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>Create a new file in the <code>bridges/</code> folder (see <a href="../For_Developers/Folder_structure.html">Folder structure</a>).</p>
<p>The file name must be named according to following specification:</p>
<ul>
<li>It starts with the full name of the site</li>
<li>All white-space must be removed</li>
<li>The first letter of a word is written in upper-case, unless the site name is specified otherwise (example: Freenews, not FreeNews, because the site is named Freenews)</li>
<li>The first character must be upper-case</li>
<li>The file name must end with Bridge</li>
<li>The file type must be PHP, written in <strong>small</strong> letters (seriously!) “.php”</li>
</ul>
<p><strong>Examples:</strong></p>
<table>
<thead>
<tr>
<th>Site</th>
<th>Filename</th>
</tr>
</thead>
<tbody>
<tr>
<td>Wikipedia</td>
<td><strong>Wikipedia</strong>Bridge.php</td>
</tr>
<tr>
<td>Facebook</td>
<td><strong>Facebook</strong>Bridge.php</td>
</tr>
<tr>
<td>GitHub</td>
<td><strong>GitHub</strong>Bridge.php</td>
</tr>
<tr>
<td>Freenews</td>
<td><strong>Freenews</strong>Bridge.php</td>
</tr>
</tbody>
</table>
<p>The file must start with the PHP tags and end with an empty line. The closing tag <code>?&gt;</code> is <a href="http://php.net/basic-syntax.instruction-separation" class="Link--external" rel="noopener noreferrer">omitted</a>.</p>
<p><strong>Example:</strong></p>
<pre><code class="hljs php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-comment">// PHP code here</span>
<span class="hljs-comment">// This line is empty (just imagine it!)</span>
</code></pre>
<p>The next step is to extend one of the base classes. Refer to one of an base classes listed on the <a href="index.html">Bridge API</a> page.</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Bridge_API/index.html">Previous</a></li> <li class=Pager--next><a href="../Bridge_API/BridgeAbstract.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,243 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>XPathAbstract - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item Nav__item--active'><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Bridge_API/index.html">Bridge API</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/05_Bridge_API/04_XPathAbstract.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p><code>XPathAbstract</code> extends <a href="BridgeAbstract.html"><code>BridgeAbstract</code></a> and adds functionality for generating feeds based on <em>XPath expressions</em>. It makes creation of new bridges easy and if youre familiar with XPath expressions this class is probably the right point for you to start with.</p>
<p>At the end of this document youll find a complete <a href="#template">template</a> based on these instructions.</p>
<hr />
<h1><a id="required-constants" href="#required-constants" class="Permalink" aria-hidden="true" title="Permalink">#</a>Required constants</h1>
<p>To create a new Bridge based on <code>XPathAbstract</code> your inheriting class should specify a set of constants describing the feed and the XPath expressions.</p>
<p>It is advised to override constants inherited from <a href="BridgeAbstract.html#step-3---add-general-constants-to-the-class"><code>BridgeAbstract</code></a> aswell.</p>
<h2><a id="class-constant-feed-source-url" href="#class-constant-feed-source-url" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>FEED_SOURCE_URL</code></h2>
<p>Source Web page URL (should provide either HTML or XML content). You can specify any website URL which serves data suited for display in RSS feeds</p>
<h2><a id="class-constant-xpath-expression-feed-title" href="#class-constant-xpath-expression-feed-title" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_FEED_TITLE</code></h2>
<p>XPath expression for extracting the feed title from the source page. If this is left blank or does not provide any data <code>BridgeAbstract::getName()</code> is used instead as the feeds title.</p>
<h2><a id="class-constant-xpath-expression-feed-icon" href="#class-constant-xpath-expression-feed-icon" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_FEED_ICON</code></h2>
<p>XPath expression for extracting the feed favicon URL from the source page. If this is left blank or does not provide any data <code>BridgeAbstract::getIcon()</code> is used instead as the feeds favicon URL.</p>
<h2><a id="class-constant-xpath-expression-item" href="#class-constant-xpath-expression-item" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_ITEM</code></h2>
<p>XPath expression for extracting the feed items from the source page. Enter an XPath expression matching a list of dom nodes, each node containing one feed article item in total (usually a surrounding <code>&lt;div&gt;</code> or <code>&lt;span&gt;</code> tag). This will be the context nodes for all of the following expressions. This expression usually starts with a single forward slash.</p>
<h2><a id="class-constant-xpath-expression-item-title" href="#class-constant-xpath-expression-item-title" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_ITEM_TITLE</code></h2>
<p>XPath expression for extracting an item title from the item context. This expression should match a node contained within each article item node containing the article headline. It should start with a dot followed by two forward slashes, referring to any descendant nodes of the article item node.</p>
<h2><a id="class-constant-xpath-expression-item-content" href="#class-constant-xpath-expression-item-content" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_ITEM_CONTENT</code></h2>
<p>XPath expression for extracting an items content from the item context. This expression should match a node contained within each article item node containing the article content or description. It should start with a dot followed by two forward slashes, referring to any descendant nodes of the article item node.</p>
<h2><a id="class-constant-xpath-expression-item-uri" href="#class-constant-xpath-expression-item-uri" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_ITEM_URI</code></h2>
<p>XPath expression for extracting an item link from the item context. This expression should match a nodes attribute containing the article URL (usually the href attribute of an <code>&lt;a&gt;</code> tag). It should start with a dot followed by two forward slashes, referring to any descendant nodes of the article item node. Attributes can be selected by prepending an <code>@</code> char before the attributes name.</p>
<h2><a id="class-constant-xpath-expression-item-author" href="#class-constant-xpath-expression-item-author" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_ITEM_AUTHOR</code></h2>
<p>XPath expression for extracting an item author from the item context. This expression should match a node contained within each article item node containing the article authors name. It should start with a dot followed by two forward slashes, referring to any descendant nodes of the article item node.</p>
<h2><a id="class-constant-xpath-expression-item-timestamp" href="#class-constant-xpath-expression-item-timestamp" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_ITEM_TIMESTAMP</code></h2>
<p>XPath expression for extracting an item timestamp from the item context. This expression should match a node or nodes attribute containing the article timestamp or date (parsable by PHPs strtotime function). It should start with a dot followed by two forward slashes, referring to any descendant nodes of the article item node. Attributes can be selected by prepending an <code>@</code> char before the attributes name.</p>
<h2><a id="class-constant-xpath-expression-item-enclosures" href="#class-constant-xpath-expression-item-enclosures" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_ITEM_ENCLOSURES</code></h2>
<p>XPath expression for extracting item enclosures (media content like images or movies) from the item context. This expression should match a nodes attribute containing an article image URL (usually the src attribute of an <img> tag or a style attribute). It should start with a dot followed by two forward slashes, referring to any descendant nodes of the article item node. Attributes can be selected by prepending an <code>@</code> char before the attributes name.</p>
<h2><a id="class-constant-xpath-expression-item-categories" href="#class-constant-xpath-expression-item-categories" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>XPATH_EXPRESSION_ITEM_CATEGORIES</code></h2>
<p>XPath expression for extracting an item category from the item context. This expression should match a node or nodes attribute contained within each article item node containing the article category. This could be inside <div> or <span> tags or sometimes be hidden in a data attribute. It should start with a dot followed by two forward slashes, referring to any descendant nodes of the article item node. Attributes can be selected by prepending an <code>@</code> char before the attributes name.</p>
<h2><a id="class-constant-setting-fix-encoding" href="#class-constant-setting-fix-encoding" class="Permalink" aria-hidden="true" title="Permalink">#</a>Class constant <code>SETTING_FIX_ENCODING</code></h2>
<p>Turns on automatic fixing of encoding errors. Set this to true for fixing feed encoding by invoking PHPs <code>utf8_decode</code> function on all extracted texts. Try this in case you see “broken” or “weird” characters in your feed where youd normally expect umlauts or any other non-ascii characters.</p>
<h1><a id="optional-methods" href="#optional-methods" class="Permalink" aria-hidden="true" title="Permalink">#</a>Optional methods</h1>
<p><code>XPathAbstract</code> offers a set of methods which can be overridden by derived classes for fine tuning and customization. This is optional. The methods provided for overriding can be grouped into three categories.</p>
<h2><a id="methods-for-providing-xpath-expressions" href="#methods-for-providing-xpath-expressions" class="Permalink" aria-hidden="true" title="Permalink">#</a>Methods for providing XPath expressions</h2>
<p>Usually XPath expressions are defined in the class constants described above. By default the following base methods just return the value of its corresponding class constant. However deriving classed can override them in case if XPath expressions need to be formed dynamically or based on conditions. In case any of these methods is defined, the methods return value is used instead of the corresponding constant for providing the value.</p>
<h3><a id="method-getsourceurl" href="#method-getsourceurl" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getSourceUrl()</code></h3>
<p>Should return the source Web page URL used as a base for applying the XPath expressions.</p>
<h3><a id="method-getexpressiontitle" href="#method-getexpressiontitle" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionTitle()</code></h3>
<p>Should return the XPath expression for extracting the feed title from the source page.</p>
<h3><a id="method-getexpressionicon" href="#method-getexpressionicon" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionIcon()</code></h3>
<p>Should return the XPath expression for extracting the feed favicon from the source page.</p>
<h3><a id="method-getexpressionitem" href="#method-getexpressionitem" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionItem()</code></h3>
<p>Should return the XPath expression for extracting the feed items from the source page.</p>
<h3><a id="method-getexpressionitemtitle" href="#method-getexpressionitemtitle" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionItemTitle()</code></h3>
<p>Should return the XPath expression for extracting an item title from the item context.</p>
<h3><a id="method-getexpressionitemcontent" href="#method-getexpressionitemcontent" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionItemContent()</code></h3>
<p>Should return the XPath expression for extracting an items content from the item context.</p>
<h3><a id="method-getexpressionitemuri" href="#method-getexpressionitemuri" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionItemUri()</code></h3>
<p>Should return the XPath expression for extracting an item link from the item context.</p>
<h3><a id="method-getexpressionitemauthor" href="#method-getexpressionitemauthor" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionItemAuthor()</code></h3>
<p>Should return the XPath expression for extracting an item author from the item context.</p>
<h3><a id="method-getexpressionitemtimestamp" href="#method-getexpressionitemtimestamp" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionItemTimestamp()</code></h3>
<p>Should return the XPath expression for extracting an item timestamp from the item context.</p>
<h3><a id="method-getexpressionitemenclosures" href="#method-getexpressionitemenclosures" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionItemEnclosures()</code></h3>
<p>Should return the XPath expression for extracting item enclosures (media content like images or movies) from the item context.</p>
<h3><a id="method-getexpressionitemcategories" href="#method-getexpressionitemcategories" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getExpressionItemCategories()</code></h3>
<p>Should return the XPath expression for extracting an item category from the item context.</p>
<h3><a id="method-getsettingfixencoding" href="#method-getsettingfixencoding" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>getSettingFixEncoding()</code></h3>
<p>Should return the Fix encoding setting value (bool true or false).</p>
<h2><a id="methods-for-providing-feed-data" href="#methods-for-providing-feed-data" class="Permalink" aria-hidden="true" title="Permalink">#</a>Methods for providing feed data</h2>
<p>Those methods are invoked for providing the HTML source as a base for applying the XPath expressions as well as feed meta data as the title and icon.</p>
<h3><a id="method-providewebsitecontent" href="#method-providewebsitecontent" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>provideWebsiteContent()</code></h3>
<p>This method should return the HTML source as a base for the XPath expressions. Usually it merely returns the HTML content of the URL specified in the constant <code>FEED_SOURCE_URL</code> retrieved by curl. Some sites however require user authentication mechanisms, the use of special cookies and/or headers, where the direct retrival using standard curl would not suffice. In that case this method should be overridden and take care of the page retrival.</p>
<h3><a id="method-providefeedtitle" href="#method-providefeedtitle" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>provideFeedTitle()</code></h3>
<p>This method should provide the feed title. Usually the XPath expression defined in <code>XPATH_EXPRESSION_FEED_TITLE</code> is used for extracting the title directly from the page source.</p>
<h3><a id="method-providefeedicon" href="#method-providefeedicon" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>provideFeedIcon()</code></h3>
<p>This method should provide the feed title. Usually the XPath expression defined in <code>XPATH_EXPRESSION_FEED_ICON</code> is used for extracting the title directly from the page source.</p>
<h3><a id="method-providefeeditems" href="#method-providefeeditems" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>provideFeedItems()</code></h3>
<p>This method should provide the feed items. Usually the XPath expression defined in <code>XPATH_EXPRESSION_ITEM</code> is used for extracting the items from the page source. All other XPath expressions are applied on a per-item basis, item by item, and only on the items contents.</p>
<h2><a id="methods-for-formatting-and-filtering-feed-item-attributes" href="#methods-for-formatting-and-filtering-feed-item-attributes" class="Permalink" aria-hidden="true" title="Permalink">#</a>Methods for formatting and filtering feed item attributes</h2>
<p>The following methods are invoked after extraction of the feed items from the source. Each of them expect one parameter, the value of the corresponding field, which then can be processed and transformed by the method. You can override these methods in order to format or filter parts of the feed output.</p>
<h3><a id="method-formatitemtitle" href="#method-formatitemtitle" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>formatItemTitle()</code></h3>
<p>Accepts the items title values as parameter, processes and returns it. Should return a string.</p>
<h3><a id="method-formatitemcontent" href="#method-formatitemcontent" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>formatItemContent()</code></h3>
<p>Accepts the items content as parameter, processes and returns it. Should return a string.</p>
<h3><a id="method-formatitemuri" href="#method-formatitemuri" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>formatItemUri()</code></h3>
<p>Accepts the items link URL as parameter, processes and returns it. Should return a string.</p>
<h3><a id="method-formatitemauthor" href="#method-formatitemauthor" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>formatItemAuthor()</code></h3>
<p>Accepts the items author as parameter, processes and returns it. Should return a string.</p>
<h3><a id="method-formatitemtimestamp" href="#method-formatitemtimestamp" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>formatItemTimestamp()</code></h3>
<p>Accepts the items creation timestamp as parameter, processes and returns it. Should return a unix timestamp as integer.</p>
<h3><a id="method-cleanimageurl" href="#method-cleanimageurl" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>cleanImageUrl()</code></h3>
<p>Method invoked for cleaning feed icon and item image URLs. Extracts the image URL from the passed parameter, stripping any additional content. Furthermore makes sure that relative image URLs get transformed to absolute ones.</p>
<h3><a id="method-fixencoding" href="#method-fixencoding" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>fixEncoding()</code></h3>
<p>Only invoked when class constant <code>SETTING_FIX_ENCODING</code> is set to true. It then passes all extracted string values through PHPs <code>utf8_decode</code> function.</p>
<h3><a id="method-generateitemid" href="#method-generateitemid" class="Permalink" aria-hidden="true" title="Permalink">#</a>Method <code>generateItemId()</code></h3>
<p>This method plays in important role for generating feed item ids for all extracted items. Every feed item needs an unique identifier (Uid), so that your feed reader updates the original item instead of adding a duplicate in case an items content is updated on the source site. Usually the items link URL is a good candidate the the Uid.</p>
<hr />
<h1><a id="template" href="#template" class="Permalink" aria-hidden="true" title="Permalink">#</a>Template</h1>
<p>Use this template to create your own bridge. Please remove any unnecessary comments and parameters.</p>
<pre><code class="language-PHP">&lt;?php
class TestBridge extends XPathAbstract {
const NAME = 'Test';
const URI = 'https://www.unbemerkt.eu/de/blog/';
const DESCRIPTION = 'Test';
const MAINTAINER = 'your name';
const CACHE_TIMEOUT = 3600;
const FEED_SOURCE_URL = 'https://www.unbemerkt.eu/de/blog/';
const XPATH_EXPRESSION_ITEM = '/html[1]/body[1]/section[1]/section[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[*]/article[1]';
const XPATH_EXPRESSION_ITEM_TITLE = './/a[@target=&quot;_self&quot;]';
const XPATH_EXPRESSION_ITEM_CONTENT = './/div[@class=&quot;post-content&quot;]';
const XPATH_EXPRESSION_ITEM_URI = './/a[@class=&quot;more-btn&quot;]/@href';
const XPATH_EXPRESSION_ITEM_AUTHOR = '/html[1]/body[1]/section[1]/div[2]/div[1]/div[1]/h1[1]';
const XPATH_EXPRESSION_ITEM_TIMESTAMP = './/time/@datetime';
const XPATH_EXPRESSION_ITEM_ENCLOSURES = './/img/@data-src';
const SETTING_FIX_ENCODING = false;
}
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Bridge_API/FeedExpander.html">Previous</a></li> <li class=Pager--next><a href="../Helper_functions/index.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

158
Bridge_API/index.html Normal file
View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Bridge API - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Bridge_API/index.html">Bridge API</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/05_Bridge_API/index.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>A <em>Bridge</em> is an class that allows <strong>RSS-Bridge</strong> to create an RSS-feed from a website. A <em>Bridge</em> represents one element on the <a href="../General/Screenshots.html">Welcome screen</a> and covers one or more sites to return feeds for. It is developed in a PHP file located in the <code>bridges/</code> folder (see <a href="../For_Developers/Folder_structure.html">Folder structure</a>) and extends one of the base classes of <strong>RSS-Bridge</strong>:</p>
<table>
<thead>
<tr>
<th>Base class</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="BridgeAbstract.html"><code>BridgeAbstract</code></a></td>
<td>This class is intended for standard <em>Bridges</em> that need to filter HTML pages for content.</td>
</tr>
<tr>
<td><a href="FeedExpander.html"><code>FeedExpander</code></a></td>
<td>This class is an extension of <code>HttpCachingBridgeAbstract</code>, designed to load existing feeds into <strong>RSS-Bridge</strong></td>
</tr>
<tr>
<td><a href="XPathAbstract.html"><code>XPathAbstract</code></a></td>
<td>This class is meant as an alternative base class for bridge implementations. It offers preliminary functionality for generating feeds based on <em>XPath expressions</em>.</td>
</tr>
</tbody>
</table>
<p>For more information about how to create a new <em>Bridge</em>, read <a href="How_to_create_a_new_bridge.html">How to create a new Bridge?</a></p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Developers/Debug_mode.html">Previous</a></li> <li class=Pager--next><a href="../Bridge_API/How_to_create_a_new_bridge.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

168
CLI/index.html Normal file
View File

@ -0,0 +1,168 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>CLI - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item Nav__item--open'><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../CLI/index.html">CLI</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/02_CLI/index.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>RSS-Bridge supports calls via CLI. You can use the same parameters as you would normally use via the URI. Example:</p>
<p><code>php index.php action=display bridge=DansTonChat format=Json</code></p>
<h2><a id="required-parameters" href="#required-parameters" class="Permalink" aria-hidden="true" title="Permalink">#</a>Required parameters</h2>
<p>RSS-Bridge requires a few parameters that must be specified on every call. Omitting these parameters will result in error messages:</p>
<h3><a id="action" href="#action" class="Permalink" aria-hidden="true" title="Permalink">#</a>action</h3>
<p>Defines how RSS-Bridge responds to the request.</p>
<table>
<thead>
<tr>
<th>Value</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>action=list</code></td>
<td>Returns a JSON formatted list of bridges. Other parameters are ignored.</td>
</tr>
<tr>
<td><code>action=display</code></td>
<td>Returns (displays) a feed.</td>
</tr>
</tbody>
</table>
<h3><a id="bridge" href="#bridge" class="Permalink" aria-hidden="true" title="Permalink">#</a>bridge</h3>
<p>This parameter specifies the name of the bridge RSS-Bridge should return feeds from. The name of the bridge equals the class name of the bridges in the ./bridges/ folder without the Bridge prefix. For example: DansTonChatBridge =&gt; DansTonChat.</p>
<h3><a id="format" href="#format" class="Permalink" aria-hidden="true" title="Permalink">#</a>format</h3>
<p>This parameter specifies the format in which RSS-Bridge returns the contents. RSS-Bridge currently supports five formats: <code>Atom</code>, <code>Html</code>, <code>Json</code>, <code>Mrss</code>and <code>Plaintext</code>.</p>
<h2><a id="optional-parameters" href="#optional-parameters" class="Permalink" aria-hidden="true" title="Permalink">#</a>Optional parameters</h2>
<p>RSS-Bridge supports optional parameters. These parameters are only valid if the options have been enabled in the index.php script.</p>
<h3><a id="noproxy" href="#noproxy" class="Permalink" aria-hidden="true" title="Permalink">#</a>_noproxy</h3>
<p>This parameter is only available if a proxy server has been specified via <code>PROXY_URL</code> and PROXY_BYBRIDGE has been enabled. This is a Boolean parameter that can be set to 1 (true) or 0 (false).</p>
<h2><a id="bridge-parameters" href="#bridge-parameters" class="Permalink" aria-hidden="true" title="Permalink">#</a>Bridge parameters</h2>
<p>Each bridge can specify its own set of parameters. As in the example above, some bridges dont specify any parameters or only optional parameters that can be neglected. For more details read the <code>PARAMETERS</code> definition for your bridge.</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../General/Public_Hosts.html">Previous</a></li> <li class=Pager--next><a href="../For_Hosts/index.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,194 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>CacheInterface - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item Nav__item--active'><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Cache_API/index.html">Cache API</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../Cache_API/CacheInterface.html">CacheInterface</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/07_Cache_API/02_CacheInterface.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>The <code>CacheInterface</code> interface defines functions that need to be implemented. To create a new cache that implements <code>CacheInterface</code> you must implement following functions:</p>
<ul>
<li>
<a href="#the-loaddata-function">loadData</a>
</li>
<li>
<a href="#the-savedata-function">saveData</a>
</li>
<li>
<a href="#the-gettime-function">getTime</a>
</li>
<li>
<a href="#the-purgecache-function">purgeCache</a>
</li>
</ul>
<p>Find a <a href="#template">template</a> at the end of this file.</p>
<h1><a id="functions" href="#functions" class="Permalink" aria-hidden="true" title="Permalink">#</a>Functions</h1>
<h2><a id="the-loaddata-function" href="#the-loaddata-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>loadData</code> function</h2>
<p>This function loads data from the cache and returns the data in the same format provided to the <a href="#the-savedata-function">saveData</a> function.</p>
<pre><code class="language-PHP">loadData(): mixed
</code></pre>
<h2><a id="the-savedata-function" href="#the-savedata-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>saveData</code> function</h2>
<p>This function stores the given data into the cache and returns the object instance.</p>
<pre><code class="language-PHP">saveData(mixed $data): self
</code></pre>
<h2><a id="the-gettime-function" href="#the-gettime-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>getTime</code> function</h2>
<p>This function returns the last write time for the cache, or <code>false</code> if the cache does not yet exist. Please notice that cache refers to one specific item in the cache repository and might require additional data to identify a specific item (introduce custom functions where necessary!).</p>
<pre><code class="language-PHP">getTime(): int, false
</code></pre>
<h2><a id="the-purgecache-function" href="#the-purgecache-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>purgeCache</code> function</h2>
<p>This function removes any data from the cache that is not within the given duration. The duration is specified in seconds and defines the period between now and the oldest item to keep.</p>
<pre><code class="language-PHP">purgeCache(int $duration): null
</code></pre>
<h1><a id="template" href="#template" class="Permalink" aria-hidden="true" title="Permalink">#</a>Template</h1>
<p>This is the bare minimum template for a new cache:</p>
<pre><code class="language-PHP">&lt;?php
class MyTypeCache implements CacheInterface {
public function loadData(){
// Implement your algorithm here!
return null;
}
public function saveData($data){
// Implement your algorithm here!
return $this;
}
public function getTime(){
// Implement your algorithm here!
return false;
}
public function purgeCache($duration){
// Implement your algorithm here!
}
}
// Imaginary empty line!
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Cache_API/How_to_create_a_new_cache.html">Previous</a></li> <li class=Pager--next><a href="../Format_API/index.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,166 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>How to create a new cache - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item Nav__item--active'><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Cache_API/index.html">Cache API</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/07_Cache_API/01_How_to_create_a_new_cache.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>Create a new file in the <code>caches/</code> folder (see <a href="../For_Developers/Folder_structure.html">Folder structure</a>).</p>
<p>The file must be named according to following specification:</p>
<ul>
<li>It starts with the type</li>
<li>The file name must end with Cache</li>
<li>The file type must be PHP, written in small letters (seriously!) “.php”</li>
</ul>
<p><strong>Examples:</strong></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Filename</th>
</tr>
</thead>
<tbody>
<tr>
<td>File</td>
<td>FileCache.php</td>
</tr>
<tr>
<td>MySQL</td>
<td>MySQLCache.php</td>
</tr>
</tbody>
</table>
<p>The file must start with the PHP tags and end with an empty line. The closing tag <code>?&gt;</code> is <a href="http://php.net/basic-syntax.instruction-separation" class="Link--external" rel="noopener noreferrer">omitted</a>.</p>
<p>Example:</p>
<pre><code class="language-PHP">&lt;?PHP
// PHP code here
// This line is empty (just imagine it!)
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Cache_API/index.html">Previous</a></li> <li class=Pager--next><a href="../Cache_API/CacheInterface.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

136
Cache_API/index.html Normal file
View File

@ -0,0 +1,136 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Cache API - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Cache_API/index.html">Cache API</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/07_Cache_API/index.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>A <em>Cache</em> is a class that allows <strong>RSS-Bridge</strong> to store fetched data in a local storage area on the server. Cache imlementations are placed in the <code>caches/</code> folder (see <a href="../For_Developers/Folder_structure.html">Folder structure</a>). A cache must implement the <a href="CacheInterface.html"><code>CacheInterface</code></a> interface.</p>
<p>For more information about how to create a new <code>Cache</code>, read <a href="How_to_create_a_new_cache.html">How to create a new cache?</a></p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Helper_functions/index.html">Previous</a></li> <li class=Pager--next><a href="../Cache_API/How_to_create_a_new_cache.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

265
For_Developers/Actions.html Normal file
View File

@ -0,0 +1,265 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Actions - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item Nav__item--active'><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Developers/index.html">For Developers</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Developers/Actions.html">Actions</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/04_For_Developers/04_Actions.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>RSS-Bridge currently supports three actions which it can operate:</p>
<ol>
<li>
<a href="#display">Display</a> (<code>?action=display</code>)</li>
<li>
<a href="#detect">Detect</a> (<code>?action=detect</code>)</li>
<li>
<a href="#list">List</a> (<code>?action=list</code>)</li>
</ol>
<h2><a id="display" href="#display" class="Permalink" aria-hidden="true" title="Permalink">#</a>Display</h2>
<p>The <code>display</code> action returns feeds generated by <a href="../Bridge_API/index.html">bridges</a>. It requires additional parameter, some of which are specific to each bridge (see implementation details for your specific bridge). The following list contains mandatory parameter applicable to all bridges, excluding parameters that require <a href="../For_Hosts/Custom_Configuration.html">additional options</a>. Errors are returned for missing mandatory parameters:</p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>bridge</code></td>
<td>yes</td>
<td>Specifies the name of the bridge to display. Possible values are determined from the bridges available to the current instance of RSS-Bridge and the <a href="../For_Hosts/Whitelisting.html">whitelist</a>.</td>
</tr>
<tr>
<td><code>format</code></td>
<td>yes</td>
<td>Specifies the name of the format to use for displaying the feed. Possible values are determined from the formats available to the current instance of RSS-Bridge.</td>
</tr>
</tbody>
</table>
<h2><a id="detect" href="#detect" class="Permalink" aria-hidden="true" title="Permalink">#</a>Detect</h2>
<p>The <code>detect</code> action attempts to redirect the user to an appropriate <code>display</code> action for a feed based on a supplied URL. As bridges have to individually implement this it may not work for every bridge.</p>
<p>If an appropriate bridge is found, a <code>301 Moved Permanently</code> HTTP status code is returned with a relative location for a <code>display</code> action. If no appropriate bridge is found or a required parameter is missing, a <code>400 Bad Request</code> status code is returned.</p>
<p>The parameters for this action are listed bellow:</p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>url</code></td>
<td>yes</td>
<td>Specifies the URL to attempt to find a feed from. The value of this should be URL encoded.</td>
</tr>
<tr>
<td><code>format</code></td>
<td>yes</td>
<td>Specifies the name of the format to use for displaying the feed. This is passed to the detected <code>display</code> action. Possible values are determined from the formats available to the current instance of RSS-Bridge.</td>
</tr>
</tbody>
</table>
<h2><a id="list" href="#list" class="Permalink" aria-hidden="true" title="Permalink">#</a>List</h2>
<p>The <code>list</code> action returns a JSON formatted text containing information on all bridges available to the current instance of RSS-Bridge. Inactive bridges (not <a href="../For_Hosts/Whitelisting.html">whitelisted</a>) are included as well. Broken bridges are also included, but with limited parameters (only <code>&quot;status&quot;: &quot;inactive&quot;</code>).</p>
<p>This example shows JSON data for a single bridge:</p>
<pre><code class="language-JSON">{
&quot;bridges&quot;: {
&quot;ABCTabs&quot;: {
&quot;status&quot;: &quot;active&quot;,
&quot;uri&quot;: &quot;https:\/\/www.abc-tabs.com\/&quot;,
&quot;name&quot;: &quot;ABC Tabs Bridge&quot;,
&quot;parameters&quot;: [],
&quot;maintainer&quot;: &quot;kranack&quot;,
&quot;description&quot;: &quot;Returns 22 newest tabs&quot;
}
},
&quot;total&quot;: 1
}
</code></pre>
<p>The top-level JSON object contains two parameters:</p>
<ul>
<li>
<a href="#bridges"><code>bridges</code></a>: A collection of bridges</li>
<li>
<a href="#total"><code>total</code></a>: The total number of bridges</li>
</ul>
<pre><code class="language-JSON">{
&quot;bridges&quot;: { },
&quot;total&quot;: 0
}
</code></pre>
<h3><a id="bridges" href="#bridges" class="Permalink" aria-hidden="true" title="Permalink">#</a><code>bridges</code></h3>
<p>The <code>bridges</code> parameter is a collection of bridge objects. The name of each object represents the name of the bridge as needed for the <a href="#display"><code>display</code> action</a>. Each object contains parameters, most of which are optional. The following table summarizes the parameters:</p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>status</code></td>
<td>No</td>
<td>Indicates the status of the bridge. Possible values are <code>active</code> and <code>inactive</code>. Only <code>active</code> bridges can be used for the <a href="#display"><code>display</code> action</a>.</td>
</tr>
<tr>
<td><code>uri</code></td>
<td>Yes</td>
<td>Returns the URI of the bridge, as returned by the <a href="../Bridge_API/BridgeAbstract.html#geturi"><code>getURI</code></a> function of the bridge.</td>
</tr>
<tr>
<td><code>name</code></td>
<td>Yes</td>
<td>Returns the name of the bridge, as returned by the <a href="../Bridge_API/BridgeAbstract.html#getname"><code>getName</code></a> function of the bridge.</td>
</tr>
<tr>
<td><code>parameters</code></td>
<td>Yes</td>
<td>Returns the <code>PARAMETERS</code> object of the bridge</td>
</tr>
<tr>
<td><code>maintainer</code></td>
<td>Yes</td>
<td>Returns the name(s) of maintainer(s) for the bridge</td>
</tr>
<tr>
<td><code>description</code></td>
<td>Yes</td>
<td>Returns the description of the bridge</td>
</tr>
</tbody>
</table>
<h3><a id="total" href="#total" class="Permalink" aria-hidden="true" title="Permalink">#</a><code>total</code></h3>
<p>This parameter represents the total number of bridges available to the current instance of RSS-Bridge.</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Developers/Folder_structure.html">Previous</a></li> <li class=Pager--next><a href="../For_Developers/Debug_mode.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,559 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Coding style policy - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item Nav__item--active'><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Developers/index.html">For Developers</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/04_For_Developers/01_Coding_style_policy.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>This section explains the coding style policy for RSS-Bridge with examples and references to external resources. Please make sure your code is compliant before opening a pull request.</p>
<p>RSS-Bridge uses <a href="https://travis-ci.org/" class="Link--external" rel="noopener noreferrer">Travis-CI</a> to validate code quality. You will automatically be notified if issues were found in your pull request. You must fix those issues before the pull request will be merged. Refer to <a href="https://github.com/RSS-Bridge/rss-bridge/blob/master/phpcs.xml" class="Link--external" rel="noopener noreferrer">phpcs.xml</a> for a complete list of policies enforced by Travis-CI.</p>
<p>If you want to run the checks locally, make sure you have <a href="https://github.com/squizlabs/PHP_CodeSniffer" class="Link--external" rel="noopener noreferrer"><code>phpcs</code></a> and <a href="https://phpunit.de/" class="Link--external" rel="noopener noreferrer"><code>phpunit</code></a> installed on your machine and run following commands in the root directory of RSS-Bridge (tested on Debian):</p>
<pre><code class="hljs shell">phpcs . --standard=phpcs.xml --warning-severity=0 --extensions=php -p
phpunit --configuration=phpunit.xml --include-path=lib/
</code></pre>
<p>The following list provides an overview of all policies applied to RSS-Bridge.</p>
<h1><a id="whitespace" href="#whitespace" class="Permalink" aria-hidden="true" title="Permalink">#</a>Whitespace</h1>
<h2><a id="add-a-new-line-at-the-end-of-a-file" href="#add-a-new-line-at-the-end-of-a-file" class="Permalink" aria-hidden="true" title="Permalink">#</a>Add a new line at the end of a file</h2>
<p>Each PHP/CSS/HTML file must end with a new line at the end of a file.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">{
// code here
} // This is the end of the file
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">{
// code here
}
// This is the end of the file
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/PSR2/Sniffs/Files/EndFileNewlineSniff.php" class="Link--external" rel="noopener noreferrer"><code>PSR2.Files.EndFileNewline</code></a></p>
<h2><a id="do-not-add-a-whitespace-before-a-semicolon" href="#do-not-add-a-whitespace-before-a-semicolon" class="Permalink" aria-hidden="true" title="Permalink">#</a>Do not add a whitespace before a semicolon</h2>
<p>A semicolon indicates the end of a line of code. Spaces before the semicolon is unnecessary and must be removed.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">echo 'Hello World!' ;
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">echo 'Hello World!';
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Squiz/Sniffs/WhiteSpace/SemicolonSpacingSniff.php" class="Link--external" rel="noopener noreferrer"><code>Squiz.WhiteSpace.SemicolonSpacing</code></a></p>
<h2><a id="do-not-add-whitespace-at-start-or-end-of-a-file-or-end-of-a-line" href="#do-not-add-whitespace-at-start-or-end-of-a-file-or-end-of-a-line" class="Permalink" aria-hidden="true" title="Permalink">#</a>Do not add whitespace at start or end of a file or end of a line</h2>
<p>Whitespace at the end of lines or at the start or end of a file is invisible to the reader and absolutely unnecessary. Thus it must be removed.</p>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Squiz/Sniffs/WhiteSpace/SuperfluousWhitespaceSniff.php" class="Link--external" rel="noopener noreferrer"><code>Squiz.WhiteSpace.SuperfluousWhitespace</code></a></p>
<h1><a id="indentation" href="#indentation" class="Permalink" aria-hidden="true" title="Permalink">#</a>Indentation</h1>
<h2><a id="use-tabs-for-indentation" href="#use-tabs-for-indentation" class="Permalink" aria-hidden="true" title="Permalink">#</a>Use tabs for indentation</h2>
<p>RSS-Bridge uses tabs for indentation on all PHP files in the repository (except files located in the <code>vendor</code> directory)</p>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/WhiteSpace/DisallowSpaceIndentSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.WhiteSpace.DisallowSpaceIndent</code></a></p>
<h1><a id="maximum-line-length" href="#maximum-line-length" class="Permalink" aria-hidden="true" title="Permalink">#</a>Maximum Line Length</h1>
<h2><a id="the-maximum-line-length-should-not-exceed-80-characters" href="#the-maximum-line-length-should-not-exceed-80-characters" class="Permalink" aria-hidden="true" title="Permalink">#</a>The maximum line length should not exceed 80 characters</h2>
<p>One line of code should have no more than <strong>80 characters</strong> (soft limit) and must never exceed <strong>120 characters</strong> (hard limit).</p>
<p><em>Notice</em>: Travis-CI enforces the hard limit of 120 characters. Maintainers may ask you to indent lines longer than 80 characters before merging. This is generally done to keep the code as readable and maintainable as possible.</p>
<p>For long conditional statements, consider indenting the statement into multiple lines.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong> (the total length of the line is <strong>94</strong> characters)</p>
<pre><code class="language-PHP">if($time !== false &amp;&amp; (time() - $duration &lt; $time) &amp;&amp; (!defined('DEBUG') || DEBUG !== true)) {
}
</code></pre>
<p><strong>Good</strong> (add line breaks)</p>
<pre><code class="language-PHP">if($time !== false
&amp;&amp; (time() - $duration &lt; $time)
&amp;&amp; (!defined('DEBUG') || DEBUG !== true)) {
}
</code></pre>
</div></details><br>
<p>For long text, either add line feeds, or make use of the <a href="http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc" class="Link--external" rel="noopener noreferrer"><code>heredoc</code></a> syntax.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong> (the total length of the line is <strong>340</strong> characters - from <a href="https://www.lipsum.com/feed/html" class="Link--external" rel="noopener noreferrer">Lorem Ipsum</a>)</p>
<pre><code class="language-PHP">$longtext = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse condimentum nec est eget posuere. Proin at sagittis risus. Fusce faucibus lectus leo, eu ornare velit tristique eu. Curabitur elementum facilisis ultricies. Praesent dictum fermentum lectus a rhoncus. Donec vitae justo metus. Sed molestie faucibus egestas.';
</code></pre>
<p><strong>Good</strong> (use <code>heredoc</code> syntax - this will add line-breaks)</p>
<pre><code class="language-PHP">$longtext = &lt;&lt;&lt;EOD
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
condimentum nec est eget posuere. Proin at sagittis risus. Fusce faucibus
lectus leo, eu ornare velit tristique eu. Curabitur elementum facilisis
ultricies. Praesent dictum fermentum lectus a rhoncus. Donec vitae justo metus.
Sed molestie faucibus egestas.
EOD;
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/Files/LineLengthSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.Files.LineLength</code></a></p>
<h1><a id="strings" href="#strings" class="Permalink" aria-hidden="true" title="Permalink">#</a>Strings</h1>
<h2><a id="whenever-possible-use-single-quote-strings" href="#whenever-possible-use-single-quote-strings" class="Permalink" aria-hidden="true" title="Permalink">#</a>Whenever possible use single quote strings</h2>
<p>PHP supports both single quote strings and double quote strings. For pure text you must use single quote strings for consistency. Double quote strings are only allowed for special characters (i.e. <code>&quot;\n&quot;</code>) or inlined variables (i.e. <code>&quot;My name is {$name}&quot;</code>);</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">echo &quot;Hello World!&quot;;
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">echo 'Hello World!';
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Squiz/Sniffs/Strings/DoubleQuoteUsageSniff.php" class="Link--external" rel="noopener noreferrer"><code>Squiz.Strings.DoubleQuoteUsage</code></a></p>
<h2><a id="add-spaces-around-the-concatenation-operator" href="#add-spaces-around-the-concatenation-operator" class="Permalink" aria-hidden="true" title="Permalink">#</a>Add spaces around the concatenation operator</h2>
<p>The concatenation operator should have one space on both sides in order to improve readability.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$text = $greeting.' '.$name.'!';
</code></pre>
<p><strong>Good</strong> (add spaces)</p>
<pre><code class="language-PHP">$text = $greeting . ' ' . $name . '!';
</code></pre>
</div></details><br>
<p>You may break long lines into multiple lines using the concatenation operator. That way readability can improve considerable when combining lots of variables.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$text = $greeting.' '.$name.'!';
</code></pre>
<p><strong>Good</strong> (split into multiple lines)</p>
<pre><code class="language-PHP">$text = $greeting
. ' '
. $name
. '!';
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Squiz/Sniffs/Strings/ConcatenationSpacingSniff.php" class="Link--external" rel="noopener noreferrer"><code>Squiz.Strings.ConcatenationSpacing</code></a></p>
<h2><a id="use-a-single-string-instead-of-concatenating" href="#use-a-single-string-instead-of-concatenating" class="Permalink" aria-hidden="true" title="Permalink">#</a>Use a single string instead of concatenating</h2>
<p>While concatenation is useful for combining variables with other variables or static text. It should not be used to combine two sets of static text. See also: <a href="#maximum-line-length">Maximum line length</a></p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$text = 'This is' . 'a bad idea!';
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">$text = 'This is a good idea!';
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/Strings/UnnecessaryStringConcatSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.Strings.UnnecessaryStringConcat</code></a></p>
<h1><a id="constants" href="#constants" class="Permalink" aria-hidden="true" title="Permalink">#</a>Constants</h1>
<h2><a id="use-uppercase-for-constants" href="#use-uppercase-for-constants" class="Permalink" aria-hidden="true" title="Permalink">#</a>Use UPPERCASE for constants</h2>
<p>As in most languages, constants should be written in UPPERCASE.</p>
<p><em>Notice</em>: This does not apply to keywords!</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">const pi = 3.14;
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">const PI = 3.14;
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.NamingConventions.UpperCaseConstantName</code></a></p>
<h1><a id="keywords" href="#keywords" class="Permalink" aria-hidden="true" title="Permalink">#</a>Keywords</h1>
<h2><a id="use-lowercase-for-true-false-and-null" href="#use-lowercase-for-true-false-and-null" class="Permalink" aria-hidden="true" title="Permalink">#</a>Use lowercase for <code>true</code>, <code>false</code> and <code>null</code></h2>
<p><code>true</code>, <code>false</code> and <code>null</code> must be written in lower case letters.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">if($condition === TRUE &amp;&amp; $error === FALSE) {
return NULL;
}
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">if($condition === true &amp;&amp; $error === false) {
return null;
}
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/PHP/LowerCaseConstantSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.PHP.LowerCaseConstant</code></a></p>
<h1><a id="operators" href="#operators" class="Permalink" aria-hidden="true" title="Permalink">#</a>Operators</h1>
<h2><a id="operators-must-have-a-space-around-them" href="#operators-must-have-a-space-around-them" class="Permalink" aria-hidden="true" title="Permalink">#</a>Operators must have a space around them</h2>
<p>Operators must be readable and therefore should have spaces around them.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$text='Hello '.$name.'!';
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">$text = 'Hello ' . $name . '!';
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php" class="Link--external" rel="noopener noreferrer"><code>Squiz.WhiteSpace.OperatorSpacing</code></a></p>
<h1><a id="functions" href="#functions" class="Permalink" aria-hidden="true" title="Permalink">#</a>Functions</h1>
<h2><a id="parameters-with-default-values-must-appear-last-in-functions" href="#parameters-with-default-values-must-appear-last-in-functions" class="Permalink" aria-hidden="true" title="Permalink">#</a>Parameters with default values must appear last in functions</h2>
<p>It is considered good practice to make parameters with default values last in function declarations.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">function showTitle($duration = 60000, $title) { ... }
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">function showTitle($title, $duration = 60000) { ... }
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/PEAR/Sniffs/Functions/ValidDefaultValueSniff.php" class="Link--external" rel="noopener noreferrer"><code>PEAR.Functions.ValidDefaultValue</code></a></p>
<h2><a id="calling-functions" href="#calling-functions" class="Permalink" aria-hidden="true" title="Permalink">#</a>Calling functions</h2>
<p>Function calls must follow a few rules in order to maintain readability throughout the project:</p>
<p><strong>Do not add whitespace before the opening parenthesis</strong></p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$result = my_function ($param);
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">$result = my_function($param);
</code></pre>
</div></details><br>
<p><strong>Do not add whitespace after the opening parenthesis</strong></p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$result = my_function( $param);
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">$result = my_function($param);
</code></pre>
</div></details><br>
<p><strong>Do not add a space before the closing parenthesis</strong></p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$result = my_function($param );
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">$result = my_function($param);
</code></pre>
</div></details><br>
<p><strong>Do not add a space before a comma</strong></p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$result = my_function($param1 ,$param2);
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">$result = my_function($param1, $param2);
</code></pre>
</div></details><br>
<p><strong>Add a space after a comma</strong></p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$result = my_function($param1,$param2);
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">$result = my_function($param1, $param2);
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.Functions.FunctionCallArgumentSpacing</code></a></p>
<h2><a id="do-not-add-spaces-after-opening-or-before-closing-bracket" href="#do-not-add-spaces-after-opening-or-before-closing-bracket" class="Permalink" aria-hidden="true" title="Permalink">#</a>Do not add spaces after opening or before closing bracket</h2>
<p>Parenthesis must tightly enclose parameters.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">if( $condition ) { ... }
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">if($condition) { ... }
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/PSR2/Sniffs/ControlStructures/ControlStructureSpacingSniff.php" class="Link--external" rel="noopener noreferrer"><code>PSR2.ControlStructures.ControlStructureSpacing</code></a></p>
<h1><a id="structures" href="#structures" class="Permalink" aria-hidden="true" title="Permalink">#</a>Structures</h1>
<h2><a id="structures-must-always-be-formatted-as-multi-line-blocks" href="#structures-must-always-be-formatted-as-multi-line-blocks" class="Permalink" aria-hidden="true" title="Permalink">#</a>Structures must always be formatted as multi-line blocks</h2>
<p>A structure should always be treated as if it contains a multi-line block.</p>
<p><strong>Add a space after closing parenthesis</strong></p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">if($condition){
...
}
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">if($condition) {
...
}
</code></pre>
</div></details><br>
<p><strong>Add body into new line</strong></p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">if($condition){ ... }
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">if($condition) {
...
}
</code></pre>
</div></details><br>
<p><strong>Close body in new line</strong></p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">if($condition){
... }
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">if($condition) {
...
}
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Squiz/Sniffs/ControlStructures/ControlSignatureSniff.php" class="Link--external" rel="noopener noreferrer"><code>Squiz.ControlStructures.ControlSignature</code></a></p>
<h1><a id="if-statements" href="#if-statements" class="Permalink" aria-hidden="true" title="Permalink">#</a>If-Statements</h1>
<h2><a id="use-elseif-instead-of-else-if" href="#use-elseif-instead-of-else-if" class="Permalink" aria-hidden="true" title="Permalink">#</a>Use <code>elseif</code> instead of <code>else if</code></h2>
<p>For sake of consistency <code>else if</code> is considered bad practice.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">if($conditionA) {
} else if($conditionB) {
}
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">if($conditionA) {
} elseif($conditionB) {
}
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/PSR2/Sniffs/ControlStructures/ElseIfDeclarationSniff.php" class="Link--external" rel="noopener noreferrer"><code>PSR2.ControlStructures.ElseIfDeclaration</code></a></p>
<h2><a id="do-not-write-empty-statements" href="#do-not-write-empty-statements" class="Permalink" aria-hidden="true" title="Permalink">#</a>Do not write empty statements</h2>
<p>Empty statements are considered bad practice and must be avoided.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">if($condition) {
// empty statement
} else {
// do something here
}
</code></pre>
<p><strong>Good</strong> (invert condition)</p>
<pre><code class="language-PHP">if(!$condition) {
// do something
}
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/CodeAnalysis/EmptyStatementSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.CodeAnalysis.EmptyStatement</code></a></p>
<h2><a id="do-not-write-unconditional-if-statements" href="#do-not-write-unconditional-if-statements" class="Permalink" aria-hidden="true" title="Permalink">#</a>Do not write unconditional if-statements</h2>
<p>If-statements without conditions are considered bad practice and must be avoided.</p>
<details><summary>Example</summary><div><br>
<pre><code class="language-PHP">if(true) {
}
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/CodeAnalysis/UnconditionalIfStatementSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.CodeAnalysis.UnconditionalIfStatement</code></a></p>
<h1><a id="classes" href="#classes" class="Permalink" aria-hidden="true" title="Permalink">#</a>Classes</h1>
<h2><a id="use-pascalcase-for-class-names" href="#use-pascalcase-for-class-names" class="Permalink" aria-hidden="true" title="Permalink">#</a>Use PascalCase for class names</h2>
<p>Class names must be written in <a href="http://wiki.c2.com/?PascalCase" class="Link--external" rel="noopener noreferrer">PascalCase</a>.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">class mySUPERclass { ... }
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">class MySuperClass { ... }
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/PEAR/Sniffs/NamingConventions/ValidClassNameSniff.php" class="Link--external" rel="noopener noreferrer"><code>PEAR.NamingConventions.ValidClassName</code></a></p>
<h2><a id="do-not-use-final-statements-inside-final-classes" href="#do-not-use-final-statements-inside-final-classes" class="Permalink" aria-hidden="true" title="Permalink">#</a>Do not use final statements inside final classes</h2>
<p>Final classes cannot be extended, so it doesnt make sense to add the final keyword to class members.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">final class MyClass {
final public function MyFunction() {
}
}
</code></pre>
<p><strong>Good</strong> (remove the final keyword from class members)</p>
<pre><code class="language-PHP">final class MyClass {
public function MyFunction() {
}
}
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.CodeAnalysis.UnnecessaryFinalModifier</code></a></p>
<h2><a id="do-not-override-methods-to-call-their-parent" href="#do-not-override-methods-to-call-their-parent" class="Permalink" aria-hidden="true" title="Permalink">#</a>Do not override methods to call their parent</h2>
<p>It doesnt make sense to override a method only to call their parent. When overriding methods, make sure to add some functionality to it.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">class MyClass extends BaseClass {
public function BaseFunction() {
parent::BaseFunction();
}
}
</code></pre>
<p><strong>Good</strong> (dont override the function)</p>
<pre><code class="language-PHP">class MyClass extends BaseClass {
}
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.CodeAnalysis.UselessOverridingMethod</code></a></p>
<h2><a id="abstract-and-final-declarations-must-precede-the-visibility-declaration" href="#abstract-and-final-declarations-must-precede-the-visibility-declaration" class="Permalink" aria-hidden="true" title="Permalink">#</a>abstract and final declarations MUST precede the visibility declaration</h2>
<p>When declaring <code>abstract</code> and <code>final</code> functions, the visibility (scope) must follow after <code>abstract</code> or <code>final</code>.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">class MyClass extends BaseClass {
public abstract function AbstractFunction() { }
public final function FinalFunction() { }
}
</code></pre>
<p><strong>Good</strong> (<code>abstract</code> and <code>final</code> before <code>public</code>)</p>
<pre><code class="language-PHP">class MyClass extends BaseClass {
abstract public function AbstractFunction() { }
final public function FinalFunction() { }
}
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/PSR2/Sniffs/Methods/MethodDeclarationSniff.php" class="Link--external" rel="noopener noreferrer"><code>PSR2.Methods.MethodDeclaration</code></a></p>
<h2><a id="static-declaration-must-come-after-the-visibility-declaration" href="#static-declaration-must-come-after-the-visibility-declaration" class="Permalink" aria-hidden="true" title="Permalink">#</a>static declaration MUST come after the visibility declaration</h2>
<p>The <code>static</code> keyword must come after the visibility (scope) parameter.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">class MyClass extends BaseClass {
static public function StaticFunction() { }
}
</code></pre>
<p><strong>Good</strong> (<code>static</code> after <code>public</code>)</p>
<pre><code class="language-PHP">class MyClass extends BaseClass {
public static function StaticFunction() { }
}
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/PSR2/Sniffs/Methods/MethodDeclarationSniff.php" class="Link--external" rel="noopener noreferrer"><code>PSR2.Methods.MethodDeclaration</code></a></p>
<h1><a id="casting" href="#casting" class="Permalink" aria-hidden="true" title="Permalink">#</a>Casting</h1>
<h2><a id="do-not-add-spaces-when-casting" href="#do-not-add-spaces-when-casting" class="Permalink" aria-hidden="true" title="Permalink">#</a>Do not add spaces when casting</h2>
<p>The casting type should be put into parenthesis without spaces.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$text = ( string )$number;
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">$text = (string)$number;
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Squiz/Sniffs/WhiteSpace/CastSpacingSniff.php" class="Link--external" rel="noopener noreferrer"><code>Squiz.WhiteSpace.CastSpacing</code></a></p>
<h1><a id="arrays" href="#arrays" class="Permalink" aria-hidden="true" title="Permalink">#</a>Arrays</h1>
<h2><a id="always-use-the-long-array-syntax" href="#always-use-the-long-array-syntax" class="Permalink" aria-hidden="true" title="Permalink">#</a>Always use the long array syntax</h2>
<p>Arrays should be initialized using the long array syntax.</p>
<details><summary>Example</summary><div><br>
<p><strong>Bad</strong></p>
<pre><code class="language-PHP">$data = [ 'hello' =&gt; 'world' ];
</code></pre>
<p><strong>Good</strong></p>
<pre><code class="language-PHP">$data = array('hello' =&gt; 'world');
</code></pre>
</div></details><br>
<p><em>Reference</em>: <a href="https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Generic/Sniffs/Arrays/DisallowShortArraySyntaxSniff.php" class="Link--external" rel="noopener noreferrer"><code>Generic.Arrays.DisallowShortArraySyntax</code></a></p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Developers/index.html">Previous</a></li> <li class=Pager--next><a href="../For_Developers/Pull_Request_policy.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,152 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Debug mode - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item Nav__item--active'><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Developers/index.html">For Developers</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Developers/Debug_mode.html">Debug mode</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/04_For_Developers/05_Debug_mode.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<h1 align="center">Warning!</h1>
<p>Enabling debug mode on a public server may result in malicious clients retrieving sensitive data about your server and possibly gaining access to it. Do not enable debug mode on a public server, unless you understand the implications of your doing!</p>
<hr />
<p>Debug mode enables error reporting and prevents loading data from the cache (data is still written to the cache).
To enable debug mode, create a file named DEBUG in the root directory of RSS-Bridge (next to <code>index.php</code>). For further security, insert your IP address in the file. You can add multiple addresses, one per line.</p>
<p><em>Notice</em>:</p>
<ul>
<li>An empty file enables debug mode for anyone!</li>
<li>The bridge whitelist still applies! (debug mode does <strong>not</strong> enable all bridges)</li>
</ul>
<p>RSS-Bridge will give you a visual feedback when debug mode is enabled:</p>
<p><img src="../images/debug_mode.png" alt="twitter bridge" /></p>
<p>While debug mode is active, RSS-Bridge will write additional data to your servers <code>error.log</code>.</p>
<p>Debug mode is controlled by the static class <code>Debug</code>. It provides three core functions:</p>
<p><code>Debug::isEnabled()</code>: Returns <code>true</code> if debug mode is enabled.
<code>Debug::isSecure()</code>: Returns <code>true</code> if your client is on the debug whitelist.
<code>Debug::log($message)</code>: Adds a message to <code>error.log</code>. It takes one parameter, which can be anything. For example: <code>Debug::log('Hello World!');</code></p>
<p><strong>Notice</strong>: <code>Debug::log($message)</code> calls <code>Debug::isEnabled()</code> internally. You dont have to do that manually.</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Developers/Actions.html">Previous</a></li> <li class=Pager--next><a href="../Bridge_API/index.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,169 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Folder structure - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item Nav__item--active'><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Developers/index.html">For Developers</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Developers/Folder_structure.html">Folder structure</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/04_For_Developers/03_Folder_structure.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>The repository contains a few folders that make up <strong>RSS-Bridge</strong>. Here is a brief description of what you can expect to find where:</p>
<table>
<thead>
<tr>
<th>Folder</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/bridges" class="Link--external" rel="noopener noreferrer"><code>bridges/</code></a></td>
<td>Contains all bridges that are currently supported by <strong>RSS-Bridge</strong>. Each file represents one Bridge that is displayed on the <a href="../General/Screenshots.html#welcome-screen">Welcome screen</a> of <strong>RSS-Bridge</strong></td>
</tr>
<tr>
<td><a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/caches" class="Link--external" rel="noopener noreferrer"><code>caches/</code></a></td>
<td>Contains all cache types for <strong>RSS-Bridge</strong>.</td>
</tr>
<tr>
<td><a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/css" class="Link--external" rel="noopener noreferrer"><code>css/</code></a></td>
<td>Contains all <a href="https://en.wikipedia.org/wiki/Cascading_Style_Sheets" class="Link--external" rel="noopener noreferrer">Cascading Style Sheets</a> for <strong>RSS-Bridge</strong></td>
</tr>
<tr>
<td><a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/formats" class="Link--external" rel="noopener noreferrer"><code>formats/</code></a></td>
<td>Contains all export formats for <strong>RSS-Bridge</strong>.</td>
</tr>
<tr>
<td><a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/lib" class="Link--external" rel="noopener noreferrer"><code>lib/</code></a></td>
<td>Contains the core API of <strong>RSS-Bridge</strong>.</td>
</tr>
<tr>
<td><a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/vendor" class="Link--external" rel="noopener noreferrer"><code>vendor/</code></a></td>
<td>Contains vendor specific files to support <strong>RSS-Bridge</strong>. Development of all files in this folder must be done in the vendor specific repository (not part of <strong>RSS-Bridge</strong>)</td>
</tr>
</tbody>
</table>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Developers/Pull_Request_policy.html">Previous</a></li> <li class=Pager--next><a href="../For_Developers/Actions.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,146 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Pull Request policy - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item Nav__item--active'><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Developers/index.html">For Developers</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/04_For_Developers/02_Pull_Request_policy.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>Pull requests allow you to improve RSS-Bridge. Maintainers will have to understand your changes before merging. In order to make this process as efficient as possible, please follow the policies explained below. Maintainers will merge your pull request much faster that way.</p>
<h1><a id="fix-one-issue-per-pull-request" href="#fix-one-issue-per-pull-request" class="Permalink" aria-hidden="true" title="Permalink">#</a>Fix one issue per pull request</h1>
<p>It is considered good practice to fix one specific (or a specific set of) error(s). You can open multiple pull requests if you need to address multiple subjects. The same applies to adding features to RSS-Bridge. Maintainers must be able to comprehend your pull request for it to be merged quickly.</p>
<h1><a id="respect-the-coding-style-policy" href="#respect-the-coding-style-policy" class="Permalink" aria-hidden="true" title="Permalink">#</a>Respect the coding style policy</h1>
<p>The <a href="Coding_style_policy.html">coding style policy</a> requires you to write your code in certain ways. If you plan to get it merged into RSS-Bridge, please make sure your code follows the policy. Maintainers will only merge pull requests that pass all tests.</p>
<h1><a id="properly-name-your-commits" href="#properly-name-your-commits" class="Permalink" aria-hidden="true" title="Permalink">#</a>Properly name your commits</h1>
<p>Commits are not only for show, they do help maintainers understand what you did in your pull request, just like a table of contents in a well formed book (or Wiki). Here are a few rules you should follow:</p>
<ul>
<li>When fixing a bridge (located in the <code>bridges</code> directory), write <code>[BridgeName] Feature</code> <br>(i.e. <code>[YoutubeBridge] Fix typo in video titles</code>).</li>
<li>When fixing other files, use <code>[FileName] Feature</code> <br>(i.e. <code>[index.php] Add multilingual support</code>).</li>
<li>When fixing a general problem that applies to multiple files, write <code>category: feature</code> <br>(i.e. <code>bridges: Fix various typos</code>).</li>
</ul>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Developers/Coding_style_policy.html">Previous</a></li> <li class=Pager--next><a href="../For_Developers/Folder_structure.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

159
For_Developers/index.html Normal file
View File

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>For Developers - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Developers/index.html">For Developers</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/04_For_Developers/index.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>This area is intended for developers who decide to contribute to <strong>RSS-Bridge</strong> which is primarily written in <a href="http://www.php.net/" class="Link--external" rel="noopener noreferrer"><code>PHP</code></a> with some aspects of <a href="https://en.wikipedia.org/wiki/HTML" class="Link--external" rel="noopener noreferrer"><code>HTML</code></a> and <a href="https://en.wikipedia.org/wiki/Cascading_Style_Sheets" class="Link--external" rel="noopener noreferrer"><code>CSS</code></a>.</p>
<p>If you are new to <strong>RSS-Bridge</strong> you should make yourself familiar with some general aspects:</p>
<ul>
<li>
<a href="Coding_style_policy.html">Coding style policy</a>
</li>
<li>
<a href="Folder_structure.html">Folder structure</a>
</li>
<li>
<a href="Debug_mode.html">Debug mode</a>
</li>
<li>
<a href="../Bridge_API/index.html">Bridge API</a>
</li>
<li>
<a href="../Cache_API/index.html">Cache API</a>
</li>
<li>
<a href="../Format_API/index.html">Format API</a>
</li>
<li>
<a href="../Technical_recommendations/index.html">Technical recommendations</a>
</li>
</ul>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Hosts/Custom_Configuration.html">Previous</a></li> <li class=Pager--next><a href="../For_Developers/Coding_style_policy.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,219 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Authentication - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item Nav__item--active'><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Hosts/index.html">For Hosts</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Hosts/Authentication.html">Authentication</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/03_For_Hosts/06_Authentication.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>Depending on your servers abilities you can choose between two types of authentication:</p>
<ul>
<li>
<a href="#htaccess">.htaccess</a>
</li>
<li>
<a href="#rss-bridge-authentication">RSS-Bridge Authentication</a>
</li>
</ul>
<p><strong>General advice</strong>:</p>
<ul>
<li>Make sure to use a strong password, no matter which solution you choose!</li>
<li>Enable HTTPS on your server to ensure your connection is encrypted and secure!</li>
</ul>
<h2><a id="htaccess" href="#htaccess" class="Permalink" aria-hidden="true" title="Permalink">#</a>.htaccess</h2>
<p>.htaccess files are commonly used to restrict access to files on a web server. One of the features of .htaccess files is the ability to password protect specific (or all) directories. If setup correctly, a password is required to access the files.</p>
<p>The usage of .htaccess files requires three basic steps:</p>
<ol>
<li>
<a href="#enable-htaccess">Enable .htaccess</a>
</li>
<li>
<a href="#create-a-htpasswd-file">Create a .htpasswd file</a>
</li>
<li>
<a href="#create-a-htaccess-file">Create a .htaccess file</a>
</li>
</ol>
<h3><a id="enable-htaccess" href="#enable-htaccess" class="Permalink" aria-hidden="true" title="Permalink">#</a>Enable .htaccess</h3>
<p>This process depends on the server you are using. Some providers may require you to change some settings, or place/change some file. Here are some helpful links for your server (please add your own if missing :sparkling_heart:)</p>
<ul>
<li>Apache: <a href="http://ask.xmodulo.com/enable-htaccess-apache.html" class="Link--external" rel="noopener noreferrer">http://ask.xmodulo.com/enable-htaccess-apache.html</a>
</li>
</ul>
<h3><a id="create-a-htpasswd-file" href="#create-a-htpasswd-file" class="Permalink" aria-hidden="true" title="Permalink">#</a>Create a .htpasswd file</h3>
<p>The <code>.htpasswd</code> file contains the user name and password used for login to your web server. Please notice that the password is stored in encrypted form, which requires you to encrypt your password before creating the <code>.htpasswd</code> file!</p>
<p>Here are three ways of creating your own <code>.htpasswd</code> file:</p>
<p><strong>1) Example file</strong></p>
<p>Example <code>.htpasswd</code> file (user name: “test”, password: “test”):</p>
<pre><code class="language-.htpasswd">test:$apr1$a52u9ILP$XTNG8qMJiEXSm1zD0lQcR0
</code></pre>
<p>Just copy and paste the contents to your <code>.htpasswd</code> file.</p>
<p><strong>2) Online generator (read warning!)</strong></p>
<p>You can create your own <code>.htpasswd</code> file online using a <code>.htpasswd</code> generator like this: <a href="https://www.htaccesstools.com/htpasswd-generator/" class="Link--external" rel="noopener noreferrer">https://www.htaccesstools.com/htpasswd-generator/</a></p>
<p><strong>WARNING!</strong></p>
<ul>
<li>Never insert real passwords to an online generator!</li>
</ul>
<p><strong>3) Generate your own password</strong></p>
<p>Another way to create your own <code>.htpasswd</code> file is to run this script on your server (itll output the data for you, you just have to paste it int a <code>.htpasswd</code> file):</p>
<pre><code class="language-PHP">&lt;?php
// Password to be encrypted for a .htpasswd file
$clearTextPassword = 'some password';
// Encrypt password
$password = crypt($clearTextPassword, base64_encode($clearTextPassword));
// Print encrypted password
echo $password;
?&gt;
</code></pre>
<blockquote>
<p>source: <a href="https://www.htaccesstools.com/articles/create-password-for-htpasswd-file-using-php/" class="Link--external" rel="noopener noreferrer">https://www.htaccesstools.com/articles/create-password-for-htpasswd-file-using-php/</a></p>
</blockquote>
<h3><a id="create-a-htaccess-file" href="#create-a-htaccess-file" class="Permalink" aria-hidden="true" title="Permalink">#</a>Create a .htaccess file</h3>
<p>The <code>.htaccess</code> file is used to specify which directories are password protected. For that purpose you should place the file in whatever directory you want to restrict access. If you want to restrict access to RSS-Bridge in general, you should place the file in the root directory (where <code>index.php</code> is located).</p>
<p>Two parameters must be specified in the <code>.htaccess</code> file:</p>
<ul>
<li>AuthName</li>
<li>AuthUserFile</li>
</ul>
<p><code>AuthName</code> specifies the name of the authentication (i.e. “RSS-Bridge”). <code>AuthUserFile</code> defines the <strong>absolute</strong> path to a <code>.htpasswd</code> file.</p>
<p>Here are two ways of creating your own <code>.htaccess</code> file:</p>
<p><strong>1) Example file</strong></p>
<pre><code class="language-.htaccess">AuthType Basic
AuthName &quot;My Protected Area&quot;
AuthUserFile /path/to/.htpasswd
Require valid-user
</code></pre>
<p>Notice: You must change the <code>AuthUserFile</code> location to fit your own server (i.e. <code>/var/www/html/rss-bridge/.htpasswd</code>)</p>
<p><strong>2) Online generator</strong></p>
<p>You can use an online generator to create the file for you and copy-paste it to your <code>.htaccess</code> file: <a href="https://www.htaccesstools.com/htaccess-authentication/" class="Link--external" rel="noopener noreferrer">https://www.htaccesstools.com/htaccess-authentication/</a></p>
<h2><a id="rss-bridge-authentication" href="#rss-bridge-authentication" class="Permalink" aria-hidden="true" title="Permalink">#</a>RSS-Bridge Authentication</h2>
<p>RSS-Bridge ships with an authentication module designed for single user environments. You can enable authentication and specify the username &amp; password in the <a href="Custom_Configuration.html#authentication">configuration file</a>.</p>
<p>Please notice that the password is stored in plain text and thus is readable to anyone who can access the file. Make sure to restrict access to the file, so that it cannot be read remotely!</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Hosts/Whitelisting.html">Previous</a></li> <li class=Pager--next><a href="../For_Hosts/Customizations.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,294 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Custom Configuration - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item Nav__item--active'><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Hosts/index.html">For Hosts</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/03_For_Hosts/08_Custom_Configuration.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>RSS-Bridge supports custom configurations for common parameters on the server side!</p>
<p>A default configuration file (<code>config.default.ini.php</code>) is shipped with RSS-Bridge. Please do not edit this file, as it gets replaced when upgrading RSS-Bridge!</p>
<p>You should, however, use this file as template to create your own configuration (or leave it as is, to keep the default settings). In order to create your own configuration perform following actions:</p>
<ul>
<li>Create the file <code>config.ini.php</code> in the RSS-Bridge root folder (next to <code>config.default.ini.php</code>)</li>
<li>Copy the contents from <code>config.default.ini.php</code> to your configuration file</li>
<li>Change the parameters to satisfy your requirements</li>
</ul>
<p>RSS-Bridge will automatically detect the <code>config.ini.php</code> and use it. If the file doesnt exist it will default to <code>config.default.ini.php</code> automatically.</p>
<p><strong>Notice</strong>: If a parameter is not specified in your <code>config.ini.php</code> RSS-Bridge will automatically use the default settings from <code>config.default.ini.php</code>.</p>
<h1><a id="available-parameters" href="#available-parameters" class="Permalink" aria-hidden="true" title="Permalink">#</a>Available parameters</h1>
<p>The configuration file is split into sections:</p>
<ul>
<li>
<a href="#system">system</a>
</li>
<li>
<a href="#cache">cache</a>
</li>
<li>
<a href="#proxy">proxy</a>
</li>
<li>
<a href="#authentication">authentication</a>
</li>
<li>
<a href="#admin">admin</a>
</li>
<li>
<a href="#error">error</a>
</li>
</ul>
<p><em>System</em>: This section specifies system specific parameters</p>
<p><em>Cache</em>: This section is all about the caching behavior of RSS-Bridge</p>
<p><em>Proxy</em>: This section can be used to specify a proxy server for RSS-Bridge to utilize for fetching contents</p>
<p><em>Authentication</em>: This section defines parameters to require authentication to use RSS-Bridge</p>
<p><em>Admin</em>: This section specifies parameters related to the administrator of your instance of RSS-Bridge</p>
<h2><a id="system" href="#system" class="Permalink" aria-hidden="true" title="Permalink">#</a>System</h2>
<p>This section provides following parameters:</p>
<ul>
<li>
<a href="#timezone">timezone</a>
</li>
</ul>
<h3><a id="timezone" href="#timezone" class="Permalink" aria-hidden="true" title="Permalink">#</a>Timezone</h3>
<p>Defines the timezone used by RSS-Bridge. This parameter can be set to any value of the values defined at <a href="https://www.php.net/manual/en/timezones.php" class="Link--external" rel="noopener noreferrer">https://www.php.net/manual/en/timezones.php</a></p>
<p>The default value is <code>UTC</code>.</p>
<h2><a id="cache" href="#cache" class="Permalink" aria-hidden="true" title="Permalink">#</a>Cache</h2>
<p>This section provides following parameters:</p>
<ul>
<li>
<a href="#type">type</a>
</li>
<li>
<a href="#custom_timeout">custom_timeout</a>
</li>
</ul>
<h3><a id="type" href="#type" class="Permalink" aria-hidden="true" title="Permalink">#</a>type</h3>
<p>Defines the cache type used by RSS-Bridge.</p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>file</code></td>
<td>File based (default)</td>
</tr>
<tr>
<td><code>sqlite</code></td>
<td>SQLite database</td>
</tr>
<tr>
<td><code>memcached</code></td>
<td>Memcached service</td>
</tr>
</tbody>
</table>
<h3><a id="custom-timeout" href="#custom-timeout" class="Permalink" aria-hidden="true" title="Permalink">#</a>custom_timeout</h3>
<p>Allow users to specify custom timeout for specific requests.</p>
<p><code>true</code> = enabled</p>
<p><code>false</code> = disabled (default)</p>
<h2><a id="proxy" href="#proxy" class="Permalink" aria-hidden="true" title="Permalink">#</a>Proxy</h2>
<p>This section provides following parameters:</p>
<ul>
<li>
<a href="#url">url</a>
</li>
<li>
<a href="#name">name</a>
</li>
<li>
<a href="#by_bridge">by_bridge</a>
</li>
</ul>
<h3><a id="url" href="#url" class="Permalink" aria-hidden="true" title="Permalink">#</a>url</h3>
<p>Sets the proxy url (i.e. “tcp://192.168.0.0:32”)</p>
<p><code>&quot;&quot;</code> = Proxy disabled (default)</p>
<h3><a id="name" href="#name" class="Permalink" aria-hidden="true" title="Permalink">#</a>name</h3>
<p>Sets the proxy name that is shown on the bridge instead of the proxy url.</p>
<p><code>&quot;&quot;</code> = Show proxy url (default: “Hidden proxy name”)</p>
<h3><a id="by-bridge" href="#by-bridge" class="Permalink" aria-hidden="true" title="Permalink">#</a>by_bridge</h3>
<p>Allow users to disable proxy usage for specific requests.</p>
<p><code>true</code> = enabled</p>
<p><code>false</code> = disabled (default)</p>
<h2><a id="authentication" href="#authentication" class="Permalink" aria-hidden="true" title="Permalink">#</a>Authentication</h2>
<p>This section provides following parameters:</p>
<ul>
<li>
<a href="#enable">enable</a>
</li>
<li>
<a href="#username">username</a>
</li>
<li>
<a href="#password">password</a>
</li>
</ul>
<h3><a id="enable" href="#enable" class="Permalink" aria-hidden="true" title="Permalink">#</a>enable</h3>
<p>Enables authentication for RSS-Bridge.</p>
<p><em>Notice</em>: Login is required for all requests when enabled! Make sure to update feed subscriptions accordingly.</p>
<p><code>true</code> = enabled</p>
<p><code>false</code> = disabled (default)</p>
<h3><a id="username" href="#username" class="Permalink" aria-hidden="true" title="Permalink">#</a>username</h3>
<p>Defines the user name used for login.</p>
<h3><a id="password" href="#password" class="Permalink" aria-hidden="true" title="Permalink">#</a>password</h3>
<p>Defines the password used for login. Use a strong password to prevent others from guessing your login!</p>
<h2><a id="admin" href="#admin" class="Permalink" aria-hidden="true" title="Permalink">#</a>Admin</h2>
<p>This section provides following parameters:</p>
<ul>
<li>
<a href="#email">email</a>
</li>
</ul>
<h3><a id="email" href="#email" class="Permalink" aria-hidden="true" title="Permalink">#</a>email</h3>
<p>Advertises an email address where people can reach the administrator.</p>
<p><em>Notice</em>: This address is displayed on the main page, visible to everyone!</p>
<p><code>&quot;&quot;</code> = Disabled (default)</p>
<p>Example: <code>email = &quot;admin@instance.rss-bridge.com&quot;</code></p>
<h2><a id="error" href="#error" class="Permalink" aria-hidden="true" title="Permalink">#</a>error</h2>
<p>This section provides following parameters:</p>
<ul>
<li>
<a href="#output">output</a>
</li>
<li>
<a href="#report_limit">report_limit</a>
</li>
</ul>
<h3><a id="output" href="#output" class="Permalink" aria-hidden="true" title="Permalink">#</a>output</h3>
<p>Defines how error messages are returned by RSS-Bridge</p>
<p><code>feed</code>: As part of the feed (default)</p>
<p><code>http</code>: As HTTP error message</p>
<p><code>none</code>: No errors are reported</p>
<h3><a id="report-limit" href="#report-limit" class="Permalink" aria-hidden="true" title="Permalink">#</a>report_limit</h3>
<p>Defines how often an error must occur before it is reported to the user</p>
<p><code>report_limit</code>: 1 (default)</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Hosts/Customizations.html">Previous</a></li> <li class=Pager--next><a href="../For_Developers/index.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,139 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Customizations - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item Nav__item--active'><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Hosts/index.html">For Hosts</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Hosts/Customizations.html">Customizations</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/03_For_Hosts/07_Customizations.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>RSS-Bridge ships a few options the host may or may not activate. All options are currently defined in the <a href="https://github.com/RSS-Bridge/rss-bridge/blob/master/index.php" class="Link--external" rel="noopener noreferrer">index.php</a> file. This means theyll be reset after upgrading RSS-Bridge!</p>
<h2><a id="customizable-cache-timeout" href="#customizable-cache-timeout" class="Permalink" aria-hidden="true" title="Permalink">#</a>Customizable cache timeout</h2>
<p>Sometimes it is necessary to specify custom timeouts to update contents more frequently than the bridge maintainer intended. In these cases the client may specify a custom cache timeout to prevent loading contents from cache earlier (or later).</p>
<p>This option can be activated by setting the <code>CUSTOM_CACHE_TIMEOUT</code> to <code>true</code>. When enabled each bridge receives an additional parameter <code>Cache timeout in seconds</code> that can be set to any value between 1 and 86400 (24 hours). If the value is not within the limits the default settings apply (as specified by the bridge maintainer).</p>
<p>The cache timeout is send to RSS-Bridge using the <code>_cache_timeout</code> parameter. RSS-Bridge will return an error message if the parameter is received and the option is disabled.</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Hosts/Authentication.html">Previous</a></li> <li class=Pager--next><a href="../For_Hosts/Custom_Configuration.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,192 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Docker Installation - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item Nav__item--active'><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Hosts/index.html">For Hosts</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/03_For_Hosts/03_Docker_Installation.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>This guide is for people who want to run RSS Bridge using Docker. If you want to run it a simple PHP Webhost environment, see <a href="Installation.html">Installation</a> instead.</p>
<h2><a id="setup" href="#setup" class="Permalink" aria-hidden="true" title="Permalink">#</a>Setup</h2>
<h3><a id="create-the-container" href="#create-the-container" class="Permalink" aria-hidden="true" title="Permalink">#</a>Create the container</h3>
<pre><code class="hljs bash">docker create \
--name=rss-bridge \
--volume &lt;/<span class="hljs-built_in">local</span>/custom/path&gt;:/config \
--publish 3000:80 \
rssbridge/rss-bridge:latest
</code></pre>
<h3><a id="run-it" href="#run-it" class="Permalink" aria-hidden="true" title="Permalink">#</a>Run it</h3>
<pre><code class="hljs bash">docker start rss-bridge
</code></pre>
<p>And access it using <code>http://IP_Address:3000</code>. If youd like to run a specific version, you can run it by:</p>
<pre><code class="hljs bash">docker create \
--name=rss-bridge \
--volume &lt;/<span class="hljs-built_in">local</span>/custom/path&gt;:/config \
--publish 3000:80 \
rssbridge/rss-bridge:<span class="hljs-variable">$version</span>
</code></pre>
<p>Where you can get the versions published to Docker Hub at <a href="https://hub.docker.com/r/rssbridge/rss-bridge/tags/" class="Link--external" rel="noopener noreferrer">https://hub.docker.com/r/rssbridge/rss-bridge/tags/</a>. The server runs on port 80 internally, and you can publish it on a different port (change 3000 to your choice).</p>
<p>You can run it using a <code>docker-compose.yml</code> as well:</p>
<pre><code class="hljs yaml"><span class="hljs-attr">version:</span> <span class="hljs-string">'2'</span>
<span class="hljs-attr">services:</span>
<span class="hljs-attr">rss-bridge:</span>
<span class="hljs-attr">image:</span> <span class="hljs-string">rssbridge/rss-bridge:latest</span>
<span class="hljs-attr">volumes:</span>
<span class="hljs-bullet">-</span> <span class="hljs-string">&lt;/local/custom/path&gt;:/config</span>
<span class="hljs-attr">ports:</span>
<span class="hljs-bullet">-</span> <span class="hljs-number">3000</span><span class="hljs-string">:80</span>
<span class="hljs-attr">restart:</span> <span class="hljs-string">unless-stopped</span>
</code></pre>
<h1><a id="container-access-and-information" href="#container-access-and-information" class="Permalink" aria-hidden="true" title="Permalink">#</a>Container access and information</h1>
<table>
<thead>
<tr>
<th>Function</th>
<th>Command</th>
</tr>
</thead>
<tbody>
<tr>
<td>Shell access (live container)</td>
<td><code>docker exec -it rss-bridge /bin/sh</code></td>
</tr>
<tr>
<td>Realtime container logs</td>
<td><code>docker logs -f rss-bridge</code></td>
</tr>
</tbody>
</table>
<h1><a id="adding-custom-bridges-and-configurations" href="#adding-custom-bridges-and-configurations" class="Permalink" aria-hidden="true" title="Permalink">#</a>Adding custom bridges and configurations</h1>
<p>If you want to add a bridge that is not part of <a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/bridges" class="Link--external" rel="noopener noreferrer"><code>/bridges</code></a>, you can specify an additional folder to copy necessary files to the <code>rss-bridge</code> container.</p>
<p><em>Here <strong>root</strong> is folder where <code>docker-compose.yml</code> resides.</em></p>
<ol>
<li>Create <code>custom</code> folder in root.</li>
<li>Copy your <a href="../Bridge_API/How_to_create_a_new_bridge.html">bridges files</a> to the <code>custom</code> folder. You can also add your custom <a href="Whitelisting.html">whitelist.txt</a> file and your custom <a href="Custom_Configuration.html">config.ini.php</a> to this folder.</li>
<li>Run <code>docker-compose up</code> to recreate service.</li>
</ol>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Hosts/Updating.html">Previous</a></li> <li class=Pager--next><a href="../For_Hosts/Heroku_Installation.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,160 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Heroku Installation - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item Nav__item--active'><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Hosts/index.html">For Hosts</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/03_For_Hosts/04_Heroku_Installation.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>This guide is for people who want to run RSS Bridge on <a href="https://heroku.com" class="Link--external" rel="noopener noreferrer">Heroku</a>.</p>
<p>You can run it on Heroku for free, however make sure your RSS reader interval is not set to a fast rate, otherwise your Heroku hours will use up quicker. Heroku puts the app to sleep after 30 mins of no activity. When the app is asleep no Heroku hours are used. So choose an interval that wont make the app exceed the limit!</p>
<p>You can increase your Heroku hours to 1000 a month from 550 a month by simply verifying your account with a credit card.</p>
<h2><a id="deploy-button" href="#deploy-button" class="Permalink" aria-hidden="true" title="Permalink">#</a>Deploy button</h2>
<p>You can simply press the button below to easily deploy RSS Bridge on Heroku and use the default bridges. Or you can follow the manual instructions given below.</p>
<p><a href="https://heroku.com/deploy?template=https://github.com/RSS-Bridge/rss-bridge" class="Link--external" rel="noopener noreferrer"><img src="https://www.herokucdn.com/deploy/button.svg" alt="Deploy" /></a></p>
<h2><a id="manual-deploy" href="#manual-deploy" class="Permalink" aria-hidden="true" title="Permalink">#</a>Manual deploy</h2>
<ol>
<li>Fork this repo by clicking the Fork button at the top right of this page (only on desktop site)</li>
</ol>
<p><img src="../images/fork_button.png" alt="image" /></p>
<ol start="2">
<li>
<p>To customise what bridges can be used if need, create a <code>whitelist.txt</code> file in your fork and follow the instructions given <a href="Whitelisting.html">here</a>. You dont need to do this if youre fine with the default bridges.</p>
</li>
<li>
<p><a href="https://dashboard.heroku.com" class="Link--external" rel="noopener noreferrer">Log in to Heroku</a> and create a new app. The app name will be the URL of the RSS Bridge (appname.herokuapp.com)</p>
</li>
<li>
<p>Go to Deploy, select the GitHub option and connect your GitHub account. Search for the repo named <code>yourusername/rss-bridge</code></p>
</li>
</ol>
<p><img src="../images/heroku_deploy.png" alt="image" /></p>
<ol start="5">
<li>Deploy the master branch.</li>
</ol>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Hosts/Docker_Installation.html">Previous</a></li> <li class=Pager--next><a href="../For_Hosts/Whitelisting.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

148
For_Hosts/Installation.html Normal file
View File

@ -0,0 +1,148 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Installation - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item Nav__item--active'><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Hosts/index.html">For Hosts</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Hosts/Installation.html">Installation</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/03_For_Hosts/01_Installation.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>In order to install RSS-Bridge on your own web server* do as follows:</p>
<ul>
<li>Make sure your web server meets all <a href="../General/Requirements.html">requirements</a>
</li>
<li>Download the ZIP file of the <a href="https://github.com/RSS-Bridge/rss-bridge/releases" class="Link--external" rel="noopener noreferrer">last stable release</a>
</li>
<li>Place all files on your web server</li>
</ul>
<p>For linux hosts:</p>
<ul>
<li>Grant read-write-access for <code>www-data</code> to the <code>./cache</code> directory (<code>chown -R www-data ./cache</code>)</li>
</ul>
<p>You have successfully installed RSS-Bridge.</p>
<p>Instructions for Docker setups are at <a href="Docker_Installation.html">Docker Installation</a></p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Hosts/index.html">Previous</a></li> <li class=Pager--next><a href="../For_Hosts/Updating.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

159
For_Hosts/Updating.html Normal file
View File

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Updating - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item Nav__item--active'><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Hosts/index.html">For Hosts</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Hosts/Updating.html">Updating</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/03_For_Hosts/02_Updating.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>Updating an existing installation is very simple, depending on your type of installation.</p>
<h2><a id="release-build" href="#release-build" class="Permalink" aria-hidden="true" title="Permalink">#</a>Release Build</h2>
<ul>
<li>Download latest version</li>
<li>Extract all files</li>
<li>Replace existing files</li>
</ul>
<p>This will update all core files to the latest version. Your custom configuration and bridges are left untouched. Keep in mind that changes to any core file of RSS-Bridge will be replaced.</p>
<h2><a id="docker" href="#docker" class="Permalink" aria-hidden="true" title="Permalink">#</a>Docker</h2>
<p>Simply get the latest Docker build via <code>:latest</code> or specific builds via <code>:&lt;tag-name&gt;</code>.</p>
<h2><a id="heroku" href="#heroku" class="Permalink" aria-hidden="true" title="Permalink">#</a>Heroku</h2>
<h3><a id="if-you-didn-t-fork-the-repo-before" href="#if-you-didn-t-fork-the-repo-before" class="Permalink" aria-hidden="true" title="Permalink">#</a>If you didnt fork the repo before</h3>
<p>Fork the repo by clicking the <code>Fork</code> button at the top right of this page (must be on desktop site). Then on your Heroku account, go to the application. Click on the <code>Deploy</code> tab and connect the repo named <code>yourusername/rss-bridge</code>. Do a manual deploy of the <code>master</code> branch.</p>
<h3><a id="if-you-forked-the-repo-before" href="#if-you-forked-the-repo-before" class="Permalink" aria-hidden="true" title="Permalink">#</a>If you forked the repo before</h3>
<p><a href="https://github.com/RSS-Bridge/rss-bridge/pull/new/master" class="Link--external" rel="noopener noreferrer">Click here to create a new pull request to your fork</a>. Select <code>compare across forks</code>, make the base repository <code>yourusername/rss-bridge</code> and ensure the branch is set to master. Put any title you want and create the pull request. On the page that comes after this, merge the pull request.</p>
<p>You then want to go to your application in Heroku, connect your fork via the <code>Deploy</code> tab and deploy the <code>master</code> branch.</p>
<p>You can turn on auto-deploy for the master branch if you dont want to go through the process of logging into Heroku and deploying the branch every time changes to the repo are made in the future.</p>
<h2><a id="git" href="#git" class="Permalink" aria-hidden="true" title="Permalink">#</a>Git</h2>
<p>To get the latest changes from the master branch</p>
<pre><code>git pull
</code></pre>
<p>To use a specific tag</p>
<pre><code>git fetch --all
git checkout tags/&lt;tag-name&gt;
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Hosts/Installation.html">Previous</a></li> <li class=Pager--next><a href="../For_Hosts/Docker_Installation.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

160
For_Hosts/Whitelisting.html Normal file
View File

@ -0,0 +1,160 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Whitelisting - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item Nav__item--active'><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Hosts/index.html">For Hosts</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../For_Hosts/Whitelisting.html">Whitelisting</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/03_For_Hosts/05_Whitelisting.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>RSS-Bridge supports whitelists in order to limit the available bridges on your web server.</p>
<p>A default whitelist file (<code>whitelist.default.txt</code>) is shipped with RSS-Bridge. Please do not edit this file, as it gets replaced when upgrading RSS-Bridge!</p>
<p>You should, however, use this file as template to create your own whitelist (or leave it as is, to keep the default bridges). In order to create your own whitelist perform following actions:</p>
<ul>
<li>Copy the file <code>whitelist.default.txt</code> in the RSS-Bridge root folder</li>
<li>Rename the new file to <code>whitelist.txt</code>
</li>
<li>Change the lines to satisfy your requirements</li>
</ul>
<p>RSS-Bridge will automatically detect the <code>whitelist.txt</code> and use it. If the file doesnt exist it will default to <code>whitelist.default.txt</code> automatically.</p>
<h1><a id="specific-whitelisting" href="#specific-whitelisting" class="Permalink" aria-hidden="true" title="Permalink">#</a>Specific whitelisting</h1>
<p>In order to specifically whitelist bridges, open <code>whitelist.txt</code> and add one line for each bridge you want to show. Make sure you use normal <a href="https://en.wikipedia.org/wiki/Newline" title="Line-feed" class="Link--external" rel="noopener noreferrer">line-feeds</a> at the end of a line (LF not <a href="https://en.wikipedia.org/wiki/Carriage_return" title="Carriage-return line-feed" class="Link--external" rel="noopener noreferrer">CRLF</a>). The bridge name must match the filename of the bridge in the bridges folder (see <a href="../For_Developers/Folder_structure.html">folder structure</a>). The name may or may not include the Bridge part.</p>
<p><strong>Examples</strong>:</p>
<pre><code class="language-TEXT">FacebookBridge
WikipediaBridge
TwitterBridge
</code></pre>
<p>or</p>
<pre><code class="language-TEXT">Facebook
Wikipedia
Twitter
</code></pre>
<h1><a id="global-whitelisting" href="#global-whitelisting" class="Permalink" aria-hidden="true" title="Permalink">#</a>Global whitelisting</h1>
<p>In order to globally whitelist all bridges, open the <code>whitelist.txt</code> file, remove all contents and just write an asterisk <code>*</code> into the file (only this one character).</p>
<pre><code class="language-TEXT">*
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../For_Hosts/Heroku_Installation.html">Previous</a></li> <li class=Pager--next><a href="../For_Hosts/Authentication.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

146
For_Hosts/index.html Normal file
View File

@ -0,0 +1,146 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>For Hosts - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../For_Hosts/index.html">For Hosts</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/03_For_Hosts/index.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>This section is directed at <strong>hosts</strong> and <strong>server administrators</strong>.</p>
<p>To install RSS-Bridge, please follow the <a href="Installation.html">installation instructions</a>. You must have access to a web server with a working PHP environment!</p>
<p>RSS-Bridge comes with a large amount of bridges. Only few bridges are enabled by default. Unlock more bridges by adding them to the <a href="Whitelisting.html">whitelist</a>.</p>
<p>Some bridges could be implemented more efficiently by actually using proprietary APIs, but there are reasons against it:</p>
<ul>
<li>
<p>RSS-Bridge exists in the first place to NOT use APIs. See <a href="https://github.com/RSS-Bridge/rss-bridge/blob/master/README.md#Rant" class="Link--external" rel="noopener noreferrer">the rant</a></p>
</li>
<li>
<p>APIs require private keys that could be stored on servers running RSS-Bridge, which is a security concern, involves complex authorizations for inexperienced users and could cause harm (when using paid services for example). In a closed environment (a server only you use for yourself) however you might be interested in using them anyway. So, check <a href="https://github.com/RSS-Bridge/rss-bridge/pull/478/files" class="Link--external" rel="noopener noreferrer">this</a> possible implementation of an anti-captcha solution.</p>
</li>
</ul>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../CLI/index.html">Previous</a></li> <li class=Pager--next><a href="../For_Hosts/Installation.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,166 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>FormatAbstract - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item Nav__item--active'><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Format_API/index.html">Format API</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../Format_API/FormatAbstract.html">FormatAbstract</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/08_Format_API/03_FormatAbstract.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>The <code>FormatAbstract</code> class implements the <a href="FormatInterface.html"><code>FormatInterface</code></a> interface with basic functional behavior and adds common helper functions for new formats:</p>
<ul>
<li>
<a href="#the-setcontenttype-function">setContentType</a>
</li>
<li>
<a href="#the-callcontenttype-function">callContentType</a>
</li>
<li>
<a href="#the-sanitizehtml-function">sanitizeHtml</a>
</li>
<li>
<a href="#the-array_trim-function">array_trim</a>
</li>
</ul>
<h1><a id="functions" href="#functions" class="Permalink" aria-hidden="true" title="Permalink">#</a>Functions</h1>
<h2><a id="the-setcontenttype-function" href="#the-setcontenttype-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>setContentType</code> function</h2>
<p>The <code>setContentType</code> function receives a string defining the content type for the HTML header and must return the object instance.</p>
<pre><code class="language-PHP">setContentType(string): self
</code></pre>
<h2><a id="the-callcontenttype-function" href="#the-callcontenttype-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>callContentType</code> function</h2>
<p>The <code>callContentType</code> function applies the content type to the header data and must return the object instance.</p>
<pre><code class="language-PHP">callContentType(): self
</code></pre>
<h2><a id="the-sanitizehtml-function" href="#the-sanitizehtml-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>sanitizeHtml</code> function</h2>
<p>The <code>sanitizeHtml</code> function receives an HTML formatted string and returns the string with disabled <code>&lt;script&gt;</code>, <code>&lt;iframe&gt;</code> and <code>&lt;link&gt;</code> tags.</p>
<pre><code class="language-PHP">sanitizeHtml(string $html): string
</code></pre>
<h2><a id="the-array-trim-function" href="#the-array-trim-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>array_trim</code> function</h2>
<p>The <code>array_trim</code> function receives an array of strings and returns the same array with all elements trimmed (like using the <code>trim</code> function on all elements)</p>
<pre><code class="language-PHP">array_trim(array $elements): array
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Format_API/FormatInterface.html">Previous</a></li> <li class=Pager--next><a href="../Technical_recommendations/index.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,269 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>FormatInterface - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item Nav__item--active'><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Format_API/index.html">Format API</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../Format_API/FormatInterface.html">FormatInterface</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/08_Format_API/02_FormatInterface.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>The <code>FormatInterface</code>interface defines functions that need to be implemented by all formats:</p>
<ul>
<li>
<a href="#the-display-function">display</a>
</li>
<li>
<a href="#the-stringify-function">stringify</a>
</li>
<li>
<a href="#the-setitems-function">setItems</a>
</li>
<li>
<a href="#the-getitems-function">getItems</a>
</li>
<li>
<a href="#the-setcharset-function">setCharset</a>
</li>
<li>
<a href="#the-getcharset-function">getCharset</a>
</li>
<li>
<a href="#the-setextrainfos-function">setExtraInfos</a>
</li>
<li>
<a href="#the-getextrainfos-function">getExtraInfos</a>
</li>
<li>
<a href="#the-getmimetype-function">getMimeType</a>
</li>
</ul>
<p>Find a <a href="#template">template</a> at the end of this file</p>
<h1><a id="functions" href="#functions" class="Permalink" aria-hidden="true" title="Permalink">#</a>Functions</h1>
<h2><a id="the-display-function" href="#the-display-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>display</code> function</h2>
<p>The <code>display</code> function shows the contents to the user and must return the object instance.</p>
<pre><code class="language-PHP">display(): self
</code></pre>
<h2><a id="the-stringify-function" href="#the-stringify-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>stringify</code> function</h2>
<p>The <code>stringify</code> function returns the items received by <a href="#the-setitem-function"><code>setItems</code></a> as string.</p>
<pre><code class="language-PHP">stringify(): string
</code></pre>
<h2><a id="the-setitems-function" href="#the-setitems-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>setItems</code> function</h2>
<p>The <code>setItems</code> function receives an array of items generated by the bridge and must return the object instance. Each item represents an entry in the feed. For more information refer to the <a href="../Bridge_API/BridgeAbstract.html#collectdata">collectData</a> function.</p>
<pre><code class="language-PHP">setItems(array $items): self
</code></pre>
<h2><a id="the-getitems-function" href="#the-getitems-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>getItems</code> function</h2>
<p>The <code>getItems</code> function returns the items previously set by the <a href="#the-setitems-function"><code>setItems</code></a> function. If no items where set previously this function returns an error.</p>
<pre><code class="language-PHP">getItems(): array
</code></pre>
<h2><a id="the-setcharset-function" href="#the-setcharset-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>setCharset</code> function</h2>
<p>The <code>setCharset</code> function receives the character set value as string and returns the object instance.</p>
<pre><code class="language-PHP">setCharset(string): self
</code></pre>
<h2><a id="the-getcharset-function" href="#the-getcharset-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>getCharset</code> function</h2>
<p>The <code>getCharset</code> function returns the character set value.</p>
<pre><code class="language-PHP">getCharset(): string
</code></pre>
<h2><a id="the-setextrainfos-function" href="#the-setextrainfos-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>setExtraInfos</code> function</h2>
<p>The <code>setExtraInfos</code> function receives an array of elements with additional information to generate format outputs and must return the object instance.</p>
<pre><code class="language-PHP">setExtraInfos(array $infos): self
</code></pre>
<p>Currently supported information are:</p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>name</code></td>
<td>Defines the name as generated by the bridge</td>
</tr>
<tr>
<td><code>uri</code></td>
<td>Defines the URI of the feed as generated by the bridge</td>
</tr>
</tbody>
</table>
<h2><a id="the-getextrainfos-function" href="#the-getextrainfos-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>getExtraInfos</code> function</h2>
<p>The <code>getExtraInfos</code> function returns the information previously set via the <a href="#the-setextrainfos-function"><code>setExtraInfos</code></a> function.</p>
<pre><code class="language-PHP">getExtraInfos(): array
</code></pre>
<h2><a id="the-getmimetype-function" href="#the-getmimetype-function" class="Permalink" aria-hidden="true" title="Permalink">#</a>The <code>getMimeType</code> function</h2>
<p>The <code>getMimeType</code> function returns the expected <a href="https://en.wikipedia.org/wiki/Media_type#Common_examples" class="Link--external" rel="noopener noreferrer">MIME type</a> of the formats output.</p>
<pre><code class="language-PHP">getMimeType(): string
</code></pre>
<h1><a id="template" href="#template" class="Permalink" aria-hidden="true" title="Permalink">#</a>Template</h1>
<p>This is a bare minimum template for a format:</p>
<pre><code class="language-PHP">&lt;?php
class MyTypeFormat implements FormatInterface {
private $items;
private $charset;
private $extraInfos;
public function stringify(){
// Implement your code here
return ''; // Return items as string
}
public function display(){
// Implement your code here
echo $this-&gt;stringify();
return $this;
}
public function setItems(array $items){
$this-&gt;items = $items;
return $this;
}
public function getItems(){
return $this-&gt;items;
}
public function setCharset($charset){
$this-&gt;charset = $charset;
return $this;
}
public function getCharset(){
return $this-&gt;charset;
}
public function setExtraInfos(array $infos){
$this-&gt;extraInfos = $infos;
return $this;
}
public function getExtraInfos(){
return $this-&gt;extraInfos;
}
}
// Imaginary empty line!
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Format_API/How_to_create_a_new_format.html">Previous</a></li> <li class=Pager--next><a href="../Format_API/FormatAbstract.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,166 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>How to create a new format - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item Nav__item--active'><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Format_API/index.html">Format API</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/08_Format_API/01_How_to_create_a_new_format.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>Create a new file in the <code>formats/</code> folder (see <a href="../For_Developers/Folder_structure.html">Folder structure</a>).</p>
<p>The file must be named according to following specification:</p>
<ul>
<li>It starts with the type</li>
<li>The file name must end with Format</li>
<li>The file type must be PHP, written in small letters (seriously!) “.php”</li>
</ul>
<p><strong>Examples:</strong></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Filename</th>
</tr>
</thead>
<tbody>
<tr>
<td>Atom</td>
<td>AtomFormat.php</td>
</tr>
<tr>
<td>Html</td>
<td>HtmlFormat.php</td>
</tr>
</tbody>
</table>
<p>The file must start with the PHP tags and end with an empty line. The closing tag <code>?&gt;</code> is <a href="http://php.net/basic-syntax.instruction-separation" class="Link--external" rel="noopener noreferrer">omitted</a>.</p>
<p>Example:</p>
<pre><code class="language-PHP">&lt;?PHP
// PHP code here
// This line is empty (just imagine it!)
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Format_API/index.html">Previous</a></li> <li class=Pager--next><a href="../Format_API/FormatInterface.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

136
Format_API/index.html Normal file
View File

@ -0,0 +1,136 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Format API - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item Nav__item--open has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Format_API/index.html">Format API</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/08_Format_API/index.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>A <em>Format</em> is an class that allows <strong>RSS-Bridge</strong> to turn items from a bridge into an RSS-feed format. It is developed in a PHP file located in the <code>formats/</code> folder (see <a href="../For_Developers/Folder_structure.html">Folder structure</a>) and either implements the <a href="FormatInterface.html">FormatInterface</a> interface or extends the <a href="FormatAbstract.html">FormatAbstract</a> class.</p>
<p>For more information about how to create a new <em>Format</em>, read <a href="How_to_create_a_new_format.html">How to create a new Format?</a></p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Cache_API/CacheInterface.html">Previous</a></li> <li class=Pager--next><a href="../Format_API/How_to_create_a_new_format.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

147
General/Contribute.html Normal file
View File

@ -0,0 +1,147 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Contribute - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item Nav__item--open has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item Nav__item--active'><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../General/Project_goals.html">General</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../General/Contribute.html">Contribute</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/01_General/02_Contribute.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>There are many things you can do to contribute to <strong>RSS-Bridge</strong> as developer or as user without any knowledge in PHP or (web) development. Here are a few things:</p>
<ul>
<li>Share <strong>RSS-Bridge</strong> with your friends (Twitter, Facebook, …<em>you name it</em>…)</li>
<li>Report broken bridges or bugs <a href="https://github.com/RSS-Bridge/rss-bridge/issues" class="Link--external" rel="noopener noreferrer">here</a>
</li>
<li>Request new features or propose ideas (via <a href="https://github.com/RSS-Bridge/rss-bridge/issues" class="Link--external" rel="noopener noreferrer">Issues</a>)</li>
<li>Discuss bugs, features, ideas or <a href="https://github.com/RSS-Bridge/rss-bridge/issues" class="Link--external" rel="noopener noreferrer">issues</a>
</li>
<li>Add new bridges or improve the API</li>
<li>Improve this documentation</li>
<li>Host <strong>RSS-Bridge</strong>
</li>
</ul>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../General/Project_goals.html">Previous</a></li> <li class=Pager--next><a href="../General/Requirements.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

174
General/FAQ.html Normal file
View File

@ -0,0 +1,174 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>FAQ - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item Nav__item--open has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item Nav__item--active'><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../General/Project_goals.html">General</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../General/FAQ.html">FAQ</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/01_General/05_FAQ.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p>This page provides a collection of frequently asked questions and their answers. Please check this page before opening a new Issue :revolving_hearts:</p>
<ul>
<li>
<a href="#why-doesnt-my-bridge-show-new-contents">Why doesnt my bridge show new contents?</a>
</li>
<li>
<a href="#how-can-i-make-a-bridge-update-more-frequently">How can I make a bridge update more frequently?</a>
</li>
<li>
<a href="#firefox-doesnt-show-feeds-anymore-what-can-i-do">Firefox doesnt show feeds anymore, what can I do?</a>
</li>
</ul>
<h2><a id="why-doesn-t-my-bridge-show-new-contents" href="#why-doesn-t-my-bridge-show-new-contents" class="Permalink" aria-hidden="true" title="Permalink">#</a>Why doesnt my bridge show new contents?</h2>
<p>RSS-Bridge creates a cached version of your feed in order to reduce traffic and respond faster. The cached version is created on the first request and served for all subsequent requests. On every request RSS-Bridge checks if the cache timeout has elapsed. If the timeout has elapsed, it loads new contents and updates the cached version.</p>
<p><em>Notice</em>: RSS-Bridge only updates feeds if you actively request it, for example by pressing F5 in your browser or using a feed reader.</p>
<p>The cache duration is bridge specific and can last anywhere between five minutes and 24 hours. You can specify a custom cache timeout for each bridge if <a href="#how-can-i-make-a-bridge-update-more-frequently">this option</a> has been enabled on the server.</p>
<h2><a id="how-can-i-make-a-bridge-update-more-frequently" href="#how-can-i-make-a-bridge-update-more-frequently" class="Permalink" aria-hidden="true" title="Permalink">#</a>How can I make a bridge update more frequently?</h2>
<p>You can only do that if you are hosting the RSS-Bridge instance:</p>
<ul>
<li>Enable <a href="../For_Hosts/Custom_Configuration.html#customtimeout"><code>custom_timeout</code></a>
</li>
<li>Alternatively, change the default timeout for your bridge by modifying the <code>CACHE_TIMEOUT</code> constant in the relevant bridge file (e.g <a href="https://github.com/RSS-Bridge/rss-bridge/blob/master/bridges/FilterBridge.php#L7" class="Link--external" rel="noopener noreferrer">here</a> for the Filter Bridge).</li>
</ul>
<h2><a id="firefox-doesn-t-show-feeds-anymore-what-can-i-do" href="#firefox-doesn-t-show-feeds-anymore-what-can-i-do" class="Permalink" aria-hidden="true" title="Permalink">#</a>Firefox doesnt show feeds anymore, what can I do?</h2>
<p>As of version 64, Firefox removed support for viewing Atom and RSS feeds in the browser. This results in the browser downloading the pages instead of showing contents.</p>
<p>Further reading:</p>
<ul>
<li>
<a href="https://support.mozilla.org/en-US/kb/feed-reader-replacements-firefox" class="Link--external" rel="noopener noreferrer">https://support.mozilla.org/en-US/kb/feed-reader-replacements-firefox</a>
</li>
<li>
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1477667" class="Link--external" rel="noopener noreferrer">https://bugzilla.mozilla.org/show_bug.cgi?id=1477667</a>
</li>
</ul>
<p>To restore the original behavior in Firefox 64 or higher you can use following Add-on which attempts to recreate the original behavior (with some sugar on top):</p>
<ul>
<li>
<a href="https://addons.mozilla.org/en-US/firefox/addon/rsspreview/" class="Link--external" rel="noopener noreferrer">https://addons.mozilla.org/en-US/firefox/addon/rsspreview/</a>
</li>
</ul>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../General/Screenshots.html">Previous</a></li> <li class=Pager--next><a href="../General/Public_Hosts.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

142
General/Project_goals.html Normal file
View File

@ -0,0 +1,142 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Project-goals - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item Nav__item--open has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item Nav__item--active'><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../General/Project_goals.html">General</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../General/Project_goals.html">Project-goals</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/01_General/01_Project-goals.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p><strong>RSS-Bridge</strong> aims at sites that:</p>
<ul>
<li>dont provide public accessible Atom or RSS feeds</li>
<li>force their users to subscribe to e-mail notifications</li>
<li>force their users to use their own proprietary APIs</li>
<li>require their users to come back on a regular basis in order to check for new content</li>
</ul>
<p><strong>RSS-Bridge</strong> will generate feeds based on “bridges” that are developed for any site. Those bridges will collect data and extract all necessary information which is then converted into various feed formats like Atom or RSS.</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../index.html">Previous</a></li> <li class=Pager--next><a href="../General/Contribute.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

273
General/Public_Hosts.html Normal file
View File

@ -0,0 +1,273 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Public Hosts - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item Nav__item--open has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item Nav__item--active'><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../General/Project_goals.html">General</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../General/Public_Hosts.html">Public Hosts</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/01_General/06_Public_Hosts.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<table>
<thead>
<tr>
<th align="center">Flag</th>
<th>Host</th>
<th>Status</th>
<th>Contact</th>
<th>Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/IN.png" alt="🇮🇳" /></td>
<td><img src="https://www.google.com/s2/favicons?sz=16&amp;domain_url=https://rss-bridge.bb8.fun" alt="" /> <a href="https://rss-bridge.bb8.fun" class="Link--external" rel="noopener noreferrer">rss-bridge.bb8.fun</a></td>
<td><img src="https://img.shields.io/website/https/rss-bridge.bb8.fun.svg" alt="Status" /></td>
<td><a href="https://github.com/captn3m0" class="Link--external" rel="noopener noreferrer">@captn3m0</a></td>
<td>Hosted in Bengaluru, India</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/NL.png" alt="🇳🇱" /></td>
<td><img src="https://www.google.com/s2/favicons?domain=feed.eugenemolotov.ru" alt="" /> <a href="https://feed.eugenemolotov.ru" class="Link--external" rel="noopener noreferrer">feed.eugenemolotov.ru</a></td>
<td><img src="https://img.shields.io/website/https/feed.eugenemolotov.ru.svg" alt="Status" /></td>
<td><a href="https://github.com/em92" class="Link--external" rel="noopener noreferrer">@em92</a></td>
<td>Hosted in Amsterdam, Netherlands</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/FR.png" alt="🇫🇷" /></td>
<td><img src="https://www.google.com/s2/favicons?domain=bridge.suumitsu.eu" alt="" /> <a href="https://bridge.suumitsu.eu/" class="Link--external" rel="noopener noreferrer">bridge.suumitsu.eu</a></td>
<td><img src="https://img.shields.io/website/https/bridge.suumitsu.eu.svg" alt="Status" /></td>
<td><a href="https://github.com/mitsukarenai" class="Link--external" rel="noopener noreferrer">@mitsukarenai</a></td>
<td>Hosted in Paris, France</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/FR.png" alt="🇫🇷" /></td>
<td><img src="https://www.google.com/s2/favicons?sz=16&amp;domain_url=https://sebsauvage.net/rss-bridge/" alt="" /> <a href="https://sebsauvage.net/rss-bridge/" class="Link--external" rel="noopener noreferrer">sebsauvage.net/rss-bridge</a></td>
<td><img src="https://img.shields.io/website/https/sebsauvage.net/rss-bridge.svg" alt="Status" /></td>
<td><a href="https://github.com/sebsauvage/" class="Link--external" rel="noopener noreferrer">@sebsauvage</a></td>
<td>Hosted in France</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/FI.png" alt="🇫🇮" /></td>
<td><img src="https://www.google.com/s2/favicons?domain=rss-bridge.snopyta.org" alt="" /> <a href="https://rss-bridge.snopyta.org" class="Link--external" rel="noopener noreferrer">rss-bridge.snopyta.org</a></td>
<td><img src="https://img.shields.io/website/https/rss-bridge.snopyta.org.svg" alt="Status" /></td>
<td><a href="https://github.com/Perflyst" class="Link--external" rel="noopener noreferrer">@Perflyst</a></td>
<td>Hosted in Helsinki, Finland</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/DE.png" alt="🇩🇪" /></td>
<td><img src="https://www.google.com/s2/favicons?domain=rss.nixnet.xyz" alt="" /> <a href="https://rss.nixnet.xyz/" class="Link--external" rel="noopener noreferrer">rss.nixnet.xyz</a></td>
<td><img src="https://img.shields.io/website/https/rss.nixnet.xyz.svg" alt="Status" /></td>
<td><a href="https://nixnet.xyz/contact" class="Link--external" rel="noopener noreferrer">@amolith</a></td>
<td>Hosted in Wunstorf, Germany</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/FR.png" alt="🇫🇷" /></td>
<td><img src="https://www.google.com/s2/favicons?sz=16&amp;domain_url=https://myrss4fun.xyz/" alt="" /> <a href="https://myrss4fun.xyz" class="Link--external" rel="noopener noreferrer">myrss4fun.xyz</a></td>
<td><img src="https://img.shields.io/website/https/rss-bridge.bb8.fun.svg" alt="Status" /></td>
<td><a href="https://github.com/mrcoding/" class="Link--external" rel="noopener noreferrer">@mrcoding</a></td>
<td>Latest GitHub Release</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/FR.png" alt="🇫🇷" /></td>
<td><img src="https://www.google.com/s2/favicons?domain=bridge.easter.fr" alt="" /> <a href="https://bridge.easter.fr/" class="Link--external" rel="noopener noreferrer">bridge.easter.fr</a></td>
<td><img src="https://img.shields.io/website/https/bridge.easter.fr.svg" alt="Status" /></td>
<td><a href="https://github.com/chatainsim" class="Link--external" rel="noopener noreferrer">@chatainsim</a></td>
<td>Hosted in Roubaix, France</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/FR.png" alt="🇫🇷" /></td>
<td><img src="https://www.google.com/s2/favicons?sz=16&amp;domain_url=https://wtf.roflcopter.fr/rss-bridge" alt="" /> <a href="https://wtf.roflcopter.fr/rss-bridge/" class="Link--external" rel="noopener noreferrer">wtf.roflcopter.fr/rss-bridge</a></td>
<td><img src="https://img.shields.io/website/https/wtf.roflcopter.fr/rss-bridge.svg" alt="Status" /></td>
<td><a href="https://wtf.roflcopter.fr/" class="Link--external" rel="noopener noreferrer">roflcopter.fr</a></td>
<td>Hosted in France</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/LT.png" alt="LT" /></td>
<td><img src="https://www.google.com/s2/favicons?domain=rssbridge.fossdaily.xyz" alt="" /> <a href="https://rssbridge.fossdaily.xyz" class="Link--external" rel="noopener noreferrer">rssbridge.fossdaily.xyz</a></td>
<td><img src="https://img.shields.io/website/https/rssbridge.fossdaily.xyz.svg" alt="Status" /></td>
<td></td>
<td>Hosted in Vilnius, Lithuania</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/AT.png" alt="AT" /></td>
<td><a href="https://rss-bridge.ggc-project.de" class="Link--external" rel="noopener noreferrer">https://rss-bridge.ggc-project.de</a></td>
<td><img src="https://img.shields.io/website/https/rss-bridge.ggc-project.de" alt="Status" /></td>
<td><a href="https://social.dev-wiki.de/@ggc_project" class="Link--external" rel="noopener noreferrer">@ggc-project.de</a></td>
<td>Hosted in Steyr, Austria</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/US.png" alt="US" /></td>
<td><a href="https://bridge.noisebridge.info" class="Link--external" rel="noopener noreferrer">https://bridge.noisebridge.info</a></td>
<td><img src="https://img.shields.io/website/https/bridge.noisebridge.info" alt="Status" /></td>
<td><a href="https://discuss.noisebridge.info" class="Link--external" rel="noopener noreferrer">Discuss Forum</a></td>
<td>Hosted in United States</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/NL.png" alt="🇳🇱" /></td>
<td><img src="https://www.google.com/s2/favicons?sz=16&amp;domain_url=https://feeds.proxeuse.com" alt="" /> <a href="https://feeds.proxeuse.com/" class="Link--external" rel="noopener noreferrer">feeds.proxeuse.com</a></td>
<td><img src="https://img.shields.io/website/https/feeds.proxeuse.com" alt="Status" /></td>
<td><a href="https://www.proxeuse.com/en/contact-us" class="Link--external" rel="noopener noreferrer">Proxeuse</a></td>
<td>Hosted in Germany</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/RU.png" alt="🇷🇺" /></td>
<td><img src="https://www.google.com/s2/favicons?domain_url=ololbu.ru/rss-bridge" alt="" /> <a href="https://ololbu.ru/rss-bridge" class="Link--external" rel="noopener noreferrer">ololbu.ru/rss-bridge/</a></td>
<td><img src="https://img.shields.io/website/https/ololbu.ru" alt="Status" /></td>
<td><a href="https://github.com/Ololbu" class="Link--external" rel="noopener noreferrer">@Ololbu</a></td>
<td>Hosted in Moscow, Russia</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/DE.png" alt="🇩🇪" /></td>
<td><img src="https://www.google.com/s2/favicons?domain=tools.bheil.net/rss-bridge/" alt="" /> <a href="https://tools.bheil.net/rss-bridge/" class="Link--external" rel="noopener noreferrer">tools.bheil.net/rss-bridge/</a></td>
<td><img src="https://img.shields.io/website/https/tools.bheil.net.svg" alt="Status" /></td>
<td><a href="https://www.bheil.net" class="Link--external" rel="noopener noreferrer">@bheil</a></td>
<td>Hosted in Germany</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/DE.png" alt="🇩🇪" /></td>
<td><img src="https://www.google.com/s2/favicons?domain=rss-bridge.mediani.de" alt="" /> <a href="https://rss-bridge.mediani.de/" class="Link--external" rel="noopener noreferrer">rss-bridge.mediani.de</a></td>
<td><img src="https://img.shields.io/website/https/rss-bridge.mediani.de.svg" alt="Status" /></td>
<td><a href="https://github.com/sokai" class="Link--external" rel="noopener noreferrer">@sokai</a></td>
<td>Hosted with Netcup, Germany</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/FR.png" alt="🇫🇷" /></td>
<td><img src="https://www.google.com/s2/favicons?domain=rssbridge" alt="" /> <a href="https://rssbridge.boldair.dev/" class="Link--external" rel="noopener noreferrer">rssbridge.boldair.dev</a></td>
<td><img src="https://img.shields.io/website?down_color=red&amp;down_message=down&amp;up_color=lime&amp;up_message=up&amp;url=https%3A%2F%2Frssbridge.boldair.dev" alt="Status" /></td>
<td><a href="https://github.com/Boldairdev" class="Link--external" rel="noopener noreferrer">@Boldairdev</a></td>
<td>Latest Github release, Hosted on PHP 8.0 in Roubaix, France</td>
</tr>
<tr>
<td align="center"><img src="https://iplookup.flagfox.net/images/h16/CA.png" alt="🇨🇦" /></td>
<td><img src="https://www.google.com/s2/favicons?sz=16&amp;domain_url=https://rss-bridge.esmailelbob.xyz/" alt="" /> <a href="https://rss-bridge.esmailelbob.xyz/" class="Link--external" rel="noopener noreferrer">rss-bridge.esmailelbob.xyz</a></td>
<td><img src="https://img.shields.io/website/https/rss-bridge.esmailelbob.xyz.svg" alt="Status" /></td>
<td><a href="https://github.com/esmailelbobve2/" class="Link--external" rel="noopener noreferrer">@esmaiellbobdev2</a></td>
<td>Latest GitHub Release</td>
</tr>
</tbody>
</table>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../General/FAQ.html">Previous</a></li> <li class=Pager--next><a href="../CLI/index.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

162
General/Requirements.html Normal file
View File

@ -0,0 +1,162 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Requirements - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item Nav__item--open has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item Nav__item--active'><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../General/Project_goals.html">General</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../General/Requirements.html">Requirements</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/01_General/03_Requirements.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<p><strong>RSS-Bridge</strong> requires either of the following:</p>
<h2><a id="a-web-server-with" href="#a-web-server-with" class="Permalink" aria-hidden="true" title="Permalink">#</a>A Web server* with:</h2>
<ul>
<li>PHP 7.1 (or higher)</li>
<li>
<a href="https://secure.php.net/manual/en/book.openssl.php" class="Link--external" rel="noopener noreferrer"><code>openssl</code></a> extension</li>
<li>
<a href="https://secure.php.net/manual/en/book.libxml.php" class="Link--external" rel="noopener noreferrer"><code>libxml</code></a> extension (enabled by default, see <a href="http://php.net/manual/en/libxml.installation.php" class="Link--external" rel="noopener noreferrer">PHP Manual</a>)</li>
<li>
<a href="https://secure.php.net/manual/en/book.mbstring.php" class="Link--external" rel="noopener noreferrer"><code>mbstring</code></a> extension</li>
<li>
<a href="https://secure.php.net/manual/en/book.simplexml.php" class="Link--external" rel="noopener noreferrer"><code>simplexml</code></a> extension</li>
<li>
<a href="https://secure.php.net/manual/en/book.curl.php" class="Link--external" rel="noopener noreferrer"><code>curl</code></a> extension</li>
<li>
<a href="https://secure.php.net/manual/en/book.json.php" class="Link--external" rel="noopener noreferrer"><code>json</code></a> extension</li>
<li>
<a href="https://secure.php.net/manual/en/book.filter.php" class="Link--external" rel="noopener noreferrer"><code>filter</code></a> extension</li>
<li>
<a href="http://php.net/manual/en/book.sqlite3.php" class="Link--external" rel="noopener noreferrer"><code>sqlite3</code></a> extension (only when using SQLiteCache)</li>
</ul>
<p>Enable extensions by un-commenting the corresponding line in your PHP configuration (<code>php.ini</code>).</p>
<h2><a id="a-linux-server-with" href="#a-linux-server-with" class="Permalink" aria-hidden="true" title="Permalink">#</a>A Linux server with:</h2>
<ul>
<li>Docker server configured (Any recent version should do)</li>
<li>100MB of disk space</li>
</ul>
<p>To setup RSS Bridge using Docker, see the <a href="../For_Hosts/Docker_Installation.html">Docker Guide</a> on installing RSS Bridge.</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../General/Contribute.html">Previous</a></li> <li class=Pager--next><a href="../General/Screenshots.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

139
General/Screenshots.html Normal file
View File

@ -0,0 +1,139 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Screenshots - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item Nav__item--open has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item Nav__item--active'><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../General/Project_goals.html">General</a> <svg class="Page__header--separator" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.175 477.175"><path d="M360.73 229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1 0s-5.3 13.8 0 19.1l215.5 215.5-215.5 215.5c-5.3 5.3-5.3 13.8 0 19.1 2.6 2.6 6.1 4 9.5 4 3.4 0 6.9-1.3 9.5-4l225.1-225.1c5.3-5.2 5.3-13.8.1-19z"/></svg> <a href="../General/Screenshots.html">Screenshots</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/01_General/04_Screenshots.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<h2><a id="welcome-screen" href="#welcome-screen" class="Permalink" aria-hidden="true" title="Permalink">#</a>Welcome screen:</h2>
<p><img src="../images/screenshot_rss-bridge_welcome.png" alt="welcome screen" /></p>
<h2><a id="rss-bridge-hashtag-rss-bridge-search-on-twitter" href="#rss-bridge-hashtag-rss-bridge-search-on-twitter" class="Permalink" aria-hidden="true" title="Permalink">#</a>rss-bridge hashtag (#rss-bridge) search on Twitter:</h2>
<p><em>in Atom format (as displayed by Firefox)</em></p>
<p><img src="../images/screenshot_twitterbridge_atom.png" alt="twitter bridge" /></p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../General/Requirements.html">Previous</a></li> <li class=Pager--next><a href="../General/FAQ.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

218
Helper_functions/index.html Normal file
View File

@ -0,0 +1,218 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Helper functions - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item Nav__item--open'><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item '><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Helper_functions/index.html">Helper functions</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/06_Helper_functions/index.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<h1><a id="getinput" href="#getinput" class="Permalink" aria-hidden="true" title="Permalink">#</a>getInput</h1>
<p>The <code>getInput</code> function is used to receive a value for a parameter, specified in <code>const PARAMETERS</code></p>
<pre><code class="language-PHP">$this-&gt;getInput('your input name here');
</code></pre>
<p><code>getInput</code> will either return the value for your parameter or <code>null</code> if the parameter is unknown or not specified.</p>
<h1><a id="getcontents" href="#getcontents" class="Permalink" aria-hidden="true" title="Permalink">#</a>getContents</h1>
<p>The <code>getContents</code> function uses <a href="https://secure.php.net/manual/en/book.curl.php" class="Link--external" rel="noopener noreferrer">cURL</a> to acquire data from the specified URI while respecting the various settings defined at a global level by RSS-Bridge (i.e., proxy host, user agent, etc.). This function accepts a few parameters:</p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>url</code></td>
<td>string</td>
<td><em>required</em></td>
<td>The URL of the contents to acquire</td>
</tr>
<tr>
<td><code>header</code></td>
<td>array</td>
<td><em>optional</em></td>
<td>An array of HTTP header fields to set, in the format <code>array('Content-type: text/plain', 'Content-length: 100')</code>, see <a href="https://secure.php.net/manual/en/function.curl-setopt.php" class="Link--external" rel="noopener noreferrer">CURLOPT_HTTPHEADER</a></td>
</tr>
<tr>
<td><code>opts</code></td>
<td>array</td>
<td><em>optional</em></td>
<td>An array of cURL options in the format <code>array(CURLOPT_POST =&gt; 1);</code>, see <a href="https://secure.php.net/manual/en/function.curl-setopt.php" class="Link--external" rel="noopener noreferrer">curl_setopt</a> for a complete list of options.</td>
</tr>
</tbody>
</table>
<pre><code class="language-PHP">$header = array('Content-type:text/plain', 'Content-length: 100');
$opts = array(CURLOPT_POST =&gt; 1);
$html = getContents($url, $header, $opts);
</code></pre>
<h1><a id="getsimplehtmldom" href="#getsimplehtmldom" class="Permalink" aria-hidden="true" title="Permalink">#</a>getSimpleHTMLDOM</h1>
<p>The <code>getSimpleHTMLDOM</code> function is a wrapper for the <a href="http://simplehtmldom.sourceforge.net/" class="Link--external" rel="noopener noreferrer">simple_html_dom</a> <a href="http://simplehtmldom.sourceforge.net/manual_api.htm#api" class="Link--external" rel="noopener noreferrer">file_get_html</a> function in order to provide context by design.</p>
<pre><code class="language-PHP">$html = getSimpleHTMLDOM('your URI');
</code></pre>
<h1><a id="getsimplehtmldomcached" href="#getsimplehtmldomcached" class="Permalink" aria-hidden="true" title="Permalink">#</a>getSimpleHTMLDOMCached</h1>
<p>The <code>getSimpleHTMLDOMCached</code> function does the same as the <a href="#getsimplehtmldom"><code>getSimpleHTMLDOM</code></a> function, except that the content received for the given URI is stored in a cache and loaded from cache on the next request if the specified cache duration was not reached. Use this function for data that is very unlikely to change between consecutive requests to <strong>RSS-Bridge</strong>. This function allows to specify the cache duration with the second parameter (default is 24 hours / 86400 seconds).</p>
<pre><code class="language-PHP">$html = getSimpleHTMLDOMCached('your URI', 86400); // Duration 24h
</code></pre>
<p><strong>Notice:</strong> Due to the current implementation a value greater than 86400 seconds (24 hours) will not work as the cache is purged every 24 hours automatically.</p>
<h1><a id="returnerror" href="#returnerror" class="Permalink" aria-hidden="true" title="Permalink">#</a>returnError</h1>
<p><strong>Notice:</strong> Whenever possible make use of <a href="#returnclienterror"><code>returnClientError</code></a> or <a href="#returnservererror"><code>returnServerError</code></a></p>
<p>The <code>returnError</code> function aborts execution of the current bridge and returns the given error message with the provided error number:</p>
<pre><code class="language-PHP">returnError('Your error message', 404);
</code></pre>
<p>Check the <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes" class="Link--external" rel="noopener noreferrer">list of error codes</a> for applicable error numbers.</p>
<h1><a id="returnclienterror" href="#returnclienterror" class="Permalink" aria-hidden="true" title="Permalink">#</a>returnClientError</h1>
<p>The <code>returnClientError</code> function aborts execution of the current bridge and returns the given error message with error code <strong>400</strong>:</p>
<pre><code class="language-PHP">returnClientError('Your error message')
</code></pre>
<p>Use this function when the user provided invalid parameter or a required parameter is missing.</p>
<h1><a id="returnservererror" href="#returnservererror" class="Permalink" aria-hidden="true" title="Permalink">#</a>returnServerError</h1>
<p>The <code>returnServerError</code> function aborts execution of the current bridge and returns the given error message with error code <strong>500</strong>:</p>
<pre><code class="language-PHP">returnServerError('Your error message')
</code></pre>
<p>Use this function when a problem occurs that has nothing to do with the parameters provided by the user. (like: Host service gone missing, empty data received, etc…)</p>
<h1><a id="defaultlinkto" href="#defaultlinkto" class="Permalink" aria-hidden="true" title="Permalink">#</a>defaultLinkTo</h1>
<p>Automatically replaces any relative URL in a given string or DOM object (i.e. the one returned by <a href="#getsimplehtmldom">getSimpleHTMLDOM</a>) with an absolute URL.</p>
<pre><code class="hljs php">defaultLinkTo ( mixed $content, string $server ) : object
</code></pre>
<p>Returns a DOM object (even if provided a string).</p>
<p><strong>Remarks</strong></p>
<ul>
<li>Only handles <code>&lt;a&gt;</code> and <code>&lt;img&gt;</code> tags.</li>
</ul>
<p><strong>Example</strong></p>
<pre><code class="hljs php">$html = <span class="hljs-string">'&lt;img src="/blob/master/README.md"&gt;'</span>;
$html = defaultLinkTo($html, <span class="hljs-string">'https://www.github.com/rss-bridge/rss-bridge'</span>); <span class="hljs-comment">// Using custom server</span>
$html = defaultLinkTo($html, <span class="hljs-keyword">$this</span>-&gt;getURI()); <span class="hljs-comment">// Using bridge URL</span>
<span class="hljs-comment">// Output</span>
<span class="hljs-comment">// &lt;img src="https://www.github.com/rss-bridge/rss-bridge/blob/master/README.md"&gt;</span>
</code></pre>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Bridge_API/XPathAbstract.html">Previous</a></li> <li class=Pager--next><a href="../Cache_API/index.html">Next</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

View File

@ -0,0 +1,157 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Technical recommendations - RSS-Bridge</title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="../themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "../";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='../themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='../daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger" aria-controls="sidebar_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
<div class="Collapsible__content" id="sidebar_content">
<!-- Navigation -->
<ul class='Nav'><li class='Nav__item has-children'><a href="../General/Project_goals.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>General</a><ul class='Nav'><li class='Nav__item '><a href="../General/Project_goals.html">Project-goals</a></li><li class='Nav__item '><a href="../General/Contribute.html">Contribute</a></li><li class='Nav__item '><a href="../General/Requirements.html">Requirements</a></li><li class='Nav__item '><a href="../General/Screenshots.html">Screenshots</a></li><li class='Nav__item '><a href="../General/FAQ.html">FAQ</a></li><li class='Nav__item '><a href="../General/Public_Hosts.html">Public Hosts</a></li></ul></li><li class='Nav__item '><a href="../CLI/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>CLI</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../For_Hosts/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Hosts</a><ul class='Nav'><li class='Nav__item '><a href="../For_Hosts/Installation.html">Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Updating.html">Updating</a></li><li class='Nav__item '><a href="../For_Hosts/Docker_Installation.html">Docker Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Heroku_Installation.html">Heroku Installation</a></li><li class='Nav__item '><a href="../For_Hosts/Whitelisting.html">Whitelisting</a></li><li class='Nav__item '><a href="../For_Hosts/Authentication.html">Authentication</a></li><li class='Nav__item '><a href="../For_Hosts/Customizations.html">Customizations</a></li><li class='Nav__item '><a href="../For_Hosts/Custom_Configuration.html">Custom Configuration</a></li></ul></li><li class='Nav__item has-children'><a href="../For_Developers/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>For Developers</a><ul class='Nav'><li class='Nav__item '><a href="../For_Developers/Coding_style_policy.html">Coding style policy</a></li><li class='Nav__item '><a href="../For_Developers/Pull_Request_policy.html">Pull Request policy</a></li><li class='Nav__item '><a href="../For_Developers/Folder_structure.html">Folder structure</a></li><li class='Nav__item '><a href="../For_Developers/Actions.html">Actions</a></li><li class='Nav__item '><a href="../For_Developers/Debug_mode.html">Debug mode</a></li></ul></li><li class='Nav__item has-children'><a href="../Bridge_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Bridge API</a><ul class='Nav'><li class='Nav__item '><a href="../Bridge_API/How_to_create_a_new_bridge.html">How to create a new bridge</a></li><li class='Nav__item '><a href="../Bridge_API/BridgeAbstract.html">BridgeAbstract</a></li><li class='Nav__item '><a href="../Bridge_API/FeedExpander.html">FeedExpander</a></li><li class='Nav__item '><a href="../Bridge_API/XPathAbstract.html">XPathAbstract</a></li></ul></li><li class='Nav__item '><a href="../Helper_functions/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Helper functions</a><ul class='Nav'></ul></li><li class='Nav__item has-children'><a href="../Cache_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Cache API</a><ul class='Nav'><li class='Nav__item '><a href="../Cache_API/How_to_create_a_new_cache.html">How to create a new cache</a></li><li class='Nav__item '><a href="../Cache_API/CacheInterface.html">CacheInterface</a></li></ul></li><li class='Nav__item has-children'><a href="../Format_API/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Format API</a><ul class='Nav'><li class='Nav__item '><a href="../Format_API/How_to_create_a_new_format.html">How to create a new format</a></li><li class='Nav__item '><a href="../Format_API/FormatInterface.html">FormatInterface</a></li><li class='Nav__item '><a href="../Format_API/FormatAbstract.html">FormatAbstract</a></li></ul></li><li class='Nav__item Nav__item--open'><a href="../Technical_recommendations/index.html" class="Nav__item__link"><i class="Nav__arrow">&nbsp;</i>Technical recommendations</a><ul class='Nav'></ul></li></ul>
<div class="Links">
<hr/>
<a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a>
<br />
<a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a>
<br />
</div>
<div class="CodeToggler">
<hr/>
<label class="Checkbox">Show Code Blocks <input type="checkbox" class="CodeToggler__button--main" checked="checked"/>
<div class="Checkbox__indicator"></div>
</label>
</div>
<div class="PoweredBy">
<hr/>
Powered by Daux.io </div>
</div>
</aside>
<div class="Columns__right">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Technical_recommendations/index.html">Technical recommendations</a></h1>
<span class="ModifiedDate">
March 22, 2022 at 1:33 PM </span>
<span class="EditOn">
<a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/docs/09_Technical_recommendations/index.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
<div class="s-content">
<h2><a id="general-recommendations" href="#general-recommendations" class="Permalink" aria-hidden="true" title="Permalink">#</a>General recommendations</h2>
<ul>
<li>Use <a href="https://en.wikipedia.org/wiki/HTTPS" class="Link--external" rel="noopener noreferrer">HTTPS</a> (<code>https://...</code>) over <a href="https://en.wikipedia.org/wiki/HTTPS" class="Link--external" rel="noopener noreferrer">HTTP</a> (<code>http://...</code>) whenever possible</li>
</ul>
<h2><a id="test-a-site-before-building-a-bridge" href="#test-a-site-before-building-a-bridge" class="Permalink" aria-hidden="true" title="Permalink">#</a>Test a site before building a bridge</h2>
<p>Some sites make use of anti-bot mechanisms (e.g.: by using JavaScript) in which case they work fine in regular browsers, but not in the PHP environment. To check if a site works with RSS-Bridge, create a new bridge using the <a href="../Bridge_API/BridgeAbstract.html#template">template</a> and load a valid URL (not the base URL!).</p>
<p><strong>Example (using github.com)</strong></p>
<pre><code class="language-PHP">&lt;?php
class TestBridge extends BridgeAbstract {
const NAME = 'Unnamed bridge';
const URI = '';
const DESCRIPTION = 'No description provided';
const MAINTAINER = 'No maintainer';
const PARAMETERS = array();
const CACHE_TIMEOUT = 3600;
public function collectData(){
$html = getSimpleHTMLDOM('https://github.com/rss-bridge/rss-bridge')
or returnServerError('No contents received!');
}
}
</code></pre>
<p>This bridge should return an empty page (HTML format)</p>
</div>
<nav>
<ul class="Pager">
<li class=Pager--prev><a href="../Format_API/FormatAbstract.html">Previous</a></li> </ul>
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="../daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': '../'})
</script>
</body>
</html>

12
daux_libraries/README.md Normal file
View File

@ -0,0 +1,12 @@
# Updating Highlight.js
This build of highlight.js contains all languages. to achieve this, go to : https://highlightjs.org/download/
And run the following snipped in the console:
```
$$("input[type=checkbox]").forEach(function(checkbox) { checkbox.checked=true; })
```
This will tick all boxes instead of doing it by hand.

File diff suppressed because one or more lines are too long

2
daux_libraries/katex.min.css vendored Normal file

File diff suppressed because one or more lines are too long

2
daux_libraries/katex.min.js vendored Normal file

File diff suppressed because one or more lines are too long

3
daux_libraries/mermaid.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,32 @@
/*!
* Wait for document loaded before starting the execution
*/
/*! @license DOMPurify 2.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.3/LICENSE */
/*! Check if previously processed */
/*! sequence config was passed as #1 */
/**
* @license
* Copyright (c) 2012-2013 Chris Pettitt
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

File diff suppressed because one or more lines are too long

169
daux_libraries/search.css Normal file
View File

@ -0,0 +1,169 @@
body.with-search {
overflow: hidden;
}
.SearchResults {
background: #fff;
max-width: 650px;
padding: 15px;
margin: 0;
z-index: 100;
position: absolute;
top: 0;
left: 0;
bottom: 0;
overflow: auto;
}
.SearchResultsBackdrop {
z-index: 90;
width: 100%;
position: absolute;
top: 0;
left: 0;
bottom: 0;
background: #000;
opacity: 0.6;
}
.homepage .SearchResults,
.homepage .SearchResultsBackdrop {
top: 50px;
}
.homepage .SearchResults .Search__field {
display: none;
}
.SearchResults .Search__field {
width: 40%;
float: left;
}
.SearchResults__warning {
font-weight: 300;
font-size: 15px;
line-height: 1.6;
color: #555;
margin: 7px 0;
clear: both;
}
.SearchResults__warning a {
color: #396;
text-decoration: none;
}
.SearchResults__warning a:hover {
color: #555;
}
.SearchResults__count {
font-weight: 300;
font-size: 15px;
line-height: 1.7;
color: #555;
}
.SearchResults__close {
border: 0 transparent solid;
background: none;
float: right;
font-size: 2em;
cursor: pointer;
padding: 0;
margin: 0;
line-height: 0.8em;
}
.SearchResults__title {
font-weight: 300;
font-size: 21px;
line-height: 1.7;
margin-top: 23px;
}
.SearchResults__title a {
color: #333;
text-decoration: none;
}
.SearchResults__title a:hover {
color: #555;
}
.SearchResults__url {
font-weight: 300;
font-size: 14px;
line-height: 1.9;
word-wrap: break-word;
hyphens: auto;
}
.SearchResults__url a {
color: #396;
text-decoration: none;
}
.SearchResults__url a:hover {
color: #555;
}
.SearchResults__text {
font-weight: 300;
font-size: 15px;
line-height: 1.6;
color: #555;
word-wrap: break-word;
hyphens: auto;
margin-top: 3px;
}
.SearchResults__debug {
font-weight: 300;
font-size: 13px;
line-height: 1.6;
color: #555;
margin: 5px 0;
}
.SearchResults__highlight {
color: #333;
font-weight: 400;
}
.SearchResults__footer {
margin: 51px 0 21px 0;
padding: 0 10px;
}
.SearchResults__footer__links li {
margin: 0 4px;
}
.SearchResults__footer__links li.current {
display: inline-block;
padding: 5px 14px;
border-radius: 15px;
color: #333;
background: #f6f6f6;
border: 1px solid #e2e2e2;
}
/* spinner */
@media (min-width: 650px) {
.SearchResults {
width: 650px;
left: 50%;
margin-left: -325px;
}
}

9
daux_libraries/search.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
daux_search_index.js Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/debug_mode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
images/fork_button.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
images/heroku_deploy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
images/rssbridgelogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

141
index.html Normal file
View File

@ -0,0 +1,141 @@
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>RSS-Bridge </title>
<meta name="description" content="The RSS feed for websites missing it">
<meta name="author" content="RSS-Bridge Contributors">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="themes/daux/img/favicon-blue.png" type="image/x-icon">
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- JS -->
<script>
window.base_url = "";
document.documentElement.classList.remove('no-js');
</script>
<!-- Font -->
<!-- CSS -->
<link href='themes/daux/css/theme-blue.min.css' rel='stylesheet' type='text/css'>
<link href='daux_libraries/search.css' rel='stylesheet' type='text/css'>
</head>
<body class="homepage">
<div class="Navbar NoPrint">
<div class="Container">
<a class="Brand" href="index.html">RSS-Bridge</a>
<form role='search' action="/" method="get" class="Search" id="search_form">
<label for="search_input">
<span class='u-visuallyHidden'>Search</span>
</label>
<input
type="search"
id="search_input"
class="Search__field"
placeholder="Search..."
aria-label="Search..."
autocomplete="on"
results=25
autosave=text_search
>
<label>
<input type="submit" class='u-visuallyHidden' />
<span class='u-visuallyHidden'>Search...</span>
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
</label>
</form>
</div>
</div>
<div class="Homepage">
<div class="HomepageTitle Container">
<h2>The RSS feed for websites missing it</h2> </div>
<div class="HomepageImage Container">
<img class="homepage-image img-responsive" src="./images/rssbridgelogo.png" alt="RSS-Bridge"> </div>
<div class="HomepageButtons">
<div class="Container">
<a href="https://github.com/RSS-Bridge/rss-bridge" class="Button Button--secondary Button--hero" rel="noopener noreferrer">
View On GitHub </a>
<a href="General/Project_goals.html" class="Button Button--primary Button--hero">View Documentation</a> </div>
</div>
</div>
<div class="HomepageContent">
<div class="Container">
<div class="Container--inner">
<div class="doc_content s-content">
<p><strong>RSS-Bridge</strong> is free and open source software for generating Atom or RSS feeds from websites which dont have one. It is written in PHP and intended to run on a Web server. See the <a href="General/Screenshots.html">Screenshots</a> for a quick introduction to <strong>RSS-Bridge</strong></p>
<ul>
<li>
<p>You want to know more about <strong>RSS-Bridge</strong>?<br />
Check out our <strong><a href="General/Project_goals.html">project goals</a></strong>.</p>
</li>
<li>
<p>You want to contribute and dont know how?<br />
Check out our <strong><a href="General/Contribute.html">How can I contribute?</a></strong> section.</p>
</li>
<li>
<p>You are a developer and searching for more details?<br />
Check out our <strong><a href="For_Developers/index.html">For developers</a></strong> section.</p>
</li>
<li>
<p>You want to know what is required to host <strong>RSS-Bridge</strong>?<br />
Check out the <strong><a href="General/Requirements.html">Requirements</a></strong> section.</p>
</li>
<li>
<p>You want to host <strong>RSS-Bridge</strong>?<br />
Check out the <strong><a href="For_Hosts/index.html">For hosts</a></strong> section.</p>
</li>
<li>
<p>You have questions?<br />
Check out the <strong><a href="General/FAQ.html">FAQ</a></strong>.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="HomepageFooter">
<div class="Container">
<div class="Container--inner">
<ul class="HomepageFooter__links">
<li><a href="https://github.com/RSS-Bridge/rss-bridge" target="_blank" rel="noopener noreferrer">GitHub Repository</a></li>
<li><a href="https://github.com/RSS-Bridge/rss-bridge/issues" target="_blank" rel="noopener noreferrer">Help/Support/Bugs</a></li>
<li><a href="https://github.com/RSS-Bridge/rss-bridge/pkgs/container/rss-bridge" target="_blank" rel="noopener noreferrer">Docker Images</a></li>
</ul>
</div>
</div>
</div>
<!-- JS -->
<script src="themes/daux/js/daux.min.js"></script>
<script>
window.searchLanguage = "";
window.searchTranslation = {"Search_one_result":"1 result","Search_results":"!count results","Search_no_results":"Nothing found","Search_common_words_ignored":"Common words are largely ignored","Search_too_short":"Search too short","Search_one_character_or_more":"Should be one character or more","Search_should_be_x_or_more":"Should be !min characters or more","Link_previous":"Previous","Link_next":"Next"};
</script>
<!-- Search -->
<script type="text/javascript" src="daux_libraries/search.min.js"></script>
<script>
window.search({'base_url': ''})
</script>
</body>
</html>

24
themes/daux/config.json Normal file
View File

@ -0,0 +1,24 @@
{
"favicon": "<theme_url>img/favicon.png",
"js": [
"<theme_url>js/daux.min.js"
],
"variants": {
"blue": {
"favicon": "<theme_url>img/favicon-blue.png",
"css": ["<theme_url>css/theme-blue.min.css"]
},
"green": {
"favicon": "<theme_url>img/favicon-green.png",
"css": ["<theme_url>css/theme-green.min.css"]
},
"navy": {
"favicon": "<theme_url>img/favicon-navy.png",
"css": ["<theme_url>css/theme-navy.min.css"]
},
"red": {
"favicon": "<theme_url>img/favicon-red.png",
"css": ["<theme_url>css/theme-red.min.css"]
}
}
}

10
themes/daux/css/theme-blue.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

10
themes/daux/css/theme-green.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

10
themes/daux/css/theme-navy.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

10
themes/daux/css/theme-red.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1,688 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata></metadata>
<defs>
<font id="roboto_slabbold" horiz-adv-x="1471" >
<font-face units-per-em="2048" ascent="1638" descent="-410" />
<missing-glyph horiz-adv-x="502" />
<glyph unicode="&#xfb01;" horiz-adv-x="1337" d="M34 877v205h161v74q0 204 124.5 314.5t350.5 110.5q78 0 154 -15.5t176 -44.5l-42 -230q-73 22 -132.5 34t-136.5 12q-101 0 -151.5 -46t-50.5 -135v-74h656v-877l155 -30v-175h-588v175l141 30v672h-364v-672l141 -30v-175h-589v175l156 30v672h-161z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1421" d="M940 1324q-55 12 -109 19t-117 7q-113 0 -170 -56t-57 -165v-47h240v-205h-240v-672l141 -30v-175h-589v175l156 30v672h-136v205h136v47q0 217 131 334.5t369 117.5q86 0 170 -15.5t195 -44.5h172v-1316l141 -30v-175h-574v175l141 30v1119v0z" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#xd;" horiz-adv-x="502" />
<glyph horiz-adv-x="225" />
<glyph unicode="&#x9;" horiz-adv-x="0" />
<glyph unicode=" " horiz-adv-x="502" />
<glyph unicode="&#x09;" horiz-adv-x="502" />
<glyph unicode="&#xa0;" horiz-adv-x="502" />
<glyph unicode="!" horiz-adv-x="507" d="M411 502h-292v954h292v-954zM411 0h-292v256h292v-256z" />
<glyph unicode="&#x22;" horiz-adv-x="782" d="M346 1288l-77 -249h-129v521h206v-272zM672 1288l-77 -249h-128v521h205v-272z" />
<glyph unicode="#" horiz-adv-x="1198" d="M642 410h-192l-72 -410h-184l72 410h-227v169h256l51 290h-231v171h261l74 416h183l-73 -416h192l73 416h184l-74 -416h220v-171h-250l-51 -290h226v-169h-255l-72 -410h-183zM479 579h192l51 290h-192z" />
<glyph unicode="$" horiz-adv-x="1107" d="M749 383q0 81 -46.5 132t-159.5 95q-222 81 -329 180.5t-107 280.5q0 168 107.5 275.5t289.5 126.5v215h159v-218q175 -26 275.5 -146.5t98.5 -313.5l-3 -5h-284q0 118 -49 182t-132 64q-86 0 -128.5 -49.5t-42.5 -131.5q0 -78 44.5 -126.5t163.5 -95.5q221 -87 328 -186 t107 -277q0 -173 -107.5 -277.5t-290.5 -123.5v-198h-159v197q-187 19 -309 132.5t-118 333.5l2 5h284q0 -134 62 -192t156 -58q91 0 139.5 48.5t48.5 130.5z" />
<glyph unicode="%" horiz-adv-x="1429" d="M49 1176q0 129 83.5 215t232.5 86q151 0 234 -85.5t83 -215.5v-77q0 -129 -83 -214t-232 -85q-150 0 -234 85t-84 214v77zM243 1099q0 -58 32 -97.5t92 -39.5q58 0 90 39.5t32 97.5v77q0 58 -32.5 98.5t-91.5 40.5t-90.5 -40.5t-31.5 -98.5v-77zM745 357q0 128 84 214 t233 86q150 0 233.5 -85.5t83.5 -214.5v-77q0 -130 -83 -215t-232 -85q-150 0 -234.5 85.5t-84.5 214.5v77zM939 280q0 -57 34.5 -97.5t90.5 -40.5q65 0 93 37.5t28 100.5v77q0 57 -32 97.5t-91 40.5q-60 0 -91.5 -40.5t-31.5 -97.5v-77zM450 109l-142 75l711 1138l142 -75z " />
<glyph unicode="&#x26;" horiz-adv-x="1278" d="M45 392q0 118 65 203.5t198 178.5q-68 92 -101.5 168t-33.5 155q0 173 108 276.5t289 103.5q159 0 258.5 -98.5t99.5 -238.5q0 -98 -49 -179t-134 -142l-93 -66l276 -322q36 60 56 130t20 148h218q0 -138 -34 -254t-104 -206l208 -244l-2 -5h-324l-77 89 q-85 -55 -175 -82.5t-193 -27.5q-218 0 -347 114.5t-129 298.5zM536 203q53 0 106 13.5t102 40.5l-300 348l-19 -13q-51 -48 -69.5 -93.5t-18.5 -91.5q0 -89 55 -146.5t144 -57.5zM434 1100q0 -43 21.5 -88.5t64.5 -100.5l86 56q56 36 75.5 74t19.5 83q0 50 -36.5 89 t-95.5 39q-65 0 -100 -43.5t-35 -108.5z" />
<glyph unicode="'" horiz-adv-x="449" d="M338 1291l-70 -283h-129v552h199v-269z" />
<glyph unicode="(" horiz-adv-x="685" d="M89 592q0 392 152 665.5t344 354.5h6l53 -146q-131 -98 -220 -316t-89 -556v-26q0 -339 89 -556.5t220 -318.5l-53 -143h-6q-192 81 -344 354t-152 666v22z" />
<glyph unicode=")" horiz-adv-x="712" d="M631 570q0 -383 -158 -661.5t-352 -358.5h-6l-54 143q129 98 219 317t90 558v26q0 336 -91 556.5t-218 319.5l54 142h6q194 -80 352 -359t158 -661v-22z" />
<glyph unicode="*" horiz-adv-x="914" d="M336 966l-302 89l57 177l297 -123l-18 347h188l-20 -353l291 120l56 -180l-306 -89l200 -265l-151 -110l-175 290l-173 -281l-152 106z" />
<glyph unicode="+" horiz-adv-x="1098" d="M688 812h359v-252h-359v-414h-277v414h-362v252h362v394h277v-394z" />
<glyph unicode="," horiz-adv-x="503" d="M400 39q0 -102 -57.5 -216t-140.5 -187l-144 78q39 70 60 144.5t21 166.5v218h262z" />
<glyph unicode="-" horiz-adv-x="815" d="M695 510h-564v225h564v-225z" />
<glyph unicode="." horiz-adv-x="522" d="M420 0h-291v256h291v-256z" />
<glyph unicode="/" horiz-adv-x="748" d="M193 -125h-216l534 1581h216z" />
<glyph unicode="0" horiz-adv-x="1170" d="M1082 567q0 -289 -132.5 -438.5t-358.5 -149.5q-228 0 -361 149.5t-133 438.5v321q0 288 132.5 438.5t359.5 150.5q226 0 359.5 -150.5t133.5 -438.5v-321zM791 918q0 173 -52 253.5t-150 80.5q-99 0 -150 -80t-51 -254v-379q0 -176 51.5 -256t151.5 -80q98 0 149 80 t51 256v379z" />
<glyph unicode="1" horiz-adv-x="905" d="M65 175l246 30v986h-249v167l540 98v-1251l246 -30v-175h-783v175z" />
<glyph unicode="2" horiz-adv-x="1132" d="M73 0v191l471 505q102 117 145 197.5t43 149.5q0 92 -49.5 150.5t-140.5 58.5q-101 0 -153.5 -68.5t-52.5 -182.5h-284l-2 6q-5 197 129.5 333.5t362.5 136.5q225 0 354 -117t129 -312q0 -132 -72.5 -244t-240.5 -292l-259 -283l2 -5h378l12 144h222v-368h-994z" />
<glyph unicode="3" horiz-adv-x="1112" d="M381 852h164q104 0 154 54.5t50 151.5q0 88 -50 141t-145 53q-82 0 -138 -48t-56 -126h-283l-2 6q-6 171 131 282t340 111q226 0 360.5 -108t134.5 -308q0 -95 -60 -180.5t-165 -133.5q121 -43 184.5 -132t63.5 -207q0 -200 -145.5 -314.5t-372.5 -114.5 q-203 0 -348.5 107.5t-140.5 303.5l2 6h283q0 -84 60 -138.5t152 -54.5q101 0 159.5 56t58.5 152q0 115 -57.5 168.5t-169.5 53.5h-164v219z" />
<glyph unicode="4" horiz-adv-x="1154" d="M935 542h165v-194h-165v-143l155 -30v-175h-602v175l156 30v143h-594l-14 143l605 965h294v-914zM309 542h335v525l-6 2l-24 -42z" />
<glyph unicode="5" horiz-adv-x="1092" d="M834 1124l-26 98h-392l-41 -336q41 30 98 49.5t126 20.5q210 3 325 -127t115 -362q0 -210 -126.5 -349t-364.5 -139q-200 0 -343 109.5t-138 301.5l2 5l280 14q0 -97 55 -151.5t144 -54.5q102 0 151 73t49 189q0 126 -52 202t-155 76q-83 0 -127.5 -31t-63.5 -84l-258 17 l84 811h838v-332h-180z" />
<glyph unicode="6" horiz-adv-x="1144" d="M675 1477q82 0 151.5 -15.5t139.5 -45.5l-51 -213q-63 22 -116 33.5t-122 11.5q-130 0 -208.5 -95t-79.5 -280l3 -5q49 51 124.5 80t168.5 29q195 0 306 -138.5t111 -353.5q0 -220 -137 -363t-354 -143q-230 0 -375 156.5t-145 433.5v256q0 309 163.5 480.5t420.5 171.5z M608 756q-81 0 -138 -26t-88 -71v-97q0 -173 62.5 -266t166.5 -93q90 0 144.5 82.5t54.5 199.5q0 121 -55 196t-147 75z" />
<glyph unicode="7" horiz-adv-x="1107" d="M1078 1231q-234 -274 -319.5 -511t-122.5 -572l-14 -148h-292l14 148q34 321 146 589.5t307 493.5h-513l-11 -144h-224v369h1029v-225z" />
<glyph unicode="8" horiz-adv-x="1115" d="M1026 1070q0 -109 -58 -193t-159 -131q116 -49 183 -140t67 -208q0 -202 -137 -310.5t-358 -108.5q-222 0 -359.5 108.5t-137.5 310.5q0 118 66.5 208.5t182.5 139.5q-102 47 -159 131t-57 193q0 194 127 300.5t335 106.5t336 -106.5t128 -300.5zM768 418q0 98 -57.5 157 t-148.5 59t-147 -59t-56 -157q0 -100 56 -157.5t149 -57.5q91 0 147.5 58t56.5 157zM734 1057q0 88 -46.5 141.5t-125.5 53.5q-80 0 -124.5 -52.5t-44.5 -142.5q0 -91 45 -144.5t126 -53.5q79 0 124.5 53.5t45.5 144.5z" />
<glyph unicode="9" horiz-adv-x="1141" d="M501 203q117 0 189 89.5t72 268.5v22q-49 -63 -117 -95.5t-146 -32.5q-204 0 -320 133.5t-116 368.5q0 221 138.5 370.5t350.5 149.5q223 0 362 -153.5t139 -431.5v-316q0 -283 -154.5 -440t-397.5 -157q-76 0 -156.5 15.5t-148.5 45.5l33 211q67 -25 130 -36.5 t142 -11.5zM548 669q73 0 127.5 27.5t86.5 73.5v156q0 160 -56 243t-152 83q-88 0 -143.5 -86.5t-55.5 -208.5q0 -132 49.5 -210t143.5 -78z" />
<glyph unicode=":" horiz-adv-x="455" d="M91 0zM382 0h-291v256h291v-256zM382 825h-291v256h291v-256z" />
<glyph unicode=";" horiz-adv-x="453" d="M28 0zM381 825h-291v256h291v-256zM370 39q0 -102 -57.5 -216t-140.5 -187l-144 78q39 70 60 144.5t21 166.5v218h262z" />
<glyph unicode="&#x3c;" horiz-adv-x="1012" d="M343 550v-6l576 -203v-272l-861 367v227l861 366v-272z" />
<glyph unicode="=" horiz-adv-x="1123" d="M1019 763h-896v229h896v-229zM1019 332h-896v229h896v-229z" />
<glyph unicode="&#x3e;" horiz-adv-x="1031" d="M689 539v6l-585 206v269l871 -366v-227l-871 -367v270z" />
<glyph unicode="?" horiz-adv-x="985" d="M326 414q1 140 41.5 205t161.5 158q71 58 113.5 125t42.5 150q0 92 -48.5 144t-138.5 52q-74 0 -125.5 -44t-52.5 -129h-284l-2 6q-3 192 126.5 294t337.5 102q224 0 351.5 -113.5t127.5 -308.5q0 -127 -74.5 -235t-186.5 -181q-61 -47 -80 -94.5t-19 -130.5h-291zM619 0 h-294v250h294v-250z" />
<glyph unicode="@" horiz-adv-x="1806" d="M1731 513q-9 -218 -128 -376t-356 -158q-78 0 -135 44t-81 123q-44 -82 -109.5 -123t-153.5 -41q-141 0 -216.5 119t-56.5 315q25 254 144 407t288 153q116 0 186 -26t155 -80l-3 -4h5l-51 -573q-7 -94 14 -129.5t57 -35.5q115 0 184.5 109t77.5 276q16 354 -136.5 551.5 t-471.5 197.5q-304 0 -484.5 -213t-195.5 -571q-18 -355 145.5 -560t469.5 -205q85 0 175.5 20t155.5 50l38 -147q-67 -42 -170.5 -65.5t-202.5 -23.5q-396 0 -610.5 249t-197.5 682q18 427 255 683.5t626 256.5q387 0 593 -242.5t190 -662.5zM721 416q-10 -127 18.5 -192.5 t92.5 -65.5q56 0 101.5 26.5t81.5 96.5q0 2 0.5 6t0.5 6l44 496q-23 7 -46.5 11t-47.5 4q-111 0 -169 -96.5t-76 -291.5z" />
<glyph unicode="A" d="M41 175l104 15l443 1266h299l440 -1266l104 -15v-175h-496v175l101 18l-64 200h-472l-64 -200l101 -18v-175h-496v175zM569 608h334l-164 513h-6z" />
<glyph unicode="B" horiz-adv-x="1354" d="M703 1456q257 0 401 -100t144 -299q0 -101 -53.5 -180.5t-155.5 -119.5q131 -28 196.5 -120t65.5 -213q0 -209 -138 -316.5t-391 -107.5h-716v175l155 30v1045l-155 30v176h155h492zM503 644v-420h269q116 0 177 50.5t61 149.5q0 107 -52 163.5t-164 56.5h-291zM503 846 h210q117 0 180 48t63 140q0 101 -63.5 149t-189.5 48h-200v-385z" />
<glyph unicode="C" horiz-adv-x="1327" d="M1249 965h-217l-30 194q-43 43 -108.5 68t-154.5 25q-190 0 -292.5 -138t-102.5 -360v-51q0 -222 102 -361t288 -139q86 0 157.5 25t110.5 68l30 194h217v-288q-88 -102 -224.5 -162.5t-305.5 -60.5q-293 0 -480 203t-187 521v49q0 317 186 521t481 204q169 0 305 -61.5 t225 -162.5v-288z" />
<glyph unicode="D" horiz-adv-x="1411" d="M711 1456q267 0 440 -170.5t173 -437.5v-241q0 -268 -173 -437.5t-440 -169.5h-655v175l155 30v1045l-155 30v176h155h500zM503 1231v-1007h193q157 0 246 106t89 277v243q0 169 -89 275t-246 106h-193z" />
<glyph unicode="E" horiz-adv-x="1308" d="M996 640h-493v-416h470l13 174h222v-398h-1152v175l155 30v1045l-155 30v176h155h995v-399h-224l-13 174h-466v-366h493v-225z" />
<glyph unicode="F" horiz-adv-x="1265" d="M56 175l155 30v1045l-155 30v176h1159v-399h-224l-13 174h-475v-401h510v-225h-510v-400l156 -30v-175h-603v175z" />
<glyph unicode="G" horiz-adv-x="1353" d="M1263 162q-71 -70 -207 -126.5t-344 -56.5q-295 0 -480 197.5t-185 513.5v50q0 327 182.5 532t476.5 205q171 0 312.5 -54.5t235.5 -147.5v-293h-216l-41 195q-40 34 -105.5 54.5t-150.5 20.5q-191 0 -297 -141t-106 -369v-52q0 -222 104 -354.5t300 -132.5 q88 0 142.5 15t85.5 35v247l-208 16v205h501v-559z" />
<glyph unicode="H" horiz-adv-x="1601" d="M56 1280v176h603v-176l-156 -30v-420h594v420l-156 30v176h156h291h156v-176l-156 -30v-1045l156 -30v-175h-603v175l156 30v400h-594v-400l156 -30v-175h-603v175l155 30v1045z" />
<glyph unicode="I" horiz-adv-x="713" d="M55 1280v176h603v-176l-156 -30v-1045l156 -30v-175h-603v175l156 30v1045z" />
<glyph unicode="J" horiz-adv-x="1192" d="M1165 1456v-176l-156 -30v-813q0 -211 -137.5 -334.5t-347.5 -123.5q-228 0 -361 111t-128 327l2 6h284q0 -115 55 -167.5t148 -52.5q81 0 137.5 62.5t56.5 171.5v813l-156 30v176h447h156z" />
<glyph unicode="K" horiz-adv-x="1464" d="M56 175l155 30v1045l-155 30v176h595v-176l-148 -30v-389h127l280 407l-86 12v176h577v-176l-158 -27l-358 -478l402 -575l146 -25v-175h-577v175l90 12l-280 421h-163v-403l148 -30v-175h-595v175z" />
<glyph unicode="L" horiz-adv-x="1200" d="M56 0v175l155 30v1045l-155 30v176h155h292h156v-176l-156 -30v-1026h411l14 183h223v-407h-1095z" />
<glyph unicode="M" horiz-adv-x="1929" d="M1461 1077l-6 1l-390 -1078h-196l-388 1074l-6 -1l28 -639v-229l156 -30v-175h-603v175l155 30v1045l-155 30v176h155h381l371 -1073h6l374 1073h538v-176l-156 -30v-1045l156 -30v-175h-603v175l155 30v229z" />
<glyph unicode="N" horiz-adv-x="1582" d="M1544 1456v-176l-156 -30v-1250h-291l-588 980l-6 -1v-774l156 -30v-175h-603v175l155 30v1045l-155 30v176h155h292l588 -980l6 1v773l-156 30v176h447h156z" />
<glyph unicode="O" horiz-adv-x="1448" d="M1387 717q0 -320 -183 -529t-479 -209q-295 0 -476.5 209t-181.5 529v22q0 318 181 528t476 210q296 0 479.5 -210t183.5 -528v-22zM1096 741q0 226 -94 367t-278 141t-274.5 -140t-90.5 -368v-24q0 -230 91.5 -370.5t274.5 -140.5q185 0 278 140.5t93 370.5v24z" />
<glyph unicode="P" horiz-adv-x="1325" d="M749 1456q250 0 394.5 -128.5t144.5 -336.5q0 -209 -144.5 -336t-394.5 -127h-246v-323l156 -30v-175h-603v175l155 30v1045l-155 30v176h155h538zM503 753h246q122 0 184.5 66.5t62.5 169.5q0 105 -62.5 173.5t-184.5 68.5h-246v-478z" />
<glyph unicode="Q" horiz-adv-x="1449" d="M1387 717q0 -190 -68.5 -347t-191.5 -256l310 -193l-206 -159l-349 235q-39 -8 -78.5 -13t-78.5 -5q-295 0 -476.5 209t-181.5 529v22q0 318 181 528t476 210q296 0 479.5 -210t183.5 -528v-22zM1096 741q0 226 -94 367t-278 141t-274.5 -140t-90.5 -368v-24 q0 -230 91.5 -370.5t274.5 -140.5q185 0 278 140.5t93 370.5v24z" />
<glyph unicode="R" horiz-adv-x="1408" d="M710 1456q248 0 389 -113.5t141 -313.5q0 -110 -59 -191t-173 -131q129 -38 185.5 -126.5t56.5 -219.5v-74q0 -48 19 -74.5t63 -31.5l36 -5v-176h-151q-143 0 -201 77t-58 199v83q0 106 -56.5 166.5t-159.5 63.5h-239v-384l156 -30v-175h-603v175l155 30v1045l-155 30 v176h155h499zM503 814h202q122 0 183 52t61 150t-60.5 156.5t-178.5 58.5h-207v-417z" />
<glyph unicode="S" horiz-adv-x="1242" d="M1162 991h-219l-38 200q-38 24 -111 42t-155 18q-120 0 -185.5 -50.5t-65.5 -130.5q0 -74 68.5 -121.5t236.5 -100.5q241 -67 365.5 -177t124.5 -289q0 -187 -148 -295t-390 -108q-173 0 -312.5 55t-232.5 152v304h226l31 -207q44 -36 119.5 -59.5t168.5 -23.5 q120 0 182.5 49t62.5 131q0 84 -59.5 135t-208.5 96q-259 75 -392 178t-133 282q0 177 150 289.5t377 115.5q168 0 306 -51t232 -136v-298z" />
<glyph unicode="T" horiz-adv-x="1377" d="M1338 1456v-388h-224l-12 163h-268v-1026l156 -30v-175h-604v175l156 30v1026h-267l-12 -163h-223v388h1298z" />
<glyph unicode="U" horiz-adv-x="1547" d="M642 1456v-176l-156 -30v-760q0 -144 77.5 -215.5t212.5 -71.5q137 0 215 71t78 216v760l-155 30v176h603v-176l-156 -30v-760q0 -245 -161.5 -378t-423.5 -133q-261 0 -421.5 133t-160.5 378v760l-155 30v176h155h292h156z" />
<glyph unicode="V" horiz-adv-x="1468" d="M566 1280l-111 -20l258 -873l18 -80h6l17 78l259 875l-110 20v176h532v-176l-122 -16l-429 -1264h-300l-430 1264l-120 16v176h532v-176z" />
<glyph unicode="W" horiz-adv-x="1972" d="M1942 1280l-120 -15l-295 -1265h-271l-267 961h-6l-267 -961h-271l-297 1265l-119 15v176h536v-176l-133 -23l167 -798l6 -1l273 998h215l275 -998l6 1l166 798l-133 23v176h535v-176z" />
<glyph unicode="X" horiz-adv-x="1438" d="M33 175l123 24l385 535l-375 521l-122 25v176h559v-176l-119 -13l225 -357l226 357l-117 13v176h561v-176l-122 -25l-375 -521l393 -534l129 -25v-175h-573v175l116 12l-234 368l-235 -368l117 -12v-175h-562v175z" />
<glyph unicode="Y" horiz-adv-x="1398" d="M587 1280l-119 -17l226 -478h6l226 478l-118 17v176h551v-176l-124 -20l-396 -748v-307l156 -30v-175h-603v175l156 30v322l-389 733l-123 20v176h551v-176z" />
<glyph unicode="Z" horiz-adv-x="1226" d="M1143 1456v-146l-713 -1086h507l24 176h222l-22 -400h-1087v152l710 1079h-463l-23 -176h-223l22 401h1046z" />
<glyph unicode="[" horiz-adv-x="578" d="M572 1475h-141v-1595h141v-216h-433v2027h433v-216z" />
<glyph unicode="\" horiz-adv-x="854" d="M12 1456h288l608 -1581h-288z" />
<glyph unicode="]" horiz-adv-x="569" d="M11 1691h434v-2027h-434v216h143v1595h-143v216z" />
<glyph unicode="^" horiz-adv-x="884" d="M276 729h-231l299 727h212l299 -727h-231l-165 413l-8 34h-6l-7 -34z" />
<glyph unicode="_" horiz-adv-x="1094" d="M1002 -186h-910v186h910v-186z" />
<glyph unicode="`" horiz-adv-x="622" d="M572 1212h-236l-272 260l2 6h310z" />
<glyph unicode="a" horiz-adv-x="1125" d="M752 0q-12 27 -21 55.5t-14 57.5q-52 -60 -126.5 -97t-170.5 -37q-159 0 -252.5 86.5t-93.5 235.5q0 152 122 235t358 83h149v106q0 78 -45 121t-133 43q-50 0 -89 -11.5t-63 -27.5l-19 -116h-220l1 240q80 54 183.5 91t225.5 37q201 0 326.5 -98.5t125.5 -280.5v-447 q0 -25 0.5 -47t3.5 -42l89 -12v-175h-337zM499 195q66 0 120 28.5t84 71.5v165h-149q-93 0 -141 -43.5t-48 -104.5q0 -55 35.5 -86t98.5 -31z" />
<glyph unicode="b" horiz-adv-x="1181" d="M1109 511q0 -242 -108 -387t-312 -145q-95 0 -165 39.5t-118 114.5l-21 -133h-252v1354l-155 30v176h446v-593q47 65 112.5 100t150.5 35q206 0 314 -155.5t108 -414.5v-21zM818 532q0 158 -46.5 250.5t-158.5 92.5q-68 0 -115 -28.5t-74 -81.5v-457q27 -50 74.5 -76 t116.5 -26q113 0 158 79.5t45 225.5v21z" />
<glyph unicode="c" horiz-adv-x="1079" d="M571 203q78 0 125 45.5t47 121.5h264l3 -6q4 -164 -123 -274.5t-316 -110.5q-242 0 -373 153t-131 393v30q0 239 134.5 393t383.5 154q131 0 235 -39t173 -110l4 -289h-237l-48 169q-22 19 -54 31.5t-73 12.5q-124 0 -175 -90t-51 -232v-30q0 -145 47 -233.5t165 -88.5z " />
<glyph unicode="d" horiz-adv-x="1212" d="M767 132q-51 -75 -120.5 -114t-158.5 -39q-200 0 -310.5 146t-110.5 386v21q0 256 111 413t312 157q81 0 146 -35.5t114 -100.5v388l-156 30v176h156h292v-1355l140 -30v-175h-393zM359 511q0 -142 47.5 -223.5t155.5 -81.5q64 0 111 26t77 75v459q-30 52 -76.5 80.5 t-109.5 28.5q-107 0 -156 -95t-49 -248v-21z" />
<glyph unicode="e" horiz-adv-x="1091" d="M581 -21q-234 0 -374 150t-140 381v40q0 241 132.5 397t355.5 155q219 0 340 -132t121 -357v-159h-646l-2 -6q8 -107 71.5 -176t172.5 -69q97 0 161 19.5t140 61.5l79 -180q-67 -53 -173.5 -89t-237.5 -36zM555 877q-81 0 -128 -62t-58 -163l3 -5h358v26 q0 93 -43.5 148.5t-131.5 55.5z" />
<glyph unicode="f" horiz-adv-x="762" d="M79 175l141 30v672h-161v205h161v120q0 182 105 280.5t295 98.5q37 0 75.5 -5.5t84.5 -15.5l-25 -217q-24 4 -46.5 7t-52.5 3q-71 0 -107.5 -39t-36.5 -112v-120h215v-205h-215v-672l141 -30v-175h-574v175z" />
<glyph unicode="g" horiz-adv-x="1170" d="M81 532q0 256 111.5 413t312.5 157q91 0 160 -40.5t118 -115.5l21 136h254v-1050q0 -214 -134.5 -341.5t-369.5 -127.5q-82 0 -174 22.5t-170 61.5l54 205q70 -30 140 -47.5t148 -17.5q107 0 160 65t53 181v71q-48 -61 -113 -93t-149 -32q-199 0 -310.5 146.5 t-111.5 385.5v21zM373 511q0 -142 48 -223.5t156 -81.5q67 0 113.5 24.5t74.5 71.5v470q-28 49 -74.5 76t-111.5 27q-107 0 -156.5 -95t-49.5 -248v-21z" />
<glyph unicode="h" horiz-adv-x="1302" d="M47 175l141 30v1149l-156 30v176h447v-616q51 75 125 116.5t164 41.5q170 0 266.5 -112.5t96.5 -347.5v-437l140 -30v-175h-558v175l126 30v439q0 126 -44.5 178.5t-132.5 52.5q-61 0 -106.5 -22t-76.5 -62v-586l126 -30v-175h-558v175z" />
<glyph unicode="i" horiz-adv-x="660" d="M54 175l141 30v671l-156 30v176h448v-877l140 -30v-175h-573v175zM487 1341h-292v219h292v-219z" />
<glyph unicode="j" horiz-adv-x="599" d="M492 -40q0 -190 -101 -293.5t-280 -103.5q-41 0 -74.5 4t-69.5 13l14 223q22 -6 45 -9t50 -3q59 0 91.5 41.5t32.5 127.5v916l-156 30v176h448v-1122zM486 1343h-292v217h292v-217z" />
<glyph unicode="k" horiz-adv-x="1249" d="M32 1384v176h447v-904h65l168 237l-95 13v176h532v-176l-128 -29l-195 -268l273 -411l111 -23v-175h-500v175l60 10l-166 268h-125v-248l126 -30v-175h-558v175l141 30v1149z" />
<glyph unicode="l" horiz-adv-x="653" d="M32 1384v176h448v-1355l141 -30v-175h-574v175l141 30v1149z" />
<glyph unicode="m" horiz-adv-x="1905" d="M29 906v176h427l12 -143q52 78 130.5 120.5t181.5 42.5q104 0 178 -46t112 -139q50 87 130 136t188 49q160 0 252.5 -110.5t92.5 -336.5v-450l141 -30v-175h-559v175l126 30v451q0 123 -40 171t-119 48q-62 0 -107.5 -27.5t-72.5 -76.5q0 -19 1 -32.5t1 -27.5v-506 l118 -30v-175h-527v175l118 30v451q0 120 -40 169.5t-120 49.5q-59 0 -103.5 -22.5t-73.5 -63.5v-584l126 -30v-175h-558v175l141 30v671z" />
<glyph unicode="n" horiz-adv-x="1300" d="M47 175l140 30v671l-155 30v176h427l13 -155q54 83 133 129t177 46q164 0 256 -103t92 -323v-471l140 -30v-175h-558v175l125 30v470q0 109 -44 154.5t-133 45.5q-58 0 -104 -23.5t-77 -66.5v-580l118 -30v-175h-550v175z" />
<glyph unicode="o" horiz-adv-x="1148" d="M63 551q0 242 135.5 396.5t374.5 154.5q240 0 375.5 -154t135.5 -397v-21q0 -244 -135.5 -397.5t-373.5 -153.5q-241 0 -376.5 153.5t-135.5 397.5v21zM355 530q0 -148 52 -237.5t168 -89.5q113 0 165.5 90t52.5 237v21q0 144 -53 235t-167 91t-166 -91t-52 -235v-21z " />
<glyph unicode="p" horiz-adv-x="1240" d="M41 906v176h424l14 -126q48 70 115 108t156 38q201 0 312 -157t111 -413v-21q0 -240 -111 -386t-310 -146q-85 0 -151 31.5t-113 92.5v-313l141 -30v-176h-573v176l141 30v1086zM881 532q0 153 -51 248t-156 95q-66 0 -112.5 -27t-73.5 -77v-474q27 -46 73.5 -70 t114.5 -24q106 0 155.5 83t49.5 225v21z" />
<glyph unicode="q" horiz-adv-x="1154" d="M67 532q0 256 111 413t312 157q88 0 156 -39t117 -111l23 130h253v-1292l141 -30v-176h-574v176l141 30v310q-48 -60 -112.5 -90.5t-146.5 -30.5q-200 0 -310.5 146t-110.5 386v21zM359 511q0 -143 47.5 -225.5t155.5 -82.5q64 0 110 23.5t75 69.5v481q-29 48 -74.5 74 t-108.5 26q-107 0 -156 -95.5t-49 -249.5v-21z" />
<glyph unicode="r" horiz-adv-x="862" d="M85 175l140 30v671l-155 30v176h427l13 -158q38 84 98 131t139 47q23 0 48.5 -3.5t42.5 -8.5l-31 -266l-120 3q-64 0 -106 -25t-64 -71v-526l140 -30v-175h-572v175z" />
<glyph unicode="s" horiz-adv-x="1054" d="M946 710h-196l-31 135q-30 24 -75.5 40t-100.5 16q-77 0 -122 -34.5t-45 -86.5q0 -49 43 -81.5t172 -57.5q201 -40 298 -117.5t97 -213.5q0 -146 -125.5 -238.5t-330.5 -92.5q-125 0 -229.5 36.5t-185.5 104.5l-3 243h204l40 -141q26 -22 71 -32.5t94 -10.5 q89 0 135.5 32t46.5 87q0 48 -47 83t-173 62q-191 39 -288.5 115.5t-97.5 208.5q0 136 112 234.5t319 98.5q126 0 238.5 -34t176.5 -87z" />
<glyph unicode="t" horiz-adv-x="764" d="M494 1347v-265h190v-205h-190v-551q0 -63 26 -90t70 -27q30 0 52.5 2.5t50.5 8.5l25 -211q-49 -15 -97 -22.5t-104 -7.5q-151 0 -232.5 83t-81.5 263v552h-159v205h159v265h291z" />
<glyph unicode="u" horiz-adv-x="1278" d="M820 137q-52 -76 -128.5 -117t-174.5 -41q-171 0 -268 109.5t-97 340.5v447l-119 30v176h119h292v-655q0 -118 39.5 -169.5t117.5 -51.5q69 0 119.5 22.5t82.5 64.5v583l-128 30v176h128h292v-877l131 -30v-175h-387z" />
<glyph unicode="v" horiz-adv-x="1167" d="M522 906l-102 -19l143 -484l19 -102h6l21 102l141 483l-104 20v176h491v-176l-94 -15l-319 -891h-279l-320 891l-94 15v176h491v-176z" />
<glyph unicode="w" horiz-adv-x="1642" d="M1605 906l-109 -14l-226 -892h-244l-201 644h-6l-201 -644h-243l-227 892l-109 14v176h490v-176l-115 -22l102 -495h6l202 693h196l204 -695h6l101 496l-116 23v176h490v-176z" />
<glyph unicode="x" horiz-adv-x="1191" d="M32 175l101 16l294 356l-284 342l-101 17v176h487v-169l-99 -12l164 -208l161 208l-101 12v169h489v-176l-98 -17l-278 -342l293 -356l102 -16v-175h-495v168l99 12l-168 218l-171 -219l87 -11v-168h-482v175z" />
<glyph unicode="y" horiz-adv-x="1212" d="M1183 906l-101 -15l-398 -1053q-47 -117 -125.5 -196t-236.5 -79q-37 0 -69.5 6t-76.5 17l34 213q14 -2 29 -4t26 -2q73 0 112 35.5t60 88.5l33 82l-343 891l-101 16v176h530v-176l-121 -20l148 -432l15 -78l6 -1l171 511l-122 20v176h530v-176z" />
<glyph unicode="z" horiz-adv-x="1070" d="M450 224h302l12 144h223v-368h-899v172l515 684h-265l-11 -143h-224v369h866v-167z" />
<glyph unicode="{" horiz-adv-x="654" d="M577 -360q-195 55 -277.5 175t-82.5 291v203q0 99 -43.5 154t-134.5 55v201q91 0 134.5 54.5t43.5 155.5v203q0 171 82.5 290.5t277.5 174.5l56 -157q-86 -31 -120.5 -110.5t-34.5 -197.5v-203q0 -104 -45 -184.5t-135 -125.5q90 -47 135 -127.5t45 -182.5v-203 q0 -118 34.5 -197.5t120.5 -110.5z" />
<glyph unicode="|" horiz-adv-x="428" d="M307 -270h-175v1726h175v-1726z" />
<glyph unicode="}" horiz-adv-x="651" d="M11 -202q84 31 119 110.5t35 197.5v203q0 104 46 184t140 125q-94 45 -140 125.5t-46 185.5v203q0 118 -35 197.5t-119 110.5l56 157q194 -55 277 -174.5t83 -290.5v-203q0 -101 43 -155.5t134 -54.5v-201q-91 0 -134 -55t-43 -154v-203q0 -171 -83 -291t-277 -175z" />
<glyph unicode="~" horiz-adv-x="1323" d="M1214 758q0 -161 -88.5 -270.5t-223.5 -109.5q-85 0 -157 31.5t-150 101.5q-50 44 -88 64t-82 20q-52 0 -88 -51t-36 -122l-201 26q0 162 86.5 269.5t223.5 107.5q83 0 158.5 -33.5t150.5 -99.5q49 -45 87 -64.5t81 -19.5q51 0 88 52t37 125z" />
<glyph unicode="&#xa1;" horiz-adv-x="524" d="M423 -374h-293v953h293v-953zM423 825h-293v257h293v-257z" />
<glyph unicode="&#xa2;" horiz-adv-x="1092" d="M584 203q78 0 125 45.5t47 121.5h265l3 -6q3 -144 -98 -249.5t-259 -128.5v-231h-200v235q-188 36 -287.5 181.5t-99.5 353.5v30q0 203 100 348.5t287 185.5v229h200v-219q107 -10 193 -47.5t146 -98.5l4 -289h-237l-48 169q-22 19 -54 31.5t-73 12.5q-124 0 -175 -90 t-51 -232v-30q0 -145 47 -233.5t165 -88.5z" />
<glyph unicode="&#xa3;" horiz-adv-x="1177" d="M515 588l4 -85q0 -78 -30 -150t-86 -129h479l12 144h223v-368h-997v224h10q47 12 70.5 94.5t23.5 171.5l-4 98h-163v225h155l-8 214q0 210 120.5 330t322.5 120q215 0 333.5 -111.5t114.5 -294.5l-2 -6h-285q0 96 -46 141.5t-116 45.5q-71 0 -111 -59t-40 -166l10 -214 h356v-225h-346z" />
<glyph unicode="&#xa4;" horiz-adv-x="1432" d="M1074 107q-77 -61 -169.5 -94t-192.5 -33q-101 0 -193 32.5t-167 93.5l-129 -132l-141 144l135 137q-49 76 -74.5 165.5t-25.5 187.5q0 101 28 193.5t81 171.5l-144 147l141 144l142 -145q74 55 162 85t185 30q96 0 185 -30.5t164 -86.5l145 148l142 -145l-148 -151 q51 -78 79 -169.5t28 -191.5q0 -97 -25.5 -185.5t-72.5 -163.5l139 -141l-142 -145zM302 608q0 -184 119.5 -311.5t290.5 -127.5q170 0 289.5 127t119.5 312q0 183 -119.5 310t-289.5 127q-171 0 -290.5 -127t-119.5 -310z" />
<glyph unicode="&#xa5;" horiz-adv-x="1401" d="M1369 1280l-166 -22l-276 -516h244v-165h-324v-125h324v-164h-324v-83l140 -30v-175h-587v175l155 30v83h-339v164h339v125h-339v165h267l-276 516l-166 22v176h536v-176l-68 -13l193 -418h6l193 418l-68 13v176h536v-176z" />
<glyph unicode="&#xa6;" horiz-adv-x="513" d="M134 -270v795h261v-795h-261zM395 698h-261v758h261v-758z" />
<glyph unicode="&#xa7;" horiz-adv-x="1243" d="M1172 475q0 -91 -42 -159t-121 -111q68 -51 102.5 -121.5t34.5 -167.5q0 -177 -140.5 -277t-377.5 -100q-232 0 -387 99.5t-150 317.5l2 6l282 1q0 -106 72.5 -152t180.5 -46q107 0 166.5 41.5t59.5 108.5t-60.5 107.5t-229.5 90.5q-245 64 -362 157.5t-117 265.5 q0 88 42 157t122 114q-69 50 -103.5 120.5t-34.5 168.5q0 172 141.5 276.5t378.5 104.5q244 0 381 -111t132 -311l-2 -6h-282q0 88 -60.5 145.5t-168.5 57.5q-114 0 -170.5 -43.5t-56.5 -110.5q0 -75 55.5 -113.5t231.5 -86.5q247 -64 364 -157.5t117 -265.5zM591 663 q-40 10 -74 21t-65 22q-38 -22 -56.5 -59t-18.5 -85q0 -81 55 -122t232 -93q34 -10 68.5 -20t69.5 -21q39 22 60.5 59t21.5 85q0 71 -62 116t-231 97z" />
<glyph unicode="&#xa8;" horiz-adv-x="1031" d="M911 1252h-267v204h267v-204zM411 1252h-267v204h267v-204z" />
<glyph unicode="&#xa9;" horiz-adv-x="1566" d="M1097 596l2 -6q4 -151 -84 -229.5t-245 -78.5q-160 0 -254.5 106t-94.5 281v119q0 173 94.5 280t254.5 107q157 0 245.5 -79.5t84.5 -228.5l-2 -6h-148q0 94 -45 136.5t-135 42.5q-94 0 -144 -69t-50 -182v-120q0 -115 50 -183.5t144 -68.5q90 0 134.5 41.5t44.5 137.5 h148zM196 729q0 -264 171.5 -444.5t416.5 -180.5q244 0 415.5 180.5t171.5 444.5q0 263 -171.5 442.5t-415.5 179.5q-246 0 -417 -179.5t-171 -442.5zM74 729q0 315 207 531t503 216q295 0 502.5 -216t207.5 -531q0 -316 -208 -533t-502 -217q-296 0 -503 217t-207 533z" />
<glyph unicode="&#xaa;" horiz-adv-x="867" d="M586 706q-8 21 -13 44.5t-8 49.5q-33 -47 -88.5 -77.5t-133.5 -30.5q-119 0 -184 61t-65 167q0 111 84.5 171t246.5 60h137v51q0 62 -29.5 94.5t-86.5 32.5q-66 0 -102 -26t-36 -73l-165 13l-1 6q-6 98 79 163t225 65q134 0 212.5 -71t78.5 -205v-314q0 -51 6 -95t20 -86 h-177zM386 836q51 0 105 30t71 65v103h-136q-74 0 -115.5 -32t-41.5 -78q0 -43 29 -65.5t88 -22.5z" />
<glyph unicode="&#xab;" horiz-adv-x="953" d="M4 116zM231 515l240 -399h-187l-280 390v19l280 390h187zM626 515l240 -399h-187l-280 390v19l280 390h187z" />
<glyph unicode="&#xac;" horiz-adv-x="1098" d="M949 374h-200v260h-635v171h835v-431z" />
<glyph unicode="&#xad;" horiz-adv-x="815" d="M131 510zM695 510h-564v225h564v-225z" />
<glyph unicode="&#xae;" horiz-adv-x="1566" d="M74 729q0 315 207 531t503 216q295 0 502.5 -216t207.5 -531q0 -316 -208 -533t-502 -217q-296 0 -503 217t-207 533zM196 729q0 -264 171.5 -444.5t416.5 -180.5q244 0 415.5 180.5t171.5 444.5q0 263 -171.5 442.5t-415.5 179.5q-246 0 -417 -179.5t-171 -442.5z M640 653v-337h-151v850h281q151 0 238 -68t87 -194q0 -58 -29 -101.5t-85 -74.5q58 -30 84.5 -84.5t26.5 -128.5v-56q0 -41 3.5 -73.5t13.5 -53.5v-16h-155q-9 21 -11 61.5t-2 82.5v54q0 71 -33.5 105t-109.5 34h-158zM640 787h136q71 0 120 30t49 86q0 72 -39 101t-136 29 h-130v-246z" />
<glyph unicode="&#xaf;" horiz-adv-x="1008" d="M877 1292h-731v165h731v-165z" />
<glyph unicode="&#xb0;" horiz-adv-x="745" d="M106 1203q0 112 80 193t192 81q110 0 189 -81t79 -193q0 -114 -78.5 -192.5t-189.5 -78.5q-113 0 -192.5 79t-79.5 192zM253 1203q0 -53 36.5 -88.5t88.5 -35.5t87 35t35 89t-35.5 91t-86.5 37q-52 0 -88.5 -37t-36.5 -91z" />
<glyph unicode="&#xb1;" horiz-adv-x="1040" d="M655 947h327v-232h-327v-383h-256v383h-333v232h333v363h256v-363zM953 1h-834v228h834v-228z" />
<glyph unicode="&#xb2;" horiz-adv-x="823" d="M729 667h-623v155l310 252q60 50 77.5 83.5t17.5 74.5q0 39 -23.5 65.5t-72.5 26.5q-55 0 -83 -30t-28 -77h-201l-2 6q-6 106 82.5 181t236.5 75q144 0 222.5 -65t78.5 -183q0 -82 -53.5 -144.5t-177.5 -165.5l-109 -93l2 -6h346v-155z" />
<glyph unicode="&#xb3;" horiz-adv-x="833" d="M401 1139q62 0 91.5 24.5t29.5 70.5q0 38 -28 63.5t-84 25.5q-51 0 -79 -22t-28 -53h-200l-2 6q-6 101 82 162.5t222 61.5q151 0 239.5 -59.5t88.5 -169.5q0 -55 -35.5 -100.5t-96.5 -70.5q71 -24 108.5 -71.5t37.5 -115.5q0 -112 -89.5 -174t-242.5 -62 q-145 0 -239 62.5t-88 175.5l2 6h200q0 -42 31.5 -65.5t91.5 -23.5q56 0 90 24t34 68q0 50 -35 77t-101 27h-112v133h112z" />
<glyph unicode="&#xb4;" horiz-adv-x="644" d="M281 1478h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xb5;" horiz-adv-x="1347" d="M899 68q-44 -44 -100.5 -66.5t-124.5 -22.5q-51 0 -94 10.5t-78 32.5v-438h-291v1292l-156 30v176h156h291v-620q0 -149 44.5 -202.5t134.5 -53.5q76 0 126 27.5t78 80.5v562l-156 30v176h447v-877l141 -30v-175h-412z" />
<glyph unicode="&#xb6;" horiz-adv-x="1127" d="M473 175l156 30v315h-83q-233 0 -362.5 129.5t-129.5 338.5q0 207 129.5 337.5t362.5 130.5h375v-1251l155 -30v-175h-603v175zM1076 1456v-176l-155 -30v206h155z" />
<glyph unicode="&#xb7;" horiz-adv-x="553" d="M437 568h-292v260h292v-260z" />
<glyph unicode="&#xb8;" horiz-adv-x="500" d="M333 6l-11 -57q64 -11 107 -52t43 -121q0 -107 -91.5 -171t-259.5 -64l-7 161q51 0 81 20.5t30 62.5q0 41 -32 57.5t-110 21.5l31 142h219z" />
<glyph unicode="&#xb9;" horiz-adv-x="536" d="M439 665h-210v630h-127v159l337 23v-812z" />
<glyph unicode="&#xba;" horiz-adv-x="914" d="M109 1142q0 148 94 241.5t252 93.5t252.5 -93.5t94.5 -241.5v-117q0 -149 -94 -241.5t-251 -92.5q-159 0 -253.5 92.5t-94.5 241.5v117zM284 1025q0 -85 44 -136.5t129 -51.5q82 0 126 51.5t44 136.5v117q0 83 -44.5 135t-127.5 52q-84 0 -127.5 -52t-43.5 -135v-117z " />
<glyph unicode="&#xbb;" horiz-adv-x="973" d="M64 151zM251 950l280 -390v-19l-280 -390h-187l239 399l-239 400h187zM657 950l280 -390v-19l-280 -390h-187l239 399l-239 400h187z" />
<glyph unicode="&#xbc;" horiz-adv-x="1413" d="M117 0zM454 664h-210v630h-127v159l337 23v-812zM382 117l-142 75l711 1138l142 -75zM1338 296h101v-157h-101v-139h-211v139h-410l-13 126l423 534v2h211v-505zM919 296h208v257l-6 2l-13 -20z" />
<glyph unicode="&#xbd;" horiz-adv-x="1457" d="M102 0zM380 117l-142 75l711 1138l142 -75zM439 664h-210v630h-127v159l337 23v-812zM1452 0h-623v155l310 252q60 50 77.5 83.5t17.5 74.5q0 39 -23.5 65.5t-72.5 26.5q-55 0 -83 -30t-28 -77h-201l-2 6q-6 106 82.5 181t236.5 75q144 0 222.5 -65t78.5 -183 q0 -82 -53.5 -144.5t-177.5 -165.5l-109 -93l2 -6h346v-155z" />
<glyph unicode="&#xbe;" horiz-adv-x="1635" d="M73 0zM598 117l-142 75l711 1138l142 -75zM1525 296h101v-157h-101v-139h-211v139h-410l-13 126l423 534v2h211v-505zM1106 296h208v257l-6 2l-13 -20zM392 1140q62 0 91.5 24.5t29.5 70.5q0 38 -28 63.5t-84 25.5q-51 0 -79 -22t-28 -53h-200l-2 6q-6 101 82 162.5 t222 61.5q151 0 239.5 -59.5t88.5 -169.5q0 -55 -35.5 -100.5t-96.5 -70.5q71 -24 108.5 -71.5t37.5 -115.5q0 -112 -89.5 -174t-242.5 -62q-145 0 -239 62.5t-88 175.5l2 6h200q0 -42 31.5 -65.5t91.5 -23.5q56 0 90 24t34 68q0 50 -35 77t-101 27h-112v133h112z" />
<glyph unicode="&#xbf;" horiz-adv-x="945" d="M696 668q-2 -141 -42.5 -206.5t-159.5 -157.5q-72 -58 -114.5 -125.5t-42.5 -149.5q0 -90 48.5 -142t139.5 -52q73 0 124 43t54 128h283l2 -6q2 -191 -127.5 -292.5t-335.5 -101.5q-226 0 -353 113t-127 308q0 125 74 233t187 183q60 45 79.5 92.5t19.5 132.5h291z M403 1082h294v-251h-294v251z" />
<glyph unicode="&#xc0;" d="M41 0zM41 175l104 15l443 1266h299l440 -1266l104 -15v-175h-496v175l101 18l-64 200h-472l-64 -200l101 -18v-175h-496v175zM569 608h334l-164 513h-6zM884 1568h-236l-272 260l2 6h310z" />
<glyph unicode="&#xc1;" d="M41 0zM41 175l104 15l443 1266h299l440 -1266l104 -15v-175h-496v175l101 18l-64 200h-472l-64 -200l101 -18v-175h-496v175zM569 608h334l-164 513h-6zM754 1826h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xc2;" d="M41 0zM41 175l104 15l443 1266h299l440 -1266l104 -15v-175h-496v175l101 18l-64 200h-472l-64 -200l101 -18v-175h-496v175zM569 608h334l-164 513h-6zM1102 1604v-23h-217l-155 146l-154 -146h-212v26l282 240h169z" />
<glyph unicode="&#xc3;" d="M41 0zM41 175l104 15l443 1266h299l440 -1266l104 -15v-175h-496v175l101 18l-64 200h-472l-64 -200l101 -18v-175h-496v175zM569 608h334l-164 513h-6zM1095 1836q0 -96 -59.5 -163.5t-150.5 -67.5q-70 0 -158.5 43.5t-140.5 43.5q-36 0 -60.5 -32.5t-24.5 -77.5 l-155 42q0 94 59.5 163.5t149.5 69.5q56 0 151.5 -43.5t147.5 -43.5q35 0 60.5 32t25.5 79z" />
<glyph unicode="&#xc4;" d="M41 0zM41 175l104 15l443 1266h299l440 -1266l104 -15v-175h-496v175l101 18l-64 200h-472l-64 -200l101 -18v-175h-496v175zM569 608h334l-164 513h-6zM1101 1601h-267v204h267v-204zM601 1601h-267v204h267v-204z" />
<glyph unicode="&#xc5;" d="M41 0zM41 175l104 15l443 1266h299l440 -1266l104 -15v-175h-496v175l101 18l-64 200h-472l-64 -200l101 -18v-175h-496v175zM569 608h334l-164 513h-6zM519 1745q0 83 61.5 139.5t151.5 56.5q88 0 148.5 -56.5t60.5 -139.5q0 -84 -60.5 -138t-148.5 -54q-91 0 -152 54 t-61 138zM634 1745q0 -43 28 -70.5t70 -27.5q41 0 67 27.5t26 70.5q0 44 -26 72t-67 28q-42 0 -70 -28.5t-28 -71.5z" />
<glyph unicode="&#xc6;" horiz-adv-x="2047" d="M66 175l136 20l678 1261h1017v-369h-223l-11 141h-362l16 -366h499v-227h-490l17 -408h381l12 141h222v-368h-1052v175l146 28l-6 151h-430l-83 -165l84 -14v-175h-551v175zM730 582h306l-23 554l-5 1z" />
<glyph unicode="&#xc7;" horiz-adv-x="1327" d="M52 0zM1249 965h-217l-30 194q-43 43 -108.5 68t-154.5 25q-190 0 -292.5 -138t-102.5 -360v-51q0 -222 102 -361t288 -139q86 0 157.5 25t110.5 68l30 194h217v-288q-88 -102 -224.5 -162.5t-305.5 -60.5q-293 0 -480 203t-187 521v49q0 317 186 521t481 204 q169 0 305 -61.5t225 -162.5v-288zM809 4l-11 -57q64 -11 107 -52t43 -121q0 -107 -91.5 -171t-259.5 -64l-7 161q51 0 81 20.5t30 62.5q0 41 -32 57.5t-110 21.5l31 142h219z" />
<glyph unicode="&#xc8;" horiz-adv-x="1308" d="M56 0zM996 640h-493v-416h470l13 174h222v-398h-1152v175l155 30v1045l-155 30v176h155h995v-399h-224l-13 174h-466v-366h493v-225zM795 1568h-236l-272 260l2 6h310z" />
<glyph unicode="&#xc9;" horiz-adv-x="1308" d="M56 0zM996 640h-493v-416h470l13 174h222v-398h-1152v175l155 30v1045l-155 30v176h155h995v-399h-224l-13 174h-466v-366h493v-225zM665 1826h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xca;" horiz-adv-x="1308" d="M56 0zM996 640h-493v-416h470l13 174h222v-398h-1152v175l155 30v1045l-155 30v176h155h995v-399h-224l-13 174h-466v-366h493v-225zM1013 1604v-23h-217l-155 146l-154 -146h-212v26l282 240h169z" />
<glyph unicode="&#xcb;" horiz-adv-x="1308" d="M56 0zM996 640h-493v-416h470l13 174h222v-398h-1152v175l155 30v1045l-155 30v176h155h995v-399h-224l-13 174h-466v-366h493v-225zM1012 1601h-267v204h267v-204zM512 1601h-267v204h267v-204z" />
<glyph unicode="&#xcc;" horiz-adv-x="713" d="M0 0zM55 1280v176h603v-176l-156 -30v-1045l156 -30v-175h-603v175l156 30v1045zM494 1567h-236l-272 260l2 6h310z" />
<glyph unicode="&#xcd;" horiz-adv-x="713" d="M55 0zM55 1280v176h603v-176l-156 -30v-1045l156 -30v-175h-603v175l156 30v1045zM363 1825h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xce;" horiz-adv-x="713" d="M0 0zM55 1280v176h603v-176l-156 -30v-1045l156 -30v-175h-603v175l156 30v1045zM712 1603v-23h-217l-155 146l-154 -146h-212v26l282 240h169z" />
<glyph unicode="&#xcf;" horiz-adv-x="713" d="M0 0zM55 1280v176h603v-176l-156 -30v-1045l156 -30v-175h-603v175l156 30v1045zM711 1600h-267v204h267v-204zM211 1600h-267v204h267v-204z" />
<glyph unicode="&#xd0;" horiz-adv-x="1441" d="M741 1456q267 0 440 -170.5t173 -437.5v-241q0 -268 -173 -437.5t-440 -169.5h-655v175l155 30v460h-195v155h195v430l-155 30v176h655zM747 665h-214v-441h193q157 0 246 106t89 277v243q0 169 -89 275t-246 106h-193v-411h214v-155z" />
<glyph unicode="&#xd1;" horiz-adv-x="1582" d="M56 0zM1544 1456v-176l-156 -30v-1250h-291l-588 980l-6 -1v-774l156 -30v-175h-603v175l155 30v1045l-155 30v176h155h292l588 -980l6 1v773l-156 30v176h447h156zM1150 1836q0 -96 -59.5 -163.5t-150.5 -67.5q-70 0 -158.5 43.5t-140.5 43.5q-36 0 -60.5 -32.5 t-24.5 -77.5l-155 42q0 94 59.5 163.5t149.5 69.5q56 0 151.5 -43.5t147.5 -43.5q35 0 60.5 32t25.5 79z" />
<glyph unicode="&#xd2;" horiz-adv-x="1448" d="M67 0zM1387 717q0 -320 -183 -529t-479 -209q-295 0 -476.5 209t-181.5 529v22q0 318 181 528t476 210q296 0 479.5 -210t183.5 -528v-22zM1096 741q0 226 -94 367t-278 141t-274.5 -140t-90.5 -368v-24q0 -230 91.5 -370.5t274.5 -140.5q185 0 278 140.5t93 370.5v24z M880 1567h-236l-272 260l2 6h310z" />
<glyph unicode="&#xd3;" horiz-adv-x="1448" d="M67 0zM1387 717q0 -320 -183 -529t-479 -209q-295 0 -476.5 209t-181.5 529v22q0 318 181 528t476 210q296 0 479.5 -210t183.5 -528v-22zM1096 741q0 226 -94 367t-278 141t-274.5 -140t-90.5 -368v-24q0 -230 91.5 -370.5t274.5 -140.5q185 0 278 140.5t93 370.5v24z M750 1825h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xd4;" horiz-adv-x="1448" d="M67 0zM1387 717q0 -320 -183 -529t-479 -209q-295 0 -476.5 209t-181.5 529v22q0 318 181 528t476 210q296 0 479.5 -210t183.5 -528v-22zM1096 741q0 226 -94 367t-278 141t-274.5 -140t-90.5 -368v-24q0 -230 91.5 -370.5t274.5 -140.5q185 0 278 140.5t93 370.5v24z M1098 1603v-23h-217l-155 146l-154 -146h-212v26l282 240h169z" />
<glyph unicode="&#xd5;" horiz-adv-x="1448" d="M67 0zM1387 717q0 -320 -183 -529t-479 -209q-295 0 -476.5 209t-181.5 529v22q0 318 181 528t476 210q296 0 479.5 -210t183.5 -528v-22zM1096 741q0 226 -94 367t-278 141t-274.5 -140t-90.5 -368v-24q0 -230 91.5 -370.5t274.5 -140.5q185 0 278 140.5t93 370.5v24z M1091 1835q0 -96 -59.5 -163.5t-150.5 -67.5q-70 0 -158.5 43.5t-140.5 43.5q-36 0 -60.5 -32.5t-24.5 -77.5l-155 42q0 94 59.5 163.5t149.5 69.5q56 0 151.5 -43.5t147.5 -43.5q35 0 60.5 32t25.5 79z" />
<glyph unicode="&#xd6;" horiz-adv-x="1448" d="M67 0zM1387 717q0 -320 -183 -529t-479 -209q-295 0 -476.5 209t-181.5 529v22q0 318 181 528t476 210q296 0 479.5 -210t183.5 -528v-22zM1096 741q0 226 -94 367t-278 141t-274.5 -140t-90.5 -368v-24q0 -230 91.5 -370.5t274.5 -140.5q185 0 278 140.5t93 370.5v24z M1097 1600h-267v204h267v-204zM597 1600h-267v204h267v-204z" />
<glyph unicode="&#xd7;" horiz-adv-x="1068" d="M61 371l309 315l-309 315l171 164l304 -310l304 310l171 -164l-309 -315l309 -315l-171 -164l-304 310l-304 -310z" />
<glyph unicode="&#xd8;" horiz-adv-x="1400" d="M1392 717q0 -320 -183 -529t-479 -209q-94 0 -178 22.5t-155 66.5l-95 -163h-144l139 239q-108 100 -166.5 248t-58.5 325v22q0 318 181 528t476 210q83 0 159 -18.5t144 -53.5l66 113h144l-106 -181q122 -101 189 -256.5t67 -341.5v-22zM1101 741q0 112 -24 206t-70 156 l-6 1l-482 -827q41 -35 93.5 -53t117.5 -18q185 0 278 140.5t93 370.5v24zM364 717q0 -100 17 -184.5t52 -143.5l6 -1l473 812q-39 23 -85 36t-98 13q-184 0 -274.5 -140t-90.5 -368v-24z" />
<glyph unicode="&#xd9;" horiz-adv-x="1547" d="M39 0zM642 1456v-176l-156 -30v-760q0 -144 77.5 -215.5t212.5 -71.5q137 0 215 71t78 216v760l-155 30v176h603v-176l-156 -30v-760q0 -245 -161.5 -378t-423.5 -133q-261 0 -421.5 133t-160.5 378v760l-155 30v176h155h292h156zM931 1568h-236l-272 260l2 6h310z" />
<glyph unicode="&#xda;" horiz-adv-x="1547" d="M39 0zM642 1456v-176l-156 -30v-760q0 -144 77.5 -215.5t212.5 -71.5q137 0 215 71t78 216v760l-155 30v176h603v-176l-156 -30v-760q0 -245 -161.5 -378t-423.5 -133q-261 0 -421.5 133t-160.5 378v760l-155 30v176h155h292h156zM801 1826h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xdb;" horiz-adv-x="1547" d="M39 0zM642 1456v-176l-156 -30v-760q0 -144 77.5 -215.5t212.5 -71.5q137 0 215 71t78 216v760l-155 30v176h603v-176l-156 -30v-760q0 -245 -161.5 -378t-423.5 -133q-261 0 -421.5 133t-160.5 378v760l-155 30v176h155h292h156zM1149 1604v-23h-217l-155 146l-154 -146 h-212v26l282 240h169z" />
<glyph unicode="&#xdc;" horiz-adv-x="1547" d="M39 0zM642 1456v-176l-156 -30v-760q0 -144 77.5 -215.5t212.5 -71.5q137 0 215 71t78 216v760l-155 30v176h603v-176l-156 -30v-760q0 -245 -161.5 -378t-423.5 -133q-261 0 -421.5 133t-160.5 378v760l-155 30v176h155h292h156zM1148 1601h-267v204h267v-204zM648 1601 h-267v204h267v-204z" />
<glyph unicode="&#xdd;" horiz-adv-x="1398" d="M36 0zM587 1280l-119 -17l226 -478h6l226 478l-118 17v176h551v-176l-124 -20l-396 -748v-307l156 -30v-175h-603v175l156 30v322l-389 733l-123 20v176h551v-176zM736 1826h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xde;" horiz-adv-x="1306" d="M67 175l156 30v1045l-156 30v176h448h156v-176l-156 -30v-64h221q254 0 396 -124t142 -324q0 -201 -142 -325t-396 -124h-221v-84l156 -30v-175h-604v175zM515 961v-447h221q123 0 184.5 63.5t61.5 158.5t-61.5 160t-184.5 65h-221z" />
<glyph unicode="&#xdf;" horiz-adv-x="1321" d="M486 0h-447v175l155 30v896q0 226 129 349t352 123q181 0 299.5 -95.5t118.5 -271.5q0 -108 -53 -205.5t-53 -165.5q0 -56 149.5 -197.5t149.5 -281.5q0 -189 -115 -283t-332 -94q-77 0 -151.5 15t-111.5 41l54 223q36 -22 89.5 -38.5t113.5 -16.5q76 0 119 38t43 103 q0 71 -150 205.5t-150 276.5q0 90 55 190t55 175q0 71 -39.5 114.5t-109.5 43.5q-76 0 -123 -67.5t-47 -184.5v-1097z" />
<glyph unicode="&#xe0;" horiz-adv-x="1125" d="M74 0zM752 0q-12 27 -21 55.5t-14 57.5q-52 -60 -126.5 -97t-170.5 -37q-159 0 -252.5 86.5t-93.5 235.5q0 152 122 235t358 83h149v106q0 78 -45 121t-133 43q-50 0 -89 -11.5t-63 -27.5l-19 -116h-220l1 240q80 54 183.5 91t225.5 37q201 0 326.5 -98.5t125.5 -280.5 v-447q0 -25 0.5 -47t3.5 -42l89 -12v-175h-337zM499 195q66 0 120 28.5t84 71.5v165h-149q-93 0 -141 -43.5t-48 -104.5q0 -55 35.5 -86t98.5 -31zM727 1244h-236l-272 260l2 6h310z" />
<glyph unicode="&#xe1;" horiz-adv-x="1125" d="M74 0zM752 0q-12 27 -21 55.5t-14 57.5q-52 -60 -126.5 -97t-170.5 -37q-159 0 -252.5 86.5t-93.5 235.5q0 152 122 235t358 83h149v106q0 78 -45 121t-133 43q-50 0 -89 -11.5t-63 -27.5l-19 -116h-220l1 240q80 54 183.5 91t225.5 37q201 0 326.5 -98.5t125.5 -280.5 v-447q0 -25 0.5 -47t3.5 -42l89 -12v-175h-337zM499 195q66 0 120 28.5t84 71.5v165h-149q-93 0 -141 -43.5t-48 -104.5q0 -55 35.5 -86t98.5 -31zM597 1502h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xe2;" horiz-adv-x="1125" d="M74 0zM752 0q-12 27 -21 55.5t-14 57.5q-52 -60 -126.5 -97t-170.5 -37q-159 0 -252.5 86.5t-93.5 235.5q0 152 122 235t358 83h149v106q0 78 -45 121t-133 43q-50 0 -89 -11.5t-63 -27.5l-19 -116h-220l1 240q80 54 183.5 91t225.5 37q201 0 326.5 -98.5t125.5 -280.5 v-447q0 -25 0.5 -47t3.5 -42l89 -12v-175h-337zM499 195q66 0 120 28.5t84 71.5v165h-149q-93 0 -141 -43.5t-48 -104.5q0 -55 35.5 -86t98.5 -31zM945 1280v-23h-217l-155 146l-154 -146h-212v26l282 240h169z" />
<glyph unicode="&#xe3;" horiz-adv-x="1125" d="M74 0zM752 0q-12 27 -21 55.5t-14 57.5q-52 -60 -126.5 -97t-170.5 -37q-159 0 -252.5 86.5t-93.5 235.5q0 152 122 235t358 83h149v106q0 78 -45 121t-133 43q-50 0 -89 -11.5t-63 -27.5l-19 -116h-220l1 240q80 54 183.5 91t225.5 37q201 0 326.5 -98.5t125.5 -280.5 v-447q0 -25 0.5 -47t3.5 -42l89 -12v-175h-337zM499 195q66 0 120 28.5t84 71.5v165h-149q-93 0 -141 -43.5t-48 -104.5q0 -55 35.5 -86t98.5 -31zM938 1512q0 -96 -59.5 -163.5t-150.5 -67.5q-70 0 -158.5 43.5t-140.5 43.5q-36 0 -60.5 -32.5t-24.5 -77.5l-155 42 q0 94 59.5 163.5t149.5 69.5q56 0 151.5 -43.5t147.5 -43.5q35 0 60.5 32t25.5 79z" />
<glyph unicode="&#xe4;" horiz-adv-x="1125" d="M74 0zM752 0q-12 27 -21 55.5t-14 57.5q-52 -60 -126.5 -97t-170.5 -37q-159 0 -252.5 86.5t-93.5 235.5q0 152 122 235t358 83h149v106q0 78 -45 121t-133 43q-50 0 -89 -11.5t-63 -27.5l-19 -116h-220l1 240q80 54 183.5 91t225.5 37q201 0 326.5 -98.5t125.5 -280.5 v-447q0 -25 0.5 -47t3.5 -42l89 -12v-175h-337zM499 195q66 0 120 28.5t84 71.5v165h-149q-93 0 -141 -43.5t-48 -104.5q0 -55 35.5 -86t98.5 -31zM944 1277h-267v204h267v-204zM444 1277h-267v204h267v-204z" />
<glyph unicode="&#xe5;" horiz-adv-x="1125" d="M74 0zM752 0q-12 27 -21 55.5t-14 57.5q-52 -60 -126.5 -97t-170.5 -37q-159 0 -252.5 86.5t-93.5 235.5q0 152 122 235t358 83h149v106q0 78 -45 121t-133 43q-50 0 -89 -11.5t-63 -27.5l-19 -116h-220l1 240q80 54 183.5 91t225.5 37q201 0 326.5 -98.5t125.5 -280.5 v-447q0 -25 0.5 -47t3.5 -42l89 -12v-175h-337zM499 195q66 0 120 28.5t84 71.5v165h-149q-93 0 -141 -43.5t-48 -104.5q0 -55 35.5 -86t98.5 -31zM362 1421q0 83 61.5 139.5t151.5 56.5q88 0 148.5 -56.5t60.5 -139.5q0 -84 -60.5 -138t-148.5 -54q-91 0 -152 54t-61 138z M477 1421q0 -43 28 -70.5t70 -27.5q41 0 67 27.5t26 70.5q0 44 -26 72t-67 28q-42 0 -70 -28.5t-28 -71.5z" />
<glyph unicode="&#xe6;" horiz-adv-x="1784" d="M1273 -21q-129 0 -229.5 40.5t-167.5 116.5q-60 -68 -161.5 -112.5t-240.5 -44.5q-192 0 -296.5 90.5t-104.5 247.5q0 159 127 245t370 86h181v59q0 79 -41 124.5t-115 45.5q-81 0 -127 -37.5t-46 -93.5l-283 18l-2 6q-6 144 121.5 238t339.5 94q102 0 186 -27.5 t143 -79.5q61 52 142.5 79.5t180.5 27.5q212 0 333 -132t121 -358v-158h-650l-2 -6q4 -112 66 -178.5t186 -66.5q92 0 154 20t140 61l77 -184q-62 -48 -169 -84.5t-233 -36.5zM530 185q58 0 121 30.5t100 72.5v176h-179q-98 0 -152.5 -44t-54.5 -107q0 -59 41.5 -93.5 t123.5 -34.5zM1250 877q-95 0 -142 -61.5t-54 -166.5l2 -5h362v28q0 94 -42.5 149.5t-125.5 55.5z" />
<glyph unicode="&#xe7;" horiz-adv-x="1079" d="M67 0zM571 203q78 0 125 45.5t47 121.5h264l3 -6q4 -164 -123 -274.5t-316 -110.5q-242 0 -373 153t-131 393v30q0 239 134.5 393t383.5 154q131 0 235 -39t173 -110l4 -289h-237l-48 169q-22 19 -54 31.5t-73 12.5q-124 0 -175 -90t-51 -232v-30q0 -145 47 -233.5 t165 -88.5zM656 4l-11 -57q64 -11 107 -52t43 -121q0 -107 -91.5 -171t-259.5 -64l-7 161q51 0 81 20.5t30 62.5q0 41 -32 57.5t-110 21.5l31 142h219z" />
<glyph unicode="&#xe8;" horiz-adv-x="1091" d="M67 0zM581 -21q-234 0 -374 150t-140 381v40q0 241 132.5 397t355.5 155q219 0 340 -132t121 -357v-159h-646l-2 -6q8 -107 71.5 -176t172.5 -69q97 0 161 19.5t140 61.5l79 -180q-67 -53 -173.5 -89t-237.5 -36zM555 877q-81 0 -128 -62t-58 -163l3 -5h358v26 q0 93 -43.5 148.5t-131.5 55.5zM693 1245h-236l-272 260l2 6h310z" />
<glyph unicode="&#xe9;" horiz-adv-x="1091" d="M67 0zM581 -21q-234 0 -374 150t-140 381v40q0 241 132.5 397t355.5 155q219 0 340 -132t121 -357v-159h-646l-2 -6q8 -107 71.5 -176t172.5 -69q97 0 161 19.5t140 61.5l79 -180q-67 -53 -173.5 -89t-237.5 -36zM555 877q-81 0 -128 -62t-58 -163l3 -5h358v26 q0 93 -43.5 148.5t-131.5 55.5zM563 1503h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xea;" horiz-adv-x="1091" d="M67 0zM581 -21q-234 0 -374 150t-140 381v40q0 241 132.5 397t355.5 155q219 0 340 -132t121 -357v-159h-646l-2 -6q8 -107 71.5 -176t172.5 -69q97 0 161 19.5t140 61.5l79 -180q-67 -53 -173.5 -89t-237.5 -36zM555 877q-81 0 -128 -62t-58 -163l3 -5h358v26 q0 93 -43.5 148.5t-131.5 55.5zM911 1281v-23h-217l-155 146l-154 -146h-212v26l282 240h169z" />
<glyph unicode="&#xeb;" horiz-adv-x="1091" d="M67 0zM581 -21q-234 0 -374 150t-140 381v40q0 241 132.5 397t355.5 155q219 0 340 -132t121 -357v-159h-646l-2 -6q8 -107 71.5 -176t172.5 -69q97 0 161 19.5t140 61.5l79 -180q-67 -53 -173.5 -89t-237.5 -36zM555 877q-81 0 -128 -62t-58 -163l3 -5h358v26 q0 93 -43.5 148.5t-131.5 55.5zM911 1278h-267v204h267v-204zM411 1278h-267v204h267v-204z" />
<glyph unicode="&#xec;" horiz-adv-x="686" d="M7 0zM70 906v176h448v-877l140 -30v-175h-573v175l141 30v671zM515 1246h-236l-272 260l2 6h310z" />
<glyph unicode="&#xed;" horiz-adv-x="686" d="M70 0zM70 906v176h448v-877l140 -30v-175h-573v175l141 30v671zM384 1504h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xee;" horiz-adv-x="686" d="M0 0zM70 906v176h448v-877l140 -30v-175h-573v175l141 30v671zM733 1282v-23h-217l-155 146l-154 -146h-212v26l282 240h169z" />
<glyph unicode="&#xef;" horiz-adv-x="686" d="M0 0zM70 906v176h448v-877l140 -30v-175h-573v175l141 30v671zM732 1279h-267v204h267v-204zM232 1279h-267v204h267v-204z" />
<glyph unicode="&#xf0;" horiz-adv-x="1217" d="M918 1282q110 -117 170 -274.5t60 -346.5v-76q0 -267 -157.5 -436.5t-392.5 -169.5q-238 0 -388 140.5t-150 348.5q0 226 134 362.5t365 136.5q75 0 143 -22t118 -61l4 4q-20 75 -59 140t-92 118l-231 -128l-78 113l190 105q-35 19 -71.5 34.5t-73.5 28.5l92 218 q85 -21 163 -56t146 -84l208 116l77 -113zM856 663q-34 40 -98.5 66t-152.5 26q-121 0 -187.5 -79t-66.5 -208q0 -111 68.5 -188t182.5 -77q117 0 185.5 107.5t68.5 274.5v78z" />
<glyph unicode="&#xf1;" horiz-adv-x="1300" d="M32 0zM47 175l140 30v671l-155 30v176h427l13 -155q54 83 133 129t177 46q164 0 256 -103t92 -323v-471l140 -30v-175h-558v175l125 30v470q0 109 -44 154.5t-133 45.5q-58 0 -104 -23.5t-77 -66.5v-580l118 -30v-175h-550v175zM985 1512q0 -96 -59.5 -163.5 t-150.5 -67.5q-70 0 -158.5 43.5t-140.5 43.5q-36 0 -60.5 -32.5t-24.5 -77.5l-155 42q0 94 59.5 163.5t149.5 69.5q56 0 151.5 -43.5t147.5 -43.5q35 0 60.5 32t25.5 79z" />
<glyph unicode="&#xf2;" horiz-adv-x="1148" d="M63 0zM63 551q0 242 135.5 396.5t374.5 154.5q240 0 375.5 -154t135.5 -397v-21q0 -244 -135.5 -397.5t-373.5 -153.5q-241 0 -376.5 153.5t-135.5 397.5v21zM355 530q0 -148 52 -237.5t168 -89.5q113 0 165.5 90t52.5 237v21q0 144 -53 235t-167 91t-166 -91t-52 -235 v-21zM727 1246h-236l-272 260l2 6h310z" />
<glyph unicode="&#xf3;" horiz-adv-x="1148" d="M63 0zM63 551q0 242 135.5 396.5t374.5 154.5q240 0 375.5 -154t135.5 -397v-21q0 -244 -135.5 -397.5t-373.5 -153.5q-241 0 -376.5 153.5t-135.5 397.5v21zM355 530q0 -148 52 -237.5t168 -89.5q113 0 165.5 90t52.5 237v21q0 144 -53 235t-167 91t-166 -91t-52 -235 v-21zM597 1504h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xf4;" horiz-adv-x="1148" d="M63 0zM63 551q0 242 135.5 396.5t374.5 154.5q240 0 375.5 -154t135.5 -397v-21q0 -244 -135.5 -397.5t-373.5 -153.5q-241 0 -376.5 153.5t-135.5 397.5v21zM355 530q0 -148 52 -237.5t168 -89.5q113 0 165.5 90t52.5 237v21q0 144 -53 235t-167 91t-166 -91t-52 -235 v-21zM945 1282v-23h-217l-155 146l-154 -146h-212v26l282 240h169z" />
<glyph unicode="&#xf5;" horiz-adv-x="1148" d="M63 0zM63 551q0 242 135.5 396.5t374.5 154.5q240 0 375.5 -154t135.5 -397v-21q0 -244 -135.5 -397.5t-373.5 -153.5q-241 0 -376.5 153.5t-135.5 397.5v21zM355 530q0 -148 52 -237.5t168 -89.5q113 0 165.5 90t52.5 237v21q0 144 -53 235t-167 91t-166 -91t-52 -235 v-21zM938 1514q0 -96 -59.5 -163.5t-150.5 -67.5q-70 0 -158.5 43.5t-140.5 43.5q-36 0 -60.5 -32.5t-24.5 -77.5l-155 42q0 94 59.5 163.5t149.5 69.5q56 0 151.5 -43.5t147.5 -43.5q35 0 60.5 32t25.5 79z" />
<glyph unicode="&#xf6;" horiz-adv-x="1148" d="M63 0zM63 551q0 242 135.5 396.5t374.5 154.5q240 0 375.5 -154t135.5 -397v-21q0 -244 -135.5 -397.5t-373.5 -153.5q-241 0 -376.5 153.5t-135.5 397.5v21zM355 530q0 -148 52 -237.5t168 -89.5q113 0 165.5 90t52.5 237v21q0 144 -53 235t-167 91t-166 -91t-52 -235 v-21zM944 1279h-267v204h267v-204zM444 1279h-267v204h267v-204z" />
<glyph unicode="&#xf7;" horiz-adv-x="1133" d="M1084 573h-1028v227h1028v-227zM717 973h-292v233h292v-233zM717 164h-292v233h292v-233z" />
<glyph unicode="&#xf8;" horiz-adv-x="1178" d="M76 551q0 242 135.5 396.5t374.5 154.5q45 0 87 -6.5t83 -17.5l67 137h162l-98 -201q101 -72 155.5 -192.5t54.5 -270.5v-21q0 -244 -135.5 -397.5t-373.5 -153.5q-53 0 -101 8t-91 23l-74 -151h-162l108 221q-94 72 -143 188.5t-49 261.5v21zM806 551q0 62 -10 115.5 t-29 89.5h-6l-262 -535q18 -9 40.5 -13.5t48.5 -4.5q113 0 165.5 90t52.5 237v21zM368 530q0 -55 6.5 -101t20.5 -77l5 -1l253 516q-16 4 -33 7t-34 3q-114 0 -166 -91t-52 -235v-21z" />
<glyph unicode="&#xf9;" horiz-adv-x="1278" d="M33 0zM820 137q-52 -76 -128.5 -117t-174.5 -41q-171 0 -268 109.5t-97 340.5v447l-119 30v176h119h292v-655q0 -118 39.5 -169.5t117.5 -51.5q69 0 119.5 22.5t82.5 64.5v583l-128 30v176h128h292v-877l131 -30v-175h-387zM760 1246h-236l-272 260l2 6h310z" />
<glyph unicode="&#xfa;" horiz-adv-x="1278" d="M33 0zM820 137q-52 -76 -128.5 -117t-174.5 -41q-171 0 -268 109.5t-97 340.5v447l-119 30v176h119h292v-655q0 -118 39.5 -169.5t117.5 -51.5q69 0 119.5 22.5t82.5 64.5v583l-128 30v176h128h292v-877l131 -30v-175h-387zM630 1504h309l2 -6l-276 -260h-234z" />
<glyph unicode="&#xfb;" horiz-adv-x="1278" d="M33 0zM820 137q-52 -76 -128.5 -117t-174.5 -41q-171 0 -268 109.5t-97 340.5v447l-119 30v176h119h292v-655q0 -118 39.5 -169.5t117.5 -51.5q69 0 119.5 22.5t82.5 64.5v583l-128 30v176h128h292v-877l131 -30v-175h-387zM978 1282v-23h-217l-155 146l-154 -146h-212 v26l282 240h169z" />
<glyph unicode="&#xfc;" horiz-adv-x="1278" d="M33 0zM820 137q-52 -76 -128.5 -117t-174.5 -41q-171 0 -268 109.5t-97 340.5v447l-119 30v176h119h292v-655q0 -118 39.5 -169.5t117.5 -51.5q69 0 119.5 22.5t82.5 64.5v583l-128 30v176h128h292v-877l131 -30v-175h-387zM977 1279h-267v204h267v-204zM477 1279h-267 v204h267v-204z" />
<glyph unicode="&#xfd;" horiz-adv-x="1212" d="M26 0zM1183 906l-101 -15l-398 -1053q-47 -117 -125.5 -196t-236.5 -79q-37 0 -69.5 6t-76.5 17l34 213q14 -2 29 -4t26 -2q73 0 112 35.5t60 88.5l33 82l-343 891l-101 16v176h530v-176l-121 -20l148 -432l15 -78l6 -1l171 511l-122 20v176h530v-176zM613 1489h309l2 -6 l-276 -260h-234z" />
<glyph unicode="&#xfe;" horiz-adv-x="1246" d="M34 1384v176h447v-591q47 64 112 98.5t150 34.5q201 0 312 -157t111 -413v-21q0 -240 -111 -386t-310 -146q-85 0 -151 31.5t-113 92.5v-313l141 -30v-176h-573v176l141 30v1564zM874 532q0 153 -51 248t-156 95q-66 0 -112.5 -27t-73.5 -77v-474q27 -46 73.5 -70 t114.5 -24q106 0 155.5 83t49.5 225v21z" />
<glyph unicode="&#xff;" horiz-adv-x="1212" d="M26 0zM1183 906l-101 -15l-398 -1053q-47 -117 -125.5 -196t-236.5 -79q-37 0 -69.5 6t-76.5 17l34 213q14 -2 29 -4t26 -2q73 0 112 35.5t60 88.5l33 82l-343 891l-101 16v176h530v-176l-121 -20l148 -432l15 -78l6 -1l171 511l-122 20v176h530v-176zM960 1264h-267v204 h267v-204zM460 1264h-267v204h267v-204z" />
<glyph unicode="&#x131;" horiz-adv-x="686" d="M70 906v176h448v-877l140 -30v-175h-573v175l141 30v671z" />
<glyph unicode="&#x152;" horiz-adv-x="1996" d="M1724 640h-493v-416h470l13 174h222v-398h-938q-92 -10 -156.5 -15.5t-131.5 -5.5q-270 0 -438.5 166t-168.5 431v304q0 265 167.5 431t437.5 166q69 0 140 -6t150 -15h936v-399h-224l-13 174h-466v-366h493v-225zM710 204q58 0 115.5 4.5t113.5 13.5v1011 q-59 8 -116.5 13.5t-114.5 5.5q-148 0 -231 -94.5t-83 -275.5v-306q0 -182 84 -277t232 -95z" />
<glyph unicode="&#x153;" horiz-adv-x="1875" d="M92 551q0 242 135.5 396.5t374.5 154.5q115 0 208.5 -38.5t160.5 -108.5q64 71 152.5 109t196.5 38q219 0 340 -132t121 -357v-159h-647l-2 -6q8 -107 71.5 -176t173.5 -69q97 0 161 19.5t139 61.5l80 -180q-66 -53 -173 -89t-238 -36q-117 0 -211.5 38t-161.5 110 q-66 -72 -159.5 -110t-209.5 -38q-241 0 -376.5 153.5t-135.5 397.5v21zM384 530q0 -148 52 -237.5t168 -89.5q113 0 165.5 90t52.5 237v21q0 144 -53 235t-167 91t-166 -91t-52 -235v-21zM1320 877q-81 0 -128 -62t-58 -163l2 -5h359v26q0 93 -43.5 148.5t-131.5 55.5z" />
<glyph unicode="&#x178;" horiz-adv-x="1398" d="M36 0zM587 1280l-119 -17l226 -478h6l226 478l-118 17v176h551v-176l-124 -20l-396 -748v-307l156 -30v-175h-603v175l156 30v322l-389 733l-123 20v176h551v-176zM1083 1601h-267v204h267v-204zM583 1601h-267v204h267v-204z" />
<glyph unicode="&#x2c6;" horiz-adv-x="890" d="M828 1275v-23h-217l-155 146l-154 -146h-212v26l282 240h169z" />
<glyph unicode="&#x2da;" horiz-adv-x="654" d="M114 1298q0 83 61.5 139.5t151.5 56.5q88 0 148.5 -56.5t60.5 -139.5q0 -84 -60.5 -138t-148.5 -54q-91 0 -152 54t-61 138zM229 1298q0 -43 28 -70.5t70 -27.5q41 0 67 27.5t26 70.5q0 44 -26 72t-67 28q-42 0 -70 -28.5t-28 -71.5z" />
<glyph unicode="&#x2dc;" horiz-adv-x="950" d="M857 1484q0 -96 -59.5 -163.5t-150.5 -67.5q-70 0 -158.5 43.5t-140.5 43.5q-36 0 -60.5 -32.5t-24.5 -77.5l-155 42q0 94 59.5 163.5t149.5 69.5q56 0 151.5 -43.5t147.5 -43.5q35 0 60.5 32t25.5 79z" />
<glyph unicode="&#x2000;" horiz-adv-x="970" />
<glyph unicode="&#x2001;" horiz-adv-x="1941" />
<glyph unicode="&#x2002;" horiz-adv-x="970" />
<glyph unicode="&#x2003;" horiz-adv-x="1941" />
<glyph unicode="&#x2004;" horiz-adv-x="647" />
<glyph unicode="&#x2005;" horiz-adv-x="485" />
<glyph unicode="&#x2006;" horiz-adv-x="323" />
<glyph unicode="&#x2007;" horiz-adv-x="323" />
<glyph unicode="&#x2008;" horiz-adv-x="242" />
<glyph unicode="&#x2009;" horiz-adv-x="388" />
<glyph unicode="&#x200a;" horiz-adv-x="107" />
<glyph unicode="&#x2010;" horiz-adv-x="815" d="M695 510h-564v225h564v-225z" />
<glyph unicode="&#x2011;" horiz-adv-x="815" d="M695 510h-564v225h564v-225z" />
<glyph unicode="&#x2012;" horiz-adv-x="815" d="M695 510h-564v225h564v-225z" />
<glyph unicode="&#x2013;" horiz-adv-x="1372" d="M165 601zM1242.69 601h-1084.19v228h1084.19v-228z" />
<glyph unicode="&#x2014;" horiz-adv-x="1595" d="M166 601zM1462.38 601h-1334.38v228h1334.38v-228z" />
<glyph unicode="&#x2018;" horiz-adv-x="480" d="M96 1202q0 99 52.5 209t130.5 181l144 -78q-40 -70 -60.5 -144.5t-20.5 -167.5v-193h-246v193z" />
<glyph unicode="&#x2019;" horiz-adv-x="471" d="M385 1369q0 -100 -53 -210.5t-129 -180.5l-144 79q39 69 60 143.5t21 168.5v191h245v-191z" />
<glyph unicode="&#x201a;" horiz-adv-x="510" d="M393 67q0 -99 -53 -209.5t-129 -180.5l-144 78q39 70 60 144.5t21 166.5v221h246z" />
<glyph unicode="&#x201c;" horiz-adv-x="833" d="M101 1009zM101 1202q0 99 52.5 209t130.5 181l144 -78q-40 -70 -60.5 -144.5t-20.5 -167.5v-193h-246v193zM438 1202q0 99 52.5 209t130.5 181l144 -78q-40 -70 -60.5 -144.5t-20.5 -167.5v-193h-246v193z" />
<glyph unicode="&#x201d;" horiz-adv-x="840" d="M73 978zM399 1369q0 -100 -53 -210.5t-129 -180.5l-144 79q39 69 60 143.5t21 168.5v191h245v-191zM739 1369q0 -100 -53 -210.5t-129 -180.5l-144 79q39 69 60 143.5t21 168.5v191h245v-191z" />
<glyph unicode="&#x201e;" horiz-adv-x="827" d="M393 67q0 -99 -53 -209.5t-129 -180.5l-144 78q39 70 60 144.5t21 166.5v221h246zM730 67q0 -99 -53 -209.5t-129 -180.5l-144 78q39 70 60 144.5t21 166.5v221h246z" />
<glyph unicode="&#x2022;" horiz-adv-x="703" d="M120 806q0 100 64.5 164t172.5 64q110 0 174.5 -63.5t64.5 -164.5v-90q0 -101 -64.5 -163t-173.5 -62t-173.5 62t-64.5 163v90z" />
<glyph unicode="&#x2026;" horiz-adv-x="1461" d="M137 0zM428 0h-291v256h291v-256zM901 0h-291v256h291v-256zM1366 0h-291v256h291v-256z" />
<glyph unicode="&#x202f;" horiz-adv-x="388" />
<glyph unicode="&#x2039;" horiz-adv-x="570" d="M271 550l240 -399h-187l-280 390v19l280 390h187z" />
<glyph unicode="&#x203a;" horiz-adv-x="576" d="M258 950l280 -390v-19l-280 -390h-187l239 399l-239 400h187z" />
<glyph unicode="&#x2044;" horiz-adv-x="882" d="M163 109l-142 75l711 1138l142 -75z" />
<glyph unicode="&#x205f;" horiz-adv-x="485" />
<glyph unicode="&#x20ac;" horiz-adv-x="1063" d="M924 485h-428v-8q0 -132 67.5 -203t187.5 -71q58 0 113.5 8.5t106.5 25.5l21 -227q-57 -15 -118 -23t-123 -8q-245 0 -396 135t-151 363v8h-146v153h146v150h-146v153h146v13q0 238 150.5 380.5t394.5 142.5q60 0 117.5 -8t125.5 -23l-21 -229q-53 16 -109.5 25.5 t-112.5 9.5q-118 0 -185.5 -79t-67.5 -217v-15h428v-153h-428v-150h428v-153z" />
<glyph unicode="&#x2122;" horiz-adv-x="1239" d="M974 1197l-6 1l-105 -283h-73l-110 298l-6 -1v-297h-129v541h159l119 -362h6l120 362h154v-541h-129v282zM474 1351h-128v-434h-144v434h-126v105h398v-105z" />
<glyph unicode="&#x2212;" horiz-adv-x="1119" d="M979 601h-834v228h834v-228z" />
<glyph unicode="&#x25fc;" horiz-adv-x="1080" d="M0 1080h1080v-1080h-1080v1080z" />
<glyph unicode="&#xfb03;" horiz-adv-x="2099" d="M59 0zM79 175l141 30v672h-161v205h161v120q0 182 105 280.5t295 98.5q37 0 75.5 -5.5t84.5 -15.5l-25 -217q-24 4 -46.5 7t-52.5 3q-71 0 -107.5 -39t-36.5 -112v-120h215v-205h-215v-672l141 -30v-175h-574v175zM796 877v205h161v74q0 204 124.5 314.5t350.5 110.5 q78 0 154 -15.5t176 -44.5l-42 -230q-73 22 -132.5 34t-136.5 12q-101 0 -151.5 -46t-50.5 -135v-74h656v-877l155 -30v-175h-588v175l141 30v672h-364v-672l141 -30v-175h-589v175l156 30v672h-161z" />
<glyph unicode="&#xfb04;" horiz-adv-x="2177" d="M59 0zM79 175l141 30v672h-161v205h161v120q0 182 105 280.5t295 98.5q37 0 75.5 -5.5t84.5 -15.5l-25 -217q-24 4 -46.5 7t-52.5 3q-71 0 -107.5 -39t-36.5 -112v-120h215v-205h-215v-672l141 -30v-175h-574v175zM841 175l141 30v672h-161v205h161v120q0 182 105 280.5 t295 98.5q37 0 75.5 -5.5t84.5 -15.5l-25 -217q-24 4 -46.5 7t-52.5 3q-71 0 -107.5 -39t-36.5 -112v-120h215v-205h-215v-672l141 -30v-175h-574v175zM1556 1384v176h448v-1355l141 -30v-175h-574v175l141 30v1149z" />
<glyph horiz-adv-x="540" d="M411 0h-210v630h-127v159l337 23v-812z" />
<glyph horiz-adv-x="820" d="M725 0h-623v155l310 252q60 50 77.5 83.5t17.5 74.5q0 39 -23.5 65.5t-72.5 26.5q-55 0 -83 -30t-28 -77h-201l-2 6q-6 106 82.5 181t236.5 75q144 0 222.5 -65t78.5 -183q0 -82 -53.5 -144.5t-177.5 -165.5l-109 -93l2 -6h346v-155z" />
<glyph horiz-adv-x="843" d="M398 473q62 0 91.5 24.5t29.5 70.5q0 38 -28 63.5t-84 25.5q-51 0 -79 -22t-28 -53h-200l-2 6q-6 101 82 162.5t222 61.5q151 0 239.5 -59.5t88.5 -169.5q0 -55 -35.5 -100.5t-96.5 -70.5q71 -24 108.5 -71.5t37.5 -115.5q0 -112 -89.5 -174t-242.5 -62q-145 0 -239 62.5 t-88 175.5l2 6h200q0 -42 31.5 -65.5t91.5 -23.5q56 0 90 24t34 68q0 50 -35 77t-101 27h-112v133h112z" />
<glyph horiz-adv-x="874" d="M692 296h101v-157h-101v-139h-211v139h-410l-13 126l423 534v2h211v-505zM273 296h208v257l-6 2l-13 -20z" />
<glyph horiz-adv-x="507" d="M0 0z" />
<hkern u1="&#x22;" u2="w" k="-11" />
<hkern u1="&#x27;" u2="w" k="-11" />
<hkern u1="&#x28;" u2="&#x178;" k="-22" />
<hkern u1="&#x28;" u2="&#xdd;" k="-22" />
<hkern u1="&#x28;" u2="Y" k="-22" />
<hkern u1="&#x28;" u2="W" k="-38" />
<hkern u1="&#x28;" u2="V" k="-20" />
<hkern u1="&#x2f;" u2="&#x2f;" k="338" />
<hkern u1="A" u2="w" k="173" />
<hkern u1="A" u2="t" k="117" />
<hkern u1="A" u2="&#x3f;" k="151" />
<hkern u1="C" u2="&#x7d;" k="17" />
<hkern u1="C" u2="]" k="12" />
<hkern u1="C" u2="&#x29;" k="26" />
<hkern u1="D" u2="&#xc6;" k="33" />
<hkern u1="E" u2="w" k="22" />
<hkern u1="F" u2="&#x2026;" k="304" />
<hkern u1="F" u2="&#x201e;" k="304" />
<hkern u1="F" u2="&#x201a;" k="304" />
<hkern u1="F" u2="&#x153;" k="21" />
<hkern u1="F" u2="&#x152;" k="40" />
<hkern u1="F" u2="&#xff;" k="24" />
<hkern u1="F" u2="&#xfd;" k="24" />
<hkern u1="F" u2="&#xfc;" k="22" />
<hkern u1="F" u2="&#xfb;" k="22" />
<hkern u1="F" u2="&#xfa;" k="22" />
<hkern u1="F" u2="&#xf9;" k="22" />
<hkern u1="F" u2="&#xf6;" k="21" />
<hkern u1="F" u2="&#xf5;" k="21" />
<hkern u1="F" u2="&#xf4;" k="21" />
<hkern u1="F" u2="&#xf3;" k="21" />
<hkern u1="F" u2="&#xf2;" k="21" />
<hkern u1="F" u2="&#xeb;" k="21" />
<hkern u1="F" u2="&#xea;" k="21" />
<hkern u1="F" u2="&#xe9;" k="21" />
<hkern u1="F" u2="&#xe8;" k="21" />
<hkern u1="F" u2="&#xe7;" k="21" />
<hkern u1="F" u2="&#xe5;" k="34" />
<hkern u1="F" u2="&#xe4;" k="34" />
<hkern u1="F" u2="&#xe3;" k="34" />
<hkern u1="F" u2="&#xe2;" k="34" />
<hkern u1="F" u2="&#xe1;" k="34" />
<hkern u1="F" u2="&#xe0;" k="34" />
<hkern u1="F" u2="&#xd8;" k="40" />
<hkern u1="F" u2="&#xd6;" k="40" />
<hkern u1="F" u2="&#xd5;" k="40" />
<hkern u1="F" u2="&#xd4;" k="40" />
<hkern u1="F" u2="&#xd3;" k="40" />
<hkern u1="F" u2="&#xd2;" k="40" />
<hkern u1="F" u2="&#xc7;" k="40" />
<hkern u1="F" u2="&#xc5;" k="300" />
<hkern u1="F" u2="&#xc4;" k="300" />
<hkern u1="F" u2="&#xc3;" k="300" />
<hkern u1="F" u2="&#xc2;" k="300" />
<hkern u1="F" u2="&#xc1;" k="300" />
<hkern u1="F" u2="&#xc0;" k="300" />
<hkern u1="F" u2="y" k="24" />
<hkern u1="F" u2="v" k="24" />
<hkern u1="F" u2="u" k="22" />
<hkern u1="F" u2="q" k="21" />
<hkern u1="F" u2="o" k="21" />
<hkern u1="F" u2="g" k="21" />
<hkern u1="F" u2="e" k="21" />
<hkern u1="F" u2="d" k="21" />
<hkern u1="F" u2="c" k="21" />
<hkern u1="F" u2="a" k="34" />
<hkern u1="F" u2="T" k="-20" />
<hkern u1="F" u2="Q" k="40" />
<hkern u1="F" u2="O" k="40" />
<hkern u1="F" u2="J" k="208" />
<hkern u1="F" u2="G" k="40" />
<hkern u1="F" u2="C" k="40" />
<hkern u1="F" u2="A" k="300" />
<hkern u1="F" u2="&#x2e;" k="304" />
<hkern u1="F" u2="&#x2c;" k="304" />
<hkern u1="F" u2="r" k="26" />
<hkern u1="K" u2="w" k="63" />
<hkern u1="L" u2="w" k="52" />
<hkern u1="N" u2="&#xc5;" k="128" />
<hkern u1="N" u2="&#xc4;" k="128" />
<hkern u1="N" u2="&#xc3;" k="128" />
<hkern u1="N" u2="&#xc2;" k="128" />
<hkern u1="N" u2="&#xc1;" k="128" />
<hkern u1="N" u2="&#xc0;" k="128" />
<hkern u1="N" u2="A" k="128" />
<hkern u1="O" u2="&#xc6;" k="33" />
<hkern u1="P" u2="&#xc6;" k="297" />
<hkern u1="P" u2="t" k="-14" />
<hkern u1="Q" u2="&#x178;" k="35" />
<hkern u1="Q" u2="&#xdd;" k="35" />
<hkern u1="Q" u2="Y" k="35" />
<hkern u1="Q" u2="W" k="18" />
<hkern u1="Q" u2="V" k="28" />
<hkern u1="Q" u2="T" k="33" />
<hkern u1="R" u2="&#x178;" k="100" />
<hkern u1="R" u2="&#xdd;" k="100" />
<hkern u1="R" u2="Y" k="100" />
<hkern u1="R" u2="V" k="90" />
<hkern u1="R" u2="T" k="50" />
<hkern u1="T" u2="&#xf8;" k="95" />
<hkern u1="T" u2="&#xe6;" k="84" />
<hkern u1="T" u2="&#xc6;" k="189" />
<hkern u1="T" u2="&#xbb;" k="146" />
<hkern u1="T" u2="&#xab;" k="148" />
<hkern u1="T" u2="w" k="47" />
<hkern u1="T" u2="r" k="65" />
<hkern u1="V" u2="&#x7d;" k="-19" />
<hkern u1="V" u2="r" k="30" />
<hkern u1="V" u2="]" k="-17" />
<hkern u1="V" u2="&#x29;" k="-20" />
<hkern u1="W" u2="&#x7d;" k="-14" />
<hkern u1="W" u2="r" k="21" />
<hkern u1="W" u2="]" k="-12" />
<hkern u1="W" u2="&#x29;" k="-35" />
<hkern u1="Y" u2="&#x2022;" k="45" />
<hkern u1="Y" u2="&#xf8;" k="64" />
<hkern u1="Y" u2="&#xe6;" k="63" />
<hkern u1="Y" u2="&#xc6;" k="96" />
<hkern u1="Y" u2="&#xbb;" k="51" />
<hkern u1="Y" u2="&#xab;" k="82" />
<hkern u1="Y" u2="&#x7d;" k="-19" />
<hkern u1="Y" u2="t" k="22" />
<hkern u1="Y" u2="r" k="40" />
<hkern u1="Y" u2="f" k="82" />
<hkern u1="Y" u2="]" k="-18" />
<hkern u1="Y" u2="&#x2a;" k="49" />
<hkern u1="Y" u2="&#x29;" k="-20" />
<hkern u1="Y" u2="&#x26;" k="30" />
<hkern u1="Z" u2="w" k="27" />
<hkern u1="[" u2="&#xdc;" k="18" />
<hkern u1="[" u2="&#xdb;" k="18" />
<hkern u1="[" u2="&#xda;" k="18" />
<hkern u1="[" u2="&#xd9;" k="18" />
<hkern u1="[" u2="U" k="18" />
<hkern u1="[" u2="J" k="18" />
<hkern u1="a" u2="t" k="80" />
<hkern u1="a" u2="b" k="32" />
<hkern u1="d" u2="t" k="64" />
<hkern u1="f" u2="&#x153;" k="24" />
<hkern u1="f" u2="&#xeb;" k="24" />
<hkern u1="f" u2="&#xea;" k="24" />
<hkern u1="f" u2="&#xe9;" k="24" />
<hkern u1="f" u2="&#xe8;" k="24" />
<hkern u1="f" u2="&#xe7;" k="24" />
<hkern u1="f" u2="q" k="24" />
<hkern u1="f" u2="g" k="24" />
<hkern u1="f" u2="e" k="24" />
<hkern u1="f" u2="d" k="24" />
<hkern u1="f" u2="c" k="24" />
<hkern u1="f" u2="&#x7d;" k="-19" />
<hkern u1="f" u2="]" k="-18" />
<hkern u1="f" u2="&#x29;" k="-50" />
<hkern u1="k" u2="&#x153;" k="20" />
<hkern u1="k" u2="&#xeb;" k="20" />
<hkern u1="k" u2="&#xea;" k="20" />
<hkern u1="k" u2="&#xe9;" k="20" />
<hkern u1="k" u2="&#xe8;" k="20" />
<hkern u1="k" u2="&#xe7;" k="20" />
<hkern u1="k" u2="q" k="20" />
<hkern u1="k" u2="g" k="20" />
<hkern u1="k" u2="e" k="20" />
<hkern u1="k" u2="d" k="20" />
<hkern u1="k" u2="c" k="20" />
<hkern u1="l" u2="&#xf6;" k="20" />
<hkern u1="l" u2="&#xf5;" k="20" />
<hkern u1="l" u2="&#xf4;" k="20" />
<hkern u1="l" u2="&#xf3;" k="20" />
<hkern u1="l" u2="&#xf2;" k="20" />
<hkern u1="l" u2="o" k="20" />
<hkern u1="r" u2="w" k="-17" />
<hkern u1="r" u2="t" k="-24" />
<hkern u1="r" u2="f" k="-20" />
<hkern u1="t" u2="&#xf6;" k="30" />
<hkern u1="t" u2="&#xf5;" k="30" />
<hkern u1="t" u2="&#xf4;" k="30" />
<hkern u1="t" u2="&#xf3;" k="30" />
<hkern u1="t" u2="&#xf2;" k="30" />
<hkern u1="t" u2="o" k="30" />
<hkern u1="v" u2="f" k="-13" />
<hkern u1="w" u2="&#x2026;" k="124" />
<hkern u1="w" u2="&#x201e;" k="124" />
<hkern u1="w" u2="&#x201a;" k="124" />
<hkern u1="w" u2="&#x2e;" k="124" />
<hkern u1="w" u2="&#x2c;" k="124" />
<hkern u1="y" u2="f" k="-13" />
<hkern u1="&#x7b;" u2="&#xdc;" k="20" />
<hkern u1="&#x7b;" u2="&#xdb;" k="20" />
<hkern u1="&#x7b;" u2="&#xda;" k="20" />
<hkern u1="&#x7b;" u2="&#xd9;" k="20" />
<hkern u1="&#x7b;" u2="U" k="20" />
<hkern u1="&#x7b;" u2="J" k="20" />
<hkern u1="&#xc0;" u2="w" k="173" />
<hkern u1="&#xc0;" u2="t" k="117" />
<hkern u1="&#xc0;" u2="&#x3f;" k="151" />
<hkern u1="&#xc1;" u2="w" k="173" />
<hkern u1="&#xc1;" u2="t" k="117" />
<hkern u1="&#xc1;" u2="&#x3f;" k="151" />
<hkern u1="&#xc2;" u2="w" k="173" />
<hkern u1="&#xc2;" u2="t" k="117" />
<hkern u1="&#xc2;" u2="&#x3f;" k="151" />
<hkern u1="&#xc3;" u2="w" k="173" />
<hkern u1="&#xc3;" u2="t" k="117" />
<hkern u1="&#xc3;" u2="&#x3f;" k="151" />
<hkern u1="&#xc4;" u2="w" k="173" />
<hkern u1="&#xc4;" u2="t" k="117" />
<hkern u1="&#xc4;" u2="&#x3f;" k="151" />
<hkern u1="&#xc5;" u2="w" k="173" />
<hkern u1="&#xc5;" u2="t" k="117" />
<hkern u1="&#xc5;" u2="&#x3f;" k="151" />
<hkern u1="&#xc7;" u2="&#x7d;" k="17" />
<hkern u1="&#xc7;" u2="]" k="12" />
<hkern u1="&#xc7;" u2="&#x29;" k="26" />
<hkern u1="&#xc8;" u2="w" k="22" />
<hkern u1="&#xc9;" u2="w" k="22" />
<hkern u1="&#xca;" u2="w" k="22" />
<hkern u1="&#xcb;" u2="w" k="22" />
<hkern u1="&#xd0;" u2="&#xc6;" k="33" />
<hkern u1="&#xd2;" u2="&#xc6;" k="33" />
<hkern u1="&#xd3;" u2="&#xc6;" k="33" />
<hkern u1="&#xd4;" u2="&#xc6;" k="33" />
<hkern u1="&#xd5;" u2="&#xc6;" k="33" />
<hkern u1="&#xd6;" u2="&#xc6;" k="33" />
<hkern u1="&#xdd;" u2="&#x2022;" k="45" />
<hkern u1="&#xdd;" u2="&#xf8;" k="64" />
<hkern u1="&#xdd;" u2="&#xe6;" k="63" />
<hkern u1="&#xdd;" u2="&#xc6;" k="96" />
<hkern u1="&#xdd;" u2="&#xbb;" k="51" />
<hkern u1="&#xdd;" u2="&#xab;" k="82" />
<hkern u1="&#xdd;" u2="&#x7d;" k="-19" />
<hkern u1="&#xdd;" u2="t" k="22" />
<hkern u1="&#xdd;" u2="r" k="40" />
<hkern u1="&#xdd;" u2="f" k="82" />
<hkern u1="&#xdd;" u2="]" k="-18" />
<hkern u1="&#xdd;" u2="&#x2a;" k="49" />
<hkern u1="&#xdd;" u2="&#x29;" k="-20" />
<hkern u1="&#xdd;" u2="&#x26;" k="30" />
<hkern u1="&#xe0;" u2="t" k="80" />
<hkern u1="&#xe0;" u2="b" k="32" />
<hkern u1="&#xe1;" u2="t" k="80" />
<hkern u1="&#xe1;" u2="b" k="32" />
<hkern u1="&#xe2;" u2="t" k="80" />
<hkern u1="&#xe2;" u2="b" k="32" />
<hkern u1="&#xe3;" u2="t" k="80" />
<hkern u1="&#xe3;" u2="b" k="32" />
<hkern u1="&#xe4;" u2="t" k="80" />
<hkern u1="&#xe4;" u2="b" k="32" />
<hkern u1="&#xe5;" u2="t" k="80" />
<hkern u1="&#xe5;" u2="b" k="32" />
<hkern u1="&#xfd;" u2="f" k="-13" />
<hkern u1="&#xff;" u2="f" k="-13" />
<hkern u1="&#x178;" u2="&#x2022;" k="45" />
<hkern u1="&#x178;" u2="&#xf8;" k="64" />
<hkern u1="&#x178;" u2="&#xe6;" k="63" />
<hkern u1="&#x178;" u2="&#xc6;" k="96" />
<hkern u1="&#x178;" u2="&#xbb;" k="51" />
<hkern u1="&#x178;" u2="&#xab;" k="82" />
<hkern u1="&#x178;" u2="&#x7d;" k="-19" />
<hkern u1="&#x178;" u2="t" k="22" />
<hkern u1="&#x178;" u2="r" k="40" />
<hkern u1="&#x178;" u2="f" k="82" />
<hkern u1="&#x178;" u2="]" k="-18" />
<hkern u1="&#x178;" u2="&#x2a;" k="49" />
<hkern u1="&#x178;" u2="&#x29;" k="-20" />
<hkern u1="&#x178;" u2="&#x26;" k="30" />
<hkern u1="&#x2018;" u2="w" k="-11" />
<hkern u1="&#x2019;" u2="w" k="-11" />
<hkern u1="&#x201c;" u2="w" k="-11" />
<hkern u1="&#x201d;" u2="w" k="-11" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="12" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="v,y,yacute,ydieresis" k="190" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="60" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="V" k="200" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="60" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="Y,Yacute,Ydieresis" k="256" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="280" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="T" k="150" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="u,ugrave,uacute,ucircumflex,udieresis" k="111" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="W" k="148" />
<hkern g1="B" g2="V" k="24" />
<hkern g1="B" g2="Y,Yacute,Ydieresis" k="55" />
<hkern g1="B" g2="T" k="27" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="V" k="22" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="Y,Yacute,Ydieresis" k="43" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="T" k="27" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="60" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="Z" k="23" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="X" k="30" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="122" />
<hkern g1="C,Ccedilla" g2="T" k="29" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="19" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="v,y,yacute,ydieresis" k="26" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="T" k="-20" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="17" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="19" />
<hkern g1="T" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="79" />
<hkern g1="T" g2="v,y,yacute,ydieresis" k="82" />
<hkern g1="T" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="28" />
<hkern g1="T" g2="V" k="-16" />
<hkern g1="T" g2="Y,Yacute,Ydieresis" k="-16" />
<hkern g1="T" g2="T" k="-16" />
<hkern g1="T" g2="u,ugrave,uacute,ucircumflex,udieresis" k="65" />
<hkern g1="T" g2="W" k="-15" />
<hkern g1="T" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="180" />
<hkern g1="T" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="258" />
<hkern g1="T" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="89" />
<hkern g1="T" g2="z" k="60" />
<hkern g1="T" g2="x" k="77" />
<hkern g1="T" g2="m,n,p,ntilde" k="89" />
<hkern g1="T" g2="s" k="76" />
<hkern g1="T" g2="hyphen,uni00AD,endash,emdash" k="272" />
<hkern g1="T" g2="S" k="16" />
<hkern g1="T" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="83" />
<hkern g1="T" g2="J" k="196" />
<hkern g1="K" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="27" />
<hkern g1="K" g2="v,y,yacute,ydieresis" k="40" />
<hkern g1="K" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="107" />
<hkern g1="K" g2="u,ugrave,uacute,ucircumflex,udieresis" k="23" />
<hkern g1="K" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="26" />
<hkern g1="K" g2="hyphen,uni00AD,endash,emdash" k="234" />
<hkern g1="L" g2="v,y,yacute,ydieresis" k="123" />
<hkern g1="L" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="25" />
<hkern g1="L" g2="V" k="264" />
<hkern g1="L" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="74" />
<hkern g1="L" g2="Y,Yacute,Ydieresis" k="279" />
<hkern g1="L" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="308" />
<hkern g1="L" g2="T" k="205" />
<hkern g1="L" g2="u,ugrave,uacute,ucircumflex,udieresis" k="14" />
<hkern g1="L" g2="W" k="93" />
<hkern g1="P" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="13" />
<hkern g1="P" g2="v,y,yacute,ydieresis" k="-15" />
<hkern g1="P" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="236" />
<hkern g1="P" g2="Z" k="36" />
<hkern g1="P" g2="X" k="51" />
<hkern g1="P" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="404" />
<hkern g1="P" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="13" />
<hkern g1="P" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="11" />
<hkern g1="P" g2="J" k="184" />
<hkern g1="J,U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="100" />
<hkern g1="V" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="46" />
<hkern g1="V" g2="v,y,yacute,ydieresis" k="11" />
<hkern g1="V" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="13" />
<hkern g1="V" g2="u,ugrave,uacute,ucircumflex,udieresis" k="28" />
<hkern g1="V" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="220" />
<hkern g1="V" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="215" />
<hkern g1="V" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="44" />
<hkern g1="V" g2="hyphen,uni00AD,endash,emdash" k="157" />
<hkern g1="V" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="46" />
<hkern g1="V" g2="J" k="213" />
<hkern g1="X" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="21" />
<hkern g1="X" g2="v,y,yacute,ydieresis" k="31" />
<hkern g1="X" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="30" />
<hkern g1="X" g2="V" k="-14" />
<hkern g1="X" g2="u,ugrave,uacute,ucircumflex,udieresis" k="21" />
<hkern g1="X" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="26" />
<hkern g1="X" g2="hyphen,uni00AD,endash,emdash" k="196" />
<hkern g1="Y,Yacute,Ydieresis" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="65" />
<hkern g1="Y,Yacute,Ydieresis" g2="v,y,yacute,ydieresis" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="29" />
<hkern g1="Y,Yacute,Ydieresis" g2="V" k="-18" />
<hkern g1="Y,Yacute,Ydieresis" g2="Y,Yacute,Ydieresis" k="-18" />
<hkern g1="Y,Yacute,Ydieresis" g2="T" k="-17" />
<hkern g1="Y,Yacute,Ydieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="39" />
<hkern g1="Y,Yacute,Ydieresis" g2="W" k="-17" />
<hkern g1="Y,Yacute,Ydieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="256" />
<hkern g1="Y,Yacute,Ydieresis" g2="X" k="-13" />
<hkern g1="Y,Yacute,Ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="231" />
<hkern g1="Y,Yacute,Ydieresis" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="65" />
<hkern g1="Y,Yacute,Ydieresis" g2="z" k="30" />
<hkern g1="Y,Yacute,Ydieresis" g2="x" k="23" />
<hkern g1="Y,Yacute,Ydieresis" g2="m,n,p,ntilde" k="80" />
<hkern g1="Y,Yacute,Ydieresis" g2="s" k="58" />
<hkern g1="Y,Yacute,Ydieresis" g2="hyphen,uni00AD,endash,emdash" k="212" />
<hkern g1="Y,Yacute,Ydieresis" g2="S" k="16" />
<hkern g1="Y,Yacute,Ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="63" />
<hkern g1="Y,Yacute,Ydieresis" g2="J" k="286" />
<hkern g1="W" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="31" />
<hkern g1="W" g2="T" k="-14" />
<hkern g1="W" g2="u,ugrave,uacute,ucircumflex,udieresis" k="19" />
<hkern g1="W" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="171" />
<hkern g1="W" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="143" />
<hkern g1="W" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="31" />
<hkern g1="W" g2="hyphen,uni00AD,endash,emdash" k="100" />
<hkern g1="W" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="33" />
<hkern g1="W" g2="J" k="149" />
<hkern g1="Z" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="21" />
<hkern g1="Z" g2="v,y,yacute,ydieresis" k="27" />
<hkern g1="Z" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="26" />
<hkern g1="Z" g2="u,ugrave,uacute,ucircumflex,udieresis" k="19" />
<hkern g1="Z" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="21" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="v,y,yacute,ydieresis" k="15" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="77" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="u,ugrave,uacute,ucircumflex,udieresis" k="32" />
<hkern g1="c,ccedilla" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="71" />
<hkern g1="b,p,thorn" g2="v,y,yacute,ydieresis" k="11" />
<hkern g1="b,p,thorn" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="89" />
<hkern g1="b,p,thorn" g2="z" k="15" />
<hkern g1="b,p,thorn" g2="x" k="15" />
<hkern g1="b,p,thorn" g2="h,k,l" k="20" />
<hkern g1="e,egrave,eacute,ecircumflex,edieresis" g2="v,y,yacute,ydieresis" k="13" />
<hkern g1="e,egrave,eacute,ecircumflex,edieresis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="74" />
<hkern g1="h,m,n,ntilde" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="10" />
<hkern g1="h,m,n,ntilde" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="166" />
<hkern g1="h,m,n,ntilde" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="10" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="v,y,yacute,ydieresis" k="15" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="120" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="z" k="16" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="x" k="21" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="h,k,l" k="20" />
<hkern g1="v,y,yacute,ydieresis" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="15" />
<hkern g1="v,y,yacute,ydieresis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="-5" />
<hkern g1="v,y,yacute,ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="167" />
<hkern g1="v,y,yacute,ydieresis" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="13" />
<hkern g1="v,y,yacute,ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="15" />
<hkern g1="r" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="20" />
<hkern g1="r" g2="v,y,yacute,ydieresis" k="-18" />
<hkern g1="r" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="-6" />
<hkern g1="r" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="173" />
<hkern g1="r" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="19" />
<hkern g1="r" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="20" />
<hkern g1="r" g2="h,k,l" k="50" />
<hkern g1="u,ugrave,uacute,ucircumflex,udieresis" g2="v,y,yacute,ydieresis" k="56" />
<hkern g1="x" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="40" />
<hkern g1="x" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="20" />
<hkern g1="z" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="16" />
<hkern g1="z" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="16" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="161" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="97" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="120" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="59" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="m,n,p,ntilde" k="20" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="s" k="92" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="50" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="285" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,687 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata></metadata>
<defs>
<font id="roboto_slablight" horiz-adv-x="1485" >
<font-face units-per-em="2048" ascent="1638" descent="-410" />
<missing-glyph horiz-adv-x="498" />
<glyph unicode="&#xfb01;" horiz-adv-x="1209" d="M75 88l163 13v883h-179v98h179v138q0 173 95.5 267t264.5 94q66 0 135 -15t140 -44l-19 -103q-60 25 -118 39t-131 14q-122 0 -184.5 -65t-62.5 -187v-138h621v-981l163 -13v-88h-445v88l163 13v883h-502v-883l163 -13v-88h-446v88z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1324" d="M932 1429q-63 20 -130 31.5t-146 11.5q-155 0 -226.5 -71t-71.5 -210v-109h279v-98h-279v-883l163 -13v-88h-446v88l163 13v883h-158v98h158v109q0 186 109 288t302 102q86 0 176.5 -17.5t181.5 -51.5h44v-1411l163 -13v-88h-445v88l163 13v1328v0z" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#xd;" horiz-adv-x="498" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#x9;" horiz-adv-x="0" />
<glyph unicode=" " horiz-adv-x="498" />
<glyph unicode="&#x09;" horiz-adv-x="498" />
<glyph unicode="&#xa0;" horiz-adv-x="498" />
<glyph unicode="!" horiz-adv-x="458" d="M273 478h-119v978h119v-978zM285 0h-142v167h142v-167z" />
<glyph unicode="&#x22;" horiz-adv-x="711" d="M270 1344l-33 -261h-71l2 255v222h102v-216zM510 1344l-33 -261h-72l3 258v219h102v-216z" />
<glyph unicode="#" horiz-adv-x="1246" d="M731 410h-314l-77 -410h-99l77 410h-255v93h272l83 441h-279v96h297l79 416h99l-79 -416h315l79 416h99l-79 -416h230v-96h-248l-83 -441h256v-93h-274l-77 -410h-99zM434 503h315l83 441h-315z" />
<glyph unicode="$" horiz-adv-x="1097" d="M862 359q0 111 -72 181t-254 134q-208 66 -308 159t-100 262q0 162 100 264t272 116v202h102v-202q175 -16 271.5 -131t94.5 -311l-3 -5h-112q0 152 -80.5 247t-223.5 95q-148 0 -224.5 -77.5t-76.5 -195.5q0 -114 68 -183.5t261 -133.5q206 -69 305.5 -160.5 t99.5 -258.5q0 -166 -103.5 -265.5t-279.5 -113.5v-190h-102v189q-181 12 -300 116t-115 315l3 6h111q0 -177 101.5 -255t244.5 -78q147 0 233.5 77.5t86.5 196.5z" />
<glyph unicode="%" horiz-adv-x="1458" d="M77 1176q0 127 78.5 214t206.5 87t206.5 -87t78.5 -214v-77q0 -126 -78.5 -212.5t-204.5 -86.5q-129 0 -208 86.5t-79 212.5v77zM174 1099q0 -88 49 -150t141 -62q89 0 137.5 62t48.5 150v77q0 88 -49 151t-139 63t-139 -63t-49 -151v-77zM810 357q0 126 78.5 213 t205.5 87q128 0 207 -87t79 -213v-78q0 -127 -79 -213.5t-205 -86.5q-129 0 -207.5 86.5t-78.5 213.5v78zM906 279q0 -88 49 -150.5t141 -62.5q89 0 138 62t49 151v78q0 91 -49 152t-140 61q-90 0 -139 -61.5t-49 -151.5v-78zM440 121l-74 48l711 1138l74 -48z" />
<glyph unicode="&#x26;" horiz-adv-x="1269" d="M370 794q-81 101 -119.5 183.5t-38.5 169.5q0 158 88.5 244t243.5 86q144 0 228.5 -81t84.5 -204q0 -91 -45 -155.5t-130 -129.5l-158 -122l411 -480q49 71 76 159t27 187h111q0 -128 -37 -235t-105 -194l185 -217l-2 -5h-138l-122 141q-85 -78 -186 -120t-218 -42 q-209 0 -330.5 107t-121.5 285q0 120 72.5 216.5t209.5 196.5zM526 80q92 0 179.5 36t157.5 103l-414 482l-8.5 8.5t-5.5 7.5l-47 -36q-115 -94 -155 -170t-40 -140q0 -124 85.5 -207.5t247.5 -83.5zM332 1149q0 -66 31.5 -138t95.5 -150l177 132q59 45 83.5 94t24.5 105 q0 79 -53 131t-147 52q-102 0 -157 -65t-55 -161z" />
<glyph unicode="'" horiz-adv-x="438" d="M276 1365l-39 -275h-71l8 266v204h102v-195z" />
<glyph unicode="(" horiz-adv-x="636" d="M114 588q0 363 138.5 651t309.5 385h6l26 -73q-145 -103 -253 -366t-108 -594v-20q0 -331 108 -594t253 -370l-26 -70h-6q-173 100 -310.5 382t-137.5 654v15z" />
<glyph unicode=")" horiz-adv-x="629" d="M491 573q0 -372 -138.5 -654t-310.5 -382l-6 1l-25 69q144 102 252.5 367t108.5 597v20q0 329 -110.5 595.5t-250.5 368.5l25 69l6 1q170 -98 309.5 -386t139.5 -651v-15z" />
<glyph unicode="*" horiz-adv-x="952" d="M398 1000l-332 108l32 101l332 -123l-4 370h104l-8 -373l324 127l33 -101l-333 -115l223 -294l-86 -63l-213 305l-204 -303l-85 61z" />
<glyph unicode="+" horiz-adv-x="1145" d="M627 740h444v-112h-444v-482h-120v482h-434v112h434v466h120v-466z" />
<glyph unicode="," horiz-adv-x="392" d="M271 48q0 -92 -37.5 -180t-102.5 -149l-71 52q47 66 69.5 131t22.5 144v142h119v-140z" />
<glyph unicode="-" horiz-adv-x="793" d="M632 570h-478v101h478v-101z" />
<glyph unicode="." horiz-adv-x="466" d="M282 0h-137v164h137v-164z" />
<glyph unicode="/" horiz-adv-x="798" d="M108 -125h-108l608 1581h108z" />
<glyph unicode="0" horiz-adv-x="1158" d="M1026 565q0 -282 -119.5 -434t-332.5 -152q-212 0 -332.5 152.5t-120.5 433.5v325q0 281 119.5 434t331.5 153q213 0 333.5 -153t120.5 -434v-325zM906 910q0 224 -85.5 344.5t-248.5 120.5q-162 0 -247 -121t-85 -344v-363q0 -222 86.5 -344.5t247.5 -122.5 q162 0 247 122t85 345v363z" />
<glyph unicode="1" horiz-adv-x="831" d="M114 88l261 13v1228l-287 -41v84l407 88v-1359l261 -13v-88h-642v88z" />
<glyph unicode="2" horiz-adv-x="1116" d="M101 0v92l477 541q133 150 187.5 250t54.5 192q0 135 -77 217.5t-216 82.5q-166 0 -252 -92t-86 -246h-111l-2 6q-5 182 117.5 308t333.5 126q188 0 300.5 -108t112.5 -290q0 -120 -75.5 -243.5t-209.5 -275.5l-402 -454l2 -5h635l10 205h106v-306h-905z" />
<glyph unicode="3" horiz-adv-x="1102" d="M374 793h138q159 0 241 79.5t82 204.5q0 136 -77 217t-228 81q-141 0 -230.5 -82.5t-89.5 -217.5h-112l-2 6q-5 170 119.5 283t314.5 113q194 0 309.5 -107t115.5 -297q0 -103 -64 -193.5t-180 -134.5q136 -39 203.5 -131.5t67.5 -218.5q0 -194 -125.5 -305t-322.5 -111 q-191 0 -327.5 108.5t-131.5 301.5l2 6h111q0 -139 96.5 -227t249.5 -88q155 0 242 80.5t87 230.5q0 153 -91 226.5t-260 73.5h-138v102z" />
<glyph unicode="4" horiz-adv-x="1178" d="M864 469h228v-101h-228v-267l163 -13v-88h-445v88l163 13v267h-682v68l670 1020h131v-987zM205 469h540v830l-6 2l-51 -109z" />
<glyph unicode="5" horiz-adv-x="1070" d="M827 1219l-12 126h-520l-54 -519q55 50 121 77t179 30q186 3 300 -125t114 -344q0 -221 -111 -353t-333 -132q-180 0 -299.5 100.5t-114.5 297.5l2 6h107q0 -147 83 -225t222 -78q163 0 243.5 98t80.5 284q0 163 -80.5 261.5t-225.5 98.5q-140 0 -213.5 -44.5 t-106.5 -134.5l-97 16l80 797h732v-237h-97z" />
<glyph unicode="6" horiz-adv-x="1124" d="M615 1477q75 0 148 -17t130 -49l-29 -96q-57 31 -114 45.5t-135 14.5q-169 0 -272 -133t-103 -404v-49q60 78 153 125t206 47q196 0 310 -135t114 -352q0 -215 -122.5 -355t-318.5 -140q-203 0 -332 152.5t-129 430.5v265q0 318 138.5 484t355.5 166zM575 863 q-121 0 -211.5 -63t-123.5 -162v-85q0 -227 95 -350t247 -123q146 0 233.5 114.5t87.5 279.5q0 175 -85 282t-243 107z" />
<glyph unicode="7" horiz-adv-x="1115" d="M1031 1354q-236 -279 -361.5 -568t-167.5 -664l-10 -122h-120l10 122q43 371 174.5 670.5t350.5 561.5h-717l-8 -205h-106v307h955v-102z" />
<glyph unicode="8" horiz-adv-x="1127" d="M987 1081q0 -118 -68.5 -206.5t-183.5 -128.5q132 -41 212.5 -137t80.5 -223q0 -196 -131 -301.5t-336 -105.5q-210 0 -339.5 105t-129.5 302q0 129 79 224.5t212 136.5q-115 40 -182.5 128t-67.5 206q0 188 118.5 292t307.5 104q187 0 307.5 -104.5t120.5 -291.5z M909 385q0 138 -100.5 224.5t-249.5 86.5q-152 0 -250 -86.5t-98 -224.5q0 -143 97 -224t253 -81q151 0 249.5 81.5t98.5 223.5zM868 1082q0 126 -89 209.5t-220 83.5q-135 0 -221 -80t-86 -213q0 -129 86 -206.5t223 -77.5q133 0 220 77.5t87 206.5z" />
<glyph unicode="9" horiz-adv-x="1138" d="M505 80q170 0 266 130t96 401v42q-54 -91 -143 -140.5t-198 -49.5q-199 0 -320.5 137.5t-121.5 357.5q0 221 127 370t316 149q213 0 338.5 -139t125.5 -420v-305q0 -319 -131.5 -476.5t-354.5 -157.5q-77 0 -156 15t-150 46l22 100q68 -32 134.5 -46t149.5 -14zM526 564 q130 0 217 66.5t124 164.5v132q0 226 -89.5 337t-245.5 111q-141 0 -232.5 -122t-91.5 -295q0 -169 85.5 -281.5t232.5 -112.5z" />
<glyph unicode=":" horiz-adv-x="389" d="M131 0zM268 0h-137v164h137v-164zM268 916h-137v164h137v-164z" />
<glyph unicode=";" horiz-adv-x="391" d="M65 0zM272 918h-137v164h137v-164zM276 48q0 -92 -37.5 -180t-102.5 -149l-71 52q47 66 69.5 131t22.5 144v142h119v-140z" />
<glyph unicode="&#x3c;" horiz-adv-x="1022" d="M289 578l-108 -28v-6l108 -28l614 -268v-126l-827 379v97l827 378v-126z" />
<glyph unicode="=" horiz-adv-x="1127" d="M981 833h-834v106h834v-106zM981 422h-834v106h834v-106z" />
<glyph unicode="&#x3e;" horiz-adv-x="1056" d="M125 844v123l844 -378v-97l-844 -379v124l631 274l108 27v6l-108 29z" />
<glyph unicode="?" horiz-adv-x="925" d="M361 404q1 131 22 182.5t114 136.5q107 110 157 186.5t50 192.5q0 128 -68 198t-194 70q-118 0 -190 -68.5t-73 -185.5h-111l-2 6q-3 165 103.5 260t272.5 95q179 0 280.5 -101t101.5 -273q0 -135 -66.5 -239.5t-188.5 -218.5q-62 -53 -75.5 -99t-13.5 -142h-119zM496 0 h-138v154h138v-154z" />
<glyph unicode="@" horiz-adv-x="1809" d="M1715 513q-10 -216 -117 -375t-313 -159q-78 0 -131 51t-69 141q-53 -96 -130.5 -144t-180.5 -48q-131 0 -199 119.5t-49 317.5q23 254 141 407.5t286 153.5q93 0 150.5 -27t126.5 -81l-2 -2h3l-50 -574q-10 -132 30 -180t95 -48q142 0 224.5 124.5t92.5 323.5 q19 389 -149 604.5t-530 215.5q-324 0 -533.5 -235.5t-226.5 -619.5q-19 -379 163.5 -612.5t519.5 -233.5q88 0 178 22t152 57l31 -75q-64 -41 -167 -65t-198 -24q-380 0 -588 249.5t-189 681.5q18 424 252.5 683t609.5 259q391 0 587.5 -241.5t179.5 -665.5zM636 416 q-16 -155 26 -247t138 -92q86 0 156 43t123 157v8.5t1 7.5l47 543q-32 23 -71.5 36.5t-86.5 13.5q-134 0 -222 -119t-111 -351z" />
<glyph unicode="A" d="M55 88l107 8l517 1360h113l512 -1360l109 -8v-88h-359v88l127 10l-120 326h-654l-121 -326l127 -10v-88h-358v88zM447 531h575l-283 770h-6z" />
<glyph unicode="B" horiz-adv-x="1322" d="M659 1456q227 0 353.5 -95.5t126.5 -287.5q0 -112 -63.5 -195t-172.5 -115q133 -24 216 -125t83 -233q0 -195 -126.5 -300t-338.5 -105h-666v88l163 13v1253l-163 13v89h163h425zM353 702v-601h384q161 0 253 79.5t92 222.5q0 131 -83.5 215t-242.5 84h-403zM353 803h335 q158 0 244.5 69.5t86.5 204.5q0 138 -92 207.5t-268 69.5h-306v-551z" />
<glyph unicode="C" horiz-adv-x="1349" d="M1230 1000h-93l-17 221q-58 69 -151 111.5t-215 42.5q-244 0 -388 -177.5t-144 -458.5v-21q0 -281 142.5 -459.5t374.5 -178.5q123 0 223.5 43t157.5 111l17 221h93v-256q-68 -94 -198.5 -157t-292.5 -63q-280 0 -458 207.5t-178 531.5v19q0 325 177.5 532.5t464.5 207.5 q162 0 289.5 -63.5t195.5 -157.5v-256z" />
<glyph unicode="D" horiz-adv-x="1401" d="M657 1456q267 0 441 -178t174 -457v-187q0 -280 -174 -457t-441 -177h-586v88l163 13v1253l-163 13v89h163h423zM353 1354v-1253h304q216 0 355.5 151t139.5 382v190q0 228 -140 379t-355 151h-304z" />
<glyph unicode="E" horiz-adv-x="1286" d="M950 705h-597v-604h688l9 218h106v-319h-1085v88l163 13v1253l-163 13v89h163h917v-320h-106l-9 218h-683v-547h597v-102z" />
<glyph unicode="F" horiz-adv-x="1258" d="M71 88l163 13v1253l-163 13v89h1092v-320h-106l-9 218h-695v-569h608v-103h-608v-581l163 -13v-88h-445v88z" />
<glyph unicode="G" horiz-adv-x="1420" d="M1239 160q-52 -64 -181 -122.5t-323 -58.5q-284 0 -462 205t-178 534v31q0 324 178 526t467 202q164 0 290 -54.5t205 -149.5v-253h-93l-21 213q-59 65 -153 103.5t-219 38.5q-248 0 -391 -174t-143 -450v-33q0 -284 140.5 -461t379.5 -177q142 0 243 37t142 79v353 l-280 5v97h399v-491z" />
<glyph unicode="H" horiz-adv-x="1537" d="M71 1367v89h445v-89l-163 -13v-582h828v582l-163 13v89h163h119h163v-89l-163 -13v-1253l163 -13v-88h-445v88l163 13v569h-828v-569l163 -13v-88h-445v88l163 13v1253z" />
<glyph unicode="I" horiz-adv-x="627" d="M91 1367v89h446v-89l-163 -13v-1253l163 -13v-88h-446v88l163 13v1253z" />
<glyph unicode="J" horiz-adv-x="1158" d="M1080 1456v-89l-163 -13v-941q0 -199 -118.5 -316.5t-306.5 -117.5q-205 0 -324 106t-114 310l2 6h112q0 -158 84 -239.5t240 -81.5q133 0 219 90.5t86 242.5v941l-163 13v89h283h163z" />
<glyph unicode="K" horiz-adv-x="1417" d="M71 88l163 13v1253l-163 13v89h445v-89l-163 -13v-568h199l490 573l-140 8v89h407v-89l-128 -12l-521 -615l562 -640l131 -12v-88h-415v88l138 8l-523 589h-200v-584l163 -13v-88h-445v88z" />
<glyph unicode="L" horiz-adv-x="1178" d="M71 0v88l163 13v1253l-163 13v89h163h120h163v-89l-163 -13v-1253h605l9 205h106v-306h-1003z" />
<glyph unicode="M" horiz-adv-x="1861" d="M1518 1280l-6 2l-541 -1282h-83l-540 1276l-6 -1l11 -632v-542l163 -13v-88h-445v88l163 13v1253l-163 13v89h163h157l535 -1282h6l537 1282h321v-89l-163 -13v-1253l163 -13v-88h-445v88l163 13v542z" />
<glyph unicode="N" horiz-adv-x="1536" d="M1469 1456v-89l-163 -13v-1354h-119l-827 1252l-6 -1v-1150l163 -13v-88h-446v88l163 13v1253l-163 13v89h163h120l827 -1250l6 1v1147l-163 13v89h282h163z" />
<glyph unicode="O" horiz-adv-x="1468" d="M1357 718q0 -328 -175 -533.5t-455 -205.5q-276 0 -448.5 206t-172.5 533v19q0 327 172 533.5t448 206.5q280 0 455.5 -206.5t175.5 -533.5v-19zM1237 739q0 283 -138 458t-373 175q-231 0 -365.5 -175t-134.5 -458v-21q0 -285 135 -460t366 -175q237 0 373.5 174.5 t136.5 460.5v21z" />
<glyph unicode="P" horiz-adv-x="1276" d="M685 1456q229 0 354.5 -116.5t125.5 -308.5q0 -194 -125.5 -310t-354.5 -116h-332v-504l163 -13v-88h-445v88l163 13v1253l-163 13v89h163h451zM353 707h332q180 0 270.5 91.5t90.5 230.5q0 140 -90 232.5t-271 92.5h-332v-647z" />
<glyph unicode="Q" horiz-adv-x="1463" d="M1357 718q0 -213 -77.5 -379.5t-215.5 -259.5l301 -215l-83 -76l-328 233q-53 -21 -110 -31.5t-117 -10.5q-276 0 -448.5 206t-172.5 533v19q0 327 172 533.5t448 206.5q280 0 455.5 -206.5t175.5 -533.5v-19zM1237 739q0 283 -138 458t-373 175q-231 0 -365.5 -175 t-134.5 -458v-21q0 -285 135 -460t366 -175q237 0 373.5 174.5t136.5 460.5v21z" />
<glyph unicode="R" horiz-adv-x="1374" d="M676 1455q234 0 359.5 -102t125.5 -295q0 -114 -67 -205t-189 -132q135 -34 194.5 -121.5t59.5 -220.5v-133q0 -77 24 -114t73 -40l49 -3v-89h-76q-106 0 -148 72t-42 176v129q0 132 -84.5 209.5t-235.5 80.5h-366v-566l163 -14v-87h-445v87l163 14v1252l-163 14v88h605z M353 769h309q197 0 288 79t91 211q0 140 -91 217t-274 77h-323v-584z" />
<glyph unicode="S" horiz-adv-x="1220" d="M1099 1024h-98l-17 206q-54 68 -147 106.5t-218 38.5q-180 0 -280.5 -78t-100.5 -194q0 -110 90.5 -183.5t313.5 -129.5q235 -60 357.5 -162t122.5 -269q0 -174 -142 -277t-363 -103q-156 0 -289.5 55t-218.5 157v255h98l17 -213q66 -75 169 -114t224 -39q172 0 278.5 76 t106.5 201q0 119 -89 194.5t-310 133.5q-239 60 -362 156t-123 259q0 167 140 272t361 105q159 0 283.5 -55t196.5 -149v-249z" />
<glyph unicode="T" horiz-adv-x="1280" d="M1218 1456v-307h-106l-9 205h-404v-1253l163 -13v-88h-446v88l163 13v1253h-404l-8 -205h-107v307h1158z" />
<glyph unicode="U" horiz-adv-x="1487" d="M505 1456v-89l-163 -13v-885q0 -186 110 -287.5t287 -101.5q180 0 293 101t113 288v885l-163 13v89h445v-89l-163 -13v-885q0 -238 -145.5 -364t-379.5 -126q-230 0 -373 126.5t-143 363.5v885l-163 13v89h163h119h163z" />
<glyph unicode="V" horiz-adv-x="1455" d="M430 1367l-136 -11l402 -1110l29 -97h6l29 97l401 1110l-136 11v89h378v-89l-113 -9l-506 -1358h-113l-507 1358l-112 9v89h378v-89z" />
<glyph unicode="W" horiz-adv-x="1937" d="M423 1367l-148 -11l230 -944l44 -222h6l54 222l320 1044h113l319 -1044l53 -225l6 1l47 224l227 944l-148 11v89h380v-89l-109 -8l-339 -1359h-113l-339 1117l-38 153h-6l-36 -153l-342 -1117h-113l-339 1359l-109 8v89h380v-89z" />
<glyph unicode="X" horiz-adv-x="1397" d="M54 88l122 10l453 640l-438 619l-122 10v89h400v-89l-139 -6l368 -532l369 532l-137 6v89h399v-89l-122 -10l-437 -619l453 -640l123 -10v-88h-399v88l137 6l-384 553l-385 -553l138 -6v-88h-399v88z" />
<glyph unicode="Y" horiz-adv-x="1423" d="M455 1367l-140 -10l394 -710l396 710l-140 10v89h401v-89l-124 -10l-474 -825v-431l163 -13v-88h-446v88l163 13v438l-470 818l-123 10v89h400v-89z" />
<glyph unicode="Z" horiz-adv-x="1220" d="M92 0v92l857 1262h-716l-8 -205h-107v307h977v-87l-861 -1268h778l9 205h107v-306h-1036z" />
<glyph unicode="[" horiz-adv-x="548" d="M486 1562h-210v-1772h210v-102h-329v1976h329v-102z" />
<glyph unicode="\" horiz-adv-x="810" d="M36 1456h116l608 -1581h-116z" />
<glyph unicode="]" horiz-adv-x="526" d="M23 1664h330v-1976h-330v102h210v1772h-210v102z" />
<glyph unicode="^" horiz-adv-x="844" d="M186 729h-115l299 727h89l299 -727h-116l-197 484l-29 105h-6l-30 -105z" />
<glyph unicode="_" horiz-adv-x="1149" d="M1000 -101h-881v101h881v-101z" />
<glyph unicode="`" horiz-adv-x="562" d="M442 1210h-117l-241 261l2 5h154z" />
<glyph unicode="a" horiz-adv-x="1130" d="M844 0q-12 55 -17 95t-5 81q-60 -85 -160 -141t-225 -56q-159 0 -246 82t-87 222q0 150 129 238t350 88h239v143q0 116 -74.5 182t-208.5 66q-90 0 -164.5 -24.5t-124.5 -66.5l-10 -145h-99l1 208q75 58 179.5 94t222.5 36q179 0 288 -91t109 -261v-532q0 -33 1.5 -63.5 t6.5 -59.5l108 -7v-88h-213zM450 85q130 0 229 60t143 155v217h-241q-163 0 -260.5 -67.5t-97.5 -170.5q0 -87 60.5 -140.5t166.5 -53.5z" />
<glyph unicode="b" horiz-adv-x="1133" d="M1027 511q0 -243 -110 -387.5t-303 -144.5q-119 0 -205 47.5t-139 136.5l-13 -163h-102v1458l-163 13v89h282v-648q54 91 138 140.5t200 49.5q195 0 305 -155.5t110 -414.5v-21zM906 532q0 207 -80 336.5t-236 129.5q-126 0 -202.5 -62t-113.5 -159v-489 q40 -94 119.5 -149.5t198.5 -55.5q156 0 235 116t79 312v21z" />
<glyph unicode="c" horiz-adv-x="1094" d="M559 80q119 0 210 68t91 189h106l2 -6q5 -150 -119.5 -251t-289.5 -101q-220 0 -341 151.5t-121 389.5v42q0 236 121 388t340 152q125 0 229 -47t169 -128l5 -236h-102l-19 192q-48 54 -119.5 85.5t-162.5 31.5q-174 0 -257.5 -124.5t-83.5 -313.5v-42q0 -192 83 -316 t259 -124z" />
<glyph unicode="d" horiz-adv-x="1216" d="M849 156q-54 -85 -139 -131t-200 -46q-194 0 -303.5 145t-109.5 387v21q0 259 109.5 414.5t305.5 155.5q113 0 196 -47.5t138 -135.5v539l-163 13v89h163h120v-1459l163 -13v-88h-270zM218 511q0 -196 78.5 -312t236.5 -116q115 0 192.5 52t120.5 143v512 q-40 92 -115.5 150t-195.5 58q-158 0 -237.5 -129.5t-79.5 -336.5v-21z" />
<glyph unicode="e" horiz-adv-x="1102" d="M574 -21q-204 0 -338 149.5t-134 380.5v55q0 232 133.5 385t322.5 153q199 0 313 -126t114 -336v-102h-764v-29q0 -182 97.5 -305.5t255.5 -123.5q111 0 190 31t135 89l51 -82q-61 -64 -154 -101.5t-222 -37.5zM558 1000q-132 0 -222.5 -101.5t-105.5 -254.5l2 -5h634v30 q0 141 -83 236t-225 95z" />
<glyph unicode="f" horiz-adv-x="725" d="M80 984v98h179v158q0 163 82 252t229 89q32 0 66 -5t69 -14l-15 -99q-24 6 -49 9.5t-59 3.5q-98 0 -150.5 -62t-52.5 -174v-158h258v-98h-258v-883l163 -13v-88h-446v88l163 13v883h-179z" />
<glyph unicode="g" horiz-adv-x="1148" d="M102 532q0 259 110.5 414.5t306.5 155.5q115 0 199.5 -50.5t139.5 -142.5l14 173h101v-1068q0 -209 -113 -330t-315 -121q-78 0 -166.5 19t-154.5 52l32 101q65 -31 136.5 -48t150.5 -17q154 0 232 91t78 253v137q-55 -83 -139 -127.5t-197 -44.5q-195 0 -305 145 t-110 387v21zM222 511q0 -195 79.5 -311.5t237.5 -116.5q117 0 194.5 53t119.5 146v502q-40 95 -115 154.5t-197 59.5q-158 0 -238.5 -130t-80.5 -336v-21z" />
<glyph unicode="h" horiz-adv-x="1298" d="M62 1471v89h282v-663q54 97 144 151t210 54q171 0 262.5 -106t91.5 -329v-566l163 -13v-88h-446v88l163 13v568q0 176 -69.5 252.5t-191.5 76.5q-123 0 -205.5 -64.5t-121.5 -171.5v-661l163 -13v-88h-445v88l163 13v1357z" />
<glyph unicode="i" horiz-adv-x="638" d="M89 88l163 13v879l-163 13v89h282v-981l163 -13v-88h-445v88zM371 1392h-119v168h119v-168z" />
<glyph unicode="j" horiz-adv-x="562" d="M402 -89q0 -167 -80 -257.5t-223 -90.5q-31 0 -57.5 5t-54.5 14l13 101q15 -5 42.5 -10t49.5 -5q90 0 140 61.5t50 181.5v1069l-163 13v89h283v-1171zM396 1396h-120v164h120v-164z" />
<glyph unicode="k" horiz-adv-x="1194" d="M62 1471v89h282v-930h127l329 351l-2 5l-99 7v89h381v-89l-126 -12l-370 -393l421 -489l120 -11v-88h-380v88l114 7l-376 432h-139v-426l163 -13v-88h-445v88l163 13v1357z" />
<glyph unicode="l" horiz-adv-x="610" d="M73 1471v89h282v-1459l163 -13v-88h-445v88l163 13v1357z" />
<glyph unicode="m" horiz-adv-x="1959" d="M71 993v89h269l11 -179q52 95 139 147t207 52q124 0 207 -60.5t119 -184.5q49 114 139.5 179.5t220.5 65.5q173 0 267.5 -115t94.5 -356v-529l163 -14v-88h-447v88l163 14v531q0 200 -70.5 282.5t-196.5 82.5q-140 0 -215.5 -89t-93.5 -227q0 -8 0.5 -15t0.5 -18v-548 l163 -13v-88h-446v88l163 13v532q0 196 -71.5 280.5t-196.5 84.5q-128 0 -202.5 -64.5t-104.5 -173.5v-659l163 -13v-88h-446v88l163 13v879z" />
<glyph unicode="n" horiz-adv-x="1319" d="M75 88l163 13v879l-163 13v89h269l11 -189q52 100 140.5 154.5t209.5 54.5q176 0 268 -107.5t92 -335.5v-558l163 -13v-88h-446v88l163 13v557q0 186 -69.5 263t-197.5 77q-126 0 -205.5 -66.5t-114.5 -176.5v-654l163 -13v-88h-446v88z" />
<glyph unicode="o" horiz-adv-x="1152" d="M97 557q0 239 131 392t347 153q217 0 348 -153t131 -392v-33q0 -240 -130.5 -392.5t-346.5 -152.5q-218 0 -349 152.5t-131 392.5v33zM217 524q0 -188 95 -316t265 -128q167 0 262 128t95 316v33q0 185 -95.5 314t-263.5 129t-263 -129t-95 -314v-33z" />
<glyph unicode="p" horiz-adv-x="1197" d="M65 993v89h263l15 -168q55 90 140.5 139t200.5 49q195 0 305 -155.5t110 -414.5v-21q0 -243 -110 -387.5t-303 -144.5q-114 0 -199.5 43.5t-139.5 123.5v-460l163 -13v-89h-445v89l163 13v1294zM979 532q0 206 -82 336t-240 130q-121 0 -196.5 -57.5t-113.5 -149.5v-520 q41 -89 118.5 -140t193.5 -51q157 0 238.5 118t81.5 313v21z" />
<glyph unicode="q" horiz-adv-x="1144" d="M97 532q0 259 109.5 414.5t305.5 155.5q112 0 194.5 -46.5t137.5 -133.5l12 160h105v-1396l163 -13v-89h-446v89l163 13v456q-55 -79 -138 -121t-193 -42q-194 0 -303.5 145t-109.5 387v21zM218 511q0 -196 78.5 -313.5t236.5 -117.5q112 0 188.5 50.5t119.5 138.5v528 q-42 89 -116.5 146t-189.5 57q-158 0 -237.5 -130.5t-79.5 -337.5v-21z" />
<glyph unicode="r" horiz-adv-x="823" d="M356 1082l15 -180v-13q46 100 125.5 156.5t188.5 56.5q23 0 44.5 -3.5t35.5 -7.5l-16 -112l-89 6q-113 0 -185.5 -63.5t-103.5 -174.5v-646l163 -13v-88h-445v88l163 13v879l-163 13v89h163h104z" />
<glyph unicode="s" horiz-adv-x="1025" d="M882 748h-98l-14 153q-45 47 -113.5 73t-157.5 26q-131 0 -196.5 -56.5t-65.5 -132.5q0 -75 56.5 -124t225.5 -86q193 -43 289 -117.5t96 -202.5q0 -135 -109.5 -218.5t-289.5 -83.5q-120 0 -218.5 33.5t-170.5 94.5v218h97l17 -154q48 -48 121.5 -69.5t153.5 -21.5 q130 0 205 57t75 138q0 76 -62.5 133t-225.5 93q-193 42 -286.5 111.5t-93.5 194.5q0 124 105 209.5t277 85.5q119 0 217.5 -36.5t160.5 -98.5z" />
<glyph unicode="t" horiz-adv-x="733" d="M372 1359v-277h238v-98h-238v-705q0 -106 38.5 -150.5t102.5 -44.5q29 0 56.5 2.5t63.5 8.5l18 -89q-30 -13 -73 -20t-86 -7q-114 0 -177.5 72t-63.5 228v705h-186v98h186v277h121z" />
<glyph unicode="u" horiz-adv-x="1232" d="M892 178q-51 -95 -139.5 -147t-208.5 -52q-171 0 -267.5 116t-96.5 360v525l-134 13v89h134h119v-629q0 -198 67.5 -284t191.5 -86q136 0 216.5 60t113.5 166v671l-154 13v89h154h120v-981l145 -13v-88h-250z" />
<glyph unicode="v" horiz-adv-x="1155" d="M411 993l-135 -10l270 -712l35 -127h6l38 127l266 712l-135 10v89h364v-89l-106 -9l-382 -984h-96l-383 984l-106 9v89h364v-89z" />
<glyph unicode="w" horiz-adv-x="1690" d="M419 993l-136 -11l175 -631l41 -193h6l51 193l231 731h102l231 -731l52 -198h6l45 198l170 631l-136 11v89h364v-89l-105 -8l-287 -985h-102l-241 740l-47 187h-6l-47 -187l-237 -740h-102l-286 985l-105 8v89h363v-89z" />
<glyph unicode="x" horiz-adv-x="1192" d="M73 88l121 11l342 452l-326 431l-122 11v89h367v-89l-112 -6l258 -347l259 348l-111 5v89h367v-89l-121 -11l-326 -431l341 -452l122 -11v-88h-366v88l111 5l-275 368l-274 -368l111 -5v-88h-366v88z" />
<glyph unicode="y" horiz-adv-x="1174" d="M1135 993l-110 -9l-437 -1157q-42 -110 -109 -187t-196 -77q-21 0 -51 4.5t-44 9.5l14 100q12 -2 38.5 -4.5t37.5 -2.5q79 0 125 55t81 143l56 145l-384 971l-110 9v89h372v-89l-129 -10l264 -690l38 -130h6l296 820l-132 10v89h374v-89z" />
<glyph unicode="z" horiz-adv-x="1080" d="M263 101h588l9 205h107v-306h-851v88l652 891h-534l-8 -204h-107v307h800v-89z" />
<glyph unicode="{" horiz-adv-x="697" d="M631 -404q-183 55 -260 173.5t-77 288.5v226q0 122 -56.5 190.5t-174.5 68.5v104q118 0 174.5 67.5t56.5 189.5v228q0 171 77 290.5t260 174.5l27 -79q-128 -41 -186.5 -141.5t-58.5 -244.5v-228q0 -110 -45.5 -191t-137.5 -118q92 -39 137.5 -120.5t45.5 -190.5v-226 q0 -143 59.5 -241.5t187.5 -140.5z" />
<glyph unicode="|" horiz-adv-x="426" d="M251 -270h-101v1726h101v-1726z" />
<glyph unicode="}" horiz-adv-x="696" d="M27 -324q127 42 186.5 141t59.5 241v226q0 112 47.5 193t146.5 117q-99 35 -146.5 116t-47.5 194v228q0 144 -58.5 244.5t-185.5 141.5l26 79q182 -55 260 -174.5t78 -290.5v-228q0 -122 56 -189.5t175 -67.5v-104q-119 0 -175 -68.5t-56 -190.5v-226 q0 -170 -77.5 -288.5t-260.5 -173.5z" />
<glyph unicode="~" horiz-adv-x="1376" d="M1234 740q0 -129 -81 -223t-201 -94q-88 0 -160.5 35.5t-160.5 114.5q-64 53 -119 80t-111 27q-79 0 -131.5 -60.5t-52.5 -160.5l-96 15q0 131 79 222t201 91q87 0 161 -37.5t162 -112.5q64 -57 117 -82.5t111 -25.5q76 0 130.5 64.5t54.5 161.5z" />
<glyph unicode="&#xa1;" horiz-adv-x="456" d="M272 -374h-119v978h119v-978zM284 898h-142v184h142v-184z" />
<glyph unicode="&#xa2;" horiz-adv-x="1088" d="M586 80q119 0 210 68t91 189h107l2 -6q4 -135 -99.5 -232.5t-250.5 -115.5v-228h-120v228q-193 21 -297.5 169t-104.5 368v42q0 219 104.5 366.5t297.5 169.5v220h120v-219q106 -12 193 -57t144 -115l5 -236h-102l-19 192q-48 54 -119.5 85.5t-162.5 31.5 q-174 0 -257.5 -124.5t-83.5 -313.5v-42q0 -192 83 -316t259 -124z" />
<glyph unicode="&#xa3;" horiz-adv-x="1164" d="M132 0v101h10q70 15 104.5 129.5t34.5 235.5l-7 176h-206v102h203l-11 296q0 204 106 320.5t284 116.5q186 0 280 -103.5t91 -277.5l-3 -6h-111q0 148 -69 216.5t-188 68.5q-125 0 -198 -88t-73 -247l11 -296h451v-102h-448l7 -176q0 -107 -25.5 -204t-71.5 -161h654 l10 205h106v-306h-941z" />
<glyph unicode="&#xa4;" horiz-adv-x="1461" d="M1116 133q-81 -74 -181.5 -113.5t-210.5 -39.5q-111 0 -211 39.5t-179 112.5l-155 -158l-85 86l159 161q-60 81 -92 179t-32 208q0 112 34.5 214t98.5 184l-168 171l85 87l166 -170q78 67 175 103.5t204 36.5q106 0 203.5 -37t176.5 -104l169 172l87 -88l-171 -175 q62 -82 96 -182.5t34 -211.5q0 -108 -32 -206.5t-90 -177.5l163 -164l-87 -87zM242 608q0 -215 141 -366t341 -151q198 0 339.5 151t141.5 366q0 213 -141.5 363.5t-339.5 150.5q-200 0 -341 -150.5t-141 -363.5z" />
<glyph unicode="&#xa5;" horiz-adv-x="1383" d="M1327 1367l-132 -10l-395 -652h371v-87h-420v-206h420v-86h-420v-225l163 -13v-88h-446v88l163 13v225h-415v86h415v206h-415v87h369l-395 652l-131 10v89h373v-89l-106 -9l367 -626l366 626l-106 9v89h374v-89z" />
<glyph unicode="&#xa6;" horiz-adv-x="461" d="M150 -270v771h119v-771h-119zM269 698h-119v758h119v-758z" />
<glyph unicode="&#xa7;" horiz-adv-x="1213" d="M1100 431q0 -98 -61 -168.5t-171 -103.5q94 -50 141 -120.5t47 -177.5q0 -166 -127 -261t-342 -95q-212 0 -357 102.5t-140 322.5l2 6l111 2q0 -173 113 -252t271 -79q163 0 256 70.5t93 181.5q0 106 -77.5 166t-292.5 121q-242 61 -359 149t-117 256q0 98 58.5 169 t164.5 105q-90 49 -134 119.5t-44 175.5q0 161 128 259t342 98q222 0 346.5 -111.5t120.5 -313.5l-2 -6h-112q0 141 -94 235t-259 94q-173 0 -262 -71t-89 -181q0 -114 74 -173t299 -122q247 -65 360 -148.5t113 -248.5zM577 729q-40 9 -75.5 19.5t-66.5 22.5 q-113 -14 -169.5 -73t-56.5 -145q0 -116 79 -175t323 -127q34 -10 65 -19t60 -18q115 13 180 71.5t65 142.5q0 107 -85.5 170t-318.5 131z" />
<glyph unicode="&#xa8;" horiz-adv-x="972" d="M795 1299h-173v157h173v-157zM326 1299h-174v157h174v-157z" />
<glyph unicode="&#xa9;" horiz-adv-x="1595" d="M1098 596l2 -6q4 -150 -78.5 -229t-230.5 -79q-151 0 -242 106.5t-91 280.5v119q0 172 91 279.5t242 107.5q148 0 231 -79t79 -228l-2 -6h-91q0 113 -55.5 168t-161.5 55q-110 0 -171.5 -83.5t-61.5 -212.5v-120q0 -132 61.5 -214.5t171.5 -82.5q107 0 161.5 54t54.5 170 h91zM177 729q0 -279 182.5 -471.5t442.5 -192.5q257 0 440 192.5t183 471.5q0 277 -182.5 468.5t-440.5 191.5q-260 0 -442.5 -191.5t-182.5 -468.5zM92 729q0 315 207 531t503 216q295 0 502 -216t207 -531q0 -316 -207.5 -533t-501.5 -217q-296 0 -503 217t-207 533z" />
<glyph unicode="&#xaa;" horiz-adv-x="875" d="M620 706q-9 25 -14.5 52.5t-7.5 55.5q-37 -53 -98.5 -87.5t-144.5 -34.5q-119 0 -184 61t-65 167q0 105 78.5 163t228.5 58h183v61q0 85 -41.5 131.5t-120.5 46.5q-92 0 -142 -37.5t-50 -108.5l-100 9l-2 6q-5 98 77.5 163t216.5 65q124 0 197.5 -71.5t73.5 -204.5v-314 q0 -50 6 -94t20 -87h-111zM374 787q70 0 136 38.5t86 85.5v146h-182q-95 0 -147.5 -38.5t-52.5 -94.5q0 -66 39 -101.5t121 -35.5z" />
<glyph unicode="&#xab;" horiz-adv-x="919" d="M83 132zM207 520l276 -388h-105l-295 379v19l295 379h105zM516 520l276 -388h-105l-295 379v19l295 379h105z" />
<glyph unicode="&#xac;" horiz-adv-x="1112" d="M932 386h-119v284h-692v106h811v-390z" />
<glyph unicode="&#xad;" horiz-adv-x="793" d="M154 570zM632 570h-478v101h478v-101z" />
<glyph unicode="&#xae;" horiz-adv-x="1595" d="M92 729q0 315 207 531t503 216q295 0 502 -216t207 -531q0 -316 -207.5 -533t-501.5 -217q-296 0 -503 217t-207 533zM177 729q0 -279 182.5 -471.5t442.5 -192.5q257 0 440 192.5t183 471.5q0 277 -182.5 468.5t-440.5 191.5q-260 0 -442.5 -191.5t-182.5 -468.5z M639 672v-356h-98v850h258q147 0 226 -63t79 -185q0 -68 -36.5 -117t-104.5 -80q68 -25 98 -78t30 -128v-56q0 -40 4 -73t13 -54v-16h-102q-9 21 -11 61.5t-2 82.5v54q0 84 -38.5 121t-127.5 37h-188zM639 763h181q79 0 133 40.5t54 112.5q0 85 -46.5 122t-161.5 37h-160 v-312z" />
<glyph unicode="&#xaf;" horiz-adv-x="1005" d="M824 1359h-670v97h670v-97z" />
<glyph unicode="&#xb0;" horiz-adv-x="747" d="M124 1227q0 102 72 176t173 74q98 0 169.5 -74t71.5 -176q0 -104 -71 -175.5t-170 -71.5q-102 0 -173.5 71.5t-71.5 175.5zM213 1227q0 -67 45 -111.5t111 -44.5q65 0 108.5 44t43.5 112t-43.5 113.5t-108.5 45.5q-66 0 -111 -46t-45 -113z" />
<glyph unicode="&#xb1;" horiz-adv-x="1082" d="M600 829h391v-101h-391v-439h-111v439h-414v101h414v438h111v-438zM1017 48h-835v102h835v-102z" />
<glyph unicode="&#xb2;" horiz-adv-x="816" d="M683 667h-570v90l315 282q77 70 104 115t27 92q0 65 -38.5 103.5t-117.5 38.5q-87 0 -134 -42t-47 -108h-100l-2 6q-6 97 72.5 166t210.5 69q124 0 195 -60.5t71 -173.5q0 -75 -47 -136t-150 -158l-215 -188l3 -6h423v-90z" />
<glyph unicode="&#xb3;" horiz-adv-x="837" d="M398 1119q88 0 130 35t42 99q0 59 -45 96.5t-133 37.5q-75 0 -124 -35.5t-49 -93.5h-100l-2 6q-6 94 75 154t200 60q133 0 210 -58.5t77 -166.5q0 -59 -35.5 -105.5t-99.5 -71.5q73 -22 111 -70.5t38 -119.5q0 -109 -83.5 -170t-217.5 -61q-120 0 -206.5 58.5 t-81.5 168.5l2 6h101q0 -63 51 -103t134 -40q90 0 141 38t51 103q0 75 -46.5 109.5t-139.5 34.5h-123v89h123z" />
<glyph unicode="&#xb4;" horiz-adv-x="574" d="M301 1478h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xb5;" horiz-adv-x="1297" d="M347 1082v-633q0 -207 71 -288t192 -81q137 0 212 59.5t103 170.5v670l-163 13v89h283v-981l163 -13v-88h-266l-11 155q-48 -85 -126 -130.5t-187 -45.5q-88 0 -157 30t-114 96v-521h-118v1396l-163 13v89h163h118z" />
<glyph unicode="&#xb6;" horiz-adv-x="1065" d="M513 88l163 13v419h-106q-234 0 -363 129.5t-129 338.5q0 207 129.5 337.5t362.5 130.5h225v-1355l163 -13v-88h-445v88zM958 1456v-89l-163 -13v102h163z" />
<glyph unicode="&#xb7;" horiz-adv-x="496" d="M313 624h-154v180h154v-180z" />
<glyph unicode="&#xb8;" horiz-adv-x="470" d="M250 0l-11 -64q79 -9 127.5 -48.5t48.5 -122.5q0 -91 -79 -145.5t-226 -54.5l-7 78q89 0 150.5 30.5t61.5 89.5q0 57 -41 79.5t-145 30.5l28 127h93z" />
<glyph unicode="&#xb9;" horiz-adv-x="506" d="M348 665h-109v703l-148 -7v93l257 23v-812z" />
<glyph unicode="&#xba;" horiz-adv-x="921" d="M121 1142q0 148 87.5 241.5t234.5 93.5q149 0 236.5 -93.5t87.5 -241.5v-117q0 -149 -87.5 -241.5t-234.5 -92.5q-149 0 -236.5 92.5t-87.5 241.5v117zM229 1025q0 -107 54.5 -173t161.5 -66q103 0 158.5 66.5t55.5 172.5v117q0 104 -56 171t-160 67t-159 -67t-55 -171 v-117z" />
<glyph unicode="&#xbb;" horiz-adv-x="916" d="M105 162zM210 944l295 -384v-19l-295 -379h-105l276 388l-276 394h105zM525 944l295 -384v-19l-295 -379h-105l276 388l-276 394h105z" />
<glyph unicode="&#xbc;" horiz-adv-x="1492" d="M165 0zM422 664h-109v703l-148 -7v93l257 23v-812zM380 129l-74 48l711 1138l74 -48zM1307 260h153v-90h-153v-170h-108v170h-431l-3 67l428 564h114v-541zM893 260h306v403l-6 1l-26 -44z" />
<glyph unicode="&#xbd;" horiz-adv-x="1462" d="M165 0zM392 129l-74 48l711 1138l74 -48zM422 664h-109v703l-148 -7v93l257 23v-812zM1477 0h-570v90l315 282q77 70 104 115t27 92q0 65 -38.5 103.5t-117.5 38.5q-87 0 -134 -42t-47 -108h-100l-2 6q-6 97 72.5 166t210.5 69q124 0 195 -60.5t71 -173.5q0 -75 -47 -136 t-150 -158l-215 -188l3 -6h423v-90z" />
<glyph unicode="&#xbe;" horiz-adv-x="1670" d="M124 0zM587 129l-74 48l711 1138l74 -48zM1516 260h153v-90h-153v-170h-108v170h-431l-3 67l428 564h114v-541zM1102 260h306v403l-6 1l-26 -44zM423 1120q88 0 130 35t42 99q0 59 -45 96.5t-133 37.5q-75 0 -124 -35.5t-49 -93.5h-100l-2 6q-6 94 75 154t200 60 q133 0 210 -58.5t77 -166.5q0 -59 -35.5 -105.5t-99.5 -71.5q73 -22 111 -70.5t38 -119.5q0 -109 -83.5 -170t-217.5 -61q-120 0 -206.5 58.5t-81.5 168.5l2 6h101q0 -63 51 -103t134 -40q90 0 141 38t51 103q0 75 -46.5 109.5t-139.5 34.5h-123v89h123z" />
<glyph unicode="&#xbf;" horiz-adv-x="862" d="M521 678q-2 -131 -23.5 -183t-113.5 -136q-109 -113 -158 -188.5t-49 -189.5q0 -128 67.5 -198t194.5 -70q117 0 189 68.5t74 185.5h112l2 -6q2 -165 -105 -260t-272 -95q-180 0 -280.5 101t-100.5 273q0 134 65.5 238t188.5 219q61 52 75 98.5t14 142.5h120zM385 1083 h139v-155h-139v155z" />
<glyph unicode="&#xc0;" d="M55 0zM55 88l107 8l517 1360h113l512 -1360l109 -8v-88h-359v88l127 10l-120 326h-654l-121 -326l127 -10v-88h-358v88zM447 531h575l-283 770h-6zM802 1565h-117l-241 261l2 5h154z" />
<glyph unicode="&#xc1;" d="M55 0zM55 88l107 8l517 1360h113l512 -1360l109 -8v-88h-359v88l127 10l-120 326h-654l-121 -326l127 -10v-88h-358v88zM447 531h575l-283 770h-6zM843 1816h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xc2;" d="M55 0zM55 88l107 8l517 1360h113l512 -1360l109 -8v-88h-359v88l127 10l-120 326h-654l-121 -326l127 -10v-88h-358v88zM447 531h575l-283 770h-6zM1013 1611v-18h-112l-167 168l-166 -168h-109v21l226 221h98z" />
<glyph unicode="&#xc3;" d="M55 0zM55 88l107 8l517 1360h113l512 -1360l109 -8v-88h-359v88l127 10l-120 326h-654l-121 -326l127 -10v-88h-358v88zM447 531h575l-283 770h-6zM1077 1820q0 -88 -55 -146t-137 -58q-74 0 -151 55t-131 55q-47 0 -79 -35t-32 -89l-79 18q0 86 53.5 144.5t136.5 58.5 q65 0 147.5 -55t134.5 -55q46 0 79 36t33 91z" />
<glyph unicode="&#xc4;" d="M55 0zM55 88l107 8l517 1360h113l512 -1360l109 -8v-88h-359v88l127 10l-120 326h-654l-121 -326l127 -10v-88h-358v88zM447 531h575l-283 770h-6zM1049 1639h-173v157h173v-157zM580 1639h-174v157h174v-157z" />
<glyph unicode="&#xc5;" d="M55 0zM55 88l107 8l517 1360h113l512 -1360l109 -8v-88h-359v88l127 10l-120 326h-654l-121 -326l127 -10v-88h-358v88zM447 531h575l-283 770h-6zM567 1740q0 69 49.5 117.5t119.5 48.5q68 0 117 -48.5t49 -117.5q0 -71 -48.5 -117t-117.5 -46q-71 0 -120 46t-49 117z M645 1740q0 -39 26.5 -65t64.5 -26q37 0 62 25.5t25 65.5t-25 66.5t-62 26.5q-38 0 -64.5 -26.5t-26.5 -66.5z" />
<glyph unicode="&#xc6;" horiz-adv-x="2058" d="M51 88l130 10l822 1358h864v-307h-107l-9 205h-578l23 -545h589v-102h-585l26 -606h587l9 205h106v-306h-980v88l158 12l-12 289h-597l-172 -293l106 -8v-88h-380v88zM564 502h526l-35 839l-6 1l-15 -44z" />
<glyph unicode="&#xc7;" horiz-adv-x="1349" d="M103 0zM1230 1000h-93l-17 221q-58 69 -151 111.5t-215 42.5q-244 0 -388 -177.5t-144 -458.5v-21q0 -281 142.5 -459.5t374.5 -178.5q123 0 223.5 43t157.5 111l17 221h93v-256q-68 -94 -198.5 -157t-292.5 -63q-280 0 -458 207.5t-178 531.5v19q0 325 177.5 532.5 t464.5 207.5q162 0 289.5 -63.5t195.5 -157.5v-256zM787 -3l-11 -64q79 -9 127.5 -48.5t48.5 -122.5q0 -91 -79 -145.5t-226 -54.5l-7 78q89 0 150.5 30.5t61.5 89.5q0 57 -41 79.5t-145 30.5l28 127h93z" />
<glyph unicode="&#xc8;" horiz-adv-x="1286" d="M71 0zM950 705h-597v-604h688l9 218h106v-319h-1085v88l163 13v1253l-163 13v89h163h917v-320h-106l-9 218h-683v-547h597v-102zM702 1567h-117l-241 261l2 5h154z" />
<glyph unicode="&#xc9;" horiz-adv-x="1286" d="M71 0zM950 705h-597v-604h688l9 218h106v-319h-1085v88l163 13v1253l-163 13v89h163h917v-320h-106l-9 218h-683v-547h597v-102zM743 1818h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xca;" horiz-adv-x="1286" d="M71 0zM950 705h-597v-604h688l9 218h106v-319h-1085v88l163 13v1253l-163 13v89h163h917v-320h-106l-9 218h-683v-547h597v-102zM913 1613v-18h-112l-167 168l-166 -168h-109v21l226 221h98z" />
<glyph unicode="&#xcb;" horiz-adv-x="1286" d="M71 0zM950 705h-597v-604h688l9 218h106v-319h-1085v88l163 13v1253l-163 13v89h163h917v-320h-106l-9 218h-683v-547h597v-102zM949 1641h-173v157h173v-157zM480 1641h-174v157h174v-157z" />
<glyph unicode="&#xcc;" horiz-adv-x="627" d="M32 0zM91 1367v89h446v-89l-163 -13v-1253l163 -13v-88h-446v88l163 13v1253zM390 1566h-117l-241 261l2 5h154z" />
<glyph unicode="&#xcd;" horiz-adv-x="627" d="M91 0zM91 1367v89h446v-89l-163 -13v-1253l163 -13v-88h-446v88l163 13v1253zM430 1817h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xce;" horiz-adv-x="627" d="M47 0zM91 1367v89h446v-89l-163 -13v-1253l163 -13v-88h-446v88l163 13v1253zM601 1612v-18h-112l-167 168l-166 -168h-109v21l226 221h98z" />
<glyph unicode="&#xcf;" horiz-adv-x="627" d="M0 0zM91 1367v89h446v-89l-163 -13v-1253l163 -13v-88h-446v88l163 13v1253zM637 1640h-173v157h173v-157zM168 1640h-174v157h174v-157z" />
<glyph unicode="&#xd0;" horiz-adv-x="1431" d="M687 1456q267 0 441 -178t174 -457v-187q0 -280 -174 -457t-441 -177h-586v88l163 13v588h-161v102h161v563l-163 13v89h586zM715 689h-332v-588h304q216 0 355.5 151t139.5 382v190q0 228 -140 379t-355 151h-304v-563h332v-102z" />
<glyph unicode="&#xd1;" horiz-adv-x="1536" d="M71 0zM1469 1456v-89l-163 -13v-1354h-119l-827 1252l-6 -1v-1150l163 -13v-88h-446v88l163 13v1253l-163 13v89h163h120l827 -1250l6 1v1147l-163 13v89h282h163zM1081 1822q0 -88 -55 -146t-137 -58q-74 0 -151 55t-131 55q-47 0 -79 -35t-32 -89l-79 18 q0 86 53.5 144.5t136.5 58.5q65 0 147.5 -55t134.5 -55q46 0 79 36t33 91z" />
<glyph unicode="&#xd2;" horiz-adv-x="1468" d="M106 0zM1357 718q0 -328 -175 -533.5t-455 -205.5q-276 0 -448.5 206t-172.5 533v19q0 327 172 533.5t448 206.5q280 0 455.5 -206.5t175.5 -533.5v-19zM1237 739q0 283 -138 458t-373 175q-231 0 -365.5 -175t-134.5 -458v-21q0 -285 135 -460t366 -175 q237 0 373.5 174.5t136.5 460.5v21zM797 1577h-117l-241 261l2 5h154z" />
<glyph unicode="&#xd3;" horiz-adv-x="1468" d="M106 0zM1357 718q0 -328 -175 -533.5t-455 -205.5q-276 0 -448.5 206t-172.5 533v19q0 327 172 533.5t448 206.5q280 0 455.5 -206.5t175.5 -533.5v-19zM1237 739q0 283 -138 458t-373 175q-231 0 -365.5 -175t-134.5 -458v-21q0 -285 135 -460t366 -175 q237 0 373.5 174.5t136.5 460.5v21zM838 1828h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xd4;" horiz-adv-x="1468" d="M106 0zM1357 718q0 -328 -175 -533.5t-455 -205.5q-276 0 -448.5 206t-172.5 533v19q0 327 172 533.5t448 206.5q280 0 455.5 -206.5t175.5 -533.5v-19zM1237 739q0 283 -138 458t-373 175q-231 0 -365.5 -175t-134.5 -458v-21q0 -285 135 -460t366 -175 q237 0 373.5 174.5t136.5 460.5v21zM1008 1623v-18h-112l-167 168l-166 -168h-109v21l226 221h98z" />
<glyph unicode="&#xd5;" horiz-adv-x="1468" d="M106 0zM1357 718q0 -328 -175 -533.5t-455 -205.5q-276 0 -448.5 206t-172.5 533v19q0 327 172 533.5t448 206.5q280 0 455.5 -206.5t175.5 -533.5v-19zM1237 739q0 283 -138 458t-373 175q-231 0 -365.5 -175t-134.5 -458v-21q0 -285 135 -460t366 -175 q237 0 373.5 174.5t136.5 460.5v21zM1072 1832q0 -88 -55 -146t-137 -58q-74 0 -151 55t-131 55q-47 0 -79 -35t-32 -89l-79 18q0 86 53.5 144.5t136.5 58.5q65 0 147.5 -55t134.5 -55q46 0 79 36t33 91z" />
<glyph unicode="&#xd6;" horiz-adv-x="1468" d="M106 0zM1357 718q0 -328 -175 -533.5t-455 -205.5q-276 0 -448.5 206t-172.5 533v19q0 327 172 533.5t448 206.5q280 0 455.5 -206.5t175.5 -533.5v-19zM1237 739q0 283 -138 458t-373 175q-231 0 -365.5 -175t-134.5 -458v-21q0 -285 135 -460t366 -175 q237 0 373.5 174.5t136.5 460.5v21zM1044 1651h-173v157h173v-157zM575 1651h-174v157h174v-157z" />
<glyph unicode="&#xd7;" horiz-adv-x="1056" d="M79 318l357 365l-343 350l79 80l343 -350l343 350l79 -80l-344 -350l359 -365l-79 -79l-358 364l-357 -364z" />
<glyph unicode="&#xd8;" horiz-adv-x="1408" d="M1351 718q0 -328 -175 -533.5t-455 -205.5q-98 0 -185 27.5t-158 80.5l-105 -171h-104l141 229q-101 99 -155.5 246.5t-54.5 326.5v19q0 327 172 533.5t448 206.5q96 0 183.5 -27t161.5 -78l82 133h104l-117 -191q103 -100 160 -249t57 -328v-19zM1231 739 q0 148 -40.5 270.5t-113.5 202.5l-6 1l-637 -1035q59 -47 131 -71t156 -24q237 0 373.5 174.5t136.5 460.5v21zM220 718q0 -148 38 -269.5t109 -200.5l6 -1l635 1033q-60 44 -132.5 68t-155.5 24q-231 0 -365.5 -175t-134.5 -458v-21z" />
<glyph unicode="&#xd9;" horiz-adv-x="1487" d="M60 0zM505 1456v-89l-163 -13v-885q0 -186 110 -287.5t287 -101.5q180 0 293 101t113 288v885l-163 13v89h445v-89l-163 -13v-885q0 -238 -145.5 -364t-379.5 -126q-230 0 -373 126.5t-143 363.5v885l-163 13v89h163h119h163zM807 1560h-117l-241 261l2 5h154z" />
<glyph unicode="&#xda;" horiz-adv-x="1487" d="M60 0zM505 1456v-89l-163 -13v-885q0 -186 110 -287.5t287 -101.5q180 0 293 101t113 288v885l-163 13v89h445v-89l-163 -13v-885q0 -238 -145.5 -364t-379.5 -126q-230 0 -373 126.5t-143 363.5v885l-163 13v89h163h119h163zM848 1811h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xdb;" horiz-adv-x="1487" d="M60 0zM505 1456v-89l-163 -13v-885q0 -186 110 -287.5t287 -101.5q180 0 293 101t113 288v885l-163 13v89h445v-89l-163 -13v-885q0 -238 -145.5 -364t-379.5 -126q-230 0 -373 126.5t-143 363.5v885l-163 13v89h163h119h163zM1018 1606v-18h-112l-167 168l-166 -168 h-109v21l226 221h98z" />
<glyph unicode="&#xdc;" horiz-adv-x="1487" d="M60 0zM505 1456v-89l-163 -13v-885q0 -186 110 -287.5t287 -101.5q180 0 293 101t113 288v885l-163 13v89h445v-89l-163 -13v-885q0 -238 -145.5 -364t-379.5 -126q-230 0 -373 126.5t-143 363.5v885l-163 13v89h163h119h163zM1054 1634h-173v157h173v-157zM585 1634 h-174v157h174v-157z" />
<glyph unicode="&#xdd;" horiz-adv-x="1423" d="M55 0zM455 1367l-140 -10l394 -710l396 710l-140 10v89h401v-89l-124 -10l-474 -825v-431l163 -13v-88h-446v88l163 13v438l-470 818l-123 10v89h400v-89zM822 1811h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xde;" horiz-adv-x="1257" d="M70 1367v89h282h163v-89l-163 -13v-202h324q221 0 345 -115t124 -299q0 -185 -123.5 -299.5t-345.5 -114.5h-324v-223l163 -13v-88h-445v88l163 13v1253zM352 1051v-626h324q173 0 261.5 92t88.5 219q0 130 -88 222.5t-262 92.5h-324z" />
<glyph unicode="&#xdf;" horiz-adv-x="1263" d="M337 0h-282v88l163 13v981q0 204 102 317t273 113q140 0 232 -79.5t92 -222.5q0 -109 -61.5 -215.5t-61.5 -184.5q0 -86 184 -228t184 -287q0 -153 -109.5 -234.5t-266.5 -81.5q-86 0 -176.5 23.5t-129.5 56.5l34 101q40 -31 114.5 -55.5t143.5 -24.5q125 0 197.5 60 t72.5 155q0 99 -184 240.5t-184 276.5q0 93 63 201.5t63 190.5q0 92 -59.5 149.5t-137.5 57.5q-121 0 -193.5 -85.5t-72.5 -243.5v-1082z" />
<glyph unicode="&#xe0;" horiz-adv-x="1130" d="M104 0zM844 0q-12 55 -17 95t-5 81q-60 -85 -160 -141t-225 -56q-159 0 -246 82t-87 222q0 150 129 238t350 88h239v143q0 116 -74.5 182t-208.5 66q-90 0 -164.5 -24.5t-124.5 -66.5l-10 -145h-99l1 208q75 58 179.5 94t222.5 36q179 0 288 -91t109 -261v-532 q0 -33 1.5 -63.5t6.5 -59.5l108 -7v-88h-213zM450 85q130 0 229 60t143 155v217h-241q-163 0 -260.5 -67.5t-97.5 -170.5q0 -87 60.5 -140.5t166.5 -53.5zM612 1244h-117l-241 261l2 5h154z" />
<glyph unicode="&#xe1;" horiz-adv-x="1130" d="M104 0zM844 0q-12 55 -17 95t-5 81q-60 -85 -160 -141t-225 -56q-159 0 -246 82t-87 222q0 150 129 238t350 88h239v143q0 116 -74.5 182t-208.5 66q-90 0 -164.5 -24.5t-124.5 -66.5l-10 -145h-99l1 208q75 58 179.5 94t222.5 36q179 0 288 -91t109 -261v-532 q0 -33 1.5 -63.5t6.5 -59.5l108 -7v-88h-213zM450 85q130 0 229 60t143 155v217h-241q-163 0 -260.5 -67.5t-97.5 -170.5q0 -87 60.5 -140.5t166.5 -53.5zM653 1495h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xe2;" horiz-adv-x="1130" d="M104 0zM844 0q-12 55 -17 95t-5 81q-60 -85 -160 -141t-225 -56q-159 0 -246 82t-87 222q0 150 129 238t350 88h239v143q0 116 -74.5 182t-208.5 66q-90 0 -164.5 -24.5t-124.5 -66.5l-10 -145h-99l1 208q75 58 179.5 94t222.5 36q179 0 288 -91t109 -261v-532 q0 -33 1.5 -63.5t6.5 -59.5l108 -7v-88h-213zM450 85q130 0 229 60t143 155v217h-241q-163 0 -260.5 -67.5t-97.5 -170.5q0 -87 60.5 -140.5t166.5 -53.5zM823 1290v-18h-112l-167 168l-166 -168h-109v21l226 221h98z" />
<glyph unicode="&#xe3;" horiz-adv-x="1130" d="M104 0zM844 0q-12 55 -17 95t-5 81q-60 -85 -160 -141t-225 -56q-159 0 -246 82t-87 222q0 150 129 238t350 88h239v143q0 116 -74.5 182t-208.5 66q-90 0 -164.5 -24.5t-124.5 -66.5l-10 -145h-99l1 208q75 58 179.5 94t222.5 36q179 0 288 -91t109 -261v-532 q0 -33 1.5 -63.5t6.5 -59.5l108 -7v-88h-213zM450 85q130 0 229 60t143 155v217h-241q-163 0 -260.5 -67.5t-97.5 -170.5q0 -87 60.5 -140.5t166.5 -53.5zM887 1499q0 -88 -55 -146t-137 -58q-74 0 -151 55t-131 55q-47 0 -79 -35t-32 -89l-79 18q0 86 53.5 144.5 t136.5 58.5q65 0 147.5 -55t134.5 -55q46 0 79 36t33 91z" />
<glyph unicode="&#xe4;" horiz-adv-x="1130" d="M104 0zM844 0q-12 55 -17 95t-5 81q-60 -85 -160 -141t-225 -56q-159 0 -246 82t-87 222q0 150 129 238t350 88h239v143q0 116 -74.5 182t-208.5 66q-90 0 -164.5 -24.5t-124.5 -66.5l-10 -145h-99l1 208q75 58 179.5 94t222.5 36q179 0 288 -91t109 -261v-532 q0 -33 1.5 -63.5t6.5 -59.5l108 -7v-88h-213zM450 85q130 0 229 60t143 155v217h-241q-163 0 -260.5 -67.5t-97.5 -170.5q0 -87 60.5 -140.5t166.5 -53.5zM859 1318h-173v157h173v-157zM390 1318h-174v157h174v-157z" />
<glyph unicode="&#xe5;" horiz-adv-x="1130" d="M104 0zM844 0q-12 55 -17 95t-5 81q-60 -85 -160 -141t-225 -56q-159 0 -246 82t-87 222q0 150 129 238t350 88h239v143q0 116 -74.5 182t-208.5 66q-90 0 -164.5 -24.5t-124.5 -66.5l-10 -145h-99l1 208q75 58 179.5 94t222.5 36q179 0 288 -91t109 -261v-532 q0 -33 1.5 -63.5t6.5 -59.5l108 -7v-88h-213zM450 85q130 0 229 60t143 155v217h-241q-163 0 -260.5 -67.5t-97.5 -170.5q0 -87 60.5 -140.5t166.5 -53.5zM377 1419q0 69 49.5 117.5t119.5 48.5q68 0 117 -48.5t49 -117.5q0 -71 -48.5 -117t-117.5 -46q-71 0 -120 46 t-49 117zM455 1419q0 -39 26.5 -65t64.5 -26q37 0 62 25.5t25 65.5t-25 66.5t-62 26.5q-38 0 -64.5 -26.5t-26.5 -66.5z" />
<glyph unicode="&#xe6;" horiz-adv-x="1786" d="M1285 -21q-138 0 -241 55.5t-163 157.5q-49 -87 -159.5 -150t-269.5 -63q-170 0 -262.5 84.5t-92.5 229.5q0 158 113 248.5t325 90.5h263v88q0 134 -63.5 207t-187.5 73q-135 0 -213 -67t-78 -168l-110 12l-2 6q-5 138 106 228.5t297 90.5q125 0 213 -54t129 -157 q61 99 156 155t210 56q200 0 311.5 -124t111.5 -340v-100h-755v-29q0 -191 90 -310t272 -119q103 0 181 32.5t142 86.5l48 -87q-60 -55 -148.5 -94t-222.5 -39zM469 79q102 0 197.5 53.5t131.5 115.5v288h-261q-155 0 -237.5 -71t-82.5 -176q0 -97 64.5 -153.5t187.5 -56.5z M1255 1000q-138 0 -224.5 -101.5t-99.5 -257.5l2 -5h625v31q0 146 -77 239.5t-226 93.5z" />
<glyph unicode="&#xe7;" horiz-adv-x="1094" d="M97 0zM559 80q119 0 210 68t91 189h106l2 -6q5 -150 -119.5 -251t-289.5 -101q-220 0 -341 151.5t-121 389.5v42q0 236 121 388t340 152q125 0 229 -47t169 -128l5 -236h-102l-19 192q-48 54 -119.5 85.5t-162.5 31.5q-174 0 -257.5 -124.5t-83.5 -313.5v-42 q0 -192 83 -316t259 -124zM590 -9l-11 -64q79 -9 127.5 -48.5t48.5 -122.5q0 -91 -79 -145.5t-226 -54.5l-7 78q89 0 150.5 30.5t61.5 89.5q0 57 -41 79.5t-145 30.5l28 127h93z" />
<glyph unicode="&#xe8;" horiz-adv-x="1102" d="M102 0zM574 -21q-204 0 -338 149.5t-134 380.5v55q0 232 133.5 385t322.5 153q199 0 313 -126t114 -336v-102h-764v-29q0 -182 97.5 -305.5t255.5 -123.5q111 0 190 31t135 89l51 -82q-61 -64 -154 -101.5t-222 -37.5zM558 1000q-132 0 -222.5 -101.5t-105.5 -254.5l2 -5 h634v30q0 141 -83 236t-225 95zM630 1244h-117l-241 261l2 5h154z" />
<glyph unicode="&#xe9;" horiz-adv-x="1102" d="M102 0zM574 -21q-204 0 -338 149.5t-134 380.5v55q0 232 133.5 385t322.5 153q199 0 313 -126t114 -336v-102h-764v-29q0 -182 97.5 -305.5t255.5 -123.5q111 0 190 31t135 89l51 -82q-61 -64 -154 -101.5t-222 -37.5zM558 1000q-132 0 -222.5 -101.5t-105.5 -254.5l2 -5 h634v30q0 141 -83 236t-225 95zM671 1495h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xea;" horiz-adv-x="1102" d="M102 0zM574 -21q-204 0 -338 149.5t-134 380.5v55q0 232 133.5 385t322.5 153q199 0 313 -126t114 -336v-102h-764v-29q0 -182 97.5 -305.5t255.5 -123.5q111 0 190 31t135 89l51 -82q-61 -64 -154 -101.5t-222 -37.5zM558 1000q-132 0 -222.5 -101.5t-105.5 -254.5l2 -5 h634v30q0 141 -83 236t-225 95zM841 1290v-18h-112l-167 168l-166 -168h-109v21l226 221h98z" />
<glyph unicode="&#xeb;" horiz-adv-x="1102" d="M102 0zM574 -21q-204 0 -338 149.5t-134 380.5v55q0 232 133.5 385t322.5 153q199 0 313 -126t114 -336v-102h-764v-29q0 -182 97.5 -305.5t255.5 -123.5q111 0 190 31t135 89l51 -82q-61 -64 -154 -101.5t-222 -37.5zM558 1000q-132 0 -222.5 -101.5t-105.5 -254.5l2 -5 h634v30q0 141 -83 236t-225 95zM877 1318h-173v157h173v-157zM408 1318h-174v157h174v-157z" />
<glyph unicode="&#xec;" horiz-adv-x="637" d="M24 0zM90 993v89h282v-981l163 -13v-88h-445v88l163 13v879zM382 1232h-117l-241 261l2 5h154z" />
<glyph unicode="&#xed;" horiz-adv-x="637" d="M90 0zM90 993v89h282v-981l163 -13v-88h-445v88l163 13v879zM422 1483h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xee;" horiz-adv-x="637" d="M39 0zM90 993v89h282v-981l163 -13v-88h-445v88l163 13v879zM593 1278v-18h-112l-167 168l-166 -168h-109v21l226 221h98z" />
<glyph unicode="&#xef;" horiz-adv-x="637" d="M0 0zM90 993v89h282v-981l163 -13v-88h-445v88l163 13v879zM629 1306h-173v157h173v-157zM160 1306h-174v157h174v-157z" />
<glyph unicode="&#xf0;" horiz-adv-x="1179" d="M807 1299q111 -121 168.5 -289.5t57.5 -386.5v-88q0 -245 -137 -400.5t-344 -155.5t-340.5 137t-133.5 339q0 235 130 372.5t347 137.5q104 0 193.5 -40t143.5 -107l4 5q-18 131 -68 234t-126 182l-308 -176l-51 74l288 164q-45 33 -94.5 61t-103.5 51l38 104 q77 -30 144 -68.5t124 -85.5l258 148l51 -74zM914 625q0 9 -0.5 27t-0.5 27q-37 77 -127.5 129.5t-230.5 52.5q-172 0 -264.5 -115t-92.5 -291q0 -149 97 -261t261 -112q159 0 258.5 127.5t99.5 325.5v90z" />
<glyph unicode="&#xf1;" horiz-adv-x="1319" d="M75 0zM75 88l163 13v879l-163 13v89h269l11 -189q52 100 140.5 154.5t209.5 54.5q176 0 268 -107.5t92 -335.5v-558l163 -13v-88h-446v88l163 13v557q0 186 -69.5 263t-197.5 77q-126 0 -205.5 -66.5t-114.5 -176.5v-654l163 -13v-88h-446v88zM995 1498q0 -88 -55 -146 t-137 -58q-74 0 -151 55t-131 55q-47 0 -79 -35t-32 -89l-79 18q0 86 53.5 144.5t136.5 58.5q65 0 147.5 -55t134.5 -55q46 0 79 36t33 91z" />
<glyph unicode="&#xf2;" horiz-adv-x="1152" d="M97 0zM97 557q0 239 131 392t347 153q217 0 348 -153t131 -392v-33q0 -240 -130.5 -392.5t-346.5 -152.5q-218 0 -349 152.5t-131 392.5v33zM217 524q0 -188 95 -316t265 -128q167 0 262 128t95 316v33q0 185 -95.5 314t-263.5 129t-263 -129t-95 -314v-33zM646 1243 h-117l-241 261l2 5h154z" />
<glyph unicode="&#xf3;" horiz-adv-x="1152" d="M97 0zM97 557q0 239 131 392t347 153q217 0 348 -153t131 -392v-33q0 -240 -130.5 -392.5t-346.5 -152.5q-218 0 -349 152.5t-131 392.5v33zM217 524q0 -188 95 -316t265 -128q167 0 262 128t95 316v33q0 185 -95.5 314t-263.5 129t-263 -129t-95 -314v-33zM687 1494h147 l3 -6l-249 -260h-107z" />
<glyph unicode="&#xf4;" horiz-adv-x="1152" d="M97 0zM97 557q0 239 131 392t347 153q217 0 348 -153t131 -392v-33q0 -240 -130.5 -392.5t-346.5 -152.5q-218 0 -349 152.5t-131 392.5v33zM217 524q0 -188 95 -316t265 -128q167 0 262 128t95 316v33q0 185 -95.5 314t-263.5 129t-263 -129t-95 -314v-33zM857 1289v-18 h-112l-167 168l-166 -168h-109v21l226 221h98z" />
<glyph unicode="&#xf5;" horiz-adv-x="1152" d="M97 0zM97 557q0 239 131 392t347 153q217 0 348 -153t131 -392v-33q0 -240 -130.5 -392.5t-346.5 -152.5q-218 0 -349 152.5t-131 392.5v33zM217 524q0 -188 95 -316t265 -128q167 0 262 128t95 316v33q0 185 -95.5 314t-263.5 129t-263 -129t-95 -314v-33zM921 1498 q0 -88 -55 -146t-137 -58q-74 0 -151 55t-131 55q-47 0 -79 -35t-32 -89l-79 18q0 86 53.5 144.5t136.5 58.5q65 0 147.5 -55t134.5 -55q46 0 79 36t33 91z" />
<glyph unicode="&#xf6;" horiz-adv-x="1152" d="M97 0zM97 557q0 239 131 392t347 153q217 0 348 -153t131 -392v-33q0 -240 -130.5 -392.5t-346.5 -152.5q-218 0 -349 152.5t-131 392.5v33zM217 524q0 -188 95 -316t265 -128q167 0 262 128t95 316v33q0 185 -95.5 314t-263.5 129t-263 -129t-95 -314v-33zM893 1317 h-173v157h173v-157zM424 1317h-174v157h174v-157z" />
<glyph unicode="&#xf7;" horiz-adv-x="1148" d="M1072 644h-998v116h998v-116zM650 1010h-142v160h142v-160zM650 212h-142v160h142v-160z" />
<glyph unicode="&#xf8;" horiz-adv-x="1152" d="M97 557q0 239 131 392t347 153q62 0 119 -14.5t108 -40.5l86 167h93l-110 -214q87 -73 135 -188t48 -255v-33q0 -240 -130.5 -392.5t-346.5 -152.5q-58 0 -110 11t-98 34l-84 -164h-93l106 207q-96 71 -148.5 190t-52.5 267v33zM217 524q0 -110 33.5 -202.5t96.5 -147.5 h6l399 776q-38 24 -82.5 37t-94.5 13q-168 0 -263 -129t-95 -314v-33zM934 557q0 100 -30 187.5t-85 144.5h-5l-397 -771q34 -19 74 -28.5t86 -9.5q167 0 262 128t95 316v33z" />
<glyph unicode="&#xf9;" horiz-adv-x="1232" d="M46 0zM892 178q-51 -95 -139.5 -147t-208.5 -52q-171 0 -267.5 116t-96.5 360v525l-134 13v89h134h119v-629q0 -198 67.5 -284t191.5 -86q136 0 216.5 60t113.5 166v671l-154 13v89h154h120v-981l145 -13v-88h-250zM627 1232h-117l-241 261l2 5h154z" />
<glyph unicode="&#xfa;" horiz-adv-x="1232" d="M46 0zM892 178q-51 -95 -139.5 -147t-208.5 -52q-171 0 -267.5 116t-96.5 360v525l-134 13v89h134h119v-629q0 -198 67.5 -284t191.5 -86q136 0 216.5 60t113.5 166v671l-154 13v89h154h120v-981l145 -13v-88h-250zM668 1483h147l3 -6l-249 -260h-107z" />
<glyph unicode="&#xfb;" horiz-adv-x="1232" d="M46 0zM892 178q-51 -95 -139.5 -147t-208.5 -52q-171 0 -267.5 116t-96.5 360v525l-134 13v89h134h119v-629q0 -198 67.5 -284t191.5 -86q136 0 216.5 60t113.5 166v671l-154 13v89h154h120v-981l145 -13v-88h-250zM838 1278v-18h-112l-167 168l-166 -168h-109v21 l226 221h98z" />
<glyph unicode="&#xfc;" horiz-adv-x="1232" d="M46 0zM892 178q-51 -95 -139.5 -147t-208.5 -52q-171 0 -267.5 116t-96.5 360v525l-134 13v89h134h119v-629q0 -198 67.5 -284t191.5 -86q136 0 216.5 60t113.5 166v671l-154 13v89h154h120v-981l145 -13v-88h-250zM874 1306h-173v157h173v-157zM405 1306h-174v157h174 v-157z" />
<glyph unicode="&#xfd;" horiz-adv-x="1174" d="M46 0zM1135 993l-110 -9l-437 -1157q-42 -110 -109 -187t-196 -77q-21 0 -51 4.5t-44 9.5l14 100q12 -2 38.5 -4.5t37.5 -2.5q79 0 125 55t81 143l56 145l-384 971l-110 9v89h372v-89l-129 -10l264 -690l38 -130h6l296 820l-132 10v89h374v-89zM704 1483h147l3 -6 l-249 -260h-107z" />
<glyph unicode="&#xfe;" horiz-adv-x="1191" d="M47 -327l163 13v1772l-163 13v89h282v-640q54 87 138.5 134.5t198.5 47.5q195 0 305 -155.5t110 -414.5v-21q0 -243 -110 -387.5t-303 -144.5q-114 0 -199.5 43.5t-139.5 123.5v-460l163 -13v-89h-445v89zM961 532q0 206 -82 336t-240 130q-121 0 -196.5 -57.5 t-113.5 -149.5v-520q41 -89 118.5 -140t193.5 -51q157 0 238.5 118t81.5 313v21z" />
<glyph unicode="&#xff;" horiz-adv-x="1174" d="M46 0zM1135 993l-110 -9l-437 -1157q-42 -110 -109 -187t-196 -77q-21 0 -51 4.5t-44 9.5l14 100q12 -2 38.5 -4.5t37.5 -2.5q79 0 125 55t81 143l56 145l-384 971l-110 9v89h372v-89l-129 -10l264 -690l38 -130h6l296 820l-132 10v89h374v-89zM910 1306h-173v157h173 v-157zM441 1306h-174v157h174v-157z" />
<glyph unicode="&#x131;" horiz-adv-x="637" d="M90 993v89h282v-981l163 -13v-88h-445v88l163 13v879z" />
<glyph unicode="&#x152;" horiz-adv-x="1971" d="M963 0q-99 -10 -168.5 -15.5t-142.5 -5.5q-240 0 -389 166t-149 431v304q0 265 148.5 431t387.5 166q75 0 151.5 -6t161.5 -15h889v-320h-106l-9 218h-683v-547h597v-102h-597v-604h688l9 218h106v-319h-894zM652 81q29 0 59.5 0.5t60.5 2.5v4l163 13v1253l-163 13v5 q-30 1 -61 2t-61 1q-192 0 -304 -132t-112 -361v-306q0 -228 113.5 -361.5t304.5 -133.5z" />
<glyph unicode="&#x153;" horiz-adv-x="1916" d="M104 557q0 239 130.5 392t346.5 153q146 0 255.5 -72.5t168.5 -199.5q59 125 166 198.5t234 73.5q199 0 313 -126t114 -336v-102h-764v-29q0 -183 97 -306t255 -123q112 0 191 31t135 89l51 -82q-61 -64 -154.5 -101.5t-222.5 -37.5q-138 0 -248 72t-169 197 q-58 -126 -167 -197.5t-253 -71.5q-217 0 -348 152.5t-131 392.5v33zM223 524q0 -188 95 -316t265 -128q167 0 262.5 128t95.5 316v33q0 185 -96 314t-264 129t-263 -129t-95 -314v-33zM1405 1000q-132 0 -222.5 -101.5t-105.5 -254.5l2 -5h634v30q0 141 -83 236t-225 95z " />
<glyph unicode="&#x178;" horiz-adv-x="1423" d="M55 0zM455 1367l-140 -10l394 -710l396 710l-140 10v89h401v-89l-124 -10l-474 -825v-431l163 -13v-88h-446v88l163 13v438l-470 818l-123 10v89h400v-89zM1028 1634h-173v157h173v-157zM559 1634h-174v157h174v-157z" />
<glyph unicode="&#x2c6;" horiz-adv-x="801" d="M658 1270v-18h-112l-167 168l-166 -168h-109v21l226 221h98z" />
<glyph unicode="&#x2da;" horiz-adv-x="652" d="M138 1324q0 69 49.5 117.5t119.5 48.5q68 0 117 -48.5t49 -117.5q0 -71 -48.5 -117t-117.5 -46q-71 0 -120 46t-49 117zM216 1324q0 -39 26.5 -65t64.5 -26q37 0 62 25.5t25 65.5t-25 66.5t-62 26.5q-38 0 -64.5 -26.5t-26.5 -66.5z" />
<glyph unicode="&#x2dc;" horiz-adv-x="934" d="M791 1481q0 -88 -55 -146t-137 -58q-74 0 -151 55t-131 55q-47 0 -79 -35t-32 -89l-79 18q0 86 53.5 144.5t136.5 58.5q65 0 147.5 -55t134.5 -55q46 0 79 36t33 91z" />
<glyph unicode="&#x2000;" horiz-adv-x="953" />
<glyph unicode="&#x2001;" horiz-adv-x="1906" />
<glyph unicode="&#x2002;" horiz-adv-x="953" />
<glyph unicode="&#x2003;" horiz-adv-x="1906" />
<glyph unicode="&#x2004;" horiz-adv-x="635" />
<glyph unicode="&#x2005;" horiz-adv-x="476" />
<glyph unicode="&#x2006;" horiz-adv-x="317" />
<glyph unicode="&#x2007;" horiz-adv-x="317" />
<glyph unicode="&#x2008;" horiz-adv-x="238" />
<glyph unicode="&#x2009;" horiz-adv-x="381" />
<glyph unicode="&#x200a;" horiz-adv-x="105" />
<glyph unicode="&#x2010;" horiz-adv-x="793" d="M632 570h-478v101h478v-101z" />
<glyph unicode="&#x2011;" horiz-adv-x="793" d="M632 570h-478v101h478v-101z" />
<glyph unicode="&#x2012;" horiz-adv-x="793" d="M632 570h-478v101h478v-101z" />
<glyph unicode="&#x2013;" horiz-adv-x="1407" d="M161 686zM1234.69 686h-1085.49v102h1085.49v-102z" />
<glyph unicode="&#x2014;" horiz-adv-x="1646" d="M165 686zM1452.38 686h-1335.98v102h1335.98v-102z" />
<glyph unicode="&#x2018;" horiz-adv-x="364" d="M98 1248q0 93 37 180.5t103 149.5l72 -51q-48 -67 -70 -131.5t-22 -144.5v-174h-120v171z" />
<glyph unicode="&#x2019;" horiz-adv-x="364" d="M273 1385q0 -94 -37.5 -182t-102.5 -148l-71 52q47 65 69.5 130t22.5 145v178h119v-175z" />
<glyph unicode="&#x201a;" horiz-adv-x="353" d="M252 89q0 -92 -37.5 -180t-102.5 -149l-71 52q47 66 69.5 130.5t22.5 144.5v172h119v-170z" />
<glyph unicode="&#x201c;" horiz-adv-x="612" d="M98 1077zM98 1248q0 93 37 180.5t103 149.5l72 -51q-48 -67 -70 -131.5t-22 -144.5v-174h-120v171zM345 1248q0 93 37 180.5t103 149.5l72 -51q-48 -67 -70 -131.5t-22 -144.5v-174h-120v171z" />
<glyph unicode="&#x201d;" horiz-adv-x="617" d="M68 1055zM279 1385q0 -94 -37.5 -182t-102.5 -148l-71 52q47 65 69.5 130t22.5 145v178h119v-175zM523 1385q0 -94 -37.5 -182t-102.5 -148l-71 52q47 65 69.5 130t22.5 145v178h119v-175z" />
<glyph unicode="&#x201e;" horiz-adv-x="593" d="M252 89q0 -92 -37.5 -180t-102.5 -149l-71 52q47 66 69.5 130.5t22.5 144.5v172h119v-170zM486 89q0 -92 -37.5 -180t-102.5 -149l-71 52q46 66 68.5 130.5t22.5 144.5v172h120v-170z" />
<glyph unicode="&#x2022;" horiz-adv-x="671" d="M135 782q0 79 50 129t134 50q85 0 135.5 -50.5t50.5 -128.5v-65q0 -79 -50.5 -128t-134.5 -49q-85 0 -135 49t-50 128v65z" />
<glyph unicode="&#x2026;" horiz-adv-x="1297" d="M166 0zM303 0h-137v164h137v-164zM713 0h-137v164h137v-164zM1105 0h-137v164h137v-164z" />
<glyph unicode="&#x202f;" horiz-adv-x="381" />
<glyph unicode="&#x2039;" horiz-adv-x="574" d="M192 555l276 -388h-105l-295 379v19l295 379h105z" />
<glyph unicode="&#x203a;" horiz-adv-x="573" d="M188 944l295 -384v-19l-295 -379h-105l276 388l-276 394h105z" />
<glyph unicode="&#x2044;" horiz-adv-x="884" d="M116 121l-74 48l711 1138l74 -48z" />
<glyph unicode="&#x205f;" horiz-adv-x="476" />
<glyph unicode="&#x20ac;" horiz-adv-x="1051" d="M905 533h-546v-19q0 -198 101.5 -316t272.5 -118q57 0 113 8.5t107 25.5l9 -104q-54 -15 -112.5 -23t-116.5 -8q-221 0 -357.5 145t-136.5 390v19h-168v88h168v195h-168v89h168v37q0 244 135.5 389.5t356.5 145.5q56 0 111.5 -8t119.5 -23l-9 -106q-53 16 -109.5 25.5 t-112.5 9.5q-172 0 -272 -116t-100 -315v-39h546v-89h-546v-195h546v-88z" />
<glyph unicode="&#x2122;" horiz-adv-x="1246" d="M1020 1304l-6 1l-161 -386h-51l-164 399l-6 -1v-398h-72v537h93l172 -423h6l174 423h87v-537h-72v385zM482 1387h-153v-468h-73v468h-158v69h384v-69z" />
<glyph unicode="&#x2212;" horiz-adv-x="1143" d="M989 686h-835v102h835v-102z" />
<glyph unicode="&#x25fc;" horiz-adv-x="1080" d="M0 1080h1080v-1080h-1080v1080z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1934" d="M80 0zM80 984v98h179v158q0 163 82 252t229 89q32 0 66 -5t69 -14l-15 -99q-24 6 -49 9.5t-59 3.5q-98 0 -150.5 -62t-52.5 -174v-158h258v-98h-258v-883l163 -13v-88h-446v88l163 13v883h-179zM800 88l163 13v883h-179v98h179v138q0 173 95.5 267t264.5 94q66 0 135 -15 t140 -44l-19 -103q-60 25 -118 39t-131 14q-122 0 -184.5 -65t-62.5 -187v-138h621v-981l163 -13v-88h-445v88l163 13v883h-502v-883l163 -13v-88h-446v88z" />
<glyph unicode="&#xfb04;" horiz-adv-x="2060" d="M80 0zM80 984v98h179v158q0 163 82 252t229 89q32 0 66 -5t69 -14l-15 -99q-24 6 -49 9.5t-59 3.5q-98 0 -150.5 -62t-52.5 -174v-158h258v-98h-258v-883l163 -13v-88h-446v88l163 13v883h-179zM805 984v98h179v158q0 163 82 252t229 89q32 0 66 -5t69 -14l-15 -99 q-24 6 -49 9.5t-59 3.5q-98 0 -150.5 -62t-52.5 -174v-158h258v-98h-258v-883l163 -13v-88h-446v88l163 13v883h-179zM1523 1471v89h282v-1459l163 -13v-88h-445v88l163 13v1357z" />
<glyph horiz-adv-x="538" d="M350 0h-109v703l-148 -7v93l257 23v-812z" />
<glyph horiz-adv-x="833" d="M683 0h-570v90l315 282q77 70 104 115t27 92q0 65 -38.5 103.5t-117.5 38.5q-87 0 -134 -42t-47 -108h-100l-2 6q-6 97 72.5 166t210.5 69q124 0 195 -60.5t71 -173.5q0 -75 -47 -136t-150 -158l-215 -188l3 -6h423v-90z" />
<glyph horiz-adv-x="842" d="M398 453q88 0 130 35t42 99q0 59 -45 96.5t-133 37.5q-75 0 -124 -35.5t-49 -93.5h-100l-2 6q-6 94 75 154t200 60q133 0 210 -58.5t77 -166.5q0 -59 -35.5 -105.5t-99.5 -71.5q73 -22 111 -70.5t38 -119.5q0 -109 -83.5 -170t-217.5 -61q-120 0 -206.5 58.5t-81.5 168.5 l2 6h101q0 -63 51 -103t134 -40q90 0 141 38t51 103q0 75 -46.5 109.5t-139.5 34.5h-123v89h123z" />
<glyph horiz-adv-x="882" d="M620 260h153v-90h-153v-170h-108v170h-431l-3 67l428 564h114v-541zM206 260h306v403l-6 1l-26 -44z" />
<glyph horiz-adv-x="458" d="M0 0z" />
<hkern u1="&#x22;" u2="w" k="-11" />
<hkern u1="&#x27;" u2="w" k="-11" />
<hkern u1="&#x28;" u2="&#x178;" k="-22" />
<hkern u1="&#x28;" u2="&#xdd;" k="-22" />
<hkern u1="&#x28;" u2="Y" k="-22" />
<hkern u1="&#x28;" u2="W" k="-18" />
<hkern u1="&#x28;" u2="V" k="-20" />
<hkern u1="&#x2f;" u2="&#x2f;" k="224" />
<hkern u1="A" u2="w" k="123" />
<hkern u1="A" u2="t" k="107" />
<hkern u1="A" u2="&#x3f;" k="61" />
<hkern u1="C" u2="&#x7d;" k="17" />
<hkern u1="C" u2="]" k="12" />
<hkern u1="C" u2="&#x29;" k="26" />
<hkern u1="D" u2="&#xc6;" k="33" />
<hkern u1="E" u2="w" k="22" />
<hkern u1="E" u2="f" k="18" />
<hkern u1="F" u2="&#x2026;" k="234" />
<hkern u1="F" u2="&#x201e;" k="234" />
<hkern u1="F" u2="&#x201a;" k="234" />
<hkern u1="F" u2="&#x153;" k="21" />
<hkern u1="F" u2="&#x152;" k="50" />
<hkern u1="F" u2="&#xff;" k="24" />
<hkern u1="F" u2="&#xfd;" k="24" />
<hkern u1="F" u2="&#xfc;" k="22" />
<hkern u1="F" u2="&#xfb;" k="22" />
<hkern u1="F" u2="&#xfa;" k="22" />
<hkern u1="F" u2="&#xf9;" k="22" />
<hkern u1="F" u2="&#xf6;" k="21" />
<hkern u1="F" u2="&#xf5;" k="21" />
<hkern u1="F" u2="&#xf4;" k="21" />
<hkern u1="F" u2="&#xf3;" k="21" />
<hkern u1="F" u2="&#xf2;" k="21" />
<hkern u1="F" u2="&#xeb;" k="21" />
<hkern u1="F" u2="&#xea;" k="21" />
<hkern u1="F" u2="&#xe9;" k="21" />
<hkern u1="F" u2="&#xe8;" k="21" />
<hkern u1="F" u2="&#xe7;" k="21" />
<hkern u1="F" u2="&#xe5;" k="34" />
<hkern u1="F" u2="&#xe4;" k="34" />
<hkern u1="F" u2="&#xe3;" k="34" />
<hkern u1="F" u2="&#xe2;" k="34" />
<hkern u1="F" u2="&#xe1;" k="34" />
<hkern u1="F" u2="&#xe0;" k="34" />
<hkern u1="F" u2="&#xd8;" k="50" />
<hkern u1="F" u2="&#xd6;" k="50" />
<hkern u1="F" u2="&#xd5;" k="50" />
<hkern u1="F" u2="&#xd4;" k="50" />
<hkern u1="F" u2="&#xd3;" k="50" />
<hkern u1="F" u2="&#xd2;" k="50" />
<hkern u1="F" u2="&#xc7;" k="50" />
<hkern u1="F" u2="&#xc5;" k="299" />
<hkern u1="F" u2="&#xc4;" k="299" />
<hkern u1="F" u2="&#xc3;" k="299" />
<hkern u1="F" u2="&#xc2;" k="299" />
<hkern u1="F" u2="&#xc1;" k="299" />
<hkern u1="F" u2="&#xc0;" k="299" />
<hkern u1="F" u2="y" k="24" />
<hkern u1="F" u2="v" k="24" />
<hkern u1="F" u2="u" k="22" />
<hkern u1="F" u2="q" k="21" />
<hkern u1="F" u2="o" k="21" />
<hkern u1="F" u2="g" k="21" />
<hkern u1="F" u2="e" k="21" />
<hkern u1="F" u2="d" k="21" />
<hkern u1="F" u2="c" k="21" />
<hkern u1="F" u2="a" k="34" />
<hkern u1="F" u2="T" k="-20" />
<hkern u1="F" u2="Q" k="50" />
<hkern u1="F" u2="O" k="50" />
<hkern u1="F" u2="J" k="320" />
<hkern u1="F" u2="G" k="50" />
<hkern u1="F" u2="C" k="50" />
<hkern u1="F" u2="A" k="299" />
<hkern u1="F" u2="&#x2e;" k="234" />
<hkern u1="F" u2="&#x2c;" k="234" />
<hkern u1="F" u2="r" k="26" />
<hkern u1="K" u2="w" k="63" />
<hkern u1="L" u2="w" k="92" />
<hkern u1="N" u2="&#xc5;" k="85" />
<hkern u1="N" u2="&#xc4;" k="85" />
<hkern u1="N" u2="&#xc3;" k="85" />
<hkern u1="N" u2="&#xc2;" k="85" />
<hkern u1="N" u2="&#xc1;" k="85" />
<hkern u1="N" u2="&#xc0;" k="85" />
<hkern u1="N" u2="A" k="85" />
<hkern u1="O" u2="&#xc6;" k="33" />
<hkern u1="P" u2="&#xc6;" k="97" />
<hkern u1="P" u2="t" k="-14" />
<hkern u1="Q" u2="&#x178;" k="35" />
<hkern u1="Q" u2="&#xdd;" k="35" />
<hkern u1="Q" u2="Y" k="35" />
<hkern u1="Q" u2="W" k="20" />
<hkern u1="Q" u2="V" k="28" />
<hkern u1="Q" u2="T" k="43" />
<hkern u1="R" u2="&#x178;" k="100" />
<hkern u1="R" u2="&#xdd;" k="100" />
<hkern u1="R" u2="Y" k="100" />
<hkern u1="R" u2="V" k="80" />
<hkern u1="R" u2="T" k="80" />
<hkern u1="T" u2="&#xf8;" k="95" />
<hkern u1="T" u2="&#xe6;" k="114" />
<hkern u1="T" u2="&#xc6;" k="179" />
<hkern u1="T" u2="&#xbb;" k="216" />
<hkern u1="T" u2="&#xab;" k="328" />
<hkern u1="T" u2="w" k="57" />
<hkern u1="T" u2="r" k="75" />
<hkern u1="V" u2="&#x7d;" k="-19" />
<hkern u1="V" u2="r" k="30" />
<hkern u1="V" u2="]" k="-17" />
<hkern u1="V" u2="&#x29;" k="-20" />
<hkern u1="W" u2="&#x7d;" k="-14" />
<hkern u1="W" u2="r" k="21" />
<hkern u1="W" u2="]" k="-12" />
<hkern u1="W" u2="&#x29;" k="-15" />
<hkern u1="Y" u2="&#x2022;" k="45" />
<hkern u1="Y" u2="&#xf8;" k="64" />
<hkern u1="Y" u2="&#xe6;" k="63" />
<hkern u1="Y" u2="&#xc6;" k="96" />
<hkern u1="Y" u2="&#xbb;" k="51" />
<hkern u1="Y" u2="&#xab;" k="82" />
<hkern u1="Y" u2="&#x7d;" k="-19" />
<hkern u1="Y" u2="t" k="22" />
<hkern u1="Y" u2="r" k="40" />
<hkern u1="Y" u2="f" k="22" />
<hkern u1="Y" u2="]" k="-18" />
<hkern u1="Y" u2="&#x2a;" k="49" />
<hkern u1="Y" u2="&#x29;" k="-20" />
<hkern u1="Y" u2="&#x26;" k="30" />
<hkern u1="Z" u2="w" k="27" />
<hkern u1="[" u2="&#xdc;" k="18" />
<hkern u1="[" u2="&#xdb;" k="18" />
<hkern u1="[" u2="&#xda;" k="18" />
<hkern u1="[" u2="&#xd9;" k="18" />
<hkern u1="[" u2="U" k="18" />
<hkern u1="[" u2="J" k="18" />
<hkern u1="f" u2="&#x201d;" k="-16" />
<hkern u1="f" u2="&#x201c;" k="-16" />
<hkern u1="f" u2="&#x2019;" k="-16" />
<hkern u1="f" u2="&#x2018;" k="-16" />
<hkern u1="f" u2="&#x153;" k="24" />
<hkern u1="f" u2="&#xeb;" k="24" />
<hkern u1="f" u2="&#xea;" k="24" />
<hkern u1="f" u2="&#xe9;" k="24" />
<hkern u1="f" u2="&#xe8;" k="24" />
<hkern u1="f" u2="&#xe7;" k="24" />
<hkern u1="f" u2="q" k="24" />
<hkern u1="f" u2="g" k="24" />
<hkern u1="f" u2="e" k="24" />
<hkern u1="f" u2="d" k="24" />
<hkern u1="f" u2="c" k="24" />
<hkern u1="f" u2="&#x27;" k="-16" />
<hkern u1="f" u2="&#x22;" k="-16" />
<hkern u1="f" u2="&#x7d;" k="-19" />
<hkern u1="f" u2="]" k="-18" />
<hkern u1="f" u2="&#x29;" k="-20" />
<hkern u1="k" u2="&#x153;" k="20" />
<hkern u1="k" u2="&#xeb;" k="20" />
<hkern u1="k" u2="&#xea;" k="20" />
<hkern u1="k" u2="&#xe9;" k="20" />
<hkern u1="k" u2="&#xe8;" k="20" />
<hkern u1="k" u2="&#xe7;" k="20" />
<hkern u1="k" u2="q" k="20" />
<hkern u1="k" u2="g" k="20" />
<hkern u1="k" u2="e" k="20" />
<hkern u1="k" u2="d" k="20" />
<hkern u1="k" u2="c" k="20" />
<hkern u1="l" u2="&#xf6;" k="20" />
<hkern u1="l" u2="&#xf5;" k="20" />
<hkern u1="l" u2="&#xf4;" k="20" />
<hkern u1="l" u2="&#xf3;" k="20" />
<hkern u1="l" u2="&#xf2;" k="20" />
<hkern u1="l" u2="o" k="20" />
<hkern u1="l" u2="g" k="10" />
<hkern u1="r" u2="w" k="-17" />
<hkern u1="r" u2="t" k="-32" />
<hkern u1="r" u2="f" k="-15" />
<hkern u1="t" u2="&#xf6;" k="20" />
<hkern u1="t" u2="&#xf5;" k="20" />
<hkern u1="t" u2="&#xf4;" k="20" />
<hkern u1="t" u2="&#xf3;" k="20" />
<hkern u1="t" u2="&#xf2;" k="20" />
<hkern u1="t" u2="o" k="20" />
<hkern u1="v" u2="f" k="-13" />
<hkern u1="w" u2="&#x2026;" k="124" />
<hkern u1="w" u2="&#x201e;" k="124" />
<hkern u1="w" u2="&#x201a;" k="124" />
<hkern u1="w" u2="&#x2e;" k="124" />
<hkern u1="w" u2="&#x2c;" k="124" />
<hkern u1="y" u2="f" k="-13" />
<hkern u1="&#x7b;" u2="&#xdc;" k="20" />
<hkern u1="&#x7b;" u2="&#xdb;" k="20" />
<hkern u1="&#x7b;" u2="&#xda;" k="20" />
<hkern u1="&#x7b;" u2="&#xd9;" k="20" />
<hkern u1="&#x7b;" u2="U" k="20" />
<hkern u1="&#x7b;" u2="J" k="20" />
<hkern u1="&#xc0;" u2="w" k="123" />
<hkern u1="&#xc0;" u2="t" k="107" />
<hkern u1="&#xc0;" u2="&#x3f;" k="61" />
<hkern u1="&#xc1;" u2="w" k="123" />
<hkern u1="&#xc1;" u2="t" k="107" />
<hkern u1="&#xc1;" u2="&#x3f;" k="61" />
<hkern u1="&#xc2;" u2="w" k="123" />
<hkern u1="&#xc2;" u2="t" k="107" />
<hkern u1="&#xc2;" u2="&#x3f;" k="61" />
<hkern u1="&#xc3;" u2="w" k="123" />
<hkern u1="&#xc3;" u2="t" k="107" />
<hkern u1="&#xc3;" u2="&#x3f;" k="61" />
<hkern u1="&#xc4;" u2="w" k="123" />
<hkern u1="&#xc4;" u2="t" k="107" />
<hkern u1="&#xc4;" u2="&#x3f;" k="61" />
<hkern u1="&#xc5;" u2="w" k="123" />
<hkern u1="&#xc5;" u2="t" k="107" />
<hkern u1="&#xc5;" u2="&#x3f;" k="61" />
<hkern u1="&#xc7;" u2="&#x7d;" k="17" />
<hkern u1="&#xc7;" u2="]" k="12" />
<hkern u1="&#xc7;" u2="&#x29;" k="26" />
<hkern u1="&#xc8;" u2="w" k="22" />
<hkern u1="&#xc8;" u2="f" k="18" />
<hkern u1="&#xc9;" u2="w" k="22" />
<hkern u1="&#xc9;" u2="f" k="18" />
<hkern u1="&#xca;" u2="w" k="22" />
<hkern u1="&#xca;" u2="f" k="18" />
<hkern u1="&#xcb;" u2="w" k="22" />
<hkern u1="&#xcb;" u2="f" k="18" />
<hkern u1="&#xd0;" u2="&#xc6;" k="33" />
<hkern u1="&#xd2;" u2="&#xc6;" k="33" />
<hkern u1="&#xd3;" u2="&#xc6;" k="33" />
<hkern u1="&#xd4;" u2="&#xc6;" k="33" />
<hkern u1="&#xd5;" u2="&#xc6;" k="33" />
<hkern u1="&#xd6;" u2="&#xc6;" k="33" />
<hkern u1="&#xdd;" u2="&#x2022;" k="45" />
<hkern u1="&#xdd;" u2="&#xf8;" k="64" />
<hkern u1="&#xdd;" u2="&#xe6;" k="63" />
<hkern u1="&#xdd;" u2="&#xc6;" k="96" />
<hkern u1="&#xdd;" u2="&#xbb;" k="51" />
<hkern u1="&#xdd;" u2="&#xab;" k="82" />
<hkern u1="&#xdd;" u2="&#x7d;" k="-19" />
<hkern u1="&#xdd;" u2="t" k="22" />
<hkern u1="&#xdd;" u2="r" k="40" />
<hkern u1="&#xdd;" u2="f" k="22" />
<hkern u1="&#xdd;" u2="]" k="-18" />
<hkern u1="&#xdd;" u2="&#x2a;" k="49" />
<hkern u1="&#xdd;" u2="&#x29;" k="-20" />
<hkern u1="&#xdd;" u2="&#x26;" k="30" />
<hkern u1="&#xfd;" u2="f" k="-13" />
<hkern u1="&#xff;" u2="f" k="-13" />
<hkern u1="&#x178;" u2="&#x2022;" k="45" />
<hkern u1="&#x178;" u2="&#xf8;" k="64" />
<hkern u1="&#x178;" u2="&#xe6;" k="63" />
<hkern u1="&#x178;" u2="&#xc6;" k="96" />
<hkern u1="&#x178;" u2="&#xbb;" k="51" />
<hkern u1="&#x178;" u2="&#xab;" k="82" />
<hkern u1="&#x178;" u2="&#x7d;" k="-19" />
<hkern u1="&#x178;" u2="t" k="22" />
<hkern u1="&#x178;" u2="r" k="40" />
<hkern u1="&#x178;" u2="f" k="22" />
<hkern u1="&#x178;" u2="]" k="-18" />
<hkern u1="&#x178;" u2="&#x2a;" k="49" />
<hkern u1="&#x178;" u2="&#x29;" k="-20" />
<hkern u1="&#x178;" u2="&#x26;" k="30" />
<hkern u1="&#x2018;" u2="w" k="-11" />
<hkern u1="&#x2019;" u2="w" k="-11" />
<hkern u1="&#x201c;" u2="w" k="-11" />
<hkern u1="&#x201d;" u2="w" k="-11" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="v,y,yacute,ydieresis" k="120" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="80" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="60" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="120" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="12" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="W" k="149" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="T" k="180" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="u,ugrave,uacute,ucircumflex,udieresis" k="71" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="V" k="264" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="Y,Yacute,Ydieresis" k="256" />
<hkern g1="B" g2="T" k="27" />
<hkern g1="B" g2="V" k="24" />
<hkern g1="B" g2="Y,Yacute,Ydieresis" k="55" />
<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde" g2="Y,Yacute,Ydieresis" k="28" />
<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde" g2="X" k="-17" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="T" k="27" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="V" k="22" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="Y,Yacute,Ydieresis" k="43" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="X" k="50" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="102" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="80" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="Z" k="23" />
<hkern g1="C,Ccedilla" g2="T" k="29" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="v,y,yacute,ydieresis" k="26" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="19" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="T" k="-20" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="17" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="19" />
<hkern g1="T" g2="v,y,yacute,ydieresis" k="72" />
<hkern g1="T" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="28" />
<hkern g1="T" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="99" />
<hkern g1="T" g2="W" k="-15" />
<hkern g1="T" g2="T" k="-16" />
<hkern g1="T" g2="u,ugrave,uacute,ucircumflex,udieresis" k="95" />
<hkern g1="T" g2="V" k="-16" />
<hkern g1="T" g2="Y,Yacute,Ydieresis" k="-16" />
<hkern g1="T" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="218" />
<hkern g1="T" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="180" />
<hkern g1="T" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="99" />
<hkern g1="T" g2="x" k="77" />
<hkern g1="T" g2="hyphen,uni00AD,endash,emdash" k="232" />
<hkern g1="T" g2="m,n,p,ntilde" k="79" />
<hkern g1="T" g2="S" k="16" />
<hkern g1="T" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="113" />
<hkern g1="T" g2="z" k="60" />
<hkern g1="T" g2="s" k="106" />
<hkern g1="T" g2="J" k="240" />
<hkern g1="K" g2="v,y,yacute,ydieresis" k="40" />
<hkern g1="K" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="120" />
<hkern g1="K" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="27" />
<hkern g1="K" g2="u,ugrave,uacute,ucircumflex,udieresis" k="23" />
<hkern g1="K" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="26" />
<hkern g1="K" g2="hyphen,uni00AD,endash,emdash" k="224" />
<hkern g1="K" g2="m,n,p,ntilde" k="23" />
<hkern g1="L" g2="v,y,yacute,ydieresis" k="133" />
<hkern g1="L" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="65" />
<hkern g1="L" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="54" />
<hkern g1="L" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="138" />
<hkern g1="L" g2="W" k="143" />
<hkern g1="L" g2="T" k="275" />
<hkern g1="L" g2="u,ugrave,uacute,ucircumflex,udieresis" k="44" />
<hkern g1="L" g2="V" k="256" />
<hkern g1="L" g2="Y,Yacute,Ydieresis" k="239" />
<hkern g1="L" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-19" />
<hkern g1="P" g2="v,y,yacute,ydieresis" k="-15" />
<hkern g1="P" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="13" />
<hkern g1="P" g2="X" k="31" />
<hkern g1="P" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="324" />
<hkern g1="P" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="256" />
<hkern g1="P" g2="Z" k="26" />
<hkern g1="P" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="13" />
<hkern g1="P" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="11" />
<hkern g1="P" g2="J" k="200" />
<hkern g1="J,U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="60" />
<hkern g1="V" g2="v,y,yacute,ydieresis" k="11" />
<hkern g1="V" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="13" />
<hkern g1="V" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="46" />
<hkern g1="V" g2="u,ugrave,uacute,ucircumflex,udieresis" k="28" />
<hkern g1="V" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="225" />
<hkern g1="V" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="264" />
<hkern g1="V" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="44" />
<hkern g1="V" g2="hyphen,uni00AD,endash,emdash" k="37" />
<hkern g1="V" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="46" />
<hkern g1="V" g2="J" k="214" />
<hkern g1="X" g2="v,y,yacute,ydieresis" k="31" />
<hkern g1="X" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="50" />
<hkern g1="X" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="31" />
<hkern g1="X" g2="u,ugrave,uacute,ucircumflex,udieresis" k="21" />
<hkern g1="X" g2="V" k="-14" />
<hkern g1="X" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="26" />
<hkern g1="X" g2="hyphen,uni00AD,endash,emdash" k="46" />
<hkern g1="Y,Yacute,Ydieresis" g2="v,y,yacute,ydieresis" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="29" />
<hkern g1="Y,Yacute,Ydieresis" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="96" />
<hkern g1="Y,Yacute,Ydieresis" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="105" />
<hkern g1="Y,Yacute,Ydieresis" g2="W" k="-17" />
<hkern g1="Y,Yacute,Ydieresis" g2="T" k="-17" />
<hkern g1="Y,Yacute,Ydieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="39" />
<hkern g1="Y,Yacute,Ydieresis" g2="V" k="-18" />
<hkern g1="Y,Yacute,Ydieresis" g2="Y,Yacute,Ydieresis" k="-18" />
<hkern g1="Y,Yacute,Ydieresis" g2="X" k="-13" />
<hkern g1="Y,Yacute,Ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="211" />
<hkern g1="Y,Yacute,Ydieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="256" />
<hkern g1="Y,Yacute,Ydieresis" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="65" />
<hkern g1="Y,Yacute,Ydieresis" g2="x" k="23" />
<hkern g1="Y,Yacute,Ydieresis" g2="hyphen,uni00AD,endash,emdash" k="52" />
<hkern g1="Y,Yacute,Ydieresis" g2="m,n,p,ntilde" k="40" />
<hkern g1="Y,Yacute,Ydieresis" g2="S" k="16" />
<hkern g1="Y,Yacute,Ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="73" />
<hkern g1="Y,Yacute,Ydieresis" g2="z" k="30" />
<hkern g1="Y,Yacute,Ydieresis" g2="s" k="108" />
<hkern g1="Y,Yacute,Ydieresis" g2="J" k="213" />
<hkern g1="W" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="31" />
<hkern g1="W" g2="T" k="-14" />
<hkern g1="W" g2="u,ugrave,uacute,ucircumflex,udieresis" k="19" />
<hkern g1="W" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="123" />
<hkern g1="W" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="43" />
<hkern g1="W" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="31" />
<hkern g1="W" g2="hyphen,uni00AD,endash,emdash" k="60" />
<hkern g1="W" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="33" />
<hkern g1="W" g2="J" k="64" />
<hkern g1="Z" g2="v,y,yacute,ydieresis" k="27" />
<hkern g1="Z" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="26" />
<hkern g1="Z" g2="u,ugrave,uacute,ucircumflex,udieresis" k="19" />
<hkern g1="Z" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-13" />
<hkern g1="Z" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="21" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="v,y,yacute,ydieresis" k="15" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="67" />
<hkern g1="c,ccedilla" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="11" />
<hkern g1="b,p,thorn" g2="v,y,yacute,ydieresis" k="11" />
<hkern g1="b,p,thorn" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="29" />
<hkern g1="b,p,thorn" g2="x" k="15" />
<hkern g1="b,p,thorn" g2="z" k="15" />
<hkern g1="b,p,thorn" g2="h,k,l" k="10" />
<hkern g1="e,egrave,eacute,ecircumflex,edieresis" g2="v,y,yacute,ydieresis" k="13" />
<hkern g1="e,egrave,eacute,ecircumflex,edieresis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="14" />
<hkern g1="h,m,n,ntilde" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="16" />
<hkern g1="h,m,n,ntilde" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="10" />
<hkern g1="h,m,n,ntilde" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="10" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="v,y,yacute,ydieresis" k="15" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="20" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="x" k="21" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="z" k="16" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="h,k,l" k="20" />
<hkern g1="v,y,yacute,ydieresis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="-15" />
<hkern g1="v,y,yacute,ydieresis" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="15" />
<hkern g1="v,y,yacute,ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="107" />
<hkern g1="v,y,yacute,ydieresis" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="13" />
<hkern g1="v,y,yacute,ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="15" />
<hkern g1="r" g2="v,y,yacute,ydieresis" k="-18" />
<hkern g1="r" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="-16" />
<hkern g1="r" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="20" />
<hkern g1="r" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="123" />
<hkern g1="r" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="19" />
<hkern g1="r" g2="h,k,l" k="20" />
<hkern g1="x" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="20" />
<hkern g1="x" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="20" />
<hkern g1="z" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="16" />
<hkern g1="z" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="16" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="107" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="61" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="120" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="59" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="m,n,p,ntilde" k="20" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="50" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="s" k="80" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="170" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,687 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata></metadata>
<defs>
<font id="roboto_slabregular" horiz-adv-x="1128" >
<font-face units-per-em="2048" ascent="1638" descent="-410" />
<missing-glyph horiz-adv-x="509" />
<glyph unicode="&#xfb01;" horiz-adv-x="1239" d="M45 936v146h169v117q0 182 107 282t296 100q66 0 132 -16t152 -45l-33 -160q-53 21 -113 36t-123 15q-118 0 -169.5 -52t-51.5 -160v-117h617v-928l163 -28v-126h-523v126l163 28v782h-420v-782l163 -28v-126h-523v126l163 28v782h-169z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1350" d="M751 126l163 28v1226q-58 14 -119 22.5t-123 8.5q-138 0 -199.5 -62t-61.5 -189v-78h251v-146h-251v-782l163 -28v-126h-523v126l163 28v782h-144v146h144v78q0 201 117.5 311t325.5 110q86 0 170 -16t195 -46h89v-1365l163 -28v-126h-523v126z" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#xd;" horiz-adv-x="509" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#x9;" horiz-adv-x="0" />
<glyph unicode=" " horiz-adv-x="509" />
<glyph unicode="&#x09;" horiz-adv-x="509" />
<glyph unicode="&#xa0;" horiz-adv-x="509" />
<glyph unicode="!" horiz-adv-x="483" d="M340 478h-197v978h197v-978zM340 0h-197v204h197v-204z" />
<glyph unicode="&#x22;" horiz-adv-x="765" d="M324 1290l-61 -250h-97v520h158v-270zM632 1290l-61 -250h-97v520h158v-270z" />
<glyph unicode="#" horiz-adv-x="1246" d="M705 410h-256l-80 -410h-151l80 410h-235v140h263l68 348h-255v142h283l82 416h151l-82 -416h255l82 416h151l-82 -416h200v-142h-227l-68 -348h220v-140h-248l-80 -410h-151zM477 550h256l68 348h-256z" />
<glyph unicode="$" horiz-adv-x="1110" d="M815 376q0 90 -63.5 153.5t-210.5 113.5q-202 61 -305 163t-103 272q0 165 95 269t261 125v221h158v-222q167 -24 259.5 -143.5t92.5 -320.5h-196q0 136 -62.5 220t-174.5 84q-118 0 -177 -61.5t-59 -168.5q0 -97 61 -157t219 -114q204 -66 303 -164.5t99 -267.5 q0 -172 -103 -274t-283 -121v-191h-156v191q-172 18 -282 125.5t-106 315.5l2 5h190q0 -154 77.5 -219.5t190.5 -65.5q129 0 201 61.5t72 170.5z" />
<glyph unicode="%" horiz-adv-x="1460" d="M77 1176q0 127 82 214t218 87q138 0 220 -86.5t82 -214.5v-77q0 -127 -82 -213t-218 -86q-137 0 -219.5 86t-82.5 213v77zM223 1099q0 -74 40.5 -125.5t115.5 -51.5q73 0 113.5 51t40.5 126v77q0 74 -41 126.5t-115 52.5t-114 -52.5t-40 -126.5v-77zM782 357 q0 126 82 213t218 87q137 0 219.5 -86.5t82.5 -213.5v-78q0 -128 -82 -214t-218 -86q-138 0 -220 86t-82 214v78zM928 279q0 -75 40.5 -126.5t115.5 -51.5q74 0 114 51.5t40 126.5v78q0 74 -41 126t-115 52t-114 -52t-40 -126v-78zM442 110l-109 67l711 1138l109 -67z" />
<glyph unicode="&#x26;" horiz-adv-x="1289" d="M74 392q0 122 70.5 213.5t210.5 183.5q-78 99 -116 176.5t-38 159.5q0 169 97.5 260.5t268.5 91.5q158 0 257 -91t99 -219q0 -98 -52.5 -169.5t-155.5 -146.5l-109 -80l340 -409q41 65 64 144t23 167h176q0 -131 -39 -243t-113 -201l185 -224l-2 -5h-229l-85 102 q-80 -60 -177 -91.5t-201 -31.5q-217 0 -345.5 115t-128.5 298zM548 133q72 0 142 24.5t132 70.5l-361 435l-40 -29q-91 -68 -120.5 -130t-29.5 -112q0 -113 71 -186t206 -73zM398 1127q0 -53 27 -110.5t81 -125.5l138 95q57 38 77.5 82.5t20.5 98.5q0 61 -48.5 108 t-126.5 47q-81 0 -125 -56.5t-44 -138.5z" />
<glyph unicode="'" horiz-adv-x="460" d="M324 1337l-61 -282h-97v505h158v-223z" />
<glyph unicode="(" horiz-adv-x="662" d="M114 591q0 394 159 673t334 372l6 -1l37 -116q-137 -107 -238 -343t-101 -583v-13q0 -348 100.5 -583.5t238.5 -351.5l-37 -108h-6q-175 93 -334 371.5t-159 673.5v9z" />
<glyph unicode=")" horiz-adv-x="654" d="M547 582q0 -395 -159.5 -673.5t-333.5 -371.5h-6l-37 108q135 105 237 345.5t102 589.5v13q0 343 -105 584t-234 351l37 108h6q174 -93 333.5 -372t159.5 -673v-9z" />
<glyph unicode="*" horiz-adv-x="958" d="M362 982l-296 89l49 154l296 -111l-10 342h161l-10 -348l293 110l48 -156l-302 -89l193 -270l-131 -96l-181 287l-176 -279l-132 93z" />
<glyph unicode="+" horiz-adv-x="1145" d="M671 783h400v-178h-400v-459h-197v459h-401v178h401v423h197v-423z" />
<glyph unicode="," horiz-adv-x="404" d="M315 72q0 -98 -49 -205t-132 -178l-111 74q47 72 71 147t24 159v152h197v-149z" />
<glyph unicode="-" horiz-adv-x="797" d="M643 538h-489v154h489v-154z" />
<glyph unicode="." horiz-adv-x="493" d="M342 0h-197v202h197v-202z" />
<glyph unicode="/" horiz-adv-x="824" d="M167 -125h-167l608 1581h166z" />
<glyph unicode="0" horiz-adv-x="1168" d="M1048 555q0 -279 -124 -427.5t-339 -148.5q-214 0 -339 149t-125 427v345q0 278 124 427.5t338 149.5q215 0 340 -149.5t125 -427.5v-345zM851 942q0 189 -68.5 284.5t-199.5 95.5q-129 0 -197 -95.5t-68 -284.5v-427q0 -189 69 -285.5t198 -96.5q131 0 198.5 96 t67.5 286v427z" />
<glyph unicode="1" horiz-adv-x="844" d="M121 126l225 28v1091l-229 -4v123l426 92v-1302l224 -28v-126h-646v126z" />
<glyph unicode="2" horiz-adv-x="1131" d="M97 0v135l477 530q128 143 173.5 227t45.5 172q0 109 -64 183.5t-169 74.5q-151 0 -222 -77t-71 -218h-189l-2 6q-5 188 124.5 316t359.5 128q197 0 313.5 -114.5t116.5 -291.5q0 -119 -70.5 -238t-198.5 -257l-383 -417l2 -5h517l16 167h167v-321h-943z" />
<glyph unicode="3" horiz-adv-x="1106" d="M363 819h172q131 0 185.5 65.5t54.5 182.5q0 125 -62 190t-183 65q-115 0 -184.5 -67.5t-69.5 -179.5h-189l-2 6q-5 165 119.5 280.5t325.5 115.5q202 0 322 -107.5t120 -306.5q0 -90 -54.5 -179.5t-163.5 -136.5q131 -43 185.5 -135t54.5 -206q0 -199 -130.5 -313 t-333.5 -114q-200 0 -330 107.5t-125 291.5l3 6h188q0 -115 70.5 -183t193.5 -68q125 0 196 68t71 201q0 135 -63 199t-199 64h-172v154z" />
<glyph unicode="4" horiz-adv-x="1187" d="M913 490h201v-154h-201v-182l163 -28v-126h-522v126l163 28v182h-654v111l642 1009h208v-966zM273 490h444v685l-6 2l-20 -53z" />
<glyph unicode="5" horiz-adv-x="1081" d="M819 1168l-19 113h-435l-47 -409q45 34 101.5 56.5t130.5 24.5q201 2 316.5 -131t115.5 -358q0 -219 -117.5 -352t-342.5 -133q-185 0 -307.5 101t-117.5 297l2 6h178q0 -118 68.5 -184t176.5 -66q125 0 194 88t69 241q0 141 -69.5 230.5t-192.5 89.5q-116 0 -168.5 -35 t-76.5 -107l-164 17l84 799h769v-288h-148z" />
<glyph unicode="6" horiz-adv-x="1144" d="M664 1477q74 0 147.5 -17t121.5 -43l-38 -147q-47 23 -103 37.5t-128 14.5q-153 0 -243.5 -115.5t-96.5 -348.5l4 -4q56 52 137 82.5t175 30.5q195 0 311 -135t116 -342q0 -226 -123.5 -368.5t-329.5 -142.5q-213 0 -353 155t-140 439v196q0 346 152 527t391 181z M597 820q-101 0 -172 -40.5t-108 -108.5v-117q0 -203 84.5 -312t212.5 -109q121 0 188.5 102.5t67.5 254.5q0 144 -72.5 237t-200.5 93z" />
<glyph unicode="7" d="M1060 1301q-264 -314 -356.5 -556.5t-133.5 -587.5l-16 -157h-197l16 157q42 344 163 615t331 529h-608l-15 -167h-168v322h984v-155z" />
<glyph unicode="8" horiz-adv-x="1131" d="M999 1076q0 -114 -64 -199.5t-173 -127.5q126 -44 201.5 -138t75.5 -217q0 -202 -131.5 -308.5t-341.5 -106.5q-214 0 -344 106.5t-130 308.5q0 123 74 217t200 138q-109 42 -171 127.5t-62 199.5q0 192 118.5 296.5t312.5 104.5q192 0 313.5 -104.5t121.5 -296.5z M843 398q0 120 -79 197t-200 77q-122 0 -198.5 -76.5t-76.5 -197.5q0 -124 75.5 -194.5t201.5 -70.5q123 0 200 71t77 194zM802 1072q0 108 -67.5 179t-170.5 71q-105 0 -169.5 -68.5t-64.5 -181.5q0 -111 65 -178t171 -67q104 0 170 67t66 178z" />
<glyph unicode="9" horiz-adv-x="1154" d="M511 133q142 0 224.5 108.5t85.5 349.5l-4 5q-40 -67 -112 -103t-162 -36q-213 0 -336 131.5t-123 369.5q0 228 131.5 373.5t319.5 145.5q228 0 359.5 -142.5t131.5 -421.5v-263q0 -341 -140.5 -506t-374.5 -165q-76 0 -155.5 14.5t-142.5 44.5l30 149 q61 -29 124.5 -41.5t143.5 -12.5zM543 612q109 0 181.5 47t104.5 120v154q0 193 -73.5 291t-214.5 98q-109 0 -184.5 -102t-75.5 -262q0 -157 70 -251.5t192 -94.5z" />
<glyph unicode=":" horiz-adv-x="419" d="M145 0zM342 0h-197v202h197v-202zM342 880h-197v202h197v-202z" />
<glyph unicode=";" horiz-adv-x="424" d="M53 0zM343 880h-197v202h197v-202zM345 72q0 -98 -49 -205t-132 -178l-111 74q47 72 71 147t24 159v152h197v-149z" />
<glyph unicode="&#x3c;" horiz-adv-x="1017" d="M333 579l-85 -18v-6l85 -19l559 -228v-201l-816 379v149l816 378v-201z" />
<glyph unicode="=" horiz-adv-x="1127" d="M981 823h-834v164h834v-164zM981 407h-834v164h834v-164z" />
<glyph unicode="&#x3e;" horiz-adv-x="1060" d="M125 798v195l855 -378v-149l-855 -379v196l598 238l84 17v6l-84 20z" />
<glyph unicode="?" horiz-adv-x="953" d="M360 410q1 146 24.5 201.5t125.5 147.5q99 117 141 180t42 152q0 106 -56.5 163t-161.5 57q-91 0 -154.5 -49.5t-63.5 -145.5h-188l-3 6q-3 161 113 258t296 97q197 0 306 -100.5t109 -280.5q0 -129 -70.5 -236t-186.5 -219q-53 -54 -64.5 -97t-11.5 -134h-197zM563 0 h-205v208h205v-208z" />
<glyph unicode="@" horiz-adv-x="1821" d="M1704 502q-9 -214 -120 -368.5t-332 -154.5q-73 0 -126.5 41.5t-76.5 116.5q-50 -80 -122 -119t-167 -39q-125 0 -194 120.5t-51 316.5q23 259 137.5 415.5t278.5 156.5q105 0 168.5 -26t140.5 -80l-4 -4h6l-51 -585q-9 -110 21.5 -151.5t81.5 -41.5q123 0 196.5 113.5 t81.5 288.5q17 382 -143.5 595.5t-495.5 213.5q-309 0 -496 -231t-202 -602q-18 -376 150 -594.5t482 -218.5q88 0 178 21.5t152 56.5l39 -107q-68 -42 -171.5 -65.5t-201.5 -23.5q-380 0 -588 249.5t-189 681.5q19 423 249 688t602 265q379 0 581.5 -250t185.5 -679z M691 416q-11 -141 22 -215.5t107 -74.5q63 0 116.5 25t97.5 88q-1 12 -0.5 25t2.5 29l47 538q-26 12 -54.5 19t-59.5 7q-125 0 -191 -109t-87 -332z" />
<glyph unicode="A" horiz-adv-x="1500" d="M55 126l108 15l509 1315h169l500 -1315l107 -15v-126h-418v126l110 19l-96 268h-583l-99 -268l110 -19v-126h-417v126zM522 578h462l-226 625h-6z" />
<glyph unicode="B" horiz-adv-x="1345" d="M709 1456q228 0 356.5 -98.5t128.5 -295.5q0 -97 -61.5 -173.5t-162.5 -113.5q131 -28 207 -129t76 -235q0 -200 -130 -305.5t-352 -105.5h-700v126l163 28v1147l-163 28v127h163h475zM431 683v-529h340q135 0 209.5 66.5t74.5 188.5q0 128 -62.5 201t-191.5 73h-370z M431 837h329q106 3 171.5 63t65.5 166q0 118 -74 176.5t-214 58.5h-278v-464z" />
<glyph unicode="C" horiz-adv-x="1321" d="M1200 1009h-139l-37 206q-48 47 -118 77t-167 30q-227 0 -349 -164.5t-122 -417.5v-23q0 -253 119.5 -418.5t331.5 -165.5q99 0 180 31t125 76l37 206h139v-259q-63 -81 -189 -144.5t-292 -63.5q-284 0 -466 210t-182 528v21q0 320 179 529.5t469 209.5q166 0 292 -64.5 t189 -144.5v-259z" />
<glyph unicode="D" horiz-adv-x="1419" d="M681 1456q285 0 458.5 -175.5t173.5 -453.5v-199q0 -279 -173.5 -453.5t-458.5 -174.5h-610v126l163 28v1147l-163 28v127h163h447zM431 1301v-1147h250q202 0 318.5 133t116.5 341v201q0 206 -116.5 339t-318.5 133h-250z" />
<glyph unicode="E" horiz-adv-x="1306" d="M71 0v126l163 28v1147l-163 28v127h1118v-350h-169l-16 195h-573v-471h557v-155h-557v-521h585l16 195h168v-349h-1129z" />
<glyph unicode="F" horiz-adv-x="1273" d="M71 126l163 28v1147l-163 28v127h1125v-350h-168l-16 195h-581v-502h563v-155h-563v-490l163 -28v-126h-523v126z" />
<glyph unicode="G" horiz-adv-x="1387" d="M1230 165q-64 -67 -189 -126.5t-325 -59.5q-292 0 -476.5 205t-184.5 532v24q0 329 182.5 533t485.5 204q162 0 284.5 -50.5t206.5 -133.5v-264h-138l-48 201q-49 40 -118.5 66t-166.5 26q-236 0 -363.5 -161.5t-127.5 -418.5v-26q0 -261 123.5 -422t340.5 -161 q119 0 195 25t122 55v319l-239 10v145h436v-522z" />
<glyph unicode="H" horiz-adv-x="1573" d="M71 1329v127h523v-127l-163 -28v-503h706v503l-163 28v127h163h197h163v-127l-163 -28v-1147l163 -28v-126h-523v126l163 28v489h-706v-489l163 -28v-126h-523v126l163 28v1147z" />
<glyph unicode="I" horiz-adv-x="662" d="M70 1329v127h523v-127l-163 -28v-1147l163 -28v-126h-523v126l163 28v1147z" />
<glyph unicode="J" horiz-adv-x="1183" d="M1124 1456v-127l-163 -28v-898q0 -195 -123.5 -309.5t-320.5 -114.5q-210 0 -334 106.5t-119 309.5l2 6h189q0 -135 68.5 -201.5t193.5 -66.5q109 0 178 73.5t69 196.5v898l-163 28v127h360h163z" />
<glyph unicode="K" horiz-adv-x="1452" d="M71 126l163 28v1147l-163 28v127h523v-127l-163 -28v-489h151l407 503l-109 14v127h462v-127l-137 -25l-445 -552l486 -601l137 -25v-126h-478v126l111 14l-415 517h-170v-503l163 -28v-126h-523v126z" />
<glyph unicode="L" horiz-adv-x="1199" d="M71 0v126l163 28v1147l-163 28v127h163h197h163v-127l-163 -28v-1147h506l15 167h168v-321h-1049z" />
<glyph unicode="M" horiz-adv-x="1905" d="M1494 1166l-5 1l-471 -1167h-131l-471 1166l-5 -1l20 -589v-422l163 -28v-126h-523v126l163 28v1147l-163 28v127h163h252l464 -1183h6l463 1183h416v-127l-163 -28v-1147l163 -28v-126h-523v126l163 28v422z" />
<glyph unicode="N" horiz-adv-x="1560" d="M1497 1456v-127l-163 -28v-1301h-197l-700 1124l-6 -2v-968l163 -28v-126h-523v126l163 28v1147l-163 28v127h163h197l700 -1123l6 2v966l-163 28v127h360h163z" />
<glyph unicode="O" horiz-adv-x="1445" d="M1368 717q0 -318 -182.5 -528t-472.5 -210q-282 0 -458 210t-176 528v21q0 317 176 528t458 211q290 0 472.5 -211t182.5 -528v-21zM1171 740q0 254 -121.5 414.5t-336.5 160.5q-206 0 -321.5 -161t-115.5 -414v-23q0 -256 115.5 -416.5t321.5 -160.5q218 0 338 160 t120 417v23z" />
<glyph unicode="P" horiz-adv-x="1301" d="M740 1456q233 0 362.5 -120t129.5 -316q0 -198 -129.5 -317t-362.5 -119h-309v-430l163 -28v-126h-523v126l163 28v1147l-163 28v127h163h506zM431 738h309q148 0 221.5 79.5t73.5 200.5t-73.5 202t-221.5 81h-309v-563z" />
<glyph unicode="Q" horiz-adv-x="1446" d="M1368 717q0 -194 -72 -354t-201 -258l295 -208l-135 -120l-331 236q-50 -16 -103 -25t-108 -9q-282 0 -458 210t-176 528v21q0 317 176 528t458 211q290 0 472.5 -211t182.5 -528v-21zM1171 740q0 254 -121.5 414.5t-336.5 160.5q-206 0 -321.5 -161t-115.5 -414v-23 q0 -256 115.5 -416.5t321.5 -160.5q218 0 338 160t120 417v23z" />
<glyph unicode="R" horiz-adv-x="1386" d="M710 1455q238 0 365 -105.5t127 -299.5q0 -106 -59 -188t-169 -129q119 -39 171.5 -127t52.5 -217v-117q0 -67 17 -99t56 -38l48 -6v-129h-106q-115 0 -163.5 80t-48.5 194v113q0 119 -69 191t-185 72h-316v-496l163 -28v-126h-523v126l163 28v1147l-163 28v126h163h476z M431 805h259q165 0 240 63t75 184q0 115 -72 182t-223 67h-279v-496z" />
<glyph unicode="S" horiz-adv-x="1247" d="M1125 1026h-149l-37 208q-45 38 -120 63t-174 25q-157 0 -241 -66.5t-84 -173.5q0 -95 85.5 -158.5t276.5 -111.5q230 -57 349.5 -168t119.5 -275q0 -176 -143.5 -283t-375.5 -107q-168 0 -298.5 55t-212.5 144v271h148l38 -209q57 -47 136 -77t189 -30q149 0 235.5 63 t86.5 171q0 100 -75 167.5t-265 113.5q-231 55 -361 162t-130 269q0 171 145 284.5t377 113.5q153 0 278.5 -52.5t201.5 -127.5v-271z" />
<glyph unicode="T" horiz-adv-x="1284" d="M1247 1456v-322h-168l-15 167h-323v-1147l163 -28v-126h-523v126l163 28v1147h-324l-14 -167h-169v322h1210z" />
<glyph unicode="U" horiz-adv-x="1541" d="M583 1456v-127l-163 -28v-832q0 -165 94 -250.5t248 -85.5q162 0 261 85t99 251v832l-163 28v127h360h163v-127l-163 -28v-832q0 -237 -154.5 -363.5t-402.5 -126.5q-241 0 -390 126.5t-149 363.5v832l-163 28v127h163h360z" />
<glyph unicode="V" horiz-adv-x="1470" d="M507 1329l-133 -21l326 -946l33 -115h6l33 115l325 947l-131 20v127h459v-127l-117 -16l-488 -1313h-169l-488 1313l-116 16v127h460v-127z" />
<glyph unicode="W" horiz-adv-x="1910" d="M489 1329l-148 -23l187 -802l27 -182l6 -1l39 183l268 952h174l269 -952l40 -187h6l29 187l183 802l-149 23v127h463v-127l-117 -15l-317 -1314h-176l-288 1010l-26 131h-6l-25 -131l-292 -1010h-175l-317 1314l-117 15v127h462v-127z" />
<glyph unicode="X" horiz-adv-x="1404" d="M43 126l131 22l414 586l-404 573l-131 22v127h472v-127l-117 -13l291 -437l294 437l-117 13v127h475v-127l-131 -22l-404 -573l413 -586l132 -22v-126h-471v126l115 13l-302 448l-303 -448l117 -13v-126h-474v126z" />
<glyph unicode="Y" horiz-adv-x="1416" d="M555 1329l-157 -19l305 -594l305 594l-156 19v127h500v-127l-123 -19l-432 -798v-358l163 -28v-126h-522v126l163 28v373l-424 783l-122 19v127h500v-127z" />
<glyph unicode="Z" horiz-adv-x="1220" d="M313 154h631l16 167h168v-321h-1036v146l777 1155h-584l-14 -167h-169v322h993v-141z" />
<glyph unicode="[" horiz-adv-x="573" d="M541 1509h-187v-1666h187v-155h-384v1976h384v-155z" />
<glyph unicode="\" horiz-adv-x="841" d="M36 1456h186l608 -1581h-186z" />
<glyph unicode="]" horiz-adv-x="552" d="M23 1664h385v-1976h-385v155h188v1666h-188v155z" />
<glyph unicode="^" horiz-adv-x="864" d="M253 729h-182l299 727h134l298 -727h-182l-166 419l-16 70h-6l-16 -70z" />
<glyph unicode="_" horiz-adv-x="1168" d="M1041 -154h-922v154h922v-154z" />
<glyph unicode="`" horiz-adv-x="582" d="M492 1211h-159l-249 260l3 6h230z" />
<glyph unicode="a" d="M795 0q-9 44 -14 79t-7 70q-57 -73 -142.5 -121.5t-182.5 -48.5q-169 0 -257 82.5t-88 232.5q0 154 124.5 237.5t341.5 83.5h203v126q0 95 -60 150.5t-167 55.5q-74 0 -130.5 -19t-91.5 -52l-21 -114h-152v210q74 59 179 94.5t228 35.5q184 0 298 -94t114 -269v-521 q0 -21 0.5 -41t2.5 -40l80 -11v-126h-258zM478 144q98 0 179 47t116 113v178h-210q-121 0 -191.5 -56t-70.5 -136q0 -71 44 -108.5t133 -37.5z" />
<glyph unicode="b" horiz-adv-x="1186" d="M1079 500q0 -234 -112.5 -377.5t-309.5 -143.5q-106 0 -184 40.5t-130 119.5l-18 -139h-170v1405l-163 28v127h360v-606q51 72 126.5 110t176.5 38q200 0 312 -160t112 -421v-21zM881 521q0 187 -68 304t-208 117q-91 0 -153.5 -44t-99.5 -118v-478q37 -75 100.5 -119 t154.5 -44q139 0 206.5 99t67.5 262v21z" />
<glyph unicode="c" horiz-adv-x="1104" d="M575 133q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5t-301.5 -108.5q-236 0 -360.5 154t-124.5 387v42q0 231 125 385.5t360 154.5q130 0 233.5 -43t171.5 -118l9 -240h-157l-43 170q-35 34 -90 55t-124 21q-155 0 -221.5 -111.5t-66.5 -273.5v-42 q0 -166 66 -276.5t222 -110.5z" />
<glyph unicode="d" horiz-adv-x="1229" d="M818 129q-53 -74 -129.5 -112t-177.5 -38q-198 0 -309.5 143.5t-111.5 377.5v21q0 261 111.5 421t311.5 160q96 0 169.5 -35.5t125.5 -102.5v441l-163 28v127h163h197v-1406l163 -28v-126h-334zM287 500q0 -163 67 -262t207 -99q88 0 148 40t99 113v502q-38 68 -99 108 t-146 40q-141 0 -208.5 -117t-67.5 -304v-21z" />
<glyph unicode="e" horiz-adv-x="1101" d="M583 -21q-226 0 -359.5 150.5t-133.5 390.5v44q0 231 137.5 384.5t325.5 153.5q218 0 330.5 -132t112.5 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -56 -153.5 -94.5t-229.5 -38.5zM553 947q-99 0 -169 -83.5 t-86 -209.5l2 -5h499v26q0 116 -62 194t-184 78z" />
<glyph unicode="f" horiz-adv-x="728" d="M70 936v146h169v137q0 173 90.5 267.5t252.5 94.5q34 0 68.5 -5.5t76.5 -15.5l-24 -150q-18 4 -43.5 7t-52.5 3q-87 0 -129 -51.5t-42 -149.5v-137h226v-146h-226v-782l163 -28v-126h-523v126l163 28v782h-169z" />
<glyph unicode="g" horiz-adv-x="1159" d="M90 521q0 261 114 421t315 160q102 0 179 -40t129 -116l18 136h166v-1068q0 -210 -117 -330.5t-333 -120.5q-78 0 -169 21.5t-160 58.5l51 153q55 -29 130 -48t146 -19q132 0 193.5 74t61.5 211v103q-53 -68 -127 -103t-170 -35q-199 0 -313 144t-114 377v21zM287 500 q0 -163 69 -262t210 -99q89 0 149 40.5t99 114.5v498q-38 69 -99 109.5t-147 40.5q-141 0 -211 -118t-70 -303v-21z" />
<glyph unicode="h" horiz-adv-x="1322" d="M62 126l163 28v1251l-163 28v127h360v-622q56 78 137 121t180 43q174 0 270 -104t96 -320v-524l163 -28v-126h-523v126l163 28v526q0 134 -57.5 198t-171.5 64q-81 0 -147.5 -38.5t-109.5 -104.5v-645l163 -28v-126h-523v126z" />
<glyph unicode="i" horiz-adv-x="673" d="M89 126l163 28v773l-163 28v127h360v-928l163 -28v-126h-523v126zM449 1359h-197v201h197v-201z" />
<glyph unicode="j" horiz-adv-x="571" d="M424 -89q0 -167 -86 -257.5t-239 -90.5q-32 0 -58 4.5t-54 13.5l13 155q14 -5 41 -8.5t44 -3.5q65 0 103.5 44t38.5 143v1016l-163 28v127h360v-1171zM418 1363h-197v197h197v-197z" />
<glyph unicode="k" horiz-adv-x="1245" d="M62 1433v127h360v-904h126l231 286l-99 13v127h453v-127l-132 -26l-285 -340l347 -439l123 -24v-126h-449v126l101 13l-287 360h-129v-345l163 -28v-126h-523v126l163 28v1251z" />
<glyph unicode="l" horiz-adv-x="645" d="M62 1433v127h360v-1406l163 -28v-126h-523v126l163 28v1251z" />
<glyph unicode="m" horiz-adv-x="1935" d="M50 126l163 28v773l-163 28v127h340l13 -141q52 77 134 119t190 42t185.5 -50t116.5 -150q51 92 135 146t196 54q166 0 262 -113.5t96 -341.5v-493l163 -28v-126h-524v126l163 28v495q0 160 -55 226.5t-163 66.5q-103 0 -165.5 -72.5t-72.5 -182.5v-533l163 -28v-126 h-523v126l163 28v495q0 152 -56.5 222.5t-163.5 70.5q-90 0 -148 -37t-89 -104v-647l163 -28v-126h-523v126z" />
<glyph unicode="n" horiz-adv-x="1318" d="M60 126l163 28v773l-163 28v127h339l14 -161q54 86 135.5 133.5t185.5 47.5q175 0 271 -102.5t96 -316.5v-529l163 -28v-126h-523v126l163 28v525q0 143 -56.5 203t-172.5 60q-85 0 -150.5 -41t-104.5 -112v-635l163 -28v-126h-523v126z" />
<glyph unicode="o" horiz-adv-x="1149" d="M90 551q0 240 130 395.5t353 155.5q224 0 354.5 -155t130.5 -396v-22q0 -242 -130 -396t-353 -154q-225 0 -355 154.5t-130 395.5v22zM287 529q0 -172 72.5 -284t215.5 -112q140 0 213 112t73 284v22q0 170 -73 283t-215 113t-214 -113t-72 -283v-22z" />
<glyph unicode="p" horiz-adv-x="1240" d="M65 -289l163 28v1188l-163 28v127h332l18 -132q54 74 131.5 113t179.5 39q201 0 312.5 -159.5t111.5 -421.5v-21q0 -234 -112 -377.5t-309 -143.5q-100 0 -175.5 33.5t-128.5 99.5v-373l163 -28v-127h-523v127zM952 521q0 185 -72 303t-214 118q-84 0 -144 -38t-97 -104 v-527q37 -67 96.5 -103.5t146.5 -36.5q140 0 212 102t72 265v21z" />
<glyph unicode="q" horiz-adv-x="1155" d="M90 521q0 261 111.5 421t311.5 160q95 0 169 -35.5t126 -103.5l16 119h170v-1343l163 -28v-127h-523v127l163 28v363q-52 -61 -123.5 -92t-162.5 -31q-198 0 -309.5 143.5t-111.5 377.5v21zM287 500q0 -164 67 -265.5t207 -101.5q82 0 139.5 36t96.5 102v543 q-39 61 -97 97t-137 36q-141 0 -208.5 -119.5t-67.5 -306.5v-21z" />
<glyph unicode="r" horiz-adv-x="847" d="M89 955v127h339l19 -157q46 83 113.5 130t154.5 47q23 0 47.5 -3.5t37.5 -7.5l-26 -183l-112 6q-78 0 -131 -36.5t-82 -102.5v-621l163 -28v-126h-523v126l163 28v773z" />
<glyph unicode="s" horiz-adv-x="1044" d="M917 742h-148l-32 130q-36 34 -90.5 54.5t-123.5 20.5q-105 0 -156 -46t-51 -111q0 -64 45 -101t183 -66q205 -44 305 -119.5t100 -202.5q0 -144 -116.5 -233t-304.5 -89q-123 0 -221 28.5t-175 82.5l-1 247h148l37 -145q34 -31 92.5 -45t119.5 -14q105 0 164.5 42.5 t59.5 111.5q0 65 -49.5 107t-187.5 73q-197 43 -297 117t-100 200q0 132 112.5 225t292.5 93q123 0 221 -32t163 -89z" />
<glyph unicode="t" horiz-adv-x="750" d="M433 1343v-261h205v-146h-205v-657q0 -76 31.5 -107t83.5 -31q26 0 58.5 4.5t54.5 9.5l27 -135q-28 -18 -82 -29.5t-108 -11.5q-120 0 -191 72.5t-71 227.5v657h-171v146h171v261h197z" />
<glyph unicode="u" horiz-adv-x="1244" d="M863 160q-51 -87 -131.5 -134t-185.5 -47q-176 0 -275 113t-99 352v483l-124 28v127h124h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v625l-145 28v127h145h197v-928l124 -28v-126h-301z" />
<glyph unicode="v" horiz-adv-x="1143" d="M460 955l-130 -20l223 -616l18 -78h6l19 78l216 616l-131 20v127h418v-127l-89 -15l-363 -940h-149l-367 940l-89 15v127h418v-127z" />
<glyph unicode="w" horiz-adv-x="1693" d="M473 955l-124 -22l141 -539l23 -131h6l28 131l216 688h158l217 -688l31 -146h6l29 146l133 539l-126 22v127h412v-127l-94 -14l-273 -941h-159l-210 659l-45 182l-6 -1l-42 -181l-206 -659h-159l-273 941l-95 14v127h412v-127z" />
<glyph unicode="x" horiz-adv-x="1192" d="M62 126l116 23l319 398l-309 385l-116 23v127h424v-127l-98 -12l202 -260l203 261l-97 11v127h427v-127l-116 -23l-309 -385l318 -398l117 -23v-126h-424v126l96 11l-212 272l-212 -272l97 -11v-126h-426v126z" />
<glyph unicode="y" horiz-adv-x="1162" d="M1117 955l-97 -15l-412 -1106q-41 -109 -118 -190t-207 -81q-23 0 -60 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 102 54.5t68 125.5l47 112l-357 918l-99 16v127h437v-127l-122 -20l187 -534l36 -138h6l225 672l-123 20v127h436v-127z" />
<glyph unicode="z" horiz-adv-x="1084" d="M346 154h442l16 167h167v-321h-859v138l585 788h-396l-15 -166h-168v322h820v-134z" />
<glyph unicode="{" horiz-adv-x="701" d="M631 -364q-195 55 -277.5 175t-82.5 290v205q0 112 -51 174.5t-157 62.5v147q106 0 157 61.5t51 174.5v206q0 171 82.5 290.5t277.5 174.5l40 -117q-110 -35 -156.5 -125.5t-46.5 -222.5v-206q0 -105 -42 -185t-127 -125q85 -46 127 -126.5t42 -183.5v-205 q0 -132 46.5 -221.5t156.5 -125.5z" />
<glyph unicode="|" horiz-adv-x="451" d="M307 -270h-157v1726h157v-1726z" />
<glyph unicode="}" horiz-adv-x="701" d="M27 -246q108 36 155 125.5t47 221.5v205q0 107 45 187t139 123q-94 41 -139 121t-45 189v206q0 132 -47 222.5t-155 125.5l40 117q194 -55 276.5 -174.5t82.5 -290.5v-206q0 -113 51 -174.5t158 -61.5v-147q-107 0 -158 -62.5t-51 -174.5v-205q0 -170 -82.5 -290 t-276.5 -175z" />
<glyph unicode="~" horiz-adv-x="1386" d="M1257 740q0 -137 -87.5 -238t-217.5 -101q-89 0 -162.5 33t-158.5 107q-60 48 -109 72t-98 24q-67 0 -114.5 -53t-47.5 -128l-141 18q0 136 85.5 232.5t217.5 96.5q88 0 163 -34.5t160 -104.5q59 -51 106.5 -74t98.5 -23q66 0 114.5 57t48.5 134z" />
<glyph unicode="&#xa1;" horiz-adv-x="481" d="M339 -374h-197v978h197v-978zM339 876h-197v206h197v-206z" />
<glyph unicode="&#xa2;" horiz-adv-x="1118" d="M589 133q98 0 172.5 60.5t74.5 148.5h178l2 -6q4 -123 -99.5 -225t-252.5 -126v-230h-197v237q-178 38 -270.5 183t-92.5 345v42q0 197 92.5 342t270.5 185v229h197v-220q104 -12 188 -52.5t142 -104.5l9 -240h-157l-43 170q-35 34 -90 55t-124 21q-155 0 -221.5 -111.5 t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5z" />
<glyph unicode="&#xa3;" horiz-adv-x="1179" d="M427 615l6 -149q0 -90 -15.5 -171.5t-44.5 -140.5h551l16 167h167v-167h1l-1 -154h-975v154h10q47 13 71 111t24 201l-6 149h-163v155h157l-10 270q0 204 112 320.5t300 116.5q200 0 310 -104.5t106 -276.5l-2 -6h-189q0 118 -63.5 175t-161.5 57q-99 0 -157 -74.5 t-58 -207.5l10 -270h419v-155h-414z" />
<glyph unicode="&#xa4;" horiz-adv-x="1461" d="M1087 108q-77 -62 -169.5 -95t-193.5 -33t-193 32.5t-169 94.5l-130 -133l-138 138l138 140q-50 76 -76.5 166.5t-26.5 189.5q0 102 28.5 196t82.5 172l-146 149l138 139l143 -146q74 55 163.5 85.5t185.5 30.5q97 0 186 -31t164 -87l146 149l140 -140l-150 -153 q52 -78 80.5 -170.5t28.5 -193.5q0 -98 -26.5 -187.5t-74.5 -165.5l142 -143l-140 -139zM311 608q0 -188 120.5 -320.5t292.5 -132.5q170 0 290.5 132.5t120.5 320.5q0 186 -120.5 318t-290.5 132q-172 0 -292.5 -132t-120.5 -318z" />
<glyph unicode="&#xa5;" horiz-adv-x="1386" d="M1335 1329l-139 -20l-333 -571h312v-123h-383v-167h383v-122h-383v-172l163 -28v-126h-523v126l163 28v172h-375v122h375v167h-375v123h311l-333 570l-139 21v127h442v-127l-87 -15l283 -521l283 521l-86 15v127h441v-127z" />
<glyph unicode="&#xa6;" horiz-adv-x="496" d="M150 -270v792h197v-792h-197zM347 698h-197v758h197v-758z" />
<glyph unicode="&#xa7;" horiz-adv-x="1233" d="M1144 431q0 -94 -48 -164t-136 -110q70 -51 105 -119t35 -166q0 -172 -133 -269.5t-358 -97.5q-222 0 -372.5 102.5t-145.5 322.5l2 6l188 2q0 -143 96.5 -210.5t231.5 -67.5q136 0 215 59.5t79 150.5t-72 141.5t-276 113.5q-239 63 -352 156t-113 270q0 91 46.5 161.5 t133.5 111.5q-68 50 -101.5 119.5t-33.5 166.5q0 166 133.5 266.5t358.5 100.5q232 0 362.5 -111.5t126.5 -313.5l-3 -6h-188q0 118 -79.5 197t-218.5 79q-146 0 -220.5 -59.5t-74.5 -150.5q0 -99 67 -148.5t278 -107.5q244 -69 355.5 -159.5t111.5 -265.5zM599 689 q-48 12 -89.5 25t-77.5 27q-73 -19 -109 -69t-36 -119q0 -101 67.5 -152t278.5 -110q52 -16 90 -27.5t72 -23.5q73 20 113 70t40 118q0 91 -73.5 144.5t-275.5 116.5z" />
<glyph unicode="&#xa8;" horiz-adv-x="992" d="M840 1256h-218v200h218v-200zM370 1256h-218v200h218v-200z" />
<glyph unicode="&#xa9;" horiz-adv-x="1595" d="M1114 596l2 -6q4 -151 -83.5 -229.5t-244.5 -78.5q-160 0 -254.5 106t-94.5 281v119q0 173 94.5 280t254.5 107q157 0 245 -79t84 -228l-2 -6h-146q0 95 -45.5 138.5t-135.5 43.5q-95 0 -146 -70.5t-51 -184.5v-120q0 -117 51 -187t146 -70q90 0 135 43t45 141h146z M212 729q0 -265 172 -447t418 -182q244 0 416 182t172 447q0 263 -172 444t-416 181q-246 0 -418 -180.5t-172 -444.5zM92 729q0 315 207 531t503 216q295 0 502 -216t207 -531q0 -316 -207.5 -533t-501.5 -217q-296 0 -503 217t-207 533z" />
<glyph unicode="&#xaa;" horiz-adv-x="894" d="M598 706q-8 21 -13 45t-8 50q-33 -47 -89 -78t-133 -31q-119 0 -184 61t-65 167q0 110 84 170t246 60h138v52q0 63 -29.5 97t-87.5 34q-67 0 -103.5 -27t-36.5 -76l-163 13l-1 6q-6 98 79 163t225 65q133 0 211.5 -71t78.5 -205v-314q0 -51 6 -95t20 -86h-175zM397 831 q51 0 105 29.5t72 65.5v110h-137q-75 0 -117 -33t-42 -79q0 -45 29.5 -69t89.5 -24z" />
<glyph unicode="&#xab;" horiz-adv-x="935" d="M58 117zM246 515l255 -398h-148l-295 389v19l295 389h148zM580 515l255 -398h-148l-295 389v19l295 389h148z" />
<glyph unicode="&#xac;" horiz-adv-x="1122" d="M955 375h-197v262h-637v165h834v-427z" />
<glyph unicode="&#xad;" horiz-adv-x="797" d="M154 538zM643 538h-489v154h489v-154z" />
<glyph unicode="&#xae;" horiz-adv-x="1595" d="M92 729q0 315 207 531t503 216q295 0 502 -216t207 -531q0 -316 -207.5 -533t-501.5 -217q-296 0 -503 217t-207 533zM212 729q0 -265 172 -447t418 -182q244 0 416 182t172 447q0 263 -172 444t-416 181q-246 0 -418 -180.5t-172 -444.5zM657 654v-338h-149v850h280 q152 0 238 -65.5t86 -191.5q0 -61 -33 -108.5t-95 -78.5q66 -26 95.5 -79t29.5 -128v-56q0 -41 3.5 -73.5t13.5 -53.5v-16h-153q-9 21 -11 61.5t-2 82.5v54q0 72 -33.5 106t-110.5 34h-159zM657 784h152q65 1 110 32.5t45 87.5q0 73 -39 102.5t-137 29.5h-131v-252z" />
<glyph unicode="&#xaf;" horiz-adv-x="1028" d="M875 1310h-721v146h721v-146z" />
<glyph unicode="&#xb0;" horiz-adv-x="757" d="M124 1216q0 106 75.5 183.5t180.5 77.5q104 0 178.5 -77.5t74.5 -183.5q0 -108 -74.5 -182.5t-178.5 -74.5q-106 0 -181 74.5t-75 182.5zM254 1216q0 -55 36.5 -91t89.5 -36q52 0 87.5 36t35.5 91t-35.5 92.5t-87.5 37.5q-53 0 -89.5 -37.5t-36.5 -92.5z" />
<glyph unicode="&#xb1;" horiz-adv-x="1057" d="M633 856h358v-154h-358v-413h-178v413h-380v154h380v411h178v-411zM959 5h-835v155h835v-155z" />
<glyph unicode="&#xb2;" horiz-adv-x="827" d="M714 667h-592v130l302 262q69 59 90.5 96.5t21.5 80.5q0 50 -28 81t-86 31q-67 0 -103.5 -32t-36.5 -82h-161l-2 6q-6 99 78 169t225 70q135 0 211 -64t76 -180q0 -80 -44.5 -136t-160.5 -161l-153 -135l2 -6h361v-130z" />
<glyph unicode="&#xb3;" horiz-adv-x="845" d="M424 1137q67 0 99 28.5t32 80.5q0 44 -36 72.5t-105 28.5q-56 0 -91 -24t-35 -64h-162l-2 6q-6 94 78.5 153.5t211.5 59.5q145 0 229 -59.5t84 -169.5q0 -55 -35.5 -100.5t-97.5 -71.5q71 -24 108.5 -71.5t37.5 -115.5q0 -111 -90 -173t-236 -62q-127 0 -218 58t-85 169 l1 6h163q0 -46 37.5 -74.5t101.5 -28.5q72 0 113.5 29.5t41.5 77.5q0 63 -36 91t-109 28h-133v126h133z" />
<glyph unicode="&#xb4;" horiz-adv-x="599" d="M279 1478h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xb5;" horiz-adv-x="1315" d="M900 109q-44 -64 -108 -97t-147 -33q-72 0 -126 16.5t-94 51.5v-463h-196v1343l-163 28v127h163h196v-622q0 -189 55 -258t157 -69q99 0 160 36.5t92 107.5v650l-163 28v127h360v-928l163 -28v-126h-340z" />
<glyph unicode="&#xb6;" horiz-adv-x="1090" d="M570 520q-234 0 -363 129.5t-129 338.5q0 207 129.5 337.5t362.5 130.5h443v-127l-163 -28v-1147l163 -28v-126h-523v126l163 28v366h-83z" />
<glyph unicode="&#xb7;" horiz-adv-x="516" d="M357 624h-198v212h198v-212z" />
<glyph unicode="&#xb8;" horiz-adv-x="470" d="M276 0l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57l-7 109q72 0 115.5 24.5t43.5 73.5q0 48 -36 67t-123 26l32 135h141z" />
<glyph unicode="&#xb9;" horiz-adv-x="547" d="M396 665h-174v655h-127v134l301 23v-812z" />
<glyph unicode="&#xba;" horiz-adv-x="941" d="M121 1142q0 148 93.5 241.5t251.5 93.5t252 -93.5t94 -241.5v-117q0 -149 -93.5 -241.5t-250.5 -92.5q-159 0 -253 92.5t-94 241.5v117zM293 1025q0 -88 44 -140.5t131 -52.5q83 0 127 53t44 140v117q0 84 -44.5 137.5t-128.5 53.5t-128.5 -53.5t-44.5 -137.5v-117z" />
<glyph unicode="&#xbb;" horiz-adv-x="938" d="M105 152zM253 949l295 -389v-19l-295 -389h-148l254 398l-254 399h148zM598 949l295 -389v-19l-295 -389h-148l254 398l-254 399h148z" />
<glyph unicode="&#xbc;" horiz-adv-x="1443" d="M183 0zM484 664h-174v655h-127v134l301 23v-812zM430 118l-109 67l711 1138l109 -67zM1380 282h126v-130h-126v-152h-170v152h-417l-8 102l421 547h174v-519zM967 282h243v310l-6 1l-13 -22z" />
<glyph unicode="&#xbd;" horiz-adv-x="1480" d="M183 0zM443 118l-109 67l711 1138l109 -67zM484 664h-174v655h-127v134l301 23v-812zM1524 0h-592v130l302 262q69 59 90.5 96.5t21.5 80.5q0 50 -28 81t-86 31q-67 0 -103.5 -32t-36.5 -82h-161l-2 6q-6 99 78 169t225 70q135 0 211 -64t76 -180q0 -80 -44.5 -136 t-160.5 -161l-153 -135l2 -6h361v-130z" />
<glyph unicode="&#xbe;" horiz-adv-x="1690" d="M121 0zM614 118l-109 67l711 1138l109 -67zM1569 282h126v-130h-126v-152h-170v152h-417l-8 102l421 547h174v-519zM1156 282h243v310l-6 1l-13 -22zM440 1138q67 0 99 28.5t32 80.5q0 44 -36 72.5t-105 28.5q-56 0 -91 -24t-35 -64h-162l-2 6q-6 94 78.5 153.5 t211.5 59.5q145 0 229 -59.5t84 -169.5q0 -55 -35.5 -100.5t-97.5 -71.5q71 -24 108.5 -71.5t37.5 -115.5q0 -111 -90 -173t-236 -62q-127 0 -218 58t-85 169l1 6h163q0 -46 37.5 -74.5t101.5 -28.5q72 0 113.5 29.5t41.5 77.5q0 63 -36 91t-109 28h-133v126h133z" />
<glyph unicode="&#xbf;" horiz-adv-x="890" d="M588 672q-2 -146 -26 -202t-125 -147q-101 -120 -141.5 -182t-40.5 -149q0 -107 55.5 -163.5t161.5 -56.5q90 0 154.5 49.5t64.5 145.5h188l3 -6q2 -161 -114.5 -258t-295.5 -97q-198 0 -306 100.5t-108 280.5q0 127 69.5 233.5t186.5 220.5q53 53 65 96t12 135h197z M385 1083h205v-209h-205v209z" />
<glyph unicode="&#xc0;" horiz-adv-x="1500" d="M55 0zM55 126l108 15l509 1315h169l500 -1315l107 -15v-126h-418v126l110 19l-96 268h-583l-99 -268l110 -19v-126h-417v126zM522 578h462l-226 625h-6zM843 1559h-159l-249 260l3 6h230z" />
<glyph unicode="&#xc1;" horiz-adv-x="1500" d="M55 0zM55 126l108 15l509 1315h169l500 -1315l107 -15v-126h-418v126l110 19l-96 268h-583l-99 -268l110 -19v-126h-417v126zM522 578h462l-226 625h-6zM815 1822h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xc2;" horiz-adv-x="1500" d="M55 0zM55 126l108 15l509 1315h169l500 -1315l107 -15v-126h-418v126l110 19l-96 268h-583l-99 -268l110 -19v-126h-417v126zM522 578h462l-226 625h-6zM1065 1612v-25h-161l-147 148l-145 -148h-160v26l246 237h119z" />
<glyph unicode="&#xc3;" horiz-adv-x="1500" d="M55 0zM55 126l108 15l509 1315h169l500 -1315l107 -15v-126h-418v126l110 19l-96 268h-583l-99 -268l110 -19v-126h-417v126zM522 578h462l-226 625h-6zM1095 1843q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-42 0 -71.5 -32.5t-29.5 -78.5l-107 26 q0 93 58.5 161.5t149.5 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5z" />
<glyph unicode="&#xc4;" horiz-adv-x="1500" d="M55 0zM55 126l108 15l509 1315h169l500 -1315l107 -15v-126h-418v126l110 19l-96 268h-583l-99 -268l110 -19v-126h-417v126zM522 578h462l-226 625h-6zM1083 1604h-218v200h218v-200zM613 1604h-218v200h218v-200z" />
<glyph unicode="&#xc5;" horiz-adv-x="1500" d="M55 0zM55 126l108 15l509 1315h169l500 -1315l107 -15v-126h-418v126l110 19l-96 268h-583l-99 -268l110 -19v-126h-417v126zM522 578h462l-226 625h-6zM555 1735q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -60 -140t-145 -54q-87 0 -147.5 54t-60.5 140z M658 1735q0 -43 31 -73.5t74 -30.5q42 0 72 29.5t30 74.5t-30 76t-72 31q-44 0 -74.5 -31t-30.5 -76z" />
<glyph unicode="&#xc6;" horiz-adv-x="2096" d="M51 126l141 20l793 1310h967v-322h-168l-15 167h-508l20 -466h590v-155h-584l22 -526h522l16 167h167v-321h-1058v126l156 27l-8 197h-556l-121 -210l82 -14v-126h-458v126zM651 529h446l-31 710l-5 2z" />
<glyph unicode="&#xc7;" horiz-adv-x="1321" d="M71 0zM1200 1009h-139l-37 206q-48 47 -118 77t-167 30q-227 0 -349 -164.5t-122 -417.5v-23q0 -253 119.5 -418.5t331.5 -165.5q99 0 180 31t125 76l37 206h139v-259q-63 -81 -189 -144.5t-292 -63.5q-284 0 -466 210t-182 528v21q0 320 179 529.5t469 209.5 q166 0 292 -64.5t189 -144.5v-259zM774 -8l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57l-7 109q72 0 115.5 24.5t43.5 73.5q0 48 -36 67t-123 26l32 135h141z" />
<glyph unicode="&#xc8;" horiz-adv-x="1306" d="M71 0zM71 0v126l163 28v1147l-163 28v127h1118v-350h-169l-16 195h-573v-471h557v-155h-557v-521h585l16 195h168v-349h-1129zM737 1560h-159l-249 260l3 6h230z" />
<glyph unicode="&#xc9;" horiz-adv-x="1306" d="M71 0zM71 0v126l163 28v1147l-163 28v127h1118v-350h-169l-16 195h-573v-471h557v-155h-557v-521h585l16 195h168v-349h-1129zM709 1823h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xca;" horiz-adv-x="1306" d="M71 0zM71 0v126l163 28v1147l-163 28v127h1118v-350h-169l-16 195h-573v-471h557v-155h-557v-521h585l16 195h168v-349h-1129zM959 1613v-25h-161l-147 148l-145 -148h-160v26l246 237h119z" />
<glyph unicode="&#xcb;" horiz-adv-x="1306" d="M71 0zM71 0v126l163 28v1147l-163 28v127h1118v-350h-169l-16 195h-573v-471h557v-155h-557v-521h585l16 195h168v-349h-1129zM977 1605h-218v200h218v-200zM507 1605h-218v200h218v-200z" />
<glyph unicode="&#xcc;" horiz-adv-x="662" d="M16 0zM70 1329v127h523v-127l-163 -28v-1147l163 -28v-126h-523v126l163 28v1147zM424 1558h-159l-249 260l3 6h230z" />
<glyph unicode="&#xcd;" horiz-adv-x="662" d="M70 0zM70 1329v127h523v-127l-163 -28v-1147l163 -28v-126h-523v126l163 28v1147zM395 1821h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xce;" horiz-adv-x="662" d="M33 0zM70 1329v127h523v-127l-163 -28v-1147l163 -28v-126h-523v126l163 28v1147zM646 1611v-25h-161l-147 148l-145 -148h-160v26l246 237h119z" />
<glyph unicode="&#xcf;" horiz-adv-x="662" d="M0 0zM70 1329v127h523v-127l-163 -28v-1147l163 -28v-126h-523v126l163 28v1147zM664 1603h-218v200h218v-200zM194 1603h-218v200h218v-200z" />
<glyph unicode="&#xd0;" horiz-adv-x="1449" d="M711 1456q285 0 458.5 -175.5t173.5 -453.5v-199q0 -279 -173.5 -453.5t-458.5 -174.5h-610v126l163 28v509h-198v155h198v483l-163 28v127h610zM707 663h-246v-509h250q202 0 318.5 133t116.5 341v201q0 206 -116.5 339t-318.5 133h-250v-483h246v-155z" />
<glyph unicode="&#xd1;" horiz-adv-x="1560" d="M71 0zM1497 1456v-127l-163 -28v-1301h-197l-700 1124l-6 -2v-968l163 -28v-126h-523v126l163 28v1147l-163 28v127h163h197l700 -1123l6 2v966l-163 28v127h360h163zM1089 1844q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-42 0 -71.5 -32.5t-29.5 -78.5 l-107 26q0 93 58.5 161.5t149.5 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5z" />
<glyph unicode="&#xd2;" horiz-adv-x="1445" d="M79 0zM1368 717q0 -318 -182.5 -528t-472.5 -210q-282 0 -458 210t-176 528v21q0 317 176 528t458 211q290 0 472.5 -211t182.5 -528v-21zM1171 740q0 254 -121.5 414.5t-336.5 160.5q-206 0 -321.5 -161t-115.5 -414v-23q0 -256 115.5 -416.5t321.5 -160.5 q218 0 338 160t120 417v23zM805 1559h-159l-249 260l3 6h230z" />
<glyph unicode="&#xd3;" horiz-adv-x="1445" d="M79 0zM1368 717q0 -318 -182.5 -528t-472.5 -210q-282 0 -458 210t-176 528v21q0 317 176 528t458 211q290 0 472.5 -211t182.5 -528v-21zM1171 740q0 254 -121.5 414.5t-336.5 160.5q-206 0 -321.5 -161t-115.5 -414v-23q0 -256 115.5 -416.5t321.5 -160.5 q218 0 338 160t120 417v23zM777 1822h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xd4;" horiz-adv-x="1445" d="M79 0zM1368 717q0 -318 -182.5 -528t-472.5 -210q-282 0 -458 210t-176 528v21q0 317 176 528t458 211q290 0 472.5 -211t182.5 -528v-21zM1171 740q0 254 -121.5 414.5t-336.5 160.5q-206 0 -321.5 -161t-115.5 -414v-23q0 -256 115.5 -416.5t321.5 -160.5 q218 0 338 160t120 417v23zM1027 1612v-25h-161l-147 148l-145 -148h-160v26l246 237h119z" />
<glyph unicode="&#xd5;" horiz-adv-x="1445" d="M79 0zM1368 717q0 -318 -182.5 -528t-472.5 -210q-282 0 -458 210t-176 528v21q0 317 176 528t458 211q290 0 472.5 -211t182.5 -528v-21zM1171 740q0 254 -121.5 414.5t-336.5 160.5q-206 0 -321.5 -161t-115.5 -414v-23q0 -256 115.5 -416.5t321.5 -160.5 q218 0 338 160t120 417v23zM1057 1843q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-42 0 -71.5 -32.5t-29.5 -78.5l-107 26q0 93 58.5 161.5t149.5 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5z" />
<glyph unicode="&#xd6;" horiz-adv-x="1445" d="M79 0zM1368 717q0 -318 -182.5 -528t-472.5 -210q-282 0 -458 210t-176 528v21q0 317 176 528t458 211q290 0 472.5 -211t182.5 -528v-21zM1171 740q0 254 -121.5 414.5t-336.5 160.5q-206 0 -321.5 -161t-115.5 -414v-23q0 -256 115.5 -416.5t321.5 -160.5 q218 0 338 160t120 417v23zM1045 1604h-218v200h218v-200zM575 1604h-218v200h218v-200z" />
<glyph unicode="&#xd7;" horiz-adv-x="1070" d="M79 351l327 334l-327 334l126 126l326 -333l327 333l126 -126l-328 -334l328 -334l-126 -126l-327 332l-326 -332z" />
<glyph unicode="&#xd8;" horiz-adv-x="1404" d="M1368 717q0 -318 -182.5 -528t-472.5 -210q-90 0 -170.5 23t-149.5 67l-97 -163h-149l144 244q-102 101 -157 247.5t-55 319.5v21q0 317 176 528t458 211q87 0 166.5 -21.5t150.5 -61.5l73 123h149l-118 -199q111 -102 172.5 -252.5t61.5 -327.5v-21zM1171 740 q0 129 -33 236.5t-94 180.5l-6 1l-560 -945q48 -36 107 -54.5t128 -18.5q218 0 338 160t120 417v23zM276 717q0 -123 27.5 -226.5t80.5 -174.5h6l555 935q-50 31 -108 47.5t-124 16.5q-206 0 -321.5 -161t-115.5 -414v-23z" />
<glyph unicode="&#xd9;" horiz-adv-x="1541" d="M60 0zM583 1456v-127l-163 -28v-832q0 -165 94 -250.5t248 -85.5q162 0 261 85t99 251v832l-163 28v127h360h163v-127l-163 -28v-832q0 -237 -154.5 -363.5t-402.5 -126.5q-241 0 -390 126.5t-149 363.5v832l-163 28v127h163h360zM838 1559h-159l-249 260l3 6h230z" />
<glyph unicode="&#xda;" horiz-adv-x="1541" d="M60 0zM583 1456v-127l-163 -28v-832q0 -165 94 -250.5t248 -85.5q162 0 261 85t99 251v832l-163 28v127h360h163v-127l-163 -28v-832q0 -237 -154.5 -363.5t-402.5 -126.5q-241 0 -390 126.5t-149 363.5v832l-163 28v127h163h360zM810 1822h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xdb;" horiz-adv-x="1541" d="M60 0zM583 1456v-127l-163 -28v-832q0 -165 94 -250.5t248 -85.5q162 0 261 85t99 251v832l-163 28v127h360h163v-127l-163 -28v-832q0 -237 -154.5 -363.5t-402.5 -126.5q-241 0 -390 126.5t-149 363.5v832l-163 28v127h163h360zM1060 1612v-25h-161l-147 148l-145 -148 h-160v26l246 237h119z" />
<glyph unicode="&#xdc;" horiz-adv-x="1541" d="M60 0zM583 1456v-127l-163 -28v-832q0 -165 94 -250.5t248 -85.5q162 0 261 85t99 251v832l-163 28v127h360h163v-127l-163 -28v-832q0 -237 -154.5 -363.5t-402.5 -126.5q-241 0 -390 126.5t-149 363.5v832l-163 28v127h163h360zM1078 1604h-218v200h218v-200zM608 1604 h-218v200h218v-200z" />
<glyph unicode="&#xdd;" horiz-adv-x="1416" d="M55 0zM555 1329l-157 -19l305 -594l305 594l-156 19v127h500v-127l-123 -19l-432 -798v-358l163 -28v-126h-522v126l163 28v373l-424 783l-122 19v127h500v-127zM757 1822h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xde;" horiz-adv-x="1277" d="M70 126l163 28v1147l-163 28v127h360h163v-127l-163 -28v-138h269q231 0 361 -118t130 -307q0 -190 -130 -307.5t-361 -117.5h-269v-159l163 -28v-126h-523v126zM430 1009v-542h269q146 0 220 78t74 191q0 114 -74 193.5t-220 79.5h-269z" />
<glyph unicode="&#xdf;" horiz-adv-x="1288" d="M414 0h-359v126l163 28v928q0 223 117 348t301 125q160 0 261 -86t101 -253q0 -118 -64 -228t-64 -167q0 -82 173 -224t173 -281q0 -167 -104 -252t-282 -85q-84 0 -172.5 20.5t-125.5 50.5l43 159q42 -28 108 -52t126 -24q109 0 159.5 47t50.5 126q0 84 -173 227.5 t-173 289.5q0 80 70 190.5t70 186.5q0 94 -50.5 147.5t-116.5 53.5q-105 0 -168.5 -83t-63.5 -236v-1082z" />
<glyph unicode="&#xe0;" d="M104 0zM795 0q-9 44 -14 79t-7 70q-57 -73 -142.5 -121.5t-182.5 -48.5q-169 0 -257 82.5t-88 232.5q0 154 124.5 237.5t341.5 83.5h203v126q0 95 -60 150.5t-167 55.5q-74 0 -130.5 -19t-91.5 -52l-21 -114h-152v210q74 59 179 94.5t228 35.5q184 0 298 -94t114 -269 v-521q0 -21 0.5 -41t2.5 -40l80 -11v-126h-258zM478 144q98 0 179 47t116 113v178h-210q-121 0 -191.5 -56t-70.5 -136q0 -71 44 -108.5t133 -37.5zM641 1235h-159l-249 260l3 6h230z" />
<glyph unicode="&#xe1;" d="M104 0zM795 0q-9 44 -14 79t-7 70q-57 -73 -142.5 -121.5t-182.5 -48.5q-169 0 -257 82.5t-88 232.5q0 154 124.5 237.5t341.5 83.5h203v126q0 95 -60 150.5t-167 55.5q-74 0 -130.5 -19t-91.5 -52l-21 -114h-152v210q74 59 179 94.5t228 35.5q184 0 298 -94t114 -269 v-521q0 -21 0.5 -41t2.5 -40l80 -11v-126h-258zM478 144q98 0 179 47t116 113v178h-210q-121 0 -191.5 -56t-70.5 -136q0 -71 44 -108.5t133 -37.5zM613 1498h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xe2;" d="M104 0zM795 0q-9 44 -14 79t-7 70q-57 -73 -142.5 -121.5t-182.5 -48.5q-169 0 -257 82.5t-88 232.5q0 154 124.5 237.5t341.5 83.5h203v126q0 95 -60 150.5t-167 55.5q-74 0 -130.5 -19t-91.5 -52l-21 -114h-152v210q74 59 179 94.5t228 35.5q184 0 298 -94t114 -269 v-521q0 -21 0.5 -41t2.5 -40l80 -11v-126h-258zM478 144q98 0 179 47t116 113v178h-210q-121 0 -191.5 -56t-70.5 -136q0 -71 44 -108.5t133 -37.5zM863 1288v-25h-161l-147 148l-145 -148h-160v26l246 237h119z" />
<glyph unicode="&#xe3;" d="M104 0zM795 0q-9 44 -14 79t-7 70q-57 -73 -142.5 -121.5t-182.5 -48.5q-169 0 -257 82.5t-88 232.5q0 154 124.5 237.5t341.5 83.5h203v126q0 95 -60 150.5t-167 55.5q-74 0 -130.5 -19t-91.5 -52l-21 -114h-152v210q74 59 179 94.5t228 35.5q184 0 298 -94t114 -269 v-521q0 -21 0.5 -41t2.5 -40l80 -11v-126h-258zM478 144q98 0 179 47t116 113v178h-210q-121 0 -191.5 -56t-70.5 -136q0 -71 44 -108.5t133 -37.5zM893 1519q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-42 0 -71.5 -32.5t-29.5 -78.5l-107 26 q0 93 58.5 161.5t149.5 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5z" />
<glyph unicode="&#xe4;" d="M104 0zM795 0q-9 44 -14 79t-7 70q-57 -73 -142.5 -121.5t-182.5 -48.5q-169 0 -257 82.5t-88 232.5q0 154 124.5 237.5t341.5 83.5h203v126q0 95 -60 150.5t-167 55.5q-74 0 -130.5 -19t-91.5 -52l-21 -114h-152v210q74 59 179 94.5t228 35.5q184 0 298 -94t114 -269 v-521q0 -21 0.5 -41t2.5 -40l80 -11v-126h-258zM478 144q98 0 179 47t116 113v178h-210q-121 0 -191.5 -56t-70.5 -136q0 -71 44 -108.5t133 -37.5zM881 1280h-218v200h218v-200zM411 1280h-218v200h218v-200z" />
<glyph unicode="&#xe5;" d="M104 0zM795 0q-9 44 -14 79t-7 70q-57 -73 -142.5 -121.5t-182.5 -48.5q-169 0 -257 82.5t-88 232.5q0 154 124.5 237.5t341.5 83.5h203v126q0 95 -60 150.5t-167 55.5q-74 0 -130.5 -19t-91.5 -52l-21 -114h-152v210q74 59 179 94.5t228 35.5q184 0 298 -94t114 -269 v-521q0 -21 0.5 -41t2.5 -40l80 -11v-126h-258zM478 144q98 0 179 47t116 113v178h-210q-121 0 -191.5 -56t-70.5 -136q0 -71 44 -108.5t133 -37.5zM353 1411q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -60 -140t-145 -54q-87 0 -147.5 54t-60.5 140z M456 1411q0 -43 31 -73.5t74 -30.5q42 0 72 29.5t30 74.5t-30 76t-72 31q-44 0 -74.5 -31t-30.5 -76z" />
<glyph unicode="&#xe6;" horiz-adv-x="1795" d="M1300 -21q-135 0 -239 48.5t-170 137.5q-56 -79 -168 -132.5t-271 -53.5q-170 0 -262.5 87t-92.5 238q0 158 114.5 244.5t334.5 86.5h229v85q0 106 -51.5 166.5t-149.5 60.5q-103 0 -164 -55t-61 -133l-188 18l-2 6q-5 138 110 228.5t305 90.5q115 0 202 -40.5 t137 -117.5q64 75 151.5 116.5t189.5 41.5q214 0 329.5 -130t115.5 -358v-119h-710l-2 -5q1 -159 79.5 -258t233.5 -99q104 0 170 27.5t144 78.5l68 -138q-55 -45 -149 -83.5t-233 -38.5zM491 133q76 0 158.5 43t125.5 100v217h-227q-120 0 -187 -56t-67 -137 q0 -74 50 -120.5t147 -46.5zM1254 947q-114 0 -183 -84.5t-80 -217.5l2 -5h509v31q0 122 -60 199t-188 77z" />
<glyph unicode="&#xe7;" horiz-adv-x="1104" d="M90 0zM575 133q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5t-301.5 -108.5q-236 0 -360.5 154t-124.5 387v42q0 231 125 385.5t360 154.5q130 0 233.5 -43t171.5 -118l9 -240h-157l-43 170q-35 34 -90 55t-124 21q-155 0 -221.5 -111.5t-66.5 -273.5v-42 q0 -166 66 -276.5t222 -110.5zM583 -9l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57l-7 109q72 0 115.5 24.5t43.5 73.5q0 48 -36 67t-123 26l32 135h141z" />
<glyph unicode="&#xe8;" horiz-adv-x="1101" d="M90 0zM583 -21q-226 0 -359.5 150.5t-133.5 390.5v44q0 231 137.5 384.5t325.5 153.5q218 0 330.5 -132t112.5 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -56 -153.5 -94.5t-229.5 -38.5zM553 947q-99 0 -169 -83.5 t-86 -209.5l2 -5h499v26q0 116 -62 194t-184 78zM641 1235h-159l-249 260l3 6h230z" />
<glyph unicode="&#xe9;" horiz-adv-x="1101" d="M90 0zM583 -21q-226 0 -359.5 150.5t-133.5 390.5v44q0 231 137.5 384.5t325.5 153.5q218 0 330.5 -132t112.5 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -56 -153.5 -94.5t-229.5 -38.5zM553 947q-99 0 -169 -83.5 t-86 -209.5l2 -5h499v26q0 116 -62 194t-184 78zM613 1498h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xea;" horiz-adv-x="1101" d="M90 0zM583 -21q-226 0 -359.5 150.5t-133.5 390.5v44q0 231 137.5 384.5t325.5 153.5q218 0 330.5 -132t112.5 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -56 -153.5 -94.5t-229.5 -38.5zM553 947q-99 0 -169 -83.5 t-86 -209.5l2 -5h499v26q0 116 -62 194t-184 78zM863 1288v-25h-161l-147 148l-145 -148h-160v26l246 237h119z" />
<glyph unicode="&#xeb;" horiz-adv-x="1101" d="M90 0zM583 -21q-226 0 -359.5 150.5t-133.5 390.5v44q0 231 137.5 384.5t325.5 153.5q218 0 330.5 -132t112.5 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -56 -153.5 -94.5t-229.5 -38.5zM553 947q-99 0 -169 -83.5 t-86 -209.5l2 -5h499v26q0 116 -62 194t-184 78zM881 1280h-218v200h218v-200zM411 1280h-218v200h218v-200z" />
<glyph unicode="&#xec;" horiz-adv-x="672" d="M24 0zM90 955v127h360v-928l163 -28v-126h-523v126l163 28v773zM432 1234h-159l-249 260l3 6h230z" />
<glyph unicode="&#xed;" horiz-adv-x="672" d="M90 0zM90 955v127h360v-928l163 -28v-126h-523v126l163 28v773zM403 1497h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xee;" horiz-adv-x="672" d="M41 0zM90 955v127h360v-928l163 -28v-126h-523v126l163 28v773zM654 1287v-25h-161l-147 148l-145 -148h-160v26l246 237h119z" />
<glyph unicode="&#xef;" horiz-adv-x="672" d="M0 0zM90 955v127h360v-928l163 -28v-126h-523v126l163 28v773zM672 1279h-218v200h218v-200zM202 1279h-218v200h218v-200z" />
<glyph unicode="&#xf0;" horiz-adv-x="1191" d="M859 1286q104 -121 161.5 -287t57.5 -366v-98q0 -245 -144 -400.5t-359 -155.5q-218 0 -357.5 140t-139.5 347q0 228 138 370t351 142q83 0 157.5 -32t126.5 -84l4 5q-20 98 -62 179.5t-101 143.5l-272 -155l-77 102l245 140q-36 23 -74.5 41.5t-80.5 34.5l60 164 q75 -22 143 -57t128 -82l233 133l77 -102zM881 635q0 8 -0.5 25t-0.5 25q-35 58 -115.5 98t-197.5 40q-131 0 -211.5 -104t-80.5 -253q0 -132 82 -232.5t222 -100.5q133 0 217.5 114t84.5 288v100z" />
<glyph unicode="&#xf1;" horiz-adv-x="1318" d="M60 0zM60 126l163 28v773l-163 28v127h339l14 -161q54 86 135.5 133.5t185.5 47.5q175 0 271 -102.5t96 -316.5v-529l163 -28v-126h-523v126l163 28v525q0 143 -56.5 203t-172.5 60q-85 0 -150.5 -41t-104.5 -112v-635l163 -28v-126h-523v126zM1007 1519 q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-42 0 -71.5 -32.5t-29.5 -78.5l-107 26q0 93 58.5 161.5t149.5 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5z" />
<glyph unicode="&#xf2;" horiz-adv-x="1149" d="M90 0zM90 551q0 240 130 395.5t353 155.5q224 0 354.5 -155t130.5 -396v-22q0 -242 -130 -396t-353 -154q-225 0 -355 154.5t-130 395.5v22zM287 529q0 -172 72.5 -284t215.5 -112q140 0 213 112t73 284v22q0 170 -73 283t-215 113t-214 -113t-72 -283v-22zM659 1235 h-159l-249 260l3 6h230z" />
<glyph unicode="&#xf3;" horiz-adv-x="1149" d="M90 0zM90 551q0 240 130 395.5t353 155.5q224 0 354.5 -155t130.5 -396v-22q0 -242 -130 -396t-353 -154q-225 0 -355 154.5t-130 395.5v22zM287 529q0 -172 72.5 -284t215.5 -112q140 0 213 112t73 284v22q0 170 -73 283t-215 113t-214 -113t-72 -283v-22zM631 1498h230 l2 -6l-269 -260h-147z" />
<glyph unicode="&#xf4;" horiz-adv-x="1149" d="M90 0zM90 551q0 240 130 395.5t353 155.5q224 0 354.5 -155t130.5 -396v-22q0 -242 -130 -396t-353 -154q-225 0 -355 154.5t-130 395.5v22zM287 529q0 -172 72.5 -284t215.5 -112q140 0 213 112t73 284v22q0 170 -73 283t-215 113t-214 -113t-72 -283v-22zM881 1288v-25 h-161l-147 148l-145 -148h-160v26l246 237h119z" />
<glyph unicode="&#xf5;" horiz-adv-x="1149" d="M90 0zM90 551q0 240 130 395.5t353 155.5q224 0 354.5 -155t130.5 -396v-22q0 -242 -130 -396t-353 -154q-225 0 -355 154.5t-130 395.5v22zM287 529q0 -172 72.5 -284t215.5 -112q140 0 213 112t73 284v22q0 170 -73 283t-215 113t-214 -113t-72 -283v-22zM911 1519 q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-42 0 -71.5 -32.5t-29.5 -78.5l-107 26q0 93 58.5 161.5t149.5 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5z" />
<glyph unicode="&#xf6;" horiz-adv-x="1149" d="M90 0zM90 551q0 240 130 395.5t353 155.5q224 0 354.5 -155t130.5 -396v-22q0 -242 -130 -396t-353 -154q-225 0 -355 154.5t-130 395.5v22zM287 529q0 -172 72.5 -284t215.5 -112q140 0 213 112t73 284v22q0 170 -73 283t-215 113t-214 -113t-72 -283v-22zM899 1280 h-218v200h218v-200zM429 1280h-218v200h218v-200z" />
<glyph unicode="&#xf7;" horiz-adv-x="1148" d="M1072 597h-998v188h998v-188zM673 999h-198v203h198v-203zM673 180h-198v203h198v-203z" />
<glyph unicode="&#xf8;" horiz-adv-x="1149" d="M90 551q0 240 130 395.5t353 155.5q55 0 105.5 -11t97.5 -30l73 148h129l-104 -210q88 -74 136 -190t48 -258v-22q0 -242 -130 -396t-353 -154q-52 0 -99 9t-89 25l-73 -148h-129l101 206q-95 72 -145.5 191t-50.5 267v22zM287 529q0 -89 19.5 -164t58.5 -123h6l332 672 q-28 16 -61 24.5t-69 8.5q-142 0 -214 -113t-72 -283v-22zM861 551q0 81 -17.5 152t-50.5 119h-6l-328 -664q25 -13 54 -19t62 -6q140 0 213 112t73 284v22z" />
<glyph unicode="&#xf9;" horiz-adv-x="1244" d="M48 0zM863 160q-51 -87 -131.5 -134t-185.5 -47q-176 0 -275 113t-99 352v483l-124 28v127h124h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v625l-145 28v127h145h197v-928l124 -28v-126h-301zM671 1234h-159l-249 260l3 6h230z" />
<glyph unicode="&#xfa;" horiz-adv-x="1244" d="M48 0zM863 160q-51 -87 -131.5 -134t-185.5 -47q-176 0 -275 113t-99 352v483l-124 28v127h124h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v625l-145 28v127h145h197v-928l124 -28v-126h-301zM643 1497h230l2 -6l-269 -260h-147z" />
<glyph unicode="&#xfb;" horiz-adv-x="1244" d="M48 0zM863 160q-51 -87 -131.5 -134t-185.5 -47q-176 0 -275 113t-99 352v483l-124 28v127h124h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v625l-145 28v127h145h197v-928l124 -28v-126h-301zM893 1287v-25h-161l-147 148l-145 -148h-160v26l246 237 h119z" />
<glyph unicode="&#xfc;" horiz-adv-x="1244" d="M48 0zM863 160q-51 -87 -131.5 -134t-185.5 -47q-176 0 -275 113t-99 352v483l-124 28v127h124h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v625l-145 28v127h145h197v-928l124 -28v-126h-301zM911 1279h-218v200h218v-200zM441 1279h-218v200h218 v-200z" />
<glyph unicode="&#xfd;" horiz-adv-x="1162" d="M35 0zM1117 955l-97 -15l-412 -1106q-41 -109 -118 -190t-207 -81q-23 0 -60 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 102 54.5t68 125.5l47 112l-357 918l-99 16v127h437v-127l-122 -20l187 -534l36 -138h6l225 672l-123 20v127h436v-127zM635 1497h230l2 -6 l-269 -260h-147z" />
<glyph unicode="&#xfe;" horiz-adv-x="1273" d="M25 1433v127h360v-598q53 68 128.5 104t173.5 36q200 0 311.5 -159.5t111.5 -421.5v-21q0 -234 -111.5 -377.5t-308.5 -143.5q-100 0 -176 33.5t-129 100.5v-374l163 -28v-127h-523v127l163 28v1666zM913 521q0 185 -72 303t-214 118q-85 0 -145 -38.5t-97 -105.5v-523 q37 -67 97 -104.5t147 -37.5q140 0 212 102t72 265v21z" />
<glyph unicode="&#xff;" horiz-adv-x="1162" d="M35 0zM1117 955l-97 -15l-412 -1106q-41 -109 -118 -190t-207 -81q-23 0 -60 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 102 54.5t68 125.5l47 112l-357 918l-99 16v127h437v-127l-122 -20l187 -534l36 -138h6l225 672l-123 20v127h436v-127zM903 1279h-218v200 h218v-200zM433 1279h-218v200h218v-200z" />
<glyph unicode="&#x131;" horiz-adv-x="672" d="M90 955v127h360v-928l163 -28v-126h-523v126l163 28v773z" />
<glyph unicode="&#x152;" horiz-adv-x="1969" d="M963 0q-91 -10 -156.5 -15.5t-132.5 -5.5q-249 0 -404.5 166t-155.5 431v304q0 265 154.5 431t403.5 166q69 0 140.5 -6t150.5 -15h910v-350h-169l-16 195h-573v-471h557v-155h-557v-521h585l16 195h168v-349h-921zM674 134q53 0 107 3.5t107 11.5l30 5v1147l-53 9 q-50 5 -98 8.5t-95 3.5q-169 0 -265 -113.5t-96 -326.5v-306q0 -214 97 -328t266 -114z" />
<glyph unicode="&#x153;" horiz-adv-x="1898" d="M104 551q0 240 129.5 395.5t352.5 155.5q130 0 230.5 -55t164.5 -154q64 98 161.5 153.5t206.5 55.5q218 0 330.5 -132t112.5 -352v-123h-702l-3 -5q3 -156 78.5 -256.5t213.5 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-59 -57 -153.5 -95t-229.5 -38q-132 0 -234 53 t-166 150q-64 -97 -163.5 -150t-227.5 -53q-224 0 -354 154.5t-130 395.5v22zM301 529q0 -172 72 -284t215 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213 -113t-72 -283v-22zM1349 947q-99 0 -169 -83.5t-86 -209.5l2 -5h499v26q0 116 -62 194 t-184 78z" />
<glyph unicode="&#x178;" horiz-adv-x="1416" d="M55 0zM555 1329l-157 -19l305 -594l305 594l-156 19v127h500v-127l-123 -19l-432 -798v-358l163 -28v-126h-522v126l163 28v373l-424 783l-122 19v127h500v-127zM1025 1604h-218v200h218v-200zM555 1604h-218v200h218v-200z" />
<glyph unicode="&#x2c6;" horiz-adv-x="828" d="M717 1277v-25h-161l-147 148l-145 -148h-160v26l246 237h119z" />
<glyph unicode="&#x2da;" horiz-adv-x="687" d="M138 1308q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -60 -140t-145 -54q-87 0 -147.5 54t-60.5 140zM241 1308q0 -43 31 -73.5t74 -30.5q42 0 72 29.5t30 74.5t-30 76t-72 31q-44 0 -74.5 -31t-30.5 -76z" />
<glyph unicode="&#x2dc;" horiz-adv-x="948" d="M820 1491q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-42 0 -71.5 -32.5t-29.5 -78.5l-107 26q0 93 58.5 161.5t149.5 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5z" />
<glyph unicode="&#x2000;" horiz-adv-x="966" />
<glyph unicode="&#x2001;" horiz-adv-x="1933" />
<glyph unicode="&#x2002;" horiz-adv-x="966" />
<glyph unicode="&#x2003;" horiz-adv-x="1933" />
<glyph unicode="&#x2004;" horiz-adv-x="644" />
<glyph unicode="&#x2005;" horiz-adv-x="483" />
<glyph unicode="&#x2006;" horiz-adv-x="322" />
<glyph unicode="&#x2007;" horiz-adv-x="322" />
<glyph unicode="&#x2008;" horiz-adv-x="241" />
<glyph unicode="&#x2009;" horiz-adv-x="386" />
<glyph unicode="&#x200a;" horiz-adv-x="107" />
<glyph unicode="&#x2010;" horiz-adv-x="797" d="M643 538h-489v154h489v-154z" />
<glyph unicode="&#x2011;" horiz-adv-x="797" d="M643 538h-489v154h489v-154z" />
<glyph unicode="&#x2012;" horiz-adv-x="797" d="M643 538h-489v154h489v-154z" />
<glyph unicode="&#x2013;" horiz-adv-x="1400" d="M161 648zM1234.69 648h-1085.49v155h1085.49v-155z" />
<glyph unicode="&#x2014;" horiz-adv-x="1613" d="M165 648zM1452.38 648h-1335.98v155h1335.98v-155z" />
<glyph unicode="&#x2018;" horiz-adv-x="418" d="M96 1196q0 99 48 206t132 177l112 -73q-48 -73 -71.5 -147.5t-23.5 -159.5v-179h-197v176z" />
<glyph unicode="&#x2019;" horiz-adv-x="418" d="M337 1376q0 -100 -48.5 -207t-131.5 -176l-112 74q47 71 71 145.5t24 160.5v187h197v-184z" />
<glyph unicode="&#x201a;" horiz-adv-x="417" d="M327 78q0 -98 -49 -205.5t-132 -177.5l-111 74q47 72 71 146.5t24 159.5v174h197v-171z" />
<glyph unicode="&#x201c;" horiz-adv-x="744" d="M96 1020zM96 1196q0 99 48 206t132 177l112 -73q-48 -73 -71.5 -147.5t-23.5 -159.5v-179h-197v176zM422 1196q0 99 48 206t132 177l112 -73q-48 -73 -71.5 -147.5t-23.5 -159.5v-179h-197v176z" />
<glyph unicode="&#x201d;" horiz-adv-x="752" d="M58 993zM350 1376q0 -100 -48.5 -207t-131.5 -176l-112 74q47 71 71 145.5t24 160.5v187h197v-184zM668 1376q0 -100 -48.5 -207t-131.5 -176l-112 74q47 71 71 145.5t24 160.5v187h197v-184z" />
<glyph unicode="&#x201e;" horiz-adv-x="726" d="M327 78q0 -98 -49 -205.5t-132 -177.5l-111 74q47 72 71 146.5t24 159.5v174h197v-171zM634 78q0 -98 -49 -205.5t-132 -177.5l-111 74q47 72 71 146.5t24 159.5v174h197v-171z" />
<glyph unicode="&#x2022;" horiz-adv-x="691" d="M135 793q0 88 56 144t150 56q95 0 151.5 -56t56.5 -144v-60q0 -89 -56.5 -143.5t-150.5 -54.5q-95 0 -151 54.5t-56 143.5v60z" />
<glyph unicode="&#x2026;" horiz-adv-x="1346" d="M146 0zM343 0h-197v202h197v-202zM785 0h-197v202h197v-202zM1204 0h-197v202h197v-202z" />
<glyph unicode="&#x202f;" horiz-adv-x="386" />
<glyph unicode="&#x2039;" horiz-adv-x="593" d="M256 550l255 -398h-148l-295 389v19l295 389h148z" />
<glyph unicode="&#x203a;" horiz-adv-x="593" d="M231 949l295 -389v-19l-295 -389h-148l254 398l-254 399h148z" />
<glyph unicode="&#x2044;" horiz-adv-x="899" d="M151 110l-109 67l711 1138l109 -67z" />
<glyph unicode="&#x205f;" horiz-adv-x="483" />
<glyph unicode="&#x20ac;" horiz-adv-x="1056" d="M905 512h-484l-2 -5q-4 -169 81.5 -271.5t232.5 -102.5q57 0 113 8.5t107 25.5l20 -157q-56 -15 -117.5 -23t-122.5 -8q-231 0 -373.5 144.5t-142.5 388.5h-146v124h146v166h-146v125h146v15q0 244 141.5 389.5t372.5 145.5q59 0 117.5 -8t124.5 -23l-20 -159 q-53 16 -109.5 25.5t-112.5 9.5q-146 0 -231.5 -103t-85.5 -275v-17h491v-125h-491v-166h491v-124z" />
<glyph unicode="&#x2122;" horiz-adv-x="1256" d="M1021 1260l-6 2l-150 -343h-51l-155 357l-6 -1v-356h-93v537h116l160 -390h6l163 390h110v-537h-94v341zM482 1374h-146v-455h-94v455h-144v82h384v-82z" />
<glyph unicode="&#x2212;" horiz-adv-x="1143" d="M989 648h-835v155h835v-155z" />
<glyph unicode="&#x25fc;" horiz-adv-x="1080" d="M0 1080h1080v-1080h-1080v1080z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1967" d="M70 0zM70 936v146h169v137q0 173 90.5 267.5t252.5 94.5q34 0 68.5 -5.5t76.5 -15.5l-24 -150q-18 4 -43.5 7t-52.5 3q-87 0 -129 -51.5t-42 -149.5v-137h226v-146h-226v-782l163 -28v-126h-523v126l163 28v782h-169zM773 936v146h169v117q0 182 107 282t296 100 q66 0 132 -16t152 -45l-33 -160q-53 21 -113 36t-123 15q-118 0 -169.5 -52t-51.5 -160v-117h617v-928l163 -28v-126h-523v126l163 28v782h-420v-782l163 -28v-126h-523v126l163 28v782h-169z" />
<glyph unicode="&#xfb04;" horiz-adv-x="2101" d="M70 0zM70 936v146h169v137q0 173 90.5 267.5t252.5 94.5q34 0 68.5 -5.5t76.5 -15.5l-24 -150q-18 4 -43.5 7t-52.5 3q-87 0 -129 -51.5t-42 -149.5v-137h226v-146h-226v-782l163 -28v-126h-523v126l163 28v782h-169zM798 936v146h169v137q0 173 90.5 267.5t252.5 94.5 q34 0 68.5 -5.5t76.5 -15.5l-24 -150q-18 4 -43.5 7t-52.5 3q-87 0 -129 -51.5t-42 -149.5v-137h226v-146h-226v-782l163 -28v-126h-523v126l163 28v782h-169zM1518 1433v127h360v-1406l163 -28v-126h-523v126l163 28v1251z" />
<glyph horiz-adv-x="558" d="M396 0h-174v655h-127v134l301 23v-812z" />
<glyph horiz-adv-x="860" d="M714 0h-592v130l302 262q69 59 90.5 96.5t21.5 80.5q0 50 -28 81t-86 31q-67 0 -103.5 -32t-36.5 -82h-161l-2 6q-6 99 78 169t225 70q135 0 211 -64t76 -180q0 -80 -44.5 -136t-160.5 -161l-153 -135l2 -6h361v-130z" />
<glyph horiz-adv-x="875" d="M424 471q67 0 99 28.5t32 80.5q0 44 -36 72.5t-105 28.5q-56 0 -91 -24t-35 -64h-162l-2 6q-6 94 78.5 153.5t211.5 59.5q145 0 229 -59.5t84 -169.5q0 -55 -35.5 -100.5t-97.5 -71.5q71 -24 108.5 -71.5t37.5 -115.5q0 -111 -90 -173t-236 -62q-127 0 -218 58t-85 169 l1 6h163q0 -46 37.5 -74.5t101.5 -28.5q72 0 113.5 29.5t41.5 77.5q0 63 -36 91t-109 28h-133v126h133z" />
<glyph horiz-adv-x="916" d="M682 282h126v-130h-126v-152h-170v152h-417l-8 102l421 547h174v-519zM269 282h243v310l-6 1l-13 -22z" />
<glyph horiz-adv-x="483" d="M0 0z" />
<hkern u1="&#x22;" u2="w" k="-11" />
<hkern u1="&#x27;" u2="w" k="-11" />
<hkern u1="&#x28;" u2="&#x178;" k="-22" />
<hkern u1="&#x28;" u2="&#xdd;" k="-22" />
<hkern u1="&#x28;" u2="Y" k="-22" />
<hkern u1="&#x28;" u2="W" k="-18" />
<hkern u1="&#x28;" u2="V" k="-20" />
<hkern u1="&#x2f;" u2="&#x2f;" k="224" />
<hkern u1="A" u2="w" k="123" />
<hkern u1="A" u2="t" k="107" />
<hkern u1="A" u2="&#x3f;" k="61" />
<hkern u1="C" u2="&#x7d;" k="17" />
<hkern u1="C" u2="]" k="12" />
<hkern u1="C" u2="&#x29;" k="26" />
<hkern u1="D" u2="&#xc6;" k="33" />
<hkern u1="E" u2="w" k="22" />
<hkern u1="E" u2="f" k="18" />
<hkern u1="F" u2="&#x2026;" k="234" />
<hkern u1="F" u2="&#x201e;" k="234" />
<hkern u1="F" u2="&#x201a;" k="234" />
<hkern u1="F" u2="&#x153;" k="21" />
<hkern u1="F" u2="&#x152;" k="50" />
<hkern u1="F" u2="&#xff;" k="24" />
<hkern u1="F" u2="&#xfd;" k="24" />
<hkern u1="F" u2="&#xfc;" k="22" />
<hkern u1="F" u2="&#xfb;" k="22" />
<hkern u1="F" u2="&#xfa;" k="22" />
<hkern u1="F" u2="&#xf9;" k="22" />
<hkern u1="F" u2="&#xf6;" k="21" />
<hkern u1="F" u2="&#xf5;" k="21" />
<hkern u1="F" u2="&#xf4;" k="21" />
<hkern u1="F" u2="&#xf3;" k="21" />
<hkern u1="F" u2="&#xf2;" k="21" />
<hkern u1="F" u2="&#xeb;" k="21" />
<hkern u1="F" u2="&#xea;" k="21" />
<hkern u1="F" u2="&#xe9;" k="21" />
<hkern u1="F" u2="&#xe8;" k="21" />
<hkern u1="F" u2="&#xe7;" k="21" />
<hkern u1="F" u2="&#xe5;" k="34" />
<hkern u1="F" u2="&#xe4;" k="34" />
<hkern u1="F" u2="&#xe3;" k="34" />
<hkern u1="F" u2="&#xe2;" k="34" />
<hkern u1="F" u2="&#xe1;" k="34" />
<hkern u1="F" u2="&#xe0;" k="34" />
<hkern u1="F" u2="&#xd8;" k="50" />
<hkern u1="F" u2="&#xd6;" k="50" />
<hkern u1="F" u2="&#xd5;" k="50" />
<hkern u1="F" u2="&#xd4;" k="50" />
<hkern u1="F" u2="&#xd3;" k="50" />
<hkern u1="F" u2="&#xd2;" k="50" />
<hkern u1="F" u2="&#xc7;" k="50" />
<hkern u1="F" u2="&#xc5;" k="299" />
<hkern u1="F" u2="&#xc4;" k="299" />
<hkern u1="F" u2="&#xc3;" k="299" />
<hkern u1="F" u2="&#xc2;" k="299" />
<hkern u1="F" u2="&#xc1;" k="299" />
<hkern u1="F" u2="&#xc0;" k="299" />
<hkern u1="F" u2="y" k="24" />
<hkern u1="F" u2="v" k="24" />
<hkern u1="F" u2="u" k="22" />
<hkern u1="F" u2="q" k="21" />
<hkern u1="F" u2="o" k="21" />
<hkern u1="F" u2="g" k="21" />
<hkern u1="F" u2="e" k="21" />
<hkern u1="F" u2="d" k="21" />
<hkern u1="F" u2="c" k="21" />
<hkern u1="F" u2="a" k="34" />
<hkern u1="F" u2="T" k="-20" />
<hkern u1="F" u2="Q" k="50" />
<hkern u1="F" u2="O" k="50" />
<hkern u1="F" u2="J" k="320" />
<hkern u1="F" u2="G" k="50" />
<hkern u1="F" u2="C" k="50" />
<hkern u1="F" u2="A" k="299" />
<hkern u1="F" u2="&#x2e;" k="234" />
<hkern u1="F" u2="&#x2c;" k="234" />
<hkern u1="F" u2="r" k="26" />
<hkern u1="K" u2="w" k="63" />
<hkern u1="L" u2="w" k="92" />
<hkern u1="N" u2="&#xc5;" k="85" />
<hkern u1="N" u2="&#xc4;" k="85" />
<hkern u1="N" u2="&#xc3;" k="85" />
<hkern u1="N" u2="&#xc2;" k="85" />
<hkern u1="N" u2="&#xc1;" k="85" />
<hkern u1="N" u2="&#xc0;" k="85" />
<hkern u1="N" u2="A" k="85" />
<hkern u1="O" u2="&#xc6;" k="33" />
<hkern u1="P" u2="&#xc6;" k="97" />
<hkern u1="P" u2="t" k="-14" />
<hkern u1="Q" u2="&#x178;" k="35" />
<hkern u1="Q" u2="&#xdd;" k="35" />
<hkern u1="Q" u2="Y" k="35" />
<hkern u1="Q" u2="W" k="20" />
<hkern u1="Q" u2="V" k="28" />
<hkern u1="Q" u2="T" k="43" />
<hkern u1="R" u2="&#x178;" k="100" />
<hkern u1="R" u2="&#xdd;" k="100" />
<hkern u1="R" u2="Y" k="100" />
<hkern u1="R" u2="V" k="80" />
<hkern u1="R" u2="T" k="80" />
<hkern u1="T" u2="&#xf8;" k="95" />
<hkern u1="T" u2="&#xe6;" k="114" />
<hkern u1="T" u2="&#xc6;" k="179" />
<hkern u1="T" u2="&#xbb;" k="216" />
<hkern u1="T" u2="&#xab;" k="328" />
<hkern u1="T" u2="w" k="57" />
<hkern u1="T" u2="r" k="75" />
<hkern u1="V" u2="&#x7d;" k="-19" />
<hkern u1="V" u2="r" k="30" />
<hkern u1="V" u2="]" k="-17" />
<hkern u1="V" u2="&#x29;" k="-20" />
<hkern u1="W" u2="&#x7d;" k="-14" />
<hkern u1="W" u2="r" k="21" />
<hkern u1="W" u2="]" k="-12" />
<hkern u1="W" u2="&#x29;" k="-15" />
<hkern u1="Y" u2="&#x2022;" k="45" />
<hkern u1="Y" u2="&#xf8;" k="64" />
<hkern u1="Y" u2="&#xe6;" k="63" />
<hkern u1="Y" u2="&#xc6;" k="96" />
<hkern u1="Y" u2="&#xbb;" k="51" />
<hkern u1="Y" u2="&#xab;" k="82" />
<hkern u1="Y" u2="&#x7d;" k="-19" />
<hkern u1="Y" u2="t" k="22" />
<hkern u1="Y" u2="r" k="40" />
<hkern u1="Y" u2="f" k="22" />
<hkern u1="Y" u2="]" k="-18" />
<hkern u1="Y" u2="&#x2a;" k="49" />
<hkern u1="Y" u2="&#x29;" k="-20" />
<hkern u1="Y" u2="&#x26;" k="30" />
<hkern u1="Z" u2="w" k="27" />
<hkern u1="[" u2="&#xdc;" k="18" />
<hkern u1="[" u2="&#xdb;" k="18" />
<hkern u1="[" u2="&#xda;" k="18" />
<hkern u1="[" u2="&#xd9;" k="18" />
<hkern u1="[" u2="U" k="18" />
<hkern u1="[" u2="J" k="18" />
<hkern u1="f" u2="&#x201d;" k="-16" />
<hkern u1="f" u2="&#x201c;" k="-16" />
<hkern u1="f" u2="&#x2019;" k="-16" />
<hkern u1="f" u2="&#x2018;" k="-16" />
<hkern u1="f" u2="&#x153;" k="24" />
<hkern u1="f" u2="&#xeb;" k="24" />
<hkern u1="f" u2="&#xea;" k="24" />
<hkern u1="f" u2="&#xe9;" k="24" />
<hkern u1="f" u2="&#xe8;" k="24" />
<hkern u1="f" u2="&#xe7;" k="24" />
<hkern u1="f" u2="q" k="24" />
<hkern u1="f" u2="g" k="24" />
<hkern u1="f" u2="e" k="24" />
<hkern u1="f" u2="d" k="24" />
<hkern u1="f" u2="c" k="24" />
<hkern u1="f" u2="&#x27;" k="-16" />
<hkern u1="f" u2="&#x22;" k="-16" />
<hkern u1="f" u2="&#x7d;" k="-19" />
<hkern u1="f" u2="]" k="-18" />
<hkern u1="f" u2="&#x29;" k="-20" />
<hkern u1="k" u2="&#x153;" k="20" />
<hkern u1="k" u2="&#xeb;" k="20" />
<hkern u1="k" u2="&#xea;" k="20" />
<hkern u1="k" u2="&#xe9;" k="20" />
<hkern u1="k" u2="&#xe8;" k="20" />
<hkern u1="k" u2="&#xe7;" k="20" />
<hkern u1="k" u2="q" k="20" />
<hkern u1="k" u2="g" k="20" />
<hkern u1="k" u2="e" k="20" />
<hkern u1="k" u2="d" k="20" />
<hkern u1="k" u2="c" k="20" />
<hkern u1="l" u2="&#xf6;" k="20" />
<hkern u1="l" u2="&#xf5;" k="20" />
<hkern u1="l" u2="&#xf4;" k="20" />
<hkern u1="l" u2="&#xf3;" k="20" />
<hkern u1="l" u2="&#xf2;" k="20" />
<hkern u1="l" u2="o" k="20" />
<hkern u1="l" u2="g" k="10" />
<hkern u1="r" u2="w" k="-17" />
<hkern u1="r" u2="t" k="-32" />
<hkern u1="r" u2="f" k="-15" />
<hkern u1="t" u2="&#xf6;" k="20" />
<hkern u1="t" u2="&#xf5;" k="20" />
<hkern u1="t" u2="&#xf4;" k="20" />
<hkern u1="t" u2="&#xf3;" k="20" />
<hkern u1="t" u2="&#xf2;" k="20" />
<hkern u1="t" u2="o" k="20" />
<hkern u1="v" u2="f" k="-13" />
<hkern u1="w" u2="&#x2026;" k="124" />
<hkern u1="w" u2="&#x201e;" k="124" />
<hkern u1="w" u2="&#x201a;" k="124" />
<hkern u1="w" u2="&#x2e;" k="124" />
<hkern u1="w" u2="&#x2c;" k="124" />
<hkern u1="y" u2="f" k="-13" />
<hkern u1="&#x7b;" u2="&#xdc;" k="20" />
<hkern u1="&#x7b;" u2="&#xdb;" k="20" />
<hkern u1="&#x7b;" u2="&#xda;" k="20" />
<hkern u1="&#x7b;" u2="&#xd9;" k="20" />
<hkern u1="&#x7b;" u2="U" k="20" />
<hkern u1="&#x7b;" u2="J" k="20" />
<hkern u1="&#xc0;" u2="w" k="123" />
<hkern u1="&#xc0;" u2="t" k="107" />
<hkern u1="&#xc0;" u2="&#x3f;" k="61" />
<hkern u1="&#xc1;" u2="w" k="123" />
<hkern u1="&#xc1;" u2="t" k="107" />
<hkern u1="&#xc1;" u2="&#x3f;" k="61" />
<hkern u1="&#xc2;" u2="w" k="123" />
<hkern u1="&#xc2;" u2="t" k="107" />
<hkern u1="&#xc2;" u2="&#x3f;" k="61" />
<hkern u1="&#xc3;" u2="w" k="123" />
<hkern u1="&#xc3;" u2="t" k="107" />
<hkern u1="&#xc3;" u2="&#x3f;" k="61" />
<hkern u1="&#xc4;" u2="w" k="123" />
<hkern u1="&#xc4;" u2="t" k="107" />
<hkern u1="&#xc4;" u2="&#x3f;" k="61" />
<hkern u1="&#xc5;" u2="w" k="123" />
<hkern u1="&#xc5;" u2="t" k="107" />
<hkern u1="&#xc5;" u2="&#x3f;" k="61" />
<hkern u1="&#xc7;" u2="&#x7d;" k="17" />
<hkern u1="&#xc7;" u2="]" k="12" />
<hkern u1="&#xc7;" u2="&#x29;" k="26" />
<hkern u1="&#xc8;" u2="w" k="22" />
<hkern u1="&#xc8;" u2="f" k="18" />
<hkern u1="&#xc9;" u2="w" k="22" />
<hkern u1="&#xc9;" u2="f" k="18" />
<hkern u1="&#xca;" u2="w" k="22" />
<hkern u1="&#xca;" u2="f" k="18" />
<hkern u1="&#xcb;" u2="w" k="22" />
<hkern u1="&#xcb;" u2="f" k="18" />
<hkern u1="&#xd0;" u2="&#xc6;" k="33" />
<hkern u1="&#xd2;" u2="&#xc6;" k="33" />
<hkern u1="&#xd3;" u2="&#xc6;" k="33" />
<hkern u1="&#xd4;" u2="&#xc6;" k="33" />
<hkern u1="&#xd5;" u2="&#xc6;" k="33" />
<hkern u1="&#xd6;" u2="&#xc6;" k="33" />
<hkern u1="&#xdd;" u2="&#x2022;" k="45" />
<hkern u1="&#xdd;" u2="&#xf8;" k="64" />
<hkern u1="&#xdd;" u2="&#xe6;" k="63" />
<hkern u1="&#xdd;" u2="&#xc6;" k="96" />
<hkern u1="&#xdd;" u2="&#xbb;" k="51" />
<hkern u1="&#xdd;" u2="&#xab;" k="82" />
<hkern u1="&#xdd;" u2="&#x7d;" k="-19" />
<hkern u1="&#xdd;" u2="t" k="22" />
<hkern u1="&#xdd;" u2="r" k="40" />
<hkern u1="&#xdd;" u2="f" k="22" />
<hkern u1="&#xdd;" u2="]" k="-18" />
<hkern u1="&#xdd;" u2="&#x2a;" k="49" />
<hkern u1="&#xdd;" u2="&#x29;" k="-20" />
<hkern u1="&#xdd;" u2="&#x26;" k="30" />
<hkern u1="&#xfd;" u2="f" k="-13" />
<hkern u1="&#xff;" u2="f" k="-13" />
<hkern u1="&#x178;" u2="&#x2022;" k="45" />
<hkern u1="&#x178;" u2="&#xf8;" k="64" />
<hkern u1="&#x178;" u2="&#xe6;" k="63" />
<hkern u1="&#x178;" u2="&#xc6;" k="96" />
<hkern u1="&#x178;" u2="&#xbb;" k="51" />
<hkern u1="&#x178;" u2="&#xab;" k="82" />
<hkern u1="&#x178;" u2="&#x7d;" k="-19" />
<hkern u1="&#x178;" u2="t" k="22" />
<hkern u1="&#x178;" u2="r" k="40" />
<hkern u1="&#x178;" u2="f" k="22" />
<hkern u1="&#x178;" u2="]" k="-18" />
<hkern u1="&#x178;" u2="&#x2a;" k="49" />
<hkern u1="&#x178;" u2="&#x29;" k="-20" />
<hkern u1="&#x178;" u2="&#x26;" k="30" />
<hkern u1="&#x2018;" u2="w" k="-11" />
<hkern u1="&#x2019;" u2="w" k="-11" />
<hkern u1="&#x201c;" u2="w" k="-11" />
<hkern u1="&#x201d;" u2="w" k="-11" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="v,y,yacute,ydieresis" k="120" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="80" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="60" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="120" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="12" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="W" k="149" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="T" k="180" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="u,ugrave,uacute,ucircumflex,udieresis" k="71" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="V" k="264" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="Y,Yacute,Ydieresis" k="256" />
<hkern g1="B" g2="T" k="27" />
<hkern g1="B" g2="V" k="24" />
<hkern g1="B" g2="Y,Yacute,Ydieresis" k="55" />
<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde" g2="Y,Yacute,Ydieresis" k="28" />
<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde" g2="X" k="-17" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="T" k="27" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="V" k="22" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="Y,Yacute,Ydieresis" k="43" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="X" k="50" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="102" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="80" />
<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis" g2="Z" k="23" />
<hkern g1="C,Ccedilla" g2="T" k="29" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="v,y,yacute,ydieresis" k="26" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="19" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="T" k="-20" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="17" />
<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="19" />
<hkern g1="T" g2="v,y,yacute,ydieresis" k="72" />
<hkern g1="T" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="28" />
<hkern g1="T" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="99" />
<hkern g1="T" g2="W" k="-15" />
<hkern g1="T" g2="T" k="-16" />
<hkern g1="T" g2="u,ugrave,uacute,ucircumflex,udieresis" k="95" />
<hkern g1="T" g2="V" k="-16" />
<hkern g1="T" g2="Y,Yacute,Ydieresis" k="-16" />
<hkern g1="T" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="218" />
<hkern g1="T" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="180" />
<hkern g1="T" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="99" />
<hkern g1="T" g2="x" k="77" />
<hkern g1="T" g2="hyphen,uni00AD,endash,emdash" k="232" />
<hkern g1="T" g2="m,n,p,ntilde" k="79" />
<hkern g1="T" g2="S" k="16" />
<hkern g1="T" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="113" />
<hkern g1="T" g2="z" k="60" />
<hkern g1="T" g2="s" k="106" />
<hkern g1="T" g2="J" k="240" />
<hkern g1="K" g2="v,y,yacute,ydieresis" k="40" />
<hkern g1="K" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="120" />
<hkern g1="K" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="27" />
<hkern g1="K" g2="u,ugrave,uacute,ucircumflex,udieresis" k="23" />
<hkern g1="K" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="26" />
<hkern g1="K" g2="hyphen,uni00AD,endash,emdash" k="224" />
<hkern g1="K" g2="m,n,p,ntilde" k="23" />
<hkern g1="L" g2="v,y,yacute,ydieresis" k="133" />
<hkern g1="L" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="65" />
<hkern g1="L" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="54" />
<hkern g1="L" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="138" />
<hkern g1="L" g2="W" k="143" />
<hkern g1="L" g2="T" k="275" />
<hkern g1="L" g2="u,ugrave,uacute,ucircumflex,udieresis" k="44" />
<hkern g1="L" g2="V" k="256" />
<hkern g1="L" g2="Y,Yacute,Ydieresis" k="239" />
<hkern g1="L" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-19" />
<hkern g1="P" g2="v,y,yacute,ydieresis" k="-15" />
<hkern g1="P" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="13" />
<hkern g1="P" g2="X" k="31" />
<hkern g1="P" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="324" />
<hkern g1="P" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="256" />
<hkern g1="P" g2="Z" k="26" />
<hkern g1="P" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="13" />
<hkern g1="P" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="11" />
<hkern g1="P" g2="J" k="200" />
<hkern g1="J,U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="60" />
<hkern g1="V" g2="v,y,yacute,ydieresis" k="11" />
<hkern g1="V" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="13" />
<hkern g1="V" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="46" />
<hkern g1="V" g2="u,ugrave,uacute,ucircumflex,udieresis" k="28" />
<hkern g1="V" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="225" />
<hkern g1="V" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="264" />
<hkern g1="V" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="44" />
<hkern g1="V" g2="hyphen,uni00AD,endash,emdash" k="37" />
<hkern g1="V" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="46" />
<hkern g1="V" g2="J" k="214" />
<hkern g1="X" g2="v,y,yacute,ydieresis" k="31" />
<hkern g1="X" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="50" />
<hkern g1="X" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="31" />
<hkern g1="X" g2="u,ugrave,uacute,ucircumflex,udieresis" k="21" />
<hkern g1="X" g2="V" k="-14" />
<hkern g1="X" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="26" />
<hkern g1="X" g2="hyphen,uni00AD,endash,emdash" k="46" />
<hkern g1="Y,Yacute,Ydieresis" g2="v,y,yacute,ydieresis" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="29" />
<hkern g1="Y,Yacute,Ydieresis" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="96" />
<hkern g1="Y,Yacute,Ydieresis" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="105" />
<hkern g1="Y,Yacute,Ydieresis" g2="W" k="-17" />
<hkern g1="Y,Yacute,Ydieresis" g2="T" k="-17" />
<hkern g1="Y,Yacute,Ydieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="39" />
<hkern g1="Y,Yacute,Ydieresis" g2="V" k="-18" />
<hkern g1="Y,Yacute,Ydieresis" g2="Y,Yacute,Ydieresis" k="-18" />
<hkern g1="Y,Yacute,Ydieresis" g2="X" k="-13" />
<hkern g1="Y,Yacute,Ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="211" />
<hkern g1="Y,Yacute,Ydieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="256" />
<hkern g1="Y,Yacute,Ydieresis" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="65" />
<hkern g1="Y,Yacute,Ydieresis" g2="x" k="23" />
<hkern g1="Y,Yacute,Ydieresis" g2="hyphen,uni00AD,endash,emdash" k="52" />
<hkern g1="Y,Yacute,Ydieresis" g2="m,n,p,ntilde" k="40" />
<hkern g1="Y,Yacute,Ydieresis" g2="S" k="16" />
<hkern g1="Y,Yacute,Ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="73" />
<hkern g1="Y,Yacute,Ydieresis" g2="z" k="30" />
<hkern g1="Y,Yacute,Ydieresis" g2="s" k="108" />
<hkern g1="Y,Yacute,Ydieresis" g2="J" k="213" />
<hkern g1="W" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="31" />
<hkern g1="W" g2="T" k="-14" />
<hkern g1="W" g2="u,ugrave,uacute,ucircumflex,udieresis" k="19" />
<hkern g1="W" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="123" />
<hkern g1="W" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="43" />
<hkern g1="W" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="31" />
<hkern g1="W" g2="hyphen,uni00AD,endash,emdash" k="60" />
<hkern g1="W" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="33" />
<hkern g1="W" g2="J" k="64" />
<hkern g1="Z" g2="v,y,yacute,ydieresis" k="27" />
<hkern g1="Z" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="26" />
<hkern g1="Z" g2="u,ugrave,uacute,ucircumflex,udieresis" k="19" />
<hkern g1="Z" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-13" />
<hkern g1="Z" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="21" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="v,y,yacute,ydieresis" k="15" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="67" />
<hkern g1="c,ccedilla" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="11" />
<hkern g1="b,p,thorn" g2="v,y,yacute,ydieresis" k="11" />
<hkern g1="b,p,thorn" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="29" />
<hkern g1="b,p,thorn" g2="x" k="15" />
<hkern g1="b,p,thorn" g2="z" k="15" />
<hkern g1="b,p,thorn" g2="h,k,l" k="10" />
<hkern g1="e,egrave,eacute,ecircumflex,edieresis" g2="v,y,yacute,ydieresis" k="13" />
<hkern g1="e,egrave,eacute,ecircumflex,edieresis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="14" />
<hkern g1="h,m,n,ntilde" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="16" />
<hkern g1="h,m,n,ntilde" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="10" />
<hkern g1="h,m,n,ntilde" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="10" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="v,y,yacute,ydieresis" k="15" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="20" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="x" k="21" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="z" k="16" />
<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" g2="h,k,l" k="20" />
<hkern g1="v,y,yacute,ydieresis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="-15" />
<hkern g1="v,y,yacute,ydieresis" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="15" />
<hkern g1="v,y,yacute,ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="107" />
<hkern g1="v,y,yacute,ydieresis" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="13" />
<hkern g1="v,y,yacute,ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="15" />
<hkern g1="r" g2="v,y,yacute,ydieresis" k="-18" />
<hkern g1="r" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="-16" />
<hkern g1="r" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="20" />
<hkern g1="r" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="123" />
<hkern g1="r" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="19" />
<hkern g1="r" g2="h,k,l" k="20" />
<hkern g1="x" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="20" />
<hkern g1="x" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="20" />
<hkern g1="z" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="16" />
<hkern g1="z" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="16" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="107" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="o,ograve,oacute,ocircumflex,otilde,odieresis" k="61" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="120" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,oe" k="59" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="m,n,p,ntilde" k="20" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring" k="50" />
<hkern g1="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" g2="s" k="80" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quotedbl,quotesingle,quoteleft,quoteright,quotedblleft,quotedblright" k="170" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
themes/daux/img/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

2
themes/daux/js/daux.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
(function(){"use strict";function e(e){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}function t(e,t){var n=document.getElementsByTagName("head")[0],r=document.createElement("script");r.type="text/javascript",r.async=!0,r.src=e,r.onload=t,n.appendChild(r)}function n(e){var t=document.getElementsByTagName("head")[0],n=document.createElement("link");n.rel="stylesheet",n.href=e,t.appendChild(n)}var r="daux_code_blocks_hidden";function a(e,t){for(var n=0;n<e.length;n++)e[n].classList.toggle("CodeToggler--hidden",t);try{localStorage.setItem(r,t)}catch(e){}}function o(e,t){var n=e.querySelector(".CodeToggler__button--main");n.addEventListener("change",(function(e){a(t,!e.target.checked)}),!1);var o=!1;try{o=localStorage.getItem(r),"false"===o?o=!1:"true"===o&&(o=!0),o&&(a(t,!0),n.checked=!1)}catch(e){}}function i(e,t){if(!e)return;if("string"===typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function c(e,t){var n="undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=i(e))||t&&e&&"number"===typeof e.length){n&&(e=n);var r=0;var a=function(){};return{s:a,n:function(){if(r>=e.length)return{done:!0};return{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,l=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){c=!0,o=e},f:function(){try{l||null==n.return||n.return()}finally{if(c)throw o}}}}function s(e){var t=function e(t){"0px"!==t.target.style.height&&(t.target.style.height="auto"),t.target.removeEventListener("transitionend",e)};e.addEventListener("transitionend",t)}function d(e){var t=e;while((t=t.parentNode)&&9!==t.nodeType)if(1===t.nodeType&&t.classList.contains("Nav__item"))return t;throw new Error("Could not find a NavItem...")}function u(e){var t=void 0!==e.preventDefault;t&&e.preventDefault();var n=d(e.target);var r=n.querySelector("ul.Nav");t&&n.classList.contains("Nav__item--open")?(r.style.height="".concat(r.scrollHeight,"px"),r.style.transitionDuration="150ms",r.style.height="0px",n.classList.remove("Nav__item--open")):t?(r.style.transitionDuration="150ms",s(r),r.style.height="".concat(r.scrollHeight,"px"),n.classList.add("Nav__item--open")):r.style.height="auto"}e((function(){var e=document.querySelectorAll(".s-content pre");var t=document.querySelector(".CodeToggler");if(!t)return;e.length?o(t,e):t.classList.add("CodeToggler--hidden")})),e((function(){var e=document.querySelector(".Collapsible__trigger");if(e){var t=document.querySelector(".Collapsible__content");e.addEventListener("click",(function(n){t.classList.contains("Collapsible__content--open")?(t.style.height=0,t.classList.remove("Collapsible__content--open"),e.setAttribute("aria-expanded","false")):(e.setAttribute("aria-expanded","true"),t.style.transitionDuration="150ms",t.style.height="".concat(t.scrollHeight,"px"),t.classList.add("Collapsible__content--open"))}))}})),e((function(){var e=document.querySelectorAll("pre > code:not(.hljs, .katex)");e.length&&t("".concat(window.base_url,"daux_libraries/highlight.pack.js"),(function(){[].forEach.call(e,window.hljs.highlightBlock)}))})),e((function(){var e=document.querySelectorAll("pre > code.katex");e.length&&(n("".concat(window.base_url,"daux_libraries/katex.min.css")),t("".concat(window.base_url,"daux_libraries/katex.min.js"),(function(){[].forEach.call(e,(function(e){var t=e.innerHTML;var n=document.createElement("p");var r=document.createElement("span");n.className="katex-display",n.appendChild(r);var a=e.parentElement;a.parentElement.insertBefore(n,a),a.parentElement.removeChild(a),window.katex.render(t,r,{throwOnError:!1})}))})))})),e((function(){var e=document.querySelectorAll("div.mermaid");e.length&&t("".concat(window.base_url,"daux_libraries/mermaid.min.js"),(function(){window.mermaid.initialize({startOnLoad:!0})}))})),e((function(){var e=document.querySelectorAll(".Nav__item.has-children i.Nav__arrow");for(var t,n=e.length-1;n>=0;n--)t=e[n],t.addEventListener("click",u),t.parentNode.parentNode.classList.contains("Nav__item--open")&&u({target:t});var r=document.querySelectorAll(".Nav__item__link--nopage");var a,o=c(r);try{for(o.s();!(a=o.n()).done;){var i=a.value;i.addEventListener("click",u)}}catch(e){o.e(e)}finally{o.f()}}))})();
//# sourceMappingURL=daux.min.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long