<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Normalized Systems Blog</title>
        <link>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles</link>
        <description>Normalized Systems Blog</description>
        <lastBuildDate>Thu, 23 Apr 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Prime Radiant: What and how we measure our software]]></title>
            <link>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures</link>
            <guid>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures</guid>
            <pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Writing good code at NSX is easy: You model a workflow, choose a fitting task name, and start writing a simple]]></description>
            <content:encoded><![CDATA[<p>Writing good code at NSX is easy: You model a <code>workflow</code>, choose a fitting <code>task</code> name, and start writing a simple
business
calculation (e.g. summing your invoice lines to an invoice total).
Your code is clean and well-structured, and you build on the foundation of a qualitative stack.</p>
<p>Thanks to the <code>expand</code> and <code>build</code> in the micro-radiant, our expansion framework, automagically, delivers a whole set of
code.
It supplies you with modern user interfaces, it manages data persistency, exposes an API and much more.</p>
<p>But once in a while, a more daunting task might require you to extend the stack with unsupported functionality... Maybe
your client wants to export his data in a proprietary report structure, or you need to integrate with an obscure
authentication framework, or maybe your client wants all action buttons validated with a PIN code.</p>
<p>To ensure these custom additions (and for that matter all code) remain maintainable, we track each project with automated
measures. In this post, we
explain how we measure each project and how these measures help you to keep your project in good shape.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gathering-data-throughout-the-build-pipeline">Gathering data throughout the build pipeline<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#gathering-data-throughout-the-build-pipeline" class="hash-link" aria-label="Direct link to Gathering data throughout the build pipeline" title="Direct link to Gathering data throughout the build pipeline" translate="no">​</a></h2>
<p>At NSX, we provide each project with a default build pipeline. The pipeline integrates with a whole set of tools that
capture dependency health, calculate test coverage, define code metrics and analyze your code structure.</p>
<p>The different stages in the pipeline might call an external system or produce a report artifact. All this information is
afterwards aggregated and linked to your application in our central intelligence platform: <strong>Prime Radiant</strong>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-deeper-look-into-our-pipeline">A deeper look into our pipeline<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#a-deeper-look-into-our-pipeline" class="hash-link" aria-label="Direct link to A deeper look into our pipeline" title="Direct link to A deeper look into our pipeline" translate="no">​</a></h3>
<!-- -->
<p>The lifecycle of a pipeline consists of several stages that produce measures:</p>
<ul>
<li class=""><strong>Build</strong>: Executes the <code>mvn package</code> command. This uses the CycloneDX plugin to generate a <code>bom.json</code> (Bill of
Materials).</li>
<li class=""><strong>Report</strong>: Pushes the <code>bom.json</code> to <strong>DependencyTrack</strong> for security analysis. It also triggers <strong>SonarQube</strong> for
code quality and gets a <code>sonar-xml.report</code> with high-level statistics back.</li>
<li class=""><strong>NS-Audit</strong>: Calls our custom <strong>NS Audit Tool</strong> that validates code on NS principle violations and generates an
<code>audit.json</code> result.</li>
<li class=""><strong>Analyze</strong>: This is where the <strong>Project Analyzer</strong> comes in. It scrapes the source code, counts files, and interprets
the models. It reads the <code>bom.json</code>, <code>audit.json</code>, and <code>sonar-report.xml</code> and pushes everything to Prime Radiant.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="project-analyzer">Project Analyzer<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#project-analyzer" class="hash-link" aria-label="Direct link to Project Analyzer" title="Direct link to Project Analyzer" translate="no">​</a></h3>
<p>The analyzer is a central Java application that we developed in-house. It is responsible for parsing all measure data
available in the pipeline, calculating additional measures, and sending everything to Prime Radiant.</p>
<p>Some of the measures that it calculates include:</p>
<ul>
<li class=""><strong>Codesize</strong>: Measuring the total footprint of the codebase.</li>
<li class=""><strong>Model size</strong>: Reading the application model and determining the amount of model elements of each type (Data
Elements, Tasks, Flows, etc.).</li>
<li class=""><strong>Detecting extensions and insertions</strong>: Identifying specific points in the source code where you added custom code or
extended the framework.</li>
<li class=""><strong>Overlays</strong>: Looking for overlays to see where the generated templates are overwritten.</li>
</ul>
<p>While the project analyzer provides most of the measure data, some project-independent data is gathered by the Prime
Radiant directly. One of such example is pulling vulnerability data from an open platform to enrich our internal
dependency health measures.</p>
<h1>What do we measure?</h1>
<p>For applications, we split our measures into two main categories: <strong>Size Metrics</strong> and <strong>Quality Metrics</strong>.</p>
<p>Measures that are shared with other software artifact types are linked to the generic element <code>AssemblyUnitBatch</code>, application-specific measures are linked to <code>ApplicationVersion</code>.</p>
<blockquote>
<p>Plugins, Expansion Resources and libraries have their own set of measures which are out of scope of this article.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="size-metrics">Size Metrics<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#size-metrics" class="hash-link" aria-label="Direct link to Size Metrics" title="Direct link to Size Metrics" translate="no">​</a></h2>
<p>Size metrics describe the size of your codebase and model. These are useful for:</p>
<ol>
<li class=""><strong>Tracking growth over time</strong>: See how your application size is evolving (e.g. How many new data elements were introduced in the last year to monitor
application's growth.)</li>
<li class=""><strong>Defining "peer" applications</strong>: Find similar projects to use as a benchmark. (e.g., If an application with the same amount of data elements has three times the workflows, maybe you should model your flows more granularly).</li>
<li class=""><strong>Normalizing quality metrics</strong>: Use size to put quality in context. (e.g. How much custom code do you have per data
element, and does it remain stable as you grow?).</li>
</ol>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="quality-metrics">Quality Metrics<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#quality-metrics" class="hash-link" aria-label="Direct link to Quality Metrics" title="Direct link to Quality Metrics" translate="no">​</a></h2>
<p>Quality metrics check how solid the code is. We group these measures into
three areas: Custom code, quality and dependencies.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-custom-code--overlays">1. Custom Code &amp; Overlays<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#1-custom-code--overlays" class="hash-link" aria-label="Direct link to 1. Custom Code &amp; Overlays" title="Direct link to 1. Custom Code &amp; Overlays" translate="no">​</a></h3>
<p>These measures quantify how an application extends the generated stack. We monitor these to identify projects that are
becoming overly customized, which increases the complexity of future upgrades and maintenance.</p>
<!-- -->
<ul>
<li class="">
<p><strong>CustomCodeMeasure</strong>: We track <code>nrOfExtensions</code> (files) and <code>nrOfInsertions</code> (files with code added within anchors). We also
monitor <code>totalSizeExtensions</code> and <code>totalSizeInsertions</code> in bytes to assess the volume of custom implementation logic.</p>
</li>
<li class="">
<p><strong>OverlayMeasure</strong>: This tracks overrides of standard files via <code>nrOfOverlays</code> and <code>totalSizeOverlays</code>. A high overlay
count often indicates that the core framework lacks a specific feature, leading to project-specific workarounds.</p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-code-quality-sonarqube">2. Code Quality (SonarQube)<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#2-code-quality-sonarqube" class="hash-link" aria-label="Direct link to 2. Code Quality (SonarQube)" title="Direct link to 2. Code Quality (SonarQube)" translate="no">​</a></h3>
<p>Code quality metrics are primarily derived from SonarQube, focusing on three technical domains: <strong>Reliability</strong> (
functional correctness), <strong>Maintainability</strong> (ease of modification), and <strong>Security</strong> (resistance to exploits).</p>
<!-- -->
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="issue-counts">Issue counts<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#issue-counts" class="hash-link" aria-label="Direct link to Issue counts" title="Direct link to Issue counts" translate="no">​</a></h4>
<p>The aggregated issue counts help you validate code stability over time and can be used to benchmark your application against others in the Prime Radiant</p>
<ul>
<li class=""><strong>maintainabilityIssues</strong>: The count of technical patterns that increase complexity and make the codebase more
difficult to modify.</li>
<li class=""><strong>reliabilityIssues</strong>: The count of logic errors that increase the probability of runtime failures.</li>
<li class=""><strong>securityIssues</strong>: The count of security flaws that represent potential points of exploitation.</li>
<li class=""><strong>Severity Breakdown</strong>: Issues are categorized as <code>lowSeverityIssues</code>, <code>mediumSeverityIssues</code>, or
<code>highSeverityIssues</code> based on internal rankings of SonarQube.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="ratings">Ratings<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#ratings" class="hash-link" aria-label="Direct link to Ratings" title="Direct link to Ratings" translate="no">​</a></h4>
<p>A rating tries to quantify the quality of your application in a single number (based on all detected issues). Any
rating deviating from the best grade (1) might be a good starting point to start improving your application.</p>
<ul>
<li class=""><strong>debt</strong>: The estimated effort (in minutes) required to remediate all open maintainability issues.</li>
<li class=""><strong>maintainabilityRating</strong>: A grade (1-5) based on the Debt Ratio (the cost to fix the code vs. the cost to rewrite
it).</li>
<li class=""><strong>reliabilityRating</strong>: A grade (1-5) derived from the severity of the most critical open bug.</li>
<li class=""><strong>securityRating</strong>: A grade (1-5) based on the severity of the most critical open vulnerability.</li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="code-complexity">Code complexity<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#code-complexity" class="hash-link" aria-label="Direct link to Code complexity" title="Direct link to Code complexity" translate="no">​</a></h4>
<ul>
<li class=""><strong>duplication</strong>: The percentage of repeated code blocks.</li>
<li class=""><strong>cyclomaticComplexity</strong>: A mathematical measure of the number of linearly independent paths through the code. It
reflects how difficult the code is to unit test.</li>
<li class=""><strong>cognitiveComplexity</strong>: A measure of how difficult the code is to understand for a human. It penalizes nested loops
and complex logic structures.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-dependency-measures">3. Dependency measures<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-measures#3-dependency-measures" class="hash-link" aria-label="Direct link to 3. Dependency measures" title="Direct link to 3. Dependency measures" translate="no">​</a></h3>
<p>Managing dependencies is an important factor in application quality. Every external library added increases the
maintenance surface of the application and introduces external risks.</p>
<p>At NSX, we use Renovate Bot to automate update tracking. However, updates still require careful (and manual )
management.
Breaking changes may require refactors, and version updates may unintentionally impact internal implementations.</p>
<!-- -->
<p>Dependencies also extend the application's attack surface. Vulnerabilities within third-party libraries become direct
security risks for the project.</p>
<p>We monitor:</p>
<ul>
<li class=""><strong>nrVulnerabilities</strong>: The total vulnerability count, categorized from <code>nrCritical</code> to <code>nrInfo</code>. The urgency category
is based on public CVE scores.</li>
<li class=""><strong>nrOutdatedVersions</strong>: The number of dependencies currently behind the latest (known) release.</li>
</ul>
<hr>
<h1>What's next?</h1>
<p>Analyzing our projects and storing this information in a structured way is just the first step. As a chief engineer, it
is up to you to watch over your application's health.</p>
<p>The Prime Radiant offers you a view to check, from time to time, how your application is doing. In the daily run of a
project, it is surprisingly easy to forget best practices, choose a quick shortcut, or leave a "dirty patch" that never
gets fixed.</p>
<p>Tracking these measures allows you to reflect on this evolution and make time for a necessary refactor in a specific
component or layer (i.e. if you went a little wild with UI customizations).</p>
<p>To help you with this, the Prime Radiant team is working on:</p>
<ol>
<li class=""><strong>Automated notifications</strong>: Get alerts via mail, Slack, or build failures when your project crosses defined
measure thresholds.</li>
<li class=""><strong>Dashboard views</strong>: Compare your application with other projects to detect trends or evolutions that might be less
than ideal.</li>
</ol>
<hr>
<blockquote>
<p>Below is a dashboard preview showing an application with an unusually high number of extensions compared to its data elements:</p>
</blockquote>
<img src="https://foundation.stars-end.net/img/articles/2026-04-23-prime-radiant-measures/nrdataelements_2026-04-24.png" alt="Amount of dataelements" class="themedComponent_mlkZ themedComponent--light_NVdE" style="width:40%"><img alt="Amount of dataelements" class="themedComponent_mlkZ themedComponent--dark_xIcU" style="width:40%">
<img src="https://foundation.stars-end.net/img/articles/2026-04-23-prime-radiant-measures/customcode_nrofextensions_2026-04-24.png" alt="Amount of extensions" class="themedComponent_mlkZ themedComponent--light_NVdE" style="width:50%"><img alt="Amount of extensions" class="themedComponent_mlkZ themedComponent--dark_xIcU" style="width:50%">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Prime Radiant: Towards an integrated software factory control system]]></title>
            <link>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-introduction</link>
            <guid>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-introduction</guid>
            <pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Introducing the Prime Radiant: An integrated software factory control system]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introducing-the-prime-radiant-an-integrated-software-factory-control-system">Introducing the Prime Radiant: An integrated software factory control system<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-introduction#introducing-the-prime-radiant-an-integrated-software-factory-control-system" class="hash-link" aria-label="Direct link to Introducing the Prime Radiant: An integrated software factory control system" title="Direct link to Introducing the Prime Radiant: An integrated software factory control system" translate="no">​</a></h2>
<p>Software data is scattered across multiple tools (such as Git, Jira, Jenkins, Maven, SonarQube, etc.), making it challenging to have an integrated overview of one (or many) applications.
Next to this, software systems become more pervasive to manage and controlling the end-to-end production process of every application in your organization can be a daunting task.
Therefore, it is our goal at NSX to build the foundations for a true software factory, to manage and control the building and assembly of software systems.</p>
<p><strong>The Prime Radiant</strong> provides a single analysis platform and control layer to optimize NSX factory's operations and output. (i.e. application and expander developments)
It works by automatically <strong>collecting, aggregating, and integrating information</strong> from our different DevOps tools.</p>
<p>The result is a unified view of the development lifecycle across all applications.
This not only supports data analysis but also offers the potential to control our factory: adding new expansion resources, patching vulnerabilities, or deploying new application versions, all directed from the Prime Radiant.</p>
<p>In the next sections, we'll describe the core functionality of the Prime Radiant.
For each functionality we show a conceptual data model that contains the relevant data concepts.</p>
<blockquote>
<p>Please note that all diagrams are showing a simplified version of the actual implementation</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="managing-assembly-units">Managing Assembly Units<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-introduction#managing-assembly-units" class="hash-link" aria-label="Direct link to Managing Assembly Units" title="Direct link to Managing Assembly Units" translate="no">​</a></h2>
<p>A fundamental concern of the Prime Radiant is capturing and identifying all software created within the NSX factory.
An <code>Assembly Unit</code> defines every piece of software or technology produced, allowing us to manage the factory’s artifacts comprehensively.</p>
<p>An <code>Assembly Unit</code> can be an <code>Application</code> (like a JEE System) , an <code>Expansion Resource</code> (e.g. Angular front-end expander) , a <code>Library</code> (providing basic utilities) , or a <code>Developer Tool</code> (plugins and command-line tools), or a unit combining any of the former.</p>
<p>For every unit, we keep track of the source code by mapping its associated Repository.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tracking-versions">Tracking Versions<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-introduction#tracking-versions" class="hash-link" aria-label="Direct link to Tracking Versions" title="Direct link to Tracking Versions" translate="no">​</a></h2>
<p>To analyze and optimize applications over time, we must track changes and their impact.
Versioning is fundamental to tracking software changes. As a result, each software element is mapped to a specific versioned entity, like an <code>AssemblyUnitBatch</code> or <code>ApplicationVersion</code>.
This is crucial because it allows us to link dependencies, metrics, and vulnerabilities to its specific state at a certain moment.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="monitoring-metrics">Monitoring metrics<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-introduction#monitoring-metrics" class="hash-link" aria-label="Direct link to Monitoring metrics" title="Direct link to Monitoring metrics" translate="no">​</a></h2>
<p>A core function of a control system is tracking data over time.
The prime-radiant logs crucial metrics for applications, expansion resources, libraries etc.
We have defined a core set of shared metrics (such as <code>Test Coverage</code> and <code>Code Quality</code>) that apply to all Assembly Units.
Additionally, we implement more specific metrics tailored to the unique requirements of each Assembly Unit type.</p>
<p>For example, for the unit type <code>Applications</code>, we monitor the amount and size of custom code (extensions/insertions), relative to the generated software to ensure maintainability and evolvability.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deployments">Deployments<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-introduction#deployments" class="hash-link" aria-label="Direct link to Deployments" title="Direct link to Deployments" translate="no">​</a></h2>
<p>Deploying applications and managing the underlying infrastructure is a part of every development lifecycle.
The Prime Radiant tracks <code>Application Deployments</code> to record information such as server specifications, OS versions, cloud provider type, and domains.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="build-pipelines">Build pipelines<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-introduction#build-pipelines" class="hash-link" aria-label="Direct link to Build pipelines" title="Direct link to Build pipelines" translate="no">​</a></h2>
<p>Each version of an Assembly Unit is traced back to a specific build produced by a pipeline.
The pipelines are defined with <code>PipelineTargets</code> (steps) that make use of various <code>BuildTechnologies</code>, and ultimately produce versioned <code>Resources</code> (libraries, archives, or executables).</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="modeling-business-requirements">Modeling business requirements<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/prime-radiant-introduction#modeling-business-requirements" class="hash-link" aria-label="Direct link to Modeling business requirements" title="Direct link to Modeling business requirements" translate="no">​</a></h2>
<p>Creating software is not an end goal; it's done to fulfill specific business needs, making business context paramount.
In the Prime Radiant, this context is modeled and captured.</p>
<p>Every Application, is linked to a <code>Domain</code> (e.g. car rental) and part of a larger <code>Digital Platform</code> (such as 'euRent platform').</p>
<p>This platform is described using <code>Business Capabilities</code> (e.g., invoicing, scheduling, maintenance) and <code>Functional Requirements</code> (e.g., canceling a booking).</p>
<p>This approach allows the software manufacturing control system to link development efforts directly to business value.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[December 2023 R&D update]]></title>
            <link>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update</link>
            <guid>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update</guid>
            <pubDate>Thu, 07 Dec 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[On the 7th of December, we presented an overview of some of the major developments over the last half year in the NSX]]></description>
            <content:encoded><![CDATA[<p>On the 7th of December, we presented an overview of some of the major developments over the last half year in the NSX
R&amp;D team. This post is a guiding article for the presentation, which summarizes the notable topics that we touched on.
We now also include an overview of planned development over the course of the coming half year.</p>
<a target="\_blank" href="https://foundation.stars-end.net/assets/files/overview-r&amp;d-2023-12-c500734b6502f0f5a3939b78b5feae29.pdf" class="button--cln button button--primary"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download" aria-hidden="true"><path d="M12 15V3"></path><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><path d="m7 10 5 5 5-5"></path></svg> Download the presentation</a>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular-expanders">Angular Expanders<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#angular-expanders" class="hash-link" aria-label="Direct link to Angular Expanders" title="Direct link to Angular Expanders" translate="no">​</a></h2>
<p>The <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/technical-docs/angular-ui/angular-expanders/">angular-expanders</a> underwent a lot of changes in the last 6 months and has grown more stable. The
<a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/technical-docs/angular-ui/metamodel/angular-app/">AngularProjects metamodel</a> was created (1) to facilitate the expansion to a different root folder than the JEE
application stack and (2) to better describe front-end applications. The metamodel consists of:</p>
<ul>
<li class=""><a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/technical-docs/angular-ui/metamodel/angular-app/"><code>AngularApp</code></a>: The program of the model. Contains attributes like version and prefix. Can be compared to <code>Application</code>.</li>
<li class=""><a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/technical-docs/angular-ui/metamodel/feature-module/"><code>FeatureModule</code></a>: The module of the model. Is used to expand a logical folder structure. Can be compared to <code>Component</code>.</li>
<li class=""><a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/technical-docs/angular-ui/metamodel/feature-module/data-connector/"><code>DataConnector</code></a>: Defines a connection to a <code>DataElement</code> and its CRUD operations.</li>
<li class=""><a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/technical-docs/angular-ui/metamodel/feature-module/data-view/"><code>DataView</code></a>: Defines the views for CRUD operations.</li>
</ul>
<p>Together with the front-end developers of our ongoing projects a new <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/technical-docs/angular-ui/angular-expanders/folder-structure">folder structure</a> has been defined. This will
make sure that every project looks the same and people can quickly navigate throughout as we are used to with our
back-end applications.</p>
<p>In order to adhere to the <em>flat</em> folder structure convention of front-end development, we moved on from the use of <code>gen</code>
and <code>ext</code> folders to differentiate custom code. Instead, the expansion/harvest process now uses a manifest file to list
all files that get expanded. This means that <code>ext</code> files can be placed everywhere now, however we do
<a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/technical-docs/angular-ui/angular-expanders/customizations/">restrict</a> the use of this to
maintain the project familiarity as mentioned before.</p>
<p>As we are introducing a new front-end technology, we also want to give a new look and feel together with a better user
experience to the projects. Tom has been busy creating new designs for this and these are gradually being added to the
expanded projects.</p>
<p>Currently, projects using the angular-expanders rely heavenly on custom views and styles. An effort is being made for
these projects to not diverge too much, a weekly front-end meeting has been introduced where our developers can:</p>
<ul>
<li class="">explain upcoming features and get feedback on them</li>
<li class="">ask if other people have already created certain components</li>
<li class="">define the path forward for the angular-expanders</li>
</ul>
<p>To further facilitate this, a way to share components/services/directives has been introduced to minimize double work.
This is accompanied by documentation where you can try out the elements.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="enum-types">Enum types<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#enum-types" class="hash-link" aria-label="Direct link to Enum types" title="Direct link to Enum types" translate="no">​</a></h2>
<p>EnumTypes are ValueTypes where you enumerate the possible values of the types in the model.
They can be added to a Component and used as the type for a ValueField (like the SimpleValueTypes).</p>
<p>EnumTypes are expanded as enums in the shared layer.</p>
<p>Read more about the EnumTypes <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/data-elements/value-types/enum-types/">here</a>.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Experimental</div><div class="admonitionContent_BuS1"><p>The enumTypes metamodel is currently in an experimental phase.
Once we're happy with the result, it will be merged into elements.</p><p>Front-end implementations for angular and knockout are work in progress.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="expander-development">Expander development<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#expander-development" class="hash-link" aria-label="Direct link to Expander development" title="Direct link to Expander development" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mapping-file-improvements">Mapping file improvements<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#mapping-file-improvements" class="hash-link" aria-label="Direct link to Mapping file improvements" title="Direct link to Mapping file improvements" translate="no">​</a></h3>
<p>Mapping files now have a new syntax to make it easier to define import for an artifact.</p>
<p>Up until now, imports have been a difficult thing to get right in an Expander.
This is because imports have a number of requirements that are hard to represent in mapping files:</p>
<ul>
<li class="">Deduplication: Ideally, imports do not have any duplicate imports. In typescript, this is even a prerequisite.</li>
<li class="">Conditional imports: Imports need to be declared at the start of the artifact. Yet, the conditions when to add them
are often processed deeper in the mapping file.</li>
<li class="">Redundant/relative imports: Sometimes, imports are redundant because they have the same package as the artifacts.
In javascript-like imports, the coordinates can be relative to the current artifact location.</li>
</ul>
<p>The mapping files now support <code>usage</code> statements, which declare that a resource is used and needs to be imported.
These usages are then collected and processed to generate a set of imports.</p>
<p>There is support for java and requirejs imports and the possibility to add your own import resolvers.
In the future, a typescript import resolver will be added as well.</p>
<p>See <a class="" href="https://foundation.stars-end.net/docs/ecosystem/engineering-solutions/expanders/basics/import-mapping">Mapping Imports</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="expanders-assert">Expanders Assert<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#expanders-assert" class="hash-link" aria-label="Direct link to Expanders Assert" title="Direct link to Expanders Assert" translate="no">​</a></h3>
<p>Expanders-assert is a new testing library for Expanders based on JUnit 5 and AssertJ.
In the long run, it is intended to replace the <code>expanders-test-utils</code> library.</p>
<p>The focus is on making tests more predictable.
With the expanders-test-utils library, tests can sometimes run into issues where the cause is hard to find.
This can be the result of issues in the ClassPath, problems building the correct ExpansionContext, find elements in the
model etc.</p>
<p>These problems only get more pressing now that new metamodels are starting to be created more and more.</p>
<p>Expanders-assert improves the stability of Expanders tests by changing how dependencies are loaded to build a test model.
It also provides a slightly more modern API to write tests with.</p>
<p>You can read more about expanders-assert <a class="" href="https://foundation.stars-end.net/docs/ecosystem/engineering-solutions/expanders/testing/expanders-assert">here</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="workflow-with-processautomation">Workflow with ProcessAutomation<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#workflow-with-processautomation" class="hash-link" aria-label="Direct link to Workflow with ProcessAutomation" title="Direct link to Workflow with ProcessAutomation" translate="no">​</a></h2>
<p>A preview release (0.x.x) has become available for ProcessAutomation, the evolution of the Workflow component. The
primary improvements over the workflow component are: Model based state-machines instead of database configuration;
Queue-backed scheduling to support a wider range of execution models; And support for many types of Triggers and Events.</p>
<p>There is a well-defined <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/workflows/process-automation/workflow-component-migration">migration path</a>
for applications which are currently using the workflow component. The first two steps of the migration can even be
adopted while you keep using the workflow component.</p>
<p>The intent of the preview release is to find apparent issues with the design early on if any. We also don't guarantee no
breaking changes until the first official release 1.x.x.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="modeling-behavior-with-triggers">Modeling behavior with triggers<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#modeling-behavior-with-triggers" class="hash-link" aria-label="Direct link to Modeling behavior with triggers" title="Direct link to Modeling behavior with triggers" translate="no">​</a></h3>
<p>In addition to the FlowEngines used in the Workflow component, it is possible to model additional triggers with
process automation. Out of the box we provide various triggers with OnCreate, OnModify, OnTransition and Schedule
currently provided. This will lead to a more functional workflow model and also a more responsive application.</p>
<p>Triggers and events make full use of the underlying queue in process automation which makes task execution quick and
predictable. More info on triggers is available <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/workflows/triggers">in the documentation</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="fully-extendable">Fully extendable<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#fully-extendable" class="hash-link" aria-label="Direct link to Fully extendable" title="Direct link to Fully extendable" translate="no">​</a></h3>
<p>The entire component is designed to be extendable. This means it is possible to add custom events or triggers. Not only
is it functionally extendable but also the technical implementation allows for extension. An example of this is a custom
queue driver. Two queues are provided by default, an Application Persistence queue and an In Memory queue. If you would
like to use another queueing technology, you will only need to provide a QueueDriver for this technology.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="nsx-intellij-plugin">NSX IntelliJ plugin<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#nsx-intellij-plugin" class="hash-link" aria-label="Direct link to NSX IntelliJ plugin" title="Direct link to NSX IntelliJ plugin" translate="no">​</a></h2>
<p>Some nice quality of life features have recently been added to the NSX-Support IntelliJ Plugin.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="reordering-java-imports">Reordering Java imports<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#reordering-java-imports" class="hash-link" aria-label="Direct link to Reordering Java imports" title="Direct link to Reordering Java imports" translate="no">​</a></h3>
<p>You may have encountered issues before with missing imports after harvesting your application. This can occur due to the
way intelliJ adds imports to your files. With the updates all manually added imports will now be moved to the
<code>anchor:custom-imports</code> block when a file is saved.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="improved-expander-templates">Improved expander templates<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#improved-expander-templates" class="hash-link" aria-label="Direct link to Improved expander templates" title="Direct link to Improved expander templates" translate="no">​</a></h3>
<p>The expander templates have been updated to include all the latest and greatest expander features. Things like
<code>&lt;artifact&gt;</code> and <code>@imports</code> or support for the <code>TestModelBuilder</code> and <code>expanders-assert</code> with Junit5 are now all
available when generating new expanders.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="debugging-support-for-expander-mapping">Debugging support for expander mapping<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#debugging-support-for-expander-mapping" class="hash-link" aria-label="Direct link to Debugging support for expander mapping" title="Direct link to Debugging support for expander mapping" translate="no">​</a></h3>
<p>It can sometimes be difficult to figure out what exactly is added to the expansion context by a mapping file. The NSX
support plugin now provides debugging support for mapping files. This is enabled simply by adding breakpoints to the
<code>Mapping.xml</code> you want to inspect, and the editor will pause test execution when the selected mapping rule is evaluated.
More info on the setup is available in the <a class="" href="https://foundation.stars-end.net/docs/ecosystem/engineering-solutions/expanders/basics/debugging">expander development documentation</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="rest-expanders-4x">REST Expanders 4.x<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#rest-expanders-4x" class="hash-link" aria-label="Direct link to REST Expanders 4.x" title="Direct link to REST Expanders 4.x" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="querysearch-metamodel">QuerySearch Metamodel<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#querysearch-metamodel" class="hash-link" aria-label="Direct link to QuerySearch Metamodel" title="Direct link to QuerySearch Metamodel" translate="no">​</a></h3>
<p>With the introduction of version 3 of <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/data-elements/api/rest-expanders/">rest-expanders</a>,
it migrated to using the <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/data-elements/search-data/querysearch-expanders/metamodel">QuerySearch metamodel</a>
implicitly. This means that all expanders related to QuerySearch were reworked to use the QuerySearch metamodel instead
of DataElement. The model was implicitly added when loading, based on existing options on DataElement. This resulted in
it being 100% backwards compatible. The reason for this transition phase was to have time to refine the metamodel for
QuerySearch, while already being able to prepare expanders to make use of it.</p>
<p>With version 4, we finally made the transition to using the QuerySearch model explicitly, because the model is now
stable enough to be used. This transition was facilitated by introducing a transmuter that transforms the model in the
same way it was previously done implicitly. This allows us to make the transition without making any changes to any
expanders.</p>
<p>This transition also allows developers to add options to elements from the QuerySearch metamodel, which enables the
introduction of new features in expanders. One such feature is the option <code>jaxrs.querySearch.exposeFilter</code> on
QueryFilterField, which expands the code to expose the filter field on the GETlist endpoint in an expanded API.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="implicit-metamodel">Implicit metamodel<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#implicit-metamodel" class="hash-link" aria-label="Direct link to Implicit metamodel" title="Direct link to Implicit metamodel" translate="no">​</a></h3>
<p>It has been a long term goal to create a metamodel to model REST APIs. In version 4 we're taking the first steps towards
this goal. A metamodel is now in development and already implicitly in use (like QuerySearch was previously), so it can
be developed without breaking backwards compatibility with existing applications.</p>
<p>One of the first major improvements that were introduced with this metamodel is that now all server error types are
defined in a model, reducing the complexity of the related expanders greatly.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="jakarta-support">Jakarta support<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#jakarta-support" class="hash-link" aria-label="Direct link to Jakarta support" title="Direct link to Jakarta support" translate="no">​</a></h3>
<p>The <a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#mapping-file-improvements" class="">improvements to mapping files</a> allow us to facilitate the transition to Jakarta EE.
All imports in rest-expanders that must be changed from <code>javax.</code> to <code>jakarta.</code> have been migrated to the new imports
system and technology mappings were added to make it compatible with both Java EE and Jakarta EE. There's still some
changes requires to fully support Jakarta in rest-expanders, but this puts us very close to the finish line.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="querysearch-joins">QuerySearch joins<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#querysearch-joins" class="hash-link" aria-label="Direct link to QuerySearch joins" title="Direct link to QuerySearch joins" translate="no">​</a></h2>
<p>The improve some functionality in rest-expanders, support to define explicit joins was added to QuerySearch. This makes
it possible to define <code>LEFT INNER</code> and <code>LEFT OUTER</code> joins on tables involved in the query's <code>FROM</code> clause.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="jee-stack-improvements">JEE stack improvements<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#jee-stack-improvements" class="hash-link" aria-label="Direct link to JEE stack improvements" title="Direct link to JEE stack improvements" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="java-21-support">Java 21 support<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#java-21-support" class="hash-link" aria-label="Direct link to Java 21 support" title="Direct link to Java 21 support" translate="no">​</a></h3>
<p>The new LTS of Java, version 21 was <a href="https://blogs.oracle.com/java/post/the-arrival-of-java-21" target="_blank" rel="noopener noreferrer" class="">released on September 19th</a>.
This version introduced a couple of interesting new features such as <a href="https://openjdk.org/jeps/441" target="_blank" rel="noopener noreferrer" class="">pattern matching for switches</a>
and <a href="https://openjdk.org/jeps/440" target="_blank" rel="noopener noreferrer" class="">record patterns</a>.</p>
<p>In order to allow these new features to be used in our JEE applications, we added support for Java 21 as soon as
possible, transitioning to a Java 21 JVM in our docker images and supporting it as a compiling target as soon as a
release of Temurin and a compatible version of TomEE were available. This has allowed us to create new applications with
Java 21 and migrate existing applications to Java 21 in just over one month of its release.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="housekeeping">Housekeeping<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#housekeeping" class="hash-link" aria-label="Direct link to Housekeeping" title="Direct link to Housekeeping" translate="no">​</a></h3>
<p>Over the years a lot of legacy features have been left behind in our JEE stack expanders to retain maximum backwards
compatibility. Though our expanders allow us to reduce the cost of maintaining these, it does still incur a cost.
Usually we clean up these features at a gradual pace, but over the last half year we did a serious cleaning of many
deprecated features and code that was no longer in use.</p>
<ul>
<li class="">Before we moved to Java 8, we used a custom implementation <code>Options.Option&lt;T&gt;</code> to wrap non-null values. This
<a class="" href="https://foundation.stars-end.net/blog/expanders-5.30.0">was replaced</a> with <code>Optional&lt;T&gt;</code>, as our minimum target for applications is now Java 8.</li>
<li class=""><code>UserContext</code> has been part of many deprecated constructs in our expanded code. The reason for this is that is was
replaced with <code>Context</code> at some point to allow context information to be represented individually for different
features and concerns. We first deprecated <code>UserContext</code> in 2018 as main context transport object and have <a class="" href="https://foundation.stars-end.net/blog/expanders-5.33.0">now
removed most code</a> where it was used as such.</li>
<li class="">The <code>CrudsResult&lt;T&gt;</code> class was rebuilt and made immutable (to the extent possible without losing backwards
compatibility). This is the first of the result classes that will be reworked in order to clean up the implementation
and make them more consistent. This class was intended to be a simple wrapper with a dedicated purpose. The new
implementation enforces more constraints to guide developers to the correct usage of the class.</li>
<li class="">Mindmap was removed from nsx-runtime. This was an old feature that is no longer in use.</li>
<li class="">We have accumulated a lot of methods marked with <code>@Deprecated</code> in nsx-runtime and expanded code. Most of these that
were deprecated for more than a year (usually 3 or more) were removed.</li>
<li class="">We've removed a lot of deprecated features in expanded code that we marked with legacy options. These features have
typically been phased out for years and have a better alternative and a reasonable upgrade path.</li>
<li class="">The groupIds for all maven modules in the JEE applications have been changed to be consistent and unique to
individual applications, which was important for re-usable components, which are in a sense a unique instance per
application they are expanded for.</li>
<li class="">We replaced the implementation of <code>FinderBean</code> to no longer use reflection and require all finders to be defined in
the model. This was placed behind an opt-in option for quite some time and used in all new projects, but has now been
switched to be the default implementation.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="upcoming-features-in-2024h1">Upcoming features in 2024H1<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#upcoming-features-in-2024h1" class="hash-link" aria-label="Direct link to Upcoming features in 2024H1" title="Direct link to Upcoming features in 2024H1" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="rest-expanders">REST Expanders<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#rest-expanders" class="hash-link" aria-label="Direct link to REST Expanders" title="Direct link to REST Expanders" translate="no">​</a></h3>
<p>Development on the REST metamodel which is added implicitly will be resumed. The goal is to move all information that
is currently being gathered by multiple expanders into a single data structure represented by the model. This model once
refined can then later be made explicit as was done for QuerySearch. The goal is to move the APIs out of components when
the model in rest-expanders 5 with the explicit model, so the APIs are coupled to an application and APIs can be
created for any component in multiple versions.</p>
<p>Work has also started on expanding Java REST clients for the API generated with rest-expanders. The introduction of the
new metamodel will be a key part of this, as a lot of information about the API is needed by both the server and client
expanders.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="replacing-struts2">Replacing Struts2<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#replacing-struts2" class="hash-link" aria-label="Direct link to Replacing Struts2" title="Direct link to Replacing Struts2" translate="no">​</a></h3>
<p>Our JEE stack has historically used Struts2 to provide a REST API for our expanded Knockout-based frontend to
communicate with. This API works well, but also needs some design improvements. We have started development on a new
API for our generated UIs which is more uniform and structured, based on the <a href="https://jsonapi.org/format/" target="_blank" rel="noopener noreferrer" class="">JSON<!-- -->:API</a>
format.</p>
<p>We intend to finish the implementation of this new API, as well as provide integration with both our Knockout-based UI
and a new fully-generated Angular UI. Through this we aim to provide a more manageable migration path for applications
to move from the old UI to a new Angular UI.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular-ui">Angular UI<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#angular-ui" class="hash-link" aria-label="Direct link to Angular UI" title="Direct link to Angular UI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="contribution">Contribution<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#contribution" class="hash-link" aria-label="Direct link to Contribution" title="Direct link to Contribution" translate="no">​</a></h4>
<p>The use of Angular libraries and its documentation will be further developed. The current process for contribution to
our "angular ecosystem" will be streamlined and optimized.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-designs">New designs<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#new-designs" class="hash-link" aria-label="Direct link to New designs" title="Direct link to New designs" translate="no">​</a></h4>
<p>We've laid the foundation to implement a whole new custom design for our Angular UI that will provide a clean and
unique identity to the applications we develop. In the near future we will further improve on this by supporting more
types of screens and by adding new features to the views we already support.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="backend-clients">Backend clients<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#backend-clients" class="hash-link" aria-label="Direct link to Backend clients" title="Direct link to Backend clients" translate="no">​</a></h4>
<p>Currently, the angular-expanders rely heavily on the endpoints expanded by the
<a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/data-elements/api/rest-expanders/">rest-expanders</a>. We are working on a replacement for
the current Struts2 API with a JAX-RS API. The latter will be supported by the angular-expanders and a way to have
interoperability with the current behaviour needs to be defined.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="expander-tags">Expander Tags<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#expander-tags" class="hash-link" aria-label="Direct link to Expander Tags" title="Direct link to Expander Tags" translate="no">​</a></h3>
<p>Expanders tags are a design concept to simplify the conditions of Expanders.
The idea is to have each Expander define a set of tags. The Expander will only be executed is all tags are available on
the element.</p>
<p>E.g. a RemoteExpander could have the tags <code>ejb3</code> and <code>remote</code>. If either <code>ejb3</code> or <code>remote</code> is missing from a
DataElement, the Remote class will not be expanded.</p>
<p>Tags will also have rules to derive tags from other tags. E.g. <code>hibernate =&gt; jpa</code> means that the jpa tag is always
included if the <code>hibernate</code> is present, since hibernate is an implementation of the jpa standard.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="rework-of-implicit-name">Rework of implicit name<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#rework-of-implicit-name" class="hash-link" aria-label="Direct link to Rework of implicit name" title="Direct link to Rework of implicit name" translate="no">​</a></h3>
<p>If a DataElement does not have a field called <code>name</code> and does not have the <code>nameNotWanted</code> option, the Expanders
generate an implicit name field. This name field is then filled in with a default value based on teh database id.</p>
<p>This functionality is problematic in a few ways:</p>
<ul>
<li class="">It is implicit, meaning there is no trace in the model. For developers new to NS, this can be very unpredictable.</li>
<li class="">The Expanders each check whether they need to add an implicit name. As a result the behaviour is inconsistent.</li>
<li class="">The name field also requires a <code>findByNameEq</code> finder. But this finder points towards a field that does not exist.</li>
</ul>
<p>We will be streamlining this logic. The solution will probably be to create a transmuter that adds the name field
explicitly, only with options to keep the behaviour the same.
From then on, not adding a name field to the model has the effect of... not having a name field.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="redesigning-datacommand">Redesigning DataCommand<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#redesigning-datacommand" class="hash-link" aria-label="Direct link to Redesigning DataCommand" title="Direct link to Redesigning DataCommand" translate="no">​</a></h3>
<p>DataCommands are currently used for a lot of tasks they were not designed for. We will design a more suitable solution
to model actions on a dataElement. We also want to make it possible to have a better integration with the expanded
control and front-end for this as well.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="processautomation-100">ProcessAutomation 1.0.0<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#processautomation-100" class="hash-link" aria-label="Direct link to ProcessAutomation 1.0.0" title="Direct link to ProcessAutomation 1.0.0" translate="no">​</a></h3>
<p>The preview release has been going well for a while now. There are some missing features like retry mechanisms and
time-window groups which we want to introduce still. These features will be integrated with the process automation
component and tested before the first full release.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="µradiant-2x">µRadiant 2.x<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#%C2%B5radiant-2x" class="hash-link" aria-label="Direct link to µRadiant 2.x" title="Direct link to µRadiant 2.x" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="plugin-system">Plugin system<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#plugin-system" class="hash-link" aria-label="Direct link to Plugin system" title="Direct link to Plugin system" translate="no">​</a></h4>
<p>With the advent of new metamodels, we also need a more scalable solution of supporting those metamodels in the
µRadiant. The current solution is to push changes to the micro-radiant repository.</p>
<p>The plugin system will allow developers to write their own plugin for the µRadiant and distribute them to other
developers wanting to use their metamodels.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="ui-overhaul">UI overhaul<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#ui-overhaul" class="hash-link" aria-label="Direct link to UI overhaul" title="Direct link to UI overhaul" translate="no">​</a></h4>
<p>Writing a new plugin system also required the components of the micro-radiant to be rewritten, because the plugins
will be using components of the micro-radiant to implement their logic.
Hence, it is important these are well-designed and version transparent.</p>
<p>With this refactoring also comes an overhaul of the styling and UI of the micro-radiant.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="tooling-support-for-mac">Tooling support for Mac<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#tooling-support-for-mac" class="hash-link" aria-label="Direct link to Tooling support for Mac" title="Direct link to Tooling support for Mac" translate="no">​</a></h3>
<p>Currently we provide support with packaging of our tooling for both Windows and Ubuntu. We've noticed an influx of
people using Mac devices to work with our tooling. Therefor we intend to provide better support for this platform, as
we will then be covering the majority of desktop platforms.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ns-initializer-modules">NS Initializer modules<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/12/07/december-2023-r&amp;d-update#ns-initializer-modules" class="hash-link" aria-label="Direct link to NS Initializer modules" title="Direct link to NS Initializer modules" translate="no">​</a></h3>
<p>The <a class="" href="https://foundation.stars-end.net/docs/tools/ns-initializer">NS Initializer</a> is a tool based on expanders that can generate all needed files to
start various new projects. It is currently required to model a project definition and write all expanders needed to
generate the project. We want to improve this setup by adding support for modules, so parts of an initializer can be
reused to build new initializer. A good example of this would be the initializer for an application being partially
reused for an initializer that generates an application with a REST API. Then the common expanders do not have to be
duplicated.</p>]]></content:encoded>
            <category>presentation</category>
            <category>r&amp;d</category>
        </item>
        <item>
            <title><![CDATA[June 2023 R&D update]]></title>
            <link>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/06/15/june-2023-r&amp;d-update</link>
            <guid>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/06/15/june-2023-r&amp;d-update</guid>
            <pubDate>Thu, 15 Jun 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[On the 15th of June, we presented an overview of some of the major developments over the last half year in the NSX R&D]]></description>
            <content:encoded><![CDATA[<p>On the 15th of June, we presented an overview of some of the major developments over the last half year in the NSX R&amp;D
team. This post is a guiding article for the presentation, which summarizes the notable topics that we touched on.</p>
<a target="\_blank" href="https://foundation.stars-end.net/assets/files/overview-r&amp;d-2023-06-c1830374b2ef94c111cc791d76318200.pdf" class="button--cln button button--primary"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download" aria-hidden="true"><path d="M12 15V3"></path><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><path d="m7 10 5 5 5-5"></path></svg> Download the presentation</a>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="alerting-component">Alerting component<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/06/15/june-2023-r&amp;d-update#alerting-component" class="hash-link" aria-label="Direct link to Alerting component" title="Direct link to Alerting component" translate="no">​</a></h2>
<p>We created the <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/base-components/alerting/">alerting component</a> as a new
base component, which properly tackles the concern of sending notifications. This was attempted in the past with the
<code>notification</code> base component, but the model for this was overfitted for emailing and in practice was used to send
full-size emails, rather than just simple notifications.</p>
<p>The alerting component provides a pub-sub system that can be used to route alerts to specific channels, which are
instances of channel types such as the default included email, <a href="https://slack.com/" target="_blank" rel="noopener noreferrer" class="">Slack</a>,
<a href="https://pushover.net/" target="_blank" rel="noopener noreferrer" class="">Pushover</a> and logging channel types. The entire process is driven by the workflow engine so
alerts can be efficiently processed and sent to their destination.</p>
<p>This component is also an experiment to further improve our understanding of what it takes to encapsulate a concern in
a shareable component, while also providing curated extension points to allow for additional external functionality.
With the implementation, it is possible to add additional channel types among other things, that are defined in a
a separate component. All default implementations are also separated off into an implementation component.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="workflow-overhaul">Workflow overhaul<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/06/15/june-2023-r&amp;d-update#workflow-overhaul" class="hash-link" aria-label="Direct link to Workflow overhaul" title="Direct link to Workflow overhaul" translate="no">​</a></h2>
<p>We are working on overhauling the entire <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/workflows/">workflow engine</a>.
The goal is to not only improve the capabilities of the engine itself, but also model every state machine so more code
can be expanded, configuration becomes much less of a hassle, and we can generate better insights into the state machine
with diagrams in the μRadiant.</p>
<p>Right now we've created a metamodel that can be used to fully model workflows in an application, an
<a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/workflows/workflows-importer">importer application</a> that can import
existing workflow configuration from an SQL database and transform it into a model and integrated tooling for the new
system into the μRadiant.</p>
<p>Next steps for the workflow will involve replacing the engine itself with a new implementation. This new implementation
should be capable of more efficiently controlling the execution of tasks. Where tasks are now triggered through a
polling mechanism that checks the state of an element, it will also be possible to use different types of triggers in
the new system, allowing for time- or message-based triggering of tasks as well.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-valuetypes-system">New ValueTypes system<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/06/15/june-2023-r&amp;d-update#new-valuetypes-system" class="hash-link" aria-label="Direct link to New ValueTypes system" title="Direct link to New ValueTypes system" translate="no">​</a></h2>
<p>The <code>ValueFieldType</code> element has been used in the past to define the type of fields in a DataElement that contain a
value, such as <code>String</code> or <code>Integer</code>. It was also possible to use these to define new custom types. This system imposed
some restrictions that made it very difficult to further expand on its functionality. Among other things, it was rather
difficult to use for other languages (other than Java) and required every expander related to Fields to provide its own
interpretation about what to do with each type.</p>
<p>To resolve all of these issues, we've introduced a new system for these types, simply named
<a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/application/data-elements/value-types/"><code>ValueType</code></a>. This will
co-exist with <code>ValueFieldType</code> for some time, but a lot of functionality has already been ported over to the new system
and a compatibility layer ensures that this is transparent for most applications.</p>
<p>At this time we've implemented a subtype of the <code>ValueType</code>, called <code>SimpleValueType</code>. This is intended to describe
"simple" types, as in types that describe a single value that can be represented by a primitive type such as <code>String</code>,
or in rare cases a boxed type of some sort that takes a single value. In the future, we do intend to expand this system
into more complex type representations, such as enumerated types, aggregate types (multi-valued) and collection types.</p>
<p>For each <code>SimpleValueType</code>, it is possible to define <code>NativeType</code> instances, which describe some sort of implementation
that is tied to technology (such as Java for example) and a concern. This way we can move this information out of the
various different expanders, while also allowing for these types to be extended for new technologies and concerns. The
system also provides a whole range of capabilities to define constraints on data and redefine types based on other
types.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="expander-development">Expander development<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/06/15/june-2023-r&amp;d-update#expander-development" class="hash-link" aria-label="Direct link to Expander development" title="Direct link to Expander development" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mapping-file-syntax">Mapping file syntax<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/06/15/june-2023-r&amp;d-update#mapping-file-syntax" class="hash-link" aria-label="Direct link to Mapping file syntax" title="Direct link to Mapping file syntax" translate="no">​</a></h3>
<p><a class="" href="https://foundation.stars-end.net/docs/ecosystem/engineering-solutions/expanders/basics/expander-mapping/">Mapping files</a> are xml files that are used to map a model
representation to a data structure that can be used by an expander to generate files. These mappings are mostly
described using the <a href="https://commons.apache.org/proper/commons-ognl/" target="_blank" rel="noopener noreferrer" class="">OGNL language</a>, but we've found that some
transformations were difficult to do in the mapping files using the available functionality and the OGNL language.
Examples of this include flattening collections
(often used in <a href="https://martinfowler.com/articles/collection-pipeline/flat-map.html" target="_blank" rel="noopener noreferrer" class="">flat-map operations</a>) and filtering
collections.</p>
<p>In addition to the new functionality of the mapping file structure, support was added to pass OGNL expressions as lambda
expressions to Java code.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="dataresources">DataResources<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/06/15/june-2023-r&amp;d-update#dataresources" class="hash-link" aria-label="Direct link to DataResources" title="Direct link to DataResources" translate="no">​</a></h3>
<p>The <code>_data.xml</code> file is now deprecated. These file(s) were required to define what
<a class="" href="https://foundation.stars-end.net/docs/ecosystem/engineering-solutions/expanders/data-resources/">data resources</a> are provided in an
expansion resource. Now the type of DataResources must be defined in the file containing the resource itself and
the <code>expanders-maven-plugin</code> will automatically pick this up. This reduces the complexity in defining DataResources
considerably.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="expansion-diff-tool">Expansion diff tool<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/06/15/june-2023-r&amp;d-update#expansion-diff-tool" class="hash-link" aria-label="Direct link to Expansion diff tool" title="Direct link to Expansion diff tool" translate="no">​</a></h2>
<p>We published the <a class="" href="https://foundation.stars-end.net/docs/tools/expansion-diff">expansion diff tool</a>, which can be used to
easily find the differences in code expanded from different versions of expanders. The tool takes in two files with
expansion settings, expands the project with both of them and then creates a diff between the expanded files.</p>]]></content:encoded>
            <category>presentation</category>
            <category>r&amp;d</category>
        </item>
        <item>
            <title><![CDATA[On the Use of Inheritance]]></title>
            <link>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/03/07/use-of-inheritance</link>
            <guid>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/03/07/use-of-inheritance</guid>
            <pubDate>Tue, 07 Mar 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[The technique of inheritance was introduced as an essential part of the object-oriented programming paradigm, aiming to]]></description>
            <content:encoded><![CDATA[<p>The technique of inheritance was introduced as an essential part of the object-oriented programming paradigm, aiming to
deliver more anthropomorphic code by mimicking the concept of ontological refinement. Just like a jet fighter is a
special type of an airplane, or a bird is a special type of animal, and a sparrow is a special type of bird, inheritance
was created to define classes as refinements of other classes. Such a subclass would inherit the member variables and
methods of a superclass, and extend it with more specific variables and methods for that particular refinement. The
notion of ontological refinement is strongly related to taxonomy, i.e., the practice and science of the
classification of things or concepts, including the underlying principles. Originally, taxonomy referred only to
classifying – or classifications of – organisms. This probably explains that the technique of inheritance in software
programming languages is often illustrated with examples of animals or plants.</p>
<p>However, the use of ontological refinement to define classes entails several issues, both on a conceptual and technical
level. First, taxonomies are essentially multi-dimensional, i.e., they can be based on multiple criteria. For example,
one could refine or categorize a human person based on gender, nationality, or age. Constructing a taxonomy tree based
on various criteria could lead to a combinatorial explosion, as nearly all combinations would be possible, e.g.,
<em>BelgianMaleChild</em> and <em>GermanFemaleAdult</em>. Another option would be to ignore the multi-dimensional nature of the taxonomy,
and to use a single primary criterion at a certain level. This approach could limit the anthropomorphic meaning of the
classes, as can be illustrated by the distinction between mammals and fish based on the procreation mechanism, e.g.,
whales and dolphins are no fish although their appearance and behavior is typical for fish. Therefore, it seems often
preferable to use references to external classes, such as gender, nationality and age, instead of using inheritance to
create subclasses based on taxonomy trees.</p>
<p>Second, the introduction of additional attributes does not always correspond with ontological refinement. Though it is
indeed true that a more specific concept exhibits in general more specific attributes, this is not the only mechanism.
For instance, a point in 3-dimensional space has an additional attribute with respect to a 2-dimensional point, but it
is a generalization instead of a refinement. It is not that rare that attributes of a general concept get default values
for more specific concepts and can therefore be omitted. In such cases, programmers are tempted to define the more
general concept as a subclass, which is once again detrimental to the anthropomorphic meaning of the classes.</p>
<p>Besides the underlying conceptual issues, the use of inheritance in a traditional object-oriented language creates
several technical issues in the context of software development. These issues are mainly related to the introduction of
technical coupling between the various classes. Every subclass in the inheritance tree has unrestricted access to the
variables and methods of the superclass(es). This coupling is essentially hidden, i.e., the inherited attributes and
methods cannot be seen in the class source code, and may be spread out over many classes across many inheritance levels.
The fact that modern IDE tools visualize inherited attributes and methods does not really change that. A simple typo can
remain invisible during compilation as the compiler may find an actual attribute or method with that name somewhere in
the inheritance hierarchy, resulting in the use of the wrong attribute or method. The fact that some languages do not
allow multiple inheritance and authors often advise to limit the number of levels in multilevel inheritance, is a clear
testimony to the dangers of this technical coupling.</p>
<p>We have often argued that the principle of separation of concerns implies that object-oriented classes cannot contain
both data and behavior from a functional point of view. A class needs to either represent data with some auxiliary
utility methods, or to represent a behavioral action with some auxiliary utility data attributes. Therefore, we need to
distinguish between data and behavior to further elaborate the preferred way to deal with inheritance or ontological
refinement.</p>
<p>For behavior functions or methods, we believe that the use of polymorphism is both appropriate and sufficient to provide
the required functionality. The mechanism enables the software engineer to provide a variety of implementations that may
represent ontological refinement, while realizing at the same time action version transparency for different versions
and variants. For instance, an <em>Encrypter</em> interface can encapsulate various specific ways of encrypting a message, while
a <em>Publisher</em> interface may be used as a common concept for different ways of message delivery. Every implementation class
can be passed in a way that makes the presence of the behavior explicit and allows the programmer to invoke that
behavior.</p>
<p>Concerning data attributes or references, we want to stress again that it is often preferable to use external taxonomy
entities to avoid the combinatorial explosion of inheritance trees due to the multi-dimensional nature of the
taxonomies. A person could for instance have separate taxonomy entities for gender, nationality, and age, or a car could
have separate taxonomy entities for the car brand, vehicle type, and propulsion type. Nevertheless, in many cases
ontological refinement could be preferable as a number of common attributes may reflect an important common notion or
concept that needs to be made explicit. For instance, a home could be an important concept with common attributes that
needs to be refined for a house or an apartment. Or a legal person, being a person or legal entity. We argue here once
again that the use of polymorphism is both appropriate and sufficient to support such a concept. By providing an
interface to represent the common concept, such as a home, the programmer is able to identify, handle, pass, and access
the various attributes of this common concept through all ontological refinements.</p>
<p>Information systems still use to a large extent relational databases. To support ontological refinement, we distinguish
traditionally three possible options for the database tables as reflected in the drawing below.</p>
<ol style="list-style-type:lower-alpha"><li>One super-table containing the union of all subclass attributes.</li><li>Dedicated tables for every subclass, duplicating the common attributes.</li><li>Main table with common attributes, and dedicated tables with specific attributes for subclasses.</li></ol>
<p>Option <strong>a</strong> does not have an explicit representation for the various subclasses, and would lead to lots of empty entries in
the various instance rows. Moreover, the introduction of new subclasses – and even new inheritance levels – would lead
to an ever expanding structure of the single table.</p>
<p>Option <strong>c</strong> seems to be the most efficient in terms of database columns or attributes. However, in terms of instances of
columns or attributes, it is not. With respect to option b, it requires for every subclass instance an additional type
attribute and link key. In addition, it would not be evident to assign an anthropomorphic name to the various dedicated
tables. And finally, the software dealing with the persistency data would have to perform some dereferencing logic to
retrieve all the attributes, which would not scale well with the introduction of new subclasses or inheritance levels.</p>
<p>Option <strong>b</strong> seems to have redundant columns for the common attributes, but has less redundancy and more efficiency in terms
of instances of database entries. It does not need dereferencing logic, and integrates easily with a polymorphism
implementation, where the common concept and attributes are represented as an interface. The fact that the refinement
relation is not explicit seems reasonable as the concept is only present in object-oriented classes and not in
relational databases.</p>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="237.5mm" height="577.89" viewBox="0 0 356.261 229.395"><path d="m214.938 146.5-41.687.067V120.71l-1.33-.157c-.73-.087-1.447-.23-1.591-.32-.145-.089-.195-.273-.11-.408.083-.136.579-.247 1.101-.247.887 0 .689-.172-2.992-2.599-2.168-1.43-4.844-3.327-5.946-4.217s-3.072-2.736-4.378-4.102c-1.708-1.786-2.69-3.09-3.499-4.644-.618-1.188-1.348-3.084-1.622-4.213s-.575-2.737-.668-3.574l-.17-1.521H2.327l.068-25.14.067-25.138 82.418-.002 82.417-.002.07 12.979c.052 10.039.142 13.005.396 13.097.18.066 3.543.652 7.472 1.304 3.929.651 8.87 1.421 10.98 1.711s6.04.765 8.731 1.055c2.693.291 7.098.711 9.79.934s7.752.583 11.245.801 10.22.576 14.949.795c4.73.22 11.813.52 15.742.666s7.918.267 8.864.267h1.72l-.794-.64c-.547-.441-.71-.727-.522-.918.188-.193.755.044 1.852.773.87.578 1.67 1.051 1.779 1.052.109 0 .198-6.935.198-15.411V47.479l41.606.056 41.606.056v57.038l-41.606.067-41.606.067V78.8l-1.84 1.006c-1.412.773-1.912.934-2.152.695s-.11-.435.556-.84l.867-.527-.898-.14c-.494-.076-3.399-.207-6.455-.292s-9.544-.328-14.42-.542c-4.874-.214-11.066-.51-13.758-.66s-7.514-.45-10.715-.668a615 615 0 0 1-10.319-.796c-2.474-.22-6.88-.698-9.79-1.063a476 476 0 0 1-10.45-1.45 388 388 0 0 1-8.769-1.444c-1.985-.361-3.74-.657-3.902-.657-.211 0-.294 3.283-.294 11.642v11.642h-14.475l.112 1.389c.06.764.4 2.435.754 3.713.353 1.278.896 2.826 1.205 3.44s1.07 1.832 1.691 2.71c.621.876 1.95 2.367 2.951 3.312s2.842 2.515 4.09 3.489 3.744 2.717 5.55 3.872c1.804 1.156 3.32 2.065 3.367 2.02.047-.046-.101-.445-.33-.887-.303-.586-.333-.854-.112-.99.167-.104.464.03.658.296.299.408.366-1.741.423-13.52l.069-14.004h83.235l.004 28.443.004 28.443zm-22.858-1.522h16.89v-9.26h-34.132v4.454c0 2.45.08 4.533.176 4.63.097.097 7.777.176 17.066.176m34.616 0h17.198v-9.26h-34.396v9.26zm23.02 0h5.29v-9.26h-10.583v9.26zm-57.818-10.054h17.071v-9.793l-17 .068-16.999.068-.072 4.829-.072 4.828zm34.798 0h17.198v-9.789h-34.396v9.789zm23.02 0h5.29v-9.789h-10.583v9.789zm-57.754-10.383 16.875-.068v-9.26H174.97l-.073 4.355c-.04 2.396-.013 4.51.059 4.698.106.277 3.384.33 17.006.275m34.734.064h17.198v-9.525h-34.396v9.525zm23.143 0h5.168v-9.536l-5.226.072-5.225.072-.073 4.355c-.04 2.396-.014 4.509.058 4.696.1.262 1.326.341 5.298.341m-57.808-11.112h16.944l-.069-11.179-.069-11.178H174.97l-.069 10.847c-.038 5.967-.012 10.997.058 11.179.1.26 3.753.33 17.071.33m-12.799-2.646c-.494 0-.952-.149-1.02-.33a1.14 1.14 0 0 1-.005-.662c.063-.182.403-.33.754-.33.412 0 .64-.153.64-.426 0-.322-.161-.385-.662-.26-.363.091-.661.053-.661-.086s.221-.322.492-.408c.27-.086.687-.08.926.01.311.12.434.496.434 1.33 0 1.145-.013 1.162-.898 1.162zm-.16-.264c.128 0 .311-.127.407-.283s.12-.336.054-.403c-.067-.066-.316-.046-.555.046-.238.09-.367.272-.286.403.08.13.251.236.38.236m2.667.264c-.391 0-.57-.286-.774-1.246-.178-.837-.178-1.41.001-1.745.257-.48.29-.476.829.103q.562.604.241.709c-.175.059-.32.454-.32.878 0 .425.12.772.265.772s.265.119.265.265c0 .145-.229.264-.508.264zm1.83 0c-.422 0-.529-.176-.529-.873 0-.48-.149-1.03-.33-1.224-.265-.28-.265-.375 0-.472.181-.066.33-.312.33-.546 0-.328.132-.283.584.203.387.415.476.662.265.733-.176.059-.32.454-.32.878 0 .425.12.772.265.772s.264.119.264.265c0 .145-.238.264-.529.264m1.309 0c-.168 0-.247-.493-.199-1.232.068-1.035.174-1.245.663-1.319.32-.048.65.021.731.154.083.133-.09.318-.383.411-.398.127-.533.4-.533 1.078 0 .5-.126.908-.28.908m2.13 0c-.145 0-.264-.595-.264-1.323 0-.727.12-1.323.265-1.323s.264.596.264 1.323c0 .728-.119 1.323-.264 1.323m2.047-.05-.988.082v-1.868c0-1.069.113-1.868.265-1.868.145 0 .264.286.264.637 0 .481.116.606.474.512.27-.07.69.115.974.43.399.44.45.7.25 1.273-.205.584-.438.735-1.24.802m.042-.48c.276 0 .578-.199.671-.443.095-.245 0-.614-.21-.825s-.512-.3-.672-.202c-.16.099-.29.47-.29.825 0 .457.147.646.501.646m3.115.53c-.485 0-.96-.08-1.058-.176-.097-.097-.176-.7-.176-1.339 0-.707.103-1.098.264-.998.146.09.265.573.265 1.073 0 .735.102.91.529.91s.53-.175.53-.91c0-.5.118-.984.264-1.073.163-.101.264.35.264 1.175v1.338zm2.475 0c-.346 0-.57-.225-.662-.661l-.264-1.28c-.07-.34.046-.847.257-1.125.349-.461.383-.465.39-.043.006.255.188.463.406.463s.397.12.397.265-.179.264-.397.264q-.397 0-.397.794t.397.794c.218 0 .397.119.397.264s-.236.265-.524.265m2.09 0c-.605 0-.846-.16-1.05-.697-.202-.53-.167-.847.145-1.323.225-.344.63-.626.9-.626s.638.177.817.394c.18.216.258.573.173.794-.084.22-.464.4-.845.4-.44 0-.65.12-.575.33.065.182.435.308.822.28.388-.027.636.062.551.199s-.507.25-.939.25m.022-1.587c.29 0 .529-.12.529-.265s-.238-.265-.53-.265c-.29 0-.529.12-.529.265s.238.265.53.265m4.233 1.57c-1.046 0-1.135-.042-.728-.351q.464-.352.463-1.439c0-.925-.069-1.06-.463-.913-.405.152-.418.118-.1-.273.2-.246.528-.447.728-.447.262 0 .364.382.364 1.36 0 .985.128 1.457.463 1.712.407.309.319.351-.727.351m-14.023-2.893a.265.265 0 0 1-.265-.265c0-.145.12-.265.265-.265s.265.12.265.265-.12.265-.265.265m-6.35-2.646c-.15 0-.265-.78-.265-1.812v-1.812l.852-.024c.47-.013 1.005.102 1.191.257.186.154.339.609.339 1.01 0 .4-.178.876-.396 1.057-.217.18-.634.266-.926.19-.422-.111-.53-.01-.53.497 0 .35-.12.637-.265.637m.991-1.638c.293-.056.464-.33.464-.743 0-.414-.17-.688-.464-.744-.255-.05-.535.098-.623.327a1.35 1.35 0 0 0 0 .833c.088.229.368.376.623.327m-2.687.58c-.36 0-.728-.12-.817-.265-.094-.15.085-.236.418-.198.32.036.63-.073.691-.243s-.135-.386-.434-.48c-.305-.097-.543-.4-.543-.693 0-.286.178-.588.397-.672.218-.083.605-.057.86.059.375.171.318.23-.308.315l-.771.103.75.598c.5.4.693.742.58 1.036-.094.246-.458.44-.823.44m5.57 0c-.326 0-.736-.143-.91-.318s-.318-.636-.318-1.026.177-.855.393-1.035.678-.255 1.027-.167c.348.087.696.398.772.69.12.457.01.533-.762.533-.625 0-.901.121-.901.396 0 .219.149.411.33.428.183.017.553.007.823-.022.294-.03.421.064.315.234-.097.158-.443.287-.77.287m-.022-1.588c.384 0 .606-.115.514-.265-.09-.145-.395-.264-.678-.264-.282 0-.513.119-.513.264s.305.265.677.265m2.813 1.583c-.246-.002-.575-.091-.731-.198s-.367-.42-.47-.695c-.109-.295-.017-.756.225-1.124.225-.343.637-.624.916-.624.28 0 .581.119.671.264.092.15-.12.265-.485.265-.357 0-.718.178-.801.397a1.3 1.3 0 0 0 0 .793c.083.219.444.397.8.397.366 0 .578.116.486.265-.09.145-.365.263-.611.26m1.537.004c-.145 0-.265-.595-.265-1.322s.12-1.323.265-1.323.265.595.265 1.323c0 .727-.12 1.322-.265 1.322m1.53-.793c-.062.566-.166.772-.268.529-.092-.218-.211-.844-.265-1.39-.053-.545-.002-.991.114-.991.117 0 .212-.242.212-.538 0-.295.184-.608.408-.694.225-.086.477-.088.56-.004.085.084-.06.366-.322.628-.45.45-.451.48-.012.565.415.08.422.136.068.53-.218.241-.441.856-.496 1.365zm1.513.793c-.343 0-.41-.244-.345-1.256.044-.692.2-1.257.345-1.257s.3.565.345 1.257c.065 1.012-.002 1.256-.345 1.256m2 0c-.264 0-.623-.171-.796-.38-.174-.21-.278-.704-.231-1.098s.277-.837.512-.984c.238-.15.648-.174.926-.057.452.191.437.227-.162.384-.468.121-.686.383-.745.89-.073.618.01.716.61.716.396 0 .625.114.532.265-.09.145-.38.264-.645.264m-5.043-3.175a.265.265 0 0 1-.265-.264.265.265 0 0 1 .53 0c0 .145-.12.264-.265.264m3.027 0c-.227 0-.338-.12-.246-.268.091-.148.277-.2.412-.117.136.084.247.205.247.269s-.186.116-.413.116m-3.056-2.38c-.177 0-.23-.251-.134-.635.088-.348-.019-1.059-.236-1.579s-.395-1.068-.395-1.218.11-.273.244-.273.322.357.418.794c.096.436.258.794.36.794s.32-.358.485-.794.423-.794.575-.794c.153 0-.013.768-.374 1.726-.357.95-.65 1.783-.65 1.852s-.131.126-.293.126m2.447-.156c-.125.078-.304.065-.397-.028s-.169-.904-.169-1.802v-1.633l.98-.037c.54-.02 1.074.11 1.187.288s.208.637.21 1.02c.002.382-.173.842-.39 1.021-.216.18-.573.258-.793.173-.271-.104-.4.01-.4.352 0 .278-.103.569-.228.646m.873-1.513c.154-.05.319-.41.365-.8.067-.565-.026-.707-.463-.707-.397 0-.547.17-.547.618 0 .34.082.699.182.799s.308.14.463.09m-13.483.61c-.198 0-.434-.12-.524-.265-.092-.15.13-.264.514-.264.372 0 .677-.111.677-.247s-.245-.325-.545-.42c-.369-.117-.518-.356-.463-.742.045-.314.303-.612.573-.664.27-.051.627.05.794.226.233.245.17.279-.27.146-.316-.095-.65-.05-.743.101s.135.413.507.583.676.514.676.766-.188.53-.418.62c-.23.088-.58.16-.778.16m3.16-.102c-.448.048-.954-.052-1.124-.223-.171-.17-.31-.763-.31-1.316s.111-1.005.248-1.005.286.447.33.992c.056.67.212.992.48.992.267 0 .423-.323.479-.992.055-.667.211-.992.477-.992.306 0 .377.279.315 1.228-.076 1.155-.13 1.233-.895 1.316m2.426.043c-.394-.032-.768-.112-.833-.176-.064-.065-.117-.932-.117-1.926 0-1.029.114-1.808.264-1.808.146 0 .265.298.265.662 0 .513.136.661.608.661.335 0 .752.143.927.317.174.175.317.637.317 1.026 0 .39-.161.843-.358 1.006s-.68.27-1.073.238m.33-.524c.255-.048.475-.387.523-.808.067-.578-.024-.726-.447-.726-.292 0-.605.12-.696.267s-.088.51.007.809c.1.318.354.507.612.458m2.585.583c-.186 0-.417-.08-.514-.177s-.176-.622-.176-1.168-.149-1.052-.331-1.126c-.265-.107-.265-.137 0-.154.182-.012.33-.2.33-.418s.12-.397.265-.397.265.17.265.378c0 .207.208.432.463.498.44.115.44.123 0 .152-.347.023-.463.263-.463.957 0 .662.117.926.412.926.227 0 .34.119.25.264s-.316.265-.501.265m7.827-.008c-.246-.004-.656-.13-.91-.278-.264-.153-.463-.583-.463-.997 0-.4.142-.87.317-1.045s.568-.318.873-.318.699.143.873.318c.175.174.318.472.318.661 0 .218-.347.344-.948.344-.64 0-.913.107-.84.33.06.183.429.37.82.416.392.046.644.195.56.33-.084.136-.354.243-.6.239m-.183-1.58c.364 0 .662-.109.662-.242 0-.134-.15-.295-.331-.358a1.15 1.15 0 0 0-.662.006c-.181.067-.33.228-.33.358s.297.236.661.236zm4.101 1.588c-.603 0-1.058-.127-1.058-.296 0-.163.363-.71.807-1.215s.76-1.058.702-1.226-.421-.301-.807-.295-.702-.082-.702-.194.3-.279.665-.37c.381-.096.832-.028 1.058.16.216.179.394.54.394.802s-.309.843-.685 1.29l-.685.815h.685c.376 0 .685.119.685.264s-.477.265-1.059.265m27.781 15.875h17.198v-22.49H209.5v22.49zm-12.311-2.646c-.604 0-.99-.146-1.093-.415-.088-.228-.054-.514.074-.635.128-.122.448-.263.71-.313.263-.05.465-.211.45-.357-.016-.145-.32-.242-.676-.215-.356.028-.647-.06-.647-.193 0-.134.316-.322.702-.42.518-.13.797-.048 1.059.31.195.268.355.881.355 1.363 0 .825-.053.875-.934.875m-.455-.269c.11-.002.36-.106.558-.231.25-.159.27-.282.066-.409-.161-.1-.412-.107-.558-.017-.145.09-.264.275-.264.412s.09.248.198.245m2.969.269c-.296 0-.584-.149-.64-.33-.055-.183-.16-.758-.232-1.28s-.035-1.104.082-1.293c.165-.268.349-.218.82.22.502.468.53.566.16.566-.32 0-.447.226-.447.794q0 .794.397.794c.218 0 .397.119.397.264s-.242.265-.537.265m1.918-.008c-.332.005-.65-.14-.705-.322-.056-.182-.16-.758-.233-1.28-.072-.522-.033-1.106.086-1.3.173-.28.315-.252.701.134.344.344.39.517.157.594-.18.06-.329.414-.329.786s.209.835.463 1.028c.429.325.418.352-.14.36m1.265.008c-.146 0-.265-.566-.265-1.257 0-1.154.055-1.26.662-1.295.364-.02.661.056.661.17s-.178.277-.397.361c-.249.096-.397.5-.397 1.087 0 .514-.119.934-.264.934m1.852 0c-.146 0-.265-.595-.265-1.323 0-.727.12-1.323.265-1.323s.265.596.265 1.323c0 .728-.12 1.323-.265 1.323m1.931 0h-.873v-1.852c0-1.058.114-1.852.265-1.852.145 0 .264.306.264.68 0 .545.099.647.502.52.292-.094.678.017.926.265.233.234.424.69.424 1.014s-.142.733-.317.908c-.175.174-.71.317-1.19.317m.249-.577c.326-.046.623-.263.661-.481.038-.219-.038-.563-.169-.766a.574.574 0 0 0-.661-.207c-.238.091-.424.464-.424.85 0 .562.11.673.593.604m3.154.577c-.708 0-1.096-.135-1.205-.418-.088-.23-.16-.76-.16-1.176s.119-.83.264-.92c.16-.098.265.262.265.91 0 .887.09 1.075.513 1.075.395 0 .532-.214.595-.932.046-.512.202-.959.347-.992.146-.033.3.505.345 1.196l.081 1.257zm2.339 0c-.427 0-.53-.176-.53-.91 0-.501-.107-.977-.239-1.059-.138-.085-.11-.42.064-.79l.303-.644.52.559c.354.38.419.593.201.665-.175.059-.32.454-.32.878 0 .425.12.772.265.772s.265.119.265.264-.238.265-.53.265m2.434 0c-.407 0-.884-.143-1.058-.317s-.318-.647-.318-1.05c0-.465.196-.836.54-1.02.296-.158.761-.217 1.033-.131s.566.342.653.568c.086.225.09.519.009.651-.082.132-.5.24-.927.24s-.778.107-.778.237.178.305.396.389c.219.083.576.083.794 0 .218-.084.397-.021.397.14s-.333.293-.74.293zm-.185-1.587c.394 0 .622-.114.529-.265-.09-.146-.328-.265-.53-.265-.2 0-.438.12-.528.265-.093.15.134.265.529.265m4.116 1.587c-.59 0-1.073-.072-1.073-.16s.303-.521.675-.963.639-1.053.595-1.36c-.059-.412-.238-.538-.675-.477-.328.046-.595-.044-.595-.198s.109-.282.242-.282c.134 0 .416-.066.628-.147.211-.081.578.046.815.283s.431.592.431.79c0 .196-.308.723-.685 1.17-.647.77-.655.815-.148.815.296 0 .611.119.7.264.1.16-.26.265-.91.265m-14.038-2.91a.265.265 0 0 1-.265-.265c0-.145.12-.265.265-.265s.265.12.265.265-.12.265-.265.265m-6.085-2.646c-.151 0-.265-.779-.265-1.807v-1.807l.913.03c.502.017.998.115 1.102.22.105.104.19.556.19 1.006s-.169.927-.375 1.062c-.206.134-.583.194-.838.133-.343-.082-.463.054-.463.526 0 .35-.119.637-.264.637m.793-1.588c.412 0 .53-.176.53-.793 0-.618-.118-.794-.53-.794-.411 0-.529.176-.529.794 0 .617.118.793.53.793m-2.712.48c-.428.05-.727-.043-.727-.226 0-.17.16-.25.354-.174.196.075.517.036.714-.086.271-.168.185-.302-.355-.547-.405-.185-.713-.54-.713-.82 0-.273.178-.564.397-.648.218-.084.605-.059.86.055.406.182.39.22-.133.311-.327.058-.595.207-.595.333s.245.306.544.401c.37.118.519.357.463.746-.057.402-.298.597-.809.656m5.575.045c-.244.002-.63-.183-.86-.411-.228-.229-.415-.637-.415-.907s.187-.679.416-.908.621-.415.873-.415c.251 0 .6.142.775.317.174.175.317.472.317.662 0 .216-.343.344-.926.344-.51 0-.926.113-.926.25 0 .14.195.362.434.496.24.133.686.188.993.122.454-.098.484-.068.16.163-.218.156-.596.285-.84.287m-.1-1.583c.372 0 .677-.12.677-.265s-.231-.264-.514-.264c-.282 0-.587.119-.677.264-.092.15.13.265.514.265m2.81 1.587c-.264 0-.623-.171-.797-.38-.174-.21-.278-.704-.23-1.098.046-.395.277-.837.512-.984.238-.15.647-.174.926-.057.452.191.437.227-.163.384-.467.121-.686.383-.745.89-.072.618.011.716.61.716.397 0 .625.114.532.265-.09.145-.38.264-.645.264m1.571 0c-.146 0-.265-.528-.265-1.175 0-.646.12-1.248.265-1.338.163-.1.265.35.265 1.175 0 .736-.12 1.338-.265 1.338m1.588 0c-.146 0-.265-.452-.265-1.005s-.143-1.148-.318-1.323c-.247-.247-.247-.317 0-.317.175 0 .318-.242.318-.538 0-.295.187-.609.415-.696.228-.088.55-.025.714.14.223.223.185.3-.15.3-.247 0-.45.178-.45.397 0 .218.143.397.318.397.247 0 .247.07 0 .317-.175.175-.318.77-.318 1.323s-.119 1.005-.264 1.005m1.587 0c-.146 0-.265-.595-.265-1.322s.12-1.323.265-1.323.265.595.265 1.323c0 .727-.12 1.322-.265 1.322m2.022 0c-.326 0-.736-.142-.91-.317s-.318-.583-.318-.907.187-.777.416-1.006.638-.415.91-.415.563.11.647.246-.177.285-.58.33c-.582.068-.732.22-.732.747 0 .525.15.678.732.745.403.046.664.195.58.33-.084.136-.42.247-.745.247m-5.213-3.175c-.154 0-.206-.119-.116-.264s.216-.265.28-.265.117.12.117.265-.126.264-.28.264m3.191 0a.265.265 0 0 1-.265-.264.265.265 0 0 1 .53 0c0 .145-.12.264-.265.264m-3.199-2.38c-.138 0-.18-.282-.094-.625s-.03-1.072-.26-1.62c-.228-.547-.416-1.1-.416-1.228a.24.24 0 0 1 .244-.232c.135 0 .39.439.566.974l.322.975.388-.975c.214-.535.508-.974.654-.974.145 0 .182.208.08.463-.1.255-.419 1.088-.708 1.852s-.638 1.39-.776 1.39m2.405-.133c-.166.103-.264-.504-.264-1.638v-1.802l.932-.066c.766-.055.983.049 1.227.584.24.525.208.787-.16 1.349-.311.475-.618.655-.963.564-.365-.095-.507.005-.507.357 0 .268-.12.562-.265.652m.91-1.536c.154-.051.319-.41.365-.8.067-.565-.026-.707-.463-.707-.397 0-.547.17-.547.618 0 .34.082.699.182.799s.308.14.463.09m-13.147.561c-.4.046-.727-.043-.727-.198s.238-.282.529-.282c.29 0 .529-.105.529-.233 0-.127-.259-.404-.575-.614-.378-.25-.517-.535-.406-.826.098-.254.458-.444.84-.444.369 0 .67.124.67.276s-.196.241-.435.199c-.24-.043-.483.056-.54.219s.148.363.456.444c.406.106.537.316.474.76-.063.448-.286.638-.815.7m2.88-.004c-.49.019-.967-.041-1.059-.133s-.167-.69-.167-1.33c0-.707.103-1.098.265-.998.145.09.264.582.264 1.093 0 .743.093.912.463.842.324-.06.488-.385.545-1.077.045-.545.194-.99.331-.99s.249.576.249 1.28c0 1.27-.007 1.28-.892 1.313m2.48-.024-.795-.056v-1.918c0-1.103.112-1.918.264-1.918.145 0 .265.34.265.757 0 .662.081.741.653.632.51-.098.722.025.964.555.253.555.23.801-.124 1.342-.323.492-.636.647-1.228.606m.408-.453c.177 0 .376-.208.442-.463.066-.254.07-.612.01-.793-.062-.182-.34-.331-.62-.331-.354 0-.506.185-.506.617 0 .34.08.697.176.794.097.097.321.176.498.176zm2.665.53c-.2 0-.487-.15-.637-.331s-.295-.748-.323-1.257c-.029-.51-.04-1.134-.025-1.39.015-.254.146-.462.291-.462.146 0 .265.179.265.397s.208.4.463.405c.44.008.44.02 0 .277-.255.149-.463.566-.463.927 0 .36.179.725.397.809.218.083.397.258.397.388s-.164.236-.365.236m7.461-.005c-.244.002-.631-.183-.86-.411-.228-.229-.415-.594-.415-.811s.123-.626.273-.908c.151-.281.544-.511.874-.511s.742.143.916.317.318.472.318.662c0 .216-.341.344-.918.344-.707 0-.883.09-.765.397.09.234.491.398.983.4.635.003.738.065.435.261a1.9 1.9 0 0 1-.84.26m.047-1.583c.341 0 .529-.134.463-.33a.52.52 0 0 0-.463-.331.52.52 0 0 0-.463.33c-.065.197.122.331.463.331m4.117 1.588c-.663 0-1.206-.067-1.206-.148 0-.082.372-.611.827-1.177.526-.655.766-1.19.658-1.47-.116-.303-.375-.401-.827-.315-.362.07-.658.025-.658-.097 0-.123.299-.298.665-.39.381-.095.832-.027 1.058.16.216.18.393.54.393.803 0 .262-.308.843-.684 1.29l-.685.814h.669c.368 0 .743.12.833.265.1.162-.306.265-1.043.265m15.724 15.875h5.295V90.992l-5.226.071-5.225.072-.07 11.179-.068 11.178zm-1.055-15.875a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .145-.12.265-.265.265m1.19 0c-.055 0-.174-.12-.264-.265s.029-.265.264-.265.355.12.265.265-.209.265-.265.265m1.191 0a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .145-.12.265-.265.265m27.252 5.291h16.933v-9.26h-33.866v9.26zm34.66 0h17.198v-9.26h-34.395v9.26zm23.29 0h5.298l-.072-4.564-.073-4.564-5.225-.072-5.226-.071v9.271zM26.274 93.12h22.093v-9.525H4.182v9.525zm45.178 0h22.424v-9.525H49.184l-.078 4.763-.077 4.763zm30.223 0h7.282v-9.534l-7.21.07-7.21.071-.072 4.697-.073 4.696zm23.157 0h15.081v-9.525h-30.162v9.525zm21.525 0h5.65l.175-3.241c.096-1.783.247-3.926.335-4.763l.162-1.521h-11.972v9.525zm13.009 0h6.488l-.072-4.696-.072-4.697-5.997-.07-5.997-.072-.152.733c-.083.402-.272 2.042-.419 3.643s-.267 3.416-.267 4.034v1.125zm118.924 0h16.933V83.066h-33.866V93.12zm34.785 0h17.073V83.062l-17.131.068-17.132.068-.073 4.621c-.04 2.542-.014 4.774.058 4.961.105.272 3.54.34 17.205.34m23.093-.06 5.225-.072v-9.79l-5.225-.071-5.226-.072V93.13zM26.274 83.065h22.093v-9.79H4.182v9.79zm45.178 0h22.424v-9.793l-22.37.068-22.37.067-.054 4.83-.053 4.828zm30.229 0h7.276v-9.79H94.405v9.79zm23.217 0h15.147l-.077-4.895-.077-4.895h-30.14v9.79zm-10.385-2.646c-.702 0-1.058-.118-1.058-.35 0-.194.297-.631.661-.973s.662-.912.662-1.268c0-.549-.101-.626-.672-.517-.424.08-.636.019-.575-.168.054-.163.363-.335.687-.382.324-.048.76.056.971.23s.382.5.382.723c0 .224-.303.804-.675 1.291l-.674.885h.674c.372 0 .675.119.675.264s-.476.265-1.058.265m32.25 2.646h6.056l.152-.86c.083-.473.287-1.664.453-2.646.204-1.209.421-1.786.671-1.786.204 0 .368.209.365.463-.003.255-.165 1.445-.36 2.646l-.355 2.183h12.098v-9.79h-25.136v9.79zm131.527-.53h16.933v-9.26h-33.866v9.26zm34.66 0h17.198v-9.26h-34.395v9.26zm23.29 0h5.298l-.072-4.563-.073-4.564-5.225-.072-5.226-.072v9.272zM26.208 72.683l22.027-.067.072-4.697.072-4.696H4.181v9.528zm45.31.065h22.358V63.22l-22.371.068-22.371.067.007 4.564c.003 2.51.01 4.624.013 4.697.004.072 10.068.132 22.364.132m30.287 0h7.152v-9.533l-7.21.07-7.21.07-.073 4.356c-.04 2.395-.014 4.509.058 4.696.102.267 1.691.341 7.283.341m23.16 0c8.173 0 14.91-.05 14.97-.11s.075-2.203.032-4.762l-.078-4.653H109.75v4.586c0 2.523.08 4.666.177 4.763s6.864.176 15.037.176m-10.32-2.91c-.509 0-.926-.107-.926-.237s.179-.304.397-.388c.264-.101.397-.517.397-1.237 0-1.003-.045-1.07-.595-.9-.59.185-.591.181-.092-.378.278-.31.665-.565.86-.565.259 0 .356.435.356 1.588 0 .882.118 1.587.265 1.587.145 0 .264.12.264.265s-.416.265-.926.265m38.563 2.846 12.502-.068v-1.588l-4.724-.975c-2.598-.536-4.764-1.016-4.814-1.066s0-.237.11-.415c.153-.248 1.28-.106 4.793.603 2.526.51 4.635.927 4.688.927s.062-1.518.021-3.373l-.074-3.374-12.502-.068-12.501-.069v9.535zm141.95-1.058c.036.035.065-4.996.065-11.181V49.199h-33.866V71.42l16.867.07c9.277.039 16.897.1 16.933.135m-29.434-2.633c-.654.024-1.001-.097-1.114-.392-.099-.257.03-.57.326-.786.27-.197.647-.359.837-.359s.346-.119.346-.264-.149-.278-.33-.295a8 8 0 0 0-.86-.003c-.47.024-.46-.007.088-.285.437-.22.748-.23 1.059-.036.262.164.472.702.52 1.33.078 1.043.068 1.055-.872 1.09zm-.134-.478c.291 0 .53-.12.53-.265s-.239-.264-.53-.264c-.29 0-.529.119-.529.264s.238.265.53.265m2.542.529c-.185 0-.416-.08-.513-.177s-.177-.622-.177-1.168-.148-1.052-.33-1.126c-.265-.106-.265-.137 0-.154.181-.012.33-.2.33-.418s.12-.397.265-.397.264.179.264.397c0 .247.25.397.662.397.411 0 .661-.15.661-.397 0-.218.12-.397.265-.397s.264.179.264.397.209.4.463.405c.441.008.441.021 0 .278-.275.16-.463.586-.463 1.05 0 .558.129.78.45.78.335 0 .374.077.15.3-.165.165-.486.229-.714.141-.283-.109-.415-.503-.415-1.244 0-.974-.06-1.077-.595-1-.456.064-.615.285-.678.944-.063.65.021.86.346.86.236 0 .356.119.266.264s-.315.265-.5.265m3.279 0c-.146 0-.265-.588-.265-1.307 0-1.27.02-1.305.728-1.221.4.048.787.107.86.133s-.136.155-.463.286c-.46.185-.595.452-.595 1.174 0 .514-.12.935-.265.935m1.852 0c-.145 0-.265-.595-.265-1.323s.12-1.323.265-1.323.265.595.265 1.323-.12 1.323-.265 1.323m1.91-.056-.852-.025v-1.944c0-1.12.113-1.944.265-1.944.145 0 .265.346.265.77 0 .639.089.745.53.63.292-.077.709.008.926.189.218.18.396.656.396 1.057s-.153.855-.339 1.01c-.186.154-.722.27-1.19.257m.404-.523c.293-.057.464-.33.464-.744 0-.413-.17-.687-.464-.744-.255-.049-.535.099-.623.328a1.35 1.35 0 0 0 0 .832c.088.23.368.377.623.328m3.136.5c-.495.014-1.03-.106-1.19-.266s-.291-.743-.291-1.296.112-1.005.248-1.005c.137 0 .286.447.331.992.065.789.19.992.611.992.42 0 .546-.203.612-.992.045-.545.194-.992.33-.992.137 0 .249.572.249 1.27 0 1.264-.005 1.271-.9 1.297m2.384.079c-.186 0-.417-.08-.514-.176-.097-.097-.176-.55-.176-1.006s-.143-.972-.318-1.146c-.247-.247-.247-.318 0-.318.175 0 .318-.179.318-.397s.119-.397.264-.397.265.17.265.378c0 .207.208.432.463.498.441.116.441.123 0 .152-.347.023-.463.263-.463.957 0 .662.117.926.412.926.227 0 .34.119.25.264s-.316.265-.501.265m2.067 0c-.439 0-.75-.217-.953-.662-.226-.494-.226-.828 0-1.322.195-.43.517-.662.915-.662.338 0 .757.143.932.318.175.174.318.472.318.661 0 .218-.347.344-.949.344-.64 0-.912.107-.839.33.06.183.429.37.82.416.392.046.643.195.56.33-.084.136-.446.247-.804.247m-.011-1.588c.381 0 .693-.106.693-.236s-.17-.301-.377-.381c-.208-.08-.52.027-.694.236-.262.316-.197.381.378.381m4.117 1.588c-.648 0-1.009-.105-.91-.265.09-.145.335-.264.545-.264.276 0 .38-.333.38-1.209 0-1.13-.038-1.197-.594-1.03l-.596.177.569-.589c.313-.323.7-.507.86-.408s.291.827.291 1.62c0 .79.12 1.439.265 1.439s.264.119.264.264-.483.265-1.074.265m-14.007-3.175a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m-6.085-2.514c-.167.104-.265-.526-.265-1.704v-1.867h.932c.733 0 .995.138 1.228.65.239.524.207.786-.16 1.348-.312.476-.619.655-.964.565-.364-.095-.507.005-.507.356 0 .269-.119.562-.264.652m.828-1.455c.116 0 .319-.208.45-.463.13-.255.184-.612.119-.794-.065-.181-.347-.33-.626-.33-.355 0-.507.185-.507.617 0 .34.08.697.177.794a.65.65 0 0 0 .387.176m-2.697.53c-.265 0-.555-.12-.645-.265s.082-.265.381-.265c.3 0 .545-.104.545-.232s-.259-.404-.575-.615c-.378-.25-.517-.534-.406-.826.098-.253.458-.443.84-.443.369 0 .67.131.67.292s-.167.23-.37.15c-.205-.077-.446-.067-.537.023-.09.091.162.426.562.745.627.5.678.638.371 1.007-.195.236-.572.428-.836.428m5.425 0c-.203 0-.567-.303-.81-.673-.357-.545-.383-.798-.136-1.34.248-.545.46-.652 1.162-.584.657.063.878.222.942.678.074.521-.032.595-.851.595-.749 0-.904.085-.774.423.117.305.371.38.917.271.416-.083.756-.048.756.078 0 .127-.188.302-.418.39s-.585.161-.788.161m0-1.629c.243-.05.435-.21.427-.356s-.153-.265-.322-.265c-.17 0-.362.16-.428.356-.074.223.047.322.323.265m3.003 1.575c-.225.044-.602-.113-.838-.35-.236-.235-.429-.694-.429-1.018s.143-.732.318-.907c.174-.175.584-.317.91-.317s.662.11.745.246c.084.136-.177.285-.58.33-.581.068-.731.22-.731.746 0 .519.13.657.602.64.332-.012.56.107.508.265-.053.157-.28.322-.505.365m1.68-.102c-.125.078-.303.065-.396-.028s-.17-.685-.17-1.316c0-.843.106-1.147.397-1.147.294 0 .397.307.397 1.175 0 .647-.102 1.239-.227 1.316m1.286.023c-.162.1-.265-.306-.265-1.043 0-.786-.115-1.207-.33-1.21-.238-.003-.246-.06-.031-.198.165-.107.345-.433.4-.724.062-.333.343-.557.758-.603.604-.068.62-.044.195.294-.254.202-.463.493-.463.647s.149.34.33.413c.266.107.266.137 0 .154-.204.013-.33.417-.33 1.064 0 .573-.119 1.116-.264 1.206m1.587.132c-.145 0-.264-.595-.264-1.323 0-.727.119-1.323.264-1.323s.265.596.265 1.323c0 .728-.12 1.323-.265 1.323m1.85 0c-.124 0-.412-.187-.64-.415-.229-.23-.416-.594-.416-.812 0-.217.123-.625.274-.907.154-.288.552-.512.91-.512.35 0 .71.12.8.265.093.15-.132.265-.522.265-.377 0-.754.18-.839.4s-.004.58.178.8c.191.23.54.333.824.243.27-.086.492-.042.492.098s-.189.326-.419.415-.52.16-.643.16m-4.893-3.175c-.218 0-.396-.119-.396-.264s.178-.265.396-.265.397.12.397.265-.178.264-.397.264m3.043 0a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.12.264-.265.264m-3.054-2.646c-.184 0-.264-.252-.194-.616.065-.34-.07-1.068-.301-1.62s-.42-1.048-.42-1.103.126-.1.279-.1.413.386.577.857l.299.857.35-.857c.192-.471.478-.857.635-.857s.224.149.15.33c-.075.183-.345.956-.6 1.72s-.604 1.39-.775 1.39m2.26 0c-.149 0-.264-.75-.264-1.72 0-1.308.09-1.72.375-1.72.206 0 .555-.068.774-.152.249-.095.57.108.853.54.365.558.396.82.158 1.344-.201.44-.512.65-.964.65-.49 0-.667.14-.667.53 0 .29-.12.528-.265.528m.802-1.587c.296 0 .607-.18.691-.4.085-.22.013-.57-.16-.778-.172-.208-.483-.313-.69-.233-.208.08-.378.43-.378.778 0 .46.147.633.537.633m-13 .53c-.422 0-.766-.109-.766-.24 0-.133.224-.182.5-.11.274.072.579 0 .676-.157.102-.164-.114-.4-.499-.546-.372-.142-.677-.425-.677-.629s.177-.518.393-.697a.84.84 0 0 1 .86-.118c.412.183.397.22-.129.312-.327.057-.595.215-.595.35 0 .136.11.247.246.247.135 0 .427.182.65.404.222.223.337.58.255.794-.084.218-.485.39-.915.39m2.85 0c-.485 0-.962-.08-1.059-.177s-.176-.633-.176-1.19c0-.559.12-1.015.265-1.015s.264.397.264.882.071.953.158 1.04.325.094.53.016c.217-.084.37-.514.37-1.04 0-.494.12-.898.265-.898s.265.536.265 1.19c0 1.174-.013 1.191-.882 1.191m2.549 0h-.874v-1.853c0-1.058.114-1.852.265-1.852.146 0 .265.306.265.68 0 .546.098.647.5.52.294-.093.679.017.927.265.234.234.425.69.425 1.015s-.143.732-.318.907c-.174.174-.71.317-1.19.317m.648-.598c.182-.144.33-.402.33-.573s-.133-.445-.296-.608c-.164-.164-.461-.234-.662-.157-.2.077-.364.415-.364.75 0 .337.148.665.33.73.182.066.48.002.662-.142m2.183.597c-.31 0-.548-.191-.575-.463-.025-.255-.059-.642-.076-.86a2.1 2.1 0 0 0-.266-.778c-.151-.245-.124-.418.078-.486.172-.057.245-.213.163-.346s.007-.242.2-.242c.191 0 .497.238.679.53.196.313.222.528.064.528-.147 0-.267.358-.267.794s.119.794.264.794.265.12.265.265-.238.264-.53.264m7.666 0c-.503 0-.868-.186-1.057-.539-.159-.297-.214-.773-.124-1.059s.395-.642.676-.793c.355-.19.674-.187 1.04.01.292.156.53.517.53.803 0 .421-.182.52-.959.52-.839 0-.915.052-.614.414.223.27.566.358.98.254.408-.102.576-.06.467.115-.093.152-.516.276-.939.276zm.006-1.587c.494 0 .565-.07.318-.318-.247-.247-.388-.247-.635 0s-.177.318.317.318m4.234 1.571c-.936 0-1.092-.058-.728-.27.334-.194.463-.606.463-1.48 0-1.045-.054-1.164-.397-.88-.218.181-.397.22-.397.086 0-.135.143-.387.318-.562.174-.175.472-.317.661-.317.24 0 .344.435.344 1.442 0 1.094.112 1.507.463 1.711.364.212.208.27-.727.27m44.648 16.092c.036.035.066-4.996.066-11.181V49.199h-34.396V71.42l17.132.07c9.423.039 17.162.1 17.198.135m-29.272-2.64c-.435.011-.942-.162-1.128-.386-.28-.338-.252-.47.166-.775.277-.203.66-.369.85-.369s.346-.119.346-.264-.321-.265-.714-.265c-.514 0-.634-.08-.428-.287.158-.158.569-.247.913-.198.54.076.637.255.705 1.305.077 1.186.06 1.216-.71 1.238m-.31-.471c.299 0 .544-.12.544-.265s-.172-.264-.381-.264-.455.119-.545.264.082.265.381.265m2.678.529c-.28 0-.571-.208-.645-.463s-.155-.82-.179-1.257a14 14 0 0 1-.015-1.257c.015-.254.147-.463.292-.463.146 0 .265.179.265.397s.208.4.463.405c.441.008.441.021 0 .278-.255.148-.463.565-.463.926s.179.725.397.81c.218.083.397.258.397.388s-.23.236-.512.236m2 0c-.201 0-.488-.149-.637-.33-.15-.183-.296-.748-.324-1.258-.028-.509-.04-1.134-.025-1.389.015-.254.146-.463.292-.463.145 0 .264.179.264.397s.209.4.463.405c.441.008.441.021 0 .278-.254.148-.463.565-.463.926s.179.725.397.81c.218.083.397.258.397.388s-.164.236-.365.236m1.158 0c-.146 0-.265-.577-.265-1.283 0-1.244.024-1.283.794-1.305.436-.012.794.075.794.194 0 .118-.239.278-.53.354-.405.106-.529.36-.529 1.09 0 .522-.119.95-.264.95m2.116 0c-.145 0-.264-.595-.264-1.323s.119-1.323.264-1.323.265.595.265 1.323-.12 1.323-.265 1.323m1.786-.09c-.723-.042-.727-.053-.727-1.976 0-1.222.097-1.874.264-1.77.146.09.265.46.265.824 0 .378.114.591.267.497.147-.09.504-.09.793.002.387.123.527.4.527 1.043 0 .482-.149.999-.33 1.15s-.659.254-1.059.23zm.331-.44c.412 0 .53-.176.53-.793s-.118-.794-.53-.794-.53.177-.53.794.118.794.53.794m3.077.478c-.49.018-.966-.042-1.058-.134s-.167-.683-.167-1.313c0-.631.12-1.147.265-1.147s.264.485.264 1.078c0 .883.084 1.062.463.99.324-.061.488-.386.545-1.078.046-.544.194-.99.331-.99s.249.576.249 1.28c0 1.27-.007 1.28-.892 1.314m2.497.052c-.281 0-.572-.208-.646-.463s-.154-.82-.178-1.257a14 14 0 0 1-.016-1.257c.016-.254.147-.463.293-.463.145 0 .265.179.265.397s.208.4.463.405c.44.008.44.021 0 .278-.276.16-.463.586-.463 1.05q0 .779.396.78c.219 0 .397.12.397.265s-.23.265-.511.265m1.964 0c-.196 0-.544-.187-.772-.416-.229-.229-.416-.637-.416-.907s.187-.678.416-.907.621-.416.873-.416c.251 0 .6.143.775.318.174.174.317.472.317.661 0 .218-.346.344-.948.344-.64 0-.913.107-.839.33.06.183.517.393 1.014.467.712.107.802.178.42.331-.266.107-.644.195-.84.195m-.03-1.588c.382 0 .694-.106.694-.236s-.17-.301-.377-.381c-.208-.08-.52.027-.694.236-.262.316-.197.381.377.381m4.282 1.588c-.664 0-1.207-.105-1.207-.232 0-.128.187-.387.415-.576.228-.19.59-.684.804-1.099s.313-.88.218-1.033c-.094-.153-.456-.207-.804-.12-.351.089-.633.042-.633-.105 0-.146.3-.34.665-.431.382-.096.833-.028 1.059.16.216.179.393.54.393.802s-.308.843-.685 1.29l-.685.815h.67c.368 0 .742.119.832.264.1.162-.306.265-1.042.265m-13.907-3.175a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m-6.35-2.646c-.148 0-.264-.736-.264-1.68v-1.679l.852-.024c.468-.014 1.004.102 1.19.257.187.154.339.555.339.89 0 .336-.196.807-.436 1.047s-.657.379-.926.308c-.35-.091-.49.016-.49.377 0 .277-.12.504-.265.504m.9-1.323c.213 0 .463-.237.555-.527s.093-.647.003-.793-.34-.267-.555-.267c-.214 0-.458.178-.542.397a1.3 1.3 0 0 0 0 .793c.084.219.327.397.54.397zm-2.79.53c-.252 0-.533-.12-.623-.265-.093-.15.13-.265.513-.265.373 0 .677-.1.677-.222s-.306-.362-.68-.532c-.426-.194-.648-.482-.593-.77.052-.276.377-.494.813-.544.399-.046.725.04.725.19s-.167.21-.37.132c-.204-.078-.449-.015-.544.14-.096.154.13.42.502.59s.677.443.677.609-.143.444-.318.619a1.27 1.27 0 0 1-.778.317m5.447 0c-.203 0-.547-.271-.763-.602-.22-.336-.326-.862-.24-1.193.087-.33.435-.663.785-.75.346-.088.808-.09 1.026-.006.219.084.398.395.398.69 0 .424-.172.538-.816.538-.537 0-.777.113-.702.33.063.182.43.327.816.32.386-.005.702.072.702.171s-.189.253-.419.341-.584.16-.787.16zm.147-1.588c.342 0 .53-.134.464-.33a.52.52 0 0 0-.464-.332.52.52 0 0 0-.463.331c-.065.197.122.33.463.33m2.644 1.587c-.124 0-.412-.187-.64-.415-.229-.23-.416-.594-.416-.812 0-.217.123-.625.274-.907.154-.288.552-.512.91-.512.35 0 .71.12.8.265.093.15-.124.265-.498.265-.363 0-.735.12-.826.267-.09.146-.087.514.009.816.135.424.32.513.81.39.35-.089.637-.052.637.08 0 .134-.188.314-.418.403-.23.088-.52.16-.643.16zm1.854 0c-.145 0-.264-.595-.264-1.323 0-.727.119-1.323.264-1.323s.265.596.265 1.323c0 .728-.12 1.323-.265 1.323m1.536-1.124c-.044.691-.163 1.13-.264.975s-.21-.81-.241-1.455c-.032-.646.03-1.442.135-1.77.124-.38.4-.592.77-.586.52.007.531.035.115.277-.255.149-.463.434-.463.634s.208.42.463.486c.42.11.42.124.015.151-.342.024-.468.33-.53 1.288m1.551 1.124c-.048 0-.167-.08-.264-.176-.097-.097-.177-.692-.177-1.323 0-.63.12-1.147.265-1.147s.264.596.264 1.323c0 .728-.04 1.323-.088 1.323m2.003-.05c-.359.053-.709-.147-.979-.56-.321-.49-.358-.805-.155-1.338.187-.493.456-.697.917-.697.359 0 .726.119.816.264.092.15-.122.265-.492.265-.36 0-.708.149-.773.33s-.008.545.126.807c.17.33.412.423.79.303.389-.124.51-.071.426.186-.065.197-.37.395-.676.44m-5.09-3.125a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.12.264-.265.264m2.91 0a.265.265 0 0 1-.264-.264.265.265 0 0 1 .53 0c0 .145-.12.264-.265.264m-2.96-2.645c-.137 0-.18-.222-.093-.493.086-.271-.08-1.042-.367-1.712-.307-.717-.418-1.284-.27-1.376.139-.085.371.157.516.54.146.381.264.805.264.941s.12.247.265.247.266-.208.269-.463c.003-.254.114-.638.25-.852.135-.214.328-.307.428-.207s-.086.9-.415 1.778-.71 1.597-.847 1.597m2.167 0c-.149 0-.265-.74-.265-1.69 0-1.622.028-1.694.711-1.824.391-.075.869-.076 1.06-.002.193.074.427.437.52.807s.05.863-.095 1.095c-.146.233-.58.46-.965.506-.488.058-.701.24-.701.596 0 .28-.12.511-.265.511zm.988-1.638c.254-.048.503-.308.555-.576.052-.269-.037-.62-.197-.78-.212-.212-.409-.174-.723.14-.244.245-.358.62-.263.868.092.24.375.397.628.348m-13.095.53c-.51.05-.858-.038-.858-.216 0-.175.212-.233.507-.139.28.089.576.05.66-.085.083-.136-.145-.441-.507-.679-.363-.237-.66-.544-.66-.68 0-.138.241-.379.535-.536s.672-.201.84-.098c.193.12.07.276-.337.429l-.64.24.743.395c.453.24.71.568.66.84-.055.286-.392.476-.943.529m2.758.05c-.485 0-.96-.08-1.058-.177-.097-.097-.176-.633-.176-1.19 0-.559.119-1.015.264-1.015s.265.417.265.926c0 .75.1.926.53.926.427 0 .528-.176.528-.926 0-.51.12-.926.265-.926s.264.536.264 1.19c0 1.174-.013 1.191-.882 1.191m2.55 0h-.874v-1.853c0-1.058.114-1.852.265-1.852.145 0 .264.306.264.68 0 .546.099.647.502.52.292-.093.678.017.926.265.233.234.424.69.424 1.015s-.142.732-.317.907c-.175.174-.71.317-1.19.317m.493-.53c.338 0 .485-.196.485-.646 0-.355-.108-.713-.24-.794-.133-.082-.43-.077-.662.012a.71.71 0 0 0-.42.618c0 .252.079.537.176.634s.394.176.661.176m2.337.53c-.439 0-.529-.177-.529-1.037 0-.57-.11-1.076-.246-1.125-.135-.048-.082-.31.119-.583.35-.476.383-.477.839-.021.338.338.38.505.146.583-.18.06-.329.457-.329.881 0 .425.12.772.265.772s.264.12.264.265-.238.264-.529.264m7.99 0c-.407 0-.883-.144-1.058-.318-.174-.175-.317-.583-.317-.907s.187-.777.416-1.006.579-.416.778-.416.544.258.764.573.34.672.264.793c-.075.122-.497.222-.937.222-.526 0-.76.113-.683.33.064.182.432.309.816.282s.699.061.699.198c0 .136-.334.248-.741.248m-.184-1.588c.394 0 .622-.114.529-.265-.09-.145-.328-.264-.53-.264-.2 0-.439.119-.529.264-.093.15.135.265.53.265m4.085 1.557c-.646-.017-.967-.086-.712-.152.353-.092.463-.4.463-1.292 0-.936-.093-1.173-.463-1.18-.419-.008-.414-.045.05-.397.283-.214.64-.388.794-.389.174 0 .244.523.186 1.372-.076 1.088.003 1.444.38 1.72.42.306.335.344-.698.318m15.824 15.983 5.226-.055.069-11.124.069-11.124h-10.589v22.358zm-1.256-15.953a.265.265 0 0 1-.265-.264.265.265 0 0 1 .53 0c0 .145-.12.264-.265.264m1.323 0a.265.265 0 0 1-.265-.264.265.265 0 0 1 .53 0c0 .145-.12.264-.265.264m1.322 0a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.119.264-.265.264M26.274 61.635h22.093V46.024H4.182v15.611zm-17.99-2.433c-.654.025-1.001-.097-1.114-.391-.099-.258.03-.57.326-.787.27-.197.647-.358.837-.358s.346-.12.346-.265-.321-.264-.714-.264c-.513 0-.634-.081-.427-.287.157-.158.568-.247.912-.199.54.077.637.255.705 1.302l.079 1.214zm-.15-.478c.3 0 .545-.119.545-.264s-.171-.265-.38-.265c-.21 0-.456.12-.546.265s.082.264.382.264m2.662.53c-.291 0-.534-.09-.54-.2-.007-.108-.11-.703-.23-1.32-.156-.81-.119-1.253.136-1.588.335-.442.353-.442.361-.002a.48.48 0 0 0 .471.472c.441.008.441.025 0 .36-.254.193-.463.61-.463.925s.18.643.397.727c.219.084.397.259.397.389s-.238.236-.529.236zm2.029 0c-.194 0-.433-.08-.53-.177s-.176-.55-.176-1.005c0-.456-.143-.972-.318-1.147-.246-.247-.246-.317 0-.317.175 0 .318-.2.318-.444 0-.39.059-.383.5.066.297.304.404.611.264.761-.13.138-.235.585-.235.992s.12.741.265.741.264.12.264.265-.158.264-.352.264m1.146 0c-.145 0-.265-.578-.265-1.283 0-1.244.025-1.284.794-1.306.437-.012.794.075.794.194s-.238.278-.53.354c-.405.106-.528.361-.528 1.09 0 .522-.12.95-.265.95m2.117 0c-.146 0-.265-.596-.265-1.324 0-.727.12-1.322.265-1.322s.264.595.264 1.322-.119 1.323-.264 1.323m1.758-.058c-.688-.057-.7-.09-.7-2 0-1.228.097-1.882.265-1.78.145.09.264.462.264.826 0 .377.115.59.267.496.147-.09.504-.09.794.002.386.123.527.401.527 1.043 0 .482-.161 1.01-.358 1.173s-.674.272-1.059.24zm.358-.472c.412 0 .53-.176.53-.794 0-.617-.118-.793-.53-.793-.411 0-.529.176-.529.793 0 .618.118.794.53.794m3.078.477c-.49.019-.967-.042-1.058-.133-.092-.092-.168-.683-.168-1.314 0-.63.12-1.147.265-1.147s.265.485.265 1.078c0 .884.083 1.062.463.99.323-.061.487-.386.545-1.078.045-.544.194-.99.33-.99.137 0 .25.577.25 1.28 0 1.27-.008 1.28-.892 1.314m2.496.052c-.28 0-.571-.208-.645-.463-.074-.254-.155-.82-.179-1.256a14 14 0 0 1-.015-1.257c.015-.255.147-.463.292-.463.146 0 .265.178.265.397 0 .218.208.4.463.405.441.008.441.025 0 .36-.255.193-.463.61-.463.926s.179.643.397.726c.218.084.397.26.397.389 0 .13-.23.236-.512.236m2.052-.004c-.244.002-.631-.183-.86-.411-.229-.23-.416-.637-.416-.908 0-.27.187-.678.416-.907s.622-.415.873-.415c.252 0 .6.142.775.317s.318.465.318.645c0 .187-.42.364-.976.41-.911.077-.947.112-.534.522.262.261.686.386 1.042.308.481-.106.521-.076.203.152-.218.156-.597.285-.84.287m.047-1.583c.291 0 .53-.12.53-.265s-.239-.264-.53-.264c-.29 0-.529.119-.529.264s.238.265.53.265m4.3 1.579c-.619.005-1.125-.11-1.125-.256s.179-.265.397-.265c.296 0 .397-.312.397-1.219 0-.975-.08-1.188-.397-1.066-.218.083-.397.08-.397-.01 0-.088.209-.319.463-.512.255-.193.553-.355.662-.36s.198.663.198 1.484c0 1.11.119 1.582.463 1.844.409.31.33.352-.661.36zM15.94 56.078c-.227 0-.34-.119-.25-.264s.276-.265.413-.265.25.12.25.265-.186.264-.413.264m-7.793-3.44c-.123 0-.41-.186-.64-.415-.228-.229-.415-.681-.415-1.005 0-.325.143-.733.317-.908.175-.174.585-.317.91-.317.327 0 .662.11.746.247.084.135-.177.284-.58.33-.582.067-.732.22-.732.746 0 .557.115.653.728.611.4-.027.728.05.728.17 0 .122-.189.293-.419.381s-.52.16-.643.16m2.65 0c-.271 0-.68-.186-.908-.415-.229-.229-.416-.637-.416-.907s.187-.679.416-.907c.229-.229.681-.416 1.005-.416.325 0 .733.143.907.317s.318.583.318.908c0 .324-.187.776-.416 1.005s-.637.416-.907.416m0-.528c.27 0 .568-.237.66-.527s.093-.647.002-.794c-.09-.147-.39-.267-.663-.267-.274 0-.572.12-.663.267-.09.147-.09.504.002.794s.39.527.661.527m2.1.529c-.137 0-.249-.58-.249-1.289v-1.288l1.786.032 1.786.031.08 1.257c.05.756-.03 1.257-.198 1.257-.153 0-.279-.485-.279-1.078 0-.883-.083-1.062-.463-.99-.323.061-.488.386-.545 1.078-.045.544-.194.99-.33.99-.137 0-.25-.485-.25-1.078 0-.883-.083-1.062-.462-.99-.324.061-.488.386-.546 1.078-.045.544-.194.99-.33.99m4.498 0c-.137 0-.249-.58-.249-1.289v-1.288l1.786.032 1.786.031.082 1.282q.08 1.28-.199 1.11c-.154-.096-.28-.592-.28-1.104 0-.742-.093-.912-.463-.842-.324.061-.488.386-.545 1.078-.045.544-.194.99-.33.99-.138 0-.25-.485-.25-1.078 0-.883-.083-1.062-.462-.99-.324.061-.488.386-.546 1.078-.045.544-.194.99-.33.99m5.32 0c-.262 0-.592-.15-.733-.331a3.3 3.3 0 0 1-.41-.763c-.084-.238.024-.685.24-.993.215-.307.658-.56.985-.56s.736.144.91.318.318.583.318.908c0 .324-.187.776-.416 1.005s-.63.416-.893.416m.239-.59c.239-.046.41-.353.41-.737 0-.48-.16-.68-.596-.742-.475-.068-.595.043-.595.551 0 .35.084.72.186.821.102.102.37.15.595.107m1.849.59c-.137 0-.249-.576-.249-1.28 0-1.279.001-1.28.922-1.315.658-.025.998.11 1.19.469.148.277.27.802.27 1.167 0 .364-.112.732-.249.816-.136.085-.285-.295-.33-.844-.066-.794-.19-.998-.612-.998-.42 0-.546.204-.611.993-.045.545-.194.992-.331.992m46.715 8.996h22.357V46.02l-22.366.068-22.365.067.004 7.607c.002 4.184.006 7.666.008 7.74.003.072 10.065.132 22.362.132M53.78 59.203c-.643.024-.99-.1-1.102-.392-.099-.258.031-.57.327-.787.27-.197.646-.358.836-.358s.347-.12.347-.265-.322-.264-.715-.264c-.53 0-.637-.077-.416-.298.169-.169.594-.224.98-.128.599.15.68.307.68 1.314 0 1.125-.014 1.143-.937 1.178m-.137-.479c.3 0 .545-.119.545-.264s-.172-.265-.382-.265-.454.12-.544.265.081.264.38.264m2.68.53c-.282 0-.573-.209-.647-.464-.074-.254-.154-.82-.178-1.256a14 14 0 0 1-.015-1.257c.015-.255.147-.463.292-.463.146 0 .265.178.265.397 0 .218.208.4.463.405.44.008.44.025 0 .36-.255.193-.463.666-.463 1.05 0 .444.144.698.397.698.218 0 .397.12.397.265s-.23.264-.512.264m2.01 0c-.194 0-.432-.08-.53-.177-.096-.097-.176-.462-.176-.811s-.123-.865-.274-1.147c-.193-.36-.188-.511.016-.511.16 0 .221-.111.137-.247-.083-.135-.03-.32.117-.412s.269.02.269.246c0 .227.208.416.463.42.44.009.44.026 0 .36-.255.194-.463.61-.463.927 0 .316.178.643.397.726.218.084.397.26.397.39 0 .129-.16.235-.353.235m1.146 0c-.145 0-.264-.578-.264-1.283 0-1.244.024-1.284.794-1.306.436-.012.793.075.793.194s-.238.278-.529.354c-.405.106-.529.361-.529 1.09 0 .522-.12.95-.265.95m2.117 0c-.145 0-.265-.596-.265-1.324 0-.727.12-1.322.265-1.322s.265.595.265 1.322-.12 1.323-.265 1.323m1.635-.057-.863-.025.077-1.877c.044-1.076.19-1.853.342-1.82.145.032.301.353.347.713.056.447.204.608.466.508.211-.081.561 0 .778.179.216.18.393.655.393 1.055 0 .401-.152.856-.338 1.01s-.727.27-1.202.257m.482-.473c.411 0 .529-.176.529-.794 0-.617-.118-.793-.53-.793-.41 0-.528.176-.528.793 0 .618.117.794.529.794m3.077.477c-.49.019-.966-.042-1.058-.133-.092-.092-.167-.69-.167-1.33 0-.707.103-1.098.264-.998.146.09.265.582.265 1.093 0 .743.093.912.463.842.324-.061.488-.386.545-1.077.045-.545.194-.99.33-.99.138 0 .25.576.25 1.28 0 1.27-.007 1.28-.892 1.313m2.484.052c-.328 0-.574-.223-.657-.595a10 10 0 0 1-.178-1.257 9 9 0 0 1-.005-1.124c.023-.255.16-.463.306-.463.145 0 .264.178.264.397 0 .218.209.4.463.405.441.008.441.025 0 .36-.254.193-.463.666-.463 1.05 0 .444.145.698.397.698.219 0 .397.12.397.265s-.236.264-.524.264m2.064-.004c-.244.002-.63-.183-.86-.411-.228-.23-.415-.637-.415-.908 0-.27.187-.678.416-.907s.621-.415.873-.415c.251 0 .6.142.774.317s.318.465.318.646c0 .186-.42.363-.976.41-.911.076-.947.111-.534.521.263.261.686.386 1.042.308.481-.106.522-.076.203.152-.218.156-.596.285-.84.287m.048-1.583c.29 0 .529-.12.529-.265s-.238-.264-.53-.264c-.29 0-.529.119-.529.264s.239.265.53.265m4.116 1.587c-.663 0-1.206-.073-1.206-.163s.364-.578.808-1.084.767-1.117.717-1.358q-.088-.438-.808-.388c-.394.028-.717-.06-.717-.193 0-.134.3-.318.665-.41.381-.096.833-.028 1.058.16.217.18.394.54.394.803 0 .262-.309.842-.685 1.29l-.685.814h.67c.367 0 .742.12.832.265.1.161-.306.264-1.043.264m-14.054-3.175c-.227 0-.339-.119-.249-.264s.276-.265.413-.265.249.12.249.265-.186.264-.413.264m-7.704-3.443c-.172.002-.5-.183-.728-.412-.229-.229-.416-.681-.416-1.005 0-.325.143-.733.318-.908.174-.174.584-.317.91-.317s.662.11.745.247c.084.135-.177.284-.58.33-.581.067-.731.22-.731.746 0 .472.15.672.529.7.29.02.648.052.794.07.145.017.086.147-.133.288-.218.141-.537.259-.708.26m2.538.004c-.258 0-.656-.187-.885-.416s-.416-.637-.416-.907.194-.685.43-.922c.238-.237.74-.394 1.12-.35.475.056.768.306.941.8.2.57.15.833-.234 1.258-.268.295-.698.537-.956.537m-.004-.53c.287 0 .595-.236.687-.526s.093-.647.002-.794c-.09-.147-.4-.267-.687-.267s-.59.179-.674.397a1.3 1.3 0 0 0 0 .794c.084.218.386.397.672.397m2.127.53c-.137 0-.249-.58-.249-1.289v-1.288l1.786.032 1.786.031.081 1.257c.048.756-.03 1.257-.198 1.257-.154 0-.28-.485-.28-1.078 0-.883-.083-1.062-.463-.99-.323.061-.487.386-.545 1.078-.045.544-.194.99-.33.99-.137 0-.249-.485-.249-1.078 0-.883-.084-1.062-.463-.99-.324.061-.488.386-.545 1.078-.045.544-.194.99-.33.99m4.498 0c-.137 0-.249-.58-.249-1.289v-1.288l1.786.032 1.786.031.08 1.257c.05.756-.03 1.257-.198 1.257-.153 0-.279-.485-.279-1.078 0-.883-.083-1.062-.463-.99-.323.061-.487.386-.545 1.078-.045.544-.194.99-.33.99-.137 0-.25-.485-.25-1.078 0-.883-.083-1.062-.462-.99-.324.061-.488.386-.545 1.078-.045.544-.194.99-.331.99m5.295 0c-.277 0-.7-.298-.938-.662-.401-.612-.401-.71 0-1.323.253-.385.685-.661 1.036-.661.331 0 .745.143.92.317s.318.583.318.908c0 .324-.188.776-.416 1.005-.229.229-.643.416-.92.416m.229-.583c.274-.053.445-.337.445-.74 0-.43-.17-.687-.497-.75-.274-.053-.593.058-.71.247-.116.188-.092.564.053.835.145.272.464.455.709.408m1.884.583c-.136 0-.248-.576-.248-1.28 0-1.279 0-1.28.92-1.315.677-.025.998.108 1.208.5.157.293.248.855.203 1.248s-.201.714-.347.714-.302-.453-.348-1.008c-.064-.779-.184-.989-.529-.924-.304.058-.472.399-.528 1.075-.045.544-.194.99-.33.99m31.37 8.996h7.275V46.024H94.404v15.611zm-3.043-8.996a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m1.19 0c-.055 0-.174-.12-.264-.265s.029-.264.264-.264.355.119.265.264-.21.265-.265.265m1.191 0a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m23.812 8.996h15.082V46.024H109.75v15.611zm-.822-7.938c-.177 0-.23-.25-.134-.634.087-.348-.019-1.059-.236-1.579s-.395-1.068-.395-1.218.11-.273.244-.273c.133 0 .322.357.417.794.096.436.258.793.36.793s.32-.357.485-.793.424-.794.576-.794c.153 0-.014.768-.374 1.726-.357.949-.65 1.782-.65 1.852s-.132.126-.293.126m2.426-.574c-.083.338-.24.527-.348.418-.108-.108-.197-.931-.197-1.83V50.08l.98-.037c.54-.02 1.073.109 1.187.288.113.178.208.637.21 1.02.002.382-.166.836-.373 1.008-.208.172-.587.276-.843.23-.304-.053-.517.131-.616.535m.884-1.091c.16-.053.328-.414.374-.803.068-.568-.025-.707-.471-.707-.305 0-.624.18-.709.4s-.003.582.18.803c.184.221.466.36.626.307m-13.474.607c-.198 0-.433-.12-.523-.265-.093-.15.13-.264.514-.264.372 0 .677-.07.677-.156s-.258-.365-.574-.62c-.362-.294-.511-.626-.405-.903.093-.241.403-.438.69-.438s.604.132.703.293q.185.295-.381.114c-.403-.128-.562-.066-.562.219 0 .218.238.472.529.565.29.092.529.385.529.65 0 .266-.188.556-.419.644s-.58.16-.778.16m3.16-.103c-.447.049-.953-.051-1.124-.222-.17-.17-.31-.763-.31-1.316s.12-1.005.265-1.005.264.41.264.91c0 .501.124.988.276 1.081.152.094.45.027.662-.149s.385-.662.385-1.08c0-.42.126-.762.28-.762.166 0 .246.492.198 1.228-.076 1.154-.13 1.233-.895 1.315m2.492.024c-.436-.03-.843-.103-.904-.164-.061-.06-.112-.934-.112-1.94 0-1.346.088-1.801.331-1.721.182.06.368.36.413.667.057.383.307.585.794.641.592.068.726.23.796.96.046.482-.053 1.042-.22 1.244-.169.202-.662.343-1.098.313m.373-.515c.182-.06.369-.427.415-.816.066-.56-.027-.707-.447-.707-.293 0-.584.09-.648.198-.065.11-.012.477.116.816.128.34.382.569.564.51m2.46.594c-.194 0-.425-.189-.513-.419s-.16-.756-.16-1.168c0-.413-.15-.81-.331-.884-.265-.107-.265-.138 0-.154.182-.012.33-.2.33-.418s.12-.397.265-.397.265.17.265.378c0 .207.208.432.463.498.44.115.44.123 0 .152-.347.023-.463.263-.463.957 0 .662.117.926.412.926.227 0 .339.119.25.264s-.323.265-.517.265m7.905-.07c-.28.036-.717-.06-.972-.21-.262-.156-.463-.592-.463-1.003 0-.4.143-.871.318-1.046.174-.174.567-.317.873-.317.305 0 .698.143.873.317s.317.473.317.662c0 .218-.346.344-.948.344-.643 0-.911.106-.834.33.063.182.432.326.82.32.388-.005.664.114.615.265s-.32.304-.6.339m-.244-1.518c.364 0 .661-.109.661-.242 0-.134-.149-.295-.33-.358a1.15 1.15 0 0 0-.662.006c-.182.067-.33.228-.33.358s.297.236.66.236zm23.283 10.584h12.568V46.024h-25.135v15.611zm-8.599-2.382c-.153 0-.264-.838-.264-1.984 0-1.147.111-1.984.264-1.984s.265.837.265 1.984c0 1.146-.112 1.984-.265 1.984m1.323 0c-.145 0-.264-.595-.264-1.323 0-.727.119-1.323.264-1.323s.265.596.265 1.323c0 .728-.12 1.323-.265 1.323m1.307 0c-.137 0-.248-.565-.248-1.256 0-1.185.042-1.26.727-1.3.4-.024.876.08 1.058.23s.331.736.331 1.3-.119 1.026-.264 1.026-.265-.485-.265-1.077c0-.884-.084-1.062-.463-.99-.324.06-.488.385-.545 1.077-.045.545-.194.99-.33.99m2.926 0c-.152 0-.264-.838-.264-1.984 0-1.147.112-1.984.264-1.984.146 0 .265.494.265 1.099 0 1.084.008 1.092.53.619.293-.264.613-.399.713-.3s-.015.377-.253.616c-.403.402-.396.489.1 1.184.293.413.444.75.334.75s-.475-.259-.812-.575l-.612-.575v.575c0 .316-.119.575-.265.575m-4.233-3.175a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.12.264-.265.264m1.007-2.988c-.044.362-.17.567-.28.456-.108-.11-.198-.938-.198-1.837v-1.636l.852-.024c.47-.013 1.005.102 1.191.257.186.154.339.609.339 1.01 0 .4-.178.876-.396 1.057-.217.18-.627.267-.911.193-.397-.103-.535.017-.597.524m.778-1.03c.28-.052.497-.375.548-.813.068-.586-.022-.725-.472-.725-.305 0-.623.179-.707.397s-.08.584.008.813c.088.23.369.377.624.329zm-2.982.579c-.197 0-.433-.12-.523-.265-.092-.15.13-.264.514-.264.372 0 .677-.112.677-.247 0-.136-.245-.325-.545-.42-.369-.117-.518-.356-.463-.743.045-.313.303-.612.573-.663s.627.05.794.225c.233.247.166.278-.293.14-.433-.131-.595-.072-.595.217 0 .218.238.472.529.564.291.093.53.386.53.651 0 .266-.19.556-.42.644s-.58.16-.778.16m6.01-.008c-.246-.004-.656-.13-.91-.278-.264-.153-.463-.583-.463-.997 0-.4.143-.871.317-1.046.175-.174.568-.317.873-.317s.699.143.873.317.318.473.318.662c0 .218-.347.344-.948.344-.64 0-.913.107-.84.33.06.182.43.37.82.415.392.047.644.196.56.331-.084.136-.354.243-.6.239m-.33-1.58c.282 0 .58-.109.663-.242.082-.133 0-.294-.183-.358a1.14 1.14 0 0 0-.663.006c-.182.067-.331.228-.331.358s.231.237.513.237zm3.034 1.532c-.281.042-.659-.071-.84-.252-.18-.18-.327-.718-.327-1.195 0-.712.123-.9.681-1.04.385-.096.81-.04.979.128.221.221.109.298-.434.298-.642 0-.722.09-.648.728.065.564.219.722.686.705.332-.012.56.108.509.265s-.325.32-.606.363m1.479.056c-.146 0-.265-.596-.265-1.323 0-.728.12-1.323.265-1.323s.265.595.265 1.323c0 .727-.12 1.323-.265 1.323m2.163-.056c-.45.034-.921-.12-1.127-.368-.302-.364-.28-.482.149-.796.277-.202.67-.368.872-.368.203 0 .318-.149.256-.33s-.4-.291-.75-.242c-.482.067-.564.013-.337-.221.165-.17.582-.27.926-.221.539.076.637.255.704 1.288.076 1.155.05 1.201-.693 1.258m-.194-.473c.21 0 .455-.12.545-.265s-.082-.265-.382-.265-.545.12-.545.265.172.265.382.265m2.176.529c-.048 0-.167-.08-.264-.177s-.177-.99-.177-1.984c0-1.029.114-1.808.265-1.808.153 0 .264.838.264 1.984 0 1.092-.04 1.985-.088 1.985m-4.145-3.175a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m-165.85 27.773c-.388-.004-.925-.136-1.193-.292s-.659-.692-.868-1.192c-.295-.708-.317-1.14-.097-1.956.197-.731.514-1.166 1.053-1.445.423-.22 1.008-.399 1.298-.399s.85.278 1.246.618c.414.357.638.749.528.926-.104.17-.37.308-.59.308s-.579-.178-.797-.396c-.301-.302-.521-.33-.921-.115-.417.223-.509.504-.445 1.361.052.69.252 1.186.555 1.372.383.236.56.179.926-.298.32-.418.623-.544 1.04-.434.55.146.563.2.207.888-.208.403-.571.807-.807.898s-.746.16-1.134.156M84.88 38.35H2.33v-57.15h165.1v57.15Zm-63.764-1.587h16.933v-9.26H4.182v9.26zm34.66 0h17.198v-9.26H38.578v9.26zm23.284 0h5.556v-9.26H73.503v9.26zm23.283 0h17.198v-9.26H85.144v9.26zm34.985 0h17.27l-.053-4.564-.053-4.564h-34.289l-.073 4.564-.072 4.564zm23.224 0h5.291v-9.26H155.26v9.26zM21.12 26.71h16.94l-.073-4.83-.072-4.828-16.867-.068-16.867-.068v9.794zm34.655 0h17.197v-9.79H38.578v9.79zm23.283 0h5.556v-9.79H73.503v9.79zm23.283 0h17.198v-9.79H85.144v9.79zm34.985 0h17.27l-.053-4.829-.054-4.829H120.2l-.072 4.829-.072 4.829zm23.224 0h5.291v-9.79H155.26v9.79zM21.049 16.327l16.867-.068.073-4.56.072-4.56-16.94-.07-16.94-.07v9.396zm34.727.064h17.197V7.138l-17.198-.07-17.197-.07v9.393zm23.283 0h5.556V7.13H73.503v9.26zm23.283 0h17.198V6.998l-17.198.07-17.198.07v9.253zm35.117-.064 17.033-.068v-4.565c0-2.51-.065-4.564-.146-4.564H120.07v4.454c0 2.45.08 4.534.179 4.632s7.843.148 17.211.11m23.025.004 5.226-.072v-4.564c0-2.51-.09-4.564-.199-4.564H155.26v9.271zM21.118 5.278h16.936L37.985-5.9l-.069-11.179-16.867-.068-16.867-.068V5.278zm-12.64-9.32c-.415.012-.914-.077-1.109-.197s-.282-.406-.194-.635.462-.491.832-.584.673-.275.673-.405-.322-.236-.715-.236c-.513 0-.633-.08-.427-.287.158-.158.569-.247.913-.198.54.076.636.255.705 1.305.076 1.175.053 1.216-.677 1.237m-.343-.47c.3 0 .545-.118.545-.264 0-.145-.172-.264-.382-.264s-.454.119-.544.264.081.265.38.265m2.803.53c-.213 0-.506-.221-.65-.492-.145-.27-.293-.924-.329-1.454-.035-.53.079-1.106.254-1.28.249-.25.319-.22.319.13 0 .25.207.454.463.458.44.008.44.021 0 .278-.255.148-.463.565-.463.926s.178.725.397.81c.218.083.397.258.397.388s-.175.236-.388.236m1.887 0c-.194 0-.432-.08-.53-.176-.096-.097-.176-.55-.176-1.006s-.143-.972-.317-1.146c-.247-.247-.247-.318 0-.318.174 0 .317-.2.317-.443 0-.39.058-.383.491.066.27.28.39.549.265.598s-.227.495-.227.992.12.904.265.904.265.119.265.264-.16.265-.353.265m1.146 0c-.145 0-.264-.577-.264-1.283 0-1.244.024-1.283.794-1.305.436-.012.793.075.793.194 0 .118-.238.278-.529.354-.405.106-.529.36-.529 1.09 0 .522-.12.95-.265.95m2.117 0c-.145 0-.265-.595-.265-1.323s.12-1.323.265-1.323.265.595.265 1.323-.12 1.323-.265 1.323m1.759-.058c-.689-.057-.7-.09-.7-2 0-1.227.097-1.882.264-1.779.145.09.265.462.265.825 0 .378.114.591.266.497.147-.09.504-.09.794.002.386.122.527.4.527 1.043 0 .482-.161 1.01-.358 1.173s-.673.271-1.058.24zm.358-.471c.411 0 .529-.177.529-.794s-.118-.794-.53-.794c-.41 0-.528.177-.528.794s.117.794.529.794m3.077.477c-.49.018-.966-.042-1.058-.134s-.167-.683-.167-1.313c0-.631.119-1.147.264-1.147s.265.485.265 1.078c0 .883.083 1.062.463.99.324-.062.488-.386.545-1.078.045-.544.194-.99.33-.99.138 0 .25.576.25 1.28 0 1.27-.007 1.28-.892 1.314m2.497.052c-.281 0-.572-.209-.646-.463-.074-.255-.154-.82-.178-1.257a14 14 0 0 1-.016-1.257c.016-.254.147-.463.293-.463.145 0 .264.179.264.397s.209.4.463.405c.441.008.441.021 0 .278-.254.148-.463.565-.463.926s.179.725.397.809.397.259.397.389-.23.236-.511.236m2.051-.004c-.244.002-.63-.183-.86-.412-.228-.229-.415-.637-.415-.907s.187-.678.415-.907c.23-.229.622-.416.874-.416.251 0 .6.143.774.318.175.174.318.465.318.645 0 .187-.42.363-.976.41-.911.077-.947.112-.534.522.263.26.686.386 1.042.308.481-.106.522-.076.203.151-.218.156-.596.286-.84.288m.048-1.584c.29 0 .529-.119.529-.264s-.238-.265-.53-.265c-.29 0-.529.12-.529.265s.239.264.53.264m4.3 1.58c-.62.004-1.125-.111-1.125-.257 0-.145.178-.264.396-.264.296 0 .397-.312.397-1.22 0-.974-.08-1.188-.397-1.066-.218.084-.396.08-.396-.009 0-.088.208-.319.463-.512.254-.194.552-.356.661-.36.11-.005.199.663.199 1.484 0 1.11.118 1.582.463 1.843.408.31.33.353-.662.36zM15.94-7.158c-.227 0-.339-.12-.249-.265s.276-.264.413-.264.249.119.249.264-.186.265-.413.265m-7.792-3.44c-.123 0-.411-.187-.64-.415-.229-.23-.416-.682-.416-1.006s.143-.732.318-.907c.174-.175.584-.318.91-.318s.662.111.745.247c.084.136-.177.285-.58.33-.581.068-.731.22-.731.746 0 .558.114.654.727.612.4-.027.728.05.728.17s-.188.292-.419.38-.519.161-.642.161m2.58 0c-.233 0-.61-.187-.839-.415-.228-.23-.416-.637-.416-.908 0-.27.188-.678.416-.907.229-.228.681-.416 1.006-.416s.732.143.907.318c.174.175.317.573.317.885s-.217.765-.484 1.005c-.266.241-.674.438-.907.438m.068-.529c.272 0 .57-.237.661-.527s.093-.647.002-.793c-.09-.147-.389-.267-.663-.267s-.572.12-.663.267c-.09.146-.09.504.003.793.092.29.389.527.66.527m2.101.53c-.137 0-.249-.58-.249-1.289v-1.288l1.786.031 1.786.032.081 1.257c.048.756-.03 1.256-.198 1.256-.154 0-.28-.485-.28-1.077 0-.884-.083-1.062-.463-.99-.323.06-.487.385-.545 1.077-.045.545-.194.99-.33.99-.137 0-.249-.485-.249-1.077 0-.884-.084-1.062-.463-.99-.324.06-.488.385-.545 1.077-.045.545-.194.99-.33.99m4.498 0c-.137 0-.249-.58-.249-1.289v-1.288l1.786.031 1.786.032.082 1.282q.081 1.28-.199 1.109c-.154-.096-.28-.592-.28-1.103 0-.743-.093-.912-.463-.842-.323.06-.487.385-.545 1.077-.045.545-.194.99-.33.99-.137 0-.25-.485-.25-1.077 0-.884-.083-1.062-.462-.99-.324.06-.488.385-.545 1.077-.045.545-.194.99-.331.99m5.321 0c-.263 0-.593-.15-.734-.331a3.3 3.3 0 0 1-.409-.764c-.084-.238.023-.684.239-.992.215-.308.659-.56.985-.56s.736.143.911.318.318.583.318.907-.188.777-.416 1.006c-.229.228-.631.415-.894.415m.238-.59c.24-.046.41-.354.41-.737 0-.481-.16-.68-.595-.743-.476-.067-.596.044-.596.552 0 .35.084.719.186.82.102.103.37.15.595.108m2.13-.378c-.073.56-.222.927-.33.816-.11-.11-.2-.698-.2-1.305 0-1.077.023-1.105.922-1.138.658-.025.998.109 1.19.468.149.277.27.802.27 1.167s-.112.733-.248.817c-.137.084-.286-.296-.331-.844-.066-.794-.19-.998-.612-.998-.414 0-.558.22-.661 1.017M55.776 5.278h17.197V-17.21H38.578V5.278zM43.507-4.034c-.49.018-.966-.042-1.058-.134s-.167-.383-.167-.647c0-.293.261-.546.673-.649.37-.093.627-.303.57-.468-.056-.164-.372-.26-.701-.211-.379.055-.535-.018-.423-.199.097-.157.463-.286.813-.286.359 0 .756.224.91.512.151.281.274.857.274 1.28 0 .69-.091.772-.89.802m-.3-.477c.22 0 .398-.12.398-.265s-.179-.264-.397-.264-.397.119-.397.264.179.265.397.265m2.69.529c-.193 0-.431-.08-.528-.176-.097-.097-.177-.55-.177-1.006s-.143-.972-.317-1.146c-.247-.247-.247-.318 0-.318.174 0 .317-.179.317-.397s.12-.397.265-.397.264.179.264.397.143.397.318.397c.247 0 .247.07 0 .318-.175.174-.318.65-.318 1.058 0 .407.12.74.265.74s.265.12.265.265-.16.265-.353.265m1.853 0c-.194 0-.432-.08-.53-.176-.096-.097-.176-.55-.176-1.006s-.143-.972-.317-1.146c-.247-.247-.247-.318 0-.318.174 0 .317-.179.317-.397s.12-.397.265-.397.264.179.264.397.143.397.318.397c.247 0 .247.07 0 .318-.175.174-.318.65-.318 1.058 0 .407.12.74.265.74s.265.12.265.265-.16.265-.353.265m1.411 0c-.146 0-.265-.57-.265-1.265 0-1.159.056-1.27.662-1.32.364-.03.661.063.661.207s-.178.261-.397.261c-.286 0-.396.294-.396 1.059 0 .582-.12 1.058-.265 1.058m1.852 0c-.145 0-.265-.595-.265-1.323s.12-1.323.265-1.323.265.595.265 1.323-.12 1.323-.265 1.323m2.006-.097-.948.075v-1.974c0-1.139.112-1.973.265-1.973.145 0 .265.346.265.77 0 .656.083.746.568.62.375-.099.69.017.926.34.197.268.356.674.354.9a1.8 1.8 0 0 1-.243.79c-.132.208-.665.41-1.187.452m.206-.432c.208 0 .446-.179.53-.397a1.3 1.3 0 0 0 0-.794c-.084-.218-.322-.397-.53-.397-.207 0-.445.179-.529.397a1.3 1.3 0 0 0 0 .794c.084.218.322.397.53.397m3.145.433c-.4.02-.876-.019-1.057-.088-.196-.074-.331-.602-.331-1.293 0-.643.119-1.169.264-1.169s.265.476.265 1.058c0 .882.088 1.059.53 1.059.44 0 .528-.177.528-1.059 0-.582.12-1.058.265-1.058s.264.566.264 1.257c0 1.185-.042 1.259-.728 1.293m2.492.096c-.194 0-.432-.08-.529-.177s-.176-.549-.176-1.005-.143-.972-.318-1.146c-.247-.247-.247-.318 0-.318.175 0 .318-.179.318-.397s.119-.397.264-.397.265.169.265.375.149.435.33.508c.265.107.265.138 0 .155-.197.012-.33.393-.33.947 0 .509.119.926.265.926.145 0 .264.119.264.264s-.159.265-.353.265m2.11 0c-.326 0-.736-.143-.91-.318-.175-.174-.318-.627-.318-1.005s.143-.83.318-1.005c.174-.175.587-.318.917-.318s.722.23.873.512c.15.281.274.579.274.661s-.417.15-.927.15c-.646 0-.926.12-.926.397 0 .218.15.41.331.427s.552.007.823-.021c.294-.031.42.063.315.234-.097.157-.444.286-.77.286m-.17-1.588c.292 0 .53-.119.53-.264s-.238-.265-.53-.265c-.29 0-.529.12-.529.265s.239.264.53.264m4.102 1.588c-.655 0-1.191-.097-1.191-.215 0-.119.357-.558.794-.976.455-.436.794-1.034.794-1.403 0-.543-.103-.623-.662-.516-.364.07-.661.026-.661-.097 0-.122.316-.302.702-.399.51-.128.796-.05 1.04.285.186.254.267.659.18.9-.086.24-.383.764-.66 1.164l-.505.728h.68c.374 0 .68.119.68.264s-.536.265-1.191.265M51.013-7.157a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m-7.564-3.496c-.282.042-.66-.07-.84-.251-.18-.18-.327-.718-.327-1.196 0-.712.122-.899.68-1.039.385-.096.811-.041.98.127.22.222.109.299-.434.299-.643 0-.722.089-.648.727.064.565.218.723.686.706.331-.012.56.107.508.265-.052.157-.324.32-.605.362m2.26.056c-.278 0-.682-.27-.899-.601-.22-.336-.325-.862-.239-1.193.09-.344.437-.664.826-.761.369-.093.86-.05 1.093.096.232.145.458.564.503.931s-.114.862-.35 1.098c-.237.237-.657.43-.934.43m.253-.587c.25-.049.42-.348.42-.74 0-.468-.16-.68-.56-.737-.337-.048-.63.098-.733.364-.094.244-.03.613.14.82.171.205.501.337.733.293m2.14-.377c-.072.558-.221.924-.33.813-.11-.11-.199-.698-.199-1.305v-1.103l1.727-.014c1.445-.011 1.77.07 2 .5.151.281.238.807.192 1.169-.045.36-.201.655-.347.653s-.302-.429-.347-.95c-.064-.722-.19-.928-.53-.863-.305.058-.472.399-.528 1.08-.045.547-.196.925-.335.84a.303.303 0 0 1-.091-.418c.089-.144.086-.56-.005-.926-.11-.44-.32-.635-.62-.577-.305.058-.498.42-.586 1.1m4.499 0c-.073.558-.222.924-.331.813-.11-.11-.199-.702-.199-1.313v-1.112l1.786.031 1.786.032.082 1.282q.081 1.28-.199 1.109c-.154-.096-.28-.592-.28-1.103 0-.743-.093-.913-.463-.842-.324.061-.487.386-.545 1.083-.045.547-.194.926-.33.842-.137-.084-.25-.572-.25-1.083 0-.743-.092-.912-.462-.842-.315.06-.506.413-.595 1.103m4.965.964c-.2 0-.505-.143-.68-.317-.174-.175-.317-.627-.317-1.006 0-.378.143-.83.318-1.005.174-.175.567-.318.873-.318s.698.143.873.318.318.647.318 1.049c0 .452-.196.836-.512 1.005-.282.151-.675.274-.873.274m.313-.588c.226-.043.448-.404.494-.803.072-.624-.011-.725-.596-.725-.534 0-.679.13-.679.617 0 .34.084.7.186.803.102.102.37.15.595.108m2.13.456c-.163.1-.265-.35-.265-1.175v-1.338h.898c.575 0 .956.15 1.058.418.089.23.161.826.161 1.323s-.12.904-.265.904-.264-.476-.264-1.058c0-.882-.088-1.058-.53-1.058-.426 0-.529.176-.529.91 0 .5-.119.984-.264 1.074m19.05 16.007h5.556V-17.21H73.503V5.278zm-1.323-15.875a.265.265 0 0 1-.265-.264.265.265 0 0 1 .53 0c0 .145-.12.264-.265.264m1.19 0c-.055 0-.174-.119-.264-.264s.03-.265.265-.265.354.12.264.265-.209.264-.264.264m1.191 0a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.12.264-.265.264M102.34 5.278h17.201v-22.493l-17.132.068-17.131.068-.07 11.179-.068 11.178zM90.031 2.633c-.604 0-.99-.147-1.094-.415-.087-.228-.054-.514.075-.636.128-.122.448-.262.71-.313.263-.05.441-.21.397-.356s-.292-.255-.55-.243-.428-.107-.375-.265c.052-.157.3-.326.549-.374s.627.055.838.23c.215.18.384.771.384 1.346 0 .997-.026 1.026-.934 1.026m.034-.444c.204-.078.371-.249.371-.379s-.172-.236-.381-.236-.445.103-.522.228-.073.295.01.378.318.087.522.01zm2.503.444c-.282 0-.567-.09-.634-.199-.066-.11-.149-.675-.185-1.257-.035-.582-.047-1.266-.027-1.521s.156-.463.301-.463c.146 0 .265.179.265.397s.179.397.397.397.397.119.397.264-.179.265-.397.265q-.397 0-.397.794 0 .793.397.793c.218 0 .397.12.397.265s-.231.265-.514.265m1.828 0c-.295 0-.583-.15-.638-.331s-.162-.767-.236-1.3c-.085-.609.002-1.15.233-1.456.342-.451.369-.453.377-.022.005.254.187.463.405.463s.397.119.397.264-.179.265-.397.265q-.397 0-.397.794 0 .793.397.793c.218 0 .397.12.397.265s-.242.264-.538.264m1.332 0c-.146 0-.265-.572-.265-1.27 0-1.218.029-1.267.728-1.224.4.024.787.067.86.095s-.136.158-.463.29c-.46.185-.596.452-.596 1.174 0 .514-.119.934-.264.934m1.984 0c-.343 0-.41-.245-.345-1.257.044-.691.2-1.257.345-1.257.146 0 .3.566.345 1.257.065 1.012-.002 1.257-.345 1.257m1.778-.057-.852-.024V.74c0-1.031.114-1.812.265-1.812.145 0 .264.306.264.68 0 .564.092.65.542.507.298-.095.715-.029.926.147.211.175.384.647.384 1.048 0 .4-.152.855-.338 1.01-.186.154-.722.27-1.19.256m.463-.473c.393 0 .537-.173.537-.645 0-.356-.13-.727-.29-.826s-.473.004-.697.229c-.225.224-.336.595-.248.825s.402.417.698.417m3.056.478c-.659.025-.998-.109-1.191-.469-.148-.276-.27-.801-.27-1.166s.112-.733.249-.817c.136-.084.285.296.33.844.066.794.191.998.612.998.42 0 .546-.204.611-.992.046-.546.194-.992.331-.992s.249.576.249 1.28c0 1.278-.001 1.28-.921 1.314m2.5.051c-.296 0-.583-.148-.639-.33s-.162-.767-.236-1.3c-.084-.609.002-1.15.234-1.456.342-.451.368-.453.376-.022.005.254.187.463.406.463.218 0 .396.119.396.264s-.178.265-.396.265q-.397 0-.397.794 0 .793.397.793c.218 0 .396.12.396.265s-.241.264-.537.264m2.178 0c-.408 0-.884-.142-1.059-.317s-.317-.583-.317-.907.187-.777.416-1.006.534-.415.679-.415c.144 0 .493.123.774.274.282.15.512.448.512.661 0 .253-.27.388-.778.388-.428 0-.843.105-.923.234-.08.13.017.37.215.534a.88.88 0 0 0 .791.134c.238-.091.43-.034.43.128 0 .16-.333.292-.74.292m-.185-1.587c.394 0 .622-.114.529-.265-.09-.145-.328-.264-.53-.264-.2 0-.439.119-.529.264-.093.151.135.265.53.265m4.233 1.587c-.51 0-.926-.119-.926-.264s.178-.265.397-.265c.293 0 .397-.306.397-1.166 0-1.07-.049-1.155-.596-1.038l-.595.128.623-.548c.342-.301.73-.482.86-.401s.237.794.237 1.586.119 1.44.264 1.44.265.118.265.264c0 .145-.417.264-.926.264M97.867-.424a.295.295 0 0 1-.406-.096.295.295 0 0 1 .096-.405.295.295 0 0 1 .406.095.296.296 0 0 1-.096.406m-6.373-2.5c-.15 0-.264-.771-.264-1.786v-1.786l.917-.065c.685-.049.988.067 1.197.458.154.287.206.818.115 1.18s-.39.729-.666.816c-.275.088-.62.085-.767-.006-.153-.094-.267.124-.267.512 0 .373-.12.677-.265.677zm.748-1.587c.285 0 .587-.179.67-.397a1.3 1.3 0 0 0-.004-.807.546.546 0 0 0-.587-.328c-.245.046-.466.393-.514.806-.066.573.026.726.435.726m-2.764.529c-.346 0-.63-.124-.63-.276s.15-.257.331-.234c.182.024.51.025.728.002.27-.027.152-.24-.37-.667-.495-.405-.708-.775-.603-1.048.09-.233.463-.423.832-.423s.67.12.67.265-.238.264-.53.264c-.29 0-.528.12-.528.265s.096.264.214.264.44.166.717.369c.428.312.45.432.15.793-.193.234-.635.426-.981.426zm5.903-.004c-.319-.002-.707-.092-.863-.199-.156-.106-.367-.42-.47-.694-.109-.296-.017-.756.225-1.125.224-.343.62-.624.879-.624.258 0 .613.143.787.318.175.174.318.465.318.645 0 .187-.42.363-.976.41-.911.077-.947.112-.534.522.27.269.666.38 1.017.289.395-.103.516-.054.386.156-.104.168-.45.304-.769.302m-.183-1.584c.292 0 .53-.119.53-.264s-.238-.265-.53-.265c-.29 0-.529.12-.529.265s.238.264.53.264m2.816 1.588c-.326 0-.736-.143-.91-.318-.175-.174-.318-.54-.318-.81 0-.272.123-.725.274-1.006.154-.288.552-.512.91-.512.35 0 .705.111.79.247.083.135-.178.284-.58.33-.583.067-.733.22-.733.746s.15.679.733.746c.402.046.663.195.58.33-.085.136-.42.247-.746.247m1.682 0c-.145 0-.264-.595-.264-1.323s.119-1.323.264-1.323.265.595.265 1.323-.12 1.323-.265 1.323m1.323 0c-.145 0-.264-.536-.264-1.19 0-.775-.116-1.193-.331-1.195-.205-.002-.23-.078-.066-.199.145-.107.396-.432.557-.723s.489-.568.728-.615c.24-.047.435.042.435.198 0 .157-.179.284-.397.284a.4.4 0 0 0-.397.397c0 .219.143.397.317.397.247 0 .247.07 0 .318-.174.174-.317.77-.317 1.323s-.12 1.005-.265 1.005m1.588 0c-.146 0-.265-.595-.265-1.323s.12-1.323.265-1.323.264.595.264 1.323-.119 1.323-.264 1.323m1.978 0c-.375 0-.758-.227-.933-.554-.163-.304-.225-.838-.138-1.186.098-.388.421-.699.836-.803.38-.096.807-.04.975.128.221.221.12.298-.388.298-.377 0-.755.179-.838.397a1.3 1.3 0 0 0 0 .794c.083.218.444.397.8.397.366 0 .578.115.486.264-.09.146-.45.265-.8.265m-4.889-3.175a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m2.91 0a.265.265 0 0 1-.264-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m-2.942-2.527c-.137.148-.232-.099-.232-.604 0-.47-.179-1.282-.397-1.805s-.397-.994-.397-1.05c0-.054.119-.1.264-.1s.43.387.634.86l.37.86.318-.86c.175-.473.425-.86.557-.86.13 0 .238.056.238.123s-.253.811-.562 1.654-.666 1.644-.793 1.782m2.15.013c-.168.103-.266-.513-.266-1.664v-1.827l.853-.024c.468-.013 1.004.102 1.19.257.186.154.339.555.339.89 0 .336-.197.807-.437 1.047s-.656.379-.926.308c-.346-.09-.49.016-.49.361 0 .269-.118.562-.264.652m.99-1.505c.293-.056.464-.33.464-.744 0-.413-.17-.687-.464-.743-.255-.05-.535.098-.623.327a1.35 1.35 0 0 0 0 .833c.088.229.368.376.623.327m-13.179.58c-.264 0-.554-.12-.644-.265s.081-.265.381-.265.545-.104.545-.232-.26-.404-.576-.615c-.377-.25-.517-.534-.405-.826.098-.253.457-.443.84-.443.369 0 .67.131.67.292s-.167.23-.371.15c-.204-.077-.445-.067-.536.023-.09.091.162.426.562.745.627.5.678.638.37 1.007-.194.236-.57.428-.836.428m2.993-.096c-.4.02-.876-.02-1.058-.088-.195-.074-.33-.602-.33-1.294 0-.643.119-1.168.264-1.168s.265.485.265 1.077c0 .884.083 1.062.463.99.324-.061.488-.386.545-1.077.045-.545.194-.99.33-.99.138 0 .25.565.249 1.256 0 1.186-.042 1.26-.728 1.294m2.464-.026-.942.031v-1.939c0-1.117.112-1.94.265-1.94.145 0 .264.347.264.77 0 .639.09.745.53.63.293-.076.71.009.927.19.217.18.394.58.391.89-.002.31-.114.737-.248.95-.135.213-.669.401-1.187.418m.314-.458c.293-.056.464-.33.464-.744 0-.413-.171-.687-.464-.743-.255-.05-.536.098-.624.327a1.35 1.35 0 0 0 0 .833c.088.229.369.376.624.327m2.59.58c-.213 0-.499-.209-.635-.464-.136-.254-.272-.82-.302-1.256a13 13 0 0 1-.026-1.257c.015-.255.206-.463.424-.463.219 0 .397.168.397.375 0 .206.15.434.331.508.265.107.265.137 0 .154-.198.013-.33.394-.33.947 0 .51.118.926.264.926.145 0 .265.12.265.265s-.175.264-.388.264m7.43 0c-.177 0-.465-.144-.64-.318-.174-.175-.317-.627-.317-1.006 0-.378.143-.83.317-1.005s.588-.317.917-.317.718.222.864.494c.145.272.19.57.097.661-.091.092-.514.167-.938.167-.5 0-.733.117-.662.331.06.182.457.394.882.47.638.116.688.173.287.331-.266.105-.63.191-.807.191m.101-1.588c.341 0 .529-.134.463-.33a.52.52 0 0 0-.463-.332.52.52 0 0 0-.463.331c-.065.197.122.33.463.33m4.234 1.587c-.583 0-1.059-.119-1.059-.264s.179-.265.397-.265c.295 0 .397-.312.397-1.219 0-.975-.08-1.188-.397-1.066-.218.083-.397.04-.397-.095 0-.136.23-.37.512-.521.281-.15.58-.274.661-.274.083 0 .15.715.15 1.588 0 1.234.088 1.587.397 1.587.218 0 .397.12.397.265s-.476.264-1.058.264m27.635 15.875h17.068l.072-11.146c.046-7.254-.02-11.181-.193-11.247-.146-.056-7.885-.07-17.198-.033l-16.933.069-.07 10.848c-.038 5.966-.012 10.996.058 11.178.1.26 3.778.331 17.196.331m-12.394-2.645c-.506 0-.957-.155-1.033-.355-.075-.195-.058-.477.037-.626.096-.15.442-.355.77-.457.327-.102.595-.31.595-.463S125.065.51 124.7.58c-.364.07-.662.03-.662-.086 0-.117.126-.29.28-.385.153-.095.57-.1.926-.01.565.141.646.31.646 1.347 0 1.171-.01 1.186-.898 1.186m-.16-.265c.128 0 .312-.127.408-.282s.108-.349.027-.43c-.082-.08-.34-.074-.573.016-.234.09-.35.283-.26.43.09.146.27.266.398.266m2.65.265c-.358 0-.572-.23-.677-.728-.084-.4-.2-.955-.256-1.234-.056-.278.02-.736.171-1.017.267-.498.29-.495.835.09q.564.603.242.71c-.176.058-.32.453-.32.878 0 .424.12.771.265.771s.265.12.265.265-.236.264-.524.264m1.853 0c-.346 0-.571-.225-.662-.662l-.264-1.28c-.07-.34.046-.846.257-1.125.348-.46.383-.464.39-.042.006.254.188.463.406.463s.397.119.397.264-.179.265-.397.265q-.397 0-.397.794 0 .793.397.793c.218 0 .397.12.397.265s-.236.264-.524.264m1.303 0c-.167 0-.247-.495-.198-1.236.073-1.125.146-1.245.808-1.332.4-.053.728.013.728.146 0 .134-.239.305-.53.381-.405.106-.529.361-.529 1.09 0 .523-.125.95-.279.95m2.131 0c-.145 0-.264-.603-.264-1.339 0-.825.101-1.276.264-1.175.146.09.265.692.265 1.338s-.12 1.176-.265 1.176m2.05-.05-.991.081V.648c0-1.276.097-1.956.264-1.852.146.09.265.443.265.785 0 .47.117.59.481.495.265-.07.63.053.812.272s.293.793.246 1.275c-.077.805-.166.884-1.076.96m.067-.48c.46 0 .549-.135.48-.727-.05-.433-.244-.728-.48-.728s-.43.295-.48.728c-.069.592.02.727.48.727m3.077.477c-.49.019-.966-.041-1.058-.133s-.167-.69-.167-1.33c0-.707.104-1.098.265-.998.145.09.264.582.264 1.093 0 .743.093.912.463.842.324-.06.488-.385.545-1.077.046-.545.194-.99.331-.99s.249.576.249 1.28c0 1.27-.007 1.28-.892 1.313m2.484.052c-.346 0-.57-.224-.661-.661-.076-.364-.195-.94-.264-1.28-.07-.34.045-.846.256-1.125.349-.46.384-.464.391-.042.005.254.187.463.405.463s.397.119.397.264-.178.265-.397.265q-.396 0-.396.794 0 .793.396.793c.219 0 .397.12.397.265s-.235.264-.524.264m2.295-.004c-.32-.002-.744-.107-.944-.234s-.364-.541-.364-.921.149-.87.33-1.089.53-.397.774-.397.587.143.762.317c.174.175.317.472.317.662 0 .207-.322.344-.813.344-.634 0-.792.101-.718.463.068.333.302.44.837.383.468-.05.679.023.57.198-.094.153-.432.277-.751.274m-.183-1.583c.29 0 .529-.12.529-.265s-.238-.264-.53-.264c-.29 0-.528.119-.528.264s.238.265.529.265m4.117 1.587c-.664 0-1.207-.073-1.207-.163s.364-.578.808-1.084.768-1.117.719-1.358c-.064-.309-.32-.417-.875-.367-.746.066-.76.05-.27-.331.282-.22.645-.4.807-.4.16 0 .436.142.61.317.175.174.318.543.318.819s-.246.847-.547 1.27c-.545.764-.545.768-.016.768.293 0 .605.12.695.265.1.162-.306.264-1.042.264M132.62-.278c-.064 0-.116-.186-.116-.412 0-.227.12-.338.269-.247.147.092.2.277.116.413-.083.135-.204.246-.269.246m-6.202-2.646c-.15 0-.264-.78-.264-1.812v-1.811l.852-.025c.468-.013 1.004.103 1.19.257.187.155.339.61.339 1.01s-.178.877-.396 1.057c-.217.18-.634.266-.926.19-.422-.11-.53-.01-.53.498 0 .35-.12.636-.265.636m.992-1.637c.293-.057.463-.33.463-.744 0-.413-.17-.687-.463-.744-.255-.049-.536.099-.624.328a1.35 1.35 0 0 0 0 .832c.088.23.369.377.624.328m-2.982.579c-.198 0-.433-.12-.523-.265-.093-.15.13-.264.513-.264.373 0 .677-.111.677-.247s-.238-.322-.529-.415-.529-.4-.529-.687c0-.286.179-.588.397-.672s.605-.062.86.05c.378.165.318.234-.33.38l-.795.177.728.352c.4.194.728.56.728.811 0 .252-.189.531-.419.62s-.58.16-.778.16m5.864 0c-.326 0-.736-.143-.91-.318-.175-.174-.318-.627-.318-1.005s.143-.83.318-1.005c.174-.175.587-.318.916-.318s.723.23.873.512c.151.281.274.579.274.661s-.416.15-.926.15c-.646 0-.926.12-.926.397 0 .218.15.41.331.427s.552.007.823-.021c.293-.031.42.063.315.234-.098.157-.444.286-.77.286m-.022-1.588c.384 0 .607-.114.514-.264-.09-.146-.395-.265-.677-.265s-.514.12-.514.265.305.264.677.264m2.813 1.584a1.8 1.8 0 0 1-.797-.226c-.209-.132-.316-.576-.265-1.094.047-.48.278-.992.513-1.139.251-.157.632-.175.926-.042.44.198.417.236-.206.322-.388.053-.771.269-.852.478-.08.21-.078.56.006.779s.444.397.801.397c.365 0 .577.115.485.264-.09.146-.364.263-.61.26m1.537.004c-.145 0-.264-.595-.264-1.323s.119-1.323.264-1.323.265.595.265 1.323-.12 1.323-.265 1.323m1.349 0c-.132 0-.28-.603-.33-1.34-.051-.736-.006-1.572.1-1.858.105-.285.378-.59.606-.677s.498-.076.6.026-.023.3-.276.442c-.254.142-.461.371-.461.51 0 .138.208.255.463.26.44.007.44.02 0 .277-.317.185-.463.598-.463 1.315 0 .575-.108 1.045-.24 1.045m1.562 0c-.146 0-.265-.529-.265-1.175s.12-1.249.265-1.339c.163-.1.264.35.264 1.175 0 .737-.119 1.339-.264 1.339m2.133 0c-.264 0-.623-.172-.797-.381s-.278-.704-.23-1.098c.046-.394.277-.837.511-.984.252-.157.633-.175.927-.042.437.196.408.237-.23.324-.605.083-.727.23-.727.875 0 .657.105.777.677.777.384 0 .607.114.514.264-.09.146-.38.265-.645.265m-5.044-3.175a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m3.027 0c-.226 0-.337-.121-.246-.269s.277-.2.413-.117c.135.084.246.205.246.27 0 .063-.186.116-.413.116m-3.085-2.477q-.286.174-.137-.407c.085-.321-.027-1.114-.247-1.76-.287-.841-.545-1.177-.905-1.177-.4 0-.505.192-.505.926 0 .695.112.926.45.926.335 0 .373.077.15.3-.165.165-.486.228-.714.14-.28-.107-.415-.499-.415-1.203 0-.588-.144-1.103-.33-1.178-.265-.107-.265-.138 0-.155.181-.011.33-.2.33-.417 0-.219.12-.397.265-.397s.264.178.264.397c0 .262.263.396.773.396.643 0 .802.133.947.794.096.437.275.794.397.794s.3-.357.397-.794c.096-.436.284-.794.418-.794a.25.25 0 0 1 .243.255c0 .14-.246.912-.546 1.715s-.676 1.54-.835 1.639m2.44-.476c-.073.34-.222.529-.331.419s-.199-.942-.199-1.85v-1.649l.964.04c.586.024 1.075.216 1.247.489.192.305.199.687.022 1.19-.19.543-.437.742-.916.742-.473 0-.692.172-.787.619m.726-1.066c.293-.057.464-.33.464-.744 0-.413-.17-.687-.464-.743-.255-.05-.535.098-.623.327a1.35 1.35 0 0 0 0 .833c.088.229.368.376.623.327m-13.2.58c-.252 0-.533-.12-.623-.265-.093-.15.13-.265.513-.265.373 0 .677-.119.677-.264s-.11-.265-.245-.265-.437-.191-.67-.425c-.329-.328-.356-.509-.12-.794.169-.203.523-.369.788-.369.264 0 .562.132.662.293q.18.294-.36.122c-.296-.094-.616-.048-.709.103-.093.15.135.413.507.582.372.17.677.444.677.61s-.143.444-.318.619a1.27 1.27 0 0 1-.778.317m3.06-.103c-.447.048-.953-.052-1.124-.222-.17-.171-.31-.763-.31-1.316s.112-1.006.248-1.006c.137 0 .286.447.331.993.055.669.211.992.479.992s.424-.323.479-.992c.055-.668.212-.993.478-.993.305 0 .377.28.314 1.228-.076 1.155-.129 1.233-.895 1.316m2.447.013c-.412-.024-.8-.093-.86-.153-.061-.06-.11-.924-.11-1.919 0-1.028.113-1.808.264-1.808.145 0 .264.341.264.758 0 .673.077.742.69.625.423-.081.78.01.922.235.128.202.234.68.236 1.062s-.144.818-.326.969c-.182.15-.668.254-1.08.23m.458-.518c.16-.052.329-.413.375-.802.067-.569-.026-.707-.472-.707-.305 0-.624.18-.708.4-.085.22-.003.581.18.802.184.222.465.36.625.307m10.324.538c-.28.035-.716-.06-.971-.211-.262-.156-.463-.591-.463-1.003 0-.4.143-.87.317-1.045s.588-.318.917-.318.723.23.873.512.274.58.274.662-.427.15-.948.15c-.643 0-.911.106-.834.33.063.182.431.326.82.32.387-.006.664.113.614.265-.05.151-.319.304-.599.338m-.391-1.518c.282 0 .579-.107.66-.237.08-.13-.043-.31-.273-.398s-.528-.094-.66-.012c-.133.082-.241.26-.241.398 0 .137.231.249.514.249m4.38 1.587c-.509 0-.925-.119-.925-.264s.119-.265.264-.265.265-.532.265-1.182c0-.943-.08-1.152-.397-1.03-.218.084-.397.049-.397-.077s.254-.388.565-.582c.47-.294.603-.294.799.002.129.195.206.882.173 1.527-.039.731.059 1.212.26 1.279.176.059.32.216.32.35s-.417.242-.926.242zm15.746 15.875h5.295l-.07-11.178-.068-11.18-5.226-.07-5.225-.072v22.5zm-1.193-15.875c-.056 0-.175-.119-.265-.264s.03-.265.265-.265.354.12.264.265-.209.264-.264.264m1.19 0a.265.265 0 0 1-.264-.264.265.265 0 0 1 .53 0c0 .145-.12.264-.265.264m1.323 0a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.119.264-.265.264m89.297 48.948h-82.417v-57.15h164.835v57.15Zm-63.897-1.587h16.934v-9.26H170.34v9.26zm34.66 0h17.199v-9.26h-34.396v9.26zm23.416 0h5.424v-9.26h-10.847v9.26zm23.416 0h17.198v-9.26h-34.396v9.26zm34.925 0h17.198v-9.26h-34.396v9.26zm23.019 0H332v-9.26h-10.584v9.26zM187.273 26.71h16.934v-9.79H170.34v9.79zm34.66 0h17.199v-9.79h-34.396v9.79zm23.417 0h5.423v-9.79h-10.847v9.79zm23.415 0h17.198v-9.79h-34.396v9.79zm34.925 0h17.198v-9.79h-34.396v9.79zm23.013 0H332v-9.801l-5.226.072-5.225.071-.073 4.829-.072 4.829zm-139.43-10.32h16.934V6.999H170.34v9.393zm34.66 0h17.199V6.999l-17.198.07-17.198.07v9.253zm23.417 0h5.423v-4.696l.001-4.696-5.424.077-5.424.076v9.24zm23.349-.063 17.132-.068v-4.565c0-2.51-.09-4.564-.199-4.564h-34.065v9.265zm34.985.064h17.204V7.13h-16.933c-9.314 0-17.023-.03-17.132-.067-.11-.036-.231 2.048-.27 4.63l-.073 4.697zm23.149 0H332V6.998l-5.226.054-5.225.055-.074 4.3c-.04 2.366-.014 4.455.058 4.643.1.262 1.327.34 5.299.34M187.273 5.278h16.934V-17.21H170.34V5.278zM174.74-4.034c-.49.018-.966-.042-1.058-.134s-.167-.376-.167-.63c0-.305.283-.527.82-.645.451-.099.719-.277.595-.396-.123-.118-.522-.263-.886-.322l-.661-.107.73-.21c.477-.136.869-.095 1.125.118.22.181.394.762.394 1.31 0 .932-.045.984-.892 1.016m-.167-.477c.291 0 .53-.12.53-.265s-.239-.264-.53-.264c-.29 0-.529.119-.529.264s.238.265.53.265m2.542.529c-.185 0-.416-.08-.513-.176-.097-.097-.176-.55-.176-1.006s-.143-.972-.318-1.146c-.247-.247-.247-.318 0-.318.175 0 .318-.179.318-.397s.119-.397.264-.397.265.179.265.397c0 .247.25.397.661.397s.662-.15.662-.397c0-.218.119-.397.264-.397s.265.179.265.397.208.4.463.405c.44.008.44.021 0 .278-.276.16-.463.586-.463 1.05q.001.779.397.78c.218 0 .397.128.397.284s-.268.245-.596.198c-.476-.068-.622-.296-.727-1.143-.078-.621-.27-1.047-.463-1.032-.182.015-.45.045-.596.067-.145.021-.264.396-.264.833 0 .542.13.794.412.794.227 0 .34.119.25.264s-.316.265-.502.265m3.28 0c-.146 0-.265-.58-.265-1.29 0-1.2.046-1.29.661-1.29.364 0 .662.092.662.203s-.179.272-.397.356c-.25.096-.397.5-.397 1.087 0 .513-.12.934-.265.934m1.851 0c-.145 0-.264-.595-.264-1.323s.119-1.323.264-1.323.265.595.265 1.323-.12 1.323-.265 1.323m1.994-.05-.935-.036v-1.941c0-1.118.112-1.942.264-1.942.146 0 .265.34.265.757 0 .663.082.742.654.632.51-.097.722.026.968.566.236.518.24.855.017 1.345-.24.528-.477.647-1.233.618m.32-.53c.294-.056.464-.33.464-.743s-.17-.687-.463-.744c-.255-.049-.536.099-.624.328a1.35 1.35 0 0 0 0 .832c.088.23.369.377.624.328m3.154.527c-.486.019-1.022-.105-1.191-.274s-.308-.76-.308-1.314c0-.552.112-1.005.249-1.005.136 0 .285.447.33.992.066.789.191.992.612.992.42 0 .546-.203.611-.992.045-.545.194-.992.33-.992.137 0 .25.576.25 1.28 0 1.268-.009 1.28-.883 1.313m2.366.053c-.185 0-.416-.08-.513-.177s-.177-.549-.177-1.005-.143-.972-.317-1.146c-.247-.247-.247-.318 0-.318.174 0 .317-.179.317-.397s.12-.397.265-.397.264.179.264.397.209.4.463.405c.441.008.441.021 0 .278-.275.16-.463.586-.463 1.05 0 .53.132.78.413.78.227 0 .339.12.249.265s-.315.265-.5.265m2.126 0c-.327 0-.736-.143-.91-.318-.175-.174-.318-.627-.318-1.005s.143-.83.317-1.005.587-.318.917-.318.722.23.873.512c.15.281.274.579.274.661s-.427.15-.948.15c-.64 0-.913.107-.84.33.06.183.43.37.82.416.392.046.644.195.56.33-.084.136-.42.247-.745.247M192.2-5.57c.589 0 .643-.06.361-.4-.252-.304-.418-.328-.694-.1-.199.165-.361.346-.361.4s.312.1.694.1m4.2 1.588c-.509 0-.926-.12-.926-.265s.179-.264.397-.264c.295 0 .397-.311.397-1.209 0-1.13-.039-1.197-.595-1.03l-.595.177.568-.589c.313-.324.7-.508.86-.409s.291.828.291 1.62.12 1.44.265 1.44.265.119.265.264-.417.265-.927.265m-14.155-3.175a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m-7.564-3.496c-.282.042-.66-.07-.84-.251-.18-.18-.327-.637-.327-1.016 0-.378.143-.83.318-1.005.174-.175.59-.318.926-.318.334 0 .608.12.608.265s-.305.265-.679.265c-.585 0-.667.1-.595.727.065.565.219.723.686.706.331-.012.56.107.509.265-.052.157-.325.32-.606.362m2.21.056c-.198 0-.504-.143-.678-.317s-.318-.627-.318-1.006c0-.378.143-.83.318-1.005.174-.175.567-.318.873-.318.305 0 .698.143.873.318s.318.647.318 1.049c0 .452-.196.836-.512 1.005-.282.151-.675.274-.873.274m.314-.588c.226-.043.448-.404.494-.803.072-.624-.011-.725-.596-.725-.535 0-.679.13-.679.617 0 .34.084.7.186.803.102.102.37.15.595.108m2.13.456c-.163.1-.265-.347-.265-1.167v-1.33l1.522.03c.836.017 1.67.147 1.852.29.182.141.33.653.33 1.135 0 .483-.111.948-.248 1.032-.136.084-.285-.295-.33-.842-.058-.697-.222-1.022-.546-1.083-.37-.07-.463.1-.463.842 0 .511-.112.999-.248 1.083-.137.084-.286-.295-.331-.842-.058-.697-.221-1.022-.546-1.083-.37-.07-.463.1-.463.842 0 .511-.119 1.003-.264 1.093m4.535-.023c-.126.078-.304.065-.397-.028s-.17-.684-.17-1.312v-1.143l1.654.035c.91.02 1.803.152 1.985.294.182.141.33.652.33 1.135s-.119.952-.264 1.042c-.16.099-.265-.268-.265-.929 0-.981-.06-1.084-.595-1.008-.478.068-.579.228-.51.808.046.398-.014.874-.133 1.058-.14.216-.264-.042-.35-.72-.09-.73-.275-1.083-.595-1.144-.37-.07-.463.099-.463.842 0 .511-.102.993-.227 1.07m5.267.155c-.277 0-.697-.193-.934-.43-.237-.236-.394-.73-.35-1.098.045-.367.27-.786.503-.931s.73-.187 1.107-.093c.376.095.762.416.856.714.101.318-.003.808-.253 1.19-.233.356-.651.648-.929.648m-.08-.578c.28-.053.498-.375.548-.813.068-.587-.022-.725-.471-.725-.306 0-.624.178-.708.396s-.08.585.008.814.369.377.624.328zm2.184.578c-.145 0-.264-.583-.264-1.296v-1.297l.992.04c.99.04.992.043 1.073 1.296.048.756-.031 1.257-.199 1.257-.153 0-.279-.476-.279-1.058 0-.882-.088-1.058-.53-1.058-.44 0-.528.176-.528 1.058 0 .582-.12 1.058-.265 1.058m30.689 15.875h17.2v-22.493L222-17.147l-17.132.068L204.8-5.9l-.069 11.178zm-12.312-9.31c-.642.024-.988-.1-1.1-.393-.1-.257.03-.57.326-.786.27-.197.646-.359.836-.359s.347-.119.347-.264-.322-.265-.715-.265c-.53 0-.637-.077-.416-.298.168-.168.594-.224.979-.127.6.15.68.306.68 1.313 0 1.126-.013 1.144-.937 1.178m-.136-.48c.3 0 .545-.118.545-.264 0-.145-.172-.264-.382-.264s-.455.119-.544.264.081.265.38.265m2.677.53c-.283 0-.569-.09-.637-.2-.067-.108-.145-.674-.173-1.256a21 21 0 0 1-.025-1.52c.014-.255.145-.464.29-.464.146 0 .265.179.265.397 0 .247.25.397.661.397s.662-.15.662-.397c0-.218.119-.397.264-.397s.265.179.265.397.208.4.463.405c.44.008.44.026 0 .36-.255.194-.463.666-.463 1.05 0 .445.144.699.397.699.218 0 .396.127.396.283s-.267.245-.595.198c-.495-.07-.609-.274-.677-1.209-.044-.618-.183-1.124-.309-1.124-.125 0-.416.072-.646.16-.248.095-.418.472-.418.926 0 .504.135.766.397.766.218 0 .396.119.396.264s-.23.265-.513.265m3.16 0c-.146 0-.265-.577-.265-1.283 0-1.244.024-1.283.793-1.305.437-.012.794.075.794.193 0 .12-.238.279-.529.355-.405.106-.53.36-.53 1.089 0 .523-.118.95-.264.95m2.122 0c-.158 0-.351-.167-.43-.372-.078-.204-.104-.77-.058-1.257.047-.486.204-.885.35-.885.145 0 .3.566.345 1.257.05.778-.03 1.257-.207 1.257m1.64-.056-.852-.025v-1.944c0-1.12.112-1.944.264-1.944.146 0 .265.365.265.812 0 .697.076.787.542.64.298-.095.714-.03.926.146.211.176.384.647.384 1.048 0 .4-.152.855-.339 1.01-.186.154-.722.27-1.19.257m.404-.524c.293-.056.463-.33.463-.743s-.17-.687-.463-.744c-.255-.049-.536.098-.624.328a1.35 1.35 0 0 0 0 .832c.088.23.369.377.624.327m3.153.527c-.486.019-1.022-.105-1.191-.274s-.308-.76-.308-1.314c0-.553.112-1.005.249-1.005.136 0 .285.446.33.992.066.789.191.992.612.992.42 0 .546-.203.611-.992.045-.546.194-.992.33-.992.137 0 .25.576.25 1.28 0 1.268-.009 1.28-.883 1.313m2.514.053c-.267 0-.565-.08-.662-.177s-.176-.549-.176-1.005-.143-.972-.317-1.147c-.247-.246-.247-.317 0-.317.174 0 .317-.179.317-.397s.12-.397.265-.397.264.179.264.397.209.4.463.405c.441.008.441.02 0 .278-.275.16-.463.586-.463 1.05q.001.779.397.78c.218 0 .397.12.397.265s-.218.265-.485.265m2.025-.004c-.244.002-.631-.183-.86-.412s-.415-.637-.415-.907.187-.679.415-.907c.229-.229.622-.416.873-.416.252 0 .6.143.775.318.175.174.318.472.318.661 0 .217-.343.344-.926.344-.51 0-.926.113-.926.251 0 .139.195.361.434.495.24.134.686.189.992.122.455-.098.485-.068.161.163-.218.156-.596.286-.84.288m-.1-1.584c.372 0 .677-.119.677-.264s-.231-.265-.514-.265c-.282 0-.587.12-.677.265-.093.15.13.264.514.264m4.264 1.588c-.663 0-1.206-.105-1.206-.232 0-.128.186-.387.414-.576.228-.19.59-.684.805-1.099.214-.415.313-.88.218-1.033s-.457-.207-.804-.12c-.352.089-.633.042-.633-.105 0-.146.3-.34.665-.432.381-.095.832-.027 1.058.16.217.18.394.541.394.803s-.309.843-.685 1.29l-.685.815h.669c.368 0 .743.119.833.264.1.162-.306.265-1.043.265m-14.054-3.175c-.227 0-.338-.121-.246-.27.091-.147.277-.2.412-.116.136.084.246.205.246.27 0 .063-.185.116-.412.116m-7.705-3.444c-.171.002-.498-.183-.727-.412s-.416-.68-.416-1.005.143-.732.318-.907c.174-.175.584-.318.91-.318s.662.111.745.247c.084.136-.177.284-.58.33-.581.068-.731.22-.731.746 0 .473.15.673.529.7.29.02.648.052.793.07s.086.148-.132.289-.537.258-.709.26m2.685-.052c-.288.042-.742-.083-1.008-.278q-.483-.354-.395-1.107c.049-.415.279-.873.51-1.018.233-.146.725-.189 1.094-.096.368.093.73.398.804.678.073.28-.005.788-.174 1.127-.169.34-.543.652-.831.694m-.19-.522c.28-.053.496-.375.547-.813.068-.587-.022-.725-.471-.725-.306 0-.624.178-.708.396s-.08.585.008.814.369.377.624.328zm2.183.578c-.146 0-.265-.58-.265-1.288v-1.288l1.786.031 1.786.032.08 1.257c.05.755-.03 1.256-.198 1.256-.153 0-.279-.485-.279-1.077 0-.884-.083-1.062-.463-.99-.323.06-.487.385-.545 1.077-.045.545-.194.99-.33.99-.137 0-.25-.476-.25-1.058 0-.882-.087-1.058-.528-1.058s-.53.176-.53 1.058c0 .582-.119 1.058-.264 1.058m4.498 0c-.146 0-.265-.577-.265-1.283v-1.284l1.654-.004c.928-.002 1.739.126 1.848.292.107.162.196.741.198 1.287s-.115.992-.26.992-.265-.485-.265-1.078c0-.883-.083-1.062-.463-.99-.323.062-.488.386-.545 1.078-.045.545-.194.99-.33.99-.137 0-.25-.476-.25-1.058 0-.882-.087-1.059-.528-1.059s-.53.177-.53 1.059c0 .582-.119 1.058-.264 1.058zm5.27 0c-.259 0-.657-.187-.886-.416s-.415-.622-.415-.875.154-.671.343-.93c.228-.312.605-.44 1.12-.381.566.065.844.284 1.027.808.2.57.15.832-.234 1.257-.268.296-.698.537-.956.537m-.151-.529c.205 0 .52-.177.699-.393.18-.217.257-.574.173-.794s-.4-.4-.7-.4-.614.178-.698.396a1.3 1.3 0 0 0 0 .794c.084.219.32.397.526.397m2.273.53c-.137 0-.248-.584-.248-1.297v-1.297l.992.04.992.04.082 1.282q.08 1.28-.199 1.109c-.154-.096-.28-.592-.28-1.103 0-.743-.093-.913-.463-.842-.324.06-.488.385-.545 1.077-.045.545-.194.99-.33.99M245.35 5.277h5.424V-17.21h-10.848V5.278zm-1.455-15.875a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.12.264-.265.264m1.323 0a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.12.264-.265.264m1.19 0c-.055 0-.174-.119-.264-.264s.03-.265.265-.265.354.12.264.265-.209.264-.264.264m22.361 15.875h17.2L285.9-5.9l-.07-11.179-17.131-.068-17.132-.068V5.278zm-12.262-2.645c-.485 0-.961-.08-1.058-.177s-.177-.395-.177-.661c0-.274.202-.5.463-.517.255-.017.553-.017.662 0s.198-.16.198-.396c0-.298-.16-.386-.529-.29-.29.077-.593.034-.672-.093-.079-.128.178-.313.57-.411.53-.133.805-.054 1.07.307.195.268.355.88.355 1.362 0 .816-.06.875-.882.875m-.424-.315a.83.83 0 0 0 .463-.463c.066-.198-.033-.297-.232-.231a.83.83 0 0 0-.463.463c-.066.198.033.297.232.231m2.805.315c-.194 0-.432-.08-.529-.177s-.176-.563-.176-1.036-.149-.93-.33-1.014c-.266-.124-.266-.186 0-.31.181-.084.33-.345.33-.578 0-.329.132-.283.584.202.387.415.476.663.264.733-.175.059-.319.454-.319.879 0 .424.119.771.265.771.145 0 .264.12.264.265s-.159.265-.353.265m1.852 0c-.194 0-.432-.08-.529-.177s-.176-.563-.176-1.036-.149-.93-.33-1.014c-.265-.124-.265-.186 0-.31.181-.084.33-.345.33-.578 0-.329.132-.283.584.202.387.415.476.663.265.733-.176.059-.32.454-.32.879 0 .424.12.771.265.771s.264.12.264.265-.159.265-.353.265m1.412 0c-.146 0-.265-.566-.265-1.257 0-1.154.055-1.26.662-1.295.363-.021.66.055.66.17 0 .114-.178.277-.396.36-.25.096-.397.5-.397 1.087 0 .514-.119.935-.264.935m1.852 0c-.146 0-.265-.596-.265-1.323 0-.728.12-1.323.265-1.323s.264.595.264 1.323c0 .727-.119 1.323-.264 1.323m1.975 0h-.917V.78c0-1.058.113-1.852.265-1.852.145 0 .264.287.264.637 0 .49.113.607.49.509.27-.07.686.068.926.308s.436.614.436.832-.123.625-.274.907c-.19.355-.555.512-1.19.512m.113-.53c.275 0 .565-.167.643-.37.079-.205-.01-.58-.196-.835s-.476-.378-.643-.275c-.168.104-.305.48-.305.834 0 .458.146.646.501.646m3.106.477c-.49.019-.967-.041-1.059-.133s-.167-.69-.167-1.33c0-.707.104-1.098.265-.998.145.09.265.573.265 1.074 0 .734.102.91.529.91.426 0 .529-.176.529-.91 0-.5.119-.984.264-1.074.163-.1.265.336.265 1.132 0 1.288-.005 1.296-.891 1.33m2.479.052c-.44 0-.53-.176-.53-1.036 0-.57-.148-1.106-.33-1.19-.265-.124-.265-.186 0-.31.182-.084.33-.33.33-.544s.121-.316.27-.224c.147.091.2.277.116.412-.084.136.033.247.26.247s.413.119.413.264-.12.265-.265.265-.264.357-.264.794c0 .436.119.793.264.793s.265.12.265.265-.238.264-.53.264m2.286 0c-.326 0-.736-.142-.91-.317s-.318-.647-.318-1.05c0-.452.195-.835.512-1.004.281-.151.63-.274.774-.274s.45.187.68.415c.228.23.415.527.415.662s-.417.246-.926.246q-.924 0-.926.368c0 .203.179.437.397.521s.595.076.837-.017q.443-.17.249.14c-.105.171-.458.31-.784.31m-.185-1.587c.3 0 .544-.12.544-.265s-.171-.264-.38-.264c-.21 0-.456.119-.546.264s.082.265.382.265m4.249 1.57c-1.046 0-1.135-.042-.728-.35q.463-.352.463-1.44c0-.914-.074-1.063-.463-.94-.318.1-.256-.037.198-.437l.662-.583.08 1.535c.056 1.06.22 1.64.53 1.875.387.294.284.34-.742.34M263.855-.277c-.064 0-.117-.186-.117-.412 0-.227.121-.338.269-.247s.2.277.117.413c-.084.135-.205.246-.27.246m-6.202-2.646c-.151 0-.265-.779-.265-1.808V-6.54l.86-.008c.473-.004 1.009.11 1.19.253s.331.58.331.97-.143.85-.317 1.025-.592.318-.926.318c-.432 0-.609.153-.609.53 0 .29-.119.528-.264.528m.991-1.638c.293-.056.464-.33.464-.743s-.171-.687-.464-.744c-.255-.049-.536.099-.624.328a1.35 1.35 0 0 0 0 .832c.088.23.369.377.624.327m-2.62.529c-.386.045-.786-.054-.889-.22-.123-.199.018-.272.414-.214.33.049.647-.05.705-.22s-.14-.386-.439-.481c-.305-.097-.544-.4-.544-.692 0-.286.179-.589.397-.672s.605-.06.86.055c.406.181.39.22-.132.31-.328.058-.595.208-.595.333s.245.307.544.402c.37.117.519.356.463.745-.056.396-.298.598-.784.654m5.502.05c-.326 0-.735-.142-.91-.317-.175-.174-.318-.627-.318-1.005s.143-.83.318-1.005.567-.318.873-.318.699.143.873.318c.175.174.318.472.318.661 0 .218-.347.344-.948.344-.64 0-.913.107-.84.33.06.183.429.37.82.416.392.046.644.195.56.33-.084.136-.42.247-.746.247m-.053-1.587c.373 0 .678-.119.678-.264s-.232-.265-.514-.265-.587.12-.677.265c-.093.15.13.264.513.264m2.811 1.588c-.265 0-.623-.171-.797-.381s-.278-.703-.231-1.098c.047-.394.277-.837.512-.984.252-.157.633-.175.926-.042.437.196.409.237-.228.324-.606.083-.728.23-.728.876 0 .656.105.776.677.776.384 0 .606.114.514.264-.09.146-.38.265-.645.265m1.57 0c-.145 0-.264-.595-.264-1.323s.12-1.323.265-1.323.264.595.264 1.323-.119 1.323-.264 1.323m1.541-.91c-.047.573-.168.915-.269.76-.1-.154-.21-.81-.244-1.455-.033-.645.084-1.441.26-1.769.175-.327.493-.595.706-.595.214 0 .388.106.388.236s-.179.305-.397.389-.397.275-.397.425.209.277.463.281c.431.008.433.032.02.346-.248.189-.482.8-.53 1.381m1.635.91c-.146 0-.265-.595-.265-1.323s.12-1.323.265-1.323.264.595.264 1.323-.119 1.323-.264 1.323m2 0c-.337 0-.755-.171-.929-.381s-.277-.703-.23-1.098c.046-.394.277-.837.512-.984.238-.149.648-.174.926-.056.452.19.437.227-.163.384-.478.126-.661.354-.661.824 0 .513.154.667.732.734.403.046.664.195.58.33-.084.136-.429.247-.766.247m-5.175-3.175a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m3.175 0a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m-3.12-2.646c-.344.35-.37.32-.228-.265.09-.366-.029-1.163-.266-1.785-.291-.768-.583-1.125-.92-1.125-.37 0-.493.195-.493.78 0 .447.184.885.43 1.022.321.18.349.293.107.442-.178.11-.482.037-.675-.162-.193-.2-.372-.779-.398-1.288a17 17 0 0 1-.02-1.39c.015-.254.146-.462.291-.462.146 0 .265.178.265.397 0 .261.261.396.768.396.627 0 .824.158 1.074.86l.306.86.368-.86c.203-.473.49-.86.637-.86s.015.685-.295 1.522-.738 1.7-.952 1.918m2.277-.372c-.046.378-.173.597-.282.486s-.198-.944-.198-1.85v-1.648l1.124.039c1.071.036 1.129.08 1.209.915.046.482-.064 1.056-.245 1.274-.2.242-.562.338-.926.246-.493-.123-.612-.03-.682.538m.949-1.029c.16-.052.328-.413.374-.802.068-.569-.025-.707-.471-.707-.305 0-.624.18-.709.4s-.003.581.18.802c.184.222.466.36.626.307m-13.474.607c-.198 0-.433-.119-.523-.264-.093-.15.13-.265.514-.265.372 0 .677-.104.677-.232s-.26-.404-.576-.615c-.377-.25-.517-.534-.405-.826.097-.253.457-.444.84-.444.368 0 .67.128.67.283 0 .162-.226.21-.53.114-.362-.115-.528-.047-.528.216 0 .211.238.446.529.522.305.08.529.361.529.664 0 .29-.188.598-.419.687-.23.088-.58.16-.778.16m3.123-.098c-.631.068-.923-.04-1.125-.417-.15-.28-.272-.873-.272-1.32 0-.446.112-.81.249-.81.136 0 .285.446.33.992.066.788.191.992.612.992.42 0 .546-.204.611-.992.045-.546.2-.993.345-.993.148 0 .228.537.183 1.228-.077 1.168-.123 1.233-.933 1.32m2.55.02-.77-.054v-1.918c0-1.103.111-1.919.263-1.919.146 0 .265.29.265.644 0 .506.156.662.727.728.61.07.742.226.812.96.046.483-.053 1.043-.22 1.245-.168.202-.652.343-1.076.314zm.321-.45c.116 0 .319-.21.45-.464.13-.255.184-.612.119-.794s-.347-.33-.626-.33c-.355 0-.507.185-.507.617 0 .34.08.697.177.794a.65.65 0 0 0 .387.176m10.363.476c-.298.044-.735-.113-.972-.35-.236-.236-.43-.695-.43-1.019s.143-.732.318-.907c.174-.175.567-.318.873-.318.305 0 .698.143.873.318s.317.472.317.661c0 .219-.346.344-.948.344-.643 0-.911.107-.834.331.063.182.432.326.82.32s.664.113.615.265c-.05.151-.335.311-.632.355m-.359-1.535c.282 0 .58-.11.663-.242.082-.133 0-.294-.183-.358a1.14 1.14 0 0 0-.663.006c-.182.067-.33.228-.33.358s.23.236.513.236zm4.249 1.587q-1.056-.001-1.058-.35c0-.193.297-.63.661-.973.364-.341.661-.912.661-1.267 0-.547-.101-.627-.661-.52-.364.07-.661.026-.661-.096 0-.123.299-.298.664-.39.382-.096.833-.028 1.059.16.216.18.393.509.393.732s-.303.804-.675 1.29l-.675.885h.675c.372 0 .675.12.675.265s-.476.264-1.058.264m27.778 15.875h17.201v-22.493l-17.132.068-17.131.068-.07 11.179-.068 11.178zM291.38 2.633c-.605 0-.99-.147-1.094-.415-.087-.228-.054-.514.075-.636.128-.122.448-.262.71-.313.263-.05.47-.21.46-.356s-.248-.268-.53-.273c-.28-.004-.59-.088-.688-.185-.098-.098.135-.257.518-.353.413-.103.856-.042 1.09.152.224.186.393.767.393 1.353 0 .997-.026 1.026-.934 1.026m.034-.444c.266-.102.317-.246.147-.415-.142-.143-.39-.178-.551-.08-.16.1-.227.287-.147.416.08.13.328.165.551.079m2.57.435c-.32.005-.635-.08-.7-.19-.067-.11-.15-.675-.186-1.257-.035-.582-.047-1.289-.027-1.571.034-.478.077-.47.62.114.388.415.477.663.265.733-.175.059-.319.411-.319.783s.208.835.463 1.028c.43.327.422.352-.117.36m1.761.008c-.295 0-.583-.149-.639-.33-.055-.183-.161-.768-.235-1.3-.085-.61.003-1.151.233-1.456.342-.452.369-.453.377-.023a.48.48 0 0 0 .471.472c.441.008.441.025 0 .36-.255.193-.463.665-.463 1.05 0 .444.144.698.397.698.218 0 .397.119.397.264s-.242.265-.538.265m1.332 0c-.146 0-.265-.565-.265-1.257 0-1.154.054-1.26.662-1.295.363-.02.66.056.66.17s-.178.277-.396.361c-.25.096-.397.5-.397 1.087 0 .514-.119.934-.264.934m1.852 0c-.146 0-.265-.529-.265-1.175s.12-1.249.265-1.338c.163-.101.264.35.264 1.175 0 .736-.119 1.338-.264 1.338m1.91-.056-.852-.024V.755c0-.988.12-1.87.265-1.96.154-.095.264.18.264.664 0 .714.075.804.542.656.298-.095.715-.029.926.146.211.176.384.647.384 1.048s-.152.856-.338 1.01-.722.27-1.19.257m.404-.523c.293-.057.464-.33.464-.744 0-.413-.171-.687-.464-.743-.255-.05-.536.098-.624.327a1.35 1.35 0 0 0 0 .833c.088.229.369.376.624.327m3.153.527c-.486.018-1.021-.106-1.19-.275s-.309-.694-.309-1.165.112-.927.249-1.011c.136-.085.285.295.33.844.066.794.191.998.612.998s.546-.204.612-.998c.045-.549.194-.929.33-.844.137.084.249.663.249 1.285 0 1.1-.025 1.133-.883 1.166m2.382.052c-.194 0-.432-.08-.53-.176-.096-.097-.176-.55-.176-1.006s-.142-.972-.317-1.146c-.247-.247-.247-.318 0-.318.175 0 .317-.2.317-.446 0-.365.107-.332.584.18.387.415.477.663.265.733-.176.059-.32.454-.32.878 0 .425.12.772.265.772s.265.119.265.265c0 .145-.159.264-.353.264m2.11 0c-.326 0-.736-.143-.91-.317s-.318-.583-.318-.908c0-.324.187-.776.416-1.005s.577-.416.775-.416c.197 0 .546.187.774.416.23.229.416.526.416.662 0 .135-.417.245-.926.245q-.924 0-.926.369c0 .202.179.437.397.52s.595.077.837-.016q.443-.171.25.14c-.106.17-.459.31-.785.31m-.037-1.587c.394 0 .622-.114.529-.265-.09-.145-.328-.265-.53-.265-.2 0-.439.12-.529.265-.093.15.135.265.53.265m4.1 1.587c-.581 0-1.058-.067-1.058-.15s.308-.553.684-1.046c.375-.492.638-1.11.584-1.371-.064-.31-.302-.454-.683-.413-.322.035-.585-.041-.585-.17 0-.128.189-.305.419-.393s.52-.161.642-.161c.124 0 .411.187.64.416s.416.576.416.773-.308.724-.685 1.172l-.685.814h.685c.377 0 .685.119.685.265 0 .145-.476.264-1.058.264m-13.874-2.91c-.065 0-.186-.111-.27-.247-.083-.135-.03-.32.117-.412s.27.02.27.246c0 .227-.053.413-.117.413m-6.234-2.646c-.15 0-.264-.771-.264-1.786v-1.786l.932-.066c.793-.057.972.037 1.197.63.204.535.166.85-.16 1.349-.287.436-.594.607-.934.518-.396-.103-.507.007-.507.504 0 .35-.119.637-.264.637zm.794-1.588c.412 0 .53-.176.53-.793 0-.618-.118-.794-.53-.794s-.53.176-.53.794c0 .617.118.793.53.793m-2.81.53c-.346 0-.63-.125-.63-.277s.15-.256.331-.233c.182.024.51.025.728.002.27-.028.152-.24-.37-.667-.495-.406-.708-.775-.603-1.049.09-.233.463-.422.832-.422s.67.119.67.264-.238.265-.53.265c-.29 0-.528.119-.528.264s.096.265.214.265.44.166.717.368c.428.313.45.432.15.794-.194.234-.636.425-.982.425m5.673-.004c-.244.002-.631-.183-.86-.412s-.415-.637-.415-.907.187-.679.415-.907c.229-.23.622-.416.873-.416.252 0 .6.143.775.317s.318.473.318.662c0 .216-.343.344-.926.344-.51 0-.926.113-.926.251s.195.361.434.495c.24.133.686.189.992.122.455-.098.485-.068.161.163-.218.156-.597.285-.84.288m-.1-1.584c.372 0 .677-.119.677-.264s-.231-.265-.514-.265c-.282 0-.587.119-.677.265-.093.15.13.264.514.264m2.672 1.588c-.189 0-.485-.172-.66-.381-.173-.21-.277-.704-.23-1.098s.277-.837.512-.984c.238-.15.648-.174.926-.057.453.192.438.227-.162.385-.478.126-.662.354-.662.821 0 .51.167.677.794.79.65.116.707.176.31.332-.267.106-.64.192-.828.192m1.973 0c-.145 0-.264-.596-.264-1.323 0-.728.119-1.323.264-1.323s.265.595.265 1.323c0 .727-.12 1.323-.265 1.323m1.323 0c-.145 0-.264-.453-.264-1.006s-.143-1.148-.318-1.323c-.225-.225-.23-.317-.018-.317.164 0 .337-.268.383-.596.055-.382.298-.625.68-.68.328-.046.596.043.596.199s-.18.283-.397.283a.4.4 0 0 0-.397.397c0 .218.143.397.317.397.247 0 .247.07 0 .317-.174.175-.317.77-.317 1.323s-.12 1.006-.265 1.006m1.588 0c-.146 0-.265-.596-.265-1.323 0-.728.12-1.323.265-1.323s.264.595.264 1.323c0 .727-.119 1.323-.264 1.323m1.963 0c-.438 0-.75-.217-.953-.662-.226-.495-.226-.828 0-1.323.203-.445.515-.661.953-.661.358 0 .72.11.804.246s-.177.285-.58.331c-.582.067-.732.22-.732.746s.15.678.732.745c.403.047.664.195.58.331s-.446.247-.804.247m-4.874-3.175a.265.265 0 0 1-.264-.265c0-.146.119-.265.264-.265s.265.12.265.265-.12.265-.265.265m2.91 0a.265.265 0 0 1-.264-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m-2.942-2.527c-.137.148-.232-.1-.232-.604 0-.47-.179-1.283-.397-1.805s-.397-.995-.397-1.05.119-.1.264-.1.43.387.634.86l.37.86.318-.86c.175-.473.425-.86.557-.86.13 0 .238.055.238.123 0 .067-.253.811-.562 1.653s-.666 1.645-.793 1.783m2.149.013c-.167.103-.265-.518-.265-1.678v-1.841l.987.04c.818.033 1.029.162 1.239.759.2.573.15.832-.249 1.273-.285.315-.705.5-.974.43-.329-.086-.473.025-.473.365 0 .269-.12.562-.265.652m.942-1.455c.178 0 .393-.179.477-.397a1.3 1.3 0 0 0 0-.794c-.084-.218-.378-.397-.654-.397-.348 0-.5.188-.5.618 0 .34.079.696.176.793s.322.177.5.177m-13.107.529c-.277 0-.577-.12-.667-.265s.081-.264.381-.264.545-.105.545-.232c0-.128-.26-.405-.576-.615-.377-.25-.517-.535-.405-.826.097-.254.457-.444.84-.444.369 0 .67.124.67.276s-.196.242-.436.199-.487.07-.55.253c-.064.182.048.33.25.33.2 0 .503.138.67.306.21.21.224.457.044.793-.144.27-.488.489-.766.489m2.97-.072c-.4.005-.876-.046-1.058-.114-.196-.073-.33-.599-.33-1.291 0-.643.119-1.169.264-1.169s.265.485.265 1.078c0 .883.083 1.062.463.99.323-.061.488-.386.545-1.078.045-.544.194-.99.33-.99.137 0 .25.577.25 1.283 0 1.22-.036 1.283-.728 1.291m2.317-.005-.794-.055v-1.918c0-1.103.112-1.919.264-1.919.146 0 .265.341.265.757 0 .663.081.742.654.633.509-.098.722.025.963.555.253.555.23.801-.124 1.341-.323.493-.636.648-1.227.606zm.422-.452c.184 0 .41-.237.502-.527s.093-.647.003-.794c-.09-.146-.396-.266-.678-.266-.362 0-.514.182-.514.617 0 .34.08.697.176.794.097.097.328.176.512.176zm2.629.53c-.213 0-.499-.21-.635-.464s-.272-.82-.302-1.257a13 13 0 0 1-.026-1.256c.015-.255.147-.463.292-.463.146 0 .265.178.265.397 0 .218.208.4.463.404.44.008.44.021 0 .278-.255.148-.463.565-.463.926s.178.726.397.81c.218.083.396.258.396.388s-.174.236-.387.236m7.471-.005c-.251.002-.634-.266-.85-.597-.221-.336-.326-.862-.24-1.193.086-.33.434-.663.784-.75.346-.088.808-.09 1.027-.006s.398.395.398.69c0 .437-.172.538-.918.538-.707 0-.883.09-.766.397.09.235.492.398.984.4.634.004.738.065.435.261a1.9 1.9 0 0 1-.854.26zm.06-1.583c.341 0 .529-.134.463-.331a.52.52 0 0 0-.463-.33.52.52 0 0 0-.463.33c-.065.197.122.33.463.33m4.278 1.587c-.558 0-1.091-.076-1.185-.17s.184-.574.617-1.068c.434-.493.788-1.145.788-1.448 0-.447-.126-.526-.672-.422-.424.081-.635.02-.573-.168.054-.162.446-.296.87-.296.667 0 .783.11.85.808.055.55-.093.963-.462 1.297-.298.27-.542.592-.542.715 0 .122.298.223.661.223s.662.12.662.265-.457.264-1.014.264m15.69 15.875H332v-22.5l-5.226.071-5.225.072-.07 10.848c-.038 5.966-.012 10.996.058 11.178.096.25 1.403.331 5.295.331m-1.182-15.875a.265.265 0 0 1-.265-.264.265.265 0 0 1 .53 0c0 .145-.12.264-.265.264m1.322 0a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.119.264-.265.264m1.191 0c-.055 0-.175-.119-.264-.264s.029-.265.264-.265.355.12.265.265-.21.264-.265.264M-12.355 13.216h-.661V6.6h.661c.584 0 .662.113.662.955 0 .811.069.923.463.745.254-.114.812-.203 1.239-.196.474.008.963.244 1.256.607.32.394.481 1.031.481 1.9 0 1.033-.135 1.44-.649 1.954-.357.358-.9.65-1.208.65a2.7 2.7 0 0 1-1.07-.274c-.353-.189-.512-.189-.512 0 0 .15-.298.274-.662.274m1.826-1.059c.197 0 .5-.17.673-.378.172-.208.276-.833.23-1.389-.076-.926-.149-1.01-.87-1.01-.615 0-.842.154-1.036.706-.188.535-.14.873.198 1.39.246.375.608.681.805.681m137.853-37.9c-68.553.036-124.72-.014-124.818-.111S2.33-38.81 2.33-54.43v-28.399h249.769l-.068 28.509-.067 28.509zM21.049-27.33l16.867-.068v-9.26l-16.867-.068-16.867-.068v9.533zm34.733.065h17.204l-.073-4.697-.072-4.696-17.132-.068-17.131-.068v9.529zm23.27 0h5.563v-9.536l-5.49.071-5.49.072-.072 4.696-.072 4.697zm23.284 0h17.204v-9.529l-17.132.068-17.131.068-.073 4.696-.072 4.697zm35.07-.065 17.086-.068v-9.26h-34.29l-.073 4.355c-.04 2.396-.014 4.51.058 4.699.106.276 3.423.33 17.219.274m23.337.003 5.496-.071v-9.26h-10.848l-.072 4.701-.072 4.702zm24.81.061h18.654v-9.525H166.9v9.525zm36.375 0h17.204v-9.529L222-36.727l-17.132.069-.072 4.696-.072 4.696zm23.157 0h5.16v-9.525h-10.32v9.525zM21.115-37.32h16.933v-9.789H4.182v9.789zm34.66 0h17.198v-9.789H38.578v9.789zm23.284 0h5.556v-9.789H73.503v9.789zm23.283 0h17.198v-9.789H85.144v9.789zm35.116-.064 17.032-.068.054-4.829.053-4.828H120.07v4.718c0 2.595.08 4.799.179 4.897s7.842.148 17.21.11m23.357.064h5.556v-9.789H155.26v9.789zm24.739 0h18.653v-9.789H166.9v9.789zm36.38 0h17.198v-9.789h-34.396v9.789zm23.14 0h5.148l.077-4.895.077-4.895h-10.451v9.79zM21.049-47.703l16.867-.068.072-4.696.073-4.696H4.18v9.529zm34.66 0 17.132-.068.072-4.696.073-4.696H38.578v9.529zm23.465.003 5.309-.071.072-4.696.072-4.697H73.503v4.586c0 2.523.081 4.668.181 4.768s2.57.15 5.49.11zm23.345.061h17.021v-9.525H85.144v4.586c0 2.523.08 4.666.177 4.763s7.836.176 17.198.176m35.093-.069 16.88-.063v-9.26h-34.29l-.073 4.478c-.055 3.405.008 4.53.264 4.693.186.119 7.934.187 17.219.152m23.319.008 5.308-.071.072-4.697.072-4.696H155.26v4.586c0 2.522.082 4.668.181 4.768.1.1 2.571.15 5.49.11zm24.8.061h18.476v-9.525H166.9v4.586c0 2.522.079 4.666.176 4.763s8.49.176 18.653.176m36.38 0h17.02v-9.525h-34.395v4.586c0 2.522.08 4.666.176 4.763.097.097 7.836.176 17.198.176m23.15 0h4.983v-9.525h-10.318v4.586c0 2.522.079 4.666.176 4.763s2.419.176 5.16.176M21.118-58.751h16.936l-.069-11.178-.069-11.18-16.867-.067-16.867-.068v22.493zM8.272-68.06c-.643.023-.99-.1-1.102-.393-.099-.258.031-.57.327-.786.27-.197.646-.359.836-.359s.347-.119.347-.264-.322-.265-.715-.265c-.53 0-.637-.077-.416-.298.168-.168.594-.224.979-.127.6.15.68.306.68 1.313 0 1.126-.013 1.144-.936 1.178m.037-.394c.204-.078.37-.248.37-.378s-.17-.237-.38-.237-.445.103-.523.228c-.077.125-.072.296.01.379.084.083.319.087.523.009zm2.509.444c-.391 0-.569-.286-.774-1.246-.189-.886-.18-1.402.033-1.786.268-.484.31-.492.396-.077.054.255.297.467.541.471.406.008.404.039-.02.36-.254.194-.462.61-.462.926s.178.643.397.727c.218.084.397.259.397.388 0 .13-.229.237-.508.237m2.007 0c-.194 0-.432-.08-.53-.177-.096-.097-.176-.55-.176-1.005 0-.456-.143-.972-.317-1.147-.247-.247-.247-.317 0-.317.174 0 .317-.2.317-.443 0-.391.059-.384.5.066.297.303.404.61.264.76-.129.139-.235.585-.235.993 0 .407.12.74.265.74s.265.12.265.265-.16.265-.353.265m1.146 0c-.145 0-.264-.577-.264-1.283 0-1.244.024-1.283.794-1.305.436-.013.793.075.793.193 0 .12-.238.279-.529.355-.405.106-.529.36-.529 1.089 0 .523-.12.95-.265.95m2.117 0c-.145 0-.265-.596-.265-1.323 0-.728.12-1.323.265-1.323s.265.595.265 1.323c0 .727-.12 1.323-.265 1.323m1.759-.058c-.689-.057-.7-.09-.7-2 0-1.227.097-1.882.264-1.779.145.09.265.45.265.801 0 .46.11.595.4.484.22-.084.577-.007.794.173.216.18.393.655.393 1.056 0 .4-.161.863-.358 1.026s-.673.271-1.058.24m.358-.471c.411 0 .529-.177.529-.794 0-.618-.118-.794-.53-.794-.41 0-.528.176-.528.794 0 .617.117.794.529.794m3.077.476c-.49.019-.966-.041-1.058-.133s-.167-.683-.167-1.314c0-.63.119-1.146.264-1.146s.265.485.265 1.078c0 .883.083 1.062.463.99.324-.062.488-.386.545-1.078.045-.545.194-.99.33-.99.138 0 .25.576.25 1.28 0 1.27-.007 1.28-.892 1.313m2.484.053c-.328 0-.574-.223-.657-.596a10 10 0 0 1-.178-1.256 9 9 0 0 1-.005-1.125c.023-.255.16-.463.306-.463.145 0 .264.179.264.397s.209.4.463.405c.441.008.441.025 0 .36-.254.193-.463.61-.463.926s.179.643.397.727.397.258.397.388-.236.237-.524.237m2.247 0c-.345 0-.814-.187-1.043-.416s-.415-.637-.415-.907.187-.679.415-.907c.23-.23.622-.416.874-.416.251 0 .6.143.774.317s.318.473.318.662c0 .206-.319.344-.794.344q-.794 0-.794.397c0 .218.15.41.331.427s.552.007.823-.022c.294-.03.42.064.315.235-.097.157-.459.286-.804.286M25.73-69.6c.372 0 .677-.119.677-.264s-.231-.265-.514-.265c-.282 0-.587.12-.677.265-.093.15.13.264.514.264m4.447 1.58c-.618.004-1.124-.111-1.124-.257 0-.145.178-.264.396-.264.294 0 .397-.308.397-1.183 0-.942-.08-1.151-.397-1.03-.218.084-.396.064-.396-.045s.208-.356.463-.55c.254-.193.552-.354.661-.36.11-.004.199.664.199 1.485 0 1.11.118 1.582.463 1.843.408.31.33.353-.662.36M15.94-71.187c-.227 0-.339-.12-.249-.265s.276-.264.413-.264.249.119.249.264-.186.265-.413.265m-7.792-3.44c-.123 0-.411-.187-.64-.416s-.416-.593-.416-.81.123-.626.274-.908c.154-.288.552-.512.91-.512.35 0 .706.111.79.247.083.135-.178.284-.58.33-.582.067-.732.22-.732.746 0 .548.125.66.727.651.4-.006.728.071.728.17s-.188.253-.419.341-.519.161-.642.161m2.648 0c-.27 0-.678-.187-.907-.416s-.416-.637-.416-.907.188-.678.416-.907c.229-.229.681-.416 1.006-.416s.732.143.907.318c.174.174.317.583.317.907s-.187.777-.415 1.005c-.23.229-.637.416-.908.416m.09-.58c.41-.058.572-.266.572-.74 0-.43-.17-.69-.491-.752-.27-.052-.61.024-.754.169-.145.144-.181.52-.082.834.126.395.358.546.754.49m2.011.58c-.137 0-.249-.58-.249-1.288v-1.289l1.786.032 1.786.032.081 1.256c.048.756-.03 1.257-.198 1.257-.154 0-.28-.485-.28-1.078 0-.883-.083-1.062-.463-.99-.323.062-.487.386-.545 1.078-.045.545-.194.99-.33.99-.137 0-.25-.485-.25-1.078 0-.883-.083-1.062-.462-.99-.324.062-.488.386-.545 1.078-.045.545-.194.99-.33.99m4.498 0c-.137 0-.249-.58-.249-1.288v-1.289l1.786.032 1.786.032.082 1.282q.081 1.28-.199 1.108c-.154-.095-.28-.591-.28-1.103 0-.742-.093-.912-.463-.842-.323.062-.487.386-.545 1.078-.045.545-.194.99-.33.99-.137 0-.25-.485-.25-1.078 0-.883-.083-1.062-.462-.99-.324.062-.488.386-.545 1.078-.045.545-.194.99-.331.99m5.321 0c-.263 0-.593-.149-.734-.33a3.3 3.3 0 0 1-.409-.764c-.084-.238.023-.684.239-.992.215-.308.659-.56.985-.56s.736.143.911.318c.175.174.318.583.318.907s-.188.777-.416 1.005c-.229.229-.631.416-.894.416m.238-.59c.24-.046.41-.353.41-.736 0-.481-.16-.681-.595-.743-.476-.067-.596.043-.596.551 0 .35.084.72.186.822s.37.15.595.106m1.85.59c-.137 0-.25-.576-.25-1.28 0-1.279.002-1.28.922-1.315.658-.024.998.11 1.19.47.149.276.27.801.27 1.166s-.112.732-.248.817c-.137.084-.286-.296-.331-.845-.066-.793-.19-.997-.612-.997-.42 0-.546.203-.611.992-.045.546-.194.992-.33.992M55.775-58.75h17.197V-81.24H38.578v22.489zm-12.269-9.313c-.49.019-.966-.041-1.058-.133s-.167-.372-.167-.623c0-.267.276-.526.661-.623.364-.091.662-.283.662-.425s-.305-.26-.677-.26c-.384 0-.607-.115-.514-.265.09-.145.45-.264.8-.264.359 0 .756.223.91.512.151.281.274.857.274 1.28 0 .689-.091.771-.89.801m-.13-.367a.52.52 0 0 0 .228-.39c0-.137-.179-.249-.397-.249s-.397.1-.397.22a.64.64 0 0 0 .17.39c.092.094.27.106.396.029m2.52.42c-.193 0-.431-.08-.528-.177s-.177-.55-.177-1.005c0-.456-.143-.972-.317-1.147-.247-.247-.247-.317 0-.317.174 0 .317-.179.317-.397s.12-.397.265-.397.264.169.264.375.15.444.331.53c.265.123.265.184 0 .308-.182.085-.33.501-.33.926 0 .424.118.772.264.772.145 0 .265.119.265.264s-.16.265-.353.265m1.853 0c-.194 0-.432-.08-.53-.177-.096-.097-.176-.55-.176-1.005 0-.456-.143-.972-.317-1.147-.247-.247-.247-.317 0-.317.174 0 .317-.179.317-.397s.12-.397.265-.397.264.169.264.375.15.444.331.53c.265.123.265.184 0 .308-.182.085-.33.501-.33.926 0 .424.119.772.264.772s.265.119.265.264-.16.265-.353.265m1.411 0c-.146 0-.265-.57-.265-1.266 0-1.158.056-1.27.662-1.32.364-.03.661.064.661.207 0 .144-.178.262-.397.262-.286 0-.396.294-.396 1.058 0 .582-.12 1.059-.265 1.059m1.852 0c-.145 0-.265-.596-.265-1.323 0-.728.12-1.323.265-1.323s.265.595.265 1.323c0 .727-.12 1.323-.265 1.323m1.994-.05-.936-.036v-1.941c0-1.118.113-1.942.265-1.942.145 0 .265.34.265.757 0 .663.081.742.653.632.512-.098.723.026.969.566.236.518.24.854.017 1.345-.241.528-.478.647-1.233.618m.218-.48c.208 0 .446-.178.53-.396a1.3 1.3 0 0 0 0-.794c-.084-.218-.322-.397-.53-.397-.207 0-.445.179-.529.397a1.3 1.3 0 0 0 0 .794c.084.218.322.397.53.397m2.988.46c-.487.035-.963-.015-1.058-.11s-.173-.689-.173-1.32c0-.63.119-1.146.264-1.146s.265.476.265 1.058c0 .882.088 1.059.53 1.059.44 0 .528-.177.528-1.059 0-.582.12-1.058.265-1.058s.264.565.264 1.257c0 1.236-.015 1.257-.885 1.32m2.65.07c-.195 0-.433-.08-.53-.177s-.176-.55-.176-1.005c0-.456-.143-.972-.318-1.147-.247-.247-.247-.317 0-.317.175 0 .318-.201.318-.447 0-.365.107-.332.584.18q.581.626.264.734c-.175.058-.319.453-.319.878 0 .424.119.771.265.771.145 0 .264.12.264.265s-.159.265-.353.265m2.11 0c-.327 0-.737-.143-.911-.318-.175-.174-.318-.627-.318-1.005 0-.379.143-.831.318-1.006.174-.174.523-.317.775-.317.251 0 .644.187.873.416s.416.526.416.661-.417.246-.927.246c-.646 0-.926.12-.926.397 0 .218.15.41.331.427s.552.007.823-.022c.294-.03.42.064.315.235-.097.157-.444.286-.77.286m-.17-1.588c.29 0 .529-.119.529-.264s-.238-.265-.53-.265c-.29 0-.529.12-.529.265s.239.264.53.264m4.1 1.588c-.654 0-1.19-.097-1.19-.215 0-.119.357-.558.794-.976.455-.436.794-1.034.794-1.403 0-.543-.103-.623-.662-.517-.364.07-.661.037-.661-.073s.188-.272.418-.36.52-.16.643-.16.406.182.63.405c.317.318.346.563.132 1.124-.15.395-.461.927-.692 1.182-.39.43-.37.464.283.464.386 0 .702.119.702.264s-.535.265-1.19.265m-13.89-3.175a.265.265 0 0 1-.265-.265c0-.145.12-.265.265-.265s.265.12.265.265-.12.265-.265.265m-7.564-3.496c-.282.042-.66-.071-.84-.251s-.327-.719-.327-1.196c0-.712.122-.899.68-1.039.385-.096.811-.041.98.127.22.221.109.298-.434.298-.643 0-.722.09-.648.728.064.564.218.723.686.706.331-.012.56.107.508.264s-.324.321-.605.363m2.26.056c-.278 0-.7-.298-.938-.661-.401-.613-.401-.71 0-1.323.252-.385.685-.662 1.036-.662.331 0 .745.143.92.318.174.174.317.583.317.907s-.187.777-.415 1.005c-.23.229-.643.416-.92.416m.253-.588c.25-.048.42-.347.42-.738 0-.47-.16-.681-.56-.738-.337-.048-.63.098-.733.364-.094.244-.03.613.14.819.171.206.501.338.733.293m2.14-.377c-.072.558-.221.924-.33.814s-.199-.698-.199-1.305v-1.103l1.727-.014c1.445-.012 1.77.07 2 .499.151.282.238.808.192 1.17-.045.36-.201.655-.347.653-.145 0-.302-.429-.347-.95-.064-.722-.19-.928-.53-.863-.305.057-.472.398-.528 1.08-.045.547-.196.925-.335.84a.303.303 0 0 1-.091-.418c.089-.144.086-.56-.005-.926-.11-.44-.32-.635-.62-.577-.305.057-.498.42-.586 1.1m4.218.965c-.137 0-.249-.58-.249-1.288v-1.289l1.786.032 1.786.032.082 1.282q.081 1.28-.199 1.108c-.154-.095-.28-.591-.28-1.103 0-.742-.093-.912-.463-.842-.324.062-.487.387-.545 1.084-.045.547-.194.926-.33.842-.137-.085-.25-.572-.25-1.084 0-.742-.092-.912-.462-.842-.324.062-.488.386-.545 1.078-.045.545-.194.99-.331.99m5.44 0c-.306 0-.699-.143-.873-.317s-.318-.627-.318-1.006c0-.378.143-.83.318-1.005.174-.175.567-.318.873-.318s.698.143.873.318c.175.174.318.627.318 1.005 0 .379-.143.831-.318 1.006-.175.174-.567.317-.873.317m.12-.588c.225-.043.447-.404.493-.803.072-.624-.011-.726-.596-.726-.534 0-.679.131-.679.618 0 .34.084.7.186.803.102.102.37.15.595.108m2.129.456c-.163.1-.265-.35-.265-1.175 0-1.29.027-1.339.741-1.339.408 0 .884.143 1.058.318.175.174.318.77.318 1.323s-.112 1.005-.249 1.005c-.136 0-.285-.445-.33-.99-.058-.692-.222-1.016-.546-1.078-.37-.07-.463.1-.463.842 0 .512-.119 1.004-.264 1.094m19.05 16.007h5.556v-22.49H73.503v22.49zm-1.323-15.875a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m1.043 0c-.137 0-.25-.119-.25-.265 0-.145.186-.264.413-.264s.34.119.25.264-.276.265-.413.265m1.338 0a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m22.225 15.875h17.198V-81.24H85.144v22.489zm-12.311-2.646c-.604 0-.99-.146-1.094-.414-.087-.228-.054-.514.075-.636.128-.122.448-.263.71-.313.263-.05.441-.21.397-.356s-.292-.255-.55-.243-.428-.107-.375-.265c.052-.157.3-.326.549-.374.25-.049.627.055.838.23.215.179.384.771.384 1.345 0 .998-.026 1.026-.934 1.026m.034-.443c.266-.102.317-.246.147-.415-.142-.143-.39-.179-.551-.08-.16.1-.227.287-.147.416s.328.164.551.079m2.48.443c-.296 0-.584-.148-.64-.33-.055-.182-.16-.758-.232-1.28s-.014-1.117.13-1.323c.2-.287.292-.297.395-.043.074.182.303.33.509.33s.375.12.375.265-.179.265-.397.265q-.397 0-.397.793 0 .794.397.794c.218 0 .397.12.397.265s-.242.264-.538.264m1.851 0c-.295 0-.583-.148-.638-.33s-.162-.767-.236-1.3c-.085-.61.002-1.15.233-1.456.342-.451.369-.453.377-.023.005.255.187.463.405.463s.397.12.397.265-.179.265-.397.265q-.397 0-.397.793 0 .794.397.794c.218 0 .397.12.397.265s-.242.264-.538.264m1.332 0c-.146 0-.265-.57-.265-1.269 0-1.219.029-1.267.728-1.224.4.024.787.067.86.095s-.136.158-.463.29c-.46.185-.596.452-.596 1.174 0 .514-.119.934-.264.934m1.984 0c-.343 0-.41-.244-.345-1.256.044-.692.2-1.257.345-1.257.146 0 .3.565.345 1.257.065 1.012-.002 1.256-.345 1.256m1.8 0h-.874v-1.852c0-1.058.113-1.852.265-1.852.145 0 .264.306.264.68 0 .564.092.65.542.507.298-.095.715-.029.926.147.211.175.384.637.384 1.027s-.143.851-.317 1.026c-.175.174-.71.317-1.19.317m.44-.529c.394 0 .538-.173.538-.646 0-.355-.13-.726-.29-.825s-.473.004-.697.229c-.225.224-.336.595-.248.825s.402.417.698.417m3.057.478c-.659.025-.998-.109-1.191-.469-.148-.277-.27-.802-.27-1.166 0-.365.112-.733.249-.817.136-.085.285.295.33.844.066.794.191.998.612.998s.546-.204.612-.998c.045-.549.194-.929.33-.844.137.084.249.663.249 1.285 0 1.11-.019 1.133-.921 1.167m2.5.051c-.296 0-.583-.149-.639-.33s-.16-.758-.233-1.28c-.072-.522-.035-1.104.082-1.293.165-.267.349-.218.82.221.502.468.53.566.16.566-.32 0-.446.225-.446.793q0 .794.397.794c.218 0 .396.12.396.265s-.241.264-.537.264m2.178 0c-.408 0-.884-.143-1.059-.317s-.317-.573-.317-.885.23-.776.51-1.03c.314-.284.712-.397 1.034-.295.288.091.595.351.681.577s.091.519.01.651c-.082.133-.514.241-.96.241-.696 0-.763.057-.476.403a.8.8 0 0 0 .826.247c.27-.086.492-.03.492.126 0 .155-.334.282-.741.282zm-.185-1.587c.394 0 .622-.114.529-.265-.09-.145-.328-.264-.53-.264-.2 0-.439.119-.529.264-.093.15.135.265.53.265m4.233 1.587c-.51 0-.926-.119-.926-.264s.179-.265.397-.265c.293 0 .397-.306.397-1.166 0-1.07-.049-1.155-.596-1.036-.584.128-.583.121.06-.4.359-.293.746-.474.859-.404s.206.775.206 1.567.119 1.44.264 1.44.265.118.265.264c0 .145-.417.264-.926.264m-14.023-2.91c-.056 0-.175-.12-.265-.265s.03-.264.265-.264.355.119.265.264-.21.265-.265.265m-6.218-2.646c-.15 0-.264-.771-.264-1.786v-1.786l.917-.065c.685-.049.988.067 1.197.457.154.288.206.82.115 1.18-.09.362-.39.73-.666.817-.275.087-.62.085-.767-.006-.153-.094-.267.124-.267.512 0 .373-.12.677-.265.677zm.748-1.587c.285 0 .587-.179.67-.397a1.3 1.3 0 0 0-.004-.807.546.546 0 0 0-.587-.329c-.245.047-.466.394-.514.807-.066.573.026.726.435.726m-2.764.529c-.346 0-.63-.132-.63-.293s.16-.232.355-.157.509.041.697-.075c.252-.156.159-.33-.355-.667-.383-.251-.697-.609-.697-.795s.189-.41.419-.498.587-.161.794-.161c.206 0 .375.119.375.265 0 .145-.238.264-.53.264-.29 0-.528.12-.528.265s.096.264.214.264.44.166.717.369c.428.312.45.432.15.793-.194.234-.636.426-.981.426m5.903-.004c-.319-.002-.707-.092-.863-.199s-.368-.42-.47-.694c-.109-.296-.017-.756.225-1.125.224-.343.62-.624.879-.624.258 0 .613.143.787.317s.318.466.318.646c0 .187-.42.363-.976.41-.911.077-.947.112-.534.522.27.268.666.38 1.017.289.395-.104.516-.055.386.156-.104.168-.45.304-.769.302m-.183-1.584c.291 0 .53-.119.53-.264s-.239-.265-.53-.265c-.29 0-.529.12-.529.265s.238.264.53.264m2.816 1.588c-.326 0-.736-.143-.91-.318-.175-.174-.318-.568-.318-.875s.16-.777.356-1.045c.28-.382.52-.44 1.124-.272l.769.214-.794.159c-.627.124-.794.296-.794.816 0 .524.151.677.732.743.403.047.664.196.58.331-.084.136-.419.247-.745.247m1.682 0c-.145 0-.264-.596-.264-1.323 0-.728.119-1.323.264-1.323s.265.595.265 1.323c0 .727-.12 1.323-.265 1.323m1.323 0c-.145 0-.264-.47-.264-1.043s-.132-1.124-.293-1.224-.19-.255-.066-.346.358-.403.52-.695c.16-.29.488-.567.727-.614.24-.047.435.042.435.198s-.179.284-.397.284-.397.169-.397.375.149.444.33.53c.265.123.265.184 0 .308-.181.085-.33.62-.33 1.19s-.12 1.037-.265 1.037m1.588 0c-.146 0-.265-.596-.265-1.323 0-.728.12-1.323.265-1.323s.264.595.264 1.323c0 .727-.119 1.323-.264 1.323m1.978 0c-.364 0-.757-.225-.917-.524-.154-.288-.205-.825-.112-1.193a1.13 1.13 0 0 1 .82-.833c.358-.09.785-.029.949.135.221.221.12.298-.388.298-.377 0-.755.179-.838.397a1.3 1.3 0 0 0 0 .794c.083.218.444.397.8.397.366 0 .578.115.486.264-.09.146-.45.265-.8.265m-4.889-3.175a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m2.91 0a.265.265 0 0 1-.264-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m-2.93-2.501c-.134.083-.244-.217-.244-.667s-.179-1.245-.397-1.768-.397-.995-.397-1.05.119-.1.264-.1.43.387.634.86l.37.86.318-.86c.175-.473.438-.86.585-.86s.212.15.145.331a92 92 0 0 0-.578 1.717c-.25.762-.565 1.454-.7 1.537m2.137.12c-.15 0-.265-.78-.265-1.812v-1.812l.853-.024c.468-.014 1.004.102 1.19.256s.339.556.339.892-.197.806-.437 1.046-.656.379-.926.308c-.376-.098-.49.02-.49.509 0 .35-.118.637-.264.637m.991-1.638c.293-.057.464-.33.464-.744 0-.413-.17-.687-.464-.743-.255-.05-.535.098-.623.327a1.35 1.35 0 0 0 0 .833c.088.229.368.376.623.327m-13.179.58c-.264 0-.554-.12-.644-.265s.081-.265.381-.265.545-.104.545-.232-.26-.405-.576-.615c-.377-.25-.517-.535-.405-.826.097-.253.457-.444.84-.444.369 0 .67.132.67.293s-.167.23-.371.15c-.204-.078-.445-.067-.536.023-.09.091.162.426.562.745.627.5.678.638.37 1.007-.195.236-.57.428-.836.428m2.994-.072c-.4.005-.877-.047-1.059-.114-.196-.073-.33-.6-.33-1.292 0-.643.119-1.169.264-1.169s.265.485.265 1.078c0 .884.083 1.062.463.99.323-.061.488-.386.545-1.078.045-.544.194-.99.33-.99.137 0 .25.578.25 1.283 0 1.22-.036 1.283-.728 1.292m2.469-.026-.948.075v-1.973c0-1.14.112-1.974.265-1.974.145 0 .264.346.264.77 0 .639.09.745.53.63.293-.077.71.009.927.19.217.18.394.58.391.89-.002.31-.111.733-.242.94-.132.208-.666.411-1.187.452m.308-.482c.293-.057.464-.33.464-.744 0-.413-.171-.687-.464-.743-.255-.05-.536.098-.624.327a1.35 1.35 0 0 0 0 .833c.088.229.369.376.624.327m2.59.58c-.213 0-.506-.222-.65-.492s-.291-.9-.325-1.4.028-1.051.137-1.228c.11-.176.31-.32.447-.32s.25.168.25.374c0 .207.148.435.33.509.265.106.265.137 0 .154-.198.013-.33.394-.33.947 0 .51.118.926.264.926.145 0 .264.12.264.265s-.174.264-.387.264m7.518-.005c-.226.002-.553-.139-.728-.313-.174-.175-.317-.627-.317-1.006 0-.378.143-.83.317-1.005s.588-.318.917-.318.718.223.864.495c.145.272.19.57.097.661-.091.092-.504.167-.916.167-.49 0-.75.138-.75.397 0 .27.274.398.86.401.652.003.764.066.463.26-.218.142-.581.259-.807.261m.013-1.583c.341 0 .529-.134.463-.331a.52.52 0 0 0-.463-.33.52.52 0 0 0-.463.33c-.065.197.122.33.463.33m4.234 1.587c-.583 0-1.059-.119-1.059-.264s.179-.265.397-.265c.294 0 .397-.308.397-1.182 0-.942-.08-1.152-.397-1.03-.218.084-.397.063-.397-.046 0-.108.209-.355.463-.549.255-.193.553-.355.662-.36s.198.706.198 1.58c0 1.234.088 1.587.397 1.587.218 0 .397.12.397.265s-.476.264-1.058.264m27.635 15.875h17.068l.072-11.146c.046-7.254-.021-11.182-.193-11.247-.146-.056-7.885-.07-17.198-.033l-16.933.069-.07 10.848c-.038 5.966-.012 10.996.058 11.178.1.26 3.778.331 17.196.331m-12.394-2.646c-.493 0-.952-.148-1.019-.33a1.14 1.14 0 0 1-.006-.662c.064-.182.403-.33.755-.33.41 0 .64-.152.64-.426 0-.322-.162-.385-.662-.26-.364.092-.662.053-.662-.085 0-.139.222-.322.492-.408s.687-.081.926.01c.312.12.434.496.434 1.33 0 1.144-.013 1.161-.897 1.161zm-.16-.264c.128 0 .312-.127.408-.282.095-.156.12-.337.053-.403-.066-.067-.316-.047-.554.045-.238.091-.367.273-.287.403s.251.237.38.237m2.65.264c-.358 0-.572-.23-.677-.727-.084-.4-.2-.955-.256-1.234-.056-.278.02-.736.171-1.017.267-.498.29-.495.835.09q.564.603.242.71c-.176.058-.32.453-.32.878 0 .424.12.771.265.771s.265.12.265.265-.236.264-.524.264m1.853 0c-.346 0-.571-.224-.662-.661l-.264-1.28c-.07-.34.046-.846.257-1.125.348-.46.383-.465.39-.042.006.254.188.463.406.463s.397.119.397.264-.179.265-.397.265q-.397 0-.397.793 0 .794.397.794c.218 0 .397.12.397.265s-.236.264-.524.264m1.303 0c-.167 0-.247-.494-.198-1.235.073-1.125.146-1.245.808-1.332.4-.053.728-.002.728.113 0 .116-.239.36-.53.54-.337.212-.529.618-.529 1.123 0 .435-.125.791-.279.791m2.131 0c-.145 0-.264-.602-.264-1.338 0-.825.101-1.276.264-1.175.146.09.265.692.265 1.338s-.12 1.175-.265 1.175m2.05-.05-.991.082v-1.868c0-1.069.113-1.868.264-1.868.146 0 .265.287.265.637 0 .485.114.607.481.51.265-.069.63.054.812.273s.292.792.246 1.275c-.077.805-.166.884-1.076.96m.067-.479c.46 0 .549-.135.48-.727-.05-.434-.244-.728-.48-.728s-.43.294-.48.728c-.069.592.02.727.48.727m3.077.477c-.49.019-.966-.042-1.058-.133-.092-.092-.167-.69-.167-1.33 0-.707.103-1.098.265-.998.145.09.264.573.264 1.074 0 .734.103.91.53.91.44 0 .528-.176.528-1.058 0-.582.12-1.058.265-1.058s.265.576.265 1.28c0 1.27-.007 1.28-.892 1.313m2.484.052c-.346 0-.57-.224-.661-.661-.076-.364-.195-.94-.264-1.28-.07-.34.045-.847.256-1.125.349-.46.383-.465.391-.043.005.255.187.463.405.463s.397.12.397.265-.178.265-.397.265q-.396 0-.396.793 0 .794.396.794c.219 0 .397.12.397.265s-.236.264-.524.264m2.088 0c-.574 0-.847-.16-1.009-.595-.122-.327-.136-.828-.032-1.112s.387-.64.627-.792c.307-.193.576-.189.9.016.255.16.464.517.464.792 0 .352-.22.526-.743.586-.432.05-.697.216-.633.397.06.171.428.289.815.26.388-.027.636.062.551.2-.084.136-.508.248-.94.248m.024-1.587c.29 0 .529-.12.529-.265s-.238-.264-.53-.264c-.29 0-.528.119-.528.264s.238.265.529.265m4.116 1.587c-.663 0-1.206-.073-1.206-.163s.364-.578.808-1.084.768-1.117.719-1.358c-.063-.302-.313-.414-.809-.361-.395.042-.718.016-.718-.057s.238-.26.53-.416c.375-.201.682-.201 1.058 0 .29.156.529.528.529.828s-.246.891-.547 1.314c-.545.764-.545.768-.016.768.292 0 .605.12.695.265.1.161-.306.264-1.043.264m-14.054-2.91c-.064 0-.116-.12-.116-.265s.126-.264.28-.264.206.119.116.264-.216.265-.28.265m-6.202-2.646c-.15 0-.264-.78-.264-1.812v-1.812l.852-.024c.468-.013 1.004.102 1.19.257.187.154.339.6.339.99 0 .389-.143.85-.318 1.025-.174.175-.591.318-.926.318-.432 0-.608.153-.608.529 0 .291-.12.53-.265.53m.992-1.638c.292-.056.463-.33.463-.743s-.17-.687-.463-.744c-.256-.049-.536.098-.624.327a1.35 1.35 0 0 0 0 .833c.088.23.368.377.624.327m-2.688.58c-.36 0-.733-.129-.83-.286-.112-.18.044-.254.422-.199.33.048.647-.05.705-.22s-.14-.386-.438-.481c-.306-.097-.544-.4-.544-.692 0-.286.179-.589.397-.672s.605-.058.86.058c.376.172.318.23-.308.315l-.77.104.748.597c.502.4.694.743.581 1.037-.094.245-.457.439-.823.439m5.57 0c-.326 0-.736-.143-.91-.318-.175-.174-.318-.627-.318-1.005 0-.379.143-.83.318-1.006.174-.174.587-.317.916-.317s.723.23.873.512c.151.281.274.579.274.661s-.416.15-.926.15c-.647 0-.926.12-.926.397 0 .218.149.41.33.427.183.017.553.007.824-.021.293-.031.42.063.315.234-.098.157-.444.286-.77.286m-.022-1.588c.384 0 .607-.114.514-.264-.09-.146-.395-.265-.677-.265s-.514.12-.514.265.305.264.677.264m2.813 1.584a1.8 1.8 0 0 1-.797-.226c-.209-.133-.316-.576-.265-1.094.047-.48.278-.992.513-1.14.251-.156.632-.174.926-.042.441.2.418.236-.202.322-.385.053-.753.299-.817.545s-.066.597-.005.779.406.33.767.33c.369 0 .583.116.491.265-.09.146-.365.263-.61.26zm1.537.004c-.145 0-.264-.596-.264-1.323 0-.728.119-1.323.264-1.323s.265.595.265 1.323c0 .727-.12 1.323-.265 1.323m1.35 0c-.131 0-.289-.566-.35-1.257-.063-.691-.017-1.528.1-1.859.119-.331.4-.673.628-.76.226-.087.495-.075.597.026.101.102-.023.301-.276.443-.254.142-.461.371-.461.51 0 .138.208.255.463.26.44.007.44.024 0 .36-.292.22-.463.707-.463 1.314 0 .53-.107.963-.238.963m1.56 0c-.145 0-.264-.53-.264-1.175 0-.647.12-1.249.265-1.339.163-.1.264.35.264 1.175 0 .736-.119 1.339-.264 1.339m2.134 0c-.264 0-.623-.172-.797-.381s-.278-.704-.23-1.098c.046-.394.277-.837.511-.984.252-.157.633-.175.926-.043.437.197.41.237-.228.325-.606.082-.728.23-.728.875 0 .657.105.776.677.776.384 0 .607.115.514.265-.09.146-.38.265-.645.265m-5.044-3.175a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m3.027 0c-.226 0-.337-.121-.246-.27.091-.147.277-.2.413-.116s.246.205.246.269-.186.117-.413.117m-3.086-2.477q-.286.174-.134-.411c.084-.325-.042-1.117-.28-1.762-.292-.785-.59-1.171-.907-1.171-.363 0-.472.214-.472.926 0 .695.112.926.45.926.335 0 .373.076.15.3-.165.165-.486.228-.714.14-.28-.107-.415-.5-.415-1.203 0-.589-.144-1.103-.33-1.178-.265-.107-.265-.138 0-.155.181-.011.33-.2.33-.418s.12-.396.265-.396.264.178.264.396c0 .263.262.397.773.397.643 0 .802.133.947.794.096.437.274.794.397.794.122 0 .3-.357.397-.794.096-.437.284-.794.418-.794a.25.25 0 0 1 .243.255c0 .14-.246.912-.546 1.715s-.676 1.54-.836 1.639m2.39-.512c-.045.362-.171.567-.28.456s-.199-.937-.199-1.837v-1.635l.852-.024c.47-.014 1.005.102 1.191.256s.339.61.339 1.01c0 .401-.178.877-.396 1.057-.217.18-.627.268-.911.194-.397-.104-.534.017-.597.523m.777-1.03c.293-.057.464-.33.464-.744 0-.413-.17-.687-.464-.743-.255-.05-.535.098-.623.327a1.35 1.35 0 0 0 0 .833c.088.229.368.376.623.327m-13.3.58c-.198 0-.433-.12-.523-.265-.093-.15.13-.265.513-.265.373 0 .677-.12.677-.265s-.11-.264-.245-.264c-.136 0-.437-.191-.671-.425-.328-.328-.355-.51-.119-.794.169-.203.523-.369.787-.369.265 0 .563.132.663.293q.18.294-.36.122c-.296-.095-.616-.048-.709.103-.093.15.135.412.507.582s.676.514.676.767c0 .252-.188.53-.418.619s-.58.16-.778.16m3.16-.103c-.447.048-.953-.052-1.124-.223-.17-.17-.31-.762-.31-1.315s.111-1.006.248-1.006.286.447.331.992c.055.67.211.993.479.993s.424-.323.479-.993c.055-.667.212-.992.477-.992.306 0 .378.28.315 1.228-.076 1.155-.129 1.233-.895 1.316m2.426.043c-.393-.032-.768-.112-.833-.176-.064-.065-.117-.931-.117-1.926 0-1.029.114-1.808.265-1.808.145 0 .264.346.264.77 0 .639.09.745.53.63.293-.077.71.009.927.189s.395.656.395 1.057-.16.863-.358 1.026-.68.27-1.073.238m.306-.519c.28-.053.497-.375.548-.813.067-.587-.023-.726-.472-.726-.305 0-.623.179-.707.397s-.08.585.008.814.368.376.624.328zm10.436.57c-.246-.004-.656-.13-.91-.278-.264-.153-.463-.583-.463-.997 0-.4.143-.87.317-1.045s.587-.318.917-.318.723.23.873.512c.15.281.274.58.274.661 0 .083-.427.15-.948.15-.64 0-.913.108-.84.33.06.183.43.37.82.416.392.046.644.195.56.33-.084.136-.354.243-.6.239m-.33-1.58c.282 0 .58-.108.663-.241.082-.133 0-.295-.183-.358a1.14 1.14 0 0 0-.663.006c-.182.067-.331.228-.331.358s.231.236.514.236zm4.38 1.588c-.509 0-.925-.119-.925-.265 0-.145.119-.264.264-.264s.265-.532.265-1.182c0-1.011-.067-1.16-.463-1.022-.362.126-.33.022.14-.471.517-.54.643-.574.866-.236.143.219.233.925.2 1.57-.039.73.059 1.211.259 1.278.176.059.32.216.32.35s-.416.242-.925.242m16.008 15.875h5.556v-22.49H155.26v22.49zm-1.587-15.875a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m1.322 0a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.119.265-.265.265m1.323 0a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m23.68 15.875h18.654v-22.49H166.9v22.49zm-13.766-2.646c-.604 0-.99-.146-1.094-.414-.087-.228-.054-.515.075-.636.128-.122.448-.263.71-.313.263-.05.465-.211.45-.357-.016-.145-.32-.242-.676-.214s-.647-.05-.647-.17.188-.293.418-.381.52-.16.643-.16.41.187.64.415c.228.229.415.824.415 1.323 0 .862-.046.907-.934.907m-.455-.268c.11-.002.36-.107.558-.232.25-.158.27-.282.066-.408-.161-.1-.412-.108-.558-.018-.145.09-.264.276-.264.413s.089.247.198.245m2.889.268c-.194 0-.433-.08-.53-.176-.097-.097-.176-.563-.176-1.036s-.11-.9-.246-.949c-.135-.048-.082-.31.119-.583.35-.476.383-.477.839-.021.338.338.38.505.146.583-.181.06-.329.457-.329.881 0 .425.12.772.265.772s.264.12.264.265-.158.264-.352.264m2.05-.008c-.303.005-.63-.07-.727-.168-.097-.097-.177-.563-.177-1.036s-.11-.9-.246-.948c-.135-.049-.082-.311.119-.584.35-.476.383-.477.839-.02.338.337.38.504.146.583-.18.06-.329.413-.329.785s.209.835.463 1.028c.433.328.427.352-.088.36m1.213.008c-.146 0-.265-.565-.265-1.257 0-1.153.055-1.26.662-1.294.364-.021.661.055.661.17 0 .114-.178.276-.397.36-.249.096-.397.5-.397 1.087 0 .514-.119.934-.264.934m1.852 0c-.146 0-.265-.529-.265-1.175s.12-1.248.265-1.338c.163-.101.264.35.264 1.175 0 .736-.119 1.338-.264 1.338m1.91-.056-.852-.024v-1.812c0-1.032.114-1.812.265-1.812.145 0 .264.306.264.68 0 .546.098.648.502.52.292-.093.678.017.926.265.233.234.424.7.424 1.035 0 .336-.152.737-.338.891s-.722.27-1.19.257m.455-.533a.64.64 0 0 0 .476-.472 1.2 1.2 0 0 0-.15-.734c-.121-.187-.419-.263-.662-.17-.243.094-.442.375-.442.627 0 .25.084.54.186.642s.368.15.592.107m2.967.542c-.56.022-1.095-.038-1.19-.133-.096-.095-.173-.622-.173-1.171 0-.55.119-1.072.264-1.162.16-.1.265.268.265.929 0 .981.06 1.083.595 1.007.479-.068.612-.28.678-1.082.045-.549.194-.929.33-.844.137.084.249.662.249 1.285 0 1.13-.002 1.132-1.018 1.171m2.517.047c-.194 0-.432-.08-.529-.176-.097-.097-.176-.563-.176-1.036s-.15-.93-.331-1.015c-.265-.123-.265-.185 0-.308.182-.085.33-.346.33-.58 0-.328.132-.283.585.203.387.415.476.663.264.733-.175.059-.32.454-.32.878 0 .425.12.772.265.772s.265.12.265.265-.159.264-.353.264m2.11 0c-.326 0-.736-.143-.91-.317s-.318-.647-.318-1.05c0-.465.196-.836.54-1.02.296-.158.761-.217 1.033-.13.272.086.57.35.66.588.092.237.013.529-.173.647-.187.119-.608.218-.935.22s-.596.11-.596.24.179.305.397.389.595.076.837-.017q.443-.17.25.14c-.106.171-.459.31-.785.31m-.037-1.587c.394 0 .622-.114.529-.265-.09-.145-.328-.264-.53-.264-.2 0-.438.119-.528.264-.094.15.134.265.529.265m4.1 1.57c-1.045 0-1.134-.042-.727-.351q.463-.351.463-1.439c0-.914-.073-1.063-.463-.94-.318.1-.255-.037.199-.437l.661-.583.08 1.534c.057 1.061.22 1.64.53 1.876.387.294.285.34-.742.34m-14.022-2.893a.265.265 0 0 1-.265-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m-6.087-2.777c-.147.09-.332-.006-.412-.214-.08-.209-.11-1.007-.065-1.775.078-1.329.119-1.4.863-1.477.43-.046.936.046 1.125.202s.343.604.343.993c0 .39-.143.852-.318 1.026s-.532.318-.794.318-.476.171-.476.381-.12.455-.266.546m.795-1.456c.412 0 .53-.177.53-.794 0-.618-.118-.794-.53-.794-.411 0-.529.176-.529.794 0 .617.118.794.53.794m-2.712.48c-.407.047-.727-.046-.727-.21 0-.161.196-.259.435-.216.24.043.484-.06.544-.23s-.137-.386-.436-.481c-.305-.097-.543-.4-.543-.693 0-.285.178-.588.396-.671s.606-.06.86.054c.407.182.39.22-.132.312-.327.057-.595.207-.595.332s.245.306.544.401c.37.118.519.357.463.746-.057.402-.298.597-.809.656m5.477.045c-.298.002-.685-.14-.86-.314s-.317-.583-.317-.907.187-.777.415-1.005c.23-.23.622-.416.874-.416.251 0 .6.143.774.317s.318.473.318.662c0 .217-.343.344-.926.344-.51 0-.926.104-.926.232s.155.36.344.518c.19.157.636.221.993.142.51-.114.563-.085.25.14-.218.155-.64.284-.939.287m-.002-1.584c.372 0 .677-.119.677-.264s-.23-.265-.513-.265-.588.12-.677.265c-.093.15.13.264.513.264m2.81 1.588c-.264 0-.623-.172-.797-.381-.173-.21-.277-.704-.23-1.098.046-.394.277-.837.512-.984.238-.15.648-.174.926-.057.452.192.437.227-.163.384-.467.122-.686.383-.745.89-.072.618.012.717.611.717.396 0 .624.113.531.264-.09.146-.38.265-.644.265m1.842 0c-.158 0-.351-.168-.43-.372-.078-.204-.104-.77-.058-1.257.047-.487.204-.885.35-.885.145 0 .3.566.345 1.257.05.777-.03 1.257-.207 1.257m1.317 0c-.146 0-.265-.453-.265-1.006s-.143-1.148-.317-1.323c-.247-.247-.247-.317 0-.317.174 0 .317-.242.317-.538 0-.295.184-.608.409-.694s.492-.066.595.045c.103.11.038.254-.144.319s-.33.287-.33.493.142.375.317.375c.247 0 .247.07 0 .317-.175.175-.318.77-.318 1.323s-.119 1.006-.264 1.006m1.587 0c-.145 0-.264-.596-.264-1.323 0-.728.119-1.323.264-1.323s.265.595.265 1.323c0 .727-.12 1.323-.265 1.323m2.022 0c-.326 0-.736-.143-.91-.318-.175-.174-.318-.54-.318-.811s.123-.724.274-1.005c.157-.294.552-.512.926-.512.359 0 .652.11.652.246 0 .135-.268.284-.595.33-.436.063-.595.262-.595.747 0 .526.15.678.732.745.402.047.663.195.58.331s-.42.247-.746.247m-5.08-3.175c-.227 0-.338-.121-.246-.27.091-.147.277-.2.412-.116.136.084.247.205.247.269s-.186.117-.413.117m3.058 0a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m-2.954-2.527c-.14.159-.232.159-.251 0a4 4 0 0 1 .007-.66c.02-.225-.144-.925-.367-1.555-.222-.63-.404-1.19-.404-1.245 0-.054.108-.099.239-.099s.382.387.557.86l.318.86.37-.86c.203-.473.488-.86.634-.86.145 0 .263.05.263.109 0 .06-.258.804-.573 1.654s-.673 1.658-.794 1.796zm2.16.013c-.166.103-.264-.507-.264-1.646v-1.81l.961.008c.731.006 1.011.142 1.168.566.122.33.075.816-.114 1.19-.2.394-.542.626-.904.613q-.582-.021-.582.448c0 .257-.119.542-.264.632zm.94-1.455c.177 0 .376-.208.442-.463s.07-.612.009-.794-.34-.33-.619-.33c-.354 0-.507.185-.507.617 0 .34.08.696.177.794.097.097.321.176.498.176zm-13.176.48c-.4.047-.728-.043-.728-.198s.238-.282.53-.282c.29 0 .528-.105.528-.232 0-.128-.259-.405-.575-.615-.378-.25-.517-.535-.405-.826.097-.254.457-.444.84-.444.368 0 .67.125.67.276s-.196.242-.436.199-.484.06-.544.23.144.389.451.486c.384.122.534.357.478.75-.058.402-.298.598-.81.656m2.84-.03c-.651.019-1.01-.12-1.191-.459-.143-.267-.26-.85-.26-1.297s.119-.81.264-.81.267.327.269.727.11.894.238 1.097a.57.57 0 0 0 .657.206c.278-.106.424-.484.424-1.096 0-.514.119-.935.264-.935s.265.572.265 1.27v1.271zm2.519.003-.794-.056v-1.918c-.001-1.103.111-1.918.263-1.918.146 0 .265.34.265.757 0 .663.081.741.656.631.529-.1.711.017.934.602.213.562.185.866-.127 1.342-.293.447-.62.6-1.197.56m.411-.453c.179 0 .393-.178.477-.397a1.3 1.3 0 0 0 0-.793c-.084-.219-.378-.397-.653-.397-.349 0-.501.188-.501.617 0 .34.08.697.176.794.097.097.323.176.501.176m2.663.53c-.2 0-.487-.15-.637-.331s-.296-.748-.324-1.257c-.028-.51-.04-1.135-.025-1.39s.146-.462.292-.462c.145 0 .264.178.264.397 0 .218.209.4.463.405.441.008.441.02 0 .277-.254.149-.463.565-.463.927 0 .36.179.725.397.808s.397.26.397.389c0 .13-.164.236-.364.236m7.46-.005c-.244.002-.63-.183-.86-.411-.228-.23-.415-.637-.415-.908 0-.27.187-.678.416-.907s.621-.415.873-.415c.251 0 .6.142.775.317.174.175.317.472.317.661 0 .217-.341.344-.918.344-.707 0-.882.092-.765.397.09.235.492.399.984.401.634.003.737.065.435.26a1.9 1.9 0 0 1-.841.261m.048-1.583c.34 0 .528-.134.463-.33a.52.52 0 0 0-.463-.332.52.52 0 0 0-.463.331c-.066.197.122.33.463.33m4.116 1.587c-.663 0-1.206-.066-1.206-.147 0-.082.372-.611.827-1.178.524-.651.766-1.19.66-1.467-.122-.316-.353-.393-.828-.273-.362.09-.659.052-.659-.087s.238-.327.53-.42a2.06 2.06 0 0 1 1.058 0c.332.106.529.4.529.792 0 .343-.308.99-.685 1.437l-.685.814h.67c.367 0 .742.12.832.265.1.161-.306.264-1.043.264m30.544 15.875h17.198V-81.24h-34.396v22.489zm-12.311-2.645c-.605 0-.99-.147-1.094-.415-.087-.228-.054-.514.075-.636.128-.122.448-.262.71-.313.263-.05.441-.21.397-.356s-.292-.255-.55-.243-.428-.107-.375-.265c.052-.157.3-.326.549-.374s.627.055.838.23c.215.18.384.772.384 1.346 0 .997-.026 1.026-.934 1.026m-.124-.265c.128 0 .312-.127.407-.282.096-.155.109-.349.027-.43-.08-.08-.338-.074-.572.016s-.35.283-.26.43c.09.146.27.266.398.266m2.637.265c-.295 0-.583-.15-.639-.331-.055-.182-.16-.758-.232-1.28-.072-.521-.014-1.117.13-1.323.2-.286.292-.297.395-.043.074.182.303.33.509.33s.375.12.375.265-.179.265-.397.265q-.397 0-.397.794 0 .793.397.793c.218 0 .397.12.397.265s-.242.265-.538.265m1.852 0c-.295 0-.583-.15-.639-.331-.055-.182-.162-.767-.236-1.3-.084-.609.002-1.15.234-1.456.342-.451.369-.453.377-.022.005.254.187.463.405.463s.397.119.397.264-.179.265-.397.265q-.397 0-.397.794 0 .793.397.793c.218 0 .397.12.397.265s-.242.264-.538.264m1.332 0c-.146 0-.265-.572-.265-1.27 0-1.218.029-1.267.728-1.224.4.024.787.067.86.095s-.136.158-.464.29c-.46.185-.595.452-.595 1.174 0 .514-.119.935-.264.935m1.984 0c-.343 0-.41-.245-.345-1.257.044-.691.2-1.257.345-1.257s.3.566.345 1.257c.065 1.012-.002 1.257-.345 1.257m1.778-.057-.852-.024v-1.812c0-1.031.114-1.812.265-1.812.145 0 .264.306.264.68 0 .564.092.65.542.507.298-.095.715-.029.926.147.211.175.384.647.384 1.048 0 .4-.152.855-.338 1.01-.186.154-.722.27-1.19.256m.463-.473c.393 0 .537-.173.537-.645 0-.356-.13-.727-.29-.826s-.473.004-.698.229c-.224.224-.335.595-.247.825s.402.417.698.417m3.094.477c-.486.018-1.022-.105-1.19-.275-.17-.169-.309-.693-.309-1.165s.112-.927.249-1.01c.136-.085.285.295.33.843.066.794.191.998.612.998s.546-.204.612-.998c.045-.548.194-.928.33-.844.137.084.249.663.249 1.286 0 1.1-.025 1.133-.883 1.165m2.462.052c-.296 0-.583-.148-.64-.33-.055-.182-.16-.758-.232-1.28s-.035-1.103.082-1.293c.165-.267.349-.218.82.221.502.468.53.566.16.566-.32 0-.446.225-.446.794q0 .793.396.793c.219 0 .397.12.397.265s-.242.264-.537.264m2.118 0c-.489 0-.868-.186-1.042-.511-.15-.282-.274-.68-.274-.885 0-.206.238-.59.53-.853.444-.402.641-.43 1.21-.17.425.193.646.48.592.769-.058.304-.384.488-.963.544-.722.07-.82.15-.563.46.202.243.551.317.983.208.469-.117.615-.077.484.135-.103.167-.534.303-.957.303m-.125-1.587c.394 0 .622-.114.529-.265-.09-.145-.328-.264-.53-.264-.2 0-.439.119-.529.264-.093.151.135.265.53.265m4.248 1.587c-.663 0-1.206-.073-1.206-.163s.357-.57.794-1.068c.437-.497.794-1.078.794-1.291s-.15-.402-.331-.418a5 5 0 0 0-.794.016c-.254.026-.463-.015-.463-.092s.238-.267.53-.423c.375-.201.682-.201 1.058 0 .29.156.529.54.529.855s-.32.905-.711 1.313l-.711.742h.695c.383 0 .77.12.86.265.1.162-.307.264-1.044.264m-13.883-3.056a.295.295 0 0 1-.406-.096.296.296 0 0 1 .096-.405.296.296 0 0 1 .406.095.296.296 0 0 1-.096.406m-6.373-2.5c-.15 0-.264-.78-.264-1.809v-1.81l.935-.034c.756-.029.992.09 1.233.618.223.49.22.827-.017 1.345-.246.54-.457.663-.968.566-.546-.105-.654-.022-.654.5 0 .343-.12.624-.265.624m.89-1.587c.207 0 .445-.179.529-.397a1.3 1.3 0 0 0 0-.794c-.084-.218-.322-.397-.53-.397-.207 0-.445.179-.529.397a1.3 1.3 0 0 0 0 .794c.084.218.322.397.53.397m-2.907.529c-.346 0-.629-.124-.629-.276s.15-.257.331-.234c.182.024.51.025.728.002.269-.027.147-.245-.379-.674-.659-.539-.723-.696-.43-1.049.19-.228.568-.415.841-.415s.497.119.497.265c0 .145-.238.264-.53.264-.29 0-.528.12-.528.265s.096.264.214.264.44.166.717.369c.428.312.45.432.15.793-.194.234-.636.426-.982.426m5.904-.004c-.319-.002-.712-.092-.875-.199-.162-.106-.373-.445-.469-.752-.112-.36 0-.774.317-1.165.38-.47.648-.566 1.197-.428.467.117.706.354.706.7 0 .407-.18.525-.794.525q-.794 0-.794.397c0 .218.149.41.33.427.183.017.553.007.824-.021.293-.031.42.063.315.234-.098.157-.438.284-.757.282m-.183-1.584c.291 0 .53-.119.53-.264s-.239-.265-.53-.265c-.29 0-.529.12-.529.265s.238.264.53.264m2.772 1.588c-.375 0-.758-.227-.933-.554-.163-.304-.225-.838-.137-1.186.094-.377.419-.699.8-.794.354-.09.799-.064.99.056.238.15.1.261-.449.358-.632.112-.794.275-.794.8 0 .523.151.676.732.743.403.046.664.195.58.33-.084.136-.439.247-.789.247m1.726 0c-.145 0-.264-.595-.264-1.323s.119-1.323.264-1.323.265.595.265 1.323-.12 1.323-.265 1.323m1.323 0c-.145 0-.264-.47-.264-1.043s-.132-1.124-.293-1.223c-.161-.1-.191-.256-.066-.347.124-.09.358-.403.52-.694.16-.291.488-.568.727-.615s.435.042.435.198c0 .157-.179.284-.397.284s-.397.169-.397.375.149.444.33.53c.265.123.265.185 0 .308-.181.085-.33.62-.33 1.19s-.12 1.037-.265 1.037m1.588 0c-.146 0-.265-.595-.265-1.323s.12-1.323.265-1.323.264.595.264 1.323-.119 1.323-.264 1.323m2.167-.004c-.246-.002-.575-.092-.731-.198s-.368-.42-.47-.695c-.109-.296-.017-.756.224-1.125.225-.343.638-.624.917-.624s.58.12.67.265c.093.149-.12.264-.484.264-.357 0-.718.179-.801.397a1.3 1.3 0 0 0 0 .794c.083.218.444.397.8.397.366 0 .578.116.486.264-.09.146-.365.263-.611.26m-5.078-3.171a.265.265 0 0 1-.264-.265c0-.145.119-.264.264-.264s.265.119.265.264-.12.265-.265.265m2.91 0a.265.265 0 0 1-.264-.265.265.265 0 0 1 .53 0c0 .146-.12.265-.265.265m-2.93-2.501c-.134.083-.244-.217-.244-.667s-.173-1.23-.384-1.735c-.21-.505-.568-.918-.793-.918-.291 0-.41.264-.41.904 0 .497.148.957.33 1.022s.247.209.144.32c-.103.11-.371.13-.596.044-.255-.098-.408-.488-.408-1.038 0-.485-.143-1.024-.317-1.199-.247-.247-.247-.317 0-.317.174 0 .317-.179.317-.397s.12-.397.265-.397.264.178.264.397c0 .247.25.397.66.397.494 0 .755.218 1.032.86l.37.86.318-.86c.175-.473.438-.86.585-.86s.212.148.145.33a92 92 0 0 0-.578 1.717c-.25.762-.566 1.454-.7 1.537m2.137.12c-.15 0-.265-.78-.265-1.81v-1.809l.922-.034c.658-.025.998.109 1.19.469.148.277.27.681.27.899s-.197.591-.437.831-.656.379-.926.308c-.376-.098-.49.02-.49.51 0 .35-.119.636-.264.636m.991-1.638c.293-.056.464-.33.464-.743 0-.414-.17-.688-.464-.744-.255-.05-.535.098-.623.327a1.35 1.35 0 0 0 0 .833c.088.229.368.376.623.327m-13.179.58c-.264 0-.554-.12-.644-.265-.093-.15.13-.265.513-.265.373 0 .677-.1.677-.222s-.306-.361-.68-.532c-.426-.194-.648-.482-.593-.77.052-.276.377-.494.813-.544.426-.049.725.044.725.227 0 .17-.167.246-.371.168s-.445-.068-.536.022c-.09.091.162.426.562.745.627.5.677.638.37 1.007-.195.236-.571.428-.836.428m2.966-.08c-.415.028-.89-.085-1.058-.252-.167-.167-.303-.756-.303-1.309s.112-1.005.248-1.005c.137 0 .286.446.331.992.055.669.211.992.479.992s.424-.323.479-.992c.045-.546.194-.992.33-.992.137 0 .25.565.249 1.256 0 1.193-.039 1.26-.755 1.31m2.535-.013-.986.04v-1.958c0-1.13.112-1.958.265-1.958.145 0 .264.332.264.738 0 .622.109.736.694.727.382-.006.824.192.982.439.197.307.206.684.028 1.19-.218.621-.421.749-1.247.782m.27-.487c.293-.056.464-.33.464-.744 0-.413-.171-.687-.464-.743-.255-.05-.536.098-.624.327a1.35 1.35 0 0 0 0 .833c.088.229.369.376.624.327m10.108.575c-.226.002-.553-.138-.728-.313s-.317-.636-.317-1.026.172-.851.382-1.026c.21-.174.657-.278.992-.23.397.056.64.294.695.681.072.507-.037.595-.728.595-.545 0-.812.13-.812.397 0 .27.274.399.86.401.652.003.764.066.463.26-.218.142-.582.26-.807.261m.013-1.583c.341 0 .529-.134.463-.33a.52.52 0 0 0-.463-.332.52.52 0 0 0-.463.331c-.066.197.122.33.463.33m4.278 1.587c-.558 0-1.091-.076-1.185-.17s.184-.574.617-1.068c.434-.493.788-1.145.788-1.447 0-.448-.126-.527-.672-.423-.424.081-.636.02-.573-.167.054-.163.446-.296.87-.296.667 0 .783.11.85.807.055.55-.093.963-.462 1.298-.298.27-.542.59-.542.714 0 .123.298.223.661.223s.662.12.662.265-.457.264-1.014.264m15.698 15.875h5.16V-81.24h-10.32v22.489zm-1.19-15.875a.265.265 0 0 1-.265-.264.265.265 0 0 1 .53 0c0 .145-.12.264-.265.264m1.322 0a.265.265 0 0 1-.264-.264c0-.146.119-.265.264-.265s.265.12.265.265-.119.264-.265.264m1.191 0c-.056 0-.175-.119-.265-.264s.03-.265.265-.265.355.12.265.265-.21.264-.265.264M-11.767-50.813c-.35 0-.835-.218-1.076-.484-.24-.266-.437-.724-.437-1.017 0-.294.223-.736.496-.983s.928-.52 1.455-.605c.594-.096.959-.303.959-.542 0-.313-.255-.352-1.323-.206-.844.116-1.323.084-1.323-.088 0-.149.177-.448.394-.665s.732-.468 1.145-.559c.413-.09 1.072-.043 1.465.107.392.15.76.422.818.606s.164 1.258.237 2.385c.132 2.03.127 2.05-.507 2.05-.353 0-.641-.122-.641-.273 0-.189-.16-.189-.512 0-.282.15-.8.274-1.15.274m.694-1.11c.358-.05.602-.303.655-.676.063-.443-.048-.595-.43-.595-.284 0-.66.173-.835.385-.176.212-.24.516-.14.677.099.16.437.254.75.21" class="themed-path" style="stroke-width:0.264583" transform="translate(13.28 82.828)"></path></svg>
<p>Based on this reasoning, we have initiated support in Normalized Systems tooling for inheritance or ontological
refinement using an implementation that is based on polymorphism for the software classes, and utilizes option <strong>b</strong> for the
organization of the database tables.</p>]]></content:encoded>
            <category>wisdom</category>
        </item>
        <item>
            <title><![CDATA[2022, looking back at a year of R&D]]></title>
            <link>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview</link>
            <guid>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview</guid>
            <pubDate>Fri, 27 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[2022 was a fruitful year for R&D at NSX. Adapting to life during the prior two years marked by the COVID-19]]></description>
            <content:encoded><![CDATA[<p>2022 was a fruitful year for R&amp;D at NSX. Adapting to life during the prior two years marked by the COVID-19
pandemic was certainly something the software industry excelled at. Nevertheless, being back in the office and having
face-to-face interactions and the open exchange of ideas has also been greatly beneficial to our work.</p>
<p>With the passing of 2022, we want to look back at many of the notable changes coming out of R&amp;D. Several milestones
in the development of our modelling and code generation frameworks have opened up many new possibilities for innovation
and have accelerated development even further.</p>
<a target="\_blank" href="https://foundation.stars-end.net/assets/files/overview-r&amp;d-2022-b93dca35dd12c6e84d861a5ca64651f6.pdf" class="button--cln button button--primary"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download" aria-hidden="true"><path d="M12 15V3"></path><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><path d="m7 10 5 5 5-5"></path></svg> Download the presentation</a>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="model-validations">Model validations<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#model-validations" class="hash-link" aria-label="Direct link to Model validations" title="Direct link to Model validations" translate="no">​</a></h2>
<p>We initially developed <a class="" href="https://foundation.stars-end.net/docs/tools/model-validations">model validations</a> as a way to quickly identify some commonly
occurring issues in our JEE application models. The initial implementation was therefore coupled to the metamodel for
those applications.</p>
<p>Driven by innovations in our metamodel architecture and customer demand, we have completely overhauled the
implementation of the model validation framework. It can now be used to validate any of our metamodels and the
definition of new validations has been greatly simplified and integrated with our expansion resources. This allows us
to specify validations that are relevant within specific scopes, whether it be relevant to a specific expander bundle or
even individual projects.</p>
<p>Previously we integrated the validations into our build pipelines. To make them more accessible we now also integrated
them into our modelling tool, the μRadiant. This makes the validation results visible at a glance.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="model-transmutations">Model transmutations<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#model-transmutations" class="hash-link" aria-label="Direct link to Model transmutations" title="Direct link to Model transmutations" translate="no">​</a></h2>
<p><a class="" href="https://foundation.stars-end.net/docs/tools/model-transmutations">Model transmutations</a> are a new way of applying transformations to NS models. These
transformations are defined as part of expansion resources, just like the new model validations, and are idempotent.</p>
<p>In the past, we've experimented with applying transformations dynamically before expanding a model into artifacts.
Though we do believe that there are some valid use-cases for these kinds of transformations, we've found that they
introduce unintended coupling between the transformation and the domain of the model. Many features added to a model,
will often also have to be applied to the transformation. This means that the implementation of the transformation
would have to be modified to accommodate an unrelated concern.</p>
<p>Another obvious issue with dynamically adapting the model at runtime is that the final model is obscured from the
developer, which makes it harder to understand how it behaves. This issue is addressed by the model transmutations by
writing the transformed model back to the model files, essentially updating the model permanently. As the transformation
is idempotent and requires a manual action to execute, it can be reapplied when required.</p>
<p>Similar to the model validations, we've also integrated the transmutations into the μRadiant modelling tool, to make them
more accessible. Though they can both also be executed from command-line.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Example</div><div class="admonitionContent_BuS1"><p>The <code>rest-expanders</code> bundle requires a considerable amount of options to be integrated into an application model. To
provision default implementations, which cover the majority of use-cases, a project called <code>rest-adder</code> was introduced.
This application could transform an application model automatically to add the needed elements and options. This
project has now been replaced by transmutations that achieve the same thing.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="improved-model-loading">Improved model loading<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#improved-model-loading" class="hash-link" aria-label="Direct link to Improved model loading" title="Direct link to Improved model loading" translate="no">​</a></h2>
<p>The <a class="" href="https://foundation.stars-end.net/docs/ecosystem/engineering-solutions/expanders/how-it-works/model-loading">ModelLoader</a> system we developed to load our models has
also been fully reworked. The modularity of the system has been greatly improved, and we've introduced the ability
to introduce additional processing steps in between each step of the model loading process through the introduction
of ModelLoadingListeners. These listeners can be defined in expansion resources and attached at the end of a specific
step in the loading process. They receive the result of that step, which they can then process to perform any number
of operations.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Example</div><div class="admonitionContent_BuS1"><p>One such use-case is the current implementation of the QuerySearch metamodel. This model is under construction, but is
already in use to drive the expanders in the <code>querysearch-expanders</code> bundle. ModelLoadingListeners are used to transform
the original options that were introduced to enable QuerySearch into the metamodel. This makes it possible for us to
refine the model and already migrate the technical implementation in a way that does not impact the projects that use
these expanders. Once the migration is complete, this listener can be replaced with a transmutation to upgrade existing
projects to the new metamodel.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="expanders">Expanders<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#expanders" class="hash-link" aria-label="Direct link to Expanders" title="Direct link to Expanders" translate="no">​</a></h2>
<p>Over the last year, we've put considerable effort into cleaning up the codebase of expanded JEE
applications. Some of these changes include:</p>
<ul>
<li class="">Replacing the use of <code>Vector&lt;T&gt;</code> with <code>ArrayList&lt;T&gt;</code> in places where it was still used.</li>
<li class="">Removing redundant (un)boxing operations such as <code>new Long(String)</code>, <code>Long.longValue()</code> and <code>new Long(0)</code>.</li>
<li class="">Pruning many legacy methods.</li>
<li class="">Patching <code>EngineService.collector</code> so it is no longer required for workflows to function.</li>
<li class="">Removing support for Java 7 and introducing support for Java 17.</li>
</ul>
<p>For workflows, caching of the workflow configuration was added to improve performance. The <code>DetailsWithoutRefs</code>
projection was also added to improve performance in cases where link fields do not have to be retrieved from the
database. Finders now come with an "in"-operation and the option <code>configuration.properties</code> was added to include
a properties file on the classpath for configuration in individual components.</p>
<p>Exceptions during the model loading and expansion processes have been reworked to provide more concise and useful
information about what exact part of the model caused the exception.</p>
<p>Improvements in the metamodel infrastructure allow for faster introduction of new features in various models. Therefore
we were able to add a new concept for unique constraints to DataElements. These replace the options <code>uniqueKey</code>
(<code>Expanders</code>) and <code>isUnique</code> (<code>rest-expanders</code>), to indicate that a field or a combination of fields should be unique
in the database. Both <code>rest-expanders</code> and <code>sql-expanders</code> will introduce support for these constraints during 2023.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="optiontypes">OptionTypes<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#optiontypes" class="hash-link" aria-label="Direct link to OptionTypes" title="Direct link to OptionTypes" translate="no">​</a></h2>
<p>Another key innovation has been the introduction of a single
<a class="" href="https://foundation.stars-end.net/docs/ecosystem/engineering-solutions/expanders/data-resources/options/"><code>OptionType</code></a> meta element, to replace all element-specific
ones, such as <code>DataOption</code> or <code>FieldOption</code>. Unifying these option types also allowed us to add support for them to all
elements.</p>
<p>The new <code>OptionType</code> element has also been extended with a considerable set of properties:</p>
<ul>
<li class="">What elements the option can be applied to.</li>
<li class="">Whether the option can or should have a value.</li>
<li class="">Regex validation of the option value.</li>
<li class="">Whether the option should be cascaded to child elements.</li>
<li class="">Deprecation message and expiration date.</li>
<li class="">Name aliases to allow renaming of options.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="testmodelbuilder">TestModelBuilder<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#testmodelbuilder" class="hash-link" aria-label="Direct link to TestModelBuilder" title="Direct link to TestModelBuilder" translate="no">​</a></h2>
<p>Up to this point, the <code>ModelSpecBuilder</code> class has been used to generate composite projects in expander tests, that
can be used to test code against. Now we've introduced the
<a class="" href="https://foundation.stars-end.net/docs/ecosystem/engineering-solutions/expanders/testing/onion-spec/"><code>TestModelBuilder</code></a>, which does not only
convert the specs to a composite projection. It also applies model transmutations, listeners, and other registered
post-processing steps for the model.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="meta-metamodel">Meta-metamodel<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#meta-metamodel" class="hash-link" aria-label="Direct link to Meta-metamodel" title="Direct link to Meta-metamodel" translate="no">​</a></h2>
<p>We've designed a <a class="" href="https://foundation.stars-end.net/docs/development/metamodels/ontologies/">new metamodel</a> that
can be used to describe ontologies in a way that is not specific to our own technical implementation and allows for
easier exchange of models. This new metamodel is capable of representing bidirectional relationships better than our
current metamodel. We also introduced support for inheritance through polymorphic interfaces, to support this
functionality without introducing the high coupling issues associated with classic inheritance implementations.</p>
<p>To bring this new model into practice, we've defined a transmutation which can transform the model into our current
metamodel for which we already have technical infrastructure. This transformation of the model allows us to practically
transition to the new metamodel without immediately having to retool our infrastructure.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="μradiant">μRadiant<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#%CE%BCradiant" class="hash-link" aria-label="Direct link to μRadiant" title="Direct link to μRadiant" translate="no">​</a></h2>
<p>For many years, our main development tool has been the Prime Radiant. A tool based on our expanded JEE applications,
that could be used to modify NS models. Though it was very successful in accelerating development of new NS projects,
we felt that we could offer a better experience to our developers with a new tool that is purpose-built for the task
of creating and developing with NS models.</p>
<p>The <a class="" href="https://foundation.stars-end.net/docs/tools/micro-radiant/">μRadiant</a> is this new tool, built on technologies such
as the <a href="https://javalin.io/" target="_blank" rel="noopener noreferrer" class="">Javalin framework</a> and <a href="https://angular.io/" target="_blank" rel="noopener noreferrer" class="">Angular</a>. Though it is not a
classic JEE application, it is built following the principles of the NS theory and leverages our expander technology
where suitable. We were able to rapidly mach and exceed the capabilities of the Prime Radiant, which has turned the
μRadiant into an all-out powerhouse in NS modelling and development.</p>
<p>Some notable features introduced in the μRadiant are:</p>
<ul>
<li class="">The integration of model validations and transmutations.</li>
<li class="">A visual model representation with some interaction and editing capabilities that cover the majority of use-cases of
our previous visual modelling tool.</li>
<li class="">Integration with the NS Initializer tool to easily set up various new projects.</li>
<li class="">Support for the development and use of new metamodels.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ns-scripting">NS Scripting<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#ns-scripting" class="hash-link" aria-label="Direct link to NS Scripting" title="Direct link to NS Scripting" translate="no">​</a></h2>
<p>As is common in software development, we found ourselves creating many scripts to facilitate the use of both our own and
third-party tooling. Supporting the different scripts/interpreters such as Bash, Batch and Powershell was rapidly
becoming an issue. We therefore set out to develop our own scripting language, which we ended up basing on the
<a href="https://kotlinlang.org/" target="_blank" rel="noopener noreferrer" class="">Kotlin language</a> due to its strong support for higher-order functions allowing us to define
a simple API to define scripts with.</p>
<p><a class="" href="https://foundation.stars-end.net/docs/tools/ns-scripting/">NS Scripting</a> implements scoping, inspired by the DSL
of Jenkins scripts, to define an API that is clear to understand and performs operations in a consistent manner. It is
not our goal to reinvent the wheel and create a new general-purpose scripting engine. KotlinScript itself and many
other technologies such as Python and Groovy already have a strong offering to cover this use-case. Our goal is to build
a scripting environment that simplifies the common uses of our technology and other supported tools on all platforms.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ns-initializer">NS Initializer<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#ns-initializer" class="hash-link" aria-label="Direct link to NS Initializer" title="Direct link to NS Initializer" translate="no">​</a></h2>
<p>The <a class="" href="https://foundation.stars-end.net/docs/tools/ns-initializer/">NS Initializer</a> has been a key product to both
simplify setting up new NS projects and standardizing the structure of projects and integration with infrastructure.
Initially based simply on a string replacement mechanism that injected variables into template files, the initializer
now fully leverages our expander infrastructure to generate artifacts and has projects definitions based on its own
metamodel. This has allowed us to both dynamically generate its command-line interface, and integrate it into the
μRadiant for setting up new projects.</p>
<p>In 2022 we added a new project type to the initializer to generate metamodel projects, which has since also been
reworked to generate projects based on our new ontology metamodel. Recently we also added an initializer to generate
<a href="https://www.keycloak.org/" target="_blank" rel="noopener noreferrer" class="">Keycloak</a> projects with support for a custom theming library, which shows that its uses can
easily be extended beyond the scope of NS-specific projects.</p>
<p>One of the next big steps for the project include the introduction of project modules. This will allow us to separate
out some specific functionalities into modules, such as generating CI/CD scripts for our own environment. These
modules can then be combined into different project types, allowing re-use and extending of initializers to cover
a multitude of use-cases.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="docker-images">Docker images<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#docker-images" class="hash-link" aria-label="Direct link to Docker images" title="Direct link to Docker images" translate="no">​</a></h2>
<p>We supply <a class="" href="https://foundation.stars-end.net/docs/ecosystem/ns-application/deployment/docker/nsx-tomee-base">Docker base images</a>
to run our JEE applications. We have reworked these images with a clear versioning strategy and encapsulating all
required technologies. There are images with fixed versions of TomEE and the image itself, as well as other tags that
supply the latest image for a version of TomEE, a major version of TomEE or just the latest image with the latest
version of all technologies. Additionally, we are also providing variants for different versions of JRE, but we have
already phased out images for Java 8 and will phase out Java 11 soon, as JRE 17 should run the applications targeting
older versions as well.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="product-development">Product development<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#product-development" class="hash-link" aria-label="Direct link to Product development" title="Direct link to Product development" translate="no">​</a></h2>
<p>To support our growing number of users both internally and externally, we have put great effort into improving the
user-experience and accessibility of our tools. This includes providing better documentation and improving the setup
process, through dedicated Windows installers, Ubuntu packages and Chocolatey packages.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-foundation">New Foundation<a href="https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2023/01/27/r&amp;d-2022-overview#new-foundation" class="hash-link" aria-label="Direct link to New Foundation" title="Direct link to New Foundation" translate="no">​</a></h2>
<p>In line with our efforts to improve the accessibility of our products, we've also put considerable effort into improving
our <a href="https://foundation.stars-end.net/" target="_blank" rel="noopener noreferrer" class="">Foundation website</a> and the documentation and content published on it. We've
removed all deprecated content that was still present on the website, and we've rewritten and improved everything else.
The new platform also has a far more effective search engine, which has weighted results to improve the relevance of the
search results. We've now integrated many of the externally published documentation as well and integrated the Maven
plugin documentation into the search engine.</p>]]></content:encoded>
            <category>presentation</category>
            <category>r&amp;d</category>
        </item>
        <item>
            <title><![CDATA[On the Use of Transactions]]></title>
            <link>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2021/02/05/transactions</link>
            <guid>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2021/02/05/transactions</guid>
            <pubDate>Fri, 05 Feb 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[The use of transactions in software systems is quite a fundamental and non-trivial issue. Every one knows the obvious example of retrieving money from a cash machine. Either your account is debited and you receive the money, or none of the above happens. In case the machine fails to dispense the money, the transaction requires a rollback of the debiting. However, it is not always that straightforward. Though the use of transactions providing automated rollbacks is often desirable to end-users and system analysts, it may well be unnecessary complicated or even plainly impossible to implement for the software developer.]]></description>
            <content:encoded><![CDATA[<p>The use of transactions in software systems is quite a fundamental and non-trivial issue. Every one knows the obvious example of retrieving money from a cash machine. Either your account is debited and you receive the money, or none of the above happens. In case the machine fails to dispense the money, the transaction requires a rollback of the debiting. However, it is not always that straightforward. Though the use of transactions providing automated rollbacks is often desirable to end-users and system analysts, it may well be unnecessary complicated or even plainly impossible to implement for the software developer.</p>
<p>In order to enable scaling and to avoid deadlocks, transaction processing systems typically deal with large numbers of small things, and strive <em>to come in, do the work, and get out</em>. This means that it is in general not feasible to use technical transactions to provide end-to-end transactional integrity for customer transactions. For instance, guaranteeing the customer transaction of a money transfer is in general not implemented through a technical transaction encompassing the debiting of the source bank account and the crediting of the destination bank account, which may reside in another bank across the globe. It is typically guaranteed by taking the transfer request as fast as possible into a secure database, followed by a number of sequential processing steps or individual transactions. This flow may even require human intervention to make sure that the customer transaction, i.e., the transfer request stored in the secure database, is executed properly.</p>
<p>The use of end-to-end technical transactions would often cause lots of problems in the real world. For instance, defining a technical transaction around the reservation of a flight ticket, a rental car, and a hotel room, could seem desirable to indulge the customer, but would soon lead to the simultaneous locking of all reservation systems around the world. Avoiding such deadlocks is closely related to the NS theorem <em>Separation of States</em>. This theorem states that after every task or action, the result state should be stored in a corresponding and appropriate data entity. This will enable the independent execution, and therefore evolution, of the implementation of the processing task, and the error handling of the task. Besides better evolvability, this strategy improves the tracing and handling of errors, and reduces the chances of having locked resources.</p>
<p>Another often overlooked issue in transaction management is the complexity of the rollback. While a previous write operation in the same database could be compensated by a relatively simple rollback, developers would have to implement dedicated <em>compensating transactions</em> in case the various steps imply changes across different systems. These compensating actions are not always straightforward or even possible. For instance, in case one of the steps has triggered a physical action, like shipping a product or opening a switch or water tap, it is simply impossible to rollback. Unless mopping the floor is part of the compensating transaction.</p>
<p>These issues are also quite relevant when client systems invoke an API (Application Programming Interface) of a target system. Examples of such client systems are business process management systems invoking services from underlying transactional systems, or user interface front-ends developed upon the service APIs provided by back-end systems. The client systems often desires <em>a customer transaction</em> encompassing several service calls on the target system. This requires client and target system to agree on one or multiple scenarios, that define the responsibilities and behavior at both ends. We discuss here the various possibilities.</p>
<ul>
<li class="">
<p>The client system defines the transaction and the target system is expected to honor the transaction. By invoking some <em>start-transaction</em> interface, the client system expects the target system to be able to rollback everything that is being processed until the <em>stop-transaction</em> interface is called. This is a very tough, cumbersome, and nearly impossible requirement to fulfil for the target system.</p>
</li>
<li class="">
<p>The client system attempts to both manage and honor the transaction. Within the scope of a desired transaction, the client system keeps track of the various changes it incurs in the target system, and will rollback and/or compensate the various changes that have already been performed in case something fails.</p>
</li>
<li class="">
<p>The target system provides an explicit aggregated service API for certain customer transactions required by the client system. In this case, the target system attempts to manage and honor the transactional integrity for a specific set of customer transactions, thereby providing appropriate rollbacks and/or compensating actions for these specified transactions.</p>
</li>
<li class="">
<p>The target system provides an asynchronous request API for the aggregated customer transaction required by the client system. The submitted request will be stored immediately in the database, and the target system can start the processing flow performing the various tasks, compensating already performed tasks if required, thereby even supporting manual interventions. The client system can choose to perform other tasks while checking regularly for an answer, or opt to wait or block until the aggregated service is fully executed. The latter option would emulate a synchronous service call at the client side.</p>
</li>
</ul>]]></content:encoded>
            <category>wisdom</category>
        </item>
        <item>
            <title><![CDATA[On Hierarchical Workflows]]></title>
            <link>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2018/12/05/hierarchical-workflows</link>
            <guid>https://foundation.stars-end.net/docs/nst-knowledge/knowledge-channels/articles/2018/12/05/hierarchical-workflows</guid>
            <pubDate>Wed, 05 Dec 2018 00:00:00 GMT</pubDate>
            <description><![CDATA[Decomposing business process models into state machines, it is quite common to encounter so-called hierarchical workflows, i.e. the creation in a workflow of an instance of another data element, which triggers a secondary workflow. We distinguish two possible scenarios.]]></description>
            <content:encoded><![CDATA[<p>Decomposing business process models into state machines, it is quite common to encounter so-called hierarchical workflows, i.e. the creation in a workflow of an instance of another data element, which triggers a secondary workflow. We distinguish two possible scenarios.</p>
<ul>
<li class="">
<p>Fire and forget: a workflow task triggers a secondary flow, which can be processed in an independent way.</p>
</li>
<li class="">
<p>A workflow task triggers a secondary flow, but the task in the primary flow can only be considered complete when processing is completed in the secondary flow.</p>
</li>
</ul>
<p>In the second scenario, one should be cautious about possible dependencies and the corresponding coupling. More specifically, coupling may surface in two ways.</p>
<ul>
<li class="">
<p>In case the primary workflow and/or task is polling the secondary flow that it has triggered, this could lead to lots of threads and coupling in time between software modules.</p>
</li>
<li class="">
<p>In case the secondary workflow has to report back to the primary flow upon completion, this could lead to a bidirectional dependency between the two workflows. This could result in a technical issue in case the two workflows belong to a different software component.</p>
</li>
</ul>
<p>In order to avoid coupling and even possible locking in time, NS theory suggests that the secondary workflow needs to report back upon completion. However, to avoid bidirectional coupling between the code of both workflows, this should be done using a loosely coupled mechanism. An example of such a loosely coupled mechanism would be a service interface on the primary workflow. This would allow the primary flow to pass the URL of that service interface as a callback function to the secondary flow, avoiding tight coupling in the source base.</p>
<p>Based on the confirmation or completion message of the secondary workflow, the primary flow will set the corresponding status on the target data element of the primary flow. In this way, the secondary workflow does not need any knowledge of the possible states of the primary flow. In case multiple subflows need to be processed and completed before the primary flow is able to continue, it is again (a task in) the primary flow that needs to have the appropriate knowledge to combine the information provided by the various subflows.</p>]]></content:encoded>
            <category>wisdom</category>
        </item>
    </channel>
</rss>