From b34327e4f293210d02e2598f7842f3720f59f961 Mon Sep 17 00:00:00 2001
From: dh_heyart <pheyart@dh-software.de>
Date: Do, 02 Jul 2026 17:39:52 +0200
Subject: [PATCH] new build of client, removed config folder since theme.json now is part of the configuration json (layout1.json and layout2.json)
---
/dev/null | 1
client/fv.DeOhu3H1.js | 3
configurations/14243/public/layout1.json | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++
client/vendor/wui.chunk.js | 3
configurations/14243/public/layout2.json | 10 ++
client/vendor/dh.chunk.js | 5
client/vendor/vendor.chunk.js | 3
7 files changed, 215 insertions(+), 12 deletions(-)
diff --git a/client/config/theme.json b/client/config/theme.json
deleted file mode 100644
index f78b7c5..0000000
--- a/client/config/theme.json
+++ /dev/null
@@ -1,200 +0,0 @@
-{
- "colors": {
- "--primary-text-color": {
- "type": "color",
- "default": "#000000",
- "name": "Text Primärfarbe",
- "description": "Dies ist die Primärfarbe der Oberfläche."
- },
- "--primary-button-text-color": {
- "type": "color",
- "default": "#000000",
- "name": "Button-Text Primärfarbe",
- "description": "Dies ist die Primärfarbe der Buttons der Oberfläche."
- },
- "--primary-color": {
- "type": "color",
- "default": "#e4322b",
- "name": "Primärfarbe",
- "description": "Dies ist die Primärfarbe der Oberfläche."
- },
- "--primary-background-color": {
- "type": "color",
- "default": "#e4322b",
- "name": "Hintergrund Primärfarbe",
- "description": "Dies ist die Hintergrund Primärfarbe der Elemente."
- },
- "--hover-background-color": {
- "type": "color",
- "default": "#e4322b",
- "name": "Button Variante 1 Hover",
- "description": "Dies ist die Hoverfarbe 1 der Buttons, falls vorhanden."
- },
- "--hover-background-color-secondary": {
- "type": "color",
- "default": "#dedede",
- "name": "Button Variante 2 Hover",
- "description": "Dies ist die Hoverfarbe 2 der Buttons, falls vorhanden."
- },
- "--click-background-color-secondary": {
- "type": "color",
- "default": "#f0f0f0",
- "name": "Button Variante 2 Click",
- "description": "Dies ist die Clickfarbe 2 der Buttons, falls vorhanden."
- },
- "--bordered-color": {
- "type": "color",
- "default": "#e4322b",
- "name": "Kantenlinienfarbe",
- "description": "Dies ist die Kantenlinienfarbe der Elemente."
- }
- },
- "template": {
- "page-title": {
- "type": "string",
- "value": "Furnview",
- "description": "Title der Seite",
- "name": "Seitentitle"
- },
- "privacy-link": {
- "type": "attribute",
- "attribute": "privacylink",
- "varType": "string",
- "default": "https://www.dh-software.de/kontakt/datenschutz/",
- "name": "Datenschutzbestimmungslink",
- "description": "Link zur Datenschutzbestimmung"
- },
- "shopping-cart": {
- "type": "boolean",
- "default": false,
- "name": "Warenkorb",
- "description": "Warenkorb-Button anzeigen."
- },
- "save-pdf": {
- "type": "boolean",
- "default": true,
- "name": "PDF Speichern",
- "description": "PDF-Speichern Button anzeigen."
- },
- "save-obj": {
- "type": "boolean",
- "default": false,
- "name": "OBJ Speichern",
- "description": "OBJ-Speichern Button anzeigen.",
- "manufactureronly": true
- },
- "save-skp": {
- "type": "boolean",
- "default": false,
- "name": "SKP Speichern",
- "description": "SKP-Speichern Button anzeigen.",
- "manufactureronly": true
- },
- "save-dxf": {
- "type": "boolean",
- "default": false,
- "name": "DXF Speichern",
- "description": "DXF-Speichern Button anzeigen.",
- "manufactureronly": true
- },
- "save-xml": {
- "type": "boolean",
- "default": false,
- "name": "XML Speichern",
- "description": "XML-Speichern Button anzeigen.",
- "manufactureronly": true
- },
- "save-xls": {
- "type": "boolean",
- "default": false,
- "name": "XLS Speichern",
- "description": "XLS-Speichern Button anzeigen."
- },
- "send-inquiry": {
- "type": "boolean",
- "default": false,
- "name": "Anfrage senden",
- "description": "Anfrage senden Button anzeigen."
- },
- "properties-container": [
- {
- "type": "attribute",
- "attribute": "disableNotSettable",
- "varType": "boolean",
- "default": false,
- "name": "Nicht änderbare Ausführungen deaktivieren",
- "description": ""
- },
- {
- "type": "attribute",
- "attribute": "mode-selection",
- "varType": "boolean",
- "default": true,
- "name": "Pick-Level Dropdown anzeigen",
- "description": ""
- }
- ],
- "enable-programselection": {
- "type": "boolean",
- "default": false,
- "name": "Modellauswahl aktivieren",
- "description": "Modellauswahl vor der Konfiguration anzeigen."
- },
- "language_picker": {
- "type": "boolean",
- "default": false,
- "name": "Sprachauswahl aktivieren",
- "description": "Sprachauswahl während der Konfiguration möglich"
- },
- "program-selection": [
- {
- "type": "attribute",
- "attribute": "override-initial-article",
- "varType": "boolean",
- "default": false,
- "name": "Konfigurator-Artikel automatisch platzieren",
- "description": "Wenn kein Intial-Artikel angegeben, ersten Konfigurator-Artikel laden"
- },
- {
- "type": "attribute",
- "attribute": "prevent-confirmation-modal",
- "varType": "boolean",
- "default": false,
- "name": "Es dürfen mehrere Modelle kombiniert werden",
- "description": "Zeigt eine bestätigung beim wechseln des Programs an"
- }
- ],
- "card_container_dimension_filter": {
- "type": "boolean",
- "default": true,
- "name": "Dimensionsfilter anzeigen",
- "description": "Dimensionsfilter für die Artikelübersicht ein/ausschalten"
- },
- "filter-popup": {
- "type": "boolean",
- "default": true,
- "name": "Filter popup",
- "description": "Filter als Popup oder inline der Artikelliste anzeigen"
- },
- "enable-article-list": {
- "type": "boolean",
- "default": true,
- "name": "Artikelauflistung anzeigen",
- "description": "Step Artikelauflistung anzeigen."
- },
- "enable-equipment-list": {
- "type": "boolean",
- "default": true,
- "name": "Zubehör anzeigen",
- "description": "Step Zubehör anzeigen."
- }
- },
- "mail": {
- "to": {
- "type": "string",
- "default": "",
- "name": "Auftrags E-Mail Adresse",
- "description": "Standard Auftrags E-Mail Empfänger."
- }
- }
-}
\ No newline at end of file
diff --git a/client/fv.DeOhu3H1.js b/client/fv.DeOhu3H1.js
index aee0b05..7d81173 100644
--- a/client/fv.DeOhu3H1.js
+++ b/client/fv.DeOhu3H1.js
@@ -1,2 +1 @@
-import"./vendor/dh.chunk.js";import{h as e,y as t}from"./vendor/wui.chunk.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),document.addEventListener(`readystatechange`,async()=>{await e.Initialized,await t.IsAppReady;let n=document.querySelector(`.catalog-content`);document.body.classList.toggle(`catalog-hidden`,n.childElementCount===0)});
-//# sourceMappingURL=fv.DeOhu3H1.js.map
\ No newline at end of file
+import"./vendor/dh.chunk.js";import{h as e,y as t}from"./vendor/wui.chunk.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),document.addEventListener(`readystatechange`,async()=>{await e.Initialized,await t.IsAppReady;let n=document.querySelector(`.catalog-content`);document.body.classList.toggle(`catalog-hidden`,n.childElementCount===0)});
\ No newline at end of file
diff --git a/client/fv.DeOhu3H1.js.map b/client/fv.DeOhu3H1.js.map
deleted file mode 100644
index df0d79f..0000000
--- a/client/fv.DeOhu3H1.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"fv.DeOhu3H1.js","names":[],"sources":["../src/script/hide-catalog.ts"],"sourcesContent":["import {RequestService, WebViewerService} from \"@dh-software/webui-api\";\r\n\r\ndocument.addEventListener(\"readystatechange\", async () => {\r\n await RequestService.Initialized;\r\n await WebViewerService.IsAppReady;\r\n const catalogContent = document.querySelector(\".catalog-content\");\r\n document.body.classList.toggle(\"catalog-hidden\", catalogContent.childElementCount === 0);\r\n})\r\n"],"mappings":"wwBAEA,SAAS,iBAAiB,mBAAoB,SAAY,CACtD,MAAM,EAAe,YACrB,MAAM,EAAiB,WACvB,IAAM,EAAiB,SAAS,cAAc,kBAAkB,EAChE,SAAS,KAAK,UAAU,OAAO,iBAAkB,EAAe,oBAAsB,CAAC,CAC3F,CAAC"}
\ No newline at end of file
diff --git a/client/vendor/dh.chunk.js b/client/vendor/dh.chunk.js
index 26ff9a3..1ac8208 100644
--- a/client/vendor/dh.chunk.js
+++ b/client/vendor/dh.chunk.js
@@ -14450,7 +14450,7 @@
</div>
`}};Ui.styles=o`
${g(zi)}
- `,Hi([c({type:Boolean,attribute:`open`,reflect:!0})],Ui.prototype,`open`,2),Hi([c({type:String,attribute:`button-variant`,reflect:!0})],Ui.prototype,`btnVariant`,2),Hi([a(`#menu-container`)],Ui.prototype,`menuContainer`,2),Hi([M({bubbles:!0,cancelable:!0,composed:!0},`sidebarOpen`)],Ui.prototype,`sidebarOpen`,2),Ui=Hi([p(`dh-sidebar`)],Ui),Ae(!0);var Wi=!0;try{Wi=!1}catch{}Wi&&(console.log=()=>{},console.debug=()=>{},console.info=()=>{});var R=new class{constructor(){this._components=new Map}get(e){let t=this._components.get(e.toUpperCase());return t===void 0?[]:t}valid(e,t){return e&&e.matches(t)}isElement(e){for(let[t,n]of this._components)for(let t of n)if(t==e)return!0;return!1}register(e){let t=this.get(e.tagName);t??=[],t.includes(e)==0&&t.push(e),this._components.set(e.tagName.toUpperCase(),t)}findAll(e,t=``){let n=this.get(e);if(t.length<1)return n;let r=[];return n.forEach(e=>{this.valid(e,t)&&r.push(e)}),r}find(e,t=``){let n=this.get(e);return t.length<1&&n.length>0?n[0]:n.find(e=>!!(e&&e.matches(t)))}findScrollableParent(e){if(e==null)return;let t=getComputedStyle(e).getPropertyValue(`overflow`);if((e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth)&&!t.includes(`hidden`)&&!t.includes(`visible`)||t.includes(`auto`)||t.includes(`scroll`))return e;let n=this.getParent(e);if(n)return this.findScrollableParent(n)}getParent(e){if(e==null)return;if(e.assignedSlot)return this.getParent(e.assignedSlot);if(e.parentElement)return e.parentElement;let t=e.getRootNode();if(t&&t.host)return t.host}getParentComponent(e){let t=this.getParent(e);if(t!=null)return this.isElement(t)?t:this.getParentComponent(t)}isPartOfHiddenSubtree(e){return e==null?!1:e.hideElement?!0:this.isPartOfHiddenSubtree(this.getParentComponent(e))}doActionRecursiveOnChildren(e,t){for(let r=0;r<e.children.length;++r){let i=e.children.item(r);i&&(i instanceof n&&t(i),this.doActionRecursiveOnChildren(i,t))}if(e instanceof n&&e.renderRoot&&e.renderRoot.children)for(let r=0;r<e.renderRoot.children.length;++r){let i=e.renderRoot.children.item(r);i&&(i instanceof n&&t(i),this.doActionRecursiveOnChildren(i,t))}}getParentShadowRoot(e,t){let n=e;for(;n;){if(n.tagName===t.toUpperCase())return n.shadowRoot;let e=n.getRootNode();n=e instanceof ShadowRoot?e.host:n.parentElement}return null}async waitForAllChildren(e){e.CheckFetchPromise&&await e.CheckFetchPromise(),e.updateComplete&&await e.updateComplete;for(let t=0;t<e.children.length;++t){let n=e.children.item(t);n&&await this.waitForAllChildren(n)}if(e instanceof n&&e.renderRoot&&e.renderRoot.children)for(let t=0;t<e.renderRoot.children.length;++t){let n=e.renderRoot.children.item(t);n&&await this.waitForAllChildren(n)}}},Gi=`.close-symbol{position:relative;cursor:pointer;width:100%;height:100%}.close-symbol.loading{z-index:999}.close-symbol.loading:after,.close-symbol.loading:before{background:#fff}.close-symbol:after,.close-symbol:before{content:" ";position:absolute;width:100%;height:1px;top:50%;background:var(--close-symbol-background, #888);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.close-symbol:after:hover,.close-symbol:before:hover{background:var(--close-symbol-background-hover, #333)}.close-symbol:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);transform:rotate(-45deg)}.close-symbol:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg)}:host(.active) .circle-number-symbol{border:var(--circle-number-symbol-border-active, 2px solid #000000)}.circle-number-symbol{position:relative;width:var(--circle-number-symbol-size, 30px);height:var(--circle-number-symbol-size, 30px);border-radius:50%;border:var(--circle-number-symbol-border, 2px solid white);box-shadow:var(--circle-number-symbol-box-shadow, 1px 2px 5px 0 black);background:var(--circle-number-symbol-background, var(--primary-color, red));color:var(--circle-number-symbol-color, var(--primary-text-color, black));display:flex;justify-content:center;align-items:center}.custom-symbol{position:relative;cursor:pointer;left:10px;display:flex}.custom-symbol.up:after{background-image:var(--custom-symbol-image-down, url(/webui/images/minus.svg));content:"";height:18px}.custom-symbol.down:after{background-image:var(--custom-symbol-image-down, url(/webui/images/plus.svg));content:"";height:18px}.custom-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.accordion-symbol{position:relative;cursor:pointer;left:10px;display:flex}.accordion-symbol.up:after{content:"-";font-size:xx-large;transform:scaleX(2) translate(-4px)}.accordion-symbol.down:after{content:"+";font-size:xx-large}.accordion-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.chevron-symbol{position:relative;cursor:pointer;left:10px}.chevron-symbol.up:after{content:"<"}.chevron-symbol.down:after{content:">"}.chevron-symbol:after{font:17px Consolas,monospace;color:inherit;-webkit-transform:rotate(90deg) translateX(-100%);-moz-transform:rotate(90deg) translateX(-100%);-ms-transform:rotate(90deg) translateX(-100%);transform:rotate(90deg) translate(-100%);padding:0 0 2px;position:absolute;pointer-events:none}@media(width>=980px){.only-mobile{display:none!important}}@media(width<=980px){.only-desktop{display:none!important}}.bold{font-weight:var(--global-font-weight-bold, 600)}*{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:var(--global-font, Roboto, sans-serif);font-weight:var(--global-font-weight, 400)}.container{display:flex;margin:10px 0}.container.column{flex-direction:column}.container.column.reverse{flex-direction:column-reverse}.container.row{flex-direction:row}.container.row.reverse{flex-direction:row-reverse}.fluid{flex:1}.fluid.space-after{margin-right:55px}.hidden{display:none!important}:host(.mobile-mode-hide),.mobile-mode-hide{display:none!important}.invisible{visibility:hidden!important}:host(.invisible-scroll),.invisible-scroll{overflow:hidden;margin-right:-22px}:host(.invisible-scroll)>:first-child,.invisible-scroll>:first-child{overflow-y:scroll;overflow-x:hidden;padding-right:22px;box-sizing:content-box}:host(.invisible-scroll.bottom),.invisible-scroll.bottom{overflow:hidden;margin-right:unset}:host(.invisible-scroll.bottom)>:first-child,.invisible-scroll.bottom>:first-child{overflow-x:scroll;overflow-y:hidden;padding-right:unset;padding-bottom:22px;margin-bottom:-22px;box-sizing:content-box}:host([disabled]){pointer-events:none;filter:contrast(.5) grayscale(1)}*{scrollbar-color:#5c5c5c hsla(0,0%,100%,.0039215686);scrollbar-width:thin}*[disabled][isfv]{pointer-events:none;filter:contrast(.5) grayscale(1)}::-webkit-scrollbar{height:8px;width:8px;background:#fff0}::-webkit-scrollbar-corner{background:#fff0}::-webkit-scrollbar-thumb{background:#5c5c5c;-webkit-border-radius:8px}::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:horizontal:end:increment,::-webkit-scrollbar-button:horizontal:end:decrement,::-webkit-scrollbar-button{background-color:#0000;color:#0000;border:none}:host{scrollbar-color:var(--base-scrollbar-color, unset);scrollbar-width:var(--base-scrollbar-width, unset)}:host(.invisible){visibility:hidden}:host(:focus-visible){outline:2px solid Highlight;outline-offset:-2px}@media(width<=520px){:host([mobile-mode=hide]){display:none!important}}@media(width>=520px)and (width<=980px){:host([mobile-mode=hide]){display:none!important}}@media(width>=981px){:host([mobile-mode=show]){display:none!important}}
+ `,Hi([c({type:Boolean,attribute:`open`,reflect:!0})],Ui.prototype,`open`,2),Hi([c({type:String,attribute:`button-variant`,reflect:!0})],Ui.prototype,`btnVariant`,2),Hi([a(`#menu-container`)],Ui.prototype,`menuContainer`,2),Hi([M({bubbles:!0,cancelable:!0,composed:!0},`sidebarOpen`)],Ui.prototype,`sidebarOpen`,2),Ui=Hi([p(`dh-sidebar`)],Ui),Ae(!0);var Wi=!0;try{Wi=!0}catch{}Wi&&(console.log=()=>{},console.debug=()=>{},console.info=()=>{});var R=new class{constructor(){this._components=new Map}get(e){let t=this._components.get(e.toUpperCase());return t===void 0?[]:t}valid(e,t){return e&&e.matches(t)}isElement(e){for(let[t,n]of this._components)for(let t of n)if(t==e)return!0;return!1}register(e){let t=this.get(e.tagName);t??=[],t.includes(e)==0&&t.push(e),this._components.set(e.tagName.toUpperCase(),t)}findAll(e,t=``){let n=this.get(e);if(t.length<1)return n;let r=[];return n.forEach(e=>{this.valid(e,t)&&r.push(e)}),r}find(e,t=``){let n=this.get(e);return t.length<1&&n.length>0?n[0]:n.find(e=>!!(e&&e.matches(t)))}findScrollableParent(e){if(e==null)return;let t=getComputedStyle(e).getPropertyValue(`overflow`);if((e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth)&&!t.includes(`hidden`)&&!t.includes(`visible`)||t.includes(`auto`)||t.includes(`scroll`))return e;let n=this.getParent(e);if(n)return this.findScrollableParent(n)}getParent(e){if(e==null)return;if(e.assignedSlot)return this.getParent(e.assignedSlot);if(e.parentElement)return e.parentElement;let t=e.getRootNode();if(t&&t.host)return t.host}getParentComponent(e){let t=this.getParent(e);if(t!=null)return this.isElement(t)?t:this.getParentComponent(t)}isPartOfHiddenSubtree(e){return e==null?!1:e.hideElement?!0:this.isPartOfHiddenSubtree(this.getParentComponent(e))}doActionRecursiveOnChildren(e,t){for(let r=0;r<e.children.length;++r){let i=e.children.item(r);i&&(i instanceof n&&t(i),this.doActionRecursiveOnChildren(i,t))}if(e instanceof n&&e.renderRoot&&e.renderRoot.children)for(let r=0;r<e.renderRoot.children.length;++r){let i=e.renderRoot.children.item(r);i&&(i instanceof n&&t(i),this.doActionRecursiveOnChildren(i,t))}}getParentShadowRoot(e,t){let n=e;for(;n;){if(n.tagName===t.toUpperCase())return n.shadowRoot;let e=n.getRootNode();n=e instanceof ShadowRoot?e.host:n.parentElement}return null}async waitForAllChildren(e){e.CheckFetchPromise&&await e.CheckFetchPromise(),e.updateComplete&&await e.updateComplete;for(let t=0;t<e.children.length;++t){let n=e.children.item(t);n&&await this.waitForAllChildren(n)}if(e instanceof n&&e.renderRoot&&e.renderRoot.children)for(let t=0;t<e.renderRoot.children.length;++t){let n=e.renderRoot.children.item(t);n&&await this.waitForAllChildren(n)}}},Gi=`.close-symbol{position:relative;cursor:pointer;width:100%;height:100%}.close-symbol.loading{z-index:999}.close-symbol.loading:after,.close-symbol.loading:before{background:#fff}.close-symbol:after,.close-symbol:before{content:" ";position:absolute;width:100%;height:1px;top:50%;background:var(--close-symbol-background, #888);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.close-symbol:after:hover,.close-symbol:before:hover{background:var(--close-symbol-background-hover, #333)}.close-symbol:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);transform:rotate(-45deg)}.close-symbol:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg)}:host(.active) .circle-number-symbol{border:var(--circle-number-symbol-border-active, 2px solid #000000)}.circle-number-symbol{position:relative;width:var(--circle-number-symbol-size, 30px);height:var(--circle-number-symbol-size, 30px);border-radius:50%;border:var(--circle-number-symbol-border, 2px solid white);box-shadow:var(--circle-number-symbol-box-shadow, 1px 2px 5px 0 black);background:var(--circle-number-symbol-background, var(--primary-color, red));color:var(--circle-number-symbol-color, var(--primary-text-color, black));display:flex;justify-content:center;align-items:center}.custom-symbol{position:relative;cursor:pointer;left:10px;display:flex}.custom-symbol.up:after{background-image:var(--custom-symbol-image-down, url(/webui/images/minus.svg));content:"";height:18px}.custom-symbol.down:after{background-image:var(--custom-symbol-image-down, url(/webui/images/plus.svg));content:"";height:18px}.custom-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.accordion-symbol{position:relative;cursor:pointer;left:10px;display:flex}.accordion-symbol.up:after{content:"-";font-size:xx-large;transform:scaleX(2) translate(-4px)}.accordion-symbol.down:after{content:"+";font-size:xx-large}.accordion-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.chevron-symbol{position:relative;cursor:pointer;left:10px}.chevron-symbol.up:after{content:"<"}.chevron-symbol.down:after{content:">"}.chevron-symbol:after{font:17px Consolas,monospace;color:inherit;-webkit-transform:rotate(90deg) translateX(-100%);-moz-transform:rotate(90deg) translateX(-100%);-ms-transform:rotate(90deg) translateX(-100%);transform:rotate(90deg) translate(-100%);padding:0 0 2px;position:absolute;pointer-events:none}@media(width>=980px){.only-mobile{display:none!important}}@media(width<=980px){.only-desktop{display:none!important}}.bold{font-weight:var(--global-font-weight-bold, 600)}*{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:var(--global-font, Roboto, sans-serif);font-weight:var(--global-font-weight, 400)}.container{display:flex;margin:10px 0}.container.column{flex-direction:column}.container.column.reverse{flex-direction:column-reverse}.container.row{flex-direction:row}.container.row.reverse{flex-direction:row-reverse}.fluid{flex:1}.fluid.space-after{margin-right:55px}.hidden{display:none!important}:host(.mobile-mode-hide),.mobile-mode-hide{display:none!important}.invisible{visibility:hidden!important}:host(.invisible-scroll),.invisible-scroll{overflow:hidden;margin-right:-22px}:host(.invisible-scroll)>:first-child,.invisible-scroll>:first-child{overflow-y:scroll;overflow-x:hidden;padding-right:22px;box-sizing:content-box}:host(.invisible-scroll.bottom),.invisible-scroll.bottom{overflow:hidden;margin-right:unset}:host(.invisible-scroll.bottom)>:first-child,.invisible-scroll.bottom>:first-child{overflow-x:scroll;overflow-y:hidden;padding-right:unset;padding-bottom:22px;margin-bottom:-22px;box-sizing:content-box}:host([disabled]){pointer-events:none;filter:contrast(.5) grayscale(1)}*{scrollbar-color:#5c5c5c hsla(0,0%,100%,.0039215686);scrollbar-width:thin}*[disabled][isfv]{pointer-events:none;filter:contrast(.5) grayscale(1)}::-webkit-scrollbar{height:8px;width:8px;background:#fff0}::-webkit-scrollbar-corner{background:#fff0}::-webkit-scrollbar-thumb{background:#5c5c5c;-webkit-border-radius:8px}::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:horizontal:end:increment,::-webkit-scrollbar-button:horizontal:end:decrement,::-webkit-scrollbar-button{background-color:#0000;color:#0000;border:none}:host{scrollbar-color:var(--base-scrollbar-color, unset);scrollbar-width:var(--base-scrollbar-width, unset)}:host(.invisible){visibility:hidden}:host(:focus-visible){outline:2px solid Highlight;outline-offset:-2px}@media(width<=520px){:host([mobile-mode=hide]){display:none!important}}@media(width>=520px)and (width<=980px){:host([mobile-mode=hide]){display:none!important}}@media(width>=981px){:host([mobile-mode=show]){display:none!important}}
`,Ki=Object.defineProperty,qi=(e,t,n,r)=>{for(var i=void 0,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=o(t,n,i)||i);return i&&Ki(t,n,i),i},Ji=class extends CustomEvent{constructor(e){super(`hide-state-updated-event`,{detail:e,bubbles:!1})}},Yi=(e=>{let t=class t extends e{constructor(){super(...arguments),this.hideElement=!1,this.hiddenClasses=[`hidden`]}dispatchHideStateUpdatedEvent(){this.dispatchEvent(new Ji({value:this.hideElement,"parent-state-changed":!1})),t.dispatchEventRecursiveToChildren(this,new Ji({value:this.hideElement,"parent-state-changed":!0}))}addHideStateUpdatedEventListener(e){let t=t=>{t.detail?.value!==void 0&&t.detail[`parent-state-changed`]!==void 0&&e(t.detail.value,t.detail[`parent-state-changed`])};return this.addEventListener(`hide-state-updated-event`,t),()=>this.removeEventListener(`hide-state-updated-event`,t)}anyHiddenClassInArray(e){return this.hiddenClasses.some(t=>e.includes(t))}connectedCallback(){super.connectedCallback?.(),this.hiddenClasses.some(e=>this.classList.contains(e))&&(this.hideElement=!0)}attributeChangedCallback(e,t,n){if(super.attributeChangedCallback?.(e,t,n),e===`hidden-classes`&&t!=null){let e=JSON.parse(t);this.classList.remove(...e),this.hideElement&&this.classList.add(...this.hiddenClasses)}e===`hide-element`&&(this.hideElement?(this.classList.add(...this.hiddenClasses),this.ariaHidden=`true`):(this.classList.remove(...this.hiddenClasses),this.ariaHidden=null),this.dispatchHideStateUpdatedEvent()),e===`hide-element`&&(this.hideElement?this.ariaHidden=`true`:this.ariaHidden=null)}static dispatchEventRecursiveToChildren(e,t){R.doActionRecursiveOnChildren(e,e=>{e.dispatchEvent(t)})}};return qi([T({type:Boolean,reflect:!0,attribute:`hide-element`})],t.prototype,`hideElement`),qi([T({type:Array,reflect:!0,attribute:`hidden-classes`})],t.prototype,`hiddenClasses`),t})(n),Xi=class extends CustomEvent{constructor(e,t){super(e,{detail:{state:e,data:t},bubbles:!1}),this._pending=[]}waitUntil(e){e&&typeof e.then==`function`&&this._pending.push(e)}whenSettled(){return this._pending.length===0?Promise.resolve():Promise.allSettled(this._pending)}},Zi=class{constructor(e,t){this._counters=[],this._maxIncrements=0,this._maxIncrements=t,(typeof this._maxIncrements!=`number`||this._maxIncrements<=0||Math.floor(this._maxIncrements)!==this._maxIncrements)&&(this._maxIncrements=10),(typeof e!=`number`||e<0)&&(e=0);for(var n=0;n<e;n++)this._counters.push(0)}increment(){if(this.size===0)return!1;var e,t=1;for(e=this.size-1;e>=0&&t>0;e--)this._counters[e]+=t,this._counters[e]>=this._maxIncrements?(this._counters[e]-=this._maxIncrements,t=1):t=0;if(t>0){for(e=0;e<this.size;e++)this._counters[e]=0;return!1}return!0}get(e){if(!(e>this.size))return this._counters[e]}getAll(){return JSON.stringify(this._counters)}get size(){return this._counters.length}get empty(){return this.size<1}accumulateAfterIndex(e){let t=0;for(let n=e;n<this.size;++n){let e=this.get(n);e!=null&&(t+=e)}return t}get fullLoopCount(){return this.empty?1:this._maxIncrements**+this.size}},z=new class{constructor(){this._data={},this._groups=[],this._dataRequestStateHolder=void 0,this._dataRequest=void 0,this.SetCounter=0}async Fetch(e,t){return await j.IsAppReady,this._dataRequestStateHolder==null?(this._dataRequest=ve.GetApiData(e,t),this._dataRequestStateHolder=this._dataRequest,this._data=await this._dataRequest,this._dataRequestStateHolder=void 0,this._data):await this._dataRequestStateHolder}get DataPromise(){return this._dataRequest==null?Promise.resolve(this.Data):this._dataRequest}get Data(){return this._data}set Data(e){this._data=e}get Groups(){return this._groups=Object.keys(this._data),this._groups}get Valid(){return!(this.Data==null||this.Groups.length<1)}GetGroup(e,t,n){if(n!=null&&n!=``&&e!=n){let r=n.split(`#`),i=t;for(let e of r){let t=i[e];t!==void 0&&t!==`list`&&t.type!==void 0&&t.type==`list`&&(i=t)}return Object.keys(i).includes(e)?i[e]:{type:``}}let r=Object.keys(t);if(r.includes(e))return t[e];for(let i of r){let r=t[i];if(r.type!=`list`)continue;let a=this.GetGroup(e,r,n);if(!(a==null||a.type!=`list`))return a}return{type:``}}Get(e,t,n){let r=this.GetGroup(e,this.Data,t);if(r.type==``)return{type:``};if(e==n||n==null)return r;let i={type:``};return this.ForEachRecursive(r,(e,t)=>n==t?(i=e,!0):!1)?i:{type:``}}GetGroupValuesCount(e,t,n){let r=z.Get(e,t,n);if(r==null||r.type===``)return 0;let i=Object.keys(r);return i.length<8?(console.error(`ConfiguratorApi Data wrong! incomplete!`,r),0):i.length-8}GetValueInfoList(e,t){let n=z.Get(e,t);return n==null?{}:n[`info-list`]??{}}GetValueInfo(e,t,n){let r=this.GetValueInfoList(e,t),i=[];return n.forEach(e=>{r[e]!=null&&i.push(r[e])}),i}ForEachRecursive(e,t){let n=e??this.Data,r=e==null?this.Groups:Object.keys(e);for(let e of r){let r=n[e];if(r.type==null||r.type==``)continue;let i=t(r,e);if(r.type==`list`&&!i&&this.ForEachRecursive(r,t)&&(i=!0),i)return!0}return!1}Exists(e){return this.ForEachRecursive(void 0,(t,n)=>e==n)}CreateFormElementCounterStack(e,t,n){let r=0,i=0;if(this.FindCountersInDefinition(t).length>0){let t=Object.keys(e);for(let e of t){let t=e.replace(n,``).match(/\d+/g);if(t){i<t.length&&(i=t.length);for(let e of t){let t=parseInt(e);t>r&&(r=t)}}}}return r+=1,new Zi(i,r)}GetElementsToCreateFromElementDefinition(e,t,n,r,i){let a=this.CreateFormElementCounterStack(t,n,r),o=a.fullLoopCount,s=[];for(let t=0;t<o;++t){for(let t of n){if(t.tag===void 0){let n=t,o=!1;for(let t of n.elements){let[n,s]=this.FindElementDataFromFormElementInfo(t,e,a,r,i);s===void 0&&n===void 0||(o=!0)}o&&s.push(n);continue}let n=t;if(n.name===void 0&&n.names==null)continue;let[o,c]=this.FindElementDataFromFormElementInfo(n,e,a,r,i);c===void 0&&o===void 0||s.push({tag:n.tag,name:o,names:c,attributes:n.attributes,styleVars:n.styleVars})}a.increment()}return s}FindCountersInDefinition(e){let t=[];for(let n of e){if(n.tag===void 0){let e=n;this.FindCountersInDefinition(e.elements).length>0&&t.push(e);continue}let e=n;if(!(e.name===void 0&&e.names==null)){if(e.name!=null){e.name.includes(`|>counter-`)&&t.push(e);continue}if(e.names!=null)for(let n of e.names)n.includes(`|>counter-`)&&t.push(e)}}return t}CheckDefinitionAgainstvalueElementName(e,t){let n=[],r=e.split(`|>counter-`);if(r.length>1)for(let e of r){let t=e,r=e.indexOf(`<|`);if(r>0){let n=e.slice(0,r+2);t=e.replace(n,``)}t.length>0&&n.push(t)}else return t==e;let i=!0,a=t;for(let e of n){if(!a.includes(e)){i=!1;break}a=a.replace(e,``)}return i}FindElementDataFromFormElementInfo(e,t,n,r,i){let a;if(e.name!==void 0){let o=this.FindElementData(e.name,t,n,r,i);o!==void 0&&(a=o.type===`list`?e.name:o.name)}let o;if(e.names!==void 0){let a=[];for(let o of e.names)this.FindElementData(o,t,n,r,i)!=null&&a.push(o);a.length>0&&(o=a)}return[a,o]}FindElementData(e,t,n,r,i){let a=this.GetGroup(t,this.Data,i);if(a.type==``)return{type:``};if(n==null||n.empty){let t=a[r+e];if(t!=null)return t;let n;return this.ForEachRecursive(a,(t,i)=>t.type==`list`?(n=t[r+e],!0):!1),n}let o={type:``};if(this.ForEachRecursive(a,(t,i)=>{let a=i.replace(r,``);if(!this.CheckDefinitionAgainstvalueElementName(e,a))return!1;let s=a.match(/\d+/g);if(!s)return o=t,!0;let c=e.match(/\|>counter-\d+<\|/g);if(c!=null&&c.length!=s.length||s.length<n.size&&n.accumulateAfterIndex(s.length)>0)return!1;let l=0;for(let e=0;e<s.length;++e){let t=n.get(e);if(parseInt(s[e])!=t)break;++l}return l==s.length?(o=t,!0):!1}))return o.type===``?void 0:o}CreateFullTargetGroupReference(e,t){return t==e||t.length<1?e:t+`#`+e}async Set(e,t=!1,n=!1){if(this.SetCounter>0)return!1;this.SetCounter++,this.SetCounter>1&&console.warn(`ConfiguratorApiDataService> multiple set called at the same time!`);let r=await ve.SetApiData({groups:e,"prevent-regen-all":t},n);return this.Data=r,--this.SetCounter,!0}GetModificationType(e){return e==`int`?`int`:e==`float`?`float`:e==`button`?`button`:e==`checkbox`?`int`:e==`option-selection`||e==`string`?`string`:`error`}},Qi={width:`v5`,depth:`v6`,height:`v7`},$i={[Qi.width]:`extraWidth`,[Qi.depth]:`extraDepth`,[Qi.height]:`extraHeight`},ea=new class{constructor(){this._pending=!1,this.isInitialized=new Promise((e,t)=>e([])),this._manufacturer=``,this._program=``}async GetCatConfig(){return await this.isInitialized}async parseCatConfig(e,t){return(await O.getCatConfig(e,t))?.cat_config?.map(e=>({category:e[0],attributes:e[1].split(`#`),defaultArt:e[2],module:e[3],group:e[4]}))||[]}async retrieveCatConfig(e,t){return this._pending&&await this.isInitialized,this._pending=!0,this.isInitialized=this.parseCatConfig(e,t),this.isInitialized.then(e=>this._pending=!1),this._manufacturer=e,this._program=t,await this.isInitialized}async filterArticlesList(e){let t=await this.isInitialized;return t?.length>0?e.filter(e=>t[0]?.defaultArt!==e.ArtNr):e}async filterKataModules(e){let t=await this.isInitialized;return t?.length>0?e.filter(e=>t[0]?.category!=e.id):e}async getInitialArticle(e,t){let n=await this.isInitialized,r=this._manufacturer;t||=this._program;let i=this.getConfigurationDefaultArticle(r,t);return i.length>0?i:n[0]?.defaultArt||e}async shouldDisableOnSceneEmpty(e){await j.IsAppReady;let t=await O.getPlannedArticles();return t=t.filter(e=>e.articlenumber),e&&t.length===0}getMinMaxByParamName(e,t,n=1){let r=0,i=0;switch(e){case`v5`:r=Number(t.dxmi),i=Number(t.dxma);break;case`v6`:r=Number(t.dymi),i=Number(t.dyma);break;case`v7`:r=Number(t.dzmi),i=Number(t.dzma);break}let a=[r,i];return a.forEach((e,t,r)=>{r[t]=Math.abs(r[t])*n}),a}getAdditionalParamByKey(e,t){return $i[e]||t}getVarKeyForDimension(e){return Qi[e]}getAdditionalProperties(e,t){let n={};return n[this.getAdditionalParamByKey(e)]=t,n}getConfigurationDefaultArticle(e,t){if(window.g_configuration.defaultArticleList){let n=`${e}_${t}`;for(let e of window.g_configuration.defaultArticleList.keys)if(e.key===n.toLowerCase())return e.articleNumber}return``}},ta=new class{constructor(){this._pending=!1,this.isInitialized=new Promise((e,t)=>e()),this._manufacturer=``,this._calcManufacturer=``,this._program=``,this.isInitialized=this.initialize()}async initialize(){await j.IsAppReady,this._manufacturer=window.g_article?.manu||window.g_configuration.selectedManufacturer,this._program=window.g_article?.prog?window.g_article.prog.toUpperCase():window.g_configuration.selectedProgram.toUpperCase(),this._calcManufacturer=this._manufacturer,await ea.retrieveCatConfig(this._manufacturer,this._program)}async getManufacturer(){return await this.isInitialized,this._manufacturer}async getCalcManufacturer(){return await this.isInitialized,this._calcManufacturer}async getProgram(){return await this.isInitialized,this._program}async setManuProg(e,t,n,r=!0){if(this._pending)return await this.isInitialized;this._pending=!0,this.isInitialized=O.setManuProg(e,t,n),await ea.retrieveCatConfig(e,n),this.isInitialized.then(e=>this._pending=!1),await this.isInitialized,r&&pe.emit(`set-manu-prog`,{manu:e,calcManu:t,prog:n}),this._manufacturer=e,this._calcManufacturer=t,this._program=n}},na=new class{async getFurncloudFile(e,t,n){let r=await O.getErpFiles(e,{dhp:1,xml:2,pdf:4}[t],n,!0);if(window.dispatchEvent(new CustomEvent(`furncloud-status`,{detail:r,bubbles:!0,composed:!0})),r.httpStatus!==200||!r.fileName){if(r.responseBody)try{return JSON.parse(r.responseBody)}catch{}return}return{url:`${r.server}/downloadExport/${r.sessionId}/${r.fileName}/${t}`}}async generateExport(e){let t=await O.generateExport(e);return{url:`${t.server}/downloadExport/${t.sessionId}/${t.file}/${e}`,cloudID:t.cloudId}}async getPDF(e=!1){let t=await O.printPDF(e);return{url:`${t.server}/downloadPDF/${t.sessionId}/${t.pdf}`,cloudID:t.cloudId}}async openCloudId(e,t=!1){e&&(t&&await O.resetCurrentUserinterfaceManuProg(),await O.openCloudId(e),pe.emitAsync(`close-modal`,{}))}async delay(e){return new Promise(t=>setTimeout(t,e))}querySelectorAllWithShadowRoots(e,t=document){let n=Array.from(t.querySelectorAll(e)),r=Array.from(document.querySelectorAll(`*`)).filter(e=>e.shadowRoot).reduce((t,n)=>{let r=n.shadowRoot?.querySelectorAll(e)||[];return[...t,...Array.from(r)]},[]);return[...n,...r]}querySelectorWithShadowRoots(e,t=document){return this.querySelectorAllWithShadowRoots(e,t)[0]}replaceValueInObject(e,t,n){let r=Object.keys(e);for(let i of r){let r=e[i];if(r===t)e[i]=n;else if(r&&typeof r==`object`)this.replaceValueInObject(r,t,n);else if(r&&Array.isArray(r))for(let e of r)e&&typeof e==`object`&&this.replaceValueInObject(e,t,n)}}checkCssQuerySyntax(e){return/^(\*|#[\w-]+|\.[\w-]+|[\w-]+|\[\w+(=\w+)?\])(:\w+)?(>\w+)?(\s\w+)?$/.test(e)}ncrToUTF8(e){return e&&e.length>0?e.replace(/&#([0-9]+);/g,function(e){return String.fromCodePoint(parseInt(e.slice(2,-1)))}):e}sanitizeKey(e){return`${e}`.replace(/\s+/g,`_`)}},ra=new class{constructor(){this.cloudIdRegex=/^(?:\s*[a-z0-9]\s*){8}$/i,this._pending=!1,this._cloudIdPromise=new Promise((e,t)=>e(``))}async getCloudId(){return this._cloudIdPromise}async createCloudId(){return this._pending?await this._cloudIdPromise:(this._pending=!0,this._cloudIdPromise=O.createCloudID(),this._cloudIdPromise.then(e=>this._pending=!1),await this._cloudIdPromise)}isCloudIdValid(e){return this.cloudIdRegex.test(e)}},ia=new class{constructor(){this._prefix=`SSS_`}update(e,t){if(e.length>0){let n=JSON.stringify(t),r=btoa(n);sessionStorage.setItem(this._prefix+e,r)}return t}get(e){if(e.length>0){let t=sessionStorage.getItem(this._prefix+e);if(t){let e=atob(t);try{return JSON.parse(e)}catch{return null}}}}has(e){if(e.length>0)return!!sessionStorage.getItem(this._prefix+e)}remove(e){sessionStorage.removeItem(this._prefix+e)}},aa=new class{constructor(){this._CardContainerTagNames=[]}get CardContainerTagNames(){return this._CardContainerTagNames}AddTagName(e){this._CardContainerTagNames.includes(e)||this._CardContainerTagNames.push(e)}get AllContainers(){let e=[];for(let t of this._CardContainerTagNames)e.push(...R.findAll(t));return e}};function oa(e){return`value`in e&&`name`in e}var sa=(e=>(e.ArticlesByCategories=`articles-by-categories`,e.ArticlesByCategoriesConfiguratorForm=`articles-by-categories-configurator-form`,e.ArticlesByCategoriesDimensions=`articles-by-categories-dimensions`,e.ArticlesByCategoriesCategorySelection=`articles-by-categories-category-selection`,e.CrossArticleHostSelection=`cross-article-host-selection`,e.KataPageSelection=`kata-page-selection`,e.PropertySelection=`property-selection`,e.PropertyValueSelection=`property-value-selection`,e.PropertyContextSelection=`property-context-selection`,e.PropertyContextValueSelection=`property-context-value-selection`,e.PropertyUiGroupSelection=`property-group-selection`,e.LandingPageView=`landing-page-view`,e.CardsFromConfiguration=`cards-from-configuration`,e.WallElements=`wall-elements`,e.WallSelection=`wall-selection`,e.ConfiguratorFormFilter=`configurator-form-filter`,e.ProgramSelection=`program-selection`,e.PlacerGroupSelection=`placer-group-selection`,e.MaterialSelection=`material-selection`,e.NONE=``,e))(sa||{}),ca=(e=>(e.OR=`or`,e.AND=`and`,e.NONE=`none`,e))(ca||{}),B=(e=>(e.FETCH=`fetch`,e.FILTER=`filter`,e.NONE=`none`,e))(B||{}),la=(e=>(e.ENABLED=`enabled`,e.DISABLED=`disabled`,e.NONE=`none`,e.ERROR=`error`,e))(la||{}),ua=`fixed-card-click-events`,da=`card-view-key`,fa=`magnify`,pa=`magnify-query`,ma=(e=>(e.CardContainerPreFill=`cardcontainerprefill`,e.CardContainerPostFill=`cardcontainerpostfill`,e.Updated=`updated`,e.Back=`cardcontainerback`,e.TriggerCardClick=`cardcontainertriggercardclick`,e.BackToStart=`cardcontainerbacktostart`,e.UpdateAdditionalData=`updateadditionaldata`,e.ResetFilter=`resetfilter`,e.Refetch=`refetch`,e.CardMagnified=`cardmagnified`,e))(ma||{}),ha=class{constructor(e){this._dispatchFn=e}async dispatch(e){return new Promise(t=>{let n;n=e(async()=>{t(!n.defaultPrevented)}),this._dispatchFn(n)})}callPostEvent(e){e.detail===void 0||e.detail[`post-event`]===void 0||e.detail[`post-event`]()}},ga=class extends CustomEvent{constructor(e,t){super(e,{detail:t,bubbles:!0})}},_a=class extends ga{constructor(e){super(`cardcontainerprefill`,{"post-event":e})}},va=class extends ga{constructor(e){super(`cardcontainerpostfill`,{"post-event":e})}},ya=class extends ga{constructor(e,t){super(`updated`,{"post-event":e,container:t})}},ba=class extends ga{constructor(e){super(`cardcontainerback`,{"post-event":e})}},xa=class extends ga{constructor(e){super(`cardcontainerbacktostart`,{"post-event":e})}},Sa=class extends ga{constructor(e,t){super(`cardcontainertriggercardclick`,{"keys-to-open":e,"post-event":t})}},Ca=class extends ga{constructor(e,t){super(`updateadditionaldata`,{"post-event":t,key:e})}},wa=class extends ga{constructor(e){super(`resetfilter`,e)}},Ta=class extends ga{constructor(e,t,n=()=>{}){super(`cardmagnified`,{"post-event":n,data:e,target:t})}},V=(e=>(e.LastPOLoaded=`last-po-loaded`,e.RefreshPropertyPanel=`refresh-property-panel`,e.SelectionChanged=`selection-changed`,e.DeleteLO_after=`delete-lo-after`,e.PropTransfer_afterDelete=`prop-transfer-after-delete`,e.PropTransfer_afterSet=`prop-transfer-after-set`,e.PropTransfer_beforeDelete=`prop-transfer-before-delete`,e.PropTransfer_beforeSet=`prop-transfer-before-set`,e.WallFitting_begin=`wall-fitting-begin`,e.WallFitting_end=`wall-fitting-end`,e.WallFitting_cancel=`wall-fitting-cancel`,e.ChangePrice=`change-price`,e.DeleteLO_before=`delete-lo-before`,e.CameraOnDirty=`camera-on-dirty`,e.CameraOnStart=`camera-on-start`,e.CameraOnEnd=`camera-on-end`,e.SendEvent=`send-event`,e.ModalWindowShown=`modal-window-shown`,e.ModalWindowHidden=`modal-window-hidden`,e.CustomIcon_ExecuteCustomEvent=`custom-icon-execute-custom-event`,e.OpenModal=`open-modal`,e.CardContainerVisible=`card-container-visible`,e.VPlacerCancel=`vplacer-cancel`,e))(V||{}),Ea=(e=>(e.CheckUpdate=`CheckUpdate`,e.Fetch=`Fetch`,e.Filter=`Filter`,e.CreateCards=`CreateCards`,e.GetFilterSelectionAdditionalParams=`GetFilterSelectionAdditionalParams`,e.GetFilterSelectionStrategy=`GetFilterSelectionStrategy`,e.InitFilterSelectionParams=`InitFilterSelectionParams`,e.ClickCard=`ClickCard`,e.ClickCardButton=`ClickCardButton`,e.TextFieldChanged=`TextFieldChanged`,e.CheckSpecialInteractionContext=`CheckSpecialInteractionContext`,e))(Ea||{}),H=new class{constructor(){this._Connections=new Map,this._Containers=[],this._dragActive=!1,this._RegisterUpdateEvents()}async _RegisterUpdateEvents(){let e=async(e,t)=>{if(!this._dragActive)for(let n of this._Containers){let r=this._Connections.get(n.Settings.Fetch.method);if(r==null)continue;let i=await r.CheckUpdate(e,t,n.Context);await n.CheckUpdate(i)}},t=(t,n,r)=>{t.register(t=>{e(n,t),r&&r(t)})};await j.IsAppReady,j.on(`webui.start-drag`,()=>{console.log(`drag start`),this._dragActive=!0}),j.on(`webui.end-drag`,()=>{console.log(`drag end`),this._dragActive=!1}),t(k.LastPOLoaded,V.LastPOLoaded),t(k.VPlacerCancel,V.VPlacerCancel),t(k.RefreshPropertyPanel,V.RefreshPropertyPanel),t(k.SelectionChanged,V.SelectionChanged,async e=>{for(let t of this._Containers){if(t.Settings.Behaviour[`connection-defined-interaction-on-selection-change`]==0)continue;let n=this._Connections.get(t.Settings.Fetch.method);if(n==null)continue;let r=t.Settings.Card[`app-connection-settings`][`pre-selection-change-events`];if(r&&r.length>0)for(let e of r)await pe.emitAsync(e.id,e.data??{});n.InteractionOnSelectionChange(t.Context,e);let i=t.Settings.Card[`app-connection-settings`][`post-selection-change-events`];if(i&&i.length>0)for(let e of i)await pe.emitAsync(e.id,e.data??{})}}),t(k.CustomIcon_ExecuteCustomEvent,V.CustomIcon_ExecuteCustomEvent,async e=>{for(let t of this._Containers){if(t.Settings.Behaviour[`connection-defined-interaction-on-icon-button`]==0)continue;let n=this._Connections.get(t.Settings.Fetch.method);if(n==null)continue;let r=t.Settings.Card[`app-connection-settings`][`pre-icon-button-events`],i=t.Settings.Card[`app-connection-settings`][`post-icon-button-events`];n.InteractionOnIconButton(t.Context,e,r,i)}}),t(k.DeleteLO_after,V.DeleteLO_after),t(k.PropTransfer_afterDelete,V.PropTransfer_afterDelete),t(k.PropTransfer_afterSet,V.PropTransfer_afterSet),t(k.PropTransfer_beforeDelete,V.PropTransfer_beforeDelete),t(k.PropTransfer_beforeSet,V.PropTransfer_beforeSet),t(k.WallFitting_begin,V.WallFitting_begin),t(k.WallFitting_end,V.WallFitting_end),t(k.WallFitting_cancel,V.WallFitting_cancel),t(k.ChangePrice,V.ChangePrice),t(k.DeleteLO_before,V.DeleteLO_before),t(k.CameraOnDirty,V.CameraOnDirty),t(k.CameraOnStart,V.CameraOnStart),t(k.CameraOnEnd,V.CameraOnEnd),t(k.SendEvent,V.SendEvent),t(k.ModalWindowShown,V.ModalWindowShown),t(k.ModalWindowHidden,V.ModalWindowHidden)}get Containers(){return this._Containers}Register(e){this._Containers.includes(e)||this._Containers.push(e)}Remove(e){let t=this._Containers.indexOf(e);t<0||this._Containers.splice(t,1)}RegisterAppConnection(e){if(this._Connections.has(e.Method)){console.error(`CardDataService> RegisterAppConnection failed! The same AppConnection can not be registered twice!`);return}this._Connections.set(e.Method,e)}GetAppConnection(e){return this._Connections.get(e)}TriggerAction(e,t,n){if(e==null||typeof e!=`string`)return;let r=this.GetAppConnection(e);if(r!=null)switch(t){case`CheckUpdate`:return this.TriggerCheckUpdate(r,n);case`Fetch`:return this.TriggerFetch(r,n);case`Filter`:return this.TriggerFilter(r,n);case`CreateCards`:return this.TriggerCreateCards(r,n);case`GetFilterSelectionAdditionalParams`:return this.TriggerGetFilterSelectionAdditionalParams(r,n);case`GetFilterSelectionStrategy`:return this.TriggerGetFilterSelectionStrategy(r,n);case`InitFilterSelectionParams`:return this.TriggerInitFilterSelectionParams(r,n);case`ClickCard`:return this.TriggerClickCard(r,n);case`ClickCardButton`:return this.TriggerClickCardButton(r,n);case`TextFieldChanged`:return this.TriggerTextFieldChanged(r,n);case`CheckSpecialInteractionContext`:return this.TriggerCheckSpecialInteractionContext(r,n);default:return}}async TriggerCheckUpdate(e,t){return await e.CheckUpdate(t.event,t.eventParameters,t.context)}async TriggerFetch(e,t){return await e.Fetch(t.context)}TriggerFilter(e,t){return e.Filter(t.unfiltered,t.context,t.active)}TriggerCreateCards(e,t){return e.CreateCards(t.filtered,t.context)}TriggerGetFilterSelectionAdditionalParams(e,t){return e.GetFilterSelectionAdditionalParams(t.context)}TriggerGetFilterSelectionStrategy(e,t){return e.GetFilterSelectionStrategy(t.context)}TriggerInitFilterSelectionParams(e,t){return e.InitFilterSelectionParams(t.context)}TriggerClickCard(e,t){return e.Click(t.card,t.context)}TriggerClickCardButton(e,t){return e.ClickCardButton(t.data,t.card,t.context)}TriggerTextFieldChanged(e,t){return e.TextFieldChanged(t.card,t.context,t.field)}async TriggerCheckSpecialInteractionContext(e,t){return await e.CheckSpecialInteractionContext(t.context)}GetMethod(e){return e.settings.Fetch.method==sa.ConfiguratorFormFilter&&e.settings.Fetch.parameters.method!=null&&e.settings.Fetch.parameters.method.length>0?e.settings.Fetch.parameters.method:e.settings.Fetch.method}async CheckUpdate(e,t,n){let r=this._Connections.get(n.settings.Fetch.method);return r==null?B.NONE:r.CheckUpdate(e,t,n)}async Fetch(e){let t=this._Connections.get(e.settings.Fetch.method);if(t==null)return console.error(`Fetch Method does not exist!: `+e.settings.Fetch.method),{};try{return await t.Fetch(e)}catch(e){console.warn(`Fetch Failed! error: `+e)}return{}}Filter(e,t,n){let r=this._Connections.get(t.settings.Fetch.method);return r==null?{}:r.Filter(e,t,n)}CreateCards(e,t){let n=this._Connections.get(t.settings.Fetch.method);return n==null?new Map:n.CreateCards(e,t)}GetFilterSelectionAdditionalParams(e){let t=this._Connections.get(e.settings.Fetch.method);if(t!=null)return t.GetFilterSelectionAdditionalParams(e)}GetFilterSelectionStrategy(e){let t=this._Connections.get(e.settings.Fetch.method);return t==null?ca.NONE:t.GetFilterSelectionStrategy(e)}InitFilterSelectionParams(e){let t=this._Connections.get(e.settings.Fetch.method);t&&t.InitFilterSelectionParams(e)}async WaitForAllCardContainerFetchPromises(){for(let e of this._Containers)await e.CheckFetchPromise(),await e.updateComplete}GetFormattedCardDragData(e,t){if(t.settings.Fetch.method.length<1){console.error(`FetchCardDragData Error! No method in fetch settings!`,`settings:`,t.settings,`card:`,e);return}let n=this._Connections.get(t.settings.Fetch.method);if(n)return n.GetFormattedDragData(e,t)}async ClickCard(e,t){if(!t.states.PreventAppConnectionClick){let n=this._Connections.get(t.settings.Fetch.method);n&&await n.Click(e,t)}}async ClickCardButton(e,t,n){let r=this._Connections.get(n.settings.Fetch.method);r&&await r.ClickCardButton(e,t,n)}async TextFieldChanged(e,t,n){let r=this._Connections.get(t.settings.Fetch.method);r&&await r.TextFieldChanged(e,t,n)}MakeCardClickString(e){return e==null?``:typeof e==`object`&&e?JSON.stringify(e):typeof e==`string`?e:e.toString()}PrepareClickedCardEventData(e,t,n){if(t==null)return e;let r=t,i=[`level-key`,`next-level-key`,`previous-level-key`,`priority`,`strategy`];if(n!=null)for(let e of n)i.push(e.key),r[e.key]=e.data;let a=JSON.stringify(e);for(let e of i)a=a.replaceAll(`|`+e+`|`,this.MakeCardClickString(t[e]));return a=a.replaceAll(RegExp(`[|][a-z]+[|]`,`gi`),``),e=JSON.parse(a),e}PrepareClickedCardEventsData(e,t,n){let r=[];for(let i of e)i.data&&r.push({id:i.id,data:this.PrepareClickedCardEventData(i.data,t,n)});return r}async CheckSpecialInteractionContext(e){if(e.states.HandleAppConnectionPlanningSituationState){let t=this._Connections.get(e.settings.Fetch.method);if(t)return t.CheckSpecialInteractionContext(e)}return la.ERROR}},Da=class{static async RefreshAll(e){let{refetch:t,awaitFetches:n=!0,includeHidden:r,forceSwapSelectedProgramBeforeRefetch:i=``,selectionResultFilterResetTargets:a=[],selectionResultFilterResetExcludes:o=[]}=e;n&&await H.WaitForAllCardContainerFetchPromises();let s=aa.AllContainers;if(a){let e=[];for(let t of a)e.push(...R.findAll(t.tag,t.query));for(let t of e)t.Filter!=null&&t.Filter.Reset(!1,t.Context)}if(o){let e=[];for(let t of o)e.push(...R.findAll(t.tag,t.query));s=s.filter(t=>!e.includes(t))}for(let e of s)e.hideElement&&r==0||(t?(i!==void 0&&i!==``&&(e.Settings.Program=i),e.Refetch()):e.requestUpdate())}static RefreshBackButtons(){let e=R.findAll(`fv-card-container-back-button`);for(let t of e)t.requestUpdate()}static ResetSelectionResultFilter(e){let t=e.query?e.query:void 0,n=R.find(e.tag,t);n&&n.Filter!=null&&n.Filter.Reset(!0,n.Context)}static SetShowBeforeSlot(e){let t=e.query?e.query:void 0,n=R.find(e.tag,t);n&&(n.ShowBeforeSlot=e.state)}static SetShowIdSlot(e){let t=e.query?e.query:void 0,n=R.find(e.tag,t);n&&(n.ShowIdSlot=e.state)}static Clear(e){let t=e.query?e.query:void 0,n=R.findAll(e.tag,t);if(n)for(let e of n)e.Filter&&e.Filter.Reset(!0,e.Context),e.requestUpdate()}static ReTriggerSingleEntrySkip(e){let t=e.query?e.query:void 0,n=R.findAll(e.tag,t);if(n)for(let e of n)e.ReTriggerSingleEntrySkip&&e.ReTriggerSingleEntrySkip()}static Refetch(e){let t=e.query?e.query:void 0,n=R.findAll(e.tag,t);if(n)for(let t of n){let n=t?.Context?.settings?.Fetch?.parameters[`clear-cache`];e[`clear-cache`]&&(t.Context.settings.Fetch.parameters[`clear-cache`]=!0),t.Refetch().then(()=>{e[`clear-cache`]&&(t.Context.settings.Fetch.parameters[`clear-cache`]=n)})}}static ClickCard(e){if(e.indexInList==null){console.warn(`triggered card-containers:click-card without providing the card-index to click!`);return}let t=e.indexInList,n=e.query?e.query:void 0,r=R.findAll(e.tag,n);if(r&&r.length>0){for(let n of r)n.TriggerCardClick(t,e[`ensure-inactive`]);return}console.warn(`[card-containers:click-card]: Target(s) could not be found! tag:`,e.tag,`query:`,e.query)}},Oa=(e=>(e[e.DISABLED=0]=`DISABLED`,e[e.SELECTED=1]=`SELECTED`,e[e.IMPLICIT=2]=`IMPLICIT`,e[e.EXPLICIT=3]=`EXPLICIT`,e))(Oa||{}),ka=(e=>(e[e.ARTICLE=0]=`ARTICLE`,e[e.PROPTRANSFER=1]=`PROPTRANSFER`,e[e.BY_MODE=2]=`BY_MODE`,e[e.FITTING=3]=`FITTING`,e[e.WALL_FITTING=4]=`WALL_FITTING`,e[e.PROGPROPERTY=5]=`PROGPROPERTY`,e))(ka||{}),Aa=`11205`,ja=(e=>(e[e.ALL=0]=`ALL`,e[e.GLOBAL=1]=`GLOBAL`,e[e.LOCAL=2]=`LOCAL`,e))(ja||{}),Ma=(e=>(e[e.ZOOMAUTO_EXTENDEDAPOINT=0]=`ZOOMAUTO_EXTENDEDAPOINT`,e[e.ZOOMAUTO_EXTENDEDDIR=1]=`ZOOMAUTO_EXTENDEDDIR`,e[e.ZOOMAUTO_FRONTCLIP=2]=`ZOOMAUTO_FRONTCLIP`,e[e.ZOOMAUTO_ROTATE2PI=3]=`ZOOMAUTO_ROTATE2PI`,e[e.ZOOMAUTO_ORTHOCLIP=4]=`ZOOMAUTO_ORTHOCLIP`,e[e.ZOOMAUTO_ZOOMFACTOR=5]=`ZOOMAUTO_ZOOMFACTOR`,e[e.ZOOMAUTO_ORTHOFRONT=6]=`ZOOMAUTO_ORTHOFRONT`,e[e.ZOOMAUTO_PANUPDOWN=7]=`ZOOMAUTO_PANUPDOWN`,e[e.ZOOMAUTO_EXTENDEDCURDIR=8]=`ZOOMAUTO_EXTENDEDCURDIR`,e[e.ZOOMAUTO_CAM_ROTATEMPV=9]=`ZOOMAUTO_CAM_ROTATEMPV`,e[e.ZOOMAUTO_CAM_ROTATEMPH=10]=`ZOOMAUTO_CAM_ROTATEMPH`,e[e.ZOOMAUTO_CAM_ROTATEABOUTMARKED=11]=`ZOOMAUTO_CAM_ROTATEABOUTMARKED`,e[e.ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT=12]=`ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT`,e[e.ZOOMAUTO_CAM_ROTATEEYEUPDOWN=13]=`ZOOMAUTO_CAM_ROTATEEYEUPDOWN`,e[e.ZOOMAUTO_CAM_ROTATELEFTRIGHT=14]=`ZOOMAUTO_CAM_ROTATELEFTRIGHT`,e[e.ZOOMAUTO_CAM_MOVELEFTRIGHT=15]=`ZOOMAUTO_CAM_MOVELEFTRIGHT`,e[e.ZOOMAUTO_CAM_MOVEAXIS3D=16]=`ZOOMAUTO_CAM_MOVEAXIS3D`,e[e.ZOOMAUTO_CAM_MOVEUPDOWN=17]=`ZOOMAUTO_CAM_MOVEUPDOWN`,e[e.ZOOMAUTO_CAM_SETVIEWPOINTMODE=18]=`ZOOMAUTO_CAM_SETVIEWPOINTMODE`,e))(Ma||{}),Na=(e=>(e[e.TopLeftFront=-1000109]=`TopLeftFront`,e[e.TopRightFront=-1000110]=`TopRightFront`,e[e.TopLeftBack=-1000108]=`TopLeftBack`,e[e.TopRightBack=-1000107]=`TopRightBack`,e[e.Left=-1000102]=`Left`,e[e.Right=-1000101]=`Right`,e[e.Front=-1000106]=`Front`,e[e.Back=-1000105]=`Back`,e[e.Top=-1000103]=`Top`,e))(Na||{}),Pa={TopLeftFront:Na.TopLeftFront,TopRightFront:Na.TopRightFront,TopLeftBack:Na.TopLeftBack,TopRightBack:Na.TopRightBack,Left:Na.Left,Right:Na.Right,Front:Na.Front,Back:Na.Back,Top:Na.Top};function Fa(e,t){return pe.emitAsync(e,t)}var Ia=new Map([[`toggle-front-state`,async e=>Fa(`front-state`,e)],[`save-current-scene-settings`,async()=>Fa(`notice-list-mask:save-current-scene-settings`,{data:{},target:{tag:`fv-notice-list-mask`}})],[`show-ar-modal`,async()=>Fa(`fv-ar-modal:show`,{data:{},target:{tag:`fv-ar-modal`}})],[`notify-step-stage-changed`,e=>Fa(`fv-step:notify-stage-changed`,{data:e,target:{tag:`fv-step`,all:!0}})],[`webcab-refresh-cabinets-toggle-ui`,async()=>Fa(`fv-webcab-ui-cabinets-toggle:refresh`,{data:{},target:{tag:`fv-webcab-ui-cabinets-toggle`,all:!0}})],[`refresh-all-configurator-forms`,async()=>Fa(`fv-configurator-form:refetch`,{data:{},target:{tag:`fv-configurator-form`,all:!0}})],[`refresh-all-filtered-catalogs`,async()=>Fa(`fv-filtered-catalog:update`,{data:{force:!0},target:{tag:`fv-filtered-catalog`,all:!0}})],[`configurator-form-page-open-view-mode`,async e=>Fa(`fv-configurator-form-page:open-view-mode`,{data:e,target:{tag:`fv-configurator-form-page`,all:!0}})],[`open-modal`,async e=>Fa(`fv-modal:open`,{data:e,target:{tag:e?.tag||`fv-modal`,query:e?.query}})],[`close-modal`,async e=>Fa(`fv-modal:close`,{data:e,target:{tag:e?.tag||`fv-modal`,query:e?.query}})],[`toggle-modal`,async e=>Fa(`fv-modal:toggle`,{data:e,target:{tag:e?.tag||`fv-modal`,query:e?.query}})],[`toggle-toolbar`,async e=>Fa(`fv-toggle-toolbar:toggle`,{data:{},target:{tag:`fv-toggle-toolbar`,query:e?.selector||``}})],[`steps-next`,async e=>Fa(`fv-steps:next`,{data:e})],[`steps-previous`,async e=>Fa(`fv-steps:previous`,{data:e})],[`steps-first`,async e=>Fa(`fv-steps:activate-first`,{data:e})],[`activate-step`,async e=>Fa(`fv-steps:activate`,{data:e})],[`activate-current-step`,async e=>Fa(`fv-steps:activate-current`,{data:e})],[`update-filtered-catalogs`,async e=>Fa(`fv-filtered-catalog:update`,{data:e})],[`update-accordion-heights`,async e=>Fa(`fv-accordion-item:update-height`,{data:e})],[`update-slider-ranges`,async e=>Fa(`fv-slider:update-range`,{data:e})],[`toolbar-button-set-active`,async e=>Fa(`fv-toolbar-button:set-active`,{data:e})],[`add-classes`,async e=>Fa(`fv:add-class`,{data:e})],[`remove-classes`,async e=>Fa(`fv:remove-class`,{data:e})],[`toggle-classes`,async e=>Fa(`fv:toggle-class`,{data:e})],[`set-attribute`,async e=>Fa(`fv:set-attribute`,{data:e})],[`toggle-attribute`,async e=>Fa(`fv:toggle-attribute`,{data:e})],[`update-visibility`,async e=>Fa(`fv:update-visibility`,{data:e})]]),La=new class{constructor(){this.accessoires=!1,this.front=!0}async sendCloudIdToOwner(){let e=window;for(;e.parent&&e!==e.parent;)e=e.parent;e.postMessage((await na.getPDF(!0)).cloudID,`*`)}async sendToOwner(e){let t=window;for(;t.parent&&t!==t.parent;)t=t.parent;t.postMessage(e.message,`*`)}async downloadGeneratedFile(e){let t=e.currentTarget;if(t?.classList.add(`loading`),e.fileType){let t=e.fileType,n={dxf:`dxf`,obj:`zip`,skp:`skp`,xml:`xml`,xls:`xls`,xlsx:`xlsx`}[t],{url:r,cloudID:i}=n?await na.generateExport(t):await na.getPDF(!!e.lastCloudID);de?.SaveToDisk(r,`planning_${i}.${n??`pdf`}`)}t?.classList.remove(`loading`)}async downloadFurncloudFile(e){let t=e.sessionStorageKey;if(ia.has(t)){let n=await ra.getCloudId(),r=ia.get(t)?.password,i=await na.getFurncloudFile(n,e.fileType,r);i&&i.url&&i.url.length>0&&de?.SaveToDisk(i.url,`planning_${n}.${e.fileType}`)}}async frontState(e){e[`default-state`]!=null&&this.front==null&&(this.front=e[`default-state`]);let t=e.value===void 0?!this.front:e.value;e[`prioritise-accessoires`]&&(t=!this.accessoires),await O.frontState(t),this.front=e[`prioritise-accessoires`]?void 0:t}async toggleAccessoires(e){let t=this.accessoires;e[`prioritise-front-state`]&&this.front!=null&&(t=this.front),await O.frontState(t),this.front=this.front==null?void 0:t,this.accessoires=!this.accessoires,await O.setAccessories(this.accessoires)}async communicatorMessage(e){let t={command:e.command,args:e.parameters?e.parameters:[]};if(t.command)return await j.postMessage(t.command,...t.args)}async updateAnimationToolbarButton(){let e=await O.getAnimationStatus();e!=null&&await pe.emitAsync(`fv-animation-toolbar-button:sync-active`,{data:{mode:e.mode},target:{tag:`fv-animation-toolbar-button`,all:!0}})}async webcabToggleDimensionVisuals(){R.findAll(`fv-webcab-ui`).length>0?await pe.emitAsync(`fv-webcab-ui:toggle-dimension-visuals`,{data:{},target:{tag:`fv-webcab-ui`,all:!0}}):await pe.emitAsync(`configurator-api-state-toggle`,{data:{group:`webcab-global-states`,target:`WEBCAB_DIMENSION_VISUALS_DISABLED_L`}})}async deleteFitting(e){e.level!=null&&await O.dhTodo([`1`,{params:[(e.level+1).toString()],manu:window.g_article.manu,kataManu:window.g_article.manu}])}async moveFitting(e){e.level!=null&&await O.dhTodo([`1`,{params:[(e.level+2).toString()],manu:window.g_article.manu,kataManu:window.g_article.manu}])}async setSelectable(e){if(e.type&&Array.isArray(e.type)){await O.setSelectableMultiTypes(e.type);return}e.type&&e.type.length>0?(await O.setSelectable(e.type),e.action&&e.action.length>0&&await O.setSelectionActionGroup(e.action)):await O.setSelectable()}async openLink(e){if(e[`new-tab`]&&e.link){window.open(e.link);return}e.link&&(window.location=e.link)}async sendToCart(e){let t=e?.[`external-parameters`],n=[];t&&(n=t.map(e=>{let t=R.find(e.tag);return{parameter:e.name,value:t[e.property]}})),await O.addToCart(n)}async refreshAllCardContainers(e){let t=e.refetch==null?!1:e.refetch,n=e[`include-hidden`]==null?!1:e[`include-hidden`],r=e[`selection-result-filter-reset-targets`],i=e[`selection-result-filter-reset-excludes`];Da.RefreshAll({refetch:t,includeHidden:n,selectionResultFilterResetTargets:r,selectionResultFilterResetExcludes:i})}async toggleApiStateResetCameraSave(e){if(e.group&&e.target){let t=e.group,n=e.target,r=z.Data[t];if(r){let i=r[n];i&&i.state!==void 0&&(await ve.SetApiData({groups:[{name:t,modifications:[{target:n,type:`int`,value:1}]}]}),await O.resetCameraView(!1),setTimeout(async()=>{await O.frontState(!0),await O.downloadPDF(e&&e.custom?e.custom:!1),await ve.SetApiData({groups:[{name:t,modifications:[{target:n,type:`int`,value:+!!i.state}]}]})},1e3))}}}async configuratorSetApiState(e){if(e.group&&e.target){let t=e.group,n=e.target,r=z.Data[t];r&&Object.keys(r).includes(n)&&await ve.SetApiData({groups:[{name:t,modifications:[{target:n,type:`int`,value:+!!e.state}]}]})}}async configuratorApiStateToggle(e){if(e.group&&e.target){let t=e.group,n=e.target,r=z.Data[t];if(r){let e=r[n];e&&e.state!==void 0&&(await ve.SetApiData({groups:[{name:t,modifications:[{target:n,type:`int`,value:+!e.state}]}]}),await pe.emitAsync(`refresh-all-configurator-forms`))}}}async reloadWindow(e){e&&e.preventLeaveConfirmation!==void 0&&(we.PreventLeaveConfirmation=e.preventLeaveConfirmation),window.location.reload()}async setFpVariable(e){await j.IsAppReady,await O.dhTodo([`3`,{params:[`-1`,`0`,e.key,e.type,e.value],manu:window.g_article.manu,kataManu:window.g_article.manu}])}async setAttributeOnUrlWithCloudId(e){new URL(window.location.href).searchParams.has(`cloudId`)&&await pe.emitAsync(`set-attribute`,e)}async gtmPush(e){let t={event:e.event};Object.keys(e).forEach(n=>{if(n!==`event`){let r=e[n].split(`.`),i=window.g_dataInterface[r[0]];r=r.slice(1),r.forEach(e=>{i&&=i[e]}),t[n]=i||e[n]}}),ye?.push(t)}async setCameraZoom(e){let t=e.zoom;if(typeof t.Perspective==`string`){let e=Pa[t.Perspective];e&&(t.Perspective=e)}await O.setCameraZoom(t)}async setLanguage(e){let t=e?.langCode;t&&(await O.setLanguage(t),await A.setLanguage(t),Da.RefreshAll({refetch:!0,includeHidden:!1}),await H.WaitForAllCardContainerFetchPromises(),await pe.emitAsync(`fv-equipment-list:reload`,{data:{},target:{tag:`fv-equipment-list`,query:`*`}}),window.dispatchEvent(new CustomEvent(`language-changed`,{detail:t,bubbles:!0,composed:!0})))}async requestFullscreen(e){let t;if(e.query&&(t=document.querySelector(e.query)))try{document.fullscreenElement?await document.exitFullscreen():await t.requestFullscreen()}catch(e){e instanceof Error&&console.error(`Error attempting to enable full-screen mode: ${e.message}`)}}async dispatchStateEvent(e){!e||!e.state||await pe.emitAsync(e.state,{data:e.data,target:e.target})}scrollToTop(e){let t=t=>{let n={top:0,left:0,behavior:e.behavior?e.behavior:`auto`};t.scrollTo(n)};if(e.tag&&e.tag.length>0){if(e.selector&&e.selector.length>0){let n=R.findAll(e.tag,e.selector);for(let e of n)t(e)}}else if(e.selector&&e.selector.length>0){let n=document.querySelector(e.selector);n&&t(n)}}},Ra=new Map([[`send-cloud-id-to-owner`,()=>La.sendCloudIdToOwner()],[`send-to-owner`,e=>La.sendToOwner(e)],[`camera-zoom-in`,async()=>{await O.cameraZoom(1)}],[`camera-zoom-out`,async()=>{await O.cameraZoom(-1)}],[`reset-camera`,async e=>{await O.resetCameraView(e&&e.animate!==void 0?e.animate:!0)}],[`undo`,async()=>{await O.undo()}],[`redo`,async()=>{alert(`TODO: implement redo!`)}],[`save`,async e=>{await O.downloadPDF(e&&e.custom?e.custom:!1)}],[`download-generated-file`,e=>La.downloadGeneratedFile(e)],[`download-furncloud-file`,e=>La.downloadFurncloudFile(e)],[`trigger-animation`,async()=>{await O.triggerAnimation()}],[`front-state`,e=>La.frontState(e)],[`toggle-accessoires`,e=>La.toggleAccessoires(e)],[`toggle-dimensions`,async()=>{await O.toggleMeasurement()}],[`take-screenshot`,async e=>{await O.downloadScreenshot(e.logo?e.logo:void 0)}],[`show-share-component`,async()=>{await O.showShareComponent()}],[`communicator-message`,e=>La.communicatorMessage(e)],[`update-animation-toolbar-button`,()=>La.updateAnimationToolbarButton()],[`webcab-toggle-dimension-visuals`,()=>La.webcabToggleDimensionVisuals()],[`delete-fitting`,e=>La.deleteFitting(e)],[`move-fitting`,e=>La.moveFitting(e)],[`set-selectable`,e=>La.setSelectable(e)],[`open-link`,e=>La.openLink(e)],[`send-to-cart`,e=>La.sendToCart(e)],[`toggle-api-state-reset-camera-save`,e=>La.toggleApiStateResetCameraSave(e)],[`configurator-set-api-state`,e=>La.configuratorSetApiState(e)],[`configurator-api-state-toggle`,e=>La.configuratorApiStateToggle(e)],[`configurator-api-fetch`,async()=>{}],[`reload-window`,e=>La.reloadWindow(e)],[`set-fp-variable`,e=>La.setFpVariable(e)],[`set-property`,async e=>{await O.modifyProperty(JSON.stringify(e.property),e.options)}],[`set-attribute-on-url-with-cloud-id`,e=>La.setAttributeOnUrlWithCloudId(e)],[`gtm-push`,e=>La.gtmPush(e)],[`set-camera-zoom`,e=>La.setCameraZoom(e)],[`fit-camera-viewport`,async e=>{await O.fitCamera(e)}],[`place-article`,async e=>{await O.placePO({manufacturer:window.g_article.manu,program:e.program,extParameter:{},articleNumber:e[`article-number`]})}],[`execute-custom-event`,async e=>{await O.executeCustomEvent(e?.command,e?.instanceIdent,e?.parameters)}],[`set-element-selected`,async e=>{await O.selectObjectInScene(e.instanceIdent)}],[`set-language`,e=>La.setLanguage(e)],[`reset-scene-action`,async()=>{await O.resetSceneAction()}],[`set-manu-prog`,async e=>{await ta.setManuProg(e?.manu,e?.calcManu,e?.prog,!1)}],[`disable-3d-text`,async e=>{await O.setDisable3DText(e.value==null?!1:e.value)}],[`request-fullscreen`,e=>La.requestFullscreen(e)],[`dispatch-state`,e=>La.dispatchStateEvent(e)],[`switch-transfer-level`,async e=>{O.switchTransferLevel(e)}],[`scroll-to-top`,e=>La.scrollToTop(e)],[`refresh-all-card-containers`,async e=>La.refreshAllCardContainers(e)],[`card-container-set-show-before-slot`,e=>Da.SetShowBeforeSlot(e)],[`card-container-set-show-id-slot`,e=>Da.SetShowIdSlot(e)],[`card-containers-reset-selection-result-filter`,e=>Da.ResetSelectionResultFilter(e)],[`clear-card-container`,e=>Da.Clear(e)],[`refetch-card-container`,e=>Da.Refetch(e)],[`card-containers:click-card`,e=>Da.ClickCard(e)],[`trigger-root-level-selection-single-entry-skip`,async e=>Da.ReTriggerSingleEntrySkip(e)]]),U=new class{async _dispatchPostEvents(e){if(e&&e[`post-events`]){let t=e[`post-events`];for(let n=0;n<t.length;++n){let r=t[n];if(e[`dispatch-post-events-synchronized-in-order`]||e[`post-events-sync`]){await this.dispatchAsyncEvent(r.id,r.data?r.data:{});continue}return this.dispatch(r.id,r.data?r.data:{})}}}_readLegacySelection(e){if(!e)return;let t=e=>typeof e==`string`&&e.length>0?e:void 0,n=(...n)=>{for(let r of n){let n=t(e[r]);if(n)return n}},r=[];if(e.components&&Array.isArray(e.components))for(let t of e.components)r.push({tag:t.name,query:t.selector,all:t.all});let i=n(`tag`,`component`,`steps-component`);if(!i)return r;let a=e.all==null?void 0:e.all,o=n(`query`,`selector`);return r.push({tag:i,query:o,all:a}),r}_unwrapEnvelope(e){if(e&&typeof e==`object`&&!Array.isArray(e)){let t=Object.keys(e);if(t.length===2&&t.includes(`data`)&&t.includes(`target`))return e.data}return e}constructor(){window.addEventListener(`triggereventhandlereventevent`,e=>{e.detail&&e.detail.events&&U.dispatchEventList(e.detail.events,e.detail.async)}),pe.on(`shared:event-fired`,async e=>{await this._dispatchPostEvents(e.data.data)});for(let[e,t]of Ra)pe.on(e,async e=>await t(this._unwrapEnvelope(e)));for(let[e,t]of Ia){if(pe.has(e)){console.warn(`duplicate event in LegacyEventAliases`);continue}pe.on(e,async e=>{await t(this._unwrapEnvelope(e))})}}async dispatchAsyncEvent(e,t){await pe.emitAsync(e,t)}dispatch(e,t){return pe.has(e)?(pe.emitAsync(e,t),!0):!1}async dispatchEventList(e,t){if(e&&e.length>0){if(t){for(let t of e)this.dispatch(t.id,t.data?t.data:{});return}for(let t of e)await this.dispatchAsyncEvent(t.id,t.data?t.data:{})}}async dispatchState(e,t,n){let r=[],i=n=>{if(n.ListensToState!=null&&!n.ListensToState(e)){console.warn(`event triggered on element that does not listen to it! element:`,n,`event:`,e,`data:`,t);return}let i=new Xi(e,t);n.dispatchEvent(i),r.push(i)};if(n==null)i(window);else if(typeof n.dispatchEvent==`function`)i(n);else{let r=n;if(!r.tag||r.tag.length<1){console.warn(`target tag for state empty!`,e,t,n);return}let a=R.findAll(r.tag,r.query??``);if(a.length<1){console.warn(`no valid target elements for state`,e,t,n);return}r.all?a.forEach(e=>i(e)):i(a[0])}await Promise.allSettled(r.map(e=>e.whenSettled()))}RegisterStateHandler(e){pe.has(e)||pe.on(e,async t=>{let n=t;if(n.data&&n.data.data&&(n=n.data),n.target==null||n.target.tag==null){let t=this._readLegacySelection(n.data);if(t!=null){for(let r of t)await this.dispatchState(e,n.data,r);return}}let r=Array.isArray(n.target)?n.target:[n.target];for(let t of r)await this.dispatchState(e,n.data,t)})}},za=`@charset "UTF-8";[dh-button]{display:inline-block;height:auto;width:auto;vertical-align:middle;font-family:Roboto,system-ui,sans-serif}[dh-button]::part(root),[dh-infobox]::part(dh-button-root),[dh-merge-dialog]::part(dh-button-root),[dh-merge-dialog]::part(dh-button-nav-root),[dh-table-old]::part(dh-button-root),[dh-table]::part(dh-button-root),[dh-window]::part(dh-button-root),[dh-multi-selectbox]::part(dh-button-root),[dh-multi-selectbox]::part(item-dh-button-root),[dh-multi-selectbox-item]::part(dh-button-root){display:inline-flex;align-items:center;justify-content:center;user-select:none;-webkit-user-select:none;gap:var(--dh-button-gap, 8px);min-height:var(--dh-button-height, 40px);height:auto;min-width:var(--dh-button-min-width, 64px);padding-inline:var(--dh-button-padding-inline, 24px);padding-block:4px;border:none;border-radius:var(--dh-button-radius, 9999px);cursor:pointer;position:relative;box-sizing:border-box;text-align:center;width:auto;transition:background-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1),transform .2s cubic-bezier(.2,0,0,1)}[dh-button]::part(label),[dh-infobox]::part(dh-button-label),[dh-merge-dialog]::part(dh-button-label),[dh-merge-dialog]::part(dh-button-nav-label),[dh-table-old]::part(dh-button-label),[dh-table]::part(dh-button-label),[dh-window]::part(dh-button-label),[dh-multi-selectbox]::part(dh-button-label),[dh-multi-selectbox]::part(item-dh-button-label),[dh-multi-selectbox-item]::part(dh-button-label){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25rem;letter-spacing:.00625rem;white-space:normal;overflow-wrap:break-word}[dh-button]::part(icon),[dh-infobox]::part(dh-button-icon),[dh-merge-dialog]::part(dh-button-icon),[dh-merge-dialog]::part(dh-button-nav-icon),[dh-table-old]::part(dh-button-icon),[dh-table]::part(dh-button-icon),[dh-window]::part(dh-button-icon),[dh-multi-selectbox]::part(dh-button-icon),[dh-multi-selectbox]::part(item-dh-button-icon),[dh-multi-selectbox-item]::part(dh-button-icon){width:var(--dh-button-icon-size, 18px);height:var(--dh-button-icon-size, 18px);object-fit:contain;flex-shrink:0}[dh-button][variant=filled]::part(root),[dh-infobox]::part(dh-button-root),[dh-merge-dialog]::part(dh-button-root),[dh-merge-dialog]::part(dh-button-nav-root),[dh-window]::part(dh-button-root),[dh-multi-selectbox]::part(dh-button-root),[dh-multi-selectbox]::part(item-dh-button-root),[dh-multi-selectbox-item]::part(dh-button-root){background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);box-shadow:none}[dh-button][variant=filled]::part(label),[dh-infobox]::part(dh-button-label),[dh-merge-dialog]::part(dh-button-label),[dh-merge-dialog]::part(dh-button-nav-label),[dh-window]::part(dh-button-label),[dh-multi-selectbox]::part(dh-button-label),[dh-multi-selectbox]::part(item-dh-button-label),[dh-multi-selectbox-item]::part(dh-button-label){color:var(--md-sys-color-on-primary)}[dh-button][variant=filled]:not([disabled]):hover::part(root),[dh-infobox]::part(dh-button-root):hover,[dh-merge-dialog]::part(dh-button-root):hover,[dh-merge-dialog]::part(dh-button-nav-root):hover,[dh-window]::part(dh-button-root):hover,[dh-multi-selectbox]::part(dh-button-root):hover,[dh-multi-selectbox]::part(item-dh-button-root):hover,[dh-multi-selectbox-item]::part(dh-button-root):hover{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.08),0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-button][variant=filled]:not([disabled]):focus-within::part(root),[dh-infobox]::part(dh-button-root):focus-within,[dh-merge-dialog]::part(dh-button-root):focus-within,[dh-merge-dialog]::part(dh-button-nav-root):focus-within,[dh-window]::part(dh-button-root):focus-within,[dh-multi-selectbox]::part(dh-button-root):focus-within,[dh-multi-selectbox]::part(item-dh-button-root):focus-within,[dh-multi-selectbox-item]::part(dh-button-root):focus-within{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=filled]:not([disabled]):active::part(root),[dh-infobox]::part(dh-button-root):active,[dh-merge-dialog]::part(dh-button-root):active,[dh-merge-dialog]::part(dh-button-nav-root):active,[dh-window]::part(dh-button-root):active,[dh-multi-selectbox]::part(dh-button-root):active,[dh-multi-selectbox]::part(item-dh-button-root):active,[dh-multi-selectbox-item]::part(dh-button-root):active{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12);transform:scale(.97)}[dh-button][variant=outlined]::part(root),[dh-table-old]::part(dh-button-root),[dh-table]::part(dh-button-root){background-color:transparent;color:var(--md-sys-color-primary);border:1px solid var(--md-sys-color-outline-variant);box-shadow:none}[dh-button][variant=outlined]::part(label),[dh-table-old]::part(dh-button-label),[dh-table]::part(dh-button-label){color:var(--md-sys-color-primary)}[dh-button][variant=outlined]::part(icon),[dh-table-old]::part(dh-button-icon),[dh-table]::part(dh-button-icon){filter:none}[dh-button][variant=outlined]:not([disabled]):hover::part(root),[dh-table-old]::part(dh-button-root):hover,[dh-table]::part(dh-button-root):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08);border-color:var(--md-sys-color-outline)}[dh-button][variant=outlined]:not([disabled]):focus-within::part(root),[dh-table-old]::part(dh-button-root):focus-within,[dh-table]::part(dh-button-root):focus-within{border-color:var(--md-sys-color-primary);background-color:rgba(var(--md-sys-color-primary-rgb),.12);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=outlined]:not([disabled]):active::part(root),[dh-table-old]::part(dh-button-root):active,[dh-table]::part(dh-button-root):active{border-color:var(--md-sys-color-outline);background-color:rgba(var(--md-sys-color-primary-rgb),.12);transform:scale(.97)}[dh-button][variant=standard]::part(root){background-color:transparent;color:var(--md-sys-color-primary);border:none;box-shadow:none;padding-inline:12px;min-width:auto}[dh-button][variant=standard]::part(label){color:var(--md-sys-color-primary)}[dh-button][variant=standard]::part(icon){filter:none}[dh-button][variant=standard]:not([disabled]):hover::part(root){background-color:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-button][variant=standard]:not([disabled]):focus-within::part(root){background-color:rgba(var(--md-sys-color-primary-rgb),.12);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=standard]:not([disabled]):active::part(root){background-color:rgba(var(--md-sys-color-primary-rgb),.12);transform:scale(.97)}[dh-button][variant=elevated]::part(root){background-color:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-primary);border:none;box-shadow:0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-button][variant=elevated]::part(label){color:var(--md-sys-color-primary)}[dh-button][variant=elevated]::part(icon){filter:none}[dh-button][variant=elevated]:not([disabled]):hover::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-primary-rgb),.08),0 1px 2px #0000004d,0 2px 6px 2px #00000026}[dh-button][variant=elevated]:not([disabled]):focus-within::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-primary-rgb),.12),0 1px 2px #0000004d,0 1px 3px 1px #00000026;outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=elevated]:not([disabled]):active::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-primary-rgb),.12),0 1px 2px #0000004d,0 1px 3px 1px #00000026;transform:scale(.97)}[dh-button][variant=tonal]::part(root){background-color:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border:none;box-shadow:none}[dh-button][variant=tonal]::part(label){color:var(--md-sys-color-on-secondary-container)}[dh-button][variant=tonal]::part(icon){filter:none}[dh-button][variant=tonal]:not([disabled]):hover::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.08),0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-button][variant=tonal]:not([disabled]):focus-within::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.12);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=tonal]:not([disabled]):active::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.12);transform:scale(.97)}[dh-button][variant=dashed]::part(root){background-color:transparent;color:var(--md-sys-color-primary);border:1px dashed var(--md-sys-color-primary);box-shadow:none}[dh-button][variant=dashed]::part(label){color:var(--md-sys-color-primary)}[dh-button][variant=dashed]:not([disabled]):hover::part(root){background-color:var(--md-sys-color-primary-container);border-style:solid}[dh-button][variant=dashed]:not([disabled]):focus-within::part(root){background-color:var(--md-sys-color-primary-container);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=dashed]:not([disabled]):active::part(root){background-color:var(--md-sys-color-primary-container);transform:scale(.97)}[dh-button][disabled]::part(root),[dh-button][disabled][variant=filled]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled]::part(label),[dh-button][disabled][variant=filled]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled]::part(icon),[dh-button][disabled][variant=filled]::part(icon){opacity:.38;filter:none}[dh-button][disabled][variant=outlined]::part(root){background-color:transparent;border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled][variant=outlined]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled][variant=outlined]::part(icon){opacity:.38}[dh-button][disabled][variant=standard]::part(root){background-color:transparent;color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled][variant=standard]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled][variant=standard]::part(icon){opacity:.38}[dh-button][disabled][variant=elevated]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled][variant=elevated]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled][variant=elevated]::part(icon){opacity:.38}[dh-button][disabled][variant=tonal]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled][variant=tonal]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled][variant=tonal]::part(icon){opacity:.38}[dh-button][img]:not([img=""])::part(root),[dh-button][variant=filled][img]:not([img=""])::part(root),[dh-button][variant=outlined][img]:not([img=""])::part(root),[dh-button][variant=elevated][img]:not([img=""])::part(root),[dh-button][variant=tonal][img]:not([img=""])::part(root){padding-inline-start:16px;padding-inline-end:24px}[dh-button][variant=standard][img]:not([img=""])::part(root){padding-inline-start:12px;padding-inline-end:16px}[dh-button][icon-button]::part(root),[dh-table-old]::part(dh-icon-button-root),[dh-table]::part(dh-icon-button-root),[dh-merge-dialog]::part(dh-icon-button-nav-root){width:40px;max-width:100%;min-width:0;height:40px;max-height:100%;min-height:0;aspect-ratio:1/1;padding:0;gap:0;border:none;border-radius:9999px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}[dh-button][icon-button][variant=standard]::part(root){background-color:transparent;color:var(--md-sys-color-on-surface-variant);box-shadow:none}[dh-button][icon-button][variant=filled]::part(root),[dh-merge-dialog]::part(dh-icon-button-nav-root){background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);box-shadow:none}[dh-button][icon-button][variant=tonal]::part(root){background-color:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);box-shadow:none}[dh-button][icon-button][variant=outlined]::part(root){background-color:transparent;color:var(--md-sys-color-on-surface-variant);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline-variant)}[dh-table-old]::part(dh-icon-button-root),[dh-table]::part(dh-icon-button-root){background-color:transparent;color:var(--md-sys-color-primary);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline)}[dh-button][icon-button][variant=elevated]::part(root){background-color:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-primary);box-shadow:0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-button][icon-button][variant=standard]:not([disabled]):hover::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-button][icon-button][variant=filled]:not([disabled]):hover::part(root),[dh-merge-dialog]::part(dh-icon-button-nav-root):hover{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.08)}[dh-button][icon-button][variant=tonal]:not([disabled]):hover::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.08)}[dh-button][icon-button][variant=outlined]:not([disabled]):hover::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline)}[dh-table-old]::part(dh-icon-button-root):hover,[dh-table]::part(dh-icon-button-root):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline)}[dh-button][icon-button][variant=elevated]:not([disabled]):hover::part(root){box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026,inset 0 0 0 100vmax rgba(var(--md-sys-color-primary-rgb),.08)}[dh-button][icon-button]:not([disabled]):focus-within::part(root),[dh-table-old]::part(dh-icon-button-root):focus-within,[dh-table]::part(dh-icon-button-root):focus-within,[dh-merge-dialog]::part(dh-icon-button-nav-root):focus-within{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][icon-button]:not([disabled]):active::part(root),[dh-table-old]::part(dh-icon-button-root):active,[dh-table]::part(dh-icon-button-root):active,[dh-merge-dialog]::part(dh-icon-button-nav-root):active{transform:scale(.92)}[dh-button][icon-button][disabled][variant=filled]::part(root),[dh-button][icon-button][disabled][variant=tonal]::part(root),[dh-button][icon-button][disabled][variant=elevated]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][icon-button][disabled][variant=standard]::part(root){background-color:transparent;color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed;pointer-events:none}[dh-button][icon-button][disabled][variant=outlined]::part(root),[dh-table-old]::part(dh-icon-button-root) [disabled],[dh-table]::part(dh-icon-button-root) [disabled]{background-color:transparent;color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:inset 0 0 0 1px rgba(var(--md-sys-color-on-surface-rgb),.12);cursor:not-allowed;pointer-events:none}[dh-checkbox]{display:inline-flex;vertical-align:middle}[dh-checkbox]::part(root),[dh-settings-grid]::part(dh-checkbox-root),[dh-setting-item]::part(dh-checkbox-root),[dh-table-old]::part(dh-checkbox-root),[dh-table]::part(dh-checkbox-root){display:inline-flex;align-items:center;justify-content:center;cursor:pointer}[dh-checkbox]::part(input),[dh-settings-grid]::part(dh-checkbox-input),[dh-setting-item]::part(dh-checkbox-input),[dh-table-old]::part(dh-checkbox-input),[dh-table]::part(dh-checkbox-input){appearance:none;-webkit-appearance:none;width:20px;height:20px;border:2px solid var(--md-sys-color-on-surface-variant);border-radius:4px;background-color:transparent;background-size:contain;background-position:center;background-repeat:no-repeat;cursor:pointer;margin:0;padding:0;outline:none;box-sizing:border-box;transition:background-color .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1)}[dh-checkbox]:not([disabled]):not([checked]):hover::part(input),[dh-settings-grid]::part(dh-checkbox-input):not(:checked):not(:disabled):hover,[dh-setting-item]::part(dh-checkbox-input):not(:checked):not(:disabled):hover,[dh-table-old]::part(dh-checkbox-input):not(:checked):not(:disabled):hover,[dh-table]::part(dh-checkbox-input):not(:checked):not(:disabled):hover{border-color:var(--md-sys-color-on-surface)}[dh-checkbox]:not([disabled]):not([checked]):focus-within::part(input),[dh-settings-grid]::part(dh-checkbox-input):not(:checked):not(:disabled):focus-visible,[dh-setting-item]::part(dh-checkbox-input):not(:checked):not(:disabled):focus-visible,[dh-table-old]::part(dh-checkbox-input):not(:checked):not(:disabled):focus-visible,[dh-table]::part(dh-checkbox-input):not(:checked):not(:disabled):focus-visible{border-color:var(--md-sys-color-on-surface);box-shadow:0 0 0 2px rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-checkbox][checked]::part(input),[dh-settings-grid]::part(dh-checkbox-input):checked,[dh-setting-item]::part(dh-checkbox-input):checked,[dh-table-old]::part(dh-checkbox-input):checked,[dh-table]::part(dh-checkbox-input):checked{background-color:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);background-image:var(--md-comp-checkbox-mark)}[dh-checkbox][checked]:not([disabled]):hover::part(input),[dh-settings-grid]::part(dh-checkbox-input):checked:not(:disabled):hover,[dh-setting-item]::part(dh-checkbox-input):checked:not(:disabled):hover,[dh-table-old]::part(dh-checkbox-input):checked:not(:disabled):hover,[dh-table]::part(dh-checkbox-input):checked:not(:disabled):hover{box-shadow:0 0 0 2px rgba(var(--md-sys-color-primary-rgb),.12)}[dh-checkbox][checked]:not([disabled]):focus-within::part(input),[dh-settings-grid]::part(dh-checkbox-input):checked:not(:disabled):focus-visible,[dh-setting-item]::part(dh-checkbox-input):checked:not(:disabled):focus-visible,[dh-table-old]::part(dh-checkbox-input):checked:not(:disabled):focus-visible,[dh-table]::part(dh-checkbox-input):checked:not(:disabled):focus-visible{box-shadow:0 0 0 2px rgba(var(--md-sys-color-primary-rgb),.2)}[dh-checkbox][indeterminate]::part(input),[dh-settings-grid]::part(dh-checkbox-input):indeterminate,[dh-setting-item]::part(dh-checkbox-input):indeterminate,[dh-table-old]::part(dh-checkbox-input):indeterminate,[dh-table]::part(dh-checkbox-input):indeterminate{background-color:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);background-image:linear-gradient(var(--md-sys-color-on-primary),var(--md-sys-color-on-primary));background-size:10px 2px;background-position:center;background-repeat:no-repeat}[dh-checkbox][indeterminate]:not([disabled]):hover::part(input),[dh-settings-grid]::part(dh-checkbox-input):indeterminate:not(:disabled):hover,[dh-setting-item]::part(dh-checkbox-input):indeterminate:not(:disabled):hover,[dh-table-old]::part(dh-checkbox-input):indeterminate:not(:disabled):hover,[dh-table]::part(dh-checkbox-input):indeterminate:not(:disabled):hover{box-shadow:0 0 0 2px rgba(var(--md-sys-color-primary-rgb),.12)}[dh-checkbox][disabled]:not([checked])::part(root){cursor:not-allowed;pointer-events:none}[dh-checkbox][disabled]:not([checked])::part(input),[dh-settings-grid]::part(dh-checkbox-input):disabled:not(:checked),[dh-setting-item]::part(dh-checkbox-input):disabled:not(:checked),[dh-table-old]::part(dh-checkbox-input):disabled:not(:checked),[dh-table]::part(dh-checkbox-input):disabled:not(:checked){border-color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed}[dh-checkbox][disabled][checked]::part(root){cursor:not-allowed;pointer-events:none}[dh-checkbox][disabled][checked]::part(input),[dh-settings-grid]::part(dh-checkbox-input):disabled:checked,[dh-setting-item]::part(dh-checkbox-input):disabled:checked,[dh-table-old]::part(dh-checkbox-input):disabled:checked,[dh-table]::part(dh-checkbox-input):disabled:checked{background-color:rgba(var(--md-sys-color-on-surface-rgb),.38);border-color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed}[dh-settings-grid]::part(dh-checkbox-root),[dh-setting-item]::part(dh-checkbox-root){margin-left:16px}[dh-checkbox][variant=switch]::part(root),[dh-table]::part(dh-switch-root){position:relative;display:inline-flex;align-items:center;width:48px;height:28px}[dh-checkbox][variant=switch]::part(input),[dh-table]::part(dh-switch-track){appearance:none;-webkit-appearance:none;width:48px;height:28px;border:2px solid var(--md-sys-color-outline-variant);border-radius:14px;background-color:var(--md-sys-color-surface-container-highest);background-image:none;cursor:pointer;margin:0;padding:0;outline:none;box-sizing:border-box;transition:background-color .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1)}[dh-checkbox][variant=switch]::part(handle),[dh-table]::part(dh-switch-handle){position:absolute;top:50%;left:5px;width:14px;height:14px;border-radius:50%;background-color:var(--md-sys-color-outline);transform:translateY(-50%);pointer-events:none;transition:left .2s cubic-bezier(.2,0,0,1),width .2s cubic-bezier(.2,0,0,1),height .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-checkbox][variant=switch]:not([disabled]):not([checked]):hover::part(input),[dh-table]::part(dh-switch-track):not(:checked):not(:disabled):hover{border-color:var(--md-sys-color-on-surface-variant)}[dh-checkbox][variant=switch]:not([disabled]):not([checked]):hover::part(handle){background-color:var(--md-sys-color-on-surface-variant)}[dh-checkbox][variant=switch][checked]::part(input),[dh-table]::part(dh-switch-track):checked{background-color:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);background-image:none}[dh-checkbox][variant=switch][checked]:not([disabled]):hover::part(handle){background-color:var(--md-sys-color-primary-container)}[dh-checkbox][variant=switch][disabled]:not([checked])::part(input),[dh-table]::part(dh-switch-track):disabled:not(:checked){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);background-color:rgba(var(--md-sys-color-on-surface-rgb),.06)}[dh-checkbox][variant=switch][disabled]:not([checked])::part(handle){background-color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-checkbox][variant=switch][disabled][checked]::part(input),[dh-table]::part(dh-switch-track):disabled:checked{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);border-color:transparent}[dh-checkbox][variant=switch][disabled][checked]::part(handle){background-color:var(--md-sys-color-surface)}[dh-radio]::part(control){width:var(--dh-radio-control-size, 32px);height:var(--dh-radio-control-size, 32px);border-radius:50%;position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-radio][disabled]::part(control){cursor:not-allowed}[dh-radio]:not([disabled])::part(control):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-radio]:not([disabled])[checked]::part(control):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-radio]:not([disabled])::part(control):active{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-radio]:not([disabled])[checked]::part(control):active{background-color:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-radio]::part(input){width:20px;height:20px;border-radius:50%;border:2px solid var(--md-sys-color-on-surface);background-color:transparent;cursor:pointer;transition:border-color .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-radio][disabled]::part(input){border-color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed}[dh-radio][checked]::part(input){border-color:var(--md-sys-color-primary);background:radial-gradient(circle,var(--md-sys-color-primary) 0 5px,transparent 5px 100%)}[dh-radio][checked][disabled]::part(input){border-color:rgba(var(--md-sys-color-on-surface-rgb),.38);background:radial-gradient(circle,rgba(var(--md-sys-color-on-surface-rgb),.38) 0 5px,transparent 5px 100%)}[dh-radio]:not([disabled])::part(input):focus-visible{outline:none}[dh-radio]:not([disabled]):has(:focus-visible)::part(control){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-radio]:not([disabled])[checked]:has(:focus-visible)::part(control){background-color:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-radio]::part(label){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--md-sys-color-on-surface)}[dh-radio][disabled]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-infobox]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-infobox]::part(root){background-color:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:28px;box-shadow:0 2px 6px #0000001f,0 8px 24px #00000029;padding:24px;min-width:280px;max-width:560px}[dh-infobox]::part(header){padding:0 0 16px;justify-content:flex-start;font-size:1.5rem;font-weight:400}[dh-infobox]::part(label){font-size:1.5rem;font-weight:400;line-height:2rem;color:var(--md-sys-color-on-surface)}[dh-infobox]::part(content){padding:0 0 24px;justify-content:flex-start;align-items:flex-start;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--md-sys-color-on-surface-variant)}[dh-infobox]::part(footer){padding:0;justify-content:flex-end;gap:8px}[dh-input]::part(trailing-icon){width:40px;height:40px;margin-right:4px;border-radius:50%;color:var(--md-sys-color-on-surface-variant);font-size:1.125rem;transition:background-color .2s cubic-bezier(.2,0,0,1),color .2s cubic-bezier(.2,0,0,1)}[dh-input]:not([disabled])::part(trailing-icon):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);color:var(--md-sys-color-on-surface)}[dh-input]:not([disabled])::part(trailing-icon):focus-visible{outline:none;background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:var(--md-sys-color-on-surface)}[dh-input][disabled]::part(trailing-icon){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][toggle-password][type=password]::part(input){padding-right:48px}[dh-input][type=checkbox]{display:inline-flex;width:auto;height:auto}[dh-input]:not([type=checkbox])::part(root),[dh-settings-grid]::part(dh-input-root),[dh-setting-item]::part(dh-input-root),[dh-table-old]::part(dh-filter-root),[dh-table]::part(dh-filter-root),[dh-table-old]::part(dh-input-root),[dh-table]::part(dh-input-root),[dh-multi-selectbox]::part(dh-input-root){display:flex;align-items:center;width:100%;min-height:40px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-input]:not([type=checkbox])::part(input),[dh-settings-grid]::part(dh-input-input),[dh-setting-item]::part(dh-input-input),[dh-table-old]::part(dh-filter-input),[dh-table]::part(dh-filter-input),[dh-table-old]::part(dh-input-input),[dh-table]::part(dh-input-input),[dh-multi-selectbox]::part(dh-input-input){font-family:Roboto,system-ui,sans-serif;font-size:var(--dh-input-input-size, .875rem);font-weight:400;line-height:var(--dh-input-input-line-height, 1.25rem);letter-spacing:.015625rem;color:var(--md-sys-color-on-surface);caret-color:var(--md-sys-color-primary);padding:var(--dh-input-input-padding, 0 12px);border:none;outline:none;background:transparent;width:100%;height:100%;box-sizing:border-box;margin:0}[dh-input][type=checkbox]::part(root){width:auto;height:auto;border:none}[dh-input][type=checkbox]::part(input){padding:0;width:auto;height:auto}[dh-input]::part(root),[dh-input][variant=outlined]::part(root),[dh-table-old]::part(dh-filter-root),[dh-table]::part(dh-filter-root){border:var(--dh-input-root-border, 1px solid var(--md-sys-color-outline-variant));border-radius:var(--dh-input-root-radius, 4px);background-color:var(--dh-input-root-bg, transparent)}[dh-input]:not([variant]):not([disabled]):hover::part(root),[dh-input][variant=outlined]:not([disabled]):hover::part(root),[dh-table-old]::part(dh-filter-root):hover,[dh-table]::part(dh-filter-root):hover{border-color:var(--md-sys-color-outline)}[dh-input]:not([variant]):not([disabled]):focus-within::part(root),[dh-input][variant=outlined]:not([disabled]):focus-within::part(root),[dh-table-old]::part(dh-filter-root):focus-within,[dh-table]::part(dh-filter-root):focus-within{border-color:var(--md-sys-color-primary)}[dh-input][invalid]::part(root){border-color:var(--md-sys-color-error)}[dh-input][invalid]:focus-within::part(root){border-color:var(--md-sys-color-error)}[dh-input][invalid]::part(label){color:var(--md-sys-color-error)}[dh-input][invalid]::part(supporting-text){color:var(--md-sys-color-error)}[dh-input][variant=filled]::part(root){border:var(--dh-input-root-border, none);border-bottom:var(--dh-input-root-border-bottom, 1px solid var(--md-sys-color-on-surface-variant));border-radius:var(--dh-input-root-radius, 4px 4px 0 0);background-color:var(--dh-input-root-bg, var(--md-sys-color-surface-container-highest))}[dh-input][variant=filled]::part(input){padding:20px 16px 8px}[dh-input][variant=filled]:not([disabled]):hover::part(root){border-bottom-color:var(--md-sys-color-on-surface);box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-input][variant=filled]:not([disabled]):focus-within::part(root){border-bottom-color:var(--md-sys-color-primary);box-shadow:var(--dh-input-root-focus-shadow, inset 0 -1px 0 0 var(--md-sys-color-primary))}[dh-input]{--dh-input-label-top: 50%;--dh-input-label-transform: translateY(-50%);--dh-input-label-font-size: .875rem;--dh-input-label-line-height: 1.25rem;--dh-input-label-bg: transparent}[dh-input]::part(label){position:absolute;left:12px;font-family:Roboto,system-ui,sans-serif;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 24px);transition:top .2s cubic-bezier(.2,0,0,1),transform .2s cubic-bezier(.2,0,0,1),font-size .2s cubic-bezier(.2,0,0,1),line-height .2s cubic-bezier(.2,0,0,1),color .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-input]:not([variant])::part(label),[dh-input][variant=outlined]::part(label){left:12px;padding:0 4px}[dh-input]:not([variant]),[dh-input][variant=outlined]{--dh-input-label-floating-bg: var(--md-sys-color-surface)}[dh-input][variant=filled]{--dh-input-label-floating-top: 6px;--dh-input-label-floating-transform: translateY(0);--dh-input-label-floating-bg: transparent}[dh-input]:focus-within::part(label){color:var(--md-sys-color-primary)}[dh-input]::part(supporting-text),[dh-settings-grid]::part(dh-input-supporting-text),[dh-setting-item]::part(dh-input-supporting-text),[dh-table-old]::part(dh-input-supporting-text),[dh-table]::part(dh-input-supporting-text),[dh-table-old]::part(dh-filter-supporting-text),[dh-table]::part(dh-filter-supporting-text),[dh-multi-selectbox]::part(dh-input-supporting-text){font-family:Roboto,system-ui,sans-serif;font-size:.75rem;font-weight:400;line-height:1rem;letter-spacing:.025rem;color:var(--md-sys-color-on-surface-variant);padding:4px 16px 0}[dh-input][disabled]::part(root),[dh-input][disabled][variant=outlined]::part(root){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);box-shadow:none}[dh-input][disabled]::part(input),[dh-input][disabled][variant=outlined]::part(input){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][disabled][variant=filled]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.04);border-bottom-color:rgba(var(--md-sys-color-on-surface-rgb),.12);box-shadow:none}[dh-input][disabled][variant=filled]::part(input){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][disabled]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][disabled]::part(supporting-text){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][readonly]:not([disabled])::part(root),[dh-input][readonly]:not([disabled])[variant=outlined]::part(root){border-color:var(--md-sys-color-outline-variant)}[dh-input][readonly]:not([disabled])[variant=filled]::part(root){border-bottom-color:var(--md-sys-color-outline-variant)}[dh-input][readonly]:not([disabled])::part(input){color:var(--md-sys-color-on-surface-variant);cursor:default}[dh-input][variant=classic],[dh-settings-grid],[dh-setting-item],[dh-table]{--dh-input-placeholder-color: var(--md-sys-color-on-surface-variant);--dh-input-placeholder-opacity: 1}[dh-input][variant=classic]::part(root),[dh-settings-grid]::part(dh-input-root),[dh-setting-item]::part(dh-input-root){border:var(--dh-input-root-border, 1px solid var(--md-sys-color-outline-variant));border-radius:var(--dh-input-root-radius, 4px);background-color:var(--dh-input-root-bg, transparent)}[dh-input][variant=classic]:not([disabled]):hover::part(root),[dh-settings-grid]::part(dh-input-root):hover,[dh-setting-item]::part(dh-input-root):hover{border-color:var(--md-sys-color-outline)}[dh-input][variant=classic]:not([disabled]):focus-within::part(root),[dh-settings-grid]::part(dh-input-root):focus-within,[dh-setting-item]::part(dh-input-root):focus-within{border-color:var(--md-sys-color-primary)}[dh-input][disabled][variant=classic]::part(root){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);box-shadow:none}[dh-input][disabled][variant=classic]::part(input){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][disabled][variant=classic]{--dh-input-placeholder-color: var(--md-sys-color-on-surface);--dh-input-placeholder-opacity: .38}[dh-input][readonly]:not([disabled])[variant=classic]::part(root){border-color:var(--md-sys-color-outline-variant)}[dh-input][readonly]:not([disabled])[variant=classic]::part(input){color:var(--md-sys-color-on-surface-variant);cursor:default}[dh-settings-grid]::part(dh-input-root),[dh-setting-item]::part(dh-input-root){border:var(--dh-input-root-border, 1px solid var(--md-sys-color-outline-variant));border-radius:var(--dh-input-root-radius, 4px);background-color:var(--dh-input-root-bg, var(--md-sys-color-surface))}[dh-settings-grid]::part(dh-input-root):hover,[dh-setting-item]::part(dh-input-root):hover{border-color:var(--md-sys-color-outline)}[dh-settings-grid]::part(dh-input-root):focus-within,[dh-setting-item]::part(dh-input-root):focus-within{border-color:var(--md-sys-color-primary)}[dh-select]::part(dh-input-root){border:none;border-radius:0;background-color:transparent}[dh-select]::part(dh-input-root):hover{border:none;box-shadow:none}[dh-select]::part(dh-input-root):focus-within{border:none;box-shadow:none}[dh-input][type=file]::part(root){border:none;box-shadow:none;background:transparent;height:auto}[dh-input][type=file]::part(file-button){height:var(--dh-button-height, 40px);padding-inline:var(--dh-button-padding-inline, 24px);border-radius:var(--dh-button-radius, 20px);border:1px solid var(--md-sys-color-outline);background:transparent;color:var(--md-sys-color-primary);font-family:Roboto,system-ui,sans-serif;font-size:var(--md-sys-typescale-label-large-size, .875rem);font-weight:var(--md-sys-typescale-label-large-weight, 500);letter-spacing:var(--md-sys-typescale-label-large-tracking, .00625rem);cursor:pointer;transition:background .2s cubic-bezier(.2,0,0,1)}[dh-input][type=file]:not([disabled])::part(file-button):hover{background:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-input][type=file]:not([disabled])::part(file-button):focus-visible{outline:none;background:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-input][type=file][disabled]::part(file-button){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][type=file]::part(file-name){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant)}[dh-table-old]::part(dh-input-root),[dh-table]::part(dh-input-root){height:100%;min-height:0;border:none;border-radius:0;background-color:transparent}[dh-table-old]::part(dh-input-input),[dh-table]::part(dh-input-input){padding:0;font-size:.875rem;line-height:1.25rem}[dh-table-old]::part(dh-input-root):hover,[dh-table]::part(dh-input-root):hover{border:none;box-shadow:none}[dh-table-old]::part(dh-input-root):focus-within,[dh-table]::part(dh-input-root):focus-within{border:none;box-shadow:none}[dh-list-item]{display:block;font-family:Roboto,system-ui,sans-serif;--dh-list-item-title-color: var(--md-sys-color-on-surface);--dh-list-item-meta-color: var(--md-sys-color-on-surface-variant);--dh-list-item-status-color: var(--md-sys-color-primary)}[dh-list-item]::part(root){border:1px solid var(--md-sys-color-outline-variant);border-radius:.5rem;overflow:visible;background-color:var(--md-sys-color-surface);transition:border-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1)}[dh-list-item]:hover::part(root){border-color:var(--md-sys-color-outline)}[dh-list-item][expanded]::part(root){border-color:var(--md-sys-color-primary);box-shadow:0 1px 3px #00000014}[dh-list-item]::part(row){padding:.75rem 1rem;border-radius:.5rem}[dh-list-item][expanded]::part(row){background-color:var(--md-sys-color-primary-container);border-bottom-left-radius:0;border-bottom-right-radius:0}[dh-list-item]::part(expanded){border-top:1px solid var(--md-sys-color-outline-variant);padding:1rem;background-color:var(--md-sys-color-surface);border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}[dh-form-grid]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-form-field]{--dh-form-field-label-color: var(--md-sys-color-on-surface-variant)}[dh-section]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-section]::part(header){border-bottom:1px solid var(--md-sys-color-outline-variant)}[dh-section]::part(title){font-size:1rem;font-weight:600;color:var(--md-sys-color-on-surface)}[dh-section]::part(badge){font-size:.75rem;font-weight:500;background-color:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);padding:.125rem .5rem;border-radius:999px}[dh-section][divider]{border-top-color:var(--md-sys-color-outline-variant)}[dh-textarea]{display:block;font-family:Roboto,system-ui,sans-serif;width:100%}[dh-textarea]::part(input){padding:.5rem .75rem;border:1px solid var(--md-sys-color-outline);border-radius:4px;font-size:.875rem;font-family:inherit;color:var(--md-sys-color-on-surface);background-color:var(--md-sys-color-surface);resize:vertical;min-height:60px;outline:none;transition:border-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1)}[dh-textarea]:not([disabled])::part(input):hover{border-color:var(--md-sys-color-on-surface)}[dh-textarea]::part(input):focus{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px rgba(var(--md-sys-color-primary-rgb),.12)}[dh-textarea][disabled]::part(input){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);background-color:rgba(var(--md-sys-color-on-surface-rgb),.04);color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed}[dh-color-picker]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-color-picker]::part(preview){border:1px solid var(--md-sys-color-outline)}[dh-mainbar]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-mainbar]::part(root){background-color:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface)}[dh-mainbar]::part(brand){font-size:1.375rem;font-weight:400;line-height:1.75rem;letter-spacing:0;color:var(--md-sys-color-on-surface)}[dh-mainbar]::part(content){font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant)}[dh-mainbar]::part(actions){color:var(--md-sys-color-on-surface-variant)}[dh-merge-dialog]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-merge-dialog]::part(root){background-color:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:28px;box-shadow:0 2px 6px #0000001f,0 8px 24px #00000029;padding:24px;min-width:280px;max-width:640px}[dh-merge-dialog]::part(header){padding:0 0 16px;justify-content:flex-start;font-size:1.5rem;font-weight:400;line-height:2rem;color:var(--md-sys-color-on-surface)}[dh-merge-dialog]::part(content){padding:0 0 16px;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--md-sys-color-on-surface-variant)}[dh-merge-dialog]::part(footer){padding:0;justify-content:space-between;align-items:center;gap:8px}[dh-merge-dialog]::part(page-root){color:var(--md-sys-color-on-surface)}[dh-merge-dialog]::part(page-label){font-size:.875rem;font-weight:500;line-height:1.25rem;color:var(--md-sys-color-on-surface);padding:8px 0}[dh-merge-dialog]::part(page-content){font-size:.875rem;line-height:1.25rem;color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;overflow:hidden;accent-color:var(--md-sys-color-primary)}[dh-merge-dialog]::part(page-header){background-color:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);font-weight:500;border-color:var(--md-sys-color-outline-variant)}[dh-merge-dialog]::part(page-column-left),[dh-merge-dialog]::part(page-column-right){background-color:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);font-weight:500;border-color:var(--md-sys-color-outline-variant);accent-color:var(--md-sys-color-primary)}[dh-merge-dialog]::part(page-item){color:var(--md-sys-color-on-surface-variant);font-weight:400;border-color:var(--md-sys-color-outline-variant)}[dh-merge-dialog]::part(dh-button-nav-root){padding-inline:8px;min-width:auto;height:36px}[dh-merge-dialog]::part(dh-button-nav-icon){width:14px;height:14px}[dh-multi-selectbox]{display:block}[dh-multi-selectbox]::part(root),[dh-settings-grid]::part(dh-multiselect-root),[dh-setting-item]::part(dh-multiselect-root){display:flex;flex-direction:row;align-items:center;gap:8px;padding:4px 8px;border-radius:8px;background-color:var(--md-sys-color-surface)}[dh-multi-selectbox]::part(trigger),[dh-settings-grid]::part(dh-multiselect-trigger),[dh-setting-item]::part(dh-multiselect-trigger){gap:4px;flex:1;min-width:0}[dh-multi-selectbox]::part(item-root),[dh-multi-selectbox-item]::part(root),[dh-settings-grid]::part(dh-multiselect-item-root),[dh-setting-item]::part(dh-multiselect-item-root){display:inline-flex;align-items:center;height:32px;padding:0 4px 0 12px;border-radius:8px;border:1px solid var(--md-sys-color-outline-variant);background-color:transparent;gap:8px;box-sizing:border-box;transition:background-color .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1)}[dh-multi-selectbox]::part(item-label),[dh-multi-selectbox-item]::part(label),[dh-settings-grid]::part(dh-multiselect-item-label),[dh-setting-item]::part(dh-multiselect-item-label){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25rem;letter-spacing:.00625rem;color:var(--md-sys-color-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[dh-multi-selectbox]::part(item-dh-button-root),[dh-multi-selectbox-item]::part(dh-button-root),[dh-settings-grid]::part(dh-multiselect-item-trigger),[dh-setting-item]::part(dh-multiselect-item-trigger){width:24px;height:24px;min-width:auto;min-height:auto;border:none;background:none;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-multi-selectbox]::part(item-icon),[dh-multi-selectbox-item]::part(icon),[dh-settings-grid]::part(dh-multiselect-item-icon),[dh-setting-item]::part(dh-multiselect-item-icon){font-size:18px;color:var(--md-sys-color-on-surface-variant)}[dh-multi-selectbox]:not([noteditable])::part(item-root):hover,[dh-multi-selectbox-item]:not([noteditable])::part(root):hover,[dh-settings-grid]::part(dh-multiselect-item-root):hover,[dh-setting-item]::part(dh-multiselect-item-root):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-multi-selectbox]:not([noteditable])::part(item-dh-button-root):hover,[dh-multi-selectbox-item]:not([noteditable])::part(dh-button-root):hover,[dh-settings-grid]::part(dh-multiselect-item-trigger):hover,[dh-setting-item]::part(dh-multiselect-item-trigger):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-multi-selectbox]:not([noteditable])::part(item-root):focus-within,[dh-multi-selectbox-item]:not([noteditable])::part(root):focus-within,[dh-settings-grid]::part(dh-multiselect-item-root):focus-within,[dh-setting-item]::part(dh-multiselect-item-root):focus-within{border-color:var(--md-sys-color-on-surface);background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-multi-selectbox]::part(dh-button-root),[dh-settings-grid]::part(dh-multiselect-icon),[dh-setting-item]::part(dh-multiselect-icon){width:32px;height:32px;min-width:auto;min-height:auto;border-radius:50%;background-color:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.125rem;padding:0;box-shadow:none;transition:background-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1)}[dh-multi-selectbox]:not([noteditable])::part(dh-button-root):hover,[dh-settings-grid]::part(dh-multiselect-icon):hover,[dh-setting-item]::part(dh-multiselect-icon):hover{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.08),0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-multi-selectbox]:not([noteditable])::part(dh-button-root):focus-within,[dh-settings-grid]::part(dh-multiselect-icon):focus-visible,[dh-setting-item]::part(dh-multiselect-icon):focus-visible{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.12);outline:none}[dh-multi-selectbox]:not([noteditable])::part(dh-button-root):active,[dh-settings-grid]::part(dh-multiselect-icon):active,[dh-setting-item]::part(dh-multiselect-icon):active{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.12)}[dh-multi-selectbox]::part(content),[dh-settings-grid]::part(dh-multiselect-content),[dh-setting-item]::part(dh-multiselect-content),[dh-form-field]::part(dh-multiselect-content){background-color:var(--md-sys-color-surface);border-radius:12px;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026;padding:8px 0;min-width:200px}[dh-multi-selectbox]::part(input),[dh-settings-grid]::part(dh-multiselect-input),[dh-setting-item]::part(dh-multiselect-input){display:block;width:calc(100% - 16px);margin:0 8px 4px}[dh-multi-selectbox]::part(dh-input-root){height:auto;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;background-color:var(--md-sys-color-surface-container-low);box-shadow:none}[dh-multi-selectbox]::part(dh-input-input){font-size:.875rem;line-height:1.25rem;padding:8px 12px}[dh-multi-selectbox]::part(item),[dh-settings-grid]::part(dh-multiselect-item),[dh-setting-item]::part(dh-multiselect-item){padding:12px 16px;font-family:Roboto,system-ui,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--md-sys-color-on-surface);cursor:pointer;transition:background-color .15s cubic-bezier(.2,0,0,1)}[dh-multi-selectbox]::part(item):hover,[dh-settings-grid]::part(dh-multiselect-item):hover,[dh-setting-item]::part(dh-multiselect-item):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-multi-selectbox]::part(item):focus,[dh-settings-grid]::part(dh-multiselect-item):focus,[dh-setting-item]::part(dh-multiselect-item):focus{background-color:rgba(var(--md-sys-color-primary-rgb),.12);outline:none}[dh-multi-selectbox]::part(item):active,[dh-settings-grid]::part(dh-multiselect-item):active,[dh-setting-item]::part(dh-multiselect-item):active{background-color:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-multi-selectbox]::part(selected),[dh-settings-grid]::part(dh-multiselect-selected),[dh-setting-item]::part(dh-multiselect-selected){background-color:rgba(var(--md-comp-multiselect-selected-rgb),.12);color:var(--md-comp-multiselect-selected);font-weight:700}[dh-multi-selectbox]::part(selected):hover,[dh-settings-grid]::part(dh-multiselect-selected):hover,[dh-setting-item]::part(dh-multiselect-selected):hover{background-color:rgba(var(--md-comp-multiselect-selected-rgb),.2)}[dh-multi-selectbox][noteditable]::part(root){opacity:.38;pointer-events:none}[dh-multi-selectbox][noteditable]::part(item-root){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);background-color:transparent}[dh-multi-selectbox][noteditable]::part(item-label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-select]::part(root),[dh-settings-grid]::part(dh-select-root),[dh-setting-item]::part(dh-select-root),[dh-table-old]::part(dh-select-root),[dh-table]::part(dh-select-root){position:relative;height:100%}[dh-select]::part(trigger),[dh-settings-grid]::part(dh-select-trigger),[dh-setting-item]::part(dh-select-trigger),[dh-table-old]::part(dh-select-trigger),[dh-table]::part(dh-select-trigger){display:flex;align-items:center;justify-content:space-between;height:var(--dh-select-trigger-height, 40px);padding:var(--dh-select-trigger-padding, 0 12px);border-radius:var(--dh-select-trigger-radius, var(--md-sys-shape-corner-extra-small, 4px));cursor:pointer;box-sizing:border-box;overflow:hidden;gap:8px;transition:background-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1),transform .2s cubic-bezier(.2,0,0,1)}[dh-select]::part(trigger),[dh-select][variant=outlined]::part(trigger),[dh-settings-grid]::part(dh-select-trigger),[dh-setting-item]::part(dh-select-trigger),[dh-table-old]::part(dh-select-trigger),[dh-table]::part(dh-select-trigger){border:var(--dh-select-trigger-border, 1px solid var(--md-sys-color-outline-variant));background-color:transparent}[dh-select]:not([disabled]):not([variant=filled]):not([open]):not(:focus-within):hover::part(trigger),[dh-select][variant=outlined]:not([disabled]):not([open]):not(:focus-within):hover::part(trigger),[dh-settings-grid]::part(dh-select-trigger):not(:focus-within):hover,[dh-setting-item]::part(dh-select-trigger):not(:focus-within):hover,[dh-table-old]::part(dh-select-trigger):not(:focus-within):hover,[dh-table]::part(dh-select-trigger):not(:focus-within):hover{border-color:var(--md-sys-color-outline)}[dh-select]:not([disabled]):not([variant=filled]):focus-within::part(trigger),[dh-select][variant=outlined]:not([disabled]):focus-within::part(trigger),[dh-settings-grid]::part(dh-select-trigger):focus-within,[dh-setting-item]::part(dh-select-trigger):focus-within,[dh-table-old]::part(dh-select-trigger):focus-within,[dh-table]::part(dh-select-trigger):focus-within{border-color:var(--md-sys-color-primary)}[dh-select]:not([disabled]):not([variant=filled]):active::part(trigger),[dh-select][variant=outlined]:not([disabled]):active::part(trigger){transform:scale(.97)}[dh-select]:not([variant=filled])[open]::part(trigger),[dh-select][variant=outlined][open]::part(trigger){border-color:var(--md-sys-color-primary)}[dh-select][variant=filled]::part(trigger){border:none;background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}[dh-select][variant=filled]:not([disabled]):hover::part(trigger){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.08),0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-select][variant=filled]:not([disabled]):focus-within::part(trigger){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12);outline:none}[dh-select][variant=filled]:not([disabled]):active::part(trigger){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12);transform:scale(.97)}[dh-select][variant=filled][open]::part(trigger){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12)}[dh-select]::part(floating-label){color:var(--md-sys-color-primary);font-family:Roboto,system-ui,sans-serif}[dh-select][variant=filled]::part(floating-label){color:var(--md-sys-color-on-primary)}[dh-select]::part(label),[dh-settings-grid]::part(dh-select-label),[dh-setting-item]::part(dh-select-label),[dh-table-old]::part(dh-select-label),[dh-table]::part(dh-select-label){font-family:Roboto,system-ui,sans-serif;font-size:var(--dh-select-label-size, .875rem);font-weight:500;line-height:var(--dh-select-label-line-height, 1.25rem);letter-spacing:.00625rem;color:var(--md-sys-color-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}[dh-select][variant=filled]::part(label){color:var(--md-sys-color-on-primary)}[dh-select]::part(icon),[dh-settings-grid]::part(dh-select-icon),[dh-setting-item]::part(dh-select-icon),[dh-table-old]::part(dh-select-icon),[dh-table]::part(dh-select-icon){color:var(--md-sys-color-on-surface-variant);font-size:.75rem;flex-shrink:0;transform:rotate(0);transition:transform .2s cubic-bezier(.2,0,0,1)}[dh-select][open]::part(icon),[dh-settings-grid] [dh-select][open]::part(dh-select-icon),[dh-setting-item] [dh-select][open]::part(dh-select-icon),[dh-table-old] [dh-select][open]::part(dh-select-icon),[dh-table] [dh-select][open]::part(dh-select-icon){transform:rotate(180deg)}[dh-select][variant=filled]::part(icon){color:var(--md-sys-color-on-primary)}[dh-select]::part(menu),[dh-settings-grid]::part(dh-select-menu),[dh-setting-item]::part(dh-select-menu),[dh-table-old]::part(dh-select-menu),[dh-table]::part(dh-select-menu){background-color:var(--md-sys-color-surface-container);border-radius:12px;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026;margin-top:4px;overflow:hidden}[dh-select]::part(search-bar),[dh-settings-grid]::part(dh-select-search-bar),[dh-setting-item]::part(dh-select-search-bar),[dh-table-old]::part(dh-select-search-bar),[dh-table]::part(dh-select-search-bar){padding:12px;border-bottom:1px solid var(--md-sys-color-outline-variant)}[dh-select]::part(search-input-wrapper),[dh-settings-grid]::part(dh-select-search-input-wrapper),[dh-setting-item]::part(dh-select-search-input-wrapper),[dh-table-old]::part(dh-select-search-input-wrapper),[dh-table]::part(dh-select-search-input-wrapper){display:flex;align-items:center;gap:8px;background-color:var(--md-sys-color-surface-container-highest);border-radius:9999px;height:40px;padding:0 14px}[dh-select]::part(search-icon),[dh-settings-grid]::part(dh-select-search-icon),[dh-setting-item]::part(dh-select-search-icon),[dh-table-old]::part(dh-select-search-icon),[dh-table]::part(dh-select-search-icon){color:var(--md-sys-color-on-surface-variant);font-size:20px;flex-shrink:0;line-height:1}[dh-select]::part(input),[dh-settings-grid]::part(dh-select-input),[dh-setting-item]::part(dh-select-input),[dh-table-old]::part(dh-select-input),[dh-table]::part(dh-select-input){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;line-height:1.25rem;padding:0;border:none;border-bottom:none;outline:none;background:transparent;color:var(--md-sys-color-on-surface);flex:1;min-width:0;box-sizing:border-box}[dh-select]::part(content),[dh-settings-grid]::part(dh-select-content),[dh-setting-item]::part(dh-select-content),[dh-table-old]::part(dh-select-content),[dh-table]::part(dh-select-content){padding:4px 0}[dh-select]::part(item),[dh-settings-grid]::part(dh-select-item),[dh-setting-item]::part(dh-select-item),[dh-table-old]::part(dh-select-item),[dh-table]::part(dh-select-item){min-height:48px;padding:0 16px;font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface);transition:background-color .15s cubic-bezier(.2,0,0,1)}[dh-select]::part(item):hover,[dh-settings-grid]::part(dh-select-item):hover,[dh-setting-item]::part(dh-select-item):hover,[dh-table-old]::part(dh-select-item):hover,[dh-table]::part(dh-select-item):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-select]::part(item):focus,[dh-settings-grid]::part(dh-select-item):focus,[dh-setting-item]::part(dh-select-item):focus,[dh-table-old]::part(dh-select-item):focus,[dh-table]::part(dh-select-item):focus{background-color:rgba(var(--md-sys-color-primary-rgb),.12);outline:none}[dh-select]::part(item):active,[dh-settings-grid]::part(dh-select-item):active,[dh-setting-item]::part(dh-select-item):active,[dh-table-old]::part(dh-select-item):active,[dh-table]::part(dh-select-item):active{background-color:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-select]::part(selected),[dh-settings-grid]::part(dh-select-selected),[dh-setting-item]::part(dh-select-selected),[dh-table-old]::part(dh-select-selected),[dh-table]::part(dh-select-selected){background-color:rgba(var(--md-sys-color-primary-rgb),.08);color:var(--md-sys-color-primary);font-weight:500}[dh-select]::part(selected):hover,[dh-settings-grid]::part(dh-select-selected):hover,[dh-setting-item]::part(dh-select-selected):hover,[dh-table-old]::part(dh-select-selected):hover,[dh-table]::part(dh-select-selected):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.16)}[dh-select][disabled]::part(trigger),[dh-select][disabled][variant=outlined]::part(trigger){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);background-color:transparent;box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-select][disabled][variant=filled]::part(trigger){border:none;background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-select][disabled]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-select][disabled]::part(icon){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-settings-grid]::part(dh-select-trigger),[dh-setting-item]::part(dh-select-trigger){border:none;border-radius:0}[dh-settings-grid]::part(dh-select-trigger):hover,[dh-setting-item]::part(dh-select-trigger):hover{border:none;box-shadow:none}[dh-settings-grid]::part(dh-select-trigger):focus-within,[dh-setting-item]::part(dh-select-trigger):focus-within{border:none;box-shadow:none}[dh-table-old]::part(dh-select-root),[dh-table]::part(dh-select-root){height:100%}[dh-table-old]::part(dh-select-trigger),[dh-table]::part(dh-select-trigger){border:none;border-radius:0;height:100%;padding:0}[dh-table-old]::part(dh-select-trigger):hover,[dh-table]::part(dh-select-trigger):hover{border:none;box-shadow:none}[dh-table-old]::part(dh-select-trigger):focus-within,[dh-table]::part(dh-select-trigger):focus-within{border:none;box-shadow:none}[dh-mainbar] [dh-select]{width:auto;min-width:0}[dh-settings-grid],[dh-setting-item]{--dh-input-root-border: 1px solid var(--md-sys-color-outline-variant);--dh-input-root-radius: 4px;--dh-input-root-bg: var(--md-sys-color-surface);--dh-input-root-focus-shadow: inset 0 0 0 2px var(--md-sys-color-primary);--dh-input-input-padding: 0 8px;--dh-select-display: block;--dh-select-trigger-border: 1px solid var(--md-sys-color-outline-variant);--dh-select-trigger-radius: 4px;--dh-select-trigger-focus-shadow: inset 0 0 0 2px var(--md-sys-color-primary)}[dh-settings-grid]{font-family:Roboto,system-ui,sans-serif}[dh-settings-grid]::part(root){background-color:var(--md-sys-color-surface);padding:16px;border-radius:12px}[dh-settings-grid],[dh-grid-item]{--dh-grid-hover-bg: rgba(var(--md-sys-color-on-surface-rgb), .06)}[dh-grid-item]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-grid-item]::part(root),[dh-grid-item]::part(grid-item-root),[dh-settings-grid]::part(grid-item-root){margin:2px 0;border-radius:20px;transition:background-color .2s cubic-bezier(.2,0,0,1),outline-color .2s cubic-bezier(.2,0,0,1)}[dh-grid-item].selected::part(root),[dh-grid-item].selected::part(grid-item-root),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-root){outline:1px solid var(--md-sys-color-outline-variant);outline-offset:0}[dh-grid-item]::part(header),[dh-grid-item]::part(grid-item-header),[dh-settings-grid]::part(grid-item-header){padding:4px 8px 4px 4px;min-height:40px;cursor:pointer;transition:background-color .2s cubic-bezier(.2,0,0,1);position:relative}[dh-grid-item]::part(header):hover,[dh-grid-item]::part(grid-item-header):hover,[dh-settings-grid]::part(grid-item-header):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.06)}[dh-grid-item]::part(header):active,[dh-grid-item]::part(grid-item-header):active,[dh-settings-grid]::part(grid-item-header):active{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-grid-item].selected::part(header),[dh-grid-item].selected::part(grid-item-header),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-header){background-color:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);border-radius:20px 20px 4px 4px}[dh-grid-item]::part(label),[dh-grid-item]::part(grid-item-label),[dh-settings-grid]::part(grid-item-label){font-size:1rem;font-weight:500;line-height:1.5rem;letter-spacing:.009375rem;color:var(--md-sys-color-on-surface)}[dh-grid-item].selected::part(label),[dh-grid-item].selected::part(grid-item-label),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-label),[dh-grid-item].selected::part(icon),[dh-grid-item].selected::part(grid-item-icon),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-icon),[dh-grid-item].selected::part(icon-reset),[dh-grid-item].selected::part(grid-item-icon-reset),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-icon-reset){color:var(--md-sys-color-on-primary-container)}[dh-grid-item]::part(icon),[dh-grid-item]::part(grid-item-icon),[dh-settings-grid]::part(grid-item-icon){width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:var(--md-sys-color-on-surface-variant);font-size:1.125rem;margin:0;transform:rotate(0);transition:transform .28s cubic-bezier(.2,0,0,1),background-color .15s cubic-bezier(.2,0,0,1)}[dh-grid-item]:not(.selected)::part(icon),[dh-grid-item]:not(.selected)::part(grid-item-icon),[dh-settings-grid] [dh-grid-item]:not(.selected)::part(grid-item-icon){transform:rotate(0)}[dh-grid-item].selected::part(icon),[dh-grid-item].selected::part(grid-item-icon),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-icon){transform:rotate(180deg)}[dh-grid-item]::part(icon):hover,[dh-grid-item]::part(grid-item-icon):hover,[dh-settings-grid]::part(grid-item-icon):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);color:var(--md-sys-color-on-surface)}[dh-grid-item]::part(icon-reset),[dh-grid-item]::part(grid-item-icon-reset),[dh-settings-grid]::part(grid-item-icon-reset){width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;color:var(--md-sys-color-on-surface-variant);cursor:pointer;border-radius:50%;font-size:1rem;transition:background-color .15s cubic-bezier(.2,0,0,1),color .15s cubic-bezier(.2,0,0,1)}[dh-grid-item]::part(icon-reset):hover,[dh-grid-item]::part(grid-item-icon-reset):hover,[dh-settings-grid]::part(grid-item-icon-reset):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);color:var(--md-sys-color-on-surface)}[dh-settings-grid]{--dh-grid-item-content-columns: 1fr;--dh-grid-item-content-column-gap: 0;--dh-grid-item-content-padding-right: 0;--dh-grid-item-selected-header-bg: var(--md-sys-color-primary-container);--dh-grid-item-selected-color: var(--md-sys-color-on-primary-container);--dh-grid-item-selected-header-radius: 20px 20px 4px 4px;--dh-grid-item-selected-outline: 1px solid var(--md-sys-color-outline-variant);--dh-grid-item-selected-outline-offset: 0}[dh-settings-grid][multicolumn]{--dh-grid-item-content-columns: repeat(auto-fit, minmax(480px, 1fr));--dh-grid-item-content-column-gap: 16px;--dh-grid-item-content-padding-right: 8px}[dh-grid-item][open]::part(content),[dh-grid-item][open]::part(grid-item-content),[dh-settings-grid] [dh-grid-item][open]::part(grid-item-content){display:grid;grid-template-columns:var(--dh-grid-item-content-columns);column-gap:var(--dh-grid-item-content-column-gap);row-gap:0;padding:0 var(--dh-grid-item-content-padding-right) 0 0;align-items:start}[dh-setting-item][type=BitList],[dh-setting-item][type=note],[dh-setting-item][type=Path]{grid-column:1/-1}[dh-grid-item]::part(submenu),[dh-grid-item]::part(grid-item-submenu),[dh-settings-grid]::part(grid-item-submenu){padding:4px 0 4px 24px}[dh-setting-item]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-setting-item]::part(root),[dh-settings-grid]::part(setting-item-root){background-color:transparent;min-height:32px;border-radius:6px;transition:background-color .15s cubic-bezier(.2,0,0,1)}[dh-setting-item]:hover::part(root),[dh-settings-grid]::part(setting-item-root):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.06)}[dh-setting-item]::part(label),[dh-settings-grid]::part(setting-item-label){font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant);padding:8px 12px}[dh-setting-item]::part(icon),[dh-settings-grid]::part(setting-item-icon){color:var(--md-sys-color-on-surface-variant);cursor:pointer;border-radius:50%;padding:4px;transition:background-color .15s cubic-bezier(.2,0,0,1)}[dh-setting-item]::part(icon):hover,[dh-settings-grid]::part(setting-item-icon):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-setting-item]::part(input),[dh-settings-grid]::part(setting-item-input){border:none;outline:none;resize:vertical}:host([dh-setting-item]) dh-checkbox[variant=switch]::part(root){transform:scale(.8);transform-origin:right center}[dh-snackbar]::part(root){background-color:var(--md-sys-color-inverse-surface);color:var(--md-sys-color-inverse-on-surface);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}[dh-snackbar][variant=loading]::part(root){background-color:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}[dh-snackbar][variant=success]::part(root){background-color:var(--md-sys-color-success-container);color:var(--md-sys-color-on-success-container)}[dh-snackbar][variant=error]::part(root){background-color:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}[dh-snackbar][variant=info]::part(root){background-color:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}[dh-snackbar]::part(action){color:var(--md-sys-color-inverse-primary);background-color:transparent}[dh-snackbar]::part(action):hover{background-color:#ffffff14}[dh-snackbar]::part(action):focus-visible{background-color:#ffffff1f;outline:none}[dh-snackbar][variant=loading]::part(action),[dh-snackbar][variant=success]::part(action),[dh-snackbar][variant=error]::part(action),[dh-snackbar][variant=info]::part(action){color:inherit;font-weight:600}[dh-snackbar][variant=loading]::part(action):hover,[dh-snackbar][variant=success]::part(action):hover,[dh-snackbar][variant=error]::part(action):hover,[dh-snackbar][variant=info]::part(action):hover{background-color:#0000000f}[dh-snackbar]::part(message){color:inherit}[dh-tab]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-tab]::part(root){background-color:transparent;overflow:hidden}[dh-tab]::part(header){background-color:transparent;border-bottom:1px solid var(--md-sys-color-outline)}[dh-tab]::part(content){padding:12px;color:var(--md-sys-color-on-surface-variant);background-color:transparent;font-size:14px}[dh-tab]>[slot=tab-head]{position:relative;display:inline-flex;align-items:center;justify-content:center;height:48px;min-width:64px;padding:0 16px;font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25rem;letter-spacing:.00625rem;color:var(--md-sys-color-on-surface-variant);cursor:pointer;user-select:none;white-space:nowrap;border:none;background:transparent;transition:color .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-tab]>[slot=tab-head]:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;border-radius:3px 3px 0 0;background-color:var(--md-sys-color-primary);transform:scaleX(0);transition:transform .2s cubic-bezier(.2,0,0,1)}[dh-tab]>[slot=tab-head]:hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);color:var(--md-sys-color-on-surface)}[dh-tab]>[slot=tab-head]:focus-visible{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);outline:none}[dh-tab]>[slot=tab-head]:active{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-tab]>[slot=tab-head].selected{color:var(--md-sys-color-primary)}[dh-tab]>[slot=tab-head].selected:after{transform:scaleX(1)}[dh-tab]>[slot=tab-head].selected:hover{background-color:rgba(var(--md-sys-color-primary-rgb),.06);color:var(--md-sys-color-primary)}[dh-tab]>[slot=tab-head].selected:focus-visible{background-color:rgba(var(--md-sys-color-primary-rgb),.12);color:var(--md-sys-color-primary)}[dh-tab]>[slot=tab-head].selected:active{background-color:rgba(var(--md-sys-color-primary-rgb),.12);color:var(--md-sys-color-primary)}[dh-table-old],[dh-table-row-old],[dh-table-head-cell-old],[dh-table-body-cell-old]{--dh-state-hover-bg: rgba(var(--md-sys-color-on-surface-rgb), .08);--dh-state-selected-bg: var(--md-sys-color-secondary-container);--dh-border-color: var(--md-sys-color-outline-variant)}[dh-table-old],[dh-table-row-old],[dh-table-head-cell-old],[dh-table-body-cell-old]{--dh-resize-width: 4px;--dh-resize-bg: transparent;--dh-resize-hover-bg: var(--md-sys-color-primary);--dh-header-weight: 500;--dh-header-color: var(--md-sys-color-on-surface-variant);--dh-inactive-opacity: .38;--dh-error-color: var(--md-sys-color-error)}[dh-table-old]{display:flex;font-family:Roboto,system-ui,sans-serif;color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;overflow:hidden;--dh-button-height: 32px;--dh-button-min-width: auto;--dh-button-padding-inline: 8px;--dh-button-radius: 16px;--dh-button-gap: 4px;--dh-button-icon-size: 24px}[dh-table-old]::part(header){padding:8px 16px;gap:8px;align-items:center;border-bottom:1px solid var(--md-sys-color-outline-variant)}[dh-table-old]::part(scroll){scrollbar-gutter:stable}[dh-table-old]::part(content){background-color:transparent}[dh-table-row-old]{font-family:Roboto,system-ui,sans-serif;transition:background-color .2s cubic-bezier(.2,0,0,1);--dh-head-cell-padding: 0 16px;--dh-body-cell-padding: 0 16px;--dh-select-display: block;--dh-select-root-height: 100%;--dh-select-trigger-height: 100%;--dh-select-trigger-border: none;--dh-select-trigger-radius: 0;--dh-select-trigger-padding: 0;--dh-select-trigger-focus-shadow: none;--dh-select-label-size: .875rem;--dh-select-label-line-height: 1.25rem}[dh-table-head-cell-old]{font-family:Roboto,system-ui,sans-serif;padding:0 16px}[dh-table-head-cell-old]::part(label){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25rem;letter-spacing:.00625rem;color:var(--md-sys-color-on-surface-variant)}[dh-table-head-cell-old]::part(root){align-items:center;height:100%}[dh-table-head-cell-old]::part(icon){color:var(--md-sys-color-on-surface-variant);font-size:1.125rem}[dh-table-head-cell-old]::part(divider){background-color:transparent;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-table-head-cell-old]::part(divider):hover{background-color:var(--md-sys-color-outline)}[dh-table-body-cell-old]{font-family:Roboto,system-ui,sans-serif;padding:0 16px}[dh-table-body-cell-old]::part(root){height:100%}[dh-table-body-cell-old]::part(content){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--md-sys-color-on-surface)}[dh-table-old]::part(dh-button-root){height:32px;min-width:auto;padding:0 8px;border-radius:16px;gap:4px;justify-content:center}[dh-table-old]::part(dh-button-icon){width:24px;height:24px}[dh-table-old]::part(dh-filter-root){height:36px}[dh-table]{font-family:Roboto,system-ui,sans-serif;color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;overflow:clip;box-sizing:border-box}:where([dh-table],[dh-table-row]){--dh-state-selected-bg: var(--md-sys-color-secondary-container);--dh-state-copy-bg: #ffffff;--dh-border-color: var(--md-sys-color-outline-variant);--dh-header-weight: 500;--dh-header-color: var(--md-sys-color-on-surface-variant);--dh-resize-width: 4px;--dh-resize-bg: transparent;--dh-resize-hover-bg: var(--md-sys-color-primary);--dh-body-cell-bg: transparent}[dh-table]::part(header){padding:8px;border-bottom:1px solid var(--md-sys-color-outline-variant);background-color:var(--md-sys-color-surface-container);gap:4px}[dh-table-head-cell]{background-color:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-family:Roboto,system-ui,sans-serif;font-weight:500;font-size:.875rem;color:var(--md-sys-color-on-surface-variant);cursor:pointer;user-select:none}[dh-table-head-cell]::part(root){gap:4px}[dh-table-head-cell]::part(icon){color:var(--md-sys-color-on-surface-variant);font-size:.875rem}[dh-table-head-cell]::part(divider){background-color:transparent;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-table-head-cell]::part(divider):hover{background-color:var(--md-sys-color-primary)}[dh-table-body-cell]{font-family:Roboto,system-ui,sans-serif;font-size:.875rem;color:var(--md-sys-color-on-surface);height:36px;border-bottom:1px solid var(--md-sys-color-outline-variant)}[dh-table-body-cell]::part(root){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[dh-table-row].selected [dh-table-body-cell]{background-color:var(--md-sys-color-secondary-container)}[dh-tree],[dh-tree-item]{--dh-tree-hover-bg: rgba(var(--md-sys-color-on-surface-rgb), .08);--dh-tree-hover-color: var(--md-sys-color-on-surface-variant);--dh-tree-selected-bg: var(--md-sys-color-secondary-container);--dh-tree-selected-color: var(--md-sys-color-on-secondary-container);--dh-tree-selected-label-weight: 500;--dh-tree-selected-hover-shadow: none;--dh-tree-item-radius: 28px}[dh-tree]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-tree]::part(root){border-radius:16px;box-shadow:none;padding:8px 0;overflow:hidden}[dh-tree-item]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-tree-item]::part(content){display:flex;align-items:center;height:46px;padding:0 12px 0 16px;margin:2px 8px;border-radius:28px;background-color:transparent;cursor:pointer;gap:10px;box-sizing:border-box;position:relative;overflow:hidden;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-tree-item]::part(label){font-family:Roboto,system-ui,sans-serif;font-size:13.5px;font-weight:400;line-height:1.25rem;letter-spacing:.15px;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}[dh-tree-item]::part(icon-expand){color:var(--md-sys-color-on-surface-variant);font-size:16px;flex-shrink:0;transition:transform .3s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.2,0,0,1)}[dh-tree-item]::part(icon-folder){color:var(--md-sys-color-on-surface-variant);font-size:18px;flex-shrink:0}[dh-tree-item]::part(icon-file){color:var(--md-sys-color-on-surface-variant);font-size:18px;flex-shrink:0}[dh-tree-item]::part(content):hover{background-color:var(--dh-tree-hover-bg)}[dh-tree-item]:hover::part(label){color:var(--dh-tree-hover-color)}[dh-tree-item]:hover::part(icon-expand){color:var(--dh-tree-hover-color)}[dh-tree-item].selected::part(content){background-color:var(--dh-tree-selected-bg)}[dh-tree-item].selected::part(content):hover{background-color:var(--dh-tree-selected-bg);box-shadow:var(--dh-tree-selected-hover-shadow)}[dh-tree-item].selected::part(label){color:var(--dh-tree-selected-color);font-weight:var(--dh-tree-selected-label-weight)}[dh-tree-item].selected::part(icon-expand){color:var(--dh-tree-selected-color)}[dh-tree][compact] [dh-tree-item]::part(content){height:32px;padding:0 8px 0 12px;margin:1px 4px;border-radius:16px;gap:6px}[dh-tree][compact] [dh-tree-item]::part(label){font-size:12.5px}[dh-tree][compact] [dh-tree-item]::part(icon-folder),[dh-tree][compact] [dh-tree-item]::part(icon-file){font-size:16px}[dh-tree][compact] [dh-tree-item]::part(icon-expand){font-size:14px}[dh-tree][compact]::part(root){padding:4px 0}[dh-tree-item]::part(submenu){padding-left:0;margin-left:0}[dh-card]{display:block;font-family:Roboto,system-ui,sans-serif;color:var(--md-sys-color-on-surface)}[dh-card][variant=elevated]::part(root),[dh-card][variant=filled]::part(root),[dh-card][variant=outlined]::part(root),[dh-card][variant=floating]::part(root){border-radius:16px;padding:16px;overflow:hidden;position:relative;cursor:pointer;transition:background-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1),transform .2s cubic-bezier(.2,0,0,1)}[dh-card][no-click-effect]::part(root){cursor:default}[dh-card][variant=elevated]:not([no-click-effect]):active:not(:has(dh-button:active,button:active,a:active,input:active))::part(root){background-color:var(--md-sys-color-surface-container-high)}[dh-card][variant=filled]:not([no-click-effect]):active:not(:has(dh-button:active,button:active,a:active,input:active))::part(root){background-color:var(--md-sys-color-surface-container-highest)}[dh-card][variant=outlined]:not([no-click-effect]):active:not(:has(dh-button:active,button:active,a:active,input:active))::part(root){border-color:var(--md-sys-color-outline);background-color:var(--md-sys-color-surface-container)}[dh-card][variant=elevated]::part(root){border:1px solid var(--md-sys-color-outline-variant);background-color:transparent;box-shadow:none}[dh-card][variant=elevated]:not([no-click-effect]):not([no-hover-effect]):hover::part(root){background-color:var(--md-sys-color-surface-container-low)}[dh-card][variant=filled]::part(root){border:none;background-color:var(--md-sys-color-surface-container-highest);box-shadow:none}[dh-card][variant=filled]:not([no-click-effect]):not([no-hover-effect]):hover::part(root){background-color:var(--md-sys-color-surface-container-high)}[dh-card][variant=outlined]::part(root){border:1px solid var(--md-sys-color-outline-variant);background-color:transparent;box-shadow:none}[dh-card][variant=outlined]:not([no-click-effect]):not([no-hover-effect]):hover::part(root){border-color:var(--md-sys-color-outline);background-color:var(--md-sys-color-surface-container-low)}[dh-card][variant=floating]::part(root){border:none;background-color:var(--md-sys-color-surface-container-lowest);border-radius:var(--md-sys-shape-corner-medium, 12px);box-shadow:0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-card][variant=floating]:not([no-click-effect]):not([no-hover-effect]):hover::part(root){box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}[dh-card][variant=floating]:not([no-click-effect]):active:not(:has(dh-button:active,button:active,a:active,input:active))::part(root){background-color:var(--md-sys-color-surface-container-low)}[dh-card].selected::part(root),[dh-card][variant=elevated].selected::part(root),[dh-card][variant=filled].selected::part(root),[dh-card][variant=outlined].selected::part(root){outline:2px solid var(--md-sys-color-primary);outline-offset:-2px;box-shadow:none}[dh-card].selected:not([no-click-effect]):not([no-hover-effect]):hover::part(root),[dh-card][variant=elevated].selected:not([no-click-effect]):not([no-hover-effect]):hover::part(root),[dh-card][variant=filled].selected:not([no-click-effect]):not([no-hover-effect]):hover::part(root),[dh-card][variant=outlined].selected:not([no-click-effect]):not([no-hover-effect]):hover::part(root){background-color:var(--md-sys-color-surface-container-low)}[dh-card]::part(header){font-family:Roboto,system-ui,sans-serif;font-size:1rem;font-weight:500;line-height:1.5rem;letter-spacing:.009375rem;color:var(--md-sys-color-on-surface);padding-bottom:8px}[dh-card][headerstyle=primary]::part(header){background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);padding:.5rem 1rem;margin:-.5rem -.5rem .5rem;border-radius:0;font-weight:600}[dh-card]::part(content){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant);padding-bottom:8px}[dh-card]::part(actions){gap:8px;padding-top:12px}[dh-window]{display:inline-block;font-family:Roboto,system-ui,sans-serif}[dh-window]::part(root){background-color:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:28px;box-shadow:0 2px 6px #0000001f,0 8px 24px #00000029;padding:24px}[dh-window]{--dh-input-label-bg: var(--md-sys-color-surface-container)}[dh-window]::part(header){padding:0 0 16px;align-items:center}[dh-window]::part(label){font-family:Roboto,system-ui,sans-serif;font-size:1.5rem;font-weight:400;line-height:2rem;color:var(--md-sys-color-on-surface)}[dh-window]::part(trigger){display:flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;min-height:40px;border-radius:50%;padding:0;background-color:transparent;border:none;box-shadow:none;cursor:pointer;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-window]::part(trigger):hover{background-color:rgba(var(--md-sys-color-on-surface-variant-rgb, var(--md-sys-color-on-surface-rgb)),.08)}[dh-window]::part(trigger):focus-within{background-color:rgba(var(--md-sys-color-on-surface-variant-rgb, var(--md-sys-color-on-surface-rgb)),.12);outline:none}[dh-window]::part(trigger):active{background-color:rgba(var(--md-sys-color-on-surface-variant-rgb, var(--md-sys-color-on-surface-rgb)),.12)}[dh-window]::part(close-icon){font-size:24px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;opacity:.7;transition:opacity .2s cubic-bezier(.2,0,0,1);color:var(--md-sys-color-on-surface-variant)}[dh-window]:hover::part(close-icon){opacity:1}[dh-window]::part(content){padding:0;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--md-sys-color-on-surface-variant)}
`,Ba=Object.defineProperty,Va=(e,t,n,r)=>{for(var i=void 0,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=o(t,n,i)||i);return i&&Ba(t,n,i),i};Ae(!0);var Ha=class extends CustomEvent{constructor(e){super(`willupdate`,{detail:e,bubbles:!0})}},Ua=class extends CustomEvent{constructor(e){super(`updated`,{detail:e,bubbles:!0})}},W=(e=>{let t=class t extends e{constructor(...e){super(...e),this.baseOptions={registerLocalesModel:!0,updateWhileDisconnected:!1},this.domEvents={},this.mobileMode=``,this._connectedCallbackActions=[],this.furnviewLoaded=!1,this._installedStateListeners=new Set,this._builtinStateHandlers={"fv:add-class":({classes:e})=>{for(let t of e)this.classList.add(t)},"fv:remove-class":({classes:e})=>{for(let t of e)this.classList.remove(t)},"fv:toggle-class":({classes:e})=>{for(let t of e)this.classList.contains(t)?this.classList.remove(t):this.classList.add(t)},"fv:set-attribute":({attribute:e,value:t})=>{typeof t==`boolean`&&t?this.setAttribute(e,``):typeof t==`boolean`&&!t?this.removeAttribute(e):typeof t==`object`?this.setAttribute(e,JSON.stringify(t)):this.setAttribute(e,t)},"fv:toggle-attribute":({attribute:e,value:t})=>{if(typeof t==`boolean`&&t){this.toggleAttribute(e);return}let n=t;typeof t==`object`&&(n=JSON.stringify(t)),this.getAttribute(e)==n?this.removeAttribute(e):this.setAttribute(e,n)},"fv:update-visibility":()=>{this.updateVisibility()},"fv:scroll-to-top":({behavior:e})=>{this.scrollTo({top:0,left:0,behavior:e??`auto`})}},R.register(this),this.addEventListener(`keydown`,(e=>{e.key===`Enter`&&e.composedPath()[0]===this&&(e.preventDefault(),e.stopPropagation(),this.click())})),this.TriggerLocalesModelLoaded()}static{this.styles=[r(Gi),r(`${Ee}${De}${Oe}`),r(za)]}fireDOMEvents(e){let t=this.domEvents?.[e]||[];t.length>0&&t.forEach(({id:e,data:t})=>{pe.emit(e,t)})}static{this._mobile=void 0}get mobile(){return t._mobile===void 0&&(t._mobile=de.isMobileDevice()),t._mobile||!1}static{this._isIOS=void 0}get isIOS(){return t._isIOS===void 0&&(t._isIOS=/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&navigator.maxTouchPoints>1),t._isIOS}AddConnectedCallbackAction(e){this._connectedCallbackActions.push(e)}ResetConnectedCallbackAction(){this._connectedCallbackActions=[]}async TriggerConnectedCallbackActions(){for(let e of this._connectedCallbackActions)await e()}async TriggerLocalesModelLoaded(){await A.IsFileRead(),this.localesModelLoaded()}localesModelLoaded(){}connectedCallback(){this.baseOptions.registerLocalesModel&&A.Register(this),super.connectedCallback?.(),this.setAttribute(`isfv`,``),this.isIOS&&this.setAttribute(`ios`,``),this.TriggerConnectedCallbackActions(),this._installDeclaredStateHandlers(),this.fireDOMEvents(`connected`)}disconnectedCallback(){this.fireDOMEvents(`disconnected`),super.disconnectedCallback?.()}addEventListener(e,t,n){e===`click`&&this.AddConnectedCallbackAction(async()=>{this.tabIndex=0,this.role=`button`}),super.addEventListener(e,t,n)}willUpdate(e){super.willUpdate?.(e),this.dispatchEvent(new Ha(this))}updated(e){super.updated?.(e),this.dispatchEvent(new Ua(this))}async checkFurnview(){await j.IsAppReady,this.furnviewLoaded=!0}firstUpdated(e){super.firstUpdated?.(e),this.checkFurnview()}isEmpty(){let e=0;if(this.shadowRoot)for(let t of Array.from(this.shadowRoot.children))t.tagName!==`SLOT`&&e++;return this.children.length+e<=0}static{this._dimensionScale=void 0}get Unit(){switch(t._dimensionScale){case 1:return`mm`;case .1:return`cm`;case .01:return`dm`;case .001:return`m`;default:return`error`}}get DimensionScale(){return t._dimensionScale??.1}static{this._dimensionDigits=void 0}get Digits(){return t._dimensionDigits??1}isPartOfHiddenSubtree(){return R.isPartOfHiddenSubtree(this)}shouldUpdate(e){return!this.baseOptions.updateWhileDisconnected&&!this.isConnected?!1:super.shouldUpdate?.(e)??!0}async scheduleUpdate(){if(this.furnviewLoaded&&(await j.IsAppReady,t._dimensionScale??=await O.getDimensionScale(),t._dimensionDigits??=await O.getDimensionDigits()),!(!this.baseOptions.updateWhileDisconnected&&!this.isConnected))return super.scheduleUpdate?.()}updateVisibility(){if(this.visibleSelectors){let e=[],t=this.visibleSelectors.element;if(!t[`ignore-default-target-content`]){let n=(t.all?R.findAll(t.name,t.selector):[R.find(t.name,t.selector)]).filter(Boolean);e.push(...n)}for(let n of t[`additional-target-contents`]||[]){let t=R.find(n.name,n.selector);t&&e.push(t)}this.hideElement=e.every(e=>e.isEmpty())}}ListensToState(e){return this._installedStateListeners.has(e)}onState(e,t){U.RegisterStateHandler(e),this.addEventListener(e,(e=>{let n=e,r=n.detail;try{n.waitUntil(t(r?.data))}catch(e){n.waitUntil(Promise.reject(e))}})),this._installedStateListeners.add(e)}_installDeclaredStateHandlers(){for(let e of[this._builtinStateHandlers,this.stateHandlers])if(e)for(let t of Object.keys(e)){if(this._installedStateListeners.has(t))continue;let n=e[t];n&&this.onState(t,n)}}VerifyStepStageChange(){return!0}async ApplyStepStage(e){}async DetermineStepStageEnvironment(){}};return Va([T({type:Object,reflect:!0})],t.prototype,`domEvents`),Va([T({type:String,reflect:!0,attribute:`mobile-mode`})],t.prototype,`mobileMode`),Va([T({type:Object,reflect:!0,attribute:`visible-selectors`})],t.prototype,`visibleSelectors`),t})(Yi),Wa=`:host{padding-top:1rem}:host fv-labeled-input{--input-outer-width: 100%;flex:.5}:host .currency-name{display:flex;flex-direction:column;justify-content:center}:host .overview{display:flex;flex-direction:column}:host .overview .row{padding-left:1px;display:flex;flex-direction:row;gap:.5rem}:host .overview .row.space-between{justify-content:space-between}:host .overview .row:not(:first-child){padding-top:1rem}:host .overview .column{display:flex;flex-direction:column}:host .overview .column.content{flex:1}:host .overview .icon-container{display:flex}:host .overview .icon-container fv-icon{color:red}
`,Ga=Object.defineProperty,Ka=Object.getOwnPropertyDescriptor,qa=Object.getPrototypeOf,Ja=Reflect.get,Ya=(e,t,n,r)=>{for(var i=r>1?void 0:r?Ka(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&Ga(t,n,i),i},Xa=(e,t,n)=>Ja(qa(e),n,t),Za=class extends W{constructor(){super(),this.additionalPositions={articles:[]},this.currency=``,j?.on(`furnview.changePrice`,async e=>{let t=e;this.currency=t.currency})}render(){return h`
@@ -18705,5 +18705,4 @@
</div>
<slot name="after" class="${b(t)}"></slot>
`}};az.styles=[iz(az,az,`styles`)||[],i`${r(QR)}`],rz([T({type:Number,reflect:!0})],az.prototype,`current`,2),rz([T({type:Number,reflect:!0})],az.prototype,`total`,2),rz([T({type:Boolean,reflect:!0,attribute:`auto-hide-slots`})],az.prototype,`autoHideSlots`,2),rz([T({type:Object,reflect:!1})],az.prototype,`events`,2),rz([T({type:Boolean,reflect:!0,attribute:`prevent-empty-handler-selection`})],az.prototype,`preventEmptyHandlers`,2),rz([T({type:Boolean,reflect:!0,attribute:`prevent-default-handler`})],az.prototype,`preventDefaultHandlers`,2),az=rz([m(`fv-pagination`)],az);var oz=`.close-symbol{position:relative;cursor:pointer;width:100%;height:100%}.close-symbol.loading{z-index:999}.close-symbol.loading:after,.close-symbol.loading:before{background:#fff}.close-symbol:after,.close-symbol:before{content:" ";position:absolute;width:100%;height:1px;top:50%;background:var(--close-symbol-background, #888);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.close-symbol:after:hover,.close-symbol:before:hover{background:var(--close-symbol-background-hover, #333)}.close-symbol:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);transform:rotate(-45deg)}.close-symbol:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg)}:host(.active) .circle-number-symbol{border:var(--circle-number-symbol-border-active, 2px solid #000000)}.circle-number-symbol{position:relative;width:var(--circle-number-symbol-size, 30px);height:var(--circle-number-symbol-size, 30px);border-radius:50%;border:var(--circle-number-symbol-border, 2px solid white);box-shadow:var(--circle-number-symbol-box-shadow, 1px 2px 5px 0 black);background:var(--circle-number-symbol-background, var(--primary-color, red));color:var(--circle-number-symbol-color, var(--primary-text-color, black));display:flex;justify-content:center;align-items:center}.custom-symbol{position:relative;cursor:pointer;left:10px;display:flex}.custom-symbol.up:after{background-image:var(--custom-symbol-image-down, url(/webui/images/minus.svg));content:"";height:18px}.custom-symbol.down:after{background-image:var(--custom-symbol-image-down, url(/webui/images/plus.svg));content:"";height:18px}.custom-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.accordion-symbol{position:relative;cursor:pointer;left:10px;display:flex}.accordion-symbol.up:after{content:"-";font-size:xx-large;transform:scaleX(2) translate(-4px)}.accordion-symbol.down:after{content:"+";font-size:xx-large}.accordion-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.chevron-symbol{position:relative;cursor:pointer;left:10px}.chevron-symbol.up:after{content:"<"}.chevron-symbol.down:after{content:">"}.chevron-symbol:after{font:17px Consolas,monospace;color:inherit;-webkit-transform:rotate(90deg) translateX(-100%);-moz-transform:rotate(90deg) translateX(-100%);-ms-transform:rotate(90deg) translateX(-100%);transform:rotate(90deg) translate(-100%);padding:0 0 2px;position:absolute;pointer-events:none}@media(width>=980px){.only-mobile{display:none!important}}@media(width<=980px){.only-desktop{display:none!important}}.bold{font-weight:var(--global-font-weight-bold, 600)}*{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:var(--global-font, Roboto, sans-serif);font-weight:var(--global-font-weight, 400)}.container{display:flex;margin:10px 0}.container.column{flex-direction:column}.container.column.reverse{flex-direction:column-reverse}.container.row{flex-direction:row}.container.row.reverse{flex-direction:row-reverse}.fluid{flex:1}.fluid.space-after{margin-right:55px}.hidden{display:none!important}:host(.mobile-mode-hide),.mobile-mode-hide{display:none!important}.invisible{visibility:hidden!important}:host(.invisible-scroll),.invisible-scroll{overflow:hidden;margin-right:-22px}:host(.invisible-scroll)>:first-child,.invisible-scroll>:first-child{overflow-y:scroll;overflow-x:hidden;padding-right:22px;box-sizing:content-box}:host(.invisible-scroll.bottom),.invisible-scroll.bottom{overflow:hidden;margin-right:unset}:host(.invisible-scroll.bottom)>:first-child,.invisible-scroll.bottom>:first-child{overflow-x:scroll;overflow-y:hidden;padding-right:unset;padding-bottom:22px;margin-bottom:-22px;box-sizing:content-box}:host([disabled]){pointer-events:none;filter:contrast(.5) grayscale(1)}*{scrollbar-color:#5c5c5c hsla(0,0%,100%,.0039215686);scrollbar-width:thin}*[disabled][isfv]{pointer-events:none;filter:contrast(.5) grayscale(1)}::-webkit-scrollbar{height:8px;width:8px;background:#fff0}::-webkit-scrollbar-corner{background:#fff0}::-webkit-scrollbar-thumb{background:#5c5c5c;-webkit-border-radius:8px}::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:horizontal:end:increment,::-webkit-scrollbar-button:horizontal:end:decrement,::-webkit-scrollbar-button{background-color:#0000;color:#0000;border:none}:host{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--pagination-item-size, 2.25em);height:var(--pagination-item-size, 2.25em);border-radius:50%;border:var(--pagination-item-border-width, 1.5px) solid var(--pagination-item-border-color, #ccc);background-color:var(--pagination-item-background, transparent);color:var(--pagination-item-color, var(--primary-text-color, black));font-size:var(--pagination-item-font-size, .875rem);cursor:pointer;user-select:none;transition:var(--pagination-item-transition, background-color .2s ease, border-color .2s ease, color .2s ease);flex-shrink:0}:host .label{line-height:1;font-size:inherit}:host([active]){background-color:var(--pagination-item-active-background, var(--primary-color, red));border-color:var(--pagination-item-active-border-color, var(--primary-color, red));color:var(--pagination-item-active-color, var(--primary-button-text-color, white));cursor:default;pointer-events:none}:host(:hover:not([active])){border-color:var(--pagination-item-hover-border-color, var(--primary-color, red))}
-`,sz=Object.defineProperty,cz=Object.getOwnPropertyDescriptor,lz=Object.getPrototypeOf,uz=Reflect.get,dz=(e,t,n,r)=>{for(var i=r>1?void 0:r?cz(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&sz(t,n,i),i},fz=(e,t,n)=>uz(lz(e),n,t),pz=class extends W{constructor(){super(...arguments),this.value=0,this.active=!1}render(){return h`<span class="label">${this.value}</span>`}};pz.styles=[fz(pz,pz,`styles`)||[],i`${r(oz)}`],dz([T({type:Number,reflect:!0})],pz.prototype,`value`,2),dz([T({type:Boolean,reflect:!0})],pz.prototype,`active`,2),pz=dz([m(`fv-pagination-item`)],pz),window.g_dataInterface={};
-//# sourceMappingURL=dh.chunk.js.map
\ No newline at end of file
+`,sz=Object.defineProperty,cz=Object.getOwnPropertyDescriptor,lz=Object.getPrototypeOf,uz=Reflect.get,dz=(e,t,n,r)=>{for(var i=r>1?void 0:r?cz(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&sz(t,n,i),i},fz=(e,t,n)=>uz(lz(e),n,t),pz=class extends W{constructor(){super(...arguments),this.value=0,this.active=!1}render(){return h`<span class="label">${this.value}</span>`}};pz.styles=[fz(pz,pz,`styles`)||[],i`${r(oz)}`],dz([T({type:Number,reflect:!0})],pz.prototype,`value`,2),dz([T({type:Boolean,reflect:!0})],pz.prototype,`active`,2),pz=dz([m(`fv-pagination-item`)],pz),window.g_dataInterface={};
\ No newline at end of file
diff --git a/client/vendor/dh.chunk.js.map b/client/vendor/dh.chunk.js.map
deleted file mode 100644
index 03fa4bb..0000000
--- a/client/vendor/dh.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"dh.chunk.js","names":["style$E","property","__defProp$C","__getOwnPropDesc$E","__decorateClass$E","LitElement","unsafeCSS","state","customElement","style$D","__defProp$B","__getOwnPropDesc$D","__decorateClass$D","style$C","__defProp$A","__getOwnPropDesc$C","__decorateClass$C","style$B","__defProp$z","__getOwnPropDesc$B","__decorateClass$B","queryAsync","style$A","__defProp$y","__getOwnPropDesc$A","__decorateClass$A","guard","choose","mouseEvent","query","style$z","__defProp$x","__getOwnPropDesc$z","__decorateClass$z","style$y","__defProp$w","__getOwnPropDesc$y","__decorateClass$y","style$x","__defProp$v","__getOwnPropDesc$x","__decorateClass$x","classMap","ifDefined","keyboardEvent","style$w","__defProp$u","__getOwnPropDesc$w","__decorateClass$w","repeat","style$v","__defProp$t","__getOwnPropDesc$v","__decorateClass$v","style$u","__defProp$s","__getOwnPropDesc$u","__decorateClass$u","nothing","style$t","__defProp$r","__getOwnPropDesc$t","__decorateClass$t","style$s","__defProp$q","__getOwnPropDesc$s","__decorateClass$s","style$r","__getOwnPropDesc$r","__decorateClass$r","style$q","__defProp$p","__getOwnPropDesc$q","__decorateClass$q","style$p","__defProp$o","__getOwnPropDesc$p","__decorateClass$p","style$o","__defProp$n","__getOwnPropDesc$o","__decorateClass$o","style$n","__defProp$m","__getOwnPropDesc$n","__decorateClass$n","style$m","style$l","__defProp$l","__getOwnPropDesc$m","__decorateClass$m","__defProp$k","__getOwnPropDesc$l","__decorateClass$l","style$k","__defProp$j","__getOwnPropDesc$k","__getProtoOf","__reflectGet","__decorateClass$k","__superGet","style$j","__defProp$i","__getOwnPropDesc$j","__decorateClass$j","style$i","__defProp$h","__getOwnPropDesc$i","__decorateClass$i","style$h","__defProp$g","__getOwnPropDesc$h","__decorateClass$h","keyed","style$g","__defProp$f","__getOwnPropDesc$g","__decorateClass$g","style$f","__defProp$e","__getOwnPropDesc$f","__decorateClass$f","style$e","__defProp$d","__getOwnPropDesc$e","__decorateClass$e","style$d","__defProp$c","__getOwnPropDesc$d","__decorateClass$d","style$c","__defProp$b","__getOwnPropDesc$c","__decorateClass$c","style$b","__defProp$a","__getOwnPropDesc$b","__decorateClass$b","style$a","__defProp$9","__getOwnPropDesc$a","__decorateClass$a","style$9","__defProp$8","__getOwnPropDesc$9","__decorateClass$9","style$8","__defProp$7","__getOwnPropDesc$8","__decorateClass$8","style$7","__defProp$6","__getOwnPropDesc$7","__decorateClass$7","style$6","__getOwnPropDesc$6","__decorateClass$6","style$5","__defProp$5","__getOwnPropDesc$5","__decorateClass$5","style$4","__defProp$4","__getOwnPropDesc$4","__decorateClass$4","style$3","__defProp$3","__getOwnPropDesc$3","__decorateClass$3","style$2","rgbToHsv","__defProp$2","__getOwnPropDesc$2","__decorateClass$2","style$1","__defProp$1","__getOwnPropDesc$1","__decorateClass$1","style","__defProp","__getOwnPropDesc","__decorateClass","__decorateClass","groups","elementInfo","nameToUse","names","CardFetchMethod","FilterSelectionStrategy","CardContainerUpdate","CardContainerSpecialInteractionContext","CardContainerEvents","CardDataUpdateEvent","CardDataServiceAction","data","eCatalogFilterState","DragType","ContextFilterStrategy","ZoomType","Perspectives","targets","style","__superGet","event","convertDecimalNCRtoUTF8","context","component","property","options","query","html","h","a","c","d","g","b","DEFAULT_DEFINES","e","PPTheme","PPMode","PTThemeIndexClass","s","value","range","UpdatedEvent","unittxt","existing","result","resultMap","FilterSelectionData","doesNotInclude","components","params","onSelectionEvents","elementData_","target","name","pieces","ZoomStyle","RenderMode","items","EasingType","EasingDirection","dataValue","category","button","buttons","currentOptionsCount"],"sources":["../../../../node_modules/.pnpm/@dh-software+furnview-icons@1.0.19/node_modules/@dh-software/furnview-icons/dist/furnview-icons.mjs","../../../../node_modules/.pnpm/@dh-software+dh-components@_b198ffda93d49d78691259e4fd4a2a30/node_modules/@dh-software/dh-components/dist/dh-components.mjs","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+env@0.0.1/node_modules/@dh-software/env/dist/env.mjs","../../../../../../furnview-components/src/utils/logging.ts","../../../../../../furnview-components/src/utils/component.service.ts","../../../../../../furnview-components/src/components/standard/base/hide.base.ts","../../../../../../furnview-components/src/models/event-handler/component-state-event.ts","../../../../../../furnview-components/src/utils/configurator-api.data.service.ts","../../../../../../furnview-components/src/utils/catalog.service.ts","../../../../../../furnview-components/src/utils/manu-prog.service.ts","../../../../../../furnview-components/src/utils/util.service.ts","../../../../../../furnview-components/src/utils/cloud-id.service.ts","../../../../../../furnview-components/src/utils/session-storage.service.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-containers-shared-data.ts","../../../../../../furnview-components/src/models/card-container/card-container-definitions.ts","../../../../../../furnview-components/src/models/card-container/card-container-events.ts","../../../../../../furnview-components/src/models/card-container/card-data-service-update-events.ts","../../../../../../furnview-components/src/utils/card.data.service.ts","../../../../../../furnview-components/src/utils/card-container-event.service.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/catalog.types.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/drag-drop.types.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/placer.types.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/property-context.types.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/zoom.types.ts","../../../../../../furnview-components/src/models/perspective/search-perspectives.ts","../../../../../../furnview-components/src/models/event-handler/global-events.ts","../../../../../../furnview-components/src/utils/event.handler.service.ts","../../../../../../furnview-components/src/components/standard/base/base.component.ts","../../../../../../furnview-components/src/components/additional-positions/additonal-positons.ts","../../../../../../furnview-components/src/components/standard/dropdown/dropdown-item/dropdown-item.component.ts","../../../../../../furnview-components/src/components/standard/dropdown/dropdown/dropdown.component.ts","../../../../../../furnview-components/src/utils/image.service.ts","../../../../../../furnview-components/src/components/catalog/article-item/article-item.component.ts","../../../../../../furnview-components/src/components/catalog/article-list/article-list.component.ts","../../../../../../furnview-components/src/components/catalog/fitting-item/fitting-item.component.ts","../../../../../../furnview-components/src/components/catalog/proptrans-item/proptrans-item.component.ts","../../../../../../furnview-components/src/components/catalog/shoppingcart-item/shoppingcart-item.component.ts","../../../../../../furnview-components/src/utils/style.helper.ts","../../../../../../furnview-components/src/components/standard/button/button.component.ts","../../../../../../furnview-components/src/components/standard/button/confirming-button.component.ts","../../../../../../furnview-components/src/components/standard/base/step-child.component.ts","../../../../../../furnview-components/src/models/event-handler/event.handler.model.ts","../../../../../../furnview-components/src/components/catalog/equipment-list/equipment-list.component.ts","../../../../../../furnview-components/src/components/catalog-selector/catalog-selector.component.ts","../../../../../../furnview-components/src/components/catalog-selector/catalog-selector-option.component.ts","../../../../../../furnview-components/src/utils/price-format.service.ts","../../../../../../furnview-components/src/components/price/total-price/total-price.component.ts","../../../../../../furnview-components/src/components/price/price-summary/price-summary.component.ts","../../../../../../furnview-components/src/utils/scene-helper.service.ts","../../../../../../furnview-components/src/components/price/price-item-base/base-price-item.ts","../../../../../../furnview-components/src/components/price/price-item/price-item.component.ts","../../../../../../furnview-components/src/components/price/price-item-2/price-item-2.component.ts","../../../../../../furnview-components/src/components/price/price-item-3/price-item-3.component.ts","../../../../../../furnview-components/src/components/price/price-item-4/price-item-4.component.ts","../../../../../../furnview-components/src/components/price/price-item-5/price-item-5.component.ts","../../../../../../furnview-components/src/components/price/price-item-6/price-item-6.component.ts","../../../../../../furnview-components/src/utils/dimension-helper.class.ts","../../../../../../furnview-components/src/components/price/price-item-fp/price-item-fp.component.ts","../../../../../../furnview-components/src/components/price/price-list/price-list.component.ts","../../../../../../furnview-components/src/components/price/price-level-accordion/price-level-accordion.component.ts","../../../../../../furnview-components/src/components/price/price-level-accordion/price-accordion-item.ts","../../../../../../furnview-components/src/components/price/price-dimensions-item/price-dimensions-item.component.ts","../../../../../../furnview-components/src/components/standard/dimmer/dimmer.component.ts","../../../../../../furnview-components/src/components/standard/loading/loading.component.ts","../../../../../../furnview-components/src/utils/key-frame-effect.service.ts","../../../../../../furnview-components/src/components/standard/modal/modal.component.ts","../../../../../../furnview-components/src/components/standard/base/mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/information/information.mask.component.ts","../../../../../../furnview-components/src/components/price/price-overview/price-overview.component.ts","../../../../../../furnview-components/src/components/price/price-display/price-display.component.ts","../../../../../../furnview-components/src/components/standard/arrange/flex-container/flex-container.component.ts","../../../../../../furnview-components/src/components/standard/tab-control/tab-control.component.ts","../../../../../../furnview-components/src/components/standard/label/label.component.ts","../../../../../../furnview-components/src/components/standard/dimension-change/dimension-change.component.ts","../../../../../../furnview-components/src/components/standard/input/basic-slider/basic.slider.component.ts","../../../../../../furnview-components/src/components/standard/input/contrained-input/constrained.input.component.ts","../../../../../../furnview-components/src/components/standard/input/base/base-input.ts","../../../../../../furnview-components/src/components/standard/input/input/input.component.ts","../../../../../../furnview-components/src/components/standard/input/labeled-input/labeled-input.component.ts","../../../../../../furnview-components/src/components/standard/input/range-slider/range.slider.input.component.ts","../../../../../../furnview-components/src/components/standard/input/range-slider/shared.range.slider.input.component.ts","../../../../../../furnview-components/src/components/standard/input/slider/slider.component.ts","../../../../../../furnview-components/src/components/standard/input/validating-input/validating-input.component.ts","../../../../../../furnview-components/src/components/standard/text-box/text-box.component.ts","../../../../../../furnview-components/src/components/standard/list/list-box.component.ts","../../../../../../furnview-components/src/components/standard/icon/icon.component.ts","../../../../../../furnview-components/src/components/dealer/dealer.component.ts","../../../../../../furnview-components/src/components/standard/modal-step/modal.step.component.ts","../../../../../../furnview-components/src/components/standard/modal/message/message.component.ts","../../../../../../furnview-components/src/components/dealer/search-dealer/search-dealer.component.ts","../../../../../../furnview-components/src/components/standard/checkbox/checkbox.component.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+request-config_d6f3a00eeafef8db17d0b9b347e93803/node_modules/@dh-software/request-configurator-ui/dist/request-configurator-ui.mjs","../../../../../../furnview-components/src/components/dealer/request/request.component.ts","../../../../../../furnview-components/src/components/standard/loading/loader/dot-flashing/dot-flashing-loader.component.ts","../../../../../../furnview-components/src/components/standard/loading/controller/clock.controller.ts","../../../../../../furnview-components/src/utils/defer-helper.class.ts","../../../../../../furnview-components/src/components/standard/loading/modal/loading-modal.component.ts","../../../../../../furnview-components/src/components/standard/loading/loader/rotating-dots/rotating-dots-loader.component.ts","../../../../../../furnview-components/src/components/standard/loading/form-loading-modal/configurator-form-loading.component.ts","../../../../../../furnview-components/src/components/standard/loading/progress/progress.component.ts","../../../../../../furnview-components/src/components/standard/popup/popup.component.ts","../../../../../../furnview-components/src/components/standard/popup/popup-closer.component.ts","../../../../../../furnview-components/src/components/hr/hr-item.component.ts","../../../../../../furnview-components/src/models/hr/hr-theme.model.ts","../../../../../../furnview-components/src/components/hr/hr-list.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/pp-container.component.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/furnview_theme/pt-property-item.component.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/furnview_theme/pt-property-group.component.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/furnview_theme/pt-theme.index.ts","../../../../../../furnview-components/src/models/color-picker/color-picker.model.ts","../../../../../../furnview-components/src/utils/transition.helper.ts","../../../../../../furnview-components/src/components/colorpicker/ral/ral-picker.component.ts","../../../../../../furnview-components/src/components/colorpicker/ncs/ncs-picker.component.ts","../../../../../../furnview-components/src/components/colorpicker/sikkens/sikkens-picker.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/furnview_theme/pp-property-value.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/furnview_theme/pp-property-values.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/furnview_theme/pp-property.component.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/combine_theme/pt-theme.index.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/pt-container.component.ts","../../../../../../furnview-components/src/components/language-picker/language-picker.component.ts","../../../../../../furnview-components/src/components/datepicker/datepicker.component.ts","../../../../../../furnview-components/src/components/delivery-datepicker/delivery-datepicker.component.ts","../../../../../../furnview-components/src/models/ar/ar-upload.model.ts","../../../../../../furnview-components/src/components/ar/ar-modal.component.ts","../../../../../../furnview-components/src/components/standard/modal/info-modal.component.ts","../../../../../../furnview-components/src/components/standard/modal/option-selection-modal.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/input-mask/input.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/restart-check/restart-check.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/open-cloud-id/open-cloud-id.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/share-link-per-mail/share-link-per-mail.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/request-appointment/request-appointment.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/select-property/select-property.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/select-article/select-article.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/perspective-control/perspective-control.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/reset-modal/reset.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/step-based/step-based.mask.component.ts","../../../../../../furnview-components/src/components/standard/controllers/SlotHideStateController.ts","../../../../../../furnview-components/src/components/standard/modal/masks/synchronised-hide-state/synchronised-hide-state-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/program-selection-confirmation/program-selection-confirmation.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/container-mask/container-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/messageNoCalc/messageNoCalc.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/iwoFurn/iwoFurn.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/save-dialog/save-dialog.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/send-offer-request/send-offer-request-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/file-upload-mask/file-upload-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/password-mask/password-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/dimension-change/dimension-change.mask.component.ts","../../../../../../furnview-components/src/components/action-buttons/base/base-action-button.ts","../../../../../../furnview-components/src/components/action-buttons/show-on-target-scrollable/show-on-target-scrollable-action-button.ts","../../../../../../furnview-components/src/components/standard/base/async.base.component.ts","../../../../../../furnview-components/src/components/standard/cards/base/base.card.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-container-filter-selection.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-container-settings.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/internal-card-container-list.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-element-creator.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-container-states.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-container-additional-data.ts","../../../../../../furnview-components/src/components/standard/card-container/base/base-card-container.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/card-container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/root-level-selection-card-container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/card-accordion-container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/card-container-slider-filter.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/card-container-add-dialog.container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/controls/card-container-back-button.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/level-pages-card-container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/multi-level-card-container.component.ts","../../../../../../furnview-components/src/components/standard/informationals/landscape-info.component.ts","../../../../../../furnview-components/src/components/standard/informationals/catalog-information.component.ts","../../../../../../furnview-components/src/components/standard/informationals/dimension-information.component.ts","../../../../../../furnview-components/src/components/standard/informationals/dimension-label.component.ts","../../../../../../furnview-components/src/components/standard/informationals/dimensions-information.component.ts","../../../../../../furnview-components/src/components/standard/informationals/dimension-inputs.component.ts","../../../../../../furnview-components/src/components/standard/card-container/management/card-container-filter-manager.component.ts","../../../../../../furnview-components/src/components/standard/card-container/management/card-container-input-manager.component.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-container-view.model.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-container-view.filters.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-container-view.slide.controller.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-container-view.component.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-magnifier-view.component.ts","../../../../../../furnview-components/src/components/standard/cards/basic.card/card.component.ts","../../../../../../furnview-components/src/components/standard/cards/article-card/article-card.component.ts","../../../../../../furnview-components/src/components/standard/cards/color-picker-card/color-picker-card.component.ts","../../../../../../furnview-components/src/utils/card-app-connections/base.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/old-generated-catalog-base.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/kata-page-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/articles-by-categories.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/articles-by-categories-configurator-form.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/articles-by-categories-dimension.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/articles-by-categories-category-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/base-property-card-app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-value-selection.card.app.connection.ts","../../../../../../furnview-components/src/components/standard/steps/steps.component.ts","../../../../../../furnview-components/src/utils/program-selection.helper.ts","../../../../../../furnview-components/src/utils/card-app-connections/program-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/placer-group-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/landing-page.service.ts","../../../../../../furnview-components/src/utils/card-app-connections/landing-page.card.app.connection.ts","../../../../../../furnview-components/src/utils/media.service.ts","../../../../../../furnview-components/src/utils/card-app-connections/material-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/cards.from.configuration.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-context-selection.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-context-value-selection.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-ui-group-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/wall-elements.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/wall-selection.card.app.connection.ts","../../../../../../furnview-components/src/components/configurator/configurator.form.base.ts","../../../../../../furnview-components/src/utils/card-app-connections/configurator-form-filter.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/cross-article-host-selection.card.app.connection.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-selection-program.component.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-selection-level.component.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-selection.component.ts","../../../../../../furnview-components/src/components/standard/arrange/page/page-controller.component.ts","../../../../../../furnview-components/src/components/standard/image/image.component.ts","../../../../../../furnview-components/src/components/standard/image/logo.component.ts","../../../../../../furnview-components/src/components/standard/image/program-image.component.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-information.component.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-information-img.component.ts","../../../../../../furnview-components/src/components/configurator/configurator.form.component.ts","../../../../../../furnview-components/src/components/configurator/configurator.form.page.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.base.element.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.button.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.checkbox.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.list.base.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.images.aligned.inputs.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.list.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.number.input.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.option.selection.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.option.selection.dropdown.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.range.slider.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.shared.range.slider.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.text.input.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-internal-elements/configurator.form.wrapper.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-enable-disable-button.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-option-selection.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-display-option-selection.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-value-input.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-ui.component.ts","../../../../../../furnview-components/src/components/webcab/implementations/cabinets-toggle/webcab-ui-cabinets-toggle.ts","../../../../../../furnview-components/src/components/webcab/additional-components/webcab-overview.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/containers/toolbar.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/containers/toggle-toolbar.component.ts","../../../../../../furnview-components/src/components/standard/embedded-svg-icon/svg-icon.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/buttons/toolbar.button.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/buttons/hr-mode.toolbar.button.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/buttons/animation.toolbar.button.component.ts","../../../../../../furnview-components/src/components/standard/step/step.component.ts","../../../../../../furnview-components/src/components/standard/step/icon.step.component.ts","../../../../../../furnview-components/src/components/standard/pill-steps/pill-step.component.ts","../../../../../../furnview-components/src/components/standard/info_button/info.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/accordion_theme/image/titled-image.component.ts","../../../../../../furnview-components/src/components/standard/accordion/accordion-item/accordion-item.component.ts","../../../../../../furnview-components/src/components/standard/accordion/accordion/accordion.component.ts","../../../../../../furnview-components/src/components/standard/accordion/accordion-layer/accordion-layer.component.ts","../../../../../../furnview-components/src/components/standard/accordion/accordion-content/accordion-content.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/accordion_theme/image/property-list.component.ts","../../../../../../furnview-components/src/components/standard/radio/radio.component.ts","../../../../../../furnview-components/src/components/properties/pp-layer/pp-layer.component.ts","../../../../../../furnview-components/src/components/properties/pp-layer/base-accordion.theme.ts","../../../../../../furnview-components/src/components/properties/prop-context/accordion-theme/pp-context-accordion-layer.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/furnview_theme/pp-furnview-accordion-layer.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/webui_theme/pp-menu.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/webui_theme/pp-item.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/webui_theme/pp-items.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/webui_theme/pp-webui-accordion-layer.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/combine_theme/pp-combine-accordion-layer.component.ts","../../../../../../furnview-components/src/components/standard/color/single-color.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/finish-params/finish-params-container.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/accordion_theme/pp-accordion-layer.component.ts","../../../../../../furnview-components/src/components/notice/notice-utils.ts","../../../../../../furnview-components/src/components/standard/property-info/property-info.component.ts","../../../../../../furnview-components/src/components/standard/separator/separator.component.ts","../../../../../../furnview-components/src/components/standard/menu/dockable/dockable-menu.component.ts","../../../../../../furnview-components/src/components/finish/modal/finish-modal.component.ts","../../../../../../furnview-components/src/components/notice/modal/notice-accordion-item.component.ts","../../../../../../furnview-components/src/components/notice/notice-carousel.components.ts","../../../../../../furnview-components/src/utils/local-storage.service.ts","../../../../../../furnview-components/src/components/notice/modal/notice-table-row.component.ts","../../../../../../furnview-components/src/utils/notice-storage.service.ts","../../../../../../furnview-components/src/components/notice/modal/notice-list.component.ts","../../../../../../furnview-components/src/components/notice/modal/notice-list-item.component.ts","../../../../../../furnview-components/src/components/customer/request-modal/request-modal.component.ts","../../../../../../furnview-components/src/components/cloud/cloud-id-display/cloud-id-display.component.ts","../../../../../../furnview-components/src/utils/animation-easing.service.ts","../../../../../../furnview-components/src/components/standard/arrange/animated/animated.container.ts","../../../../../../furnview-components/src/components/standard/arrange/container/container.component.ts","../../../../../../furnview-components/src/components/standard/arrange/grid-container/grid-container.component.ts","../../../../../../furnview-components/src/components/standard/arrange/image-container/image.aligned.container.component.ts","../../../../../../furnview-components/src/components/standard/arrange/layout/layout.component.ts","../../../../../../furnview-components/src/components/standard/arrange/scene-button-page/scene-button-page.component.ts","../../../../../../furnview-components/src/components/standard/arrange/container/scroll.aware.container.component.ts","../../../../../../furnview-components/src/components/standard/control/cam-control-overlay/cam-control-overlay.component.ts","../../../../../../furnview-components/src/components/configurable-icons/arrow.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/filtered-catalog.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/filtered-catalog-toggle-button.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/catalog-options/base/base-filtered-catalog-option.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/catalog-options/implementations/labled-img-option/filtered-catalog-labled-img-option.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/filtered-catalog-filter-buttons.component.ts","../../../../../../furnview-components/src/components/pdf-viewer/pdf-viewer.components.ts","../../../../../../furnview-components/src/components/extension/cloud-id/cloud-id.component.ts","../../../../../../furnview-components/src/components/extension/download/download.component.ts","../../../../../../furnview-components/src/components/legend/legend.component.ts","../../../../../../furnview-components/src/components/external-widget/external-widget.component.ts","../../../../../../furnview-components/src/components/standard/info/manu-prog-info.component.ts","../../../../../../furnview-components/src/components/standard/select/select.component.ts","../../../../../../furnview-components/src/components/standard/select/select-option.component.ts","../../../../../../furnview-components/src/components/webviewer/webviewer.component.ts","../../../../../../furnview-components/src/components/pagination/pagination/pagination.component.ts","../../../../../../furnview-components/src/components/pagination/pagination-item/pagination-item.component.ts","../../../../../../furnview-components/src/index.ts"],"sourcesContent":["var Fonts = \"@font-face{font-family:furnview-icons-simple;src:url(data:font/woff2;base64,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) format(\\\"woff2\\\"),url(data:font/woff;base64,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) format(\\\"woff\\\"),url(data:font/ttf;base64,AAEAAAAQAQAABAAARkZUTaU+X3YAAH84AAAAHEdERUYAxgAdAAB/FAAAACRPUy8yVpVkEAAAAYgAAABWY21hcHqxrLgAAAQcAAABemN2dCAAqwX/AAAIMAAAAAhmcGdtD7QvpwAABZgAAAJlZ2FzcP//AAMAAH8MAAAACGdseWY9/MU4AAAJYAAAbBBoZWFkKWLZQQAAAQwAAAA2aGhlYQk6BjIAAAFEAAAAJGhtdHg9zxA4AAAB4AAAAjxsb2NhINgGLAAACDgAAAEmbWF4cAG/AoMAAAFoAAAAIG5hbWUTvGKyAAB1cAAAAtBwb3N0buC71gAAeEAAAAbJcHJlcLDyKxQAAAgAAAAALgABAAAAAQAAXdfoi18PPPUACwQAAAAAAN8XeeEAAAAA5lAaY/7y/4oF6gR2AAAACAACAAAAAAAAAAEAAAQAAAAAXAav/vL+9gXqAAEAAAAAAAAAAAAAAAAAAACMAAEAAACSAkkAFQAAAAAAAgABAAoAFgAAAQAALgAAAAAAAQQoAZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAACEA9QQAAAAAXAQBAAAAAAABAAAAAAAAAXYAIgAAAAABVQAABAAAAAQAADcEAAAABAAAAAQAAAAEAAAgBAAAIgQAACIEAABoBAAAAAQAAAAEAAA3BAAAAAQAAJEGrwDFBAAAAAQA/9MEJAAjBAAAAAQAAAAEAABuBAAAAAQAAAAEAADABAMAKAQKACkEAAAABJ7/ZQQAAAAEAAAABAAACARmAEcEAAAzBAAAbAQAAAAEAAAABAAAAAQAAAAEAAAABDP/5wRm/+MEM//1BAAAAAQAAAIEAAAqBDP/6wQAAAAEAAAHBDP/6AQA//kEAP/dBAD/8gQAADAEAAAEBAAAIAUwAKwEAP/7BAAAZgQAAC8EAACtBAD/qwTMAEwEAAAABAD/SAQAADYEAAAlBAD/swQAAAIEAP+rBAD/pwQAADMEAP/lBAD/sgTMAEwEAAC+BAD/zQQA/5oEAAAKBAD+8wQA/64EZgEqBAD/ywSY/9oEAADEBAD/6gQA/5oEAAAABAAAAAQAAAAEAP/+BAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAD//wQAAAAFIgCkBVEAngVNAKgDyAAOBJsAHgSAAHoEgP/2BZYAhAX1AKsGCwCfBU4AnwQAAAIEAAAABAAAOQQAAAIEAAACBAAAAgQAAOoEAABdBAAARQQAAAAEAACrBAAAqwQAALQEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAVQRMAGwETAA7BGcAMASAACoEAAAABGIANQQAAIEABQBuAAAAAAAeABUAAAADAAAAAwAAABwAAQAAAAAAdAADAAEAAAAcAAQAWAAAABAAEAADAAAAIQA3AHQAfgCsAOUA9f//AAAAIQAwAEEAdgCpAK4A5////+L/1P/L/8oAAP+d/5wAAQAAAAAAAAAAAAgAAAAAAAAASQAAAAAASgAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAAAAAQFBgcICQoLAAAAAAAAAAAADA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+PwBAQUJDREVGR0gAYWJkZm5zeX59f4GAgoOFhIaHiYiKi42PjpAAkQAAAAAATQAAAABTfEtJAFEAAGN1AE4AAABSAAAAAAAAVwAAAFwASgAAAAAAWAAAXWByAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABfZ15oZWprbGlwcQBvd3h2AAAATAAAAFUAAAAAALAALLAAE0uwKlBYsEp2WbAAIz8YsAYrWD1ZS7AqUFh9WSDUsAETLhgtsAEsINqwDCstsAIsS1JYRSNZIS2wAyxpGCCwQFBYIbBAWS2wBCywBitYISMheljdG81ZG0tSWFj9G+1ZGyMhsAUrWLBGdllY3RvNWVlZGC2wBSwNXFotsAYssSIBiFBYsCCIXFwbsABZLbAHLLEkAYhQWLBAiFxcG7AAWS2wCCwSESA5Ly2wCSwgfbAGK1jEG81ZILADJUkjILAEJkqwAFBYimWKYSCwAFBYOBshIVkbiophILAAUlg4GyEhWVkYLbAKLLAGK1ghEBsQIVktsAssINKwDCstsAwsIC+wBytcWCAgRyNGYWogWCBkYjgbISFZGyFZLbANLBIRICA5LyCKIEeKRmEjiiCKI0qwAFBYI7AAUliwQDgbIVkbI7AAUFiwQGU4GyFZWS2wDiywBitYPdYYISEbINaKS1JYIIojSSCwAFVYOBshIVkbISFZWS2wDywjINYgL7AHK1xYIyBYS1MbIbABWViKsAQmSSOKIyCKSYojYTgbISEhIVkbISEhISFZLbAQLCDasBIrLbARLCDSsBIrLbASLCAvsAcrXFggIEcjRmFqiiBHI0YjYWpgIFggZGI4GyEhWRshIVktsBMsIIogiocgsAMlSmQjigewIFBYPBvAWS2wFCyzAEABQEJCAUu4EABjAEu4EABjIIogilVYIIogilJYI2IgsAAjQhtiILABI0JZILBAUliyACAAQ2NCsgEgAUNjQrAgY7AZZRwhWRshIVktsBUssAFDYyOwAENjIy0AAAC4Af+FsAGNAEuwCFBYsQEBjlmxRgYrWCGwEFlLsBRSWCGwgFkdsAYrXFhZsBQrAAAAiQN3ACICiAAAACoAKgAqAIIAqADEAZIB2gHoAhACOgJ+AsIDPgN0A/AEhgUaBVQFvAaSBv4HhgecB/AIWAiKCMoJCglACa4J3AocCmwK2At8DAAMRgy4DPYNEA1uDlAO8g9yD7QQKhMYE5wT0hQyFIAU2hXIFfIWWBaiFvIXABeMF8oYWhh4GOoZAhlOGYQZthogGvYbghvEHBAdEB2SHfAeCB5CHrYfBiAgIQwiDCKGI0ojhCWIJb4l8iZIJvAnTCeUJ+YoUijAKSYpiCneKh4qZCp4KogqlirSK0wrgivQK+QsACwULCQsxC0OLUwtjC3cLgYuPi5yLqou3C8ELywvtDBaMOwxYjHuMgIyIjJ0MvYzKDPEM+g0PDRwNKw06DUaNUo1ZDWKNco2CAAAAAIAIgAAATICqgADAAcALrEBAC88sgcEAu0ysQYF3DyyAwIC7TIAsQMALzyyBQQC7TKyBwYD/DyyAQIC7TIzESERJzMRIyIBEO7MzAKq/VYiAmYAAAUAAAAABAAEAAAAAA8AJwAzADcAAAECIDc2NTQnJiMiBwYVFBcEIi4CNTQ+ATc2MzIWFxYXFhUUBgcGBwIGIiY1NDYXMhcWFQMRMxECALQBan5/fn63tIB/fwGe1LqMUFCMXV1rarpFRSkoUEZFXZ4YJBgYEhIMDE1NAgD+TX9/trV+f35+t7SAzFCMumtquoopKFBGRV1da2q6RUYoAoEYGBESGgEMDRL+RQEz/s0AAgA3AAADyQQAAAgAEQAANzMRIREzEQkBAxEJAREhESMRjdUBONX+kf6NVgHJAcn+gI1VAWL+ngIrARX+6/2AAqsBVf6r/VUBYv6eAAEAAACqBAADVgALAAAlCQEXByE1MxEhFwcBVf6rAVU87wMJVfym6zyrAVUBVTvv8/636jwAAAAABgAAABkEAwPpACQAUQBdAIIAigCSAAABIiY1NCYjIiY+ATMyNjU0Nh4BFRQWMzIWDgEjIgYVFAciJyYjASImNTQmIyIuAT4CMzI2NTQ+AR4DFRQWMzIeAQ4DIyIGFRQnIicmIwMeARc+ATcuAScOAQEiJjU0JiMiJj4BMzI2NTQ2HgEVFBYzMhYOASMiBhUUBwYnJiMnFhc2NyYnBgMWFzY3JicGAq8GC2pOIxYSHglNawkLCmpNJBQSHQlNagMCBAUD/swGC6N2JiYBEBwaB3ajBAUGBwUDo3cgJQcHFRcVBHejAwEEBgPERmwWF2xGRmwXFmwCPgYLWD0cEw0YCj1YCQwJWTwcEg4XCTxZAwEDCAJaQhglNUMXJc5TJCFXVCQmAhULBk1nCQsJa00jFhEeCk1rCQsJZ00xAQ4T/kALBnenBQYIBwSjdyAlBwcVFxUEd6MDBQcGBQSkek0BGCMBQBZsRkZsFhdrR0dr/p0KBzxZCQsKWD0cEw0YCj1YCgsJWTwnAgEFFLMlNUIYJDVCAdwqTlAoKk1RAAUAAAAABAAEAAAFABkAHQAnACkAAAEhJwcnDwEiJyY1ETQ3NjMhMhcWFREUBwYjJSERIQMiJyY1ETMRIRUBEQFVAfSjhFV4bxscFRUQJwLNGx0VFRAo/TMCzf0zmRsdFU0DGf2AAXzZr2+e3RUQJwLNGx0VFRAo/TMbHBVMAs38TRUQKAMZ/OdNA7P9MwAAAAEAIADyA+AC0AACAAAlASECAP4gA8DyAd4AAAACACIAMAPeA+wACAAWAAAJATcXETMRNxcBIiY9ATMVITUzFRQGIwIA/uBAs1qzQP1cJDZaAwhaNiQBFQEgQLMCKv3Ws0D9+zYk1dXV1SQ2AAIAIgAmA94D4gAIABYAAAERBycJAQcnEQUiJj0BMxUhNTMVFAYjAdOzQAEgASBAs/5PJDZaAwhaNiQBCwIqs0ABIP7gQLP91uU2JNXV1dUkNgAAAAUAaABQA74DpgAHABcAHwAgACgAAAAyNjQmIgYUEi4CND4CMh4CFA4CJiA2ECYgBhAlFgYiJjQ2MhYB13dUU3hUN5tzRERzm7Kbc0REc5vwAS3V1f7T1AFrz3msenqseQFrVHdUU3j+kURzm7Kbc0REc5uym3NEQNQBLdXV/tOXVnp6rHl5AAAGAAAAAAQABAAAEwAXABsAHwAiACUAABMhMh8BFhcRFAYjISIvASY1ETQ2HwEhJwURFxEXESERHwEHATMHJQIdDAq+DgEWD/21FAuQBhZnSQHPYP4USUkCAJOSkv4A224EAAeTCxL9tw8WEdsJCwIADxZJSUk0/mNvAcMV/gACAJNtbv7bkgAACAAAAB8EAAPiAAUAFwAjACkAMgA4AEcAUQAAETMVMxUjBSIrAS4BJxE+ATchHgEXEQ4BAQYHERYXITY3ESYnFzAXBzU0ARQGIiY0NjIWJTAnNxUUASIjJyMVIzUzMhYVFAYHJzI7ATY3LgEHIzNxpALDGKjAKjcBATcqAYApNwEBN/5XBQEBBQGABAEBBKqOjv5QGicaGica/taOjgNtHBwuEjJDJCwRD0EBBwgdAQESCxABpLgzmgE+LgLpLj0CAj0u/RcuPgNbAQX9FwYBAQYC6QUBQGpqal3+0hMaGicaGlNqampd/kdaWuonIRMfCSABGhALAQAFADcAAAPJBAAAEQAVABkAHQAfAAAzIiY1ESM1ITUhFSEVIxEUBiMRIREhJREzETMRMxEBEckjMzwBDQF4AQ08MyP9kgJu/idVmlX+JzMiAytVKytV/NUiMwOA/NV8Ajj9yAI4/cgCr/zVAAAIAAAAAAQABAAAGwAfACMALQA3AEEASwBPAAAtASYnJjURNDY3JTYyFwUWFxYVERQHBgcFBiInNxEnEQU3EQcBNTQ3NjsBFSMVEyMiJyY9ATMVMwU1MzUzFRQHBiMRNSM1MzIXFh0BBTcnBwHV/ucUBggREQEZDTMNARoUBQkJDBL+4w0zDQ30AUD09P3aFRYipqamphsdFU2mAhqmTRUWIqamGx0V/gDz8/Nvpg4QDRoBSBoZEacICKcNEA0a/rgaDRIMpgkJWgEdjf7nkZEBGY0BJ6YbHRVNpvzzFRYipqZNTaamGx0VAw2mTRUWIqbijI2NAAAAAAMAkQAWA28D7QBEAEgAZwAAATIWFRQXFhc7AzY/AjY1NDc2NzsBMh8CHgEPAg4BBysBBxMWDwIGByMhIicmPwETJyMiLwMmNj8CNjsBASMDIQEjBxczMhYXFRczNz4BNzsBNycjBg8BBgcrASIvASYBpRAXFwkMBQEFBAkGBAMXCwoNBZQFBQRWDQ0BASEDEgwEVBOsBQYCAgoRBf12FAwKBAGsE1QYCgIBIQMLDARWBAUFAWr2lQIg/nBoLxFYDhUDFOgUARQNBFgRL2gGIwYfKwgDKCAFKQPtFhA6FQkBAQQCAxU6EAsKAQEBIQUXDQSEDBACrf37Dg0EBA4CEA4QBQIFrRYEBIQNGQYBIQL+Nv5AAz0SRhENBLa2DhMBRhI0KAYdARoFKAAAAAIAxQCLBeoDWABLAG8AAAEyFhURMzU0NjsBMhYdATM1NDY7ATIWHQEzNTQ2OwEyFh0BMzU0NjsBMhYdATM1NDY7ATIWHQEzETQ2OwEyFhURFAYjISImNRE0NjMEMh8BFgYPAQYuATQ/ASEXFhQGIi8BJjY/ATYyFhQPASEnJjQBBwcLdwsIMAgKeQwGMAgKewoIMAgKdgwHMQgJegoIMAgLegoHMQgKCwf7AQgKCwcDdiINgA0CC4ANIxkONv2+OAwaIA1/DQEMfw0jGQ03AkE2DQNYCwj9mpUICgoIlVsHCwwGW1sHCwwGW1sHCwwGW5UICgoIlQJmCAsLCP1XCAkLBgKpCAtbDYANIg1/DQEZIww4OA0iGQx/DSQLgA0ZIw03Nw0jAAAABAAAAAAEAAQAABEAFAAYACQAADMiJjURNDc2MyEyFhURFAcGIyUhEQMhNSEBMxUzNTM1IzUjFSNrLzweIisDJitEIh4v/NoDJjz+wAFA/UVmTWZmTWY8LwMmLx4iRCv82isiHmsDJv2NTQFEZmZNZmYAAAAD/9L/0gQuBC4AHgAxAEIAAAEyFxYXFhcWFRQHBgcGBwYjIicmJyYnJjU0NzY3PgEXIgYHBhUUFhcWMzI2NzYQJy4BATQ3NjMwFwUWFAcFBiInJjUCAHRlZ0tHLy0sLUtIaWhxdGVnS0cvLSwtS0rPcYPTQUB+bmuAg9NBQD9A2P70EwkIEgEQDw/+8AkRCRMELiwtS0hpaHF0ZWdLRy8tLC1LSGlocXRlZ0tKWVd+bmuAg9NBQH5uawEAbGx//t0WCQUGtAsmC7QGBQkWAAAACwAjABEEAQPvAAcAJQAtADkASgBbAGcAeACEAJAAnAAAJDQ2MhYUBiIBMhYVERQGIyEiJjURNDY7ATI2PwE2OwEyHwEeATMAMjY0JiIGFAE0NjIWHQEUBiImNQEUBiImPQE0NjsBMhYUBisBEzIWFAYrASImPQE0NjIWHQEANDY7ATIWFAYrASIhIiY0NjsBMhYdARQGIiY9AQAiJj0BNDYyFh0BFBI0NjsBMhYUBisBIgMUBiImPQE0NjIWFQI/NUs1NUsBYBIbGhP9iRIbGxJRGSsMCAwc1xwLCAwsGf7KlWlplWoBwhslGholG/zWGyUaNSUtEhsbEi0tEhsbEi0lNRolGwHCGhNbEhsbElsSASASGxsSLSU1GiUb/LslGholG7MbElsSGxoTWxLOGyUaGiUbzEo1NUo0ATsaE/6YEhsaEwFoEhsbFw8ZGQ8WHP5raZZpaZYCDhIbGxJbEhsaEwEOEhsbEi0lNRolG/zWGyUaNSUtEhsbEi0DRSUaGiUbGyUaNSUtEhsbEi3+mBoTWxIbGxJbEgFoJRoaJRv9thIbGxJbEhsaEwAGAAAAQAQAA8AADwAcAC0ANQA9AE0AABMhMhYVERQGIyEiJjURNDYXIgYdARQ7ATI9ATQjBTI9ATQmIyEiDwEhIh0BFDMAMjY0JiIGFBIyFhQGIiY0FjI2NTQ2MzI2NCYjIgYVFGADQCg4OCj8wCg4OCgNEwzoDAwCgAwTDf4GBgQ8/uwMDAFRxo2Nxo2nkmdnkmdDGhMmGg0TEw01SwPAOCj9QCg4OCgCwCg4QBMNFAwMKAzADJQNEwVbDEgM/fCNxo2NxgETZ5JnZ5JpEw0aJhMaE0s1DQAEAAABNANgBAAAPABNAFoAYAAAATMyNzY1NCcmIgcGFSM0PgE3PgEzMhcWFRQOBAcGBxYXFhUUBwYjIicmNTMUFxYzMjc2NTQmKwE1MwURMzIXFhcWHQEUBwYHBisBExUzMjc2PQE0JyYrAQEVIREjEQEYLSEMEREMOgwRUgEICBI+J0QjJQEBBAIHAgwhHxYRKShDPygpUhEYFSEMESQiLgkBB38zMDAWGRkYKis4g1YpMhwdGBc4Lf79/v1vAhsMERQaCwwMCxYNDhMIGBkdHy8IDAcIAgoCERAKFxYgNB4dHSIsGAkMDAsaHB462gF6FRsmLDMQNCsqGBgBQP8dJDIVPhgdAYtv/v0BcgAAAAIAbgAAA5YEAAACAAYAADMRCQMRbwMm/UUB6v4WBAD+AP7JATcBN/2NAAAAAwAAAAAEAAQAAA8AKgA3AAABFRQGIyEiJj0BNDYzITIWAQcGIyIvASY9AQYjIiYQNiAWFRQHMzIfARYUADQnJiMiBwYVFBcWMgJgDgr+sAoODgoBUAoOAZI5DhQTDsgOcY+s9PQBWPRYIRQOxw7+sE9QcW9RUFBP4gKAQAoODgpACg4O/b05Dg7HDhQhWPQBWPT0rI9xDscPJwGa4k9QUE9xb1FQAAAAAwAAAAAEAAQAACMAPgBLAAABFRQGKwEVFAYrASImPQEjIiY9ATQ2OwE1NDY7ATIWHQEzMhYBBwYjIi8BJj0BBiMiJhA2IBYVFAczMh8BFhQANCcmIyIHBhUUFxYyAmAOCnAOCkAKDnAKDg4KcA4KQAoOcAoOAZI5DhQTDsgOcY+s9PQBWPRYIRQOxw7+sE9QcW9RUFBP4gKAQAoOcAoODgpwDgpACg5wCg4OCnAO/b05Dg7HDhQhWPQBWPT0rI9xDscPJwGa4k9QUE9xb1FQAAEAwAA/A0ADwQAfAAA3ETQ2OwEyFhURATYzMhcWFREUBwYjJicBERQGKwEiJsAOCmAKDgGHExUODiUlDw0WEv55DgpgCg5YA1AKDg4K/p8BahAHEij9ACkRBwEPAWj+oQoODgACACgAJgPbA9oADwAqAAABMAEGIyInJjU0NzABMjMUJTAhMhcWFTARFAcGIyInJjUwESEiJyY1NDc2Ayf9mhkmQRIHGQJxOzr9pwKzJhkbGRgpJBsZ/aUkGxkZGwKk/ZwZNxYQIhoCZT/zGRsm/U0kGxkZGCcCWxkYJyYZGwAAAAIAKQAmA+ED2gAQACsAABIwATYzMhcWFRQHMAEiIyIjBTAhIicmNTARNDc2MzIXFhUwESEyFxYVFAcG3gJnGiQ5GQsd/ZkZGiQnAln9TSQZHRkWKyQdGQJZJB0ZGR0BWQJnGTcUEiEb/Zu0GRsmArMkGxkZGCf9pRkYJyYZGwAAAQAAAKoEAAMIAB8AAAEVBgcwAQYjJicBJic1Njc2MzIXFhc2NzYzMhcwFxYXBAAGCf45FBUSEf4rBQQWJBAQERHCwsPFDg8REhgPCAK6Hg0N/jkRAQoB1QkJHiccCQvCwcPCCw0XEAgAAAAAA/9kAFIFOgOuABMAGwBGAAADPgE3NjMyFxYXFhcOAQcGICcuAQQgNhAmIAYQJRYVFAcGBwYjIicmJyY1NDU0NTQ3FhcWMzI3PgE1NCcmJyYHNjc2MxYXFptS94WJk5KIi3d6VFL3hYn+2oeI9AHzAUbn5/665wKOCSY3aiMhRT1hGAgKCB8PEAwKJyACBhMWFSg3IyBHPF4CAIjLLC4uL2Fki4jLLC4uLsb/5wFG5+f+uuwlIUQ+Wh0JJjtlISAIAQQDGB8UCwUDDS8YCAgeExYCIA4KAiQ5AAAAAAEAAAAiBAAD4wAZAAA3NSEyNzY1NCcmIyEXBwkBFwchMhcWEAcGI54B73FPUVFWav4quET+1QErRLgB1pdtb29tlyJeSUptc0RJt0UBMwErRLhmaP7ZaGcAAAAABQAAAAAEAAQAAA0AEgAdACIAJQAAAREUBiMhIiY1ETQ2MyETJyERISUiJjQ2MhYVFAcGARU1IRUlNREEADMi/KoiMzMiAs2Jr/1ZA1b+VUBVVYBVKi/+ZgH8/bcDIv0zIjMzIgNWIjP+/K/8qlpVgFZWQDsrLwHmBM3JZ6/8qgAFAAgAAAP8BAAABwAPABMALAAuAAAgIiY0NjIWFAQiJjQ2MhYUARMhEyUhMhcWBwMOASMhByEVISInJj8BAyM1MxcTIQFeTTMzTTMBzU0zM00z/WaNAXOj/TcC8x4NDAyvDTMa/nxIAnP9njIbGxtRwGaVL7cBczNNMzNNMzNNMzNNAxr+3gEiTRoZHv7IGhmETSIiL5UBnk1m/pEAAAAAAwBHABIEHwPpADQAPwBJAAATMzIWHwE2MyEyFxYdARQHAwYHBiMhBg8BITIXFh0BFAcGIyEiJicmNTY/AQMjIicmPQE0NgEyFhUUBiImNTQ2IDIWFRQGIiY1NF9ZDhgFEQUCAtwdFRYHnAwWFRv+UAIDRQJ+BwoHBwcK/YIhLAoEAhY0izcKBwcOAP8lNDVINTUCF0o1NUwzA+kRDjsBFhQeBxAO/rUWEA4FAVMHBgosBwkHIh4NDSIbPAHMBgcJLQkN/Nw1JSQ1NSUkNTUlJDU1JSQAAAAABAAzAAAD0gP8AEMAUwBjAHMAACEiJyY1PAI2NyUOASMiJyY1NDc2MzIWFxYXJTQnJjY1NDc2MzIXFhUUBwYjIiYnJicFFBYdAQU2NzYzMhcWFRQHBiMnMjc2NTQnJiMiBwYVFBcWATI3NjU0JyYjIgcGFRQXFgEyNzY1NCcmIyIHBhUUFxYDPEIlKgMB/oAVNCJCJCsrKzsdDxAiDQGABAQEKjI1QiQrKzI0HQ4NIg3+fAQBhQwjGR5CJCsrKjwEFh0VFRUeFxwWFhX9nhYdFRUVHhccFhYVAp4WHRUVFR4XHBYWFSsqPBAJBAgG4hUaKyo8QiQrAwoREd4NCAEUAUElKysyNEIlKgMJEQ3ZBQwFQN4NEQ0rKjxCJCtNFRUeFx0VFRYeFh0VAW8VFR4XHBYWFR4WHRUBdxYVHhYdFRUVHhccFgAAAAcAbP/iA5QEHgAQAB4AMAA6AEMAVgBZAAATIREhFxEUBiMhIicmNRE0NhMVMzUzMjc2NTQ1NCYjMxUzMjc+ATc2NTQnJicmJyYjMxUzNTM1IzUzNQUzMhcWDgErATczMhcWFxYXFgcGBwYHBgcGKwETASH4AWoBMQFSOv3wOygpUkoyIiEREyUgWUYUExcVDAkJCA8SDxEWgTJJSVv+MR0ICQgDCgwdrQ4LCwkKCgQGAQEEBggKCAsMDokBJP7cBB3+wgH9kjlUKSo6AyA6U/2exkgREhkCAR0ixgcIEhcRGhcWFAsOBAXGUSsfKysFBhILKAMCBwULDg4RCQwFBwIDAvz+0gAAAAUAAACiBAADXgAAAAoAFAAcACQAAAESNjcuASAGBx4BBiQnNiQgBBcGBAAWMjY0JiIGBAYiJjQ2MhYCAI3sPj7s/ubsPz/sHf7tQ0MBEwFUARNDQ/7t/tRLbktLbksBSHOmc3OmcwIA/umYf3+YmH9/mEbBnJzBwZycwQEmS0tuS0uKc3Omc3MAAAAABgAAAC0EAAPTAAAAAQAVACMANwBFAAABNyUOAQceATMyNjcnDgEjIiY1NDY3AScOASMiJCc+ATcnNwEvAT4BNy4BIyIGByc+ATMyBBcOAS8BNiYHJz4BMzIWFRQGAbGH/p0rUBI775cnShNLDCYQUXUGBgJBxChnNKr+60EXUzuSMANxcS45VRQ66YgxZx01KH89pgEUQB5g1TMee0gzFDAaU3MNAfRDpiBmLoGWCQpKBgZzUxIjDv3CwBASvp89czSTMvyP1C4qaDSBlxMNNxIcvaBKfGgzU20bNAwMc1MZMgAAAwAAAIQEAAOAABsAIAAiAAA3IicmNRE0NzYzIRchMhcWFSEnIRETIQMGBwYjJSETIQsBNUkXHRUVECQBTEkBlRccFv4ESf7SdwNAgAgSExz9WgKrYv1ZYkyEFhAjAmoXHRVJFRAjSP2WAd7+ER8MDUUBlf5rAiZIAAAAAAEAAP/7BAAEAAAIAAATAQcJARcBIRW3AY1E/gACAET+cwNJAc3+c0QCBAIARP5zYgAAAAAIAAAAAAQABAAAAwAHAAkAEgAVACkAMwA8AAAxESERJSERIRkBFyMzEyMnIwcjEwczExEzMhcWFRQGBwYHFhcWFRQHBiMnMzI3NjQnJisBHQEzMjc2NTQjBAD8VQNW/KreBCuRNCKeIjOnQIDRhEIgIgYLERobGREiJj1ZUSYRFhYTKE1ZJRcVUQQA/ABVA1b8qgNWOP6aXl4BKqr+AAFvGhstFRAKEQ0GGBchMRse0REOOQ4NmoQREB9EAAn/5v/MBE0ENAADABQAJQA2AEcAWQBrAIQAoAAANyERITchMhYVERQHBiMhIiY1ETQ2BSEyFxYUBwYjISIjBiYnJjYDITIXFhQHBiMhIiMGJicmNiUzMhcWFAcGKwEiIwYmJyY2BSEyFxYUBwYjISIjBicmJyY2JTMyFxYUBwYrASIjBicmJyY2BSE6AzMyFxYUBwYjIiMhBiMmJyYnJjYlMzIzOgUwFxYUBwYjIisBBiMmJyYnJjYnA9/8ISYDmSk+Hh8q/GcpPj0BHAGnHw4ICA8e/mcDBA4jAwMaUQF1GxEICA8d/poEAw4kAwIZAkpAHw8GBg4gMgQDDiMEAhr94gF1HQ8ICA4e/poEAw0TEgMCGQJKQBwSBwcOIDIEAw0TEQQCGv3iAXUBAgMCARMQCAgNHAIB/poFBREMEgMCGQJKQAICAQICAgMCHgcHDxsCAjIFBREMEQQCGgID/DUyJfxIJhgZMiUDuCUy2RQLFgsWAxYSEh3+/xYKFgsWAhYREh0DFgoWCxYCFhESHX8WCxYLFQILChETHQMWChYMFQILChETHYAVChYMFQEBCAsSEh0CFQsWCxUBAQgLEhIdAAAABv/iAIoEgwOmABEAJAA2AEoAXABwAAATMCEyFhUUBwYjMCEiJjU0NzYBMCEyFxYUBwYjMCEiJyY1NDc2AQYXFBcWMzI/ATY1JicmJyYPATAXFhUUBwYHIicwJyY3Njc2NzIBFjM2NzY1NC8BJiMGBwYVFBcFMAcGIyInJic0NzA3NjMyFxYXFA8CvBIYDAoU/UQSGAwKAZ8CvRENDA0MEf1DEQ0MDQz+Zw4CBAodEw3KDAIDCh0SDY/kDxkICw0N5g4BAxUJCQ8EGQ0SBwgcCswNEAkIHAsBB+UMDyAIAwEO5gwQHgkDAQLAGBISDQwbEBENDP7rDgsjDQwMCxMSDQwBBg4NCAoZD+QNDwkJFgIBDuLLDBQZDQQBDMsNEx0JBAH+pBABAwkeEAzmDgEDCR4QDOjMChwJCBEMywscCAgRAAAABv/0AAwEPwP0AA0AGwApADcATgBSAAABFhcyFwcGByUiNTA3NCUyFxYXFQYHJSI3MDcmARYXFhcVBgclIjcwNyYlFhcWFxUGByUiNzA3JgMwNRIxNDMyMyQFFjEyFRAGIyIjICciJREhAwKEcpomAgIDHv72KwP+Nm+dJgMDHv70LgMCAgILcpomAwMe/vQuAwIC/jhymyYCAh/+9C4DAwN/CBcmGQIlATx1FwITCgr8DxwVBCr7/AIBrgECH9QdAgUoxyEEAwEe1B0CBSjHIQGdAQEBH9MdAwUpxiEKAQEBH9MdAwYoxyD8xhwDnhoBAwEU/FsrAiEDofxfAAAAAAIAAACRBAkDeAAYAC0AADciJjU0NzY3Njc2MzIWFxYdATIXFhUUBiMlITI2NCYrATU0JiIGFSMiBhQWOwH3ZpE8N14aVVxtPHYrWlU4PHhN/bMCQDRMTDRIkc2RFUlmZkkIkZFnW0JEDXVDSC8uYIMdODxRTHhETWdMYmuRkWtmkWYAAAcAAgACA/4D/gAbABwAJAAsADQAPABSAAAlIi4CNTQ+AjMyHgIVFAYrASIGFRQWFRQGAwQiJjQ2MhYUNiImNDYyFhQWIiY0NjIWFBYiJjQ2MhYUATI2NTQmNTQ2OwEyNjU0JiMiBBUUFgIAabqLUFKNvmxltYlQoYRgFyElNjD+8DInJzInejMmJjMm6zMmJjMmgTMmJjMm/pEOCyRMO11hd/+nuv7+/QJQi7ppbLqKTkR4pGKKnyQVIzAgMTQB/iEmMyYmM7MmMyYmMyYmMyYmM/8mMyYmM/5KCw0SHjU6WXJrqM37trT9AAAACwAq/7oD0gQ0AHUAewC8AMQA1ADgAOYBFAEcAiMCSAAAJRYxBiMGIiciJjUQMTQ2MzIxJicmMSY3NhcwMzYXFhcmJyYxJjc2FzIzNhcWFzY3Njc2MTYXFgcGBzY3NhYHBgc2NzY3FjEWFwYxBgcyMTYxFhcWFwYHMjEyFxYVMBUjNSMxKwEhFSEyFhQGIzAhFRQWMzIxMhMXFTAPATcjJyInJicGIyInJicmNzY1NjcmJyY1Njc2NzYzFhc2NzYXFhc2FxYXFhc2NzYXFhcWFAcWFAcGBwYjJicOASMwAQ4BBzM2NzYnFAcWFzY3Njc0PQE0Nw4BJxYXFhcWFzM0Ny4BBxYXNy4BJQYjMCciJzAmMCYwLwEmNTQ3MDc0NzA0MzYyFzAVFzAUMxYUBzAVBzAVMAYxFCY0JiIGFBYyBzEGFjc2MjQzNhcWMDMwFxY2JzAnNDUmND4BNzI2NDIxNjcyNzA3MjM6ATMeARcyFzAXFjY3MDU2NzA3NiYnMCcjJiciJjEmJyY0JyY1JjcyNDE2NTY3NjcyNzA3PgEnMCcmJzAnNCcmBzAHIwYHIgYxBiMwIyIjMCYxJiciJyYxNC4BJzwBNTQ1MDc2JgcwBwYnMCcmBhcwFxQVFBUUDgEHBjAGMQ4BBzAGMSIjIiciJicwJzAnJgYHMBUUBzAHBhYXMBcyFxYXFhcWFTAVFgccATEGBxQHBgcwBwYHMAcOARcwFxYXMBUeATcwNzI+AjIzMDMWMTIWFzAXMhceAhQVBhUwAzY3Njc2NzY3NjUnIQcUHgEXHgIUDgIHBgcjJi8BJicmMTQCOB46XTFsOkxtDQlEFT8DCAsKEAEIKBkWCVIDBwoLDgMBDyg+LwseIC4pDwkLBSMHM0ENGggiJAYWEB0BBAwYWBw5OgcLAgobDTUKBQcsQmEB/rMBLAkNDQn+1FI710tCLBoTxSwBFxMUBAoLDwsiBhcDAQMXEwgBAxEGGxARDAoGGxIPDAsMChQOGgYHDxASGgYXFxcXByMLDQwKBSUY/udOVwFHChIdlgEVCwUICQobKTGmOhkHBycFBBUBWmosFEIERwKBEyABIRQCAQICCAcBAgITSRQCAQgIAwIgDhINDRI1BBYNAgIBCAgBAgINFgMHAQECAQIBAQECAgIBAwECBAMBBQEBARMLGwEBCQIMAw8aAQMEAQECAQECAQEBAQIBAQMGAQIaDgUMAwgBAQ8NChQBAgIBAQMFAQICAwECAgIBAwIBBwMWDQELCwMMFgQGAQIBAQIBBQIBAQEFBAIFAQIUChsBCQQMBQ4bAQEGBAEBAQEBAQEBAgIBAwQcDQUMAwkBARoLFAECBQQEAwIBAgUBAQEBAQIBAbMCDQsJEQozAwVRAV1RFRMTFRcWGjQgGgUClkIRIRgCATofSRgYbEwBaQkNaH4GEAsKBwEYDBEpvggQCQsGAx8dNjIpKxYUBgoLDls6PzAKFRBEsBERFBACCQsiXISyFAcRDFsfBwcHGQM3DBMM8jpTAdc0dx8T5FwOEBgEBA0mEhYHBR8YESAEBBkOHw8KAQMeDwsBAQQGAQEJERwCAQELDx4UPRQVPhMmDQQBAxgfAVxNzW8uLLM5BAMkKQ0NEREDAgVXVBhUKXuHCgs+S05MVI20X2gDP2cqGgEZAgMBBA8RDhABAQMBHx8BAwEPHhABBQEDAR8TDQ0TDXAOEgYBAgMDAgEGEQ8aAgEDBAMGAQEBAgEBAgICAQETCwsPAwsFAgcdBAgCAgEDAgECAgECBAQBAgECAgYCAQgEHQcBBgsDDgYFCRQCAgEBAQECAgEBAgUCAQUDAQEaDhIHAQUFAwUSDhoBAQMCAwMFAQIBAQMBAQEDAQEUCQsOAwoHAQcdBAgBAgYCAgECAQQEAgECAQEBAgMBAwEIBBwHAwULAw8KChMCAgICAwEBAQIFAwQDAgH+Fw8XEggOCzoPGRBfXx4vFRATFzI/OSwWDgICJRIjIh8TCQAABf/q/+sESQQQAC8ARwBfAGgAagAAJTIzMjcyNTQ1EDE2MDE0IyYxJgUiIyIVFDAVIzU0NzAxICEWMRYXFBMWFQYjIgc0ATARFDMyMzAhMjU0NTARNAciIzAhIhUUBzQzMjMwITIzMhUwExQHFCMwISInJjUwEyEyNTQjISIUNyEDdRsbKi4PAi488P7BFxc9NXUBKQEoWEQCCAICOFNH/KwwHR0CSGoaAU/9Zhg3WiQjAnAcHD8CAn79lwg3YDUDHBsb/OQbGwMc2gILISMCSEgiAgUFPyElGZkDAQJbKv2kJCQ8ATQB4P2TLCogHwJ7IwUZAgFRUP2CVwFGAQNHAjIcGTUcAAAAAgAAAAAEAAQAABYAIAAAIQEGBwYjIiY1NDYzMhcWFRQOAQcGBwkBMjY0JiMiBhQWA8D+iSg7MEea1dWanGRrBA8DECsBd/1vc6Kic3iiogF3IRoW1pWa1Wtqli0jIAcxOv6NATyi5qKi5qIAAgAHAAUD+gP3AB0APgAAAS4DNjcBNz4DFhceAQYHDgIHDgUmJx4EFxYUDgIHDgImJyY3NhUeAjc+ATc+AwHtBQ4eCxAcATlJAgkbGiQQGg0PDQJZXyACBxkeMTVKewIHGh4xGwEEDiQbJ1NeZS1lAwQJHTwNFRQKBSE3WQGaBRA1NUwkARtCAgQJAgkMEz80FwOeoDAEDiMbGQQXNAQMIhwdBwcZRDxBExsgDB8kUYsoAQgWJQEBFR8QJyYYAAAAAv/n/8wETAQyAA8ANQAAARYGBwEGJicBJjY3ATYWFxM1NCYrATU0JisBIgYdAiMiBh0BFBY7AhUUFjsBMjY9ATMyNgRBCwIJ/fMLHwv98wsBCgINCx8L8xQNsxQNOg0TtA0UEw56OhIOOg0Usw0UAhkLHgr98gsBCgIOCx0LAg0LAQr9vDoNFLMNFBMOezgUDToNFLMNFBQNsxQAC//4//gECAQIAAMABwALAA4AEQAVABgAHAAfACIAJgAABQERCQEXAREFFwEhJRcjPwEVASEBJwMXBwkBEQkBIQkBMwcnFwEnAZMCdP6j/eiL/twCB4z+sP7pA0lt2plt/U8BF/7bi8RtbQIzAdv+sf1BAQb++gMI2m22i/1PjAcCdP7p/qMDSov+2wEX1oz+sW1tmW3aA+L+3Iv9kW1tAdsB2/7p/rACk/76AQZtYIz9T4sAB//c/9wEJAQkABsAOQBaAH4AmAClALMAAAMhMhcWHQEUBwYjISIHBhURFAYrASInJjURNDYFFRQHBisBIicmNRE0JyYjISImPQE0NzYzITIXFhUBIicmNTARNDc2MzAzMhYVMBEUFjMwITIXFhUwFRQGIzAhIicmNTA1NDc2MzAhMjc2NTARNDc2MzAzMhcWFTARFAcGIzICFhURFAYjISImNRE0NjsBNz4BOwEyFh8BMwM2JzQmIgcGFRQXHgEDMhcWFRQHBiInJjQ3NgoBbAsHBwgGC/7wDAYGEAoqCQkIDgQ6CAYMKgkJCAYICv7wDA0IBgsBbAkJCPvUDAgICAkJKgoQDQsBEAsGCA8KATwLBggIBgsBEAoIBggICioMBggIBgwC3jk5J/3yJzk5J1QSByYUwBQlCBJUkDEBYooyMDAyiEMsICAgIFggICEhBCQIBgwqCQkIBggK/vAMDQgGCwFsDA7vlwsHBwgGCwEQDAYGEAoqCQkICAYM+9IIBgwBbAsGCA8K/vALDQgJCSoKEAgGDCoKCAgGCAoBEAsGCAgGC/6UDAYIAxU4KP6xKDg4KAFPKDgzEhsbEjP+gjJERWMxMkVEMjECARUfIC0sIB8fIFkfIAAAAAAD//EADwQPA/EADAAQABMAAAETIzUhFSMRIRUhETcBBQclEQMBAuoBUP6N5wHJ/efjAToCAQH9/wH+zwPw/t7c0P19RwMXyf4lAX4CAW/9nQEyAAACADAADQPQA/sANgBCAAABFAYHBgcGIyImJyYnJjU0NzY3Nh4BBgcGBwYVFBcWFxYXFjMyNz4CNTQmJy4BNzY3NhcWFxYBERQGIiY1ETQ2MhYD0Ek/PVhVXmCqPj0mJTEuWxlAJgkZPh4gGRYsKjg5P0A4N1cvQDwZCRMUHyAZWi8x/n4uQC4uQC4B3WCpPz0mJUk/PVhVXm9hXUYUCjQ9FDE9QEo7PDgrKxcZGRdVcj5KgC4TPxkaBQUURV5iAWL+fiAuLiABgiAuLgAEAAQAAgP8A/0AHgAiACcAKAAAARYUDwIGJCYQPwI2Mh8BFhQPAgYeATI3AT4BFwEHFzcBNycHHwED8wkJcKh+/qH6fKhxCBkI4AkJcKgPAR0pDwEZCBkJ/ppHt0YBCUi2R1pbAcMJGQhxqH0B+gFhfKlvCQnfCRkIcagOKh0OARgJAQoBE0i0Rv5pRrZGW1sAAAAAAgAgAB4D4APeABgAMgAAABQPARcWFAYjISImNRE0NjMyHwE3PgEfAQERFAcWIyIvAQcOAS8BLgE/AScmNDYzITIWAfgHz1oMGBD+6BAYGBAPDVrPBhEHRgHvDAIWGgpazwYRB0YGAQfPWgwYEAEYEBgBohAHz1oNHxgYEAEYEBgMWs8GAQdGAg3+6A8NDAxazwYBB0YGEQfPWg0fGBgAAAEArAHABIQCKgADAAATNSEVrQPWAcBqagAAAAAG//v/+wQFBAUAEwAnADsATwBZAGMAABMwBxcWFRQGJzAnLgE3MDc2MzIWNzA3PgEXMBcWFRQGJzAnBwYjIiYBMAcOAScwJyY1NDYXMBc3NjMyFhMwFx4BBzAHBiMiJjcwNycmNTQ2BTAHMBclMDcwJwEwJzAHAzAXMDfYa2sOOhaNDQEOjQ0UIBdkjQ0nDo0OOhZsbA0UHxgBco0NJw6NDjoWbGwNFB8Ypo0NAQ6NDRQgFxZraw46/UgvMALILC7+zC8vATAvAmxsbA0UHxgWjQ0nDo0OOuiNDQEOjQ0UIBcWa2sOOv1CjQ0BDo0NFCAXFmtrDjoCAo0NJw6NDjoWbGwNFB8Yli4vAi0vATUuL/07MDAAAAAABABmAAADmgQAAAsAHAAiACYAACU1IzUzNTMVMxUjFQUiJyY1ETQ3NjMhAREUBwYjAzUhESERJRkBFQHap6dMp6f+jRscFhYQJwHNARoWECfz/lkCmv1mxKdMp6dMp8QVECgDZhsdFf7m/WcbHRUCxO/8mgJ37/yaA2bvAAQAL/+KA9AEdgBWAFoAXQBgAAABFhcWAxYHDgEjMCMiJicuAScmJyY3NDc2MxYXMBcWNTQwNTADJjc2NzYXFhcwFxQXFjM2JzAnJjc2MzIXFhcwFxQzFjUwJyY2Fx4BFzAXFjMwNycmNzYnNxcHEwsBBRMFAxA2BCESAhAKgF2rImgsLGISEgoXARkYISIZHwQkBBQVIiIaHAMMAwEDBgEJAhoYIiEYGAIJAwgIAjgjICgCEAIEBAgCDxE+MnUxHfYSAX4S/vkC7AxONP7tLadhjEIoJmgUFA0gGSMYFwIYHQUIAg4BriUYGgQEFRYglwYDAQIKwR8aGBgXIscNAw6+IisDAjMk1QkHlicMDtk7ZzoBEf7kAQlU/vkUAAAAAAMArf/jA1MEHAACAAYACQAAEwUBEwMjEyElAa4Co/6uRwGLAQGX/V0BUgE3Af6uAuX+bgGSAQFRAAAAAAf/qgAXBFYD7wADAAcACwAPABMAFwBGAAAlNzUHJzcnBwE3NQcnNycHJzc1Byc3JwcBFRQHBg8BBiIvASY1FA8BBiIvASYnJj0BNDc2PwE1NDY/ATYyHwEWFxYdARceAQEL0tIj3NzeAzHV1SPe3twZ0tIj8vLyA0gKDRH2DSUM+AIF9Q4iDvYRDQoNDRHwFxT0DR4N9BQNCvAUF29prVo9X19f/qhprVo9X19fQlqTWj1naGj+feUVDxIIewcHewEBAQF7Bwd7CBIQFOUVEBIJZtwUIwlqBQVqChASFNxmCSMAAAEATP/pBIAEHQALAAAFESE1IREzESEVIRECOf4TAe1aAe3+ExcB7VoB7f4TWv4TAAYAAAAzBAADzQAHAAkAEQAVACMAMQAAATUhFSM1IRUFIQYiJjQ2MhYUAzUhFQUhNSMRNDYzITIWFREjNzU0JiMhIgYdATM1IRUC5P44TQJi/RwDZlgfFxcfF47+OAIV/Z7PTjoC8DpOz4IiGf0QGSKCAmIC16mp9vZNeRceFxce/lj29k3hATs6Tk46/sVN7xkhIhnuYmIAA/9HALkEuQNHAAoAEwAgAAADITIWFRQGKwEVIxMzMjY1NCYrASUhGwEhESMRAyMDESO5AVBtbXZ6b8vLMTswKjg6AccBC2ZlAQqmgJZ+pgNHaGBkb/MBdykgHiuF/nIBjv1yAfL+DgHy/g4AAgA2//gDygQYABsAHAAAJCA2NTQnMxYVFAAgADU0Nz4BNzUNATUGBwYVFAUBfQEGugKNAv7z/ob+8zg5wXUBGf7neFBSAT2FuoMREhIRvv70AQy+dmZmfQmO09OKDVpZeoO6AAEAJQAlA9kD2wBDAAABFhURFAcGIyEiJj8BJiMiBwYHBgcGFBcWFxYXFjMyNzY3Njc2HwEWFxYHBgcGBwYnJicmJyYnJjc2NzY3Njc2Fhc3NgPCFwsMEP7sGxQTVlx8QTk+JykaGhoaKS04OkBJQjo0BQkIB1UEAQIGUVJdbF9ZVEI/JyQBASYkQj5YVWNZrEFQFAOvCxn+6xIKCzESVVUaGygoPTqAOj0oLRgYIB09BwEBBlUECQgFWiUrAQEmJUE9WVVjXlpTQ0AmJAEBRj1PFAAABf+z/7EETQRPAAsAYQB1AIMAkAAAJTcXBiMiJCYnMx4BEzI3NjU0JyYnLgErATQ1MzI3Njc2NzY3LgEjIgcGBw4BFSM0Njc2NzYWFxYXFhcWBxQHBgcGBwYHFhcWFxYXFhcGBwYHBgcGJyYnJicmJyY1MxQeAgEWFxYVNBUUBwYHDgErAREzMhcWBzU0JyYrAREzMj4BNzYDMgQWFyMmJyYnByc2ASRCuxkIl/74oQ1JDaCnHhARBQIMCB0PJiYQDQ8FBwQEAQEcHQ0LCAoICj8TDxEVGTIaFxAPCgkBAwMIAhEKDxQKDgYJAgMBAQoKEA4cGhgSHhkQEwgKPwkRFwG0FwwODg0WGEQocXUrHSUBHBs1MS0bKxwHB+GYAQehDUkNUFF6QrsaLEK8AY/6lYreAQcQEB4RCggMCAcBMgUGBQcLDQwbHwQCCgcSDRYnDw8GCQIHBg0NFhUaDAsKDQMRCggGCAoMDA0PDB0TFQ8NCAkBAQcGDRASFBsNFQ8IASUZJCYnARQsIiMYGBoBig0QshQ/IyL+5BIiGBcCeo/6lYpvbjpAvAEAAAAEAAIAAgP+A/4AJwBPAFcAWAAAJScuAScHJzcuATQ2Nyc3Fz4BPwEzFx4BFzcXBx4BFAYHFwcnDgEPASczNz4BNxc3Jz4BNCYnNycHLgEvASMHDgEHJwcXDgEUFhcHFzceARc2IiY0NjIWFCcBixoYNhSWd4oDAQEDineWFDYYGuoaGDcTlneKAwEBA4p3lhQ1GRqtcBIqSx+HM3gFBwYGeDOHHkktEnASK0sehzN4BQcHBXgzhx9LKo+KYWGKYaYCoQkeEUXRZQseFh4LZdFFER4IoqEJHRJF0WINHRocDWPRRREgB6FNjgsrHztcWBUqLCoVWFw7IiwHjo4JLCA7XFgVKiwqFVhcOx8rC31himFhikUAAAAACP+r/+EEVgQiAAcACwAPABMAFwAbAB8AIwAABxAXIAcQJyAlAwUTAREhEQcRIREFNTMVMzUzFSE1MxU3NTMVVQsEoAEL+2EEegL7rwYDHv4lBQHm/UlnZGYBImZkaBMENQEL+8sBMAPuBfwPAcoBLP7UBgE5/sfvSEhISEhIAUhIAAAAC/+n/90EWQQbAAMABwALAA8AFAAZAB0AIQAnACsALwAABREhEQcRIREBNTMVNzUzFTM1IjMVATUiMxU3NTMVMzUzFQE1MjMUFTc1MxUzNTMVBDz7iB0Esvv/ldCU0AGU/KIBlNGT0JT8ogGUz5XPlQcEBvv6HAQ++8IDBH9/A4GBgYH+y4GBBICAgID+zX8BfgV+fn5+AAAHADP/zQPMBDMAPABEAE4AZACAAJQApwAAATYzMhcWFxYdATMyFhceARcWBgcGJyIXFAIHDgEHBgcGICcuAScmAwI1LwEmJyYnJjc+ATc+ATsBNTQ3Nhc1KwEdATsBBSchIAcOARQgNgc0JSEXFhMWFx4BFxYzFzMyNzY3NhIFNhcyFx4BFxYXEhUUBwYjIicmJy4BJyYnAzc2NzYWFx4BFRAHBiMGJy4BJzQ2NzY3Nh4BFRYDAgcGBwYmJyYTEjc2AYsLamgNIQYCbFomDQwODQ4BEBIbCgE5AQIRBxYeD/4xDR4tBgIcHAEUHA8PBAERDA0MDSZabgUL6FtbW1sBIAv+kP6QAQEUAwoBQ/7D/sIBARsCBBIJCwICCufoBQ0HAzn96hASAQEKBwsBAQ8OBwsMBgECCQULAgERBQTJCxwIAwEDCBYQCwMCAQEDA8oIGBIBEA8DBw8LGQMCDw4CAgQvBAQLJA0hIQMLCRsjLCAQEwEEB/1BBgoeCBcHAwIGLh0NAVcBXAQIAgINDhYLMCUaCQoDKikLGFYgICBgHgIBOgICRwIBCAn+qBgs3EsFAQUCBA8HAr0oDAoCBkPGGg/+4BAWCgQEAQEGQL4mFwEyBwgGBwcLBlDk/s4GEgEQBE/k4lIGCwQEAhAPEP7b/toGDQQDDgsHASIBGhYXAA3/5f/5BBsD6wAlACoALgAzADcAOwBAAEQASABNAFEAVQBZAAABMhcWFREUBwYjISInJjURNDc2MyEyFxYdATMyFxYdATMyFxYdARc0NSMVJyMVMyEzNDUjNTM1IzUzNSMTFTM0NRchFSERIRUhAyMUFTMDIxUzAxUzNQUzNSMD+wsLCgkKDfwKDQkKCQoNAT4OCAmeDQkKnQsLCv5/QPz8/Ql/f/7+f3+//L7+xAE8/sQBPL78/L3+/v7+Abr+/gGzCgkN/oUOCAkJCgwDtA4ICQkKDJ4JCg2eCQkNnr4Bfn9/fwF+P34/f/6FfwF+vn4B+X4BPAF+ATx+/Yh+fn5+AAAAAf+xAKUETgNZADwAAAE2FxYfAhwBHgE3Njc2NzYXFhceARUcARUUBgcGBwYnJgAnIg4BFBUUBgcGIyIjIiYnJicmJy4BNzY3NgHMDhMSCwQCAQEBBfHyDR8YAQELAgMKAQEYHw3+HQUBAQEEDBAbAQIKNqElFuoIEQESCvX8A1QECAgVC3oqKh0IAQGLiwQIFwECCkPCHyIfwUUJAQIZCgQBFgEHHSoqZSAPEh5dFguGChAvEQqNkQAAAAABAEz/8ASABCQACwAABREhNSERMxEhFSERAjn+EwHtWgHt/hMQAe1aAe3+E1r+EwABAL7/4QNDBBQAJAAAARYVHAEVFgcBBiMiJwEmNTQ3Njc6ATM2HwERNDYyFxYVETc2MgMzDwEQ/vMQFhcP/vMPDxAWAQICEBGxICwQD7EQLQFJDxYCAgEREP7zEBABDQ8WFQ8RAQEQsgNHFx4QDxb8ubEQAAL/zf//BDMEAQAkAEoAAAEWFRQGBwYvAREUBwYnIicmNxEHBiciJy4BNzY3Njc2FzIXFhcBFhcUBwYHBgcOATEGJyInASY1NDY3Nh8BETQ3NhcyFxYVETc2MgIkDhwXExCpDxAUExEQAagQFRQQDgEPgH8FDAoKDAgKBgMADgEPHA8aOTdKEBUUEP8ADhwXExCpDxAVFBAOqQ4qAvEQFBcaAQEPqPziFg4QAQ8OFgMeqBABDw4sDoCABQYFAQMFB/1mDhYXDRkRHDc4SxABDwEAEBQXGgEBD6gDHhYOEAEPDhb84qgQAAAF/5kAXgRnA6IADwAaACEAKAAvAAAlISImNRE0NjMhMhYVERQGJRYzITI3AQcGLwE3ATQ1ETQ1BRQVERQVCQMmIyEiBAj78Cc3NycEECc3N/ueERoEEBkS/jBYCwtZ5gHA+3wBv/5PAjQCMxIZ+/AaXjgnAoYnODgn/XonODgTEwFUQAgIQBf+uAICAoYCAgECAf16AgIBSAFo/mYBmxMAFQAK/+4D/gQWAAMAGQAkAC4ANAA4AEgAUgBdAGkAbwB9AIgAjACSAJ4AqACwALQAvQDYAAAXESERJRUzPQEeARcwFzc+ATcwHQEzNSMHJxcUFjI2NTQmIyIGFxQGByImNDYyFiciBxQyNDIiFDIXFTMyNzY1NCc2NTQnJiMwFzAjNTMyFzIVFAcwFSM1MzIVFAcGNxUzNSM1MzUjNTM1MxUzNSM1MxUzNTMyNzY1NCcmIzAXMCM1MzIXFhQHBjcVMzUzFTM1IzUXFBYzMjY1NCYjIgYXFAYHIiY0NjIWNxUzNTM1IxUnMzUjETQjMCMVMzI2NzQnJicwKwEDIwMjETMRMxMzEzMRMTMRMzI2CwPz/FkQAgoBExQBCgEQECAgYB0nHBoWEx1UEg4OEhIcEjAFBRMdExMtGRANEBMNCgYXBxAJDQMHEwoQEwYDKToqIyMqEz0tPRAJFAwNEAkUBAoKEAMGBgMsEBc9LTYbFRMdGxUUHFASDg4SEhwSOhAgUBdnZ3BDQzBAZzk5cTetcANwrWoDg12DBGk3cXIRBCf72dlgMBQEDAQZGQQMBBQwYCwsMBMdHRMUHBoWDBQDFR0VFT4JChMTCmAHBRESBQYNDgUGJhoECQ0qAx0NAwYEUGAQHQ0WEGAQUGMjBw0MFQUGLCAEBg0GAyxgYGAQUDATHR0TFBwaFgwUAxUdFRUVUFAQEFlnAWBZtjEsXjEwAf5WAar9eQH9/gMB/f4DAQNmAAAABP7yAF8FDQOcAGAAbwB/AJkAAAEWFxYHBgcGBwYnJicmJyYnJicmJyYHBgcwBwYHBgcGBwYXFhcWFxYHBgcGBwYnJicmJyYnJicwJx4BFxY3Mjc2MzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzYXFhcWFxYlMhYVFAcGJwYnJjcmNzYFMhcWFRQHBiMiJyYnNjc2BRYXFhcWFxY3MCcmJyYnJgcGBwYXFhcWFxYFBwIBAgMDBw8KOzMQDhYOJkAoKicnUzsECgIXFCsMAgEBAQcBEQQICwsZHzc7SEU3CBUVC3NGBQUSBCMlAgYGBAIIBgUhI009Sy0PFB4OJT0lLhgrCRITAhgzVTe+TAj+IE9wODhPTzc5AQE4OP2zNycmJic3NyYmAQEmJv7JDzo2GSUULBoEQi0YKjEvEgwLBAQDAwgIAq8BAgQHBQMHAQcOBQgOES4tHBEPBQshAwUCDhQsPA0ODQsrBWEcOEI+MkAlKAgHIAQMDAY6FwIBAwEGAwEBAQEBAQQMHC44SRk1VCBWPiQZDBADAwMBBgIDG11aDHVwT084OAEBODhPTzg47ScnNjcnJiYnNzYnJ7wPJCAICwIFAQRCPiMICwcDBgUKCgQFCAkAAAn/rv/7BFIEJQAIABIAfQCLAI8AkwCaAKcArwAAJDIWBxQGIiY0JTIWBxQGIiY0NgEXFA8BIhUGBxQfARYPAQ4BLwEmBw4BBwYXBxQGIw8BBiMhBxcFFSEiJwMjNzMyHwEFNTQ/ATI1Njc0LwEmPwE+AR8BFjc+ATc2NTc0NjM3Mh8BFBcWFzInNzYfAR4BDwEGFx4BFxYzFzIWBSMVMzc1JicmByciJiMlFzM1FzUjFzczNScmNSMXFTM3JzQjLgEnIw8BNjI2NCYiBhQBEV1EAkJdQQGVMUACQVxBQQIPDBVPBgIGAzcTECwEEwlEBAUEEgQDAQQOCR0JBg/+xuEJAeb95xEGb5kDuw8GKQEiFU8GBQQDOBIPLwUTCD4EBQQSBAMEDQpGFQYOBgYVAwE7ExE0CQQHLAQEAQkCAwNPCQ79TAOcHQQFBAJPAQcB/uMSjQOHEaK5JwiK5W8DDgcDCwMSNwNfd1VVd1PbRCwvQEBdQkMtL0BAXUICQUMVBQ8GBhQEAjsTEDUJAwYsBQUBCQIDAlAIDwMgEgMxBEkYAhVBEWgCAhUGDwYRDAQCOhMQNQkEBioEBAEKAQMDTwkPBRRSBQEDBgM4ExEsBBMJQwQFBBIEAwMNnVgpEQkMBAEDAwJUVNhUVAMpIAQIWAQJRAYBAwE0A4FVd1NTdwAAAgEqAAEDPwP9ACsAVAAAARYdAQ4BIwYnJjc1HgEXFhcVBhcWMzI2PQE2JyYjIgcmPQE2MzYXFjEWFxYDFyMGJyY9AT4BMzYXHgEdAS4BJyYnNTQnJiMOAR0BBhcWMzI3Fh0BBgMFOgGcbWtOTwQDDgQyQwImIzQ0TQImIzUeGQgcIi8vCCIaGsUCA2tPTAGecGtOJyIEDgRBNR4jNTdNAiUjNR4aCB0CckdhvW2dAk9ObJEEDwQxGy4yJSVMM70yJiUODRB0BwISBA4UFv7KAQJOTG+ya4kCTyZKNZUEFQNCFCQmHSQBNzGyMiYlDg0QcwgAAAz/y//QBDUEOQAcACYALwA0AD4AQwBKAE8AWQBeAGMAeQAAATAVFAcGBAciJyYnJic0NTQ3Njc2NzIzFhcWFxYkEAAgADU0JyYEATM2NzQnIxYUAzY3IwYnNjU0JyMGFxQXEzY3IxYDNjcGBwYHERYXJi8BMyY3JjcjBhcGAQYHMyYFJicWFwMyFxYXFgIHBgcGJyInJicmNTQ3PgEENU1L/vqYk4eCS0oDTU2BhJICA51+gkpN/BUBAgFrAQOAgv6SAaa0DwEQtAhmkFicHzsJCfkJAgd9SR3NJZIiJko6OydVkyYkyLIHAgEGsg0BAQGpQCfNJAEuUpYpIdKSenlJSAJGSHp7kZJ6eUdJRkn2AgUBmoGBlgJNSoJ9ngIDmX2CSk0BAUxLgYIb/pX++wEFtreAggH93zkwMzhETP6TM4po1DM2ODMzODU0/sFtZm4CGHdIHDAyQf5WijNGd2xEJSZFRCc9AedhdHBwijVGeQE/RkZ9ev7eenhJSQFGSXp7kJF7eo4ABP/ZAF8EvwOYAAYACwAQABsAAAM2NyEyFwE3ARURFQkCNRETARcWPwEBBiMhIhYSHQRmHRL9no0B5fscAeT+HBAB92ALDGAB9hMb+5kdA4EVART+QjIBYgT9RAUCwv6h/p0EArz9IAFwRQkJRf6QFQAAAAABAMQAAAM4BAAB+gAAISIjJi//L8YmNzYBNjc7GxYXFgcGBxYXFgcOAQcGAuEPDw4MAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAh4ZngE4CQkBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQECJxsTFcLBwsISFAkgBgoGCQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIkKJ4BNgUE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AHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAABHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuAABoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAABodHRwOi8vZm9udGVsbG8uY29tAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJIAAAABAAIBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOADvATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQAOAUoBSwFMAU0BTgFPAIgBUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNBGluZm8Fc3RhcnQFZW50ZXIMaW5zcGlyYXRpb25zCnByb2dpbWFnZXMOZHJvcGRvd24tYXJyb3cIZG93bmxvYWQGdXBsb2FkBmNpcmNsZQlkaW1jaGFuZ2UKZG9vcmNoYW5nZQZkZWxldGURYXVnbWVudGVkX3JlYWxpdHkHY2xvdGhlcwdtZWFzdXJlBW9ub2ZmBHBsYXkKc2NyZWVuc2hvdA9mYV9jYW1lcmFfcmV0cm8JZmFfY2FtZXJhB2ZhX3BsYXkLZmFfem9vbV9vdXQKZmFfem9vbV9pbgdmYV91bmRvF2Fycm93X3JpZ2h0X3VwX3BvaW50aW5nGGFycm93X2xlZnRfZG93bl9wb2ludGluZwxhcnJvd19kb3duXzIDZXllBHVuZG8Ec2F2ZQ9zaG9wcGluZ19jYXJ0XzEPc2hvcHBpbmdfY2FydF8yBXNoYXJlA3BkZgVleWVfMgpleWVfY2xvc2VkBmZvbGRlcgVhcnJvdwRyb29tCGFuYWx5c2lzBnN3aXRjaAhiaWd0aWxlcwVjbG91ZAZjb2xvcnMKZGVjb3JhdGlvbghkZWNvdXBsZQZmaWx0ZXIGZmluaXNoB2ZpdHRpbmcFZmxvb3ICaHIEbG9hZAZsb2dvdXQGbWFnbmV0CG1heGltaXplBm1vdmUzZANuZXcJcGFuc3dpdGNoBnBmZWlsZQhwaWNrbW9kZQZ6b29taW4FcHJpbnQOcHJvamVjdG1hbmFnZXIEcmVkbwZyZWxvYWQIcm90YXRlM2QIc2V0dGluZ3MIc2hvd3Jvb20FdGlsZXMMdHJlZXVwcmVtb3ZlBHdhbGwGcmV3aW5kCmFycm93X2Rvd24NYXJyb3dfdXBfZG93bgZsZXR0ZXILbW9lYmVscGlsb3QHaXdvZnVybgR3YXdpCGxhbmd1YWdlDWxldHRlcl9maWxsZWQKYXJyb3dfbGVmdAZ0b2dnbGUHeW91dHViZQVDRlRfMQhDRlRfMV9GUghDRlRfMV9GUwVDRlRfMghDRlRfMl9CUwdDRlRfNV9MB0NGVF81X1IFQ0ZUXzYFQ0ZUXzcFQ0ZUXzgHQ0ZUXzZfTAdDRlRfNl9SEnBsYW5uaW5nLXR5cGUtZnJlZRRwbGFubmluZy10eXBlLWNvcm5lchZwbGFubmluZy10eXBlLXN0cmFpZ2h0CG5vdGUtYWRkBmNoYW5nZQxjb250ZW50LWNvcHkOY2xvdWQtZG93bmxvYWQPcGxhbm5pbmctdHlwZS11D3BsYW5uaW5nLXR5cGUtbQ9wbGFubmluZy10eXBlLXQdcGxhbm5pbmctdHlwZS1jb3JuZXItbWlycm9yZWQPY2FtZXJhLXNldHRpbmdzEmRlbGV0ZS1maXR0aW5nLWFsbBJkZWxldGUtZml0dGluZy1vbmUFZXJyb3IHZnVybnJheQptb3JlLWhvcml6DXF1ZXN0aW9uLW1hcmsJcmVzZXQtYWxsCXJlc2V0LW9uZQZyb3RhdGUPZG9vci1oaW5nZS1sZWZ0EGRvb3ItaGluZ2UtcmlnaHQTZmEtY2FtZXJhLXJpZ2h0LXRvcA9mYS1jYW1lcmEtZnJvbnQNZmEtY2FtZXJhLXRvcAlmYS0yZC10b3ALZmEtMmQtZnJvbnQFY2hlY2sFY2xvc2UMY2hlY2stY2lyY2xlBXRvb2xzB2FycmFuZ2UKYXBwbGlhbmNlcw9zd2FwLWhvcml6b250YWwWc3dhcC1ob3Jpem9udGFsLWNpcmNsZQdhZGQtYm94C3BsdXMtY2lyY2xlC2Rlc2NyaXB0aW9uB2ZvbGRlcjIFZHJhZnQEbWVudQltZW51LW9wZW4QcmVzZXQtdG8tZGVmYXVsdAVzaG92ZQAAAAAAAAH//wACAAEAAAAMAAAAHAAAAAIAAgADAAsAAQAPAJEAAQAEAAAAAgAAAAAAAQAAAADf1ssxAAAAAN8XeeEAAAAA5lAaYw==) format(\\\"ttf\\\");font-weight:400;font-style:bold}@font-face{font-family:furnview-icons-multi;src:url(data:font/woff2;base64,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) format(\\\"woff2\\\"),url(data:font/woff;base64,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) format(\\\"woff\\\"),url(data:font/ttf;base64,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) format(\\\"ttf\\\");font-weight:400;font-style:bold}\\n\";\n\nvar SimpleIcons = \"[class*=fv-icon]{text-align:center;font-size:var(--fv-icons-font-size, initital);line-height:var(--fv-icons-line-height, var(--fv-icons-font-size, initital))}[class*=fv-icon]:before{display:flex;font-family:furnview-icons-simple;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:auto;text-align:center;justify-content:center;align-items:center;height:100%;line-height:inherit}.mirrored-x:before{transform:scaleX(-1)}.mirrored-y:before{transform:scaleY(-1)}.fv-icon-info:before{content:\\\"!\\\"/\\\"\\\"}.fv-icon-start:before{content:\\\"0\\\"/\\\"\\\"}.fv-icon-enter:before{content:\\\"1\\\"/\\\"\\\"}.fv-icon-inspirations:before{content:\\\"2\\\"/\\\"\\\"}.fv-icon-progimages:before{content:\\\"3\\\"/\\\"\\\"}.fv-icon-dropdown-arrow:before{content:\\\"4\\\"/\\\"\\\"}.fv-icon-download:before{content:\\\"5\\\"/\\\"\\\"}.fv-icon-upload:before{content:\\\"6\\\"/\\\"\\\"}.fv-icon-circle:before{content:\\\"7\\\"/\\\"\\\"}.fv-icon-dimchange:before{content:\\\"A\\\"/\\\"\\\"}.fv-icon-doorchange:before{content:\\\"B\\\"/\\\"\\\"}.fv-icon-delete:before{content:\\\"C\\\"/\\\"\\\"}.fv-icon-augmented-reality:before{content:\\\"D\\\"/\\\"\\\"}.fv-icon-clothes:before{content:\\\"E\\\"/\\\"\\\"}.fv-icon-measure:before{content:\\\"F\\\"/\\\"\\\"}.fv-icon-onoff:before{content:\\\"G\\\"/\\\"\\\"}.fv-icon-play:before{content:\\\"H\\\"/\\\"\\\"}.fv-icon-screenshot:before{content:\\\"I\\\"/\\\"\\\"}.fv-icon-fa-camera-retro:before{content:\\\"J\\\"/\\\"\\\"}.fv-icon-fa-camera:before{content:\\\"K\\\"/\\\"\\\"}.fv-icon-fa-play:before{content:\\\"L\\\"/\\\"\\\"}.fv-icon-fa-zoom-out:before{content:\\\"M\\\"/\\\"\\\"}.fv-icon-fa-zoom-in:before{content:\\\"N\\\"/\\\"\\\"}.fv-icon-fa-undo:before{content:\\\"O\\\"/\\\"\\\"}.fv-icon-arrow-right-up-pointing:before{content:\\\"P\\\"/\\\"\\\"}.fv-icon-arrow-left-down-pointing:before{content:\\\"Q\\\"/\\\"\\\"}.fv-icon-arrow-down-2:before{content:\\\"R\\\"/\\\"\\\"}.fv-icon-eye:before{content:\\\"S\\\"/\\\"\\\"}.fv-icon-undo:before{content:\\\"T\\\"/\\\"\\\"}.fv-icon-save:before{content:\\\"U\\\"/\\\"\\\"}.fv-icon-shopping-cart-1:before{content:\\\"V\\\"/\\\"\\\"}.fv-icon-shopping-cart-2:before{content:\\\"W\\\"/\\\"\\\"}.fv-icon-share:before{content:\\\"X\\\"/\\\"\\\"}.fv-icon-pdf:before{content:\\\"Y\\\"/\\\"\\\"}.fv-icon-eye-2:before{content:\\\"Z\\\"/\\\"\\\"}.fv-icon-eye-closed:before{content:\\\"[\\\"/\\\"\\\"}.fv-icon-folder:before{content:\\\"\\\\\\\\\\\"/\\\"\\\"}.fv-icon-arrow:before{content:\\\"]\\\"/\\\"\\\"}.fv-icon-room:before{content:\\\"^\\\"/\\\"\\\"}.fv-icon-analysis:before{content:\\\"_\\\"/\\\"\\\"}.fv-icon-switch:before{content:\\\"`\\\"/\\\"\\\"}.fv-icon-bigtiles:before{content:\\\"a\\\"/\\\"\\\"}.fv-icon-cloud:before{content:\\\"b\\\"/\\\"\\\"}.fv-icon-colors:before{content:\\\"c\\\"/\\\"\\\"}.fv-icon-decoration:before{content:\\\"d\\\"/\\\"\\\"}.fv-icon-decouple:before{content:\\\"e\\\"/\\\"\\\"}.fv-icon-filter:before{content:\\\"f\\\"/\\\"\\\"}.fv-icon-finish:before{content:\\\"g\\\"/\\\"\\\"}.fv-icon-fitting:before{content:\\\"h\\\"/\\\"\\\"}.fv-icon-floor:before{content:\\\"i\\\"/\\\"\\\"}.fv-icon-hr:before{content:\\\"j\\\"/\\\"\\\"}.fv-icon-load:before{content:\\\"k\\\"/\\\"\\\"}.fv-icon-logout:before{content:\\\"l\\\"/\\\"\\\"}.fv-icon-magnet:before{content:\\\"m\\\"/\\\"\\\"}.fv-icon-maximize:before{content:\\\"n\\\"/\\\"\\\"}.fv-icon-minus:before{content:\\\"o\\\"/\\\"\\\"}.fv-icon-move3d:before{content:\\\"p\\\"/\\\"\\\"}.fv-icon-new:before{content:\\\"q\\\"/\\\"\\\"}.fv-icon-panswitch:before{content:\\\"r\\\"/\\\"\\\"}.fv-icon-pfeile:before{content:\\\"s\\\"/\\\"\\\"}.fv-icon-pickmode:before{content:\\\"t\\\"/\\\"\\\"}.fv-icon-zoomin:before{content:\\\"v\\\"/\\\"\\\"}.fv-icon-print:before{content:\\\"w\\\"/\\\"\\\"}.fv-icon-projectmanager:before{content:\\\"x\\\"/\\\"\\\"}.fv-icon-redo:before{content:\\\"y\\\"/\\\"\\\"}.fv-icon-reload:before{content:\\\"z\\\"/\\\"\\\"}.fv-icon-rotate3d:before{content:\\\"{\\\"/\\\"\\\"}.fv-icon-settings:before{content:\\\"|\\\"/\\\"\\\"}.fv-icon-showroom:before{content:\\\"}\\\"/\\\"\\\"}.fv-icon-tiles:before{content:\\\"~\\\"/\\\"\\\"}.fv-icon-treeupremove:before{content:\\\"\\\\a9\\\"/\\\"\\\"}.fv-icon-wall:before{content:\\\"\\\\ac\\\"/\\\"\\\"}.fv-icon-rewind:before{content:\\\"\\\\ae\\\"/\\\"\\\"}.fv-icon-plus:before{content:\\\"\\\\af\\\"/\\\"\\\"}.fv-icon-arrow-down:before{content:\\\"\\\\b0\\\"/\\\"\\\"}.fv-icon-arrow-up-down:before{content:\\\"\\\\b1\\\"/\\\"\\\"}.fv-icon-letter:before{content:\\\"\\\\b2\\\"/\\\"\\\"}.fv-icon-moebelpilot:before{content:\\\"\\\\b3\\\"/\\\"\\\"}.fv-icon-iwofurn:before{content:\\\"\\\\b4\\\"/\\\"\\\"}.fv-icon-wawi:before{content:\\\"\\\\b5\\\"/\\\"\\\"}.fv-icon-paragraph:before{content:\\\"\\\\b6\\\"/\\\"\\\"}.fv-icon-language:before{content:\\\"\\\\b7\\\"/\\\"\\\"}.fv-icon-letter-filled:before{content:\\\"\\\\b8\\\"/\\\"\\\"}.fv-icon-arrow-left:before{content:\\\"\\\\b9\\\"/\\\"\\\"}.fv-icon-toggle:before{content:\\\"\\\\ba\\\"/\\\"\\\"}.fv-icon-youtube:before{content:\\\"\\\\bb\\\"/\\\"\\\"}.fv-icon-CFT-1:before{content:\\\"\\\\bc\\\"/\\\"\\\"}.fv-icon-CFT-1-FR:before{content:\\\"\\\\bd\\\"/\\\"\\\"}.fv-icon-CFT-1-FS:before{content:\\\"\\\\be\\\"/\\\"\\\"}.fv-icon-CFT-2:before{content:\\\"\\\\bf\\\"/\\\"\\\"}.fv-icon-CFT-2-BS:before{content:\\\"\\\\c0\\\"/\\\"\\\"}.fv-icon-CFT-5-L:before{content:\\\"\\\\c1\\\"/\\\"\\\"}.fv-icon-CFT-5-R:before{content:\\\"\\\\c2\\\"/\\\"\\\"}.fv-icon-CFT-6:before{content:\\\"\\\\c3\\\"/\\\"\\\"}.fv-icon-CFT-7:before{content:\\\"\\\\c4\\\"/\\\"\\\"}.fv-icon-CFT-8:before{content:\\\"\\\\c5\\\"/\\\"\\\"}.fv-icon-CFT-6-L:before{content:\\\"\\\\c6\\\"/\\\"\\\"}.fv-icon-CFT-6-R:before{content:\\\"\\\\c7\\\"/\\\"\\\"}.fv-icon-planning-type-free:before{content:\\\"\\\\c8\\\"/\\\"\\\"}.fv-icon-planning-type-corner:before{content:\\\"\\\\c9\\\"/\\\"\\\"}.fv-icon-planning-type-straight:before{content:\\\"\\\\ca\\\"/\\\"\\\"}.fv-icon-note-add:before{content:\\\"\\\\cb\\\"/\\\"\\\"}.fv-icon-change:before{content:\\\"\\\\cc\\\"/\\\"\\\"}.fv-icon-content-copy:before{content:\\\"\\\\cd\\\"/\\\"\\\"}.fv-icon-cloud-download:before{content:\\\"\\\\ce\\\"/\\\"\\\"}.fv-icon-planning-type-u:before{content:\\\"\\\\cf\\\"/\\\"\\\"}.fv-icon-planning-type-m:before{content:\\\"\\\\d0\\\"/\\\"\\\"}.fv-icon-planning-type-t:before{content:\\\"\\\\d1\\\"/\\\"\\\"}.fv-icon-planning-type-corner-mirrored:before{content:\\\"\\\\d2\\\"/\\\"\\\"}.fv-icon-camera-settings:before{content:\\\"\\\\d3\\\"/\\\"\\\"}.fv-icon-delete-fitting-all:before{content:\\\"\\\\d4\\\"/\\\"\\\"}.fv-icon-delete-fitting-one:before{content:\\\"\\\\d5\\\"/\\\"\\\"}.fv-icon-error:before{content:\\\"\\\\d6\\\"/\\\"\\\"}.fv-icon-furnray:before{content:\\\"\\\\d7\\\"/\\\"\\\"}.fv-icon-more-horiz:before{content:\\\"\\\\d8\\\"/\\\"\\\"}.fv-icon-question-mark:before{content:\\\"\\\\d9\\\"/\\\"\\\"}.fv-icon-reset-all:before{content:\\\"\\\\da\\\"/\\\"\\\"}.fv-icon-reset-one:before{content:\\\"\\\\db\\\"/\\\"\\\"}.fv-icon-rotate:before{content:\\\"\\\\dc\\\"/\\\"\\\"}.fv-icon-door-hinge-left:before{content:\\\"\\\\dd\\\"/\\\"\\\"}.fv-icon-door-hinge-right:before{content:\\\"\\\\de\\\"/\\\"\\\"}.fv-icon-fa-camera-right-top:before{content:\\\"\\\\df\\\"/\\\"\\\"}.fv-icon-fa-camera-front:before{content:\\\"\\\\e0\\\"/\\\"\\\"}.fv-icon-fa-camera-top:before{content:\\\"\\\\e1\\\"/\\\"\\\"}.fv-icon-fa-2d-top:before{content:\\\"\\\\e2\\\"/\\\"\\\"}.fv-icon-fa-2d-front:before{content:\\\"\\\\e3\\\"/\\\"\\\"}.fv-icon-check:before{content:\\\"\\\\e4\\\"/\\\"\\\"}.fv-icon-close:before{content:\\\"\\\\e5\\\"/\\\"\\\"}.fv-icon-check-circle:before{content:\\\"\\\\e7\\\"/\\\"\\\"}.fv-icon-tools:before{content:\\\"\\\\e8\\\"/\\\"\\\"}.fv-icon-arrange:before{content:\\\"\\\\e9\\\"/\\\"\\\"}.fv-icon-appliances:before{content:\\\"\\\\ea\\\"/\\\"\\\"}.fv-icon-swap-horizontal:before{content:\\\"\\\\eb\\\"/\\\"\\\"}.fv-icon-swap-horizontal-circle:before{content:\\\"\\\\ec\\\"/\\\"\\\"}.fv-icon-add-box:before{content:\\\"\\\\ed\\\"/\\\"\\\"}.fv-icon-plus-circle:before{content:\\\"\\\\ee\\\"/\\\"\\\"}.fv-icon-description:before{content:\\\"\\\\ef\\\"/\\\"\\\"}.fv-icon-folder2:before{content:\\\"\\\\f0\\\"/\\\"\\\"}.fv-icon-draft:before{content:\\\"\\\\f1\\\"/\\\"\\\"}.fv-icon-menu:before{content:\\\"\\\\f2\\\"/\\\"\\\"}.fv-icon-menu-open:before{content:\\\"\\\\f3\\\"/\\\"\\\"}.fv-icon-reset-to-default:before{content:\\\"\\\\f4\\\"/\\\"\\\"}.fv-icon-shove:before{content:\\\"\\\\f5\\\"/\\\"\\\"}\\n\";\n\nvar MultiIcons = \"[class*=fv-icon-multi]{font-size:var(--fv-icons-font-size, initital);line-height:var(--fv-icons-line-height, var(--fv-icons-font-size, initital));text-align:center}[class*=fv-icon-multi]:before,[class*=fv-icon-multi]:after{display:flex;font-family:furnview-icons-multi;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:auto;text-align:center;justify-content:center;align-items:center;height:100%;line-height:0}.mirrored-x:before{transform:scaleX(-1)}.mirrored-y:before{transform:scaleY(-1)}.fv-icon-multi-letter-filled:before{content:\\\"\\\\93\\\"}.fv-icon-multi-arrow-left:before{content:\\\"\\\\94\\\"}.fv-icon-multi-chain-bold:before{content:\\\"0\\\"}.fv-icon-multi-no-chain-bold{display:flex}.fv-icon-multi-no-chain-bold:before{content:\\\"0\\\";letter-spacing:-2em}.fv-icon-multi-no-chain-bold:after{content:\\\"1\\\"}.fv-icon-multi-chain-arrow-left-bold{display:flex}.fv-icon-multi-chain-arrow-left-bold:before{content:\\\";\\\";letter-spacing:-2em}.fv-icon-multi-chain-arrow-left-bold:after{content:\\\"=\\\"}.fv-icon-multi-no-chain-arrow-left-bold{display:flex;justify-content:center;position:relative!important}.fv-icon-multi-no-chain-arrow-left-bold:before{content:\\\"=\\\\a;\\\";min-width:var(--fv-icons-multicolor-min-width, 2em);min-height:var(--fv-icons-multicolor-min-height, 1em);background:linear-gradient(to right,var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%,var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);max-width:min-content}.fv-icon-multi-no-chain-arrow-left-bold:after{content:\\\"<\\\";position:absolute!important}.fv-icon-multi-chain-arrow-right-bold{display:flex}.fv-icon-multi-chain-arrow-right-bold:before{content:\\\"8\\\";letter-spacing:-2em}.fv-icon-multi-chain-arrow-right-bold:after{content:\\\":\\\"}.fv-icon-multi-no-chain-arrow-right-bold{display:flex;justify-content:center;position:relative!important}.fv-icon-multi-no-chain-arrow-right-bold:before{content:\\\":\\\\a 8\\\";min-width:var(--fv-icons-multicolor-min-width, 2em);min-height:var(--fv-icons-multicolor-min-height, 1em);background:linear-gradient(to right,var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%,var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);max-width:min-content}.fv-icon-multi-no-chain-arrow-right-bold:after{content:\\\"9\\\";position:absolute!important}\\n\";\n\nfunction appendStylesheet(name, content) {\n const scriptFound = document.head.querySelectorAll(`#${name}`) === null;\n if (!scriptFound) {\n document.head.appendChild(Object.assign(document.createElement(\"style\"), { id: name, innerText: content }));\n }\n}\nfunction injectStylesheets(options) {\n appendStylesheet(\"fv-icon-font\", Fonts);\n if (typeof options === \"object\" && options.simple || options) {\n appendStylesheet(\"fv-icon-simple\", SimpleIcons);\n }\n if (typeof options === \"object\" && options.multi || options) {\n appendStylesheet(\"fv-icon-multi\", MultiIcons);\n }\n}\n\nexport { Fonts, MultiIcons, SimpleIcons, injectStylesheets };\n","import { injectStylesheets } from '@dh-software/furnview-icons';\nimport { unsafeCSS, css, LitElement, html, nothing } from 'lit';\nimport { property, state, customElement, queryAsync, query } from 'lit/decorators.js';\nimport { choose } from 'lit/directives/choose.js';\nimport { guard } from 'lit/directives/guard.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { keyed } from 'lit/directives/keyed.js';\n\nvar style$E = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n height: auto;\\n width: auto;\\n}\\n\\n.merge-grid {\\n display: flex;\\n flex-direction: column;\\n min-width: 280px;\\n max-width: 640px;\\n padding: 16px;\\n border: 1px solid #ccc;\\n border-radius: 8px;\\n background-color: #fafafa;\\n box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n\\n.caption {\\n width: 100%;\\n display: flex;\\n justify-content: flex-start;\\n padding: 8px 8px 0;\\n font-size: 1.125rem;\\n font-weight: 500;\\n}\\n\\n#container {\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n padding: 8px;\\n}\\n\\n.button-container {\\n width: 100%;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: 8px;\\n}\\n\\n.direction-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 4px;\\n}\\n.direction-container dh-button:first-child .fv-icon-arrow-down {\\n transform: rotate(90deg);\\n}\\n.direction-container dh-button:last-child .fv-icon-arrow-down {\\n transform: rotate(-90deg);\\n}\\n\\n.not-selected {\\n opacity: var(--dh-inactive-opacity, 1);\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nclass PropertyValidator {\n static {\n this.templates = /* @__PURE__ */ new WeakMap();\n }\n _getNestedOptions(key, options) {\n return options?.subkeyValidation?.[key] ?? void 0;\n }\n _log(propertyName, value) {\n console.warn(\n `[ValidatedProperty] Key '${String(propertyName)}' was set to 'undefined'. Reverting to`,\n value ?? `'empty'`\n );\n return value;\n }\n _validateObject(object, template, options, initialize) {\n let changed = false;\n for (const key in template) {\n if (!Object.prototype.hasOwnProperty.call(template, key)) {\n continue;\n }\n const currentNestedOptions = this._getNestedOptions(key, options);\n const templateValue = template[key];\n const currentValue = object[key];\n if (currentValue === void 0) {\n let templateToUse = currentNestedOptions ?? templateValue;\n if (currentNestedOptions && templateToUse !== void 0) {\n const nestedResult = this.validateObjectProperty(key, Array.isArray(templateToUse) ? [] : {}, templateToUse, options, false);\n templateToUse = nestedResult.result;\n } else {\n templateToUse = templateValue;\n }\n object[key] = this._log(key, templateToUse);\n changed = true;\n } else if (currentNestedOptions) {\n const nestedResult = this.validateObjectProperty(key, currentValue, currentNestedOptions, options, false);\n if (nestedResult.changed) {\n object[key] = this._log(key, nestedResult.result);\n changed = true;\n }\n }\n }\n return {\n changed,\n result: object\n };\n }\n _validateArray(array, validationTemplate, options, initialize) {\n let changed = false;\n const arrayToValidate = initialize ? [] : array;\n const elementTemplate = Array.isArray(validationTemplate) ? validationTemplate[0] : validationTemplate;\n if (!elementTemplate) {\n return { changed: false, result: array };\n }\n const validatedArray = arrayToValidate.map((x) => {\n const result = this._validateObject(x, elementTemplate, options, initialize);\n if (result.changed) changed = true;\n return result.result;\n });\n return {\n changed,\n result: validatedArray\n };\n }\n _getValidatedValue(value, template, options, initialize = false) {\n if (Array.isArray(value)) {\n return this._validateArray([...value], template, options, initialize);\n } else {\n return this._validateObject({ ...value }, template, options, initialize);\n }\n }\n validateObjectProperty(propertyName, value, template, options, initialize = false, depth = 0) {\n if (value === void 0) {\n return { changed: true, result: JSON.parse(JSON.stringify(this._log(propertyName, template))) };\n }\n if (typeof value !== \"object\" || value === null) {\n return { changed: false, result: value };\n }\n return this._getValidatedValue(value, template, options, initialize);\n }\n static getTemplate(prototype, propertyKey) {\n return this.templates.get(prototype)?.get(propertyKey);\n }\n static setTemplate(prototype, propertyKey, val) {\n if (typeof val === \"object\" && val !== null && val !== void 0 && !Array.isArray(val)) {\n if (!this.templates.has(prototype)) {\n this.templates.set(prototype, /* @__PURE__ */ new Map());\n }\n this.templates.get(prototype).set(propertyKey, JSON.parse(JSON.stringify(val)));\n }\n }\n}\n\nconst validator = new PropertyValidator();\nfunction createValidatedDecorator(baseDecorator) {\n return function(options) {\n return function(target, propertyKey, descriptor) {\n const elementPrototype = target;\n const privateKey = Symbol(`__default_val_${String(propertyKey)}`);\n Object.defineProperty(elementPrototype, propertyKey, {\n configurable: true,\n enumerable: true,\n set(val) {\n PropertyValidator.setTemplate(elementPrototype, propertyKey, val);\n this[privateKey] = val;\n delete this[propertyKey];\n },\n get() {\n return this[privateKey];\n }\n });\n baseDecorator(options)(target, propertyKey);\n const litDescriptor = Object.getOwnPropertyDescriptor(elementPrototype, propertyKey);\n if (litDescriptor && litDescriptor.set) {\n const originalLitSetter = litDescriptor.set;\n if (options?.fallback && !PropertyValidator.getTemplate(target, propertyKey)) {\n target[privateKey] = options?.fallback;\n }\n Object.defineProperty(elementPrototype, propertyKey, {\n ...litDescriptor,\n set(newValue) {\n const template = PropertyValidator.getTemplate(target, propertyKey) ?? options?.fallback;\n let validatedValue = newValue;\n if (template) {\n validatedValue = validator.validateObjectProperty(propertyKey, newValue, template, options).result;\n }\n const oldValue = this[privateKey];\n this[privateKey] = validatedValue;\n originalLitSetter.call(this, validatedValue);\n this.requestUpdate(propertyKey, oldValue);\n },\n get() {\n return this[privateKey];\n }\n });\n }\n };\n };\n}\nfunction validatedProperty(options) {\n return createValidatedDecorator(property)(options);\n}\n\nclass EventRefImpl {\n constructor(element, name, env) {\n this.element = element;\n this.name = name;\n this.env = env;\n }\n /**\n * Composes the event to be dispatched.\n * If the detail is an Event of the correct type, it is returned directly.\n * Otherwise, a new CustomEvent is created with the detail.\n * @param detail The event detail or the event itself.\n * @returns The event to dispatch.\n */\n composeEvent(detail) {\n if (detail instanceof Event && detail.type == this.name) {\n return detail;\n }\n return new CustomEvent(this.name, { ...this.env, detail });\n }\n /**\n * Dispatches the event on the element.\n * @param detail The event detail or the event itself.\n */\n dispatch(detail) {\n this.element.dispatchEvent(this.composeEvent(detail));\n }\n /**\n * Adds an event listener to the element for this event.\n * @param callback The function to be called when the event is dispatched.\n * @param options Options for the event listener.\n */\n addListener(callback, options) {\n this.element.addEventListener(this.name, callback, options);\n }\n /**\n * Removes an event listener from the element for this event.\n * @param callback The function to remove.\n * @param options Options for the event listener.\n */\n removeListener(callback, options) {\n this.element.removeEventListener(this.name, callback, options);\n }\n handleEvent(object) {\n this.dispatch();\n }\n detail(object) {\n const _this = this;\n return {\n handleEvent(_event) {\n _this.dispatch(object);\n }\n };\n }\n}\nfunction event(options, eventName) {\n return (protoOrDescriptor, propertyKey) => {\n eventName = eventName || propertyKey.toString().toLowerCase();\n if (eventName.endsWith(\"event\")) {\n eventName = eventName.replace(\"event\", \"\");\n }\n const privateKey = Symbol(`__${String(propertyKey)}_eventRef`);\n Object.defineProperty(protoOrDescriptor, propertyKey, {\n get() {\n if (!this[privateKey]) {\n this[privateKey] = new EventRefImpl(\n this,\n eventName,\n options\n );\n }\n return this[privateKey];\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\nvar __defProp$C = Object.defineProperty;\nvar __getOwnPropDesc$E = Object.getOwnPropertyDescriptor;\nvar __decorateClass$E = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$E(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$C(target, key, result);\n return result;\n};\nlet DhMergeDialog = class extends LitElement {\n constructor() {\n super(...arguments);\n this.currentConflictNumber = 1;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-merge-dialog\")) {\n this.setAttribute(\"dh-merge-dialog\", \"\");\n }\n }\n render() {\n return html` <div class=\"background merge-grid\" part=\"root\">\n <div class=\"caption\" part=\"header\">${this.mergeDialogObjects.dialogCaption || \"Mergedialog\"}</div>\n <div id=\"container\" part=\"content\">\n ${this.mergeDialogObjects ? this.mergeDialogObjects.conflictedObjects.map(\n (object, index) => html`\n <dh-merge-dialog-page\n exportparts=\"root: page-root, label: page-label, content: page-content, header: page-header, column-left: page-column-left, column-right: page-column-right, item: page-item\"\n id=\"${object.id}\"\n .columnCaption=\"${this.mergeDialogObjects.columnCaption}\"\n .conflictCount=\"${this.mergeDialogObjects.conflictedObjects.length}\"\n .conflictNumber=\"${index + 1}\"\n .conflictedObject=\"${object}\"\n conflict-number=\"${index + 1}\"\n class=\"${index + 1 == this.currentConflictNumber ? \"\" : \"hidden\"}\"\n part=\"item\"\n ></dh-merge-dialog-page>\n `\n ) : null}\n </div>\n <div class=\"button-container\" part=\"footer\">\n <div class=\"direction-container back\">\n <dh-button\n icon-button\n variant=\"filled\"\n ?disabled=\"${this.currentConflictNumber <= 1}\"\n @click=\"${this.showPreviousConflict}\"\n exportparts=\"root: dh-icon-button-nav-root, label: dh-icon-button-nav-label, icon: dh-icon-button-nav-icon\"\n ><div slot=\"img\" class=\"fv-icon-arrow-down-2\" style=\"transform: rotate(90deg)\"></div\n ></dh-button>\n <dh-button\n icon-button\n variant=\"filled\"\n ?disabled=\"${this.currentConflictNumber >= this.mergeDialogObjects.conflictedObjects.length}\"\n @click=\"${this.showNextConflict}\"\n exportparts=\"root: dh-icon-button-nav-root, label: dh-icon-button-nav-label, icon: dh-icon-button-nav-icon\"\n ><div slot=\"img\" class=\"fv-icon-arrow-down-2\" style=\"transform: rotate(-90deg)\"></div\n ></dh-button>\n </div>\n <dh-button\n .buttonText=\"${this.mergeDialogObjects.buttonText || \"apply\"}\"\n @click=\"${this.applyMerge}\"\n exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n ></dh-button>\n </div>\n </div>`;\n }\n applyMerge(event2) {\n const pages = this.renderRoot.querySelectorAll(\"dh-merge-dialog-page\");\n pages.forEach((page) => {\n const id = page.getAttribute(\"id\");\n const sameConflicts = this.mergeDialogObjects.conflictedObjects.find((object) => object.id == id);\n const sameConflictsKeys = [];\n if (sameConflicts) {\n sameConflicts.conflicts.forEach((conflict) => sameConflictsKeys.push(conflict.key));\n }\n sameConflictsKeys.forEach((key) => {\n const inputs = page.getConflictInputs(key);\n const selectedInput = inputs.find((input) => input.checked);\n if (selectedInput) {\n const fieldName = page.getNameField(key);\n fieldName.classList.remove(\"unsolved\");\n if (sameConflicts) {\n const sameConflict = sameConflicts.conflicts.find((conflict) => conflict.key == key);\n if (sameConflict) {\n sameConflict.selectedValue = selectedInput.value;\n }\n }\n } else {\n const fieldName = page.getNameField(key);\n fieldName.classList.add(\"unsolved\");\n }\n });\n });\n let openConflicts = 0;\n this.mergeDialogObjects.conflictedObjects.forEach((object) => {\n const unresolvedConflicts = object.conflicts.filter((conflict) => {\n return conflict.selectedValue == \"\";\n });\n if (unresolvedConflicts.length > 0) {\n openConflicts++;\n unresolvedConflicts.forEach((conflict) => {\n const key = conflict.key;\n const columnSpan = this.renderRoot.querySelector(`span#${key}`);\n if (columnSpan) {\n columnSpan.classList.add(\"not-selected\");\n }\n });\n }\n });\n if (openConflicts <= 0) {\n this.applyMergeEvent.dispatch(this.mergeDialogObjects);\n }\n }\n showNextConflict(event2) {\n if (this.currentConflictNumber < this.mergeDialogObjects.conflictedObjects.length) {\n const pages = Array.from(this.renderRoot.querySelectorAll(\"dh-merge-dialog-page\"));\n pages.forEach((page) => page.classList.add(\"hidden\"));\n this.currentConflictNumber = this.currentConflictNumber + 1;\n const currentPage = pages.find((page) => {\n const conflictNumber = page.getAttribute(\"conflict-number\");\n if (conflictNumber) {\n const isSame = parseInt(conflictNumber) == this.currentConflictNumber;\n if (isSame) {\n return page;\n }\n }\n });\n currentPage?.classList.remove(\"hidden\");\n } else {\n return;\n }\n }\n showPreviousConflict(event2) {\n if (this.currentConflictNumber > 1) {\n const pages = Array.from(this.renderRoot.querySelectorAll(\"dh-merge-dialog-page\"));\n pages.forEach((page) => page.classList.add(\"hidden\"));\n this.currentConflictNumber = this.currentConflictNumber - 1;\n const currentPage = pages.find((page) => {\n const conflictNumber = page.getAttribute(\"conflict-number\");\n if (conflictNumber) {\n const isSame = parseInt(conflictNumber) == this.currentConflictNumber;\n if (isSame) {\n return page;\n }\n }\n });\n currentPage?.classList.remove(\"hidden\");\n } else {\n return;\n }\n }\n};\nDhMergeDialog.styles = css`\n ${unsafeCSS(style$E)}\n `;\n__decorateClass$E([\n validatedProperty({\n type: Object,\n fallback: {\n conflictedObjects: [],\n columnCaption: [],\n dialogCaption: \"\",\n buttonText: \"\"\n }\n })\n], DhMergeDialog.prototype, \"mergeDialogObjects\", 2);\n__decorateClass$E([\n state()\n], DhMergeDialog.prototype, \"currentConflictNumber\", 2);\n__decorateClass$E([\n event({ bubbles: true, cancelable: true, composed: true }, \"applyMerge\")\n], DhMergeDialog.prototype, \"applyMergeEvent\", 2);\nDhMergeDialog = __decorateClass$E([\n customElement(\"dh-merge-dialog\")\n], DhMergeDialog);\n\nvar style$D = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n}\\n\\n.info {\\n padding: 8px;\\n font-size: 0.875rem;\\n font-weight: 500;\\n}\\n\\n.merge-grid {\\n display: grid;\\n grid-template-columns: auto 1fr 1fr;\\n}\\n\\n.captures-column-one {\\n grid-column: 1;\\n grid-row: 1;\\n}\\n\\n.captures-column-two {\\n grid-column: 2;\\n grid-row: 1;\\n}\\n\\n.captures-column-three {\\n grid-column: 3;\\n grid-row: 1;\\n}\\n\\n.flex {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n\\n.border {\\n border-bottom: 1px solid var(--dh-border-color, transparent);\\n}\\n\\n.border-right {\\n border-right: 1px solid var(--dh-border-color, transparent);\\n}\\n\\n.padding {\\n padding: 4px 8px;\\n}\\n\\ninput {\\n margin: 4px;\\n cursor: pointer;\\n}\\n\\ninput[type=radio] {\\n accent-color: var(--dh-radio-color, currentColor);\\n width: 16px;\\n height: 16px;\\n}\\n\\n.bold {\\n font-weight: var(--dh-header-weight, 500);\\n}\\n\\n.field-name {\\n display: flex;\\n align-items: center;\\n}\\n\\n.unsolved {\\n background-color: var(--dh-error-color, transparent);\\n color: #FFFFFF;\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nvar __defProp$B = Object.defineProperty;\nvar __getOwnPropDesc$D = Object.getOwnPropertyDescriptor;\nvar __decorateClass$D = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$D(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$B(target, key, result);\n return result;\n};\nlet DhMergeDialogPage = class extends LitElement {\n constructor() {\n super(...arguments);\n this.conflictNumber = 0;\n this.conflictCount = 0;\n this.columnCaption = [];\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-merge-dialog-page\")) {\n this.setAttribute(\"dh-merge-dialog-page\", \"\");\n }\n }\n render() {\n return html`<div part=\"root\">\n <div class=\"info\" part=\"label\">${this.conflictNumber} / ${this.conflictCount} - ${this.conflictedObject.objectInformation}</div>\n <div id=\"merge-container\" class=\"merge-grid\" @input=${this.removeNotSelected} part=\"content\">\n <div class=\"captures-column-one border border-right padding bold\" part=\"header\">${this.columnCaption[0]}</div>\n <div class=\"captures-column-two border border-right padding bold\" part=\"column-left\">${this.columnCaption[1]}</div>\n <div class=\"captures-column-three border padding bold\" part=\"column-right\">${this.columnCaption[2]}</div>\n ${this.conflictedObject ? this.conflictedObject.conflicts.map(\n (conflict) => html`\n <span class=\"border border-right padding field-name\" id=\"${conflict.key}\" part=\"item\">${conflict.translatedKey || conflict.key}</span>\n <div class=\"flex border border-right padding\" part=\"column-left\">\n <input type=\"radio\" name=\"${conflict.key}\" key=\"${conflict.key}\" value=\"${conflict.myValue}\"></input>\n <span>${conflict.myValue}</span>\n </div>\n <div class=\"flex border padding\" part=\"column-right\">\n <input type=\"radio\" name=\"${conflict.key}\" key=\"${conflict.key}\" value=\"${conflict.newValue}\"></input>\n <span>${conflict.newValue}</span>\n </div>\n `\n ) : null}\n </div>\n </div>`;\n }\n getConflictInputs(key) {\n return Array.from(this.renderRoot.querySelectorAll(`input[key=${key}]`));\n }\n getNameField(key) {\n const nameField = this.renderRoot.querySelector(`.field-name#${key}`);\n if (nameField) {\n return nameField;\n }\n return null;\n }\n removeNotSelected(event) {\n const target = event.target;\n if (target) {\n const key = target.getAttribute(\"key\");\n if (key) {\n const columnSpan = this.renderRoot.querySelector(`span#${key}`);\n if (columnSpan) {\n columnSpan.classList.remove(\"unsolved\");\n }\n }\n }\n }\n};\nDhMergeDialogPage.styles = css`\n ${unsafeCSS(style$D)}\n `;\n__decorateClass$D([\n validatedProperty({\n type: Object,\n fallback: {\n conflicts: [],\n objectInformation: \"\",\n id: \"\"\n }\n })\n], DhMergeDialogPage.prototype, \"conflictedObject\", 2);\n__decorateClass$D([\n property()\n], DhMergeDialogPage.prototype, \"conflictNumber\", 2);\n__decorateClass$D([\n property()\n], DhMergeDialogPage.prototype, \"conflictCount\", 2);\n__decorateClass$D([\n property()\n], DhMergeDialogPage.prototype, \"columnCaption\", 2);\nDhMergeDialogPage = __decorateClass$D([\n customElement(\"dh-merge-dialog-page\")\n], DhMergeDialogPage);\n\nvar style$C = \":host {\\n display: block;\\n user-select: none;\\n}\\n\\n.treeview {\\n margin: 0;\\n padding: 0;\\n}\";\n\nvar __defProp$A = Object.defineProperty;\nvar __getOwnPropDesc$C = Object.getOwnPropertyDescriptor;\nvar __decorateClass$C = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$C(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$A(target, key, result);\n return result;\n};\nlet DhTree = class extends LitElement {\n constructor() {\n super(...arguments);\n this.theTreeItems = [];\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-tree\")) {\n this.setAttribute(\"dh-tree\", \"\");\n }\n }\n set treeItems(treeItems) {\n this.theTreeItems = this.validateTreeItems(treeItems);\n }\n render() {\n return html` <div id=\"tree-container\" part=\"root\" @treeitemclicked=${this.selectedItem}>\n <slot id=\"treemenu\" class=\"treeview\" name=\"tree\">\n ${this.theTreeItems.map((item, index) => {\n return html`\n <dh-tree-item\n class=\"${index === 0 ? \"selected\" : \"\"}\"\n name=\"${item.itemName}\"\n .treeItem=\"${Object.assign({}, item)}\"\n .iconFolderOpen=\"${item.iconFolderOpen}\"\n .iconFolderClose=\"${item.iconFolderClose}\"\n .iconFile=\"${item.iconFile}\"\n ?highlighted=\"${item.highlighted}\"\n ?isDirectory=\"${item.subitems.length > 0}\"\n ></dh-tree-item>\n `;\n })}\n </slot>\n </div>`;\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n let selectedElement = Array.from(this.renderRoot.querySelectorAll(\"dh-tree-item\")).find((element) => {\n return element.classList.contains(\"selected\");\n });\n if (!selectedElement) {\n selectedElement = Array.from(document.querySelectorAll(\"dh-tree-item[slot=tree]\")).find((element) => {\n return element.classList.contains(\"selected\");\n });\n }\n if (selectedElement) {\n this.currentSelectedItem = selectedElement;\n }\n }\n setCurrentSelectedItem(item) {\n this.currentSelectedItem?.classList.remove(\"selected\");\n item.classList.add(\"selected\");\n this.currentSelectedItem = item;\n }\n selectedItem(event) {\n const item = event.detail;\n this.currentSelectedItem?.classList.remove(\"selected\");\n item.classList.add(\"selected\");\n this.currentSelectedItem = item;\n }\n validateTreeItems(treeItems) {\n treeItems.forEach((item) => {\n if (item.iconFolderOpen == void 0) {\n item.iconFolderOpen = \"\";\n }\n if (item.iconFolderClose == void 0) {\n item.iconFolderClose = \"\";\n }\n if (item.iconFile == void 0) {\n item.iconFile = \"\";\n }\n if (item.subitems == void 0) {\n item.subitems = [];\n }\n if (item.highlighted == void 0) {\n item.highlighted = false;\n }\n item.subitems = this.validateTreeItems(item.subitems);\n });\n return treeItems;\n }\n};\nDhTree.styles = css`\n ${unsafeCSS(style$C)}\n `;\n__decorateClass$C([\n state()\n], DhTree.prototype, \"theTreeItems\", 2);\nDhTree = __decorateClass$C([\n customElement(\"dh-tree\")\n], DhTree);\n\nvar style$B = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n width: 100%;\\n font-family: Roboto, system-ui, sans-serif;\\n}\\n\\n#item {\\n cursor: pointer !important;\\n}\\n\\n#folder, #file {\\n --fv-icons-font-size: 14px;\\n --fv-icons-line-height: 14px;\\n font-size: 14px;\\n line-height: 1;\\n width: 14px;\\n height: 14px;\\n flex-shrink: 0;\\n cursor: pointer;\\n color: var(--md-sys-color-on-surface-variant, #666);\\n}\\n\\n#folder:not(.hidden), #file:not(.hidden) {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n#arrow {\\n --fv-icons-font-size: 8px;\\n --fv-icons-line-height: 8px;\\n font-size: 8px;\\n line-height: 1;\\n width: 8px;\\n height: 8px;\\n flex-shrink: 0;\\n position: absolute;\\n right: 12px;\\n color: var(--md-sys-color-on-surface-variant, #666);\\n transition: transform 220ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n#item-name {\\n font-size: 12px;\\n font-weight: 400;\\n line-height: 1.25rem;\\n letter-spacing: 0.15px;\\n color: var(--md-sys-color-on-surface-variant, #666);\\n flex: 1;\\n min-width: 0;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n.container {\\n display: flex;\\n align-items: center;\\n padding: 0 28px 0 16px;\\n gap: 10px;\\n}\\n\\n#submenu {\\n display: grid;\\n grid-template-rows: 1fr;\\n transition: grid-template-rows 220ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n#submenu.hidden {\\n display: grid;\\n grid-template-rows: 0fr;\\n}\\n\\n#submenu-inner {\\n overflow: hidden;\\n min-height: 0;\\n}\\n\\n::slotted([slot=submenu]) {\\n padding-left: 2rem;\\n}\\n\\n.intern {\\n padding-left: 2rem;\\n}\\n\\n.padding {\\n padding: 0;\\n}\\n\\n.row {\\n display: flex;\\n align-items: center;\\n position: relative;\\n height: 32px;\\n border-radius: var(--dh-tree-item-radius, 28px);\\n margin: 2px 8px;\\n overflow: hidden;\\n transition: background-color 200ms cubic-bezier(0.2, 0, 0, 1), box-shadow 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n.row:hover {\\n background-color: var(--dh-tree-hover-bg, rgba(0, 0, 0, 0.04));\\n}\\n\\n.row:hover #item-name {\\n color: var(--dh-tree-hover-color, inherit);\\n}\\n\\n.row:hover #arrow {\\n color: var(--dh-tree-hover-color, inherit);\\n}\\n\\n:host(.selected) .row {\\n background-color: var(--dh-tree-selected-bg, rgba(0, 0, 0, 0.08));\\n}\\n\\n:host(.selected) .row:hover {\\n background-color: var(--dh-tree-selected-bg, rgba(0, 0, 0, 0.08));\\n box-shadow: var(--dh-tree-selected-hover-shadow, none);\\n}\\n\\n:host(.selected) #item-name {\\n color: var(--dh-tree-selected-color, inherit);\\n font-weight: var(--dh-tree-selected-label-weight, 500);\\n}\\n\\n:host(.selected) #arrow {\\n color: var(--dh-tree-selected-color, inherit);\\n}\\n\\n:host([highlighted]) #item-name {\\n color: var(--dh-tree-item-highlight-color, var(--md-sys-color-primary, #FF8014));\\n}\\n\\n:host([highlighted]) ::slotted([slot=name]) {\\n color: var(--dh-tree-item-highlight-color, var(--md-sys-color-primary, #FF8014));\\n}\\n\\n.inline {\\n display: flex;\\n align-items: center;\\n gap: 10px;\\n flex: 1;\\n min-width: 0;\\n}\\n\\n.hidden {\\n display: none;\\n}\\n\\n.right {\\n transform: rotate(-90deg);\\n}\\n\\n.visibility {\\n visibility: hidden;\\n}\";\n\nvar __defProp$z = Object.defineProperty;\nvar __getOwnPropDesc$B = Object.getOwnPropertyDescriptor;\nvar __decorateClass$B = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$B(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$z(target, key, result);\n return result;\n};\nlet DhTreeItem = class extends LitElement {\n constructor() {\n super(...arguments);\n this._iconFolderOpen = \"fv-icon-folder\";\n this._iconFolderClose = \"fv-icon-folder2\";\n this._iconFile = \"fv-icon-description\";\n this.isDirectory = false;\n this.highlighted = false;\n this.timer = 0;\n this.delay = 200;\n this.prevent = false;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-tree-item\")) {\n this.setAttribute(\"dh-tree-item\", \"\");\n }\n }\n get iconFolderOpen() {\n return this._iconFolderOpen;\n }\n set iconFolderOpen(value) {\n const oldValue = this._iconFolderOpen;\n this._iconFolderOpen = value || \"fv-icon-folder\";\n this.requestUpdate(\"iconFolderOpen\", oldValue);\n }\n get iconFolderClose() {\n return this._iconFolderClose;\n }\n set iconFolderClose(value) {\n const oldValue = this._iconFolderClose;\n this._iconFolderClose = value || \"fv-icon-folder2\";\n this.requestUpdate(\"iconFolderClose\", oldValue);\n }\n get iconFile() {\n return this._iconFile;\n }\n set iconFile(value) {\n const oldValue = this._iconFile;\n this._iconFile = value || \"fv-icon-description\";\n this.requestUpdate(\"iconFile\", oldValue);\n }\n render() {\n return html` <div id=\"item\" part=\"root\" @mousedown=\"${this.oneClick}\" @dblclick=\"${this.doubleClick}\">\n <div class=\"row\" part=\"content\">\n <div class=\"container\">\n <div id=\"folder\" class=\"hidden folder ${this.iconFolderClose}\" part=\"icon-folder\"></div>\n <div class=\"inline\">\n <div id=\"file\" class=\"hidden folder ${this.iconFile}\" part=\"icon-file\"></div>\n <span id=\"item-name\" class=\"padding\" part=\"label\"><slot id=\"name\" name=\"name\">${this.treeItem?.itemName}</slot></span>\n </div>\n <div id=\"arrow\" class=\"fv-icon-arrow-down-2 right visibility arrow folder\" part=\"icon-expand\"></div>\n </div>\n </div>\n <div id=\"submenu\" class=\"submenu hidden\" part=\"submenu\">\n <div id=\"submenu-inner\">\n <slot id=\"submenu\" name=\"submenu\">\n ${this.treeItem?.subitems.map((item) => {\n return this.renderDhTreeItem(item);\n })}\n </slot>\n </div>\n </div>\n </div>`;\n }\n renderDhTreeItem(item) {\n return html`\n <dh-tree-item\n name=\"${item.itemName}\"\n class=\"submenu intern\"\n .treeItem=\"${Object.assign({}, item)}\"\n .iconFolderOpen=\"${item.iconFolderOpen || this.iconFolderOpen}\"\n .iconFolderClose=\"${item.iconFolderClose || this.iconFolderClose}\"\n .iconFile=\"${item.iconFile || this.iconFile}\"\n ?highlighted=\"${item.highlighted}\"\n ?isDirectory=\"${item.subitems.length > 0}\"\n ></dh-tree-item>\n `;\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n this.showFolderOrFileImage();\n const config = { attributes: true, childList: true, subtree: true };\n const callback = (mutationList, observer2) => {\n for (const mutation of mutationList) {\n if (mutation.type === \"childList\") {\n this.showFolderOrFileImage();\n }\n }\n };\n const observer = new MutationObserver(callback);\n observer.observe(this, config);\n }\n async showFolderOrFileImage() {\n const folder = await this.folder;\n const file = await this.file;\n const arrow = await this.arrow;\n if (this.isDirectory) {\n folder.classList.remove(\"hidden\");\n file.classList.add(\"hidden\");\n } else {\n file.classList.remove(\"hidden\");\n folder.classList.add(\"hidden\");\n }\n if (this.isDirectory) {\n arrow.classList.remove(\"visibility\");\n } else {\n arrow.classList.add(\"visibility\");\n }\n }\n isHidden() {\n const item = this.renderRoot.querySelector(\"#item\");\n const childList = item?.children;\n let isHidden = false;\n if (childList) {\n isHidden = Array.from(childList).some((child) => {\n return child.classList.contains(\"submenu\") && child.classList.contains(\"hidden\");\n });\n }\n return isHidden;\n }\n openCloseTree(element) {\n if (element.tagName.toLowerCase() == \"dh-tree-item\") {\n const newTarget = this.renderRoot.querySelector(\"#arrow\");\n if (newTarget) {\n element = newTarget;\n }\n }\n const elementId = element.id;\n if (elementId == \"folder\" || elementId == \"arrow\") {\n this.openOrCloseMenu(element);\n } else {\n this.itemClicked();\n }\n }\n async toggleFolderImage(target) {\n let isHidden = false;\n let childList;\n let parentElement = target.parentElement;\n if (parentElement) {\n parentElement = parentElement.parentElement;\n if (parentElement) {\n parentElement = parentElement.parentElement;\n }\n }\n if (parentElement) {\n childList = parentElement.children;\n isHidden = Array.from(childList).some((child) => {\n return child.classList.contains(\"submenu\") && child.classList.contains(\"hidden\");\n });\n if (target.getAttribute(\"id\") == \"folder\") {\n const arrow = await this.arrow;\n if (isHidden) {\n target.classList.remove(this.iconFolderOpen);\n target.classList.add(this.iconFolderClose);\n arrow.classList.add(\"right\");\n } else {\n target.classList.remove(this.iconFolderClose);\n target.classList.add(this.iconFolderOpen);\n arrow.classList.remove(\"right\");\n }\n } else {\n const folder = await this.folder;\n if (isHidden) {\n target.classList.add(\"right\");\n folder.classList.remove(this.iconFolderOpen);\n folder.classList.add(this.iconFolderClose);\n } else {\n target.classList.remove(\"right\");\n folder.classList.remove(this.iconFolderClose);\n folder.classList.add(this.iconFolderOpen);\n }\n }\n }\n }\n doubleClick(event2) {\n event2.stopPropagation();\n clearTimeout(this.timer);\n this.prevent = true;\n this.openFolderAfterDoubleClick(event2);\n }\n oneClick(event2) {\n event2.stopPropagation();\n const eventTarget = event2.target;\n this.timer = window.setTimeout(() => {\n if (!this.prevent) {\n this.itemClick(eventTarget);\n }\n }, this.delay);\n this.prevent = false;\n }\n async itemClick(target) {\n if (this.isDirectory) {\n const arrow = await this.arrow;\n const wasAlreadySelected = this.classList.contains(\"selected\");\n const isCurrentlyOpen = this.isMenuOpen();\n if (wasAlreadySelected || !isCurrentlyOpen) {\n this.openOrCloseMenu(arrow);\n }\n }\n this.itemClicked();\n }\n isMenuOpen() {\n const submenuElement = this.renderRoot.querySelector(\"#submenu\");\n return submenuElement ? !submenuElement.classList.contains(\"hidden\") : false;\n }\n async openFolderAfterDoubleClick(event2) {\n event2.stopPropagation();\n const arrow = await this.arrow;\n this.openOrCloseMenu(arrow);\n }\n async openOrCloseMenu(target) {\n if (!this.isDirectory) {\n return;\n }\n let parentElement = target.parentElement?.parentElement;\n if (parentElement) {\n parentElement = parentElement.parentElement;\n if (parentElement) {\n const childList = Array.from(parentElement.children).filter((item) => item.classList.contains(\"submenu\"));\n childList.forEach((child) => {\n child.classList.toggle(\"hidden\");\n });\n }\n }\n this.toggleFolderImage(target);\n }\n itemClicked() {\n this.treeitemclicked.dispatch(this);\n }\n};\nDhTreeItem.styles = css`\n ${unsafeCSS(style$B)}\n `;\n__decorateClass$B([\n queryAsync(\"#file\")\n], DhTreeItem.prototype, \"file\", 2);\n__decorateClass$B([\n queryAsync(\"#folder\")\n], DhTreeItem.prototype, \"folder\", 2);\n__decorateClass$B([\n queryAsync(\"#arrow\")\n], DhTreeItem.prototype, \"arrow\", 2);\n__decorateClass$B([\n state()\n], DhTreeItem.prototype, \"treeItem\", 2);\n__decorateClass$B([\n property()\n], DhTreeItem.prototype, \"iconFolderOpen\", 1);\n__decorateClass$B([\n property()\n], DhTreeItem.prototype, \"iconFolderClose\", 1);\n__decorateClass$B([\n property()\n], DhTreeItem.prototype, \"iconFile\", 1);\n__decorateClass$B([\n property({ type: Boolean })\n], DhTreeItem.prototype, \"isDirectory\", 2);\n__decorateClass$B([\n property({ type: Boolean, reflect: true })\n], DhTreeItem.prototype, \"highlighted\", 2);\n__decorateClass$B([\n event({ bubbles: true, cancelable: true, composed: true }, \"treeitemclicked\")\n], DhTreeItem.prototype, \"treeitemclicked\", 2);\nDhTreeItem = __decorateClass$B([\n customElement(\"dh-tree-item\")\n], DhTreeItem);\n\nvar style$A = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n max-height: 100%;\\n overflow: auto;\\n}\\n\\n#horizontal-scroll-wrapper {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n flex: 1;\\n overflow-x: auto;\\n overflow-y: clip;\\n scrollbar-gutter: stable;\\n}\\n\\n#scroll-container {\\n flex: 1;\\n overflow-y: auto;\\n overflow-x: visible;\\n scrollbar-gutter: stable;\\n min-width: fit-content;\\n}\\n\\n#scroll-container {\\n scrollbar-width: thin;\\n scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#scroll-container::-webkit-scrollbar {\\n width: var(--dh-scrollbar-width, 8px);\\n height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#scroll-container::-webkit-scrollbar-thumb {\\n background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#scroll-container::-webkit-scrollbar-thumb:hover {\\n background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#scroll-container::-webkit-scrollbar-track {\\n background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n#horizontal-scroll-wrapper {\\n scrollbar-width: thin;\\n scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#horizontal-scroll-wrapper::-webkit-scrollbar {\\n width: var(--dh-scrollbar-width, 8px);\\n height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#horizontal-scroll-wrapper::-webkit-scrollbar-thumb {\\n background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#horizontal-scroll-wrapper::-webkit-scrollbar-thumb:hover {\\n background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#horizontal-scroll-wrapper::-webkit-scrollbar-track {\\n background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n#table-container {\\n min-width: fit-content;\\n}\\n\\n.table {\\n display: table;\\n table-layout: fixed;\\n min-width: 100%;\\n}\\n\\n.th {\\n display: table;\\n table-layout: fixed;\\n min-width: calc(100% - var(--_header-gutter, 0px));\\n max-width: calc(100% - var(--_header-gutter, 0px));\\n flex-shrink: 0;\\n z-index: 10;\\n overflow: hidden;\\n}\\n\\n.th > dh-table-row {\\n display: table-row;\\n}\\n\\n.tb {\\n display: table-row-group;\\n}\\n\\n#manipulation-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 4px;\\n}\\n\\n.up-down-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 0.1rem;\\n}\\n\\n.flex-row {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n\\n#filter-container {\\n position: sticky;\\n top: 0;\\n}\\n\\nbutton {\\n cursor: pointer !important;\\n background: none;\\n border: none;\\n display: flex;\\n align-items: center;\\n}\\n\\n.article-button-container {\\n display: flex;\\n width: 100%;\\n justify-content: center;\\n}\\n\\n.pointer {\\n cursor: pointer !important;\\n}\\n\\n.button:hover {\\n background-color: var(--dh-state-hover-bg, transparent);\\n}\\n\\n::slotted([slot=table-head]) {\\n display: table-row;\\n}\\n\\n#table-head > dh-table-row {\\n display: table-row;\\n}\\n\\n::slotted([slot=table-body].selected) {\\n background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n#table-body > dh-table-row.selected {\\n background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n.tb > dh-table-row.selected {\\n background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n::slotted([slot=table-body]:hover) {\\n background-color: var(--dh-state-hover-bg, transparent);\\n}\\n\\n#table-body > dh-table-row:hover {\\n background-color: var(--dh-state-hover-bg, transparent);\\n}\\n\\n.tb > dh-table-row:hover {\\n background-color: var(--dh-state-hover-bg, transparent);\\n}\\n\\n::slotted([slot=table-body].hidden) {\\n display: none;\\n}\\n\\n#table-body > dh-table-row.hidden {\\n display: none !important;\\n}\\n\\n#infobox-container {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n z-index: 1000;\\n transform: translateX(-50%) translateY(-50%);\\n}\\n\\n#table-dimmer {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translateX(-50%) translateY(-50%);\\n}\\n\\n.manipulation-img {\\n width: 2rem;\\n}\\n\\n.position-img {\\n width: 1rem;\\n}\\n\\n#position-up, #position-down {\\n padding: 0rem;\\n}\\n\\n.checkedAll {\\n background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n.img {\\n height: 100%;\\n}\\n\\n.hidden {\\n display: none !important;\\n}\";\n\nclass TableRowArray extends Array {\n constructor(...args) {\n super(...args);\n this.isNewCopy = false;\n this.isNewRow = false;\n this.isSelected = false;\n this.isModified = false;\n this.notDeletable = false;\n this.notEditable = false;\n this.notCloneable = false;\n this.id = \"\";\n this.modifiedFields = [];\n this.position = 0;\n this.active = true;\n this.hasChildren = false;\n this.isChild = false;\n }\n clone() {\n const clonedRow = new TableRowArray();\n for (const cell of this) {\n const clonedCell = { ...cell };\n clonedCell.objectValues = cell.objectValues ? cell.objectValues.map((option) => ({ ...option, suboptions: option.suboptions ? [...option.suboptions] : [] })) : [];\n clonedCell.attributes = cell.attributes ? [...cell.attributes] : [];\n clonedRow.push(clonedCell);\n }\n clonedRow.isSelected = this.isSelected;\n clonedRow.isNewCopy = this.isNewCopy;\n clonedRow.isNewRow = this.isNewRow;\n clonedRow.isModified = this.isModified;\n clonedRow.notCloneable = this.notCloneable;\n clonedRow.notDeletable = this.notDeletable;\n clonedRow.notEditable = this.notEditable;\n clonedRow.modifiedFields = [...this.modifiedFields];\n clonedRow.active = this.active;\n clonedRow.hasChildren = this.hasChildren;\n clonedRow.isChild = this.isChild;\n clonedRow.id = crypto.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n clonedRow.userDetails = this.userDetails;\n return clonedRow;\n }\n}\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction commonjsRequire(path) {\n\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n}\n\nvar cputils$1 = {exports: {}};\n\nvar cptable$2 = {exports: {}};\n\n/*! cptable.js (C) 2013-present SheetJS -- http://sheetjs.com */\n\nvar hasRequiredCptable;\n\nfunction requireCptable () {\n\tif (hasRequiredCptable) return cptable$2.exports;\n\thasRequiredCptable = 1;\n\t(function (module) {\n\t\t/*jshint -W100 */\n\t\tvar cptable = {version:\"1.15.0\"};\n\t\tcptable[37] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñ¢.<(+|&éêëèÃîïìß!$*);¬-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿Ã�Ã�Þ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[437] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäà åçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáÃóúñѪº¿âŒ�¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[500] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñ[.<(+!&éêëèÃîïìß]$*);^-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿Ã�Ã�Þ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[737] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏ�σςτυφχψ░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀ωάÎήϊίόÏ�ϋώΆΈΉΊΌΎÎ�±≥≤ΪΫ÷≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[775] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ĆüéÄ�äģåćłēŖŗīŹÄÅÉæÆÅ�öĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżźâ€�¦©®¬½¼Å�«»░▒▓│┤ĄČĘĖ╣║╗â•�ĮŠâ”�└┴┬├─┼ŲŪ╚╔╩╦╠â•�╬ŽąÄ�ęėįšųūž┘┌█▄▌â–�▀ÓßŌŃõÕµńĶķĻļņĒŅ’Â±“¾¶§÷„°∙·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[850] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäà åçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáÃóúñѪº¿®¬½¼¡«»░▒▓│┤Ã�ÂÀ©╣║╗â•�¢¥â”�└┴┬├─┼ãÃ╚╔╩╦╠â•�╬¤ðÃ�ÊËÈıÃ�ÃŽÃ�┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÃ�¯´Â±‗¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[852] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäůćçłëÅ�őîŹÄĆÉĹĺôöĽľŚśÖÜŤťÅ�×Ä�áÃóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤Ã�ÂĚŞ╣║╗â•�Żżâ”�└┴┬├─┼Ăă╚╔╩╦╠â•�╬¤đÄ�ĎËÄ�ŇÃ�Îě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÃ�ţ´ÂË�˛ˇ˘§÷¸°¨˙űŘř■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[855] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёÐ�єЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџÐ�юЮъЪаÐ�бБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗â•�йЙâ”�└┴┬├─┼кК╚╔╩╦╠â•�╬¤лЛмМнÐ�оОп┘┌█▄ПÑ�▀ЯрРÑ�СтТуУжЖвВьЬ№ÂыЫзЗшШÑ�ÐщЩчЧ§■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[857] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäà åçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáÃóúñÑĞ𿮬½¼¡«»░▒▓│┤Ã�ÂÀ©╣║╗â•�¢¥â”�└┴┬├─┼ãÃ╚╔╩╦╠â•�╬¤ºªÊËÈ�Ã�ÃŽÃ�┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´Â±�¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[860] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâãà Ã�çêÊèÃ�ÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáÃóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[861] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäà åçêëèÃ�ðÞÄÅÉæÆôöþûÃ�ýÖÜø£Ø₧ƒáÃóúÃ�Ã�ÓÚ¿âŒ�¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[862] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~×�בגדהוזחטיךכל×�×ž×Ÿ× ×¡×¢×£×¤×¥×¦×§×¨×©×ªÂ¢Â£Â¥â‚§Æ’Ã¡ÃóúñѪº¿âŒ�¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[863] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâÂà ¶çêëèïî‗À§ÉÈÊôËÃ�ûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯ÎâŒ�¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[864] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$Ùª&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴â”�┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� Âﺂ£¤ﺄ��ﺎïº�ﺕﺙ،ïº�ﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀïº�ﺃﺅﻊﺋïº�ﺑﺓﺗﺛﺟﺣﺧﺩﺫïºïº¯ïº³ïº·ïº»ïº¿ï»�ﻅﻋï»�¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫï»ï»¯ï»³ïº½ï»Œï»Žï»�ﻡﹽّﻥﻩﻬﻰﻲï»�ﻕﻵﻶï»�ﻙﻱ■�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[865] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäà åçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáÃóúñѪº¿âŒ�¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[866] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ð�БВГДЕЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀рÑ�туфхцчшщъыьÑ�ÑŽÑ�Ð�ёЄєЇїЎў°∙·√№¤■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[869] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Î�²³ά£ÎήίϊÎ�ÏŒÏ�ΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜÎ�╣║╗â•�ΞΟâ”�└┴┬├─┼ΠΡ╚╔╩╦╠â•�╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπÏ�σςτ΄Â±υφχ§ψ΅°¨ωϋΰώ■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[874] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“â€�•–—�������� à¸�ขฃคฅฆงจฉชซฌà¸�ฎà¸�à¸�ฑฒณดตถทธนบปผà¸�พฟภมยรฤลฦวศษสหฬà¸à¸®à¸¯à¸°à¸±à¸²à¸³à¸´à¸µà¸¶à¸·à¸¸à¸¹à¸ºï¿½ï¿½ï¿½ï¿½à¸¿à¹€à¹�โใไๅๆ็่้๊๋์à¹�๎à¹�à¹�๑๒๓๔๕๖๗๘๙๚๛����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[875] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜÎ�ΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩΪΫ|,%_>?¨ΆΈΉ ΊΌΎÎ�`:#@'=\\\"Î…abcdefghiαβγδεζ°jklmnopqrηθικλμ´~stuvwxyzνξοπÏ�σ£άÎήϊίόÏ�ϋώςτυφχψ{ABCDEFGHIÂωÎ�ΰ‘―}JKLMNOPQR±½\\u001a·’¦\\\\\\u001aSTUVWXYZ²§\\u001a\\u001a«¬0123456789³©\\u001a\\u001a»Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[932] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������。「」、・ヲァィゥェォャï½ï½®ï½¯ï½°ï½±ï½²ï½³ï½´ï½µï½¶ï½·ï½¸ï½¹ï½ºï½»ï½¼ï½½ï½¾ï½¿ï¾€ï¾�ツテトナニヌネノハヒフï¾�ホï¾�ï¾�ムメモヤユヨラリルレロワï¾�゙゚��������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"���������������������������������������������������������������� ã€�。,.・:;?ï¼�゛゜´`¨^ ̄_ヽヾã‚�ゞ〃ä»�々〆〇ー―â€�ï¼�\~∥|…‥‘’“â€�()〔〕[]{ï½�〈〉《》「ã€�『ã€�ã€�】+ï¼�±×�÷ï¼�â‰ ï¼œï¼žâ‰¦â‰§âˆžâˆ´â™‚â™€Â°â€²â€³â„ƒï¿¥ï¼„ï¿ ï¿¡ï¼…ï¼ƒï¼†ï¼Šï¼ Â§â˜†â˜…â—‹â—�◎◇◆□■△▲▽▼※〒→â†�↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽âˆ�∵∫∬�������ʼn♯â™â™ªâ€ ‡¶����◯���\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"�������������������������������������������������������������������������������ï¼�123456789�������ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz����ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん��������������\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミ�ムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î‘ΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�����������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмн�опрÑ�туфхцчшщъыьÑ�ÑŽÑ��������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂�����������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[135] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬â‘â‘®â‘¯â‘°â‘±â‘²â‘³â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ã�‰ãŒ”㌢ã��㌘㌧㌃㌶ã�‘ã�—ãŒ�㌦㌣㌫ã�ŠãŒ»ãŽœãŽ�㎞㎎ãŽ�ã�„㎡��������ã�»ï¿½ã€�〟№ã��℡㊤㊥㊦㊧㊨㈱㈲㈹ã�¾ã�½ã�¼â‰’≡∫∮∑√⊥∠∟⊿∵∩∪���������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜ç©�悪æ�¡æ¸¥æ—葦芦鯵梓圧斡扱宛å§�虻飴絢綾鮎或粟袷安庵按暗案闇éž�æ��以伊ä½�ä¾�å�‰å›²å¤·å§”å¨�尉惟æ„�慰易椅為ç•�ç•°ç§»ç¶ç·¯èƒƒè�Žè¡£è¬‚é�•é�ºåŒ»äº•亥域育éƒ�磯一壱溢逸稲茨芋鰯å…�å�°å’½å“¡å› 姻引飲淫胤è”���\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é™¢é™°éš éŸ»å�‹å�³å®‡çƒ�羽迂雨å�¯éµœçªºä¸‘碓臼渦嘘唄æ¬�蔚鰻姥厩浦瓜é–�噂云é�‹é›²è��餌å�¡å–¶å¬°å½±æ˜ æ›³æ „æ°¸æ³³æ´©ç‘›ç›ˆç©Žé ´è‹±è¡›è© é‹æ¶²ç–«ç›Šé§…悦è¬�越閲榎åŽå††ï¿½åœ’å °å¥„å®´å»¶æ€¨æŽ©æ�´æ²¿æ¼”炎焔煙燕猿ç¸�艶苑薗é� 鉛鴛塩於汚甥凹央奥往応押旺横欧殴王ç¿�襖鴬鴎黄岡沖è�»å„„屋憶臆桶牡乙俺å�¸æ�©æ¸©ç©�éŸ³ä¸‹åŒ–ä»®ä½•ä¼½ä¾¡ä½³åŠ å�¯å˜‰å¤�å«�å®¶å¯¡ç§‘æš‡æžœæž¶æŒæ²³ç�«ç�‚ç¦�禾稼箇花苛茄è�·è�¯è�“è�¦èª²å˜©è²¨è¿¦é�ŽéœžèšŠä¿„峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔æ�¢æ‡�戒æ‹�改���\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������é�晦械海ç�°ç•Œçš†çµµèŠ¥èŸ¹é–‹éšŽè²�凱劾外咳害崖慨概涯ç¢�蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇å�„å»“æ‹¡æ’¹æ ¼æ ¸æ®»ç�²ç¢ºç©«è¦šè§’赫較éƒé–£éš”é�©å¦å²³æ¥½é¡�é¡ŽæŽ›ç¬ æ¨«ï¿½æ©¿æ¢¶é°�潟割å–�æ�°æ‹¬æ´»æ¸‡æ»‘è‘›è¤�轄且鰹å�¶æ¤›æ¨ºéž„æ ªå…œç«ƒè’²é‡œéŽŒå™›é´¨æ ¢èŒ…è�±ç²¥åˆˆè‹…ç“¦ä¹¾ä¾ƒå† å¯’åˆŠå‹˜å‹§å·»å–šå ªå§¦å®Œå®˜å¯›å¹²å¹¹æ‚£æ„Ÿæ…£æ†¾æ�›æ•¢æŸ‘æ¡“æ£ºæ¬¾æ“æ±—漢澗潅環甘監看竿管簡緩缶翰è‚�艦莞観諌貫還鑑間閑関陥韓館舘丸å�«å²¸å·ŒçŽ©ç™Œçœ¼å²©ç¿«è´‹é›�é ‘é¡”é¡˜ä¼�伎å�±å–œå™¨åŸºå¥‡å¬‰å¯„å²�希幾忌æ�®æœºæ——既期棋棄���\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������機帰毅気汽畿祈å£ç¨€ç´€å¾½è¦�記貴起軌è¼�飢騎鬼亀å�½å„€å¦“å®œæˆ¯æŠ€æ“¬æ¬ºçŠ ç–‘ç¥‡ç¾©èŸ»èª¼è°æŽ¬è�Šéž å�‰å�ƒå–«æ¡”æ©˜è©°ç §æ�µé»�å�´å®¢è„šè™�逆丘久仇休å�Šå�¸å®®å¼“急救�朽求汲泣ç�¸ç�ƒç©¶çª®ç¬ˆç´šç³¾çµ¦æ—§ç‰›åŽ»å±…å·¨æ‹’æ‹ æŒ™æ¸ è™šè¨±è·�鋸æ¼�禦éšäº¨äº«äº¬ä¾›ä¾ 僑兇競共凶å�”匡å�¿å�«å–¬å¢ƒå³¡å¼·å½Šæ€¯æ��æ�挟教橋æ³�ç‹‚ç‹çŸ¯èƒ¸è„…興蕎郷é�¡éŸ¿é¥—驚仰å‡�å°æš�æ¥å±€æ›²æ¥µçމæ¡�ç²�僅勤å�‡å·¾éŒ¦æ–¤æ¬£æ¬½ç�´ç¦�禽ç‹ç·Šèйè�Œè¡¿è¥Ÿè¬¹è¿‘金å�ŸéŠ€ä¹�倶å�¥åŒºç‹—玖矩苦躯駆駈駒具愚虞喰空å�¶å¯“é�‡éš…串櫛釧屑屈���\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������掘窟沓é�´è½¡çªªç†Šéšˆç²‚æ —ç¹°æ¡‘é�¬å‹²å�›è–«è¨“群è»�郡å�¦è¢ˆç¥�係傾刑兄啓åœç�ªåž‹å¥‘形径æ�µæ…¶æ…§æ†©æŽ²æ�ºæ•¬æ™¯æ¡‚渓畦稽系経継繋罫茎è�Šè›�計詣è¦è»½é šé¶�芸迎鯨�劇戟撃激隙æ¡�å‚‘æ¬ æ±ºæ½”ç©´çµ�血訣月件倹倦å�¥å…¼åˆ¸å‰£å–§åœ�å …å«Œå»ºæ†²æ‡¸æ‹³æ�²æ¤œæ¨©ç‰½çŠ¬çŒ®ç ”ç¡¯çµ¹çœŒè‚©è¦‹è¬™è³¢è»’é�£é�µé™ºé¡•験鹸元原厳幻弦減æº�玄ç�¾çµƒèˆ·è¨€è«ºé™�乎個å�¤å‘¼å›ºå§‘å¤å·±åº«å¼§æˆ¸æ•…枯湖ç‹�糊袴股胡è�°è™Žèª‡è·¨éˆ·é›‡é¡§é¼“五互ä¼�å�ˆå‘‰å�¾å¨¯å¾Œå¾¡æ‚Ÿæ¢§æªŽç‘šç¢�語誤è·é†�乞鯉交佼侯候倖光公功効勾厚å�£å�‘���\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������å�Žå–‰å�‘垢好å”å�å®�工巧巷幸広庚康弘æ�’慌抗拘控攻昂晃更æ�æ ¡æ¢—æ§‹æ±Ÿæ´ªæµ©æ¸¯æº�ç”²çš‡ç¡¬ç¨¿ç³ ç´…ç´˜çµžç¶±è€•è€ƒè‚¯è‚±è…”è†�航è�’è¡Œè¡¡è¬›è²¢è³¼éƒŠé…µé‰±ç ¿é‹¼é–¤é™�ï¿½é …é¦™é«˜é´»å‰›åŠ«å�·å�ˆå£•æ‹·æ¿ è±ªè½Ÿéº¹å…‹åˆ»å‘Šå›½ç©€é…·éµ é»’ç�„漉腰甑忽惚骨狛込æ¤é ƒä»Šå›°å�¤å¢¾å©šæ�¨æ‡‡æ˜�æ˜†æ ¹æ¢±æ··ç—•ç´ºè‰®é‚些ä½�å�‰å”†åµ¯å·¦å·®æŸ»æ²™ç‘³ç ‚è©�鎖裟å��座挫債催å†�最哉塞妻宰彩æ‰�æŽ¡æ ½æ³æ¸ˆç�½é‡‡çŠ€ç •ç ¦ç¥æ–Žç´°è�œè£�載際剤在æ��罪財冴å�‚é˜ªå ºæ¦Šè‚´å’²å´ŽåŸ¼ç¢•é·ºä½œå‰Šå’‹æ�¾æ˜¨æœ”柵窄ç–索錯桜é®ç¬¹åŒ™å†Šåˆ·ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¯Ÿæ‹¶æ’®æ“¦æœæ®ºè–©é›‘çš�鯖æ�ŒéŒ†é®«çš¿æ™’三傘å�‚山惨撒散桟燦ç�Šç”£ç®—纂蚕讃賛酸é¤�斬暫残仕仔伺使刺å�¸å�²å—£å››å£«å§‹å§‰å§¿å�å±�市師志æ€�æŒ‡æ”¯åœæ–¯æ–½æ—¨æž�æ¢ï¿½æ»æ°�ç�…祉ç§�糸紙紫肢脂至視詞詩試誌諮資賜雌飼æ¯äº‹ä¼¼ä¾�å…�å—寺慈æŒ�時次滋治爾璽痔ç£�示而耳自蒔辞æ±�鹿å¼�è˜é´«ç«ºè»¸å®�雫七å�±åŸ·å¤±å«‰å®¤æ‚‰æ¹¿æ¼†ç–¾è³ªå®Ÿè”€ç¯ å�²æŸ´èŠ�屡蕊縞舎写射æ�¨èµ¦æ–œç…®ç¤¾ç´—者è¬�車é�®è›‡é‚ªå€Ÿå‹ºå°ºæ�“ç�¼çˆµé…Œé‡ˆéŒ«è‹¥å¯‚弱惹主å�–守手朱殊狩ç� 種腫趣酒首儒å�—呪寿授樹綬需囚å�Žå‘¨ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������宗就州修æ„�拾洲秀秋終ç¹�ç¿’è‡èˆŸè’�衆襲è®�蹴輯週酋酬集醜什ä½�å……å��従戎柔æ±�渋ç�£ç¸¦é‡�銃å�”夙宿淑ç¥�縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡é�µé†‡é †å‡¦åˆ�所暑曙渚庶緒署書薯藷諸助å�™å¥³åº�å¾�æ�•鋤除傷償å‹�åŒ å�‡å�¬å“¨å•†å”±å˜—奨妾娼宵将å°�å°‘å°šåº„åºŠå» å½°æ‰¿æŠ„æ‹›æŽŒæ�·æ˜‡æ˜Œæ˜æ™¶æ�¾æ¢¢æ¨Ÿæ¨µæ²¼æ¶ˆæ¸‰æ¹˜ç„¼ç„¦ç…§ç—‡çœ�ç¡�ç¤�ç¥¥ç§°ç« ç¬‘ç²§ç´¹è‚–è�–蒋蕉è¡�裳訟証詔詳象賞醤鉦é�¾é�˜éšœéž˜ä¸Šä¸ˆä¸žä¹—å†—å‰°åŸŽå ´å£Œå¬¢å¸¸æƒ…æ“¾æ�¡æ�–浄状畳穣蒸è²é†¸éŒ 嘱埴飾���\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‹æ¤�æ®–ç‡ç¹”è�·è‰²è§¦é£Ÿè�•è¾±å°»ä¼¸ä¿¡ä¾µå”‡å¨ å¯�審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進é‡�震人ä»�刃塵壬尋甚尽腎訊迅陣é�笥è«�é ˆé…¢å›³åŽ¨ï¿½é€—å�¹åž‚帥推水炊ç�¡ç²‹ç¿ è¡°é�‚é…”éŒ�錘éš�瑞髄崇嵩数枢趨雛æ�®æ�‰æ¤™è�…é —é›€è£¾æ¾„æ‘ºå¯¸ä¸–ç€¬ç•�是凄制勢姓å¾�性æˆ�æ”¿æ•´æ˜Ÿæ™´æ£²æ –æ£æ¸…牲生盛精è�–å£°è£½è¥¿èª èª“è«‹é€�醒é�’é�™æ–‰ç¨Žè„†éš»å¸æƒœæˆšæ–¥æ˜”æž�石ç©�ç±�績脊責赤跡蹟碩切拙接摂折è¨çªƒç¯€èª¬é›ªçµ¶èˆŒè�‰ä»™å…ˆå�ƒå� 宣専尖å·�æˆ¦æ‰‡æ’°æ “æ ´æ³‰æµ…æ´—æŸ“æ½œç…Žç…½æ—‹ç©¿ç®ç·šï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������繊羨腺舛船薦詮賎践é�¸é�·éŠéŠ‘é–ƒé®®å‰�善漸然全禅繕膳糎噌塑岨措曾曽楚狙ç–�ç–Žç¤Žç¥–ç§Ÿç²—ç´ çµ„è˜‡è¨´é˜»é�¡é¼ 僧創å�Œå�¢å€‰å–ªå£®å¥�爽宋層åŒ�惣想æ�œæŽƒæŒ¿æŽ»ï¿½æ“�早曹巣æ§�槽漕燥争痩相窓糟ç·�ç¶œè�¡è�‰è�˜è‘¬è’¼è—»è£…èµ°é€�é�鎗霜騒åƒ�å¢—æ†Žè‡“è”µè´ˆé€ ä¿ƒå�´å‰‡å�³æ�¯æ�‰æ�Ÿæ¸¬è¶³é€Ÿä¿—属賊æ—�ç¶šå�’袖其æ�ƒå˜å«å°Šæ��æ�‘é�œä»–å¤šå¤ªæ±°è©‘å”¾å •å¦¥æƒ°æ‰“æŸ�èˆµæ¥•é™€é§„é¨¨ä½“å †å¯¾è€�å²±å¸¯å¾…æ€ æ…‹æˆ´æ›¿æ³°æ»žèƒŽè…¿è‹”è¢‹è²¸é€€é€®éšŠé»›é¯›ä»£å�°å¤§ç¬¬é†�題鷹æ»�瀧å�“啄宅托択拓沢濯ç�¢è¨—é�¸æ¿�諾茸凧蛸å�ªï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������å�©ä½†é�”辰奪脱巽竪辿棚谷狸鱈樽誰丹å�˜å˜†å�¦æ‹…æŽ¢æ—¦æŽæ·¡æ¹›ç‚çŸç«¯ç®ªç¶»è€½èƒ†è›‹èª•é�›å›£å£‡å¼¾æ–暖檀段男談値知地弛æ�¥æ™ºæ± 痴稚置致蜘é�…馳築畜竹ç‘蓄�é€�秩窒茶嫡ç�€ä¸ä»²å®™å¿ 抽昼柱注虫衷註酎鋳é§�樗瀦猪苧著貯ä¸�兆凋喋寵帖帳åº�弔張彫徴懲挑暢æœ�潮牒町眺è�´è„¹è…¸è�¶èª¿è«œè¶…è·³éŠšé•·é ‚é³¥å‹…æ�—直朕沈ç��è³ƒéŽ®é™³æ´¥å¢œæ¤Žæ§Œè¿½éŽšç—›é€šå¡šæ ‚æŽ´æ§»ä½ƒæ¼¬æŸ˜è¾»è”¦ç¶´é�”椿潰å�ªå£·å¬¬ç´¬çˆªå�Šé‡£é¶´äºä½Žå�œå�µå‰ƒè²žå‘ˆå ¤å®šå¸�底åºå»·å¼Ÿæ‚ŒæŠµæŒºæ��æ¢¯æ±€ç¢‡ç¦Žç¨‹ç· è‰‡è¨‚è«¦è¹„é€“ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������邸é„釘鼎泥摘擢敵滴的笛é�©é�‘溺哲徹撤è½�è¿é‰„典填天展店添çº�甜貼転顛点ä¼�殿澱田電兎å��å µå¡—å¦¬å± å¾’æ–—æ�œæ¸¡ç™»è�Ÿè³é€”都é��ç ¥ç ºåŠªåº¦åœŸå¥´æ€’å€’å…šå†¬ï¿½å‡�刀å”�塔塘套宕島嶋悼投æ�æ�±æ¡ƒæ¢¼æ£Ÿç›—淘湯涛ç�¯ç‡ˆå½“痘祷ç‰ç”ç’糖統到董蕩藤討謄豆è¸�逃é€�é�™é™¶é 騰闘åƒ�å‹•å�Œå ‚導憧撞洞瞳童胴è�„é�“éŠ…å³ é´‡åŒ¿å¾—å¾³æ¶œç‰¹ç�£ç¦¿ç¯¤æ¯’ç‹¬èªæ ƒæ©¡å‡¸çª�椴届鳶苫寅酉瀞噸屯惇敦沌豚é��é “å‘‘æ›‡éˆ�奈那内ä¹�凪薙謎ç�˜æ�ºé�‹æ¥¢é¦´ç¸„ç•·å�—æ¥ è»Ÿé›£æ±�二尼å¼�迩匂賑肉虹廿日乳入���\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������如尿韮任妊å¿�èª�濡禰祢寧葱猫熱年念æ�»æ’šç‡ƒç²˜ä¹ƒå»¼ä¹‹åŸœå𢿂©æ¿ƒç´�能脳膿農覗蚤巴把æ’覇æ�·æ³¢æ´¾ç�¶ç ´å©†ç½µèŠé¦¬ä¿³å»ƒæ‹�排敗æ�¯ç›ƒç‰ŒèƒŒè‚ºè¼©é…�å€�åŸ¹åª’æ¢…ï¿½æ¥³ç…¤ç‹½è²·å£²è³ é™ªé€™è�¿ç§¤çŸ§è�©ä¼¯å‰¥å�šæ‹�æŸ�泊白箔粕舶薄迫æ›�æ¼ çˆ†ç¸›èŽ«é§�éº¦å‡½ç®±ç¡²ç®¸è‚‡çˆæ«¨å¹¡è‚Œç•‘ç• å…«é‰¢æºŒç™ºé†—é«ªä¼�罰抜ç�閥鳩噺塙蛤隼伴判å�Šå��å�›å¸†æ�¬æ–‘æ�¿æ°¾æ±Žç‰ˆçНç�ç•”ç¹�èˆ¬è—©è²©ç¯„é‡†ç…©é ’é£¯æŒ½æ™©ç•ªç›¤ç£�蕃蛮匪å�‘å�¦å¦ƒåº‡å½¼æ‚²æ‰‰æ‰¹æŠ«æ–�比泌疲皮碑秘緋罷肥被誹費é�¿é�žé£›æ¨‹ç°¸å‚™å°¾å¾®æž‡æ¯˜ç�µçœ‰ç¾Žï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������鼻柊稗匹疋é«å½¦è†�è�±è‚˜å¼¼å¿…ç•¢ç†é€¼æ¡§å§«åª›ç´�百謬俵彪標氷漂瓢票表評豹廟æ��病秒苗錨鋲蒜è›é°å“�å½¬æ–Œæµœç€•è²§è³“é »æ•�ç“¶ä¸�ä»˜åŸ å¤«å©¦å¯Œå†¨å¸ƒåºœæ€–æ‰¶æ•·ï¿½æ–§æ™®æµ®çˆ¶ç¬¦è…�膚芙èœè² 賦赴阜附侮撫æ¦èˆžè‘¡è•ªéƒ¨å°�楓風葺蕗ä¼�副復幅æœ�ç¦�腹複覆淵弗払沸ä»�物鮒分å�»å™´å¢³æ†¤æ‰®ç„šå¥®ç²‰ç³žç´›é›°æ–‡è�žä¸™ä½µå…µå¡€å¹£å¹³å¼ŠæŸ„並蔽閉陛米é �僻å£�癖碧別瞥蔑箆å��変片篇編辺返é��便勉娩å¼�éžä¿�舗鋪圃æ�•æ©ç”«è£œè¼”穂募墓慕戊暮æ¯�ç°¿è�©å€£ä¿¸åŒ…å‘†å ±å¥‰å®�峰峯崩庖抱æ�§æ”¾æ–¹æœ‹ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ³•æ³¡çƒ¹ç ²ç¸«èƒžèŠ³è�Œè“¬èœ‚褒訪豊邦鋒飽鳳鵬ä¹�亡å‚�剖å�Šå¦¨å¸½å¿˜å¿™æˆ¿æš´æœ›æŸ�棒冒紡肪膨謀貌貿鉾防å� é ¬åŒ—åƒ•å�œå¢¨æ’²æœ´ç‰§ç�¦ç©†é‡¦å‹ƒæ²¡æ®†å €å¹Œå¥”本翻凡盆�摩磨é”麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒æ¡�亦俣å�ˆæŠ¹æœ«æ²«è¿„ä¾ç¹éº¿ä¸‡æ…¢æº€æ¼«è”“味未é…巳箕岬密蜜湊蓑稔脈妙ç²�æ°‘çœ å‹™å¤¢ç„¡ç‰ŸçŸ›éœ§éµ¡æ¤‹å©¿å¨˜å†¥å��命明盟迷銘鳴姪ç‰�æ»…å…�棉綿緬é�¢éººæ‘¸æ¨¡èŒ‚å¦„åŸæ¯›çŒ›ç›²ç¶²è€—蒙儲木黙目æ�¢å‹¿é¤…尤戻籾貰å•�æ‚¶ç´‹é–€åŒ�也冶夜爺耶野弥矢厄役約薬訳èº�é�–柳薮鑓愉愈油癒���\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������è«è¼¸å”¯ä½‘優勇å�‹å®¥å¹½æ‚ 憂æ�–有柚湧涌猶猷由ç¥�裕誘é�Šé‚‘郵雄èž�夕予余与誉輿é �å‚幼妖容庸æ�šæ�ºæ“�曜楊様洋溶熔用窯羊耀葉蓉è¦�謡踊é�¥é™½é¤Šæ…¾æŠ‘欲�沃浴翌翼淀羅螺裸æ�¥èŽ±é ¼é›·æ´›çµ¡è�½é…ªä¹±å�µåµ�欄濫è—�è˜è¦§åˆ©å��å±¥æ�Žæ¢¨ç�†ç’ƒç—¢è£�è£¡é‡Œé›¢é™¸å¾‹çŽ‡ç«‹è‘ŽæŽ ç•¥åŠ‰æµ�溜ç�‰ç•™ç¡«ç²’隆竜é¾�侶慮旅虜了亮僚両凌寮料æ¢�涼猟療çžç¨œç³§è‰¯è«’é�¼é‡�é™µé ˜åŠ›ç·‘å€«åŽ˜æž—æ·‹ç‡�ç�³è‡¨è¼ªéš£é±—éºŸç‘ å¡�涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦æ´åˆ—劣烈裂廉æ�‹æ†�漣煉簾練è�¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è“®é€£éŒ¬å‘‚é¯æ«“炉賂路露労å©�廊弄朗楼榔浪æ¼�牢狼ç¯è€�è�¾è�‹éƒŽå…麓禄肋録論å€å’Œè©±æªè³„è„‡æƒ‘æž é·²äº™äº˜é°�è©«è—�蕨椀湾碗腕��������������������������������������������弌ä¸�丕个丱丶丼丿乂乖乘亂亅豫亊舒å¼�äºŽäºžäºŸäº äº¢äº°äº³äº¶ä»Žä»�仄仆仂仗仞ä»ä»Ÿä»·ä¼‰ä½šä¼°ä½›ä½�佗佇佶侈ä¾�侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚ä¿�俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆å�ƒå�‡æœƒå�•å��å�ˆå�šå�–å�¬å�¸å‚€å‚šå‚…傴傲���\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������僉僊傳僂僖僞僥åƒåƒ£åƒ®åƒ¹åƒµå„‰å„�儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉å†�å†‘å†“å†•å†–å†¤å†¦å†¢å†©å†ªå†«å†³å†±å†²å†°å†µå†½å‡…å‡‰å‡›å‡ è™•å‡©å‡ï¿½å‡°å‡µå‡¾åˆ„刋刔刎刧刪刮刳刹å‰�剄剋剌剞剔剪剴剩剳剿剽åŠ�劔劒剱劈劑辨辧劬åŠåŠ¼åŠµå‹�å‹�勗勞勣勦é£å‹ 勳勵勸勹匆匈甸åŒ�åŒ�åŒ�匕匚匣匯匱匳匸å�€å�†å�…丗å�‰å��凖å�žå�©å�®å¤˜å�»å�·åŽ‚åŽ–åŽ åŽ¦åŽ¥åŽ®åŽ°åŽ¶å�ƒç°’é›™å�Ÿæ›¼ç‡®å�®å�¨å�å�ºå��å�½å‘€å�¬å�å�¼å�®å�¶å�©å��呎å’�呵咎呟呱呷呰咒呻咀呶咄å’�咆哇咢咸咥咬哄哈咨���\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"����������������������������������������������������������������咫哂咤咾咼哘哥哦å”�唔哽哮å“哺哢唹啀啣啌售啜啅啖啗唸唳å•�喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎å™�ç‡Ÿå˜´å˜¶å˜²å˜¸ï¿½å™«å™¤å˜¯å™¬å™ªåš†åš€åšŠåš åš”åš�嚥嚮嚶嚴囂嚼å›�囃囀囈囎囑囓囗囮囹圀囿圄圉圈國åœ�圓團圖嗇圜圦圷圸å�Žåœ»å�€å��å�©åŸ€åžˆå�¡å�¿åž‰åž“åž åž³åž¤åžªåž°åŸƒåŸ†åŸ”åŸ’åŸ“å ŠåŸ–åŸ£å ‹å ™å �å¡²å ¡å¡¢å¡‹å¡°æ¯€å¡’å ½å¡¹å¢…å¢¹å¢Ÿå¢«å¢ºå£žå¢»å¢¸å¢®å£…å£“å£‘å£—å£™å£˜å£¥å£œå£¤å£Ÿå£¯å£ºå£¹å£»å£¼å£½å¤‚å¤Šå¤�夛梦夥夬å¤å¤²å¤¸å¤¾ç«’奕å¥�å¥Žå¥šå¥˜å¥¢å¥ å¥§å¥¬å¥©ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"����������������������������������������������������������������奸å¦�å¦�佞侫妣妲姆姨姜å¦�姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲å«�嬪嬶嬾åƒå…å€å‘å•åšå›å¥å©å°å³åµå¸æ–ˆåºå®€ï¿½å®ƒå®¦å®¸å¯ƒå¯‡å¯‰å¯”å¯�寤實寢寞寥寫寰寶寳尅將專å°�å°“å° å°¢å°¨å°¸å°¹å±�屆屎屓å±�å±�å±å±¬å±®ä¹¢å±¶å±¹å²Œå²‘岔妛岫岻岶岼岷峅岾峇峙峩峽峺å³å¶Œå³ªå´‹å´•崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢å¶�嶬嶮嶽å¶�嶷嶼巉å·�å·“å·’å·–å·›å·«å·²å·µå¸‹å¸šå¸™å¸‘å¸›å¸¶å¸·å¹„å¹ƒå¹€å¹Žå¹—å¹”å¹Ÿå¹¢å¹¤å¹‡å¹µå¹¶å¹ºéº¼å¹¿åº å»�廂廈å»�å»����\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������廖廣å»�廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉å½�彜弋弑弖弩å¼å¼¸å½�彈彌彎弯彑彖彗彙彡å½å½³å½·å¾ƒå¾‚å½¿å¾Šå¾ˆå¾‘å¾‡å¾žå¾™å¾˜å¾ å¾¨å¾å¾¼å¿–忻忤忸忱å¿�悳忿怡æ� �怙æ€�怩怎怱怛怕怫怦æ€�怺æ�šæ��æ�ªæ�·æ�Ÿæ�Šæ�†æ��æ�£æ�ƒæ�¤æ�‚æ�¬æ�«æ�™æ‚�æ‚�æƒ§æ‚ƒæ‚šæ‚„æ‚›æ‚–æ‚—æ‚’æ‚§æ‚‹æƒ¡æ‚¸æƒ æƒ“æ‚´å¿°æ‚½æƒ†æ‚µæƒ˜æ…�愕愆惶惷愀惴惺愃愡惻惱æ„�愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟æ…�慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹æ‡�懦懣懶懺懴懿懽懼懾戀戈戉æˆ�戌戔戛���\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������戞戡截戮戰戲戳æ‰�æ‰Žæ‰žæ‰£æ‰›æ‰ æ‰¨æ‰¼æŠ‚æŠ‰æ‰¾æŠ’æŠ“æŠ–æ‹”æŠƒæŠ”æ‹—æ‹‘æŠ»æ‹�拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵æ��挾æ��æ�œæ��掖掎掀掫æ�¶æŽ£æŽ�掉掟掵æ�«ï¿½æ�©æŽ¾æ�©æ�€æ�†æ�£æ�‰æ�’æ�¶æ�„æ�–æ�´æ�†æ�“æ�¦æ�¶æ”�æ�—æ�¨æ��æ‘§æ‘¯æ‘¶æ‘Žæ”ªæ’•æ’“æ’¥æ’©æ’ˆæ’¼æ“šæ“’æ“…æ“‡æ’»æ“˜æ“‚æ“±æ“§èˆ‰æ“ æ“¡æŠ¬æ“£æ“¯æ”¬æ“¶æ“´æ“²æ“ºæ”€æ“½æ”˜æ”œæ”…æ”¤æ”£æ”«æ”´æ”µæ”·æ”¶æ”¸ç•‹æ•ˆæ•–æ••æ•�敘敞æ•�敲數斂斃變斛斟斫斷旃旆æ—�æ—„æ—Œæ—’æ—›æ—™æ— æ—¡æ—±æ�²æ˜Šæ˜ƒæ—»æ�³æ˜µæ˜¶æ˜´æ˜œæ™�晄晉æ™�晞æ™�晤晧晨晟晢晰暃暈暎暉暄暘æš�æ›�暹曉暾暼���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ›„æš¸æ›–æ›šæ› æ˜¿æ›¦æ›©æ›°æ›µæ›·æœ�朖朞朦朧霸朮朿朶æ��朸朷æ�†æ�žæ� æ�™æ�£æ�¤æž‰æ�°æž©æ�¼æ�ªæžŒæž‹æž¦æž¡æž…枷柯枴柬枳柩枸柤柞æŸ�æŸ¢æŸ®æž¹æŸŽæŸ†æŸ§æªœæ žæ¡†æ ©æ¡€æ¡�æ ²æ¡Žï¿½æ¢³æ «æ¡™æ¡£æ¡·æ¡¿æ¢Ÿæ¢�æ¢æ¢”æ¢�æ¢›æ¢ƒæª®æ¢¹æ¡´æ¢µæ¢ æ¢ºæ¤�æ¢�桾æ¤�棊椈棘椢椦棡椌æ£�æ£”æ£§æ£•æ¤¶æ¤’æ¤„æ£—æ££æ¤¥æ£¹æ£ æ£¯æ¤¨æ¤ªæ¤šæ¤£æ¤¡æ£†æ¥¹æ¥·æ¥œæ¥¸æ¥«æ¥”æ¥¾æ¥®æ¤¹æ¥´æ¤½æ¥™æ¤°æ¥¡æ¥žæ¥�æ¦�楪榲榮æ§�榿æ§�槓榾槎寨槊æ§�æ¦»æ§ƒæ¦§æ¨®æ¦‘æ¦ æ¦œæ¦•æ¦´æ§žæ§¨æ¨‚æ¨›æ§¿æ¬Šæ§¹æ§²æ§§æ¨…æ¦±æ¨žæ§æ¨”槫樊樒æ«�樣樓橄樌橲樶橸橇橢橙橦橈樸樢æª�æª�æª æª„æª¢æª£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æª—è˜—æª»æ«ƒæ«‚æª¸æª³æª¬æ«žæ«‘æ«Ÿæªªæ«šæ«ªæ«»æ¬…è˜–æ«ºæ¬’æ¬–é¬±æ¬Ÿæ¬¸æ¬·ç›œæ¬¹é£®æ‡æƒæ‰æ�æ™æ”æ›æŸæ¡æ¸æ¹æ¿æ®€æ®„殃æ®�殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂æ²�沚æ²�沛汾汨汳沒æ²�泄泱泓沽泗泅æ³�沮沱沾沺泛泯泙泪洟è¡�æ´¶æ´«æ´½æ´¸æ´™æ´µæ´³æ´’æ´Œæµ£æ¶“æµ¤æµšæµ¹æµ™æ¶Žæ¶•æ¿¤æ¶…æ·¹æ¸•æ¸Šæ¶µæ·‡æ·¦æ¶¸æ·†æ·¬æ·žæ·Œæ·¨æ·’æ·…æ·ºæ·™æ·¤æ·•æ·ªæ·®æ¸æ¹®æ¸®æ¸™æ¹²æ¹Ÿæ¸¾æ¸£æ¹«æ¸«æ¹¶æ¹�渟湃渺湎渤滿æ¸�游溂溪溘滉溷滓溽溯滄溲滔滕æº�溥滂溟æ½�漑ç�Œæ»¬æ»¸æ»¾æ¼¿æ»²æ¼±æ»¯æ¼²æ»Œï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[224] = \"����������������������������������������������������������������漾漓滷澆潺潸æ¾�æ¾€æ½¯æ½›æ¿³æ½æ¾‚潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑ç€�ç€�濾瀛瀚潴ç€�瀘瀟瀰瀾瀲ç�‘ç�£ç‚™ç‚’炯烱炬炸炳炮烟烋çƒ��烙焉烽焜焙煥煕熈煦煢煌煖煬ç†�ç‡»ç†„ç†•ç†¨ç†¬ç‡—ç†¹ç†¾ç‡’ç‡‰ç‡”ç‡Žç‡ ç‡¬ç‡§ç‡µç‡¼ç‡¹ç‡¿çˆ�çˆ�爛爨çˆçˆ¬çˆ°çˆ²çˆ»çˆ¼çˆ¿ç‰€ç‰†ç‰‹ç‰˜ç‰´ç‰¾çŠ‚çŠ�çŠ‡çŠ’çŠ–çŠ¢çŠ§çŠ¹çŠ²ç‹ƒç‹†ç‹„ç‹Žç‹’ç‹¢ç‹ ç‹¡ç‹¹ç‹·å€�猗猊猜猖çŒ�猴猯猩猥猾ç�Žç��默ç�—ç�ªç�¨ç�°ç�¸ç�µç�»ç�ºç�ˆç޳ç�ŽçŽ»ç�€ç�¥ç�®ç�žç’¢ç�…瑯ç�¥ç�¸ç�²ç�ºç‘•ç�¿ç‘Ÿç‘™ç‘�瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊ç“�ç“”ç�±ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç“ ç“£ç“§ç“©ç“®ç“²ç“°ç“±ç“¸ç“·ç”„ç”ƒç”…ç”Œç”Žç”�甕甓甞甦甬甼畄ç•�畊畉畛畆畚畩畤畧畫ç•畸當疆疇畴疊疉疂疔疚ç–�疥疣痂疳痃疵疽疸疼疱ç—�痊痒痙痣痞痾痿�痼ç˜�痰痺痲痳瘋ç˜�ç˜‰ç˜Ÿç˜§ç˜ ç˜¡ç˜¢ç˜¤ç˜´ç˜°ç˜»ç™‡ç™ˆç™†ç™œç™˜ç™¡ç™¢ç™¨ç™©ç™ªç™§ç™¬ç™°ç™²ç™¶ç™¸ç™¼çš€çšƒçšˆçš‹çšŽçš–çš“çš™çššçš°çš´çš¸çš¹çšºç›‚ç›�盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸ç�‡ç�šç�¨ç�«ç�›ç�¥ç�¿ç�¾ç�¹çžŽçž‹çž‘çž çžžçž°çž¶çž¹çž¿çž¼çž½çž»çŸ‡çŸ�çŸ—çŸšçŸœçŸ£çŸ®çŸ¼ç Œç ’ç¤¦ç 礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç£§ç£šç£½ç£´ç¤‡ç¤’ç¤‘ç¤™ç¤¬ç¤«ç¥€ç¥ ç¥—ç¥Ÿç¥šç¥•ç¥“ç¥ºç¥¿ç¦Šç¦�禧齋禪禮禳禹禺秉秕秧秬秡秣稈ç¨�ç¨˜ç¨™ç¨ ç¨Ÿç¦€ç¨±ç¨»ç¨¾ç¨·ç©ƒç©—ç©‰ç©¡ç©¢ç©©é¾�穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊ç«�ç«�竕竓站竚ç«�竡竢竦ç«ç«°ç¬‚ç¬�笊笆笳笘笙笞笵笨笶ç�çºç¬„ç�笋çŒç…çµç¥ç´ç§ç°ç±ç¬ç®ç®�箘箟ç®�箜箚箋箒ç®�ç�箙篋ç¯�篌ç¯�箴篆ç¯�ç¯©ç°‘ç°”ç¯¦ç¯¥ç± ç°€ç°‡ç°“ç¯³ç¯·ç°—ç°�篶簣簧簪簟簷簫簽籌籃籔ç±�ç±€ç±�籘籟籤籖籥籬籵粃ç²�粤ç²ç²¢ç²«ç²¡ç²¨ç²³ç²²ç²±ç²®ç²¹ç²½ç³€ç³…糂糘糒糜糢鬻糯糲糴糶糺紆���\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮çµ�絣經綉絛ç¶�絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘ç·�緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧ç¹�繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒çº�纓纔纖纎纛纜缸缺罅罌ç½�罎ç½�ç½‘ç½•ç½”ç½˜ç½Ÿç½ ç½¨ç½©ç½§ç½¸ç¾‚ç¾†ç¾ƒç¾ˆç¾‡ç¾Œç¾”ç¾žç¾�羚羣羯羲羹羮羶羸è±ç¿…翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻è�Šè�†è�’è�˜è�šè�Ÿè�¢è�¨è�³è�²è�°è�¶è�¹è�½è�¿è‚„肆肅肛肓肚è‚å†�肬胛胥胙èƒ�胄胚胖脉胯胱脛脩脣脯腋���\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš‹è…†è„¾è…“è…‘èƒ¼è…±è…®è…¥è…¦è…´è†ƒè†ˆè†Šè†€è†‚è† è†•è†¤è†£è…Ÿè†“è†©è†°è†µè†¾è†¸è†½è‡€è‡‚è†ºè‡‰è‡�è‡‘è‡™è‡˜è‡ˆè‡šè‡Ÿè‡ è‡§è‡ºè‡»è‡¾èˆ�舂舅與舊èˆ�èˆ�舖舩舫舸舳艀艙艘è‰�艚艟艤�艢艨艪艫舮艱艷艸艾èŠ�芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱è�€èŒ¹è��è�…茯茫茗茘莅莚莪莟莢莖茣莎莇莊è�¼è޵è�³è�µèŽ èŽ‰èŽ¨è�´è�“è�«è�Žè�½è�ƒè�˜è�‹è��è�·è�‡è� è�²è��è�¢è� 莽è�¸è”†è�»è‘è�ªè�¼è•šè’„è‘·è‘«è’葮蒂葩葆è�¬è‘¯è‘¹è�µè“Šè‘¢è’¹è’¿è’Ÿè“™è“�蒻蓚è“�è“�蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������è•�蘂蕋蕕薀薤薈薑薊薨è•薔薛藪薇薜蕷蕾è–�藉薺è—�è–¹è—�è—•è—�藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿è™�ä¹•è™”è™Ÿè™§è™±èš“èš£èš©èšªèš‹èšŒèš¶èš¯è›„è›†èš°è›‰è £èš«è›”è›žè›©è›¬ï¿½è›Ÿè››è›¯èœ’èœ†èœˆèœ€èœƒè›»èœ‘èœ‰èœ�蛹蜊蜴蜿蜷蜻蜥蜩蜚è� è�Ÿè�¸è�Œè�Žè�´è�—è�¨è�®è�™è�“è�£è�ªè …螢螟螂螯蟋螽蟀èŸ�é›–èž«èŸ„èž³èŸ‡èŸ†èž»èŸ¯èŸ²èŸ è �è �èŸ¾èŸ¶èŸ·è ŽèŸ’è ‘è –è •è ¢è ¡è ±è ¶è ¹è §è »è¡„è¡‚è¡’è¡™è¡žè¡¢è¡«è¢�衾袞衵衽袵衲袂袗袒袮袙袢è¢�袤袰袿袱裃裄裔裘裙è£�裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫è¥�襄褻褶褸襌è¤�è¥ è¥žï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������襦襤è¥è¥ªè¥¯è¥´è¥·è¥¾è¦ƒè¦ˆè¦Šè¦“覘覡覩覦覬覯覲覺覽覿觀觚觜è§�觧觴觸訃訖è¨�訌訛è¨�訥訶è©�詛詒詆詈詼è©è©¬è©¢èª…誂誄誨誡誑誥誦誚誣諄è«�è«‚è«šè««è«³è«§ï¿½è«¤è«±è¬”è« è«¢è«·è«žè«›è¬Œè¬‡è¬šè«¡è¬–è¬�è¬—è¬ è¬³éž«è¬¦è¬«è¬¾è¬¨è�èŒè�èŽè‰è–è›èšè«èŸè¬è¯è´è½è®€è®Œè®Žè®’讓讖讙讚谺è±�谿豈豌豎è±�豕豢豬豸豺貂貉貅貊è²�貎貔豼貘æˆ�è²è²ªè²½è²²è²³è²®è²¶è³ˆè³�賤賣賚賽賺賻贄贅贊贇è´�è´�è´�齎贓è³�贔贖赧èµèµ±èµ³è¶�趙跂趾趺è·�跚跖跌跛跋跪跫跟跣跼踈踉跿è¸�踞è¸�踟蹂踵踰踴蹊���\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������蹇蹉蹌è¹�è¹ˆè¹™è¹¤è¹ è¸ªè¹£è¹•è¹¶è¹²è¹¼èº�躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣è¾è¾¯è¾·è¿šè¿¥è¿¢è¿ªè¿¯é‚‡è¿´é€…迹迺逑逕逡é€�逞逖逋逧逶逵逹迸é��é��é�‘é�’逎é�‰é€¾é�–é�˜é�žé�¨é�¯é�¶éš¨é�²é‚‚é�½é‚�邀邊邉é‚�邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀é‡�釉釋é‡�釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋é‰�銜銖銓銛鉚é‹�銹銷鋩éŒ�鋺é�„錮���\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������錙錢錚錣錺錵錻é�œé� é�¼é�®é�–鎰鎬éŽéŽ”éŽ¹é�–é�—é�¨é�¥é�˜é�ƒé��é��é�ˆé�¤é�šé�”é�“é�ƒé�‡é��é�¶é�«é�µé�¡é�ºé‘�é‘’é‘„é‘›é‘ é‘¢é‘žé‘ªéˆ©é‘°é‘µé‘·é‘½é‘šé‘¼é‘¾é’�é‘¿é–‚é–‡é–Šé–”é––é–˜é–™ï¿½é– é–¨é–§é–閼閻閹閾闊濶闃é—�闌闕闔闖關闡闥闢阡阨阮阯陂陌é™�陋陷陜陞é™�陟陦陲陬éš�隘隕隗險隧隱隲隰隴隶隸隹雎雋雉é›�è¥�雜éœ�雕雹霄霆霈霓霎霑éœ�霖霙霤霪霰霹霽霾é�„é�†é�ˆé�‚é�‰é�œé� é�¤é�¦é�¨å‹’é�«é�±é�¹éž…é�¼éž�é�ºéž†éž‹éž�éž�鞜鞨鞦鞣鞳鞴韃韆韈韋韜éŸé½�韲竟韶韵é �é Œé ¸é ¤é ¡é ·é ½é¡†é¡�顋顫顯顰���\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡é¤�é¤žé¤¤é¤ é¤¬é¤®é¤½é¤¾é¥‚é¥‰é¥…é¥�饋饑饒饌饕馗馘馥é¦é¦®é¦¼é§Ÿé§›é§�駘駑é§é§®é§±é§²é§»é§¸é¨�é¨�騅駢騙騫騷驅驂驀驃�騾驕é©�驛驗驟驢驥驤驩驫驪éªéª°éª¼é«€é«�髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲é„éƒé�é�éŽé‘é˜é´é®“é®ƒé®‘é®–é®—é®Ÿé® é®¨é®´é¯€é¯Šé®¹é¯†é¯�é¯‘é¯’é¯£é¯¢é¯¤é¯”é¯¡é°ºé¯²é¯±é¯°é°•é°”é°‰é°“é°Œé°†é°ˆé°’é°Šé°„é°®é°›é°¥é°¤é°¡é°°é±‡é°²é±†é°¾é±šé± é±§é±¶é±¸é³§é³¬é³°é´‰é´ˆé³«é´ƒé´†é´ªé´¦é¶¯é´£é´Ÿéµ„é´•é´’éµ�鴿鴾鵆鵈���\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������éµ�鵞鵤鵑éµ�鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄é·�鶻鶸鶺鷆é·�鷂鷙鷓鷸鷦é·é·¯é·½é¸šé¸›é¸žé¹µé¹¹é¹½éº�麈麋麌麒麕麑éº�麥麩麸麪éºé�¡é»Œé»Žé»�é»�黔黜點é»�é» é»¥é»¨é»¯ï¿½é»´é»¶é»·é»¹é»»é»¼é»½é¼‡é¼ˆçš·é¼•é¼¡é¼¬é¼¾é½Šé½’é½”é½£é½Ÿé½ é½¡é½¦é½§é½¬é½ªé½·é½²é½¶é¾•é¾œé¾ å ¯æ§‡é�™ç‘¤å‡œç†™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[237] = \"����������������������������������������������������������������纊褜é�ˆéŠˆè“œä¿‰ç‚»æ˜±æ£ˆé‹¹æ›»å½…ä¸¨ä»¡ä»¼ä¼€ä¼ƒä¼¹ä½–ä¾’ä¾Šä¾šä¾”ä¿�å�€å€¢ä¿¿å€žå�†å�°å�‚傔僴僘兊兤å†�冾凬刕劜劦勀勛匀匇匤å�²åŽ“åŽ²å��﨎咜咊咩哿喆å�™å�¥åž¬åŸˆåŸ‡ï¨��ï¨�增墲夋奓奛å¥�奣妤妺å–寀甯寘寬尞岦岺峵崧嵓﨑嵂åµå¶¸å¶¹å·�弡弴彧德忞æ��æ‚…æ‚Šæƒžæƒ•æ„ æƒ²æ„‘æ„·æ„°æ†˜æˆ“æŠ¦æ�µæ‘ æ’�æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜®æ˜žæ˜¤æ™¥æ™—æ™™ï¨’æ™³æš™æš æš²æš¿æ›ºæœŽï¤©æ�¦æž»æ¡’柀æ �æ¡„æ£�﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬æ·�淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫ç„�焄煜煆煇凞ç‡�燾犱���\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������犾猤猪ç�·ç޽ç�‰ç�–ç�£ç�’ç�‡ç�µç�¦ç�ªç�©ç�®ç‘¢ç’‰ç’Ÿç”�畯皂皜皞皛皦益ç�†åŠ¯ç ¡ç¡Žç¡¤ç¡ºç¤°ï¨˜ï¨™ï¨šç¦”ï¨›ç¦›ç«‘ç«§ï¨œç««ç®žï¨�çµˆçµœç¶·ç¶ ç·–ç¹’ç½‡ç¾¡ï¨žèŒ�è�¢è�¿è�‡è�¶è‘ˆè’´è•“è•™ï¿½è•«ï¨Ÿè–°ï¨ ï¨¡è ‡è£µè¨’è¨·è©¹èª§èª¾è«Ÿï¨¢è«¶è“è¿è³°è³´è´’赶﨣è»�﨤逸é�§éƒžï¨¦é„•鄧釚釗釞é‡é‡®é‡¤é‡¥éˆ†éˆ�鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙é‹�ï¨§é‹•é‹ é‹“éŒ¥éŒ¡é‹»ï¨¨éŒžé‹¿éŒ�錂é�°é�—鎤é�†é�žé�¸é�±é‘…鑈閒隆﨩éš�隯霳霻é�ƒé��é��é�‘é�•顗顥飯飼餧館馞驎髙髜éµé²é®�鮱鮻鰀鵰鵫ï¨é¸™é»‘��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"���\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[250] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿¢ï¿¤ï¼‡ï¼‚ãˆ±â„–â„¡âˆµçºŠè¤œé�ˆéŠˆè“œä¿‰ç‚»æ˜±æ£ˆé‹¹æ›»å½…ä¸¨ä»¡ä»¼ä¼€ä¼ƒä¼¹ä½–ä¾’ä¾Šä¾šä¾”ä¿�å�€å€¢ä¿¿å€žå�†å�°å�‚傔僴僘兊�兤å†�冾凬刕劜劦勀勛匀匇匤å�²åŽ“åŽ²å��﨎咜咊咩哿喆å�™å�¥åž¬åŸˆåŸ‡ï¨�ï¨�增墲夋奓奛å¥�奣妤妺å–寀甯寘寬尞岦岺峵崧嵓﨑嵂åµå¶¸å¶¹å·�弡弴彧德忞æ��æ‚…æ‚Šæƒžæƒ•æ„ æƒ²æ„‘æ„·æ„°æ†˜æˆ“æŠ¦æ�µæ‘ æ’�æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜®æ˜žæ˜¤æ™¥æ™—æ™™ï¨’æ™³æš™æš æš²æš¿æ›ºæœŽï¤©æ�¦æž»æ¡’柀æ �æ¡„æ£�﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������涖涬æ·�淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫ç„�焄煜煆煇凞ç‡�燾犱犾猤猪ç�·ç޽ç�‰ç�–ç�£ç�’ç�‡ç�µç�¦ç�ªç�©ç�®ç‘¢ç’‰ç’Ÿç”�畯皂皜皞皛皦益ç�†åŠ¯ç ¡ç¡Žç¡¤ç¡ºç¤°ï¨˜ï¨™ï¿½ï¨šç¦”ï¨›ç¦›ç«‘ç«§ï¨œç««ç®žï¨�çµˆçµœç¶·ç¶ ç·–ç¹’ç½‡ç¾¡ï¨žèŒ�è�¢è�¿è�‡è�¶è‘ˆè’´è•“è•™è•«ï¨Ÿè–°ï¨ ï¨¡è ‡è£µè¨’è¨·è©¹èª§èª¾è«Ÿï¨¢è«¶è“è¿è³°è³´è´’赶﨣è»�﨤逸é�§éƒžï¨¦é„•鄧釚釗釞é‡é‡®é‡¤é‡¥éˆ†éˆ�鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙é‹�ï¨§é‹•é‹ é‹“éŒ¥éŒ¡é‹»ï¨¨éŒžé‹¿éŒ�錂é�°é�—鎤é�†é�žé�¸é�±é‘…鑈閒隆﨩éš�隯霳霻é�ƒé��é��é�‘é�•顗顥飯飼餧館馞驎髙���\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������髜éµé²é®�鮱鮻鰀鵰鵫ï¨é¸™é»‘������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"����������������������������������������������������������������丂丄丅丆ä¸�ä¸’ä¸—ä¸Ÿä¸ ä¸¡ä¸£ä¸¦ä¸©ä¸®ä¸¯ä¸±ä¸³ä¸µä¸·ä¸¼ä¹€ä¹�乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬ä¹ä¹®ä¹¯ä¹²ä¹´ä¹µä¹¶ä¹·ä¹¸ä¹¹ä¹ºä¹»ä¹¼ä¹½ä¹¿äº€äº�亂亃亄亅亇亊�äº�亖亗亙亜äº�亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌ä»�ä»�ä»’ä»šä»›ä»œä» ä»¢ä»¦ä»§ä»©ä»ä»®ä»¯ä»±ä»´ä»¸ä»¹ä»ºä»¼ä»¾ä¼€ä¼‚伃伄伅伆伇伈伋伌伒伓伔伕伖伜ä¼�伡伣伨伩伬ä¼ä¼®ä¼±ä¼³ä¼µä¼·ä¼¹ä¼»ä¼¾ä¼¿ä½€ä½�佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫ä½ä½®ä½±ä½²ä½µä½·ä½¸ä½¹ä½ºä½½ä¾€ä¾�侂侅來侇侊侌侎ä¾�侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"����������������������������������������������������������������侤侫ä¾ä¾°ä¾±ä¾²ä¾³ä¾´ä¾¶ä¾·ä¾¸ä¾¹ä¾ºä¾»ä¾¼ä¾½ä¾¾ä¿€ä¿�係俆俇俈俉俋俌ä¿�ä¿’ä¿“ä¿”ä¿•ä¿–ä¿™ä¿›ä¿ ä¿¢ä¿¤ä¿¥ä¿§ä¿«ä¿¬ä¿°ä¿²ä¿´ä¿µä¿¶ä¿·ä¿¹ä¿»ä¿¼ä¿½ä¿¿å€€å€�倂倃倄倅倆倇倈倉倊�個倎å€�們倓倕倖倗倛å€�å€žå€ å€¢å€£å€¤å€§å€«å€¯å€°å€±å€²å€³å€´å€µå€¶å€·å€¸å€¹å€»å€½å€¿å�€å��å�‚å�„å�…å�†å�‰å�Šå�‹å��å��å�‘å�’å�“å�”å�–å�—å�˜å�™å�›å��å�žå�Ÿå� å�¡å�¢å�£å�¤å�¦å�§å�¨å�©å�ªå�«å�å�®å�¯å�°å�±å�²å�³å�´å�µå�¸å�¹å�ºå�¼å�½å‚�傂傃傄傆傇傉傊傋傌傎å‚�å‚�傑傒傓傔傕傖傗傘備傚傛傜å‚�å‚žå‚Ÿå‚ å‚¡å‚¢å‚¤å‚¦å‚ªå‚«å‚傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������傽傾傿僀åƒ�僂僃僄僅僆僇僈僉僊僋僌åƒ�僎åƒ�僑僒僓僔僕僗僘僙僛僜åƒ�åƒžåƒŸåƒ åƒ¡åƒ¢åƒ£åƒ¤åƒ¥åƒ¨åƒ©åƒªåƒ«åƒ¯åƒ°åƒ±åƒ²åƒ´åƒ¶åƒ·åƒ¸åƒ¹åƒºåƒ¼åƒ½åƒ¾åƒ¿å„€å„�儂儃億儅儈�儉儊儌å„�儎å„�å„�儑儓儔儕儖儗儘儙儚儛儜å„�å„žå„Ÿå„ å„¢å„£å„¤å„¥å„¦å„§å„¨å„©å„ªå„«å„¬å„儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎å…�å…�兒兓兗兘兙兛å…�å…žå…Ÿå… å…¡å…£å…¤å…¦å…§å…©å…ªå…¯å…²å…ºå…¾å…¿å†ƒå†„å††å†‡å†Šå†‹å†Žå†�å†�冑冓冔冘冚å†�冞冟冡冣冦冧冨冩冪å†å†®å†´å†¸å†¹å†ºå†¾å†¿å‡�凂凃凅凈凊å‡�凎å‡�凒凓凔凕凖凗�\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌åˆ�åˆ�刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎å‰�剒剓剕剗剘�剙剚剛å‰�å‰Ÿå‰ å‰¢å‰£å‰¤å‰¦å‰¨å‰«å‰¬å‰å‰®å‰°å‰±å‰³å‰´å‰µå‰¶å‰·å‰¸å‰¹å‰ºå‰»å‰¼å‰¾åŠ€åŠƒåŠ„åŠ…åŠ†åŠ‡åŠ‰åŠŠåŠ‹åŠŒåŠ�劎åŠ�劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀å‹�勂勄勅勆勈勊勌å‹�勎å‹�勑勓勔動勗務勚勛勜å‹�å‹žå‹ å‹¡å‹¢å‹£å‹¥å‹¦å‹§å‹¨å‹©å‹ªå‹«å‹¬å‹å‹®å‹¯å‹±å‹²å‹³å‹´å‹µå‹¶å‹·å‹¸å‹»å‹¼å‹½åŒ�匂匃匄匇匉匊匋匌匎�\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬åŒåŒ¯åŒ°åŒ±åŒ²åŒ³åŒ´åŒµåŒ¶åŒ·åŒ¸åŒ¼åŒ½å�€å�‚å�„å�†å�‹å�Œå��å��å�”å�˜å�™å�›å��å�¥å�¨å�ªå�¬å�å�²å�¶å�¹å�»å�¼å�½å�¾åŽ€åŽ�厃厇厈厊厎åŽ��åŽ�åŽ‘åŽ’åŽ“åŽ”åŽ–åŽ—åŽ™åŽ›åŽœåŽžåŽ åŽ¡åŽ¤åŽ§åŽªåŽ«åŽ¬åŽåŽ¯åŽ°åŽ±åŽ²åŽ³åŽ´åŽµåŽ·åŽ¸åŽ¹åŽºåŽ¼åŽ½åŽ¾å�€å�ƒå�„å�…å�†å�‡å�Žå��å��å�’å�“å�•å�šå�œå��å�žå�¡å�¢å�§å�´å�ºå�¾å�¿å�€å�‚å�…å�‡å�‹å�”å�˜å�™å�šå�œå�¢å�¤å�¥å�ªå�°å�³å�¶å�·å�ºå�½å�¿å‘�呂呄呅呇呉呌å‘�呎å‘�呑呚å‘�å‘žå‘Ÿå‘ å‘¡å‘£å‘¥å‘§å‘©å‘ªå‘«å‘¬å‘呮呯呰呴呹呺呾呿å’�咃咅咇咈咉咊å’�å’‘å’“å’—å’˜å’œå’žå’Ÿå’ å’¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å’¢å’¥å’®å’°å’²å’µå’¶å’·å’¹å’ºå’¼å’¾å“ƒå“…å“Šå“‹å“–å“˜å“›å“ å“¡å“¢å“£å“¤å“«å“¬å“¯å“°å“±å“´å“µå“¶å“·å“¸å“¹å“»å“¾å”€å”‚å”ƒå”„å”…å”ˆå”Šå”‹å”Œå”�唎唒唓唕唖唗唘唙唚唜å”�唞唟唡唥唦�唨唩唫å”唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌å•�啎å•�啑啒啓啔啗啘啙啚啛å•�å•žå•Ÿå• å•¢å•£å•¨å•©å•«å•¯å•°å•±å•²å•³å•´å•¹å•ºå•½å•¿å–…å–†å–Œå–�å–Žå–�å–’å–“å–•å––å–—å–šå–›å–žå– å–¡å–¢å–£å–¤å–¥å–¦å–¨å–©å–ªå–«å–¬å–單喯喰喲喴営喸喺喼喿嗀å—�嗂嗃嗆嗇嗈嗊嗋嗎å—�å—�å—•å——å—˜å—™å—šå—›å—žå— å—¢å—§å—©å—嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋å˜�å˜�嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜å˜�å˜ å˜¡å˜¢å˜¥å˜¦å˜¨å˜©å˜ªå˜«å˜®å˜¯å˜°å˜³å˜µå˜·å˜¸å˜ºå˜¼å˜½å˜¾å™€å™�噂噃噄噅噆噇噈噉噊噋å™�å™�噑噒噓噕噖噚噛å™�å™žå™Ÿå™ å™¡ï¿½å™£å™¥å™¦å™§å™å™®å™¯å™°å™²å™³å™´å™µå™·å™¸å™¹å™ºå™½å™¾å™¿åš€åš�嚂嚃嚄嚇嚈嚉嚊嚋嚌åš�åš�嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜åš�åšžåšŸåš åš¡åš¢åš¤åš¥åš¦åš§åš¨åš©åšªåš«åš¬åšåš®åš°åš±åš²åš³åš´åšµåš¶åš¸åš¹åšºåš»åš½åš¾åš¿å›€å›�囂囃囄囅囆囇囈囉囋囌å›�囎å›�å›�囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀åœ�圂圅圇國圌åœ�圎åœ�åœ�圑�\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛åœ�åœžåœ åœ¡åœ¢åœ¤åœ¥åœ¦åœ§åœ«åœ±åœ²åœ´åœµåœ¶åœ·åœ¸åœ¼åœ½åœ¿å��å�ƒå�„å�…å�†å�ˆå�‰å�‹å�’å�“å�”å�•å�–å�˜å�™å�¢å�£å�¥å�§å�¬å�®å�°å�±å�²å�´å�µå�¸å�¹å�ºå�½å�¾å�¿åž€ï¿½åž�垇垈垉垊åž�垎åž�åž�垑垔垕垖垗垘垙垚垜åž�垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀åŸ�埄埅埆埇埈埉埊埌åŸ�åŸ�埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿å �å ƒå „å …å ˆå ‰å Šå Œå Žå �å �å ’å “å ”å –å —å ˜å šå ›å œå �å Ÿå ¢å £å ¥å ¦å §å ¨å ©å «å ¬å å ®å ¯å ±å ²å ³å ´å ¶å ·å ¸å ¹å ºå »å ¼å ½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ¾å ¿å¡€å¡�塂塃塅塆塇塈塉塊塋塎å¡�å¡�塒塓塕塖塗塙塚塛塜å¡�å¡Ÿå¡ å¡¡å¡¢å¡£å¡¤å¡¦å¡§å¡¨å¡©å¡ªå¡å¡®å¡¯å¡°å¡±å¡²å¡³å¡´å¡µå¡¶å¡·å¡¸å¡¹å¡ºå¡»å¡¼å¡½å¡¿å¢‚墄墆墇墈墊墋墌�å¢�墎å¢�å¢�墑墔墕墖増墘墛墜å¢�å¢ å¢¡å¢¢å¢£å¢¤å¢¥å¢¦å¢§å¢ªå¢«å¢¬å¢å¢®å¢¯å¢°å¢±å¢²å¢³å¢´å¢µå¢¶å¢·å¢¸å¢¹å¢ºå¢»å¢½å¢¾å¢¿å£€å£‚壃壄壆壇壈壉壊壋壌å£�壎å£�å£�壒壓壔壖壗壘壙壚壛壜å£�å£žå£Ÿå£ å£¡å£¢å££å£¥å£¦å£§å£¨å£©å£ªå£å£¯å£±å£²å£´å£µå£·å£¸å£ºå£»å£¼å£½å£¾å£¿å¤€å¤�夃夅夆夈変夊夋夌夎å¤�夑夒夓夗夘夛å¤�å¤žå¤ å¤¡å¤¢å¤£å¤¦å¤¨å¤¬å¤°å¤²å¤³å¤µå¤¶å¤»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌å¥�å¥�奒奓奙奛奜å¥�奞奟奡奣奤奦奧奨奩奪奫奬å¥å¥®å¥¯å¥°å¥±å¥²å¥µå¥·å¥ºå¥»å¥¼å¥¾å¥¿å¦€å¦…妉妋妌妎å¦�å¦�妑妔妕妘妚妛妜å¦�å¦Ÿå¦ å¦¡å¦¢å¦¦ï¿½å¦§å¦¬å¦å¦°å¦±å¦³å¦´å¦µå¦¶å¦·å¦¸å¦ºå¦¼å¦½å¦¿å§€å§�姂姃姄姅姇姈姉姌å§�å§Žå§�å§•å§–å§™å§›å§žå§Ÿå§ å§¡å§¢å§¤å§¦å§§å§©å§ªå§«å§å§®å§¯å§°å§±å§²å§³å§´å§µå§¶å§·å§¸å§ºå§¼å§½å§¾å¨€å¨‚娊娋å¨�娎å¨�å¨�娒娔娕娖娗娙娚娛å¨�娞娡娢娤娦娧娨娪娫娬å¨å¨®å¨¯å¨°å¨³å¨µå¨·å¨¸å¨¹å¨ºå¨»å¨½å¨¾å¨¿å©�婂婃婄婅婇婈婋婌å©�婎å©�å©�婑婒婓婔婖婗婘婙婛婜å©�å©žå©Ÿå© ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬å©å©®å©¯å©°å©±å©²å©³å©¸å©¹å©»å©¼å©½å©¾åª€åª�媂媃媄媅媆媇媈媉媊媋媌åª�媎åª�åª�媑媓媔媕媖媗媘媙媜åª�åªžåªŸåª åª¡åª¢åª£åª¤åª¥åª¦åª§åª¨åª©åª«åª¬ï¿½åªåª®åª¯åª°åª±åª´åª¶åª·åª¹åªºåª»åª¼åª½åª¿å«€å«ƒå«„嫅嫆嫇嫈嫊嫋å«�嫎å«�å«�嫑嫓嫕嫗嫙嫚嫛å«�嫞嫟嫢嫤嫥嫧嫨嫪嫬å«å«®å«¯å«°å«²å«³å«´å«µå«¶å«·å«¸å«¹å«ºå«»å«¼å«½å«¾å«¿å¬€å¬�嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌å¬�嬎å¬�å¬�嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜å¬�å¬žå¬Ÿå¬ å¬¡å¬¢å¬£å¬¤å¬¥å¬¦å¬§å¬¨å¬©å¬ªå¬«å¬¬å¬å¬®å¬¯å¬°å¬±å¬³å¬µå¬¶å¬¸å¬¹å¬ºå¬»å¬¼å¬½å¬¾å¬¿å�å‚åƒå„å…å†å‡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������åˆå‰åŠå‹åŒå�åŽå�å’å–åžå å¡å§å¨å«åå®å¯å²å´å¶å·å¸å¹å»å¼å¾å¿å®‚宆宊å®�宎å®�宑宒宔宖実宧宨宩宬å®å®®å®¯å®±å®²å®·å®ºå®»å®¼å¯€å¯�寃寈寉寊寋å¯�寎å¯�ï¿½å¯‘å¯”å¯•å¯–å¯—å¯˜å¯™å¯šå¯›å¯œå¯ å¯¢å¯£å¯¦å¯§å¯©å¯ªå¯«å¯¬å¯å¯¯å¯±å¯²å¯³å¯´å¯µå¯¶å¯·å¯½å¯¾å°€å°‚尃尅將專尋尌å°�å°Žå°�å°’å°“å°—å°™å°›å°žå°Ÿå° å°¡å°£å°¦å°¨å°©å°ªå°«å°å°®å°¯å°°å°²å°³å°µå°¶å°·å±ƒå±„屆屇屌å±�屒屓屔屖屗屘屚屛屜å±�屟屢層屧屨屩屪屫屬å±å±°å±²å±³å±´å±µå±¶å±·å±¸å±»å±¼å±½å±¾å²€å²ƒå²„岅岆岇岉岊岋岎å²�岒岓岕å²�å²žå²Ÿå² å²¡å²¤å²¥å²¦å²§å²¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌å³�峎å³�å³�峑峓峔峕峖峗峘峚峛峜å³�å³žå³Ÿå³ å³¢å³£å³§å³©å³«å³¬å³®å³¯å³±å³²å³³å³´å³µå³¶å³·å³¸å³¹å³ºå³¼å³½å³¾å³¿å´€ï¿½å´�崄崅崈崉崊崋崌å´�å´�å´�崑崒崓崕崗崘崙崚崜å´�å´Ÿå´ å´¡å´¢å´£å´¥å´¨å´ªå´«å´¬å´¯å´°å´±å´²å´³å´µå´¶å´·å´¸å´¹å´ºå´»å´¼å´¿åµ€åµ�嵂嵃嵄嵅嵆嵈嵉åµ�嵎åµ�åµ�åµ‘åµ’åµ“åµ”åµ•åµ–åµ—åµ™åµšåµœåµžåµŸåµ åµ¡åµ¢åµ£åµ¤åµ¥åµ¦åµ§åµ¨åµªåµåµ®åµ°åµ±åµ²åµ³åµµåµ¶åµ·åµ¸åµ¹åµºåµ»åµ¼åµ½åµ¾åµ¿å¶€å¶�嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌å¶�å¶Žå¶�å¶�å¶‘å¶’å¶“å¶”å¶•å¶–å¶—å¶˜å¶šå¶›å¶œå¶žå¶Ÿå¶ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬å¶å¶®å¶¯å¶°å¶±å¶²å¶³å¶´å¶µå¶¶å¶¸å¶¹å¶ºå¶»å¶¼å¶½å¶¾å¶¿å·€å·�巂巃巄巆巇巈巉巊巋巌巎å·�å·�å·‘å·’å·“å·”å·•å·–å·—å·˜å·™å·šå·œå·Ÿå· å·£å·¤å·ªå·¬å·ï¿½å·°å·µå·¶å·¸å·¹å·ºå·»å·¼å·¿å¸€å¸„帇帉帊帋å¸�å¸Žå¸’å¸“å¸—å¸žå¸Ÿå¸ å¸¡å¸¢å¸£å¸¤å¸¥å¸¨å¸©å¸ªå¸«å¸¬å¸¯å¸°å¸²å¸³å¸´å¸µå¸¶å¸¹å¸ºå¸¾å¸¿å¹€å¹�幃幆幇幈幉幊幋å¹�幎å¹�å¹�幑幒幓幖幗幘幙幚幜å¹�å¹Ÿå¹ å¹£å¹¤å¹¥å¹¦å¹§å¹¨å¹©å¹ªå¹«å¹¬å¹å¹®å¹¯å¹°å¹±å¹µå¹·å¹¹å¹¾åº�庂広庅庈庉庌åº�庎庒庘庛åº�庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀å»�廂廃廄廅�\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������廆廇廈廋廌å»�廎å»�å»�廔廕廗廘廙廚廜å»�å»žå»Ÿå» å»¡å»¢å»£å»¤å»¥å»¦å»§å»©å»«å»¬å»å»®å»¯å»°å»±å»²å»³å»µå»¸å»¹å»»å»¼å»½å¼…弆弇弉弌å¼�弎å¼�弒弔弖弙弚弜å¼�弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿å½�彂彃彄彅彆彇彈彉彊彋彌å½�彎å½�å½‘å½”å½™å½šå½›å½œå½žå½Ÿå½ å½£å½¥å½§å½¨å½«å½®å½¯å½²å½´å½µå½¶å½¸å½ºå½½å½¾å½¿å¾ƒå¾†å¾�徎å¾�徑従徔徖徚徛å¾�å¾žå¾Ÿå¾ å¾¢å¾£å¾¤å¾¥å¾¦å¾§å¾©å¾«å¾¬å¾¯å¾°å¾±å¾²å¾³å¾´å¾¶å¾¸å¾¹å¾ºå¾»å¾¾å¾¿å¿€å¿�忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������怈怉怋怌æ€�æ€‘æ€“æ€—æ€˜æ€šæ€žæ€Ÿæ€¢æ€£æ€¤æ€¬æ€æ€®æ€°æ€±æ€²æ€³æ€´æ€¶æ€·æ€¸æ€¹æ€ºæ€½æ€¾æ�€æ�„æ�…æ�†æ�‡æ�ˆæ�‰æ�Šæ�Œæ�Žæ��æ�‘æ�“æ�”æ�–æ�—æ�˜æ�›æ�œæ�žæ�Ÿæ� æ�¡æ�¥æ�¦æ�®æ�±æ�²æ�´æ�µæ�·æ�¾æ‚€ï¿½æ‚�悂悅悆悇悈悊悋悎æ‚�æ‚�悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀æƒ�惂惃惄惇惈惉惌æƒ�惎æƒ�æƒ�惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌æ„�愑愒愓愔愖愗愘愙愛愜æ„�æ„žæ„¡æ„¢æ„¥æ„¨æ„©æ„ªæ„¬æ„æ„®æ„¯æ„°æ„±æ„²æ„³æ„´æ„µæ„¶æ„·æ„¸æ„¹æ„ºæ„»æ„¼æ„½æ„¾æ…€æ…�慂慃慄慅慆�\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������慇慉態æ…�æ…�æ…�æ…’æ…“æ…”æ…–æ…—æ…˜æ…™æ…šæ…›æ…œæ…žæ…Ÿæ… æ…¡æ…£æ…¤æ…¥æ…¦æ…©æ…ªæ…«æ…¬æ…æ…®æ…¯æ…±æ…²æ…³æ…´æ…¶æ…¸æ…¹æ…ºæ…»æ…¼æ…½æ…¾æ…¿æ†€æ†�憂憃憄憅憆憇憈憉憊憌æ†�æ†�æ†�æ†‘æ†’æ†“æ†•ï¿½æ†–æ†—æ†˜æ†™æ†šæ†›æ†œæ†žæ†Ÿæ† æ†¡æ†¢æ†£æ†¤æ†¥æ†¦æ†ªæ†«æ†æ†®æ†¯æ†°æ†±æ†²æ†³æ†´æ†µæ†¶æ†¸æ†¹æ†ºæ†»æ†¼æ†½æ†¿æ‡€æ‡�懃懄懅懆懇應懌æ‡�懎æ‡�æ‡�懓懕懖懗懘懙懚懛懜æ‡�æ‡žæ‡Ÿæ‡ æ‡¡æ‡¢æ‡£æ‡¤æ‡¥æ‡§æ‡¨æ‡©æ‡ªæ‡«æ‡¬æ‡æ‡®æ‡¯æ‡°æ‡±æ‡²æ‡³æ‡´æ‡¶æ‡·æ‡¸æ‡¹æ‡ºæ‡»æ‡¼æ‡½æ‡¾æˆ€æˆ�戂戃戄戅戇戉戓戔戙戜æˆ�æˆžæˆ æˆ£æˆ¦æˆ§æˆ¨æˆ©æˆ«æˆæˆ¯æˆ°æˆ±æˆ²æˆµæˆ¶æˆ¸æˆ¹æˆºæˆ»æˆ¼æ‰‚扄扅扆扊�\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������æ‰�æ‰�払扖扗扙扚扜æ‰�æ‰žæ‰Ÿæ‰ æ‰¡æ‰¢æ‰¤æ‰¥æ‰¨æ‰±æ‰²æ‰´æ‰µæ‰·æ‰¸æ‰ºæ‰»æ‰½æŠ�抂抃抅抆抇抈抋抌æŠ�抎æŠ�æŠ�抔抙抜æŠ�æŠžæŠ£æŠ¦æŠ§æŠ©æŠªæŠæŠ®æŠ¯æŠ°æŠ²æŠ³æŠ´æŠ¶æŠ·æŠ¸æŠºæŠ¾æ‹€æ‹��拃拋æ‹�æ‹‘æ‹•æ‹�æ‹žæ‹ æ‹¡æ‹¤æ‹ªæ‹«æ‹°æ‹²æ‹µæ‹¸æ‹¹æ‹ºæ‹»æŒ€æŒƒæŒ„æŒ…æŒ†æŒŠæŒ‹æŒŒæŒ�æŒ�æŒ�æŒ’æŒ“æŒ”æŒ•æŒ—æŒ˜æŒ™æŒœæŒ¦æŒ§æŒ©æŒ¬æŒæŒ®æŒ°æŒ±æŒ³æŒ´æŒµæŒ¶æŒ·æŒ¸æŒ»æŒ¼æŒ¾æŒ¿æ�€æ��æ�„æ�‡æ�ˆæ�Šæ�‘æ�’æ�“æ�”æ�–æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ� æ�¤æ�¥æ�¦æ�¨æ�ªæ�«æ�¬æ�¯æ�°æ�²æ�³æ�´æ�µæ�¸æ�¹æ�¼æ�½æ�¾æ�¿æŽ�掃掄掅掆掋æŽ�掑掓掔掕掗掙掚掛掜æŽ�掞掟採掤掦掫掯掱掲掵掶掹掻掽掿æ�€ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������æ��æ�‚æ�ƒæ�…æ�‡æ�ˆæ�Šæ�‹æ�Œæ�‘æ�“æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ�Ÿæ�¢æ�¤æ�¥æ�¦æ�§æ�¨æ�«æ�¬æ�®æ�¯æ�°æ�±æ�³æ�µæ�·æ�¹æ�ºæ�»æ�¼æ�¾æ�ƒæ�„æ�†æ�‡æ�ˆæ�‰æ�Šæ��æ�Žæ�‘æ�’æ�•æ�–æ�—æ�˜æ�™æ�šæ��æ�Ÿæ�¢æ�£æ�¤ï¿½æ�¥æ�§æ�¨æ�©æ�«æ�®æ�¯æ�°æ�±æ�²æ�³æ�µæ�¶æ�·æ�¸æ�¹æ�»æ�¼æ�¾æ‘€æ‘‚摃摉摋摌æ‘�摎æ‘�æ‘�摑摓摕摖摗摙摚摛摜æ‘�æ‘Ÿæ‘ æ‘¡æ‘¢æ‘£æ‘¤æ‘¥æ‘¦æ‘¨æ‘ªæ‘«æ‘¬æ‘®æ‘¯æ‘°æ‘±æ‘²æ‘³æ‘´æ‘µæ‘¶æ‘·æ‘»æ‘¼æ‘½æ‘¾æ‘¿æ’€æ’�撃撆撈撉撊撋撌æ’�æ’Žæ’�æ’�撓撔撗撘撚撛撜æ’�æ’Ÿæ’ æ’¡æ’¢æ’£æ’¥æ’¦æ’§æ’¨æ’ªæ’«æ’¯æ’±æ’²æ’³æ’´æ’¶æ’¹æ’»æ’½æ’¾æ’¿æ“�擃擄擆擇擈擉擊擋擌æ“�擑擓擔擕擖擙據�\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������擛擜æ“�æ“Ÿæ“ æ“¡æ“£æ“¥æ“§æ“¨æ“©æ“ªæ“«æ“¬æ“æ“®æ“¯æ“°æ“±æ“²æ“³æ“´æ“µæ“¶æ“·æ“¸æ“¹æ“ºæ“»æ“¼æ“½æ“¾æ“¿æ”�攂攃攄攅攆攇攈攊攋攌æ”�攎æ”�æ”�攑攓攔攕攖攗攙攚攛攜æ”�æ”žæ”Ÿæ” æ”¡ï¿½æ”¢æ”£æ”¤æ”¦æ”§æ”¨æ”©æ”ªæ”¬æ”æ”°æ”±æ”²æ”³æ”·æ”ºæ”¼æ”½æ•€æ•�敂敃敄敆敇敊敋æ•�敎æ•�æ•’æ•“æ•”æ•—æ•˜æ•šæ•œæ•Ÿæ• æ•¡æ•¤æ•¥æ•§æ•¨æ•©æ•ªæ•æ•®æ•¯æ•±æ•³æ•µæ•¶æ•¸æ•¹æ•ºæ•»æ•¼æ•½æ•¾æ•¿æ–€æ–�斂斃斄斅斆斈斉斊æ–�æ–Žæ–�斒斔斕斖斘斚æ–�æ–žæ– æ–¢æ–£æ–¦æ–¨æ–ªæ–¬æ–®æ–±æ–²æ–³æ–´æ–µæ–¶æ–·æ–¸æ–ºæ–»æ–¾æ–¿æ—€æ—‚æ—‡æ—ˆæ—‰æ—Šæ—�æ—�旑旓旔旕旘旙旚旛旜æ—�旞旟旡旣旤旪旫�\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿æ˜�昄昅昇昈昉昋æ˜�æ˜�昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊æ™�晎æ™�晑晘�晙晛晜æ™�æ™žæ™ æ™¢æ™£æ™¥æ™§æ™©æ™ªæ™«æ™¬æ™æ™±æ™²æ™³æ™µæ™¸æ™¹æ™»æ™¼æ™½æ™¿æš€æš�暃暅暆暈暉暊暋æš�暎æš�æš�æš’æš“æš”æš•æš˜æš™æššæš›æšœæšžæšŸæš æš¡æš¢æš£æš¤æš¥æš¦æš©æšªæš«æš¬æšæš¯æš°æš±æš²æš³æšµæš¶æš·æš¸æšºæš»æš¼æš½æš¿æ›€æ›�曂曃曄曅曆曇曈曉曊曋曌æ›�曎æ›�æ›�æ›‘æ›’æ›“æ›”æ›•æ›–æ›—æ›˜æ›šæ›žæ›Ÿæ› æ›¡æ›¢æ›£æ›¤æ›¥æ›§æ›¨æ›ªæ›«æ›¬æ›æ›®æ›¯æ›±æ›µæ›¶æ›¸æ›ºæ›»æ›½æœ�朂會�\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎æœ�æœ‘æœ’æœ“æœ–æœ˜æœ™æœšæœœæœžæœ æœ¡æœ¢æœ£æœ¤æœ¥æœ§æœ©æœ®æœ°æœ²æœ³æœ¶æœ·æœ¸æœ¹æœ»æœ¼æœ¾æœ¿æ��æ�„æ�…æ�‡æ�Šæ�‹æ��æ�’æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ��æ�¢æ�£æ�¤æ�¦æ�§æ�«æ�¬æ�®æ�±æ�´æ�¶ï¿½æ�¸æ�¹æ�ºæ�»æ�½æž€æž‚枃枅枆枈枊枌æž�枎æž�æž‘æž’æž“æž”æž–æž™æž›æžŸæž æž¡æž¤æž¦æž©æž¬æž®æž±æž²æž´æž¹æžºæž»æž¼æž½æž¾æž¿æŸ€æŸ‚æŸ…æŸ†æŸ‡æŸˆæŸ‰æŸŠæŸ‹æŸŒæŸ�æŸŽæŸ•æŸ–æŸ—æŸ›æŸŸæŸ¡æŸ£æŸ¤æŸ¦æŸ§æŸ¨æŸªæŸ«æŸæŸ®æŸ²æŸµæŸ¶æŸ·æŸ¸æŸ¹æŸºæŸ»æŸ¼æŸ¾æ �æ ‚æ ƒæ „æ †æ �æ �æ ’æ ”æ •æ ˜æ ™æ šæ ›æ œæ žæ Ÿæ æ ¢æ £æ ¤æ ¥æ ¦æ §æ ¨æ «æ ¬æ æ ®æ ¯æ °æ ±æ ´æ µæ ¶æ ºæ »æ ¿æ¡‡æ¡‹æ¡�æ¡�桒桖桗桘桙桚桛�\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������桜æ¡�æ¡žæ¡Ÿæ¡ªæ¡¬æ¡æ¡®æ¡¯æ¡°æ¡±æ¡²æ¡³æ¡µæ¡¸æ¡¹æ¡ºæ¡»æ¡¼æ¡½æ¡¾æ¡¿æ¢€æ¢‚梄梇梈梉梊梋梌æ¢�梎æ¢�梑梒梔梕梖梘梙梚梛梜æ¢�æ¢žæ¢Ÿæ¢ æ¢¡æ¢£æ¢¤æ¢¥æ¢©æ¢ªæ¢«æ¢¬æ¢®æ¢±æ¢²æ¢´æ¢¶æ¢·æ¢¸ï¿½æ¢¹æ¢ºæ¢»æ¢¼æ¢½æ¢¾æ¢¿æ£�棃棄棅棆棇棈棊棌棎æ£�æ£�棑棓棔棖棗棙棛棜æ£�æ£žæ£Ÿæ£¡æ£¢æ£¤æ£¥æ£¦æ£§æ£¨æ£©æ£ªæ£«æ£¬æ£æ£¯æ£²æ£³æ£´æ£¶æ£·æ£¸æ£»æ£½æ£¾æ£¿æ¤€æ¤‚椃椄椆椇椈椉椊椌æ¤�椑椓椔椕椖椗椘椙椚椛検æ¤�椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀æ¥�楃楄楅楆楇楈楉楊楋楌æ¥�楎æ¥�æ¥�楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¥¡æ¥¢æ¥¤æ¥¥æ¥§æ¥¨æ¥©æ¥ªæ¥¬æ¥æ¥¯æ¥°æ¥²æ¥³æ¥´æ¥µæ¥¶æ¥ºæ¥»æ¥½æ¥¾æ¥¿æ¦�榃榅榊榋榌榎æ¦�æ¦�榑榒榓榖榗榙榚æ¦�æ¦žæ¦Ÿæ¦ æ¦¡æ¦¢æ¦£æ¦¤æ¦¥æ¦¦æ¦©æ¦ªæ¦¬æ¦®æ¦¯æ¦°æ¦²æ¦³æ¦µæ¦¶æ¦¸æ¦¹æ¦ºæ¦¼æ¦½ï¿½æ¦¾æ¦¿æ§€æ§‚æ§ƒæ§„æ§…æ§†æ§‡æ§ˆæ§‰æ§‹æ§�æ§�槑槒槓槕槖槗様槙槚槜æ§�槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀æ¨�樂樃樄樅樆樇樈樉樋樌æ¨�樎æ¨�æ¨�樑樒樓樔樕樖標樚樛樜æ¨�æ¨žæ¨ æ¨¢æ¨£æ¨¤æ¨¥æ¨¦æ¨§æ¨©æ¨«æ¨¬æ¨æ¨®æ¨°æ¨²æ¨³æ¨´æ¨¶æ¨·æ¨¸æ¨¹æ¨ºæ¨»æ¨¼æ¨¿æ©€æ©�橂橃橅橆橈橉橊橋橌æ©�橎æ©�橑橒橓橔橕橖橗橚�\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������橜æ©�æ©žæ©Ÿæ© æ©¢æ©£æ©¤æ©¦æ©§æ©¨æ©©æ©ªæ©«æ©¬æ©æ©®æ©¯æ©°æ©²æ©³æ©´æ©µæ©¶æ©·æ©¸æ©ºæ©»æ©½æ©¾æ©¿æª�檂檃檅檆檇檈檉檊檋檌æª�æª�檒檓檔檕檖檘檙檚檛檜æª�æªžæªŸæª¡æª¢æª£æª¤æª¥æª¦ï¿½æª§æª¨æªªæªæª®æª¯æª°æª±æª²æª³æª´æªµæª¶æª·æª¸æª¹æªºæª»æª¼æª½æª¾æª¿æ«€æ«�櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌æ«�櫎æ«�æ«�櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜æ«�æ«žæ«Ÿæ« æ«¡æ«¢æ«£æ«¤æ«¥æ«¦æ«§æ«¨æ«©æ«ªæ««æ«¬æ«æ«®æ«¯æ«°æ«±æ«²æ«³æ«´æ«µæ«¶æ«·æ«¸æ«¹æ«ºæ«»æ«¼æ«½æ«¾æ«¿æ¬€æ¬�欂欃欄欅欆欇欈欉權欋欌æ¬�欎æ¬�æ¬�欑欒欓欔欕欖欗欘欙欚欛欜æ¬�æ¬žæ¬Ÿæ¬¥æ¬¦æ¬¨æ¬©æ¬ªæ¬«æ¬¬æ¬æ¬®ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¬¯æ¬°æ¬±æ¬³æ¬´æ¬µæ¬¶æ¬¸æ¬»æ¬¼æ¬½æ¬¿æ€æ�æ‚æ„æ…æˆæŠæ‹æ�æŽæ�æ�æ‘æ’æ“æ”æ•æ–æ—æ˜æšæ›æœæ�æžæŸæ æ¡æ¨æ©æ«æ¬ææ®æ¯æ°æ±æ²æ³æ´æµæ¶æ·æ¸æºæ½æ¾æ¿æ®€æ®…殈�殌殎æ®�æ®�殑殔殕殗殘殙殜æ®�æ®žæ®Ÿæ® æ®¢æ®£æ®¤æ®¥æ®¦æ®§æ®¨æ®©æ®«æ®¬æ®æ®®æ®¯æ®°æ®±æ®²æ®¶æ®¸æ®¹æ®ºæ®»æ®¼æ®½æ®¾æ¯€æ¯ƒæ¯„毆毇毈毉毊毌毎æ¯�毑毘毚毜æ¯�æ¯žæ¯Ÿæ¯ æ¯¢æ¯£æ¯¤æ¯¥æ¯¦æ¯§æ¯¨æ¯©æ¯¬æ¯æ¯®æ¯°æ¯±æ¯²æ¯´æ¯¶æ¯·æ¯¸æ¯ºæ¯»æ¯¼æ¯¾æ¯¿æ°€æ°�氂氃氄氈氉氊氋氌氎氒気氜æ°�æ°žæ° æ°£æ°¥æ°«æ°¬æ°æ°±æ°³æ°¶æ°·æ°¹æ°ºæ°»æ°¼æ°¾æ°¿æ±ƒæ±„汅汈汋汌æ±�汎æ±�汑汒汓汖汘�\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ±™æ±šæ±¢æ±£æ±¥æ±¦æ±§æ±«æ±¬æ±æ±®æ±¯æ±±æ±³æ±µæ±·æ±¸æ±ºæ±»æ±¼æ±¿æ²€æ²„沇沊沋æ²�沎沑沒沕沖沗沘沚沜æ²�æ²žæ² æ²¢æ²¨æ²¬æ²¯æ²°æ²´æ²µæ²¶æ²·æ²ºæ³€æ³�泂泃泆泇泈泋æ³�泎æ³�泑泒泘�泙泚泜æ³�æ³Ÿæ³¤æ³¦æ³§æ³©æ³¬æ³æ³²æ³´æ³¹æ³¿æ´€æ´‚洃洅洆洈洉洊æ´�æ´�æ´�洑洓洔洕洖洘洜æ´�æ´Ÿæ´ æ´¡æ´¢æ´£æ´¤æ´¦æ´¨æ´©æ´¬æ´æ´¯æ´°æ´´æ´¶æ´·æ´¸æ´ºæ´¿æµ€æµ‚浄浉浌æµ�浕浖浗浘浛æµ�æµŸæµ¡æµ¢æµ¤æµ¥æµ§æµ¨æµ«æµ¬æµæµ°æµ±æµ²æµ³æµµæµ¶æµ¹æµºæµ»æµ½æµ¾æµ¿æ¶€æ¶�涃涄涆涇涊涋æ¶�æ¶�æ¶�æ¶’æ¶–æ¶—æ¶˜æ¶™æ¶šæ¶œæ¶¢æ¶¥æ¶¬æ¶æ¶°æ¶±æ¶³æ¶´æ¶¶æ¶·æ¶¹æ¶ºæ¶»æ¶¼æ¶½æ¶¾æ·�淂淃淈淉淊�\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������æ·�æ·Žæ·�æ·�æ·’æ·“æ·”æ·•æ·—æ·šæ·›æ·œæ·Ÿæ·¢æ·£æ·¥æ·§æ·¨æ·©æ·ªæ·æ·¯æ·°æ·²æ·´æ·µæ·¶æ·¸æ·ºæ·½æ·¾æ·¿æ¸€æ¸�渂渃渄渆渇済渉渋æ¸�渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀æ¹�湂湅湆湇湈湉湊湋湌æ¹�æ¹�湑湒湕湗湙湚湜æ¹�æ¹žæ¹ æ¹¡æ¹¢æ¹£æ¹¤æ¹¥æ¹¦æ¹§æ¹¨æ¹©æ¹ªæ¹¬æ¹æ¹¯æ¹°æ¹±æ¹²æ¹³æ¹´æ¹µæ¹¶æ¹·æ¹¸æ¹¹æ¹ºæ¹»æ¹¼æ¹½æº€æº�溂溄溇溈溊溋溌æº�溎溑溒溓溔溕準溗溙溚溛æº�æºžæº æº¡æº£æº¤æº¦æº¨æº©æº«æº¬æºæº®æº°æº³æºµæº¸æº¹æº¼æº¾æº¿æ»€æ»ƒæ»„滅滆滈滉滊滌æ»�滎æ»�滒滖滘滙滛滜æ»�æ»£æ»§æ»ªæ»«æ»¬æ»æ»®æ»¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀æ¼�漃漄漅漇漈漊漋漌æ¼�漎æ¼�漑漒漖漗漘漙漚漛漜æ¼�漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀æ½�潂�潃潄潅潈潉潊潌潎æ½�æ½�潑潒潓潔潕潖潗潙潚潛æ½�æ½Ÿæ½ æ½¡æ½£æ½¤æ½¥æ½§æ½¨æ½©æ½ªæ½«æ½¬æ½¯æ½°æ½±æ½³æ½µæ½¶æ½·æ½¹æ½»æ½½æ½¾æ½¿æ¾€æ¾�澂澃澅澆澇澊澋æ¾�æ¾�澑澒澓澔澕澖澗澘澙澚澛æ¾�æ¾žæ¾Ÿæ¾ æ¾¢æ¾£æ¾¤æ¾¥æ¾¦æ¾¨æ¾©æ¾ªæ¾«æ¾¬æ¾æ¾®æ¾¯æ¾°æ¾±æ¾²æ¾´æ¾µæ¾·æ¾¸æ¾ºæ¾»æ¾¼æ¾½æ¾¾æ¾¿æ¿�濃濄濅濆濇濈濊濋濌æ¿�濎æ¿�æ¿�濓濔濕濖濗濘濙濚濛濜æ¿�濟濢濣濤濥�\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¿¦æ¿§æ¿¨æ¿©æ¿ªæ¿«æ¿¬æ¿æ¿°æ¿±æ¿²æ¿³æ¿´æ¿µæ¿¶æ¿·æ¿¸æ¿¹æ¿ºæ¿»æ¿¼æ¿½æ¿¾æ¿¿ç€€ç€�瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌ç€�瀎ç€�ç€�瀒瀓瀔瀕瀖瀗瀘瀙瀜ç€�ç€žç€Ÿç€ ç€¡ç€¢ç€¤ç€¥ç€¦ç€§ç€¨ç€©ç€ªï¿½ç€«ç€¬ç€ç€®ç€¯ç€°ç€±ç€²ç€³ç€´ç€¶ç€·ç€¸ç€ºç€»ç€¼ç€½ç€¾ç€¿ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆç�‰ç�Šç�‹ç��ç�Žç��ç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�šç�›ç�œç��ç�Ÿç� ç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�®ç�±ç�²ç�³ç�´ç�·ç�¹ç�ºç�»ç�½ç‚�炂炃炄炆炇炈炋炌ç‚�ç‚�ç‚�ç‚‘ç‚“ç‚—ç‚˜ç‚šç‚›ç‚žç‚Ÿç‚ ç‚¡ç‚¢ç‚£ç‚¤ç‚¥ç‚¦ç‚§ç‚¨ç‚©ç‚ªç‚°ç‚²ç‚´ç‚µç‚¶ç‚ºç‚¾ç‚¿çƒ„çƒ…çƒ†çƒ‡çƒ‰çƒ‹çƒŒçƒ�烎çƒ�çƒ�烑烒烓烔烕烖烗烚�\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������烜çƒ�çƒžçƒ çƒ¡çƒ¢çƒ£çƒ¥çƒªçƒ®çƒ°çƒ±çƒ²çƒ³çƒ´çƒµçƒ¶çƒ¸çƒºçƒ»çƒ¼çƒ¾çƒ¿ç„€ç„�焂焃焄焅焆焇焈焋焌ç„�焎ç„�焑焒焔焗焛焜ç„�ç„žç„Ÿç„ ç„¡ç„¢ç„£ç„¤ç„¥ç„§ç„¨ç„©ç„ªç„«ç„¬ç„焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀ç…�煂煃煄煆煇煈煉煋ç…�ç…�ç…�煑煒煓煔煕煖煗煘煙煚煛ç…�ç…Ÿç… ç…¡ç…¢ç…£ç…¥ç…©ç…ªç…«ç…¬ç…煯煰煱煴煵煶煷煹煻煼煾煿熀ç†�熂熃熅熆熇熈熉熋熌ç†�熎ç†�熑熒熓熕熖熗熚熛熜ç†�熞熡熢熣熤熥熦熧熩熪熫ç†ç†®ç†¯ç†°ç†±ç†²ç†´ç†¶ç†·ç†¸ç†ºç†»ç†¼ç†½ç†¾ç†¿ç‡€ç‡�燂燄燅燆燇燈燉燊燋燌ç‡�ç‡�ç‡�燑燒燓�\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜ç‡�燞營燡燢燣燤燦燨燩燪燫燬ç‡ç‡¯ç‡°ç‡±ç‡²ç‡³ç‡´ç‡µç‡¶ç‡·ç‡¸ç‡ºç‡»ç‡¼ç‡½ç‡¾ç‡¿çˆ€çˆ�爂爃爄爅爇爈爉爊爋爌çˆ�爎çˆ�çˆ�çˆ‘çˆ’çˆ“çˆ”çˆ•çˆ–çˆ—çˆ˜çˆ™çˆšï¿½çˆ›çˆœçˆžçˆŸçˆ çˆ¡çˆ¢çˆ£çˆ¤çˆ¥çˆ¦çˆ§çˆ©çˆ«çˆçˆ®çˆ¯çˆ²çˆ³çˆ´çˆºçˆ¼çˆ¾ç‰€ç‰�牂牃牄牅牆牉牊牋牎ç‰�ç‰�ç‰‘ç‰“ç‰”ç‰•ç‰—ç‰˜ç‰šç‰œç‰žç‰ ç‰£ç‰¤ç‰¥ç‰¨ç‰ªç‰«ç‰¬ç‰ç‰°ç‰±ç‰³ç‰´ç‰¶ç‰·ç‰¸ç‰»ç‰¼ç‰½çŠ‚çŠƒçŠ…çŠ†çŠ‡çŠˆçŠ‰çŠŒçŠŽçŠ�犑犓犔犕犖犗犘犙犚犛犜çŠ�çŠžçŠ çŠ¡çŠ¢çŠ£çŠ¤çŠ¥çŠ¦çŠ§çŠ¨çŠ©çŠªçŠ«çŠ®çŠ±çŠ²çŠ³çŠµçŠºçŠ»çŠ¼çŠ½çŠ¾çŠ¿ç‹€ç‹…ç‹†ç‹‡ç‹‰ç‹Šç‹‹ç‹Œç‹�狑狓狔狕狖狘狚狛�\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。·ˉˇ¨〃々—~‖…‘’“â€�〔〕〈〉《》「ã€�『ã€�〖〗ã€�】±×÷∶∧∨∑âˆ�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽âˆ�â‰ â‰®â‰¯â‰¤â‰¥âˆžâˆµâˆ´â™‚â™€Â°â€²â€³â„ƒï¼„Â¤ï¿ ï¿¡â€°Â§â„–â˜†â˜…â—‹â—�◎◇◆□■△▲※→â†�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ������⒈⒉⒊⒋⒌â’�â’Žâ’�â’�⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�â’‚â’ƒâ’„â’…â’†â’‡â‘ â‘¡â‘¢â‘£â‘¤â‘¥â‘¦â‘§â‘¨â‘©ï¿½ï¿½ãˆ ãˆ¡ãˆ¢ãˆ£ãˆ¤ãˆ¥ãˆ¦ãˆ§ãˆ¨ãˆ©ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©â…ªâ…«ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#¥%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¼¼ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�������︵︶︹︺︿﹀︽︾ï¹�﹂﹃﹄��︻︼︷︸︱�︳︴����������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿â•�║╒╓╔╕╖╗╘╙╚╛╜â•�╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬â•╮╯╰╱╲╳â–�▂▃▄▅▆▇�█▉▊▋▌â–�â–Žâ–�▓▔▕▼▽◢◣◤◥☉⊕〒ã€�〞�����������Ä�áǎà ēéěèīÃÇ�ìÅ�óǒòūúǔùǖǘǚǜüêɑ�ńň�ɡ����ㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎ãŽ�㎜ãŽ�㎞㎡ã�„ã�Žã�‘ã�’ã�•︰¬¦�℡㈱�â€����ー゛゜ヽヾ〆ã‚�ゞ﹉﹊﹋﹌ï¹�﹎ï¹�ï¹�﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜ï¹�ï¹žï¹Ÿï¹ ï¹¡ï¿½ï¹¢ï¹£ï¹¤ï¹¥ï¹¦ï¹¨ï¹©ï¹ªï¹«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ã€‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â”€â”�│┃┄┅┆┇┈┉┊┋┌â”�┎â”�â”�┑┒┓└┕┖┗┘┙┚┛├â”�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬â”┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀â•�╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������狜ç‹�狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌çŒ�çŒ�çŒ�çŒ‘çŒ’çŒ”çŒ˜çŒ™çŒšçŒŸçŒ çŒ£çŒ¤çŒ¦çŒ§çŒ¨çŒçŒ¯çŒ°çŒ²çŒ³çŒµçŒ¶çŒºçŒ»çŒ¼çŒ½ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆï¿½ç�‰ç�Šç�‹ç�Œç�Žç��ç�‘ç�“ç�”ç�•ç�–ç�˜ç�™ç�šç�›ç�œç��ç�žç�Ÿç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�«ç�®ç�°ç�±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¿çŽ€çŽ�玂玃玅玆玈玊玌çŽ�çŽ�çŽ�玒玓玔玕玗玘玙玚玜çŽ�çŽžçŽ çŽ¡çŽ£çŽ¤çŽ¥çŽ¦çŽ§çŽ¨çŽªçŽ¬çŽçŽ±çŽ´çŽµçŽ¶çŽ¸çŽ¹çŽ¼çŽ½çŽ¾çŽ¿ç��ç�ƒç�„ç�…ç�†ç�‡ï¿½ç�‹ç�Œç�Žç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�šç�›ç�œç��ç�Ÿç�¡ç�¢ç�£ç�¤ç�¦ç�¨ç�ªç�«ç�¬ç�®ç�¯ç�°ç�±ç�³ç�´ç�µç�¶ç�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"����������������������������������������������������������������ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¾ç�¿ç�€ç��ç�‚ç�„ç�‡ç�ˆç�‹ç�Œç��ç�Žç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œç��ç�žç�Ÿç� ç�¡ç�£ç�¤ç�§ç�©ç�«ç�ç�¯ç�±ç�²ç�·ç�¸ç�¹ç�ºç�»ç�½ç�¾ç�¿ç‘€ç‘‚瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌ç‘��瑎ç‘�ç‘�瑑瑒瑓瑔瑖瑘ç‘�ç‘ ç‘¡ç‘¢ç‘£ç‘¤ç‘¥ç‘¦ç‘§ç‘¨ç‘©ç‘ªç‘«ç‘¬ç‘®ç‘¯ç‘±ç‘²ç‘³ç‘´ç‘µç‘¸ç‘¹ç‘ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌ç’�ç’�璑璒璓璔璕璖璗璘璙璚璛ç’�ç’Ÿç’ ç’¡ç’¢ç’£ç’¤ç’¥ç’¦ç’ªç’«ç’¬ç’璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀ç“�瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌ç“�瓎ç“�ç“�瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛ç“�瓟瓡瓥瓧瓨瓩瓪瓫瓬ç“瓰瓱瓲�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀ç”�甂甃甅甆甇甈甉甊甋甌甎ç”�甒甔甕甖甗甛ç”�ç”žç” ç”¡ç”¢ç”£ç”¤ç”¦ç”§ç”ªç”®ç”´ç”¶ç”¹ç”¼ç”½ç”¿ç•�畂畃畄畆畇畉畊ç•�ç•�畑畒畓畕畖畗畘�ç•�ç•žç•Ÿç• ç•¡ç•¢ç•£ç•¤ç•§ç•¨ç•©ç•«ç•¬ç•畮畯異畱畳畵當畷畺畻畼畽畾疀ç–�疂疄疅疇�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������疈疉疊疌ç–�ç–Žç–�疓疕疘疛疜疞疢疦疧疨疩疪ç–疶疷疺疻疿痀ç—�痆痋痌痎ç—�ç—�痑痓痗痙痚痜ç—�ç—Ÿç— ç—¡ç—¥ç—©ç—¬ç—痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋ç˜�瘎ç˜�瘑瘒瘓瘔瘖瘚瘜ç˜�瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽ç™�療癄�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎ç™�ç™�癑癒癓癕癗癘癙癚癛ç™�ç™Ÿç™ ç™¡ç™¢ç™¤ç™¥ç™¦ç™§ç™¨ç™©ç™ªç™¬ç™ç™®ç™°ç™±ç™²ç™³ç™´ç™µç™¶ç™·ç™¹ç™ºç™¼ç™¿çš€çš�皃皅皉皊皌çš�çš�çš�皒皔皕皗皘皚皛�皜çš�çšžçšŸçš çš¡çš¢çš£çš¥çš¦çš§çš¨çš©çšªçš«çš¬çšçš¯çš°çš³çšµçš¶çš·çš¸çš¹çšºçš»çš¼çš½çš¾ç›€ç›�盃啊阿埃挨哎唉哀皑癌蔼矮艾ç¢�爱隘éž�æ°¨å®‰ä¿ºæŒ‰æš—å²¸èƒºæ¡ˆè‚®æ˜‚ç›Žå‡¹æ•–ç†¬ç¿±è¢„å‚²å¥¥æ‡Šæ¾³èŠæ�Œæ‰’å�å�§ç¬†å…«ç–¤å·´æ‹”è·‹é�¶æŠŠè€™å��霸罢爸白æŸ�百摆佰败拜稗斑ç�æ�¬æ‰³èˆ¬é¢�æ�¿ç‰ˆæ‰®æ‹Œä¼´ç“£å�ŠåŠžç»Šé‚¦å¸®æ¢†æ¦œè†€ç»‘æ£’ç£…èšŒé•‘å‚�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜ç›�ç›žç› ç›¡ç›¢ç›£ç›¤ç›¦ç›§ç›¨ç›©ç›ªç›«ç›¬ç›ç›°ç›³ç›µç›¶ç›·ç›ºç›»ç›½ç›¿çœ€çœ‚眃眅眆眊県眎çœ�çœ�眑眒眓眔眕眖眗眘眛眜çœ�眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿ç�‚ç�„ç�…ç�†ç�ˆç�‰ç�Šç�‹ç�Œç��ç�Žç��ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œè–„雹ä¿�å ¡é¥±å®�抱报暴豹é²�爆æ�¯ç¢‘悲å�‘北辈背è´�é’¡å€�ç‹ˆå¤‡æƒ«ç„™è¢«å¥”è‹¯æœ¬ç¬¨å´©ç»·ç”æ³µè¹¦è¿¸é€¼é¼»æ¯”鄙笔彼碧蓖蔽毕毙毖å¸�åº‡ç—¹é—æ•�弊必辟å£�臂é�¿é™›éžè¾¹ç¼–è´¬æ‰�便å�˜å�žè¾¨è¾©è¾«é��æ ‡å½ªè†˜è¡¨é³–æ†‹åˆ«ç˜ªå½¬æ–Œæ¿’æ»¨å®¾æ‘ˆå…µå†°æŸ„ä¸™ç§‰é¥¼ç‚³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������ç��ç�žç�Ÿç� ç�¤ç�§ç�©ç�ªç�ç�®ç�¯ç�°ç�±ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�ºç�»ç�¼çž�瞂瞃瞆瞇瞈瞉瞊瞋çž�çž�瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜çž�瞞瞡瞣瞤瞦瞨瞫çžçž®çž¯çž±çž²çž´çž¶çž·çž¸çž¹çžºï¿½çž¼çž¾çŸ€çŸ�矂矃矄矅矆矇矈矉矊矋矌矎çŸ�çŸ�矑矒矓矔矕矖矘矙矚çŸ�çŸžçŸŸçŸ çŸ¡çŸ¤ç—…å¹¶çŽ»è� æ’æ‹¨é’µæ³¢å�šå‹ƒæ��铂箔伯帛舶脖膊渤泊驳æ�•å�œå“ºè¡¥åŸ ä¸�布æ¥ç°¿éƒ¨æ€–擦猜è£�æ��æ‰�è´¢ç�¬è¸©é‡‡å½©è�œè”¡é¤�å�‚èš•æ®‹æƒæƒ¨ç�¿è‹�舱仓沧è—�æ“�糙槽曹è�‰åŽ•ç–ä¾§å†Œæµ‹å±‚è¹æ�’å�‰èŒ¬èŒ¶æŸ¥ç¢´æ�½å¯Ÿå²”差诧拆柴豺æ�€æŽºè�‰é¦‹è°—ç¼ é“²äº§é˜�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çŸ¦çŸ¨çŸªçŸ¯çŸ°çŸ±çŸ²çŸ´çŸµçŸ·çŸ¹çŸºçŸ»çŸ¼ç ƒç „ç …ç †ç ‡ç ˆç Šç ‹ç Žç �ç �ç “ç •ç ™ç ›ç žç ç ¡ç ¢ç ¤ç ¨ç ªç «ç ®ç ¯ç ±ç ²ç ³ç µç ¶ç ½ç ¿ç¡�硂硃硄硆硈硉硊硋ç¡�ç¡�ç¡‘ç¡“ç¡”ç¡˜ç¡™ç¡šï¿½ç¡›ç¡œç¡žç¡Ÿç¡ ç¡¡ç¡¢ç¡£ç¡¤ç¡¥ç¡¦ç¡§ç¡¨ç¡©ç¡¯ç¡°ç¡±ç¡²ç¡³ç¡´ç¡µç¡¶ç¡¸ç¡¹ç¡ºç¡»ç¡½ç¡¾ç¡¿ç¢€ç¢�碂碃场å°�常长å�¿è‚ 厂敞畅唱倡超抄钞æœ�嘲潮巢å�µç‚’车扯撤掣彻澈郴臣辰尘晨忱沉陈è¶�衬撑称城橙æˆ�呈乘程惩澄诚承逞骋秤å�ƒç—´æŒ�åŒ™æ± è¿Ÿå¼›é©°è€»é½¿ä¾ˆå°ºèµ¤ç¿…æ–¥ç‚½å……å†²è™«å´‡å® æŠ½é…¬ç•´è¸Œç¨ æ„�ç¹ä»‡ç»¸çž…丑è‡åˆ�出橱厨躇锄é›�æ»�除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋ç¢�ç¢�碒碔碕碖碙ç¢�ç¢žç¢ ç¢¢ç¢¤ç¢¦ç¢¨ç¢©ç¢ªç¢«ç¢¬ç¢ç¢®ç¢¯ç¢µç¢¶ç¢·ç¢¸ç¢ºç¢»ç¢¼ç¢½ç¢¿ç£€ç£‚磃磄磆磇磈磌ç£�磎ç£�磑磒磓磖磗磘磚磛磜ç£�ç£žç£Ÿç£ ç£¡ç£¢ç££ï¿½ç£¤ç£¥ç£¦ç£§ç£©ç£ªç£«ç£ç£®ç£¯ç£°ç£±ç£³ç£µç£¶ç£¸ç£¹ç£»ç£¼ç£½ç£¾ç£¿ç¤€ç¤‚礃礄礆礇礈礉礊礋礌础储矗æ��触处æ�£å·�ç©¿æ¤½ä¼ èˆ¹å–˜ä¸²ç–®çª—å¹¢åºŠé—¯åˆ›å�¹ç‚Šæ�¶é”¤åž‚æ˜¥æ¤¿é†‡å”‡æ·³çº¯è ¢æˆ³ç»°ç–µèŒ¨ç£�雌辞慈瓷è¯�æ¤åˆºèµ�次è�ªè‘±å›±åŒ†ä»Žä¸›å‡‘粗醋簇促蹿篡窜摧崔催脆ç˜�ç²¹æ·¬ç¿ æ�‘å˜å¯¸ç£‹æ’®æ�“措挫错æ�è¾¾ç”瘩打大呆æ¹å‚£æˆ´å¸¦æ®†ä»£è´·è¢‹å¾…逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������ç¤�礎ç¤�ç¤�礑礒礔礕礖礗礘礙礚礛礜ç¤�ç¤Ÿç¤ ç¤¡ç¤¢ç¤£ç¤¥ç¤¦ç¤§ç¤¨ç¤©ç¤ªç¤«ç¤¬ç¤ç¤®ç¤¯ç¤°ç¤±ç¤²ç¤³ç¤µç¤¶ç¤·ç¤¸ç¤¹ç¤½ç¤¿ç¥‚祃祄祅祇祊祋祌ç¥�祎ç¥�ç¥�祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌ç¦�禎ç¦�ç¦‘ç¦’æ€ è€½æ‹…ä¸¹å�•郸掸胆旦氮但惮淡诞弹蛋当挡党è�¡æ¡£åˆ€æ�£è¹ˆå€’岛祷导到稻悼é�“盗德得的蹬ç�¯ç™»ç‰çžªå‡³é‚“å ¤ä½Žæ»´è¿ªæ•Œç¬›ç‹„æ¶¤ç¿Ÿå«¡æŠµåº•åœ°è’‚ç¬¬å¸�å¼Ÿé€’ç¼”é¢ æŽ‚æ»‡ç¢˜ç‚¹å…¸é�›åž«ç”µä½ƒç”¸åº—æƒ¦å¥ æ·€æ®¿ç¢‰å�¼é›•凋åˆ�掉å�Šé’“调跌爹碟è�¶è¿è°�å� �\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜ç¦�ç¦žç¦Ÿç¦ ç¦¡ç¦¢ç¦£ç¦¤ç¦¥ç¦¦ç¦¨ç¦©ç¦ªç¦«ç¦¬ç¦ç¦®ç¦¯ç¦°ç¦±ç¦²ç¦´ç¦µç¦¶ç¦·ç¦¸ç¦¼ç¦¿ç§‚秄秅秇秈秊秌秎ç§�ç§�秓秔秖秗秙秚秛秜ç§�ç§žç§ ç§¡ç§¢ç§¥ç§¨ç§ªï¿½ç§¬ç§®ç§±ç§²ç§³ç§´ç§µç§¶ç§·ç§¹ç§ºç§¼ç§¾ç§¿ç¨�稄稅稇稈稉稊稌ç¨�ç¨�稑稒稓稕稖稘稙稛稜ä¸�盯å�®é’‰é¡¶é¼Žé”å®šè®¢ä¸¢ä¸œå†¬è‘£æ‡‚åŠ¨æ ‹ä¾—æ�«å†»æ´žå…œæŠ–斗陡豆逗痘都ç�£æ¯’çŠŠç‹¬è¯»å µç�¹èµŒæ�œé•€è‚šåº¦æ¸¡å¦’端çŸé”»æ®µæ–ç¼Žå †å…‘é˜Ÿå¯¹å¢©å�¨è¹²æ•¦é¡¿å›¤é’�盾é��掇哆多夺垛躲朵跺舵å‰�æƒ°å •è›¾å³¨é¹…ä¿„é¢�讹娥æ�¶åŽ„æ‰¼é��鄂饿æ�©è€Œå„¿è€³å°”饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������ç¨�稟稡稢稤稥稦稧稨稩稪稫稬ç¨ç¨®ç¨¯ç¨°ç¨±ç¨²ç¨´ç¨µç¨¶ç¨¸ç¨ºç¨¾ç©€ç©�穂穃穄穅穇穈穉穊穋穌ç©�穎ç©�ç©�穒穓穔穕穖穘穙穚穛穜ç©�ç©žç©Ÿç© ç©¡ç©¢ç©£ç©¤ç©¥ç©¦ç©§ç©¨ï¿½ç©©ç©ªç©«ç©¬ç©ç©®ç©¯ç©±ç©²ç©³ç©µç©»ç©¼ç©½ç©¾çª‚窅窇窉窊窋窌窎çª�çª�窓窔窙窚窛窞窡窢贰å�‘罚ç�ä¼�ä¹�阀法ç��藩帆番翻樊矾钒ç¹�凡烦å��è¿”èŒƒè´©çŠ¯é¥æ³›å�ŠèŠ³æ–¹è‚ªæˆ¿é˜²å¦¨ä»¿è®¿çººæ”¾è�²é�žå•¡é£žè‚¥åŒªè¯½å� 肺废沸费芬酚å�©æ°›åˆ†çº·å�Ÿç„šæ±¾ç²‰å¥‹ä»½å¿¿æ„¤ç²ªä¸°å°�枫蜂峰锋风疯烽逢冯ç¼�讽奉凤佛å�¦å¤«æ•·è‚¤åµæ‰¶æ‹‚è¾�幅氟符ä¼�俘æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀ç«�竂竃竄竅竆竇竈竉竊竌ç«�竎ç«�ç«�竑竒竓竔竕竗竘竚竛竜ç«�竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀ç¬�笂笅笇笉笌ç¬�笎ç¬�笒笓笖笗笘笚笜ç¬�ç¬Ÿç¬¡ç¬¢ç¬£ç¬§ç¬©ç¬æµ®æ¶ªç¦�袱弗甫抚辅俯釜斧脯腑府è…�赴副覆赋å¤�傅付阜父腹负富讣附妇缚å’�噶嘎该改概钙盖溉干甘æ�†æŸ‘ç«¿è‚�赶感秆敢赣冈刚钢缸肛纲岗港æ� 篙皋高è†�羔糕æ�žé•�ç¨¿å‘Šå“¥æŒæ��戈鸽胳疙割é�©è‘›æ ¼è›¤é˜�隔铬个å�„ç»™æ ¹è·Ÿè€•æ›´åºšç¾¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿ç€ç�ç‚çƒç„ç†çˆçŠç�çŽç“ç•ç—ç™çœçžçŸç¡ç£ç¤ç¥ç¦ç§ç¨ç©çªç«ç¬çç¯ç°ç³ç´ç¶ç¸çºç¼ç½ç¿ç®�箂箃箄箆箇箈箉箊箋箌箎ç®�ï¿½ç®‘ç®’ç®“ç®–ç®˜ç®™ç®šç®›ç®žç®Ÿç® ç®£ç®¤ç®¥ç®®ç®¯ç®°ç®²ç®³ç®µç®¶ç®·ç®¹ç®ºç®»ç®¼ç®½ç®¾ç®¿ç¯€ç¯‚ç¯ƒç¯„åŸ‚è€¿æ¢—å·¥æ”»åŠŸæ�龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构è´å¤Ÿè¾œè�‡å’•ç®�ä¼°æ²½å¤å§‘鼓å�¤è›Šéª¨è°·è‚¡æ•…顾固雇刮瓜å‰�寡挂褂乖æ‹�æ€ªæ£ºå…³å®˜å† è§‚ç®¡é¦†ç½�惯ç�Œè´¯å…‰å¹¿é€›ç‘°è§„åœç¡…归龟闺轨鬼诡癸桂柜跪贵刽辊滚æ£�é”…éƒå›½æžœè£¹è¿‡å“ˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������篅篈築篊篋ç¯�篎ç¯�ç¯�ç¯’ç¯”ç¯•ç¯–ç¯—ç¯˜ç¯›ç¯œç¯žç¯Ÿç¯ ç¯¢ç¯£ç¯¤ç¯§ç¯¨ç¯©ç¯«ç¯¬ç¯ç¯¯ç¯°ç¯²ç¯³ç¯´ç¯µç¯¶ç¯¸ç¯¹ç¯ºç¯»ç¯½ç¯¿ç°€ç°�簂簃簄簅簆簈簉簊ç°�ç°Žç°�簑簒簓簔簕簗簘簙�簚簛簜ç°�ç°žç° ç°¡ç°¢ç°£ç°¤ç°¥ç°¨ç°©ç°«ç°¬ç°ç°®ç°¯ç°°ç°±ç°²ç°³ç°´ç°µç°¶ç°·ç°¹ç°ºç°»ç°¼ç°½ç°¾ç±‚éª¸å©æµ·æ°¦äº¥å®³éª‡é…£æ†¨é‚¯éŸ©å�«æ¶µå¯’函喊罕翰撼æ��旱憾æ‚�焊汗汉夯æ�航壕嚎豪毫éƒ�好耗å�·æµ©å‘µå–�è�·è��æ ¸ç¦¾å’Œä½•å�ˆç›’貉阂河涸赫è¤�é¹¤è´ºå˜¿é»‘ç—•å¾ˆç‹ æ�¨å“¼äº¨æ¨ªè¡¡æ�’轰哄烘虹鸿洪å®�弘红喉侯猴å�¼åŽšå€™å�Žå‘¼ä¹Žå¿½ç‘šå£¶è‘«èƒ¡è�´ç‹�糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎ç±�ç±�籑籒籓籔籕籖籗籘籙籚籛籜ç±�ç±žç±Ÿç± ç±¡ç±¢ç±£ç±¤ç±¥ç±¦ç±§ç±¨ç±©ç±ªç±«ç±¬ç±ç±®ç±¯ç±°ç±±ç±²ç±µç±¶ç±·ç±¸ç±¹ç±ºç±¾ç±¿ç²€ç²�粂粃粄粅粆粇�粈粊粋粌ç²�粎ç²�ç²�ç²“ç²”ç²–ç²™ç²šç²›ç² ç²¡ç²£ç²¦ç²§ç²¨ç²©ç²«ç²¬ç²ç²¯ç²°ç²´ç²µç²¶ç²·ç²¸ç²ºç²»å¼§è™Žå”¬æŠ¤äº’沪户花哗å�ŽçŒ¾æ»‘画划化è¯�æ§�徊怀淮å��欢环桓还缓æ�¢æ‚£å”¤ç—ªè±¢ç„•涣宦幻è�’慌黄磺è�—簧皇凰惶煌晃幌æ��è°Žç�°æŒ¥è¾‰å¾½æ�¢è›”回æ¯�悔慧å�‰æƒ 晦贿秽会烩汇讳诲绘è�¤æ˜�å©šé‚æµ‘æ··è±�活伙ç�«èŽ·æˆ–æƒ‘éœ�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎ç³�ç³�糑糒糓糔糘糚糛ç³�糞糡糢糣糤糥糦糧糩糪糫糬ç³ç³®ç³°ç³±ç³²ç³³ç³´ç³µç³¶ç³·ç³¹ç³ºç³¼ç³½ç³¾ç³¿ç´€ç´�紂紃約紅紆紇紈紉紋紌ç´�ç´Žç´�ç´��紑紒紓純紕紖紗紘紙級紛紜ç´�紞紟紡紣紤紥紦紨紩紪紬ç´ç´®ç´°ç´±ç´²ç´³ç´´ç´µç´¶è‚Œé¥¥è¿¹æ¿€è®¥é¸¡å§¬ç»©ç¼‰å�‰æž�棘辑ç±�集å�Šæ€¥ç–¾æ±²å�³å«‰çº§æŒ¤å‡ 脊己蓟技冀å£ä¼Žç¥å‰‚æ‚¸æµŽå¯„å¯‚è®¡è®°æ—¢å¿Œé™…å¦“ç»§çºªå˜‰æž·å¤¹ä½³å®¶åŠ è�šé¢Šè´¾ç”²é’¾å�‡ç¨¼ä»·æž¶é©¾å«�æ¼ç›‘å�šå°–笺间煎兼肩艰奸缄茧检柬碱硷拣æ�¡ç®€ä¿å‰ªå‡�è��槛鉴践贱è§�é”®ç®ä»¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀çµ�終絃組絅絆絇絈絉絊絋経çµ�絎çµ�çµ�絑絒絓絔絕絖絗絘絙絚絛絜çµ�çµžçµŸçµ çµ¡çµ¢çµ£çµ¤çµ¥çµ¦çµ§çµ¨çµ©çµªçµ«çµ¬çµçµ¯çµ°çµ±çµ²çµ³çµ´çµµçµ¶ï¿½çµ¸çµ¹çµºçµ»çµ¼çµ½çµ¾çµ¿ç¶€ç¶�綂綃綄綅綆綇綈綉綊綋綌ç¶�ç¶Žç¶�ç¶�綑綒經綔綕綖綗綘å�¥èˆ°å‰‘饯æ¸�æº…æ¶§å»ºåƒµå§œå°†æµ†æ±Ÿç–†è’‹æ¡¨å¥–è®²åŒ é…±é™�蕉椒ç¤�焦胶交郊浇骄娇嚼æ�…铰矫侥脚狡角饺缴绞剿教酵轿较å�«çª–æ�接皆秸街阶截劫节桔æ�°æ�·ç�«ç«æ´�结解å§�æˆ’è—‰èŠ¥ç•Œå€Ÿä»‹ç–¥è¯«å±Šå·¾ç‹æ–¤é‡‘今津襟紧锦仅谨进é�³æ™‹ç¦�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������継続綛綜ç¶�ç¶žç¶Ÿç¶ ç¶¡ç¶¢ç¶£ç¶¤ç¶¥ç¶§ç¶¨ç¶©ç¶ªç¶«ç¶¬ç¶ç¶¯ç¶°ç¶±ç¶²ç¶³ç¶´ç¶µç¶¶ç¶·ç¶¸ç¶¹ç¶ºç¶»ç¶¼ç¶½ç¶¾ç¶¿ç·€ç·�緂緃緄緅緆緇緈緉緊緋緌ç·�ç·Žç·�ç·�緑緒緓緔緕緖緗緘緙�線緛緜ç·�ç·žç·Ÿç· ç·¡ç·¢ç·£ç·¤ç·¥ç·¦ç·§ç·¨ç·©ç·ªç·«ç·¬ç·ç·®ç·¯ç·°ç·±ç·²ç·³ç·´ç·µç·¶ç··ç·¸ç·¹ç·ºå°½åвè�†å…¢èŒŽç�›æ™¶é²¸äº¬æƒŠç²¾ç²³ç»�äº•è¦æ™¯é¢ˆé�™å¢ƒæ•¬é•œå¾„ç—‰é�–竟竞净炯窘æ�ªç©¶çº 玖éŸä¹…ç�¸ä¹�é…’åŽ©æ•‘æ—§è‡¼èˆ…å’Žå°±ç–šéž æ‹˜ç‹™ç–½å±…é©¹è�Šå±€å’€çŸ©ä¸¾æ²®è�šæ‹’æ�®å·¨å…·è·�踞锯俱å�¥æƒ§ç‚¬å‰§æ��鹃娟倦眷å�·ç»¢æ’…攫抉掘倔爵觉决诀ç»�å�‡è�Œé’§å†›å�›å³»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀ç¸�縂縃縄縅縆縇縈縉縊縋縌ç¸�縎ç¸�ç¸�縑縒縓縔縕縖縗縘縙縚縛縜ç¸�ç¸žç¸Ÿç¸ ç¸¡ç¸¢ç¸£ç¸¤ç¸¥ç¸¦ç¸§ç¸¨ç¸©ç¸ªç¸«ç¸¬ç¸ç¸®ç¸¯ç¸°ç¸±ç¸²ç¸³ç¸´ç¸µç¸¶ç¸·ç¸¸ç¸¹ï¿½ç¸ºç¸¼ç¸½ç¸¾ç¸¿ç¹€ç¹‚繃繄繅繆繈繉繊繋繌ç¹�繎ç¹�ç¹�繑繒繓織繕繖繗繘繙繚繛繜ç¹�俊竣浚郡éª�喀咖å�¡å’¯å¼€æ�©æ¥·å‡¯æ…¨åˆŠå ªå‹˜å�Žç �çœ‹åº·æ…·ç³ æ‰›æŠ—äº¢ç‚•è€ƒæ‹·çƒ¤é� å�·è‹›æŸ¯æ£µç£•颗科壳咳å�¯æ¸´å…‹åˆ»å®¢è¯¾è‚¯å•ƒåž¦æ�³å�‘å�空æ��å”æŽ§æŠ å�£æ‰£å¯‡æž¯å“窟苦酷库裤夸垮挎跨胯å�—ç·ä¾©å¿«å®½æ¬¾åŒ¡ç�狂框矿眶旷况äº�盔岿窥葵奎é�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¹žç¹Ÿç¹ ç¹¡ç¹¢ç¹£ç¹¤ç¹¥ç¹¦ç¹§ç¹¨ç¹©ç¹ªç¹«ç¹¬ç¹ç¹®ç¹¯ç¹°ç¹±ç¹²ç¹³ç¹´ç¹µç¹¶ç¹·ç¹¸ç¹¹ç¹ºç¹»ç¹¼ç¹½ç¹¾ç¹¿çº€çº�纃纄纅纆纇纈纉纊纋續çº�纎çº�çº�纑纒纓纔纕纖纗纘纙纚纜çº�纞�纮纴纻纼绖绤绬绹缊ç¼�缞缷缹缻缼缽缾缿罀ç½�罃罆罇罈罉罊罋罌ç½�罎ç½�罒罓馈愧溃å�¤æ˜†æ�†å›°æ‹¬æ‰©å»“阔垃拉喇蜡腊辣啦莱æ�¥èµ–è“�婪æ �拦篮阑兰澜谰æ�½è§ˆæ‡’缆烂滥ç�…榔狼廊郎朗浪æ�žåŠ³ç‰¢è€�佬姥酪烙æ¶�å‹’ä¹�é›·é•蕾磊累儡垒擂肋类泪棱楞冷厘梨çŠ�黎篱狸离漓ç�†æ�Žé‡Œé²¤ç¤¼èމè�”å��æ —ä¸½åŽ‰åŠ±ç ¾åŽ†åˆ©å‚ˆä¾‹ä¿��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������罖罙罛罜ç½�ç½žç½ ç½£ç½¤ç½¥ç½¦ç½§ç½«ç½¬ç½ç½¯ç½°ç½³ç½µç½¶ç½·ç½¸ç½ºç½»ç½¼ç½½ç½¿ç¾€ç¾‚羃羄羅羆羇羈羉羋ç¾�ç¾�ç¾�ç¾‘ç¾’ç¾“ç¾•ç¾–ç¾—ç¾˜ç¾™ç¾›ç¾œç¾ ç¾¢ç¾£ç¾¥ç¾¦ç¾¨ç¾©ç¾ªç¾«ç¾¬ç¾ç¾®ç¾±ï¿½ç¾³ç¾´ç¾µç¾¶ç¾·ç¾ºç¾»ç¾¾ç¿€ç¿‚翃翄翆翇翈翉翋ç¿�ç¿�ç¿�翑習翓翖翗翙翚翛翜ç¿�翞翢翣痢立粒沥隶力璃哩俩è�”莲连镰廉怜涟帘敛脸链æ�‹ç‚¼ç»ƒç²®å‡‰æ¢�粱良两辆é‡�晾亮谅撩è�Šåƒšç–—燎寥辽潦了撂镣廖料列裂烈劣猎ç�³æž—磷霖临邻鳞淋凛èµ�å��拎玲è�±é›¶é¾„铃伶羚凌ç�µé™µå²é¢†å�¦ä»¤æºœç�‰æ¦´ç¡«é¦�留刘瘤æµ�柳å…é¾™è�‹å’™ç¬¼çª¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬ç¿ç¿¯ç¿²ç¿´ç¿µç¿¶ç¿·ç¿¸ç¿¹ç¿ºç¿½ç¿¾ç¿¿è€‚耇耈耉耊耎è€�耑耓耚耛è€�耞耟耡耣耤耫耬è€è€®è€¯è€°è€²è€´è€¹è€ºè€¼è€¾è�€è��è�„è�…è�‡è�ˆè�‰è�Žè��è��è�‘è�“è�•è�–è�—�è�™è�›è�œè��è�žè�Ÿè� è�¡è�¢è�£è�¤è�¥è�¦è�§è�¨è�«è�¬è�è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¸è�¹è�ºè�»è�¼è�½éš†åž„拢陇楼娄æ�‚篓æ¼�陋芦å�¢é¢…åº�炉掳å�¤è™�é²�麓碌露路赂鹿潞禄录陆戮驴å�•é“�ä¾£æ—…å±¥å±¡ç¼•è™‘æ°¯å¾‹çŽ‡æ»¤ç»¿å³¦æŒ›åªæ»¦å�µä¹±æŽ 略抡轮伦仑沦纶论è��螺罗逻锣箩骡裸è�½æ´›éª†ç»œå¦ˆéº»çŽ›ç �蚂马骂嘛å�—埋买麦å�–迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������è�¾è‚�肂肅肈肊è‚�肎è‚�è‚�肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋èƒ�èƒ�èƒ‘èƒ’èƒ“èƒ”èƒ•èƒ˜èƒŸèƒ èƒ¢èƒ£èƒ¦èƒ®èƒµèƒ·èƒ¹èƒ»èƒ¾èƒ¿è„€è„�脃脄脅脇脈脋�脌脕脗脙脛脜è„�è„Ÿè„ è„¡è„¢è„£è„¤è„¥è„¦è„§è„¨è„©è„ªè„«è„脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆å�¯èŒ‚冒帽貌贸么玫枚梅酶霉煤没眉媒é•�æ¯�美昧å¯�妹媚门闷们è�Œè’™æª¬ç›Ÿé”°çŒ›æ¢¦åŸçœ¯é†šé�¡ç³œè¿·è°œå¼¥ç±³ç§˜è§…æ³Œèœœå¯†å¹‚æ£‰çœ ç»µå†•å…�勉娩缅é�¢è‹—æ��çž„è—�秒渺庙妙蔑ç�民抿皿æ•�悯闽明螟鸣é“å��命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������腀è…�腂腃腄腅腇腉è…�è…Žè…�腒腖腗腘腛腜è…�腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸è†�膃膄膅膆膇膉膋膌è†�膎è†�è†’è†“è†”è†•è†–è†—è†™è†šè†žè†Ÿè† è†¡è†¢è†¤è†¥ï¿½è†§è†©è†«è†¬è†è†®è†¯è†°è†±è†²è†´è†µè†¶è†·è†¸è†¹è†¼è†½è†¾è†¿è‡„臅臇臈臉臋è‡�臎è‡�è‡�è‡‘è‡’è‡“æ‘¹è˜‘æ¨¡è†œç£¨æ‘©é”æŠ¹æœ«èŽ«å¢¨é»˜æ²«æ¼ å¯žé™Œè°‹ç‰ŸæŸ�拇牡亩姆æ¯�墓暮幕募慕木目ç�¦ç‰§ç©†æ‹¿å“ªå‘�é’ é‚£å¨œçº³æ°–ä¹ƒå¥¶è€�奈å�—ç”·éš¾å›ŠæŒ è„‘æ�¼é—¹æ·–å‘¢é¦�å†…å«©èƒ½å¦®éœ“å€ªæ³¥å°¼æ‹Ÿä½ åŒ¿è…»é€†æººè”«æ‹ˆå¹´ç¢¾æ’µæ�»å¿µå¨˜é…¿é¸Ÿå°¿æ��è�‚å½å•®é•Šé•�æ¶…æ‚¨æŸ ç‹žå‡�å®��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜è‡�è‡žè‡Ÿè‡ è‡¡è‡¢è‡¤è‡¥è‡¦è‡¨è‡©è‡«è‡®è‡¯è‡°è‡±è‡²è‡µè‡¶è‡·è‡¸è‡¹è‡ºè‡½è‡¿èˆƒèˆ‡èˆˆèˆ‰èˆŠèˆ‹èˆŽèˆ�舑舓舕舖舗舘舙舚èˆ�èˆ èˆ¤èˆ¥èˆ¦èˆ§èˆ©èˆ®èˆ²èˆºèˆ¼èˆ½èˆ¿ï¿½è‰€è‰�艂艃艅艆艈艊艌è‰�艎è‰�艑艒艓艔艕艖艗艙艛艜è‰�è‰žè‰ è‰¡è‰¢è‰£è‰¤è‰¥è‰¦è‰§è‰©æ‹§æ³žç‰›æ‰é’®çº½è„“浓农弄奴努怒女暖è™�疟挪懦糯诺哦欧鸥殴藕呕å�¶æ²¤å•ªè¶´çˆ¬å¸•怕ç�¶æ‹�排牌徘湃派攀潘盘ç£�盼畔判å�›ä¹“庞æ—�耪胖抛咆刨炮è¢�跑泡呸胚培裴赔陪é…�ä½©æ²›å–·ç›†ç °æŠ¨çƒ¹æ¾Žå½è“¬æ£šç¡¼ç¯·è†¨æœ‹é¹�æ�§ç¢°å�¯ç ’霹批披劈ç�µæ¯—�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������艪艫艬è‰è‰±è‰µè‰¶è‰·è‰¸è‰»è‰¼èŠ€èŠ�芃芅芆芇芉芌èŠ�èŠ“èŠ”èŠ•èŠ–èŠšèŠ›èŠžèŠ èŠ¢èŠ£èŠ§èŠ²èŠµèŠ¶èŠºèŠ»èŠ¼èŠ¿è‹€è‹‚è‹ƒè‹…è‹†è‹‰è‹�苖苙苚è‹�苢苧苨苩苪苬è‹è‹®è‹°è‹²è‹³è‹µè‹¶è‹¸ï¿½è‹ºè‹¼è‹½è‹¾è‹¿èŒ€èŒŠèŒ‹èŒ�èŒ�茒茓茖茘茙èŒ�èŒžèŒŸèŒ èŒ¡èŒ¢èŒ£èŒ¤èŒ¥èŒ¦èŒ©èŒªèŒ®èŒ°èŒ²èŒ·èŒ»èŒ½å•¤è„¾ç–²çš®åŒ¹ç—žåƒ»å±�è¬ç¯‡å��片骗飘漂瓢票撇瞥拼频贫å“�è�˜ä¹’å�ªè‹¹è��å¹³å‡ç“¶è¯„å±�å�¡æ³¼é¢‡å©†ç ´é„迫粕剖扑铺仆莆葡è�©è’²åŸ”朴圃普浦谱æ›�ç€‘æœŸæ¬ºæ –æˆšå¦»ä¸ƒå‡„æ¼†æŸ’æ²�其棋奇æ§ç•¦å´Žè„�é½�旗祈ç¥�骑起岂乞ä¼�å�¯å¥‘ç Œå™¨æ°”è¿„å¼ƒæ±½æ³£è®«æŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������茾茿è��è�‚è�„è�…è�ˆè�Šè�‹è�Œè��è�Žè�“è�•è�–è�—è�˜è�™è��è�¢è�°è�±è�²è�³è�´è�µè�¶è�¹è�ºè�¾è�¿èŽ€èŽ�莂莃莄莇莈莊莋莌èŽ�èŽ�èŽ�莑莔莕莖莗莙莚èŽ�莟莡莢莣莤莥莦莧莬èŽèŽ®ï¿½èŽ¯èŽµèŽ»èŽ¾èŽ¿è�‚è�ƒè�„è�†è�ˆè�‰è�‹è��è�Žè��è�‘è�’è�“è�•è�—è�™è�šè�›è�žè�¢è�£è�¤è�¦è�§è�¨è�«è�¬è�æ�°æ´½ç‰µæ‰¦é’Žé“…å�ƒè¿�ç¾ä»Ÿè°¦ä¹¾é»”钱钳å‰�潜é�£æµ…è°´å ‘åµŒæ¬ æ‰æžªå‘›è…”羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘å³ä¿�çª�切茄且怯窃钦侵亲秦ç�´å‹¤èŠ¹æ“’ç¦½å¯�æ²�é�’轻氢倾å�¿æ¸…擎晴氰情顷请庆ç�¼ç©·ç§‹ä¸˜é‚±ç�ƒæ±‚å›šé…‹æ³…è¶‹åŒºè›†æ›²èº¯å±ˆé©±æ¸ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"����������������������������������������������������������������è�®è�¯è�³è�´è�µè�¶è�·è�ºè�»è�¼è�¾è�¿è�€è�‚è�…è�‡è�ˆè�‰è�Šè��è�’è�“è�”è�•è�–è�—è�™è�šè�›è�žè�Ÿè� è�¡è�¢è�£è�©è�ªè�«è�¬è�è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¹è�ºè�»è�¾è�¿è‘€è‘�葂葃葄葅葇葈葉�葊葋葌è‘�葎è‘�è‘�葒葓葔葕葖葘è‘�è‘žè‘Ÿè‘ è‘¢è‘¤è‘¥è‘¦è‘§è‘¨è‘ªè‘®è‘¯è‘°è‘²è‘´è‘·è‘¹è‘»è‘¼å�–娶龋趣去圈颧æ�ƒé†›æ³‰å…¨ç—Šæ‹³çŠ¬åˆ¸åŠ�缺炔瘸å�´é¹Šæ¦·ç¡®é›€è£™ç¾¤ç„¶ç‡ƒå†‰æŸ“瓤壤攘嚷让饶扰绕惹çƒå£¬ä»�人å¿�韧任认刃妊纫扔ä»�日戎茸蓉è�£èž�熔溶容绒冗æ�‰æŸ”è‚‰èŒ¹è •å„’åºå¦‚辱乳æ±�入褥软阮蕊瑞é”�闰润若弱撒洒è�¨è…®é³ƒå¡žèµ›ä¸‰å���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"����������������������������������������������������������������葽葾葿蒀è’�蒃蒄蒅蒆蒊è’�è’�è’�蒑蒒蒓蒔蒕蒖蒘蒚蒛è’�è’žè’Ÿè’ è’¢è’£è’¤è’¥è’¦è’§è’¨è’©è’ªè’«è’¬è’蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎è“�蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫è“蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀è”�蔂伞散桑嗓丧æ�”éªšæ‰«å«‚ç‘Ÿè‰²æ¶©æ£®åƒ§èŽŽç ‚æ�€åˆ¹æ²™çº±å‚»å•¥ç…žç›æ™’ç�Šè‹«æ�‰å±±åˆ 煽衫闪陕擅赡膳善汕扇缮墒伤商èµ�晌上尚裳梢æ�Žç¨�烧èŠ�勺韶少哨邵ç»�奢赊蛇舌èˆ�èµ¦æ‘„å°„æ…‘æ¶‰ç¤¾è®¾ç ·ç”³å‘»ä¼¸èº«æ·±å¨ ç»…ç¥žæ²ˆå®¡å©¶ç”šè‚¾æ…Žæ¸—å£°ç”Ÿç”¥ç‰²å�‡ç»³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋è”�蔎è”�è”�蔒蔔蔕蔖蔘蔙蔛蔜è”�è”žè” è”¢è”£è”¤è”¥è”¦è”§è”¨è”©è”ªè”蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀è•�蕂蕄蕅蕆蕇蕋蕌è•�蕎è•�è•�蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜è•�è•Ÿè• è•¡è•¢è•£è•¥è•¦è•§è•©è•ªè•«è•¬è•蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀è–�çœ�盛剩胜圣师失狮施湿诗尸虱å��石拾时什食蚀实识å�²çŸ¢ä½¿å±Žé©¶å§‹å¼�示士世柿事æ‹èª“é€�势是嗜噬适仕ä¾�释饰æ°�市æ�ƒå®¤è§†è¯•收手首守寿授售å�—瘦兽蔬枢梳殊抒输å�”舒淑ç–�书赎å°ç†Ÿè–¯æš‘曙署蜀é»�é¼ å±žæœ¯è¿°æ ‘æ�Ÿæˆ�竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌è–�è–Žè–�薑薒薓薔薕薖薗薘薙薚è–�è–žè–Ÿè– è–¡è–¢è–£è–¥è–¦è–§è–©è–«è–¬è–薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌è—�藎藑藒�藔藖藗藘藙藚藛è—�è—žè—Ÿè— è—¡è—¢è—£è—¥è—¦è—§è—¨è—ªè—«è—¬è—藮藯藰藱藲藳藴藵藶藷藸æ�•刷è€�æ‘”è¡°ç”©å¸…æ “æ‹´éœœå�Œçˆ½è°�æ°´ç�¡ç¨Žå�®çž¬é¡ºèˆœè¯´ç¡•朔çƒ�斯撕嘶æ€�ç§�å�¸ä¸�æ»è‚†å¯ºå—£å››ä¼ºä¼¼é¥²å·³æ�¾è€¸æ€‚颂é€�宋讼诵æ�œè‰˜æ“žå—½è‹�é…¥ä¿—ç´ é€Ÿç²Ÿåƒ³å¡‘æº¯å®¿è¯‰è‚ƒé…¸è’œç®—è™½éš‹éš�绥髓碎å²�ç©—é�‚éš§ç¥Ÿå™æ�Ÿç¬‹è“‘æ¢å”†ç¼©ç��ç´¢é”�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀è˜�蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌è˜�蘎è˜�è˜�蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜è˜�è˜žè˜Ÿè˜ è˜¡è˜¢è˜£è˜¤è˜¥è˜¦è˜¨è˜ªè˜«è˜¬è˜è˜®è˜¯è˜°è˜±è˜²è˜³è˜´è˜µè˜¶è˜·è˜¹è˜ºè˜»è˜½è˜¾è˜¿è™€ï¿½è™�虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜è™�è™Ÿè™ è™¡è™£è™¤è™¥è™¦è™§è™¨è™©è™ªç�挞蹋è¸�胎苔抬å�°æ³°é…žå¤ªæ€�æ±°å��摊贪瘫滩å�›æª€ç—°æ½è°è°ˆå�¦æ¯¯è¢’碳探å�¹ç‚汤塘æ�ªå ‚æ£ è†›å”�糖倘躺淌趟烫æŽ�涛滔绦è�„桃逃淘陶讨套特藤腾疼誊梯剔踢锑æ��题蹄啼体替åš�惕涕剃屉天添填田甜æ�¬èˆ”腆挑æ�¡è¿¢çœºè·³è´´é“�帖厅å�¬çƒƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������è™è™¯è™°è™²è™³è™´è™µè™¶è™·è™¸èšƒèš„蚅蚆蚇蚈蚉蚎èš�èš�èš‘èš’èš”èš–èš—èš˜èš™èššèš›èšžèšŸèš èš¡èš¢èš¥èš¦èš«èšèš®èš²èš³èš·èš¸èš¹èš»èš¼èš½èš¾èš¿è›�蛂蛃蛅蛈蛌è›�蛒蛓蛕蛖蛗蛚蛜�è›�è› è›¡è›¢è›£è›¥è›¦è›§è›¨è›ªè›«è›¬è›¯è›µè›¶è›·è›ºè›»è›¼è›½è›¿èœ�蜄蜅蜆蜋蜌蜎èœ�èœ�蜑蜔蜖汀廷å�œäºåºæŒºè‰‡é€šæ¡�酮瞳å�Œé“œå½¤ç«¥æ¡¶æ�…ç’统痛å�·æŠ•头é€�凸秃çª�å›¾å¾’é€”æ¶‚å± åœŸå��å…”æ¹�团推颓腿蜕褪退å�žå±¯è‡€æ‹–托脱鸵陀驮驼æ¤å¦¥æ‹“唾挖哇蛙洼娃瓦袜æªå¤–豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄å¨��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������蜙蜛èœ�èœŸèœ èœ¤èœ¦èœ§èœ¨èœªèœ«èœ¬èœèœ¯èœ°èœ²èœ³èœµèœ¶èœ¸èœ¹èœºèœ¼èœ½è�€è��è�‚è�ƒè�„è�…è�†è�Šè�‹è��è��è��è�‘è�’è�”è�•è�–è�˜è�šè�›è�œè��è�žè�Ÿè�¡è�¢è�¦è�§è�¨è�©è�ªè�«è�¬è�è�¯è�±è�²è�³è�µï¿½è�·è�¸è�¹è�ºè�¿èž€èž�螄螆螇螉螊螌螎èž�èž�螑螒螔螕螖螘螙螚螛螜èž�èžžèž èž¡èž¢èž£èž¤å·�å¾®å�±éŸ¦è¿�桅围唯惟为æ½�维苇è�Žå§”伟伪尾纬未蔚味ç•�胃喂é�ä½�æ¸è°“尉慰å�«ç˜Ÿæ¸©èšŠæ–‡é—»çº¹å�»ç¨³ç´Šé—®å—¡ç¿�ç“®æŒ�蜗涡çª�我斡å�§æ�¡æ²ƒå·«å‘œé’¨ä¹Œæ±¡è¯¬å±‹æ— 芜梧å�¾å�´æ¯‹æ¦äº”æ�‚å�ˆèˆžä¼�ä¾®å�žæˆŠé›¾æ™¤ç‰©å‹¿åŠ¡æ‚Ÿè¯¯æ˜”ç†™æž�西硒矽晰嘻å�¸é”¡ç‰ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿èŸ�蟂蟃蟄蟅蟇蟈蟉蟌èŸ�蟎èŸ�èŸ�蟔蟕蟖蟗蟘蟙蟚蟜èŸ�蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬èŸèŸ¯èŸ°èŸ±èŸ²èŸ³èŸ´èŸµèŸ¶èŸ·èŸ¸ï¿½èŸºèŸ»èŸ¼èŸ½èŸ¿è €è �è ‚è „è …è †è ‡è ˆè ‰è ‹è Œè �è Žè �è �è ‘è ’è ”è —è ˜è ™è šè œè �è žè Ÿè è £ç¨€æ�¯å¸Œæ‚‰è†�夕惜熄烯溪æ±�犀檄è¢å¸ä¹ 媳喜铣洗系隙æˆ�ç»†çžŽè™¾åŒ£éœžè¾–æš‡å³¡ä¾ ç‹ä¸‹åަå¤�å�“掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷é™�线相厢镶香箱襄湘乡翔祥详想å“�享项巷橡åƒ�å�‘象è�§ç¡�霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è ¤è ¥è ¦è §è ¨è ©è ªè «è ¬è è ®è ¯è °è ±è ³è ´è µè ¶è ·è ¸è ºè »è ½è ¾è ¿è¡�衂衃衆衇衈衉衊衋衎è¡�è¡�衑衒術衕衖衘衚衛衜è¡�è¡žè¡Ÿè¡ è¡¦è¡§è¡ªè¡è¡¯è¡±è¡³è¡´è¡µè¡¶è¡¸è¡¹è¡ºï¿½è¡»è¡¼è¢€è¢ƒè¢†è¢‡è¢‰è¢Šè¢Œè¢Žè¢�è¢�袑袓袔袕袗袘袙袚袛è¢�è¢žè¢Ÿè¢ è¢¡è¢£è¢¥è¢¦è¢§è¢¨è¢©è¢ªå°�å�æ ¡è‚–å•¸ç¬‘æ•ˆæ¥”äº›æ‡è�Žéž‹å��挟æ�ºé‚ªæ–œèƒ�è°�写械å�¸èŸ¹æ‡ˆæ³„泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸æ��性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须å¾�许蓄酗å�™æ—åº�畜æ�¤çµ®å©¿ç»ªç»è½©å–§å®£æ‚¬æ—‹çŽ„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌è£�è£�è£�裑裓裖裗裚裛補è£�è£žè£ è£¡è£¦è£§è£©è£ªè£«è£¬è£è£®è£¯è£²è£µè£¶è£·è£ºè£»è£½è£¿è¤€è¤�褃褄褅褆複褈�褉褋褌è¤�褎è¤�褑褔褕褖褗褘褜è¤�è¤žè¤Ÿè¤ è¤¢è¤£è¤¤è¤¦è¤§è¤¨è¤©è¤¬è¤è¤®è¤¯è¤±è¤²è¤³è¤µè¤·é€‰ç™£çœ©ç»šé�´è–›å¦ç©´é›ªè¡€å‹‹ç†�循旬询寻驯巡殉汛è®è®¯é€Šè¿…压押鸦é¸å‘€ä¸«èŠ½ç‰™èšœå´–è¡™æ¶¯é›…å“‘äºšè®¶ç„‰å’½é˜‰çƒŸæ·¹ç›�ä¸¥ç ”èœ’å²©å»¶è¨€é¢œé˜Žç‚Žæ²¿å¥„æŽ©çœ¼è¡�æ¼”è‰³å °ç‡•åŽŒç šé›�å”�彦焰宴谚验殃央鸯秧æ�¨æ‰¬ä½¯ç–¡ç¾Šæ´‹é˜³æ°§ä»°ç—’å…»æ ·æ¼¾é‚€è…°å¦–ç‘¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌è¥�襎è¥�è¥�襑襒襓襔襕襖襗襘襙襚襛襜è¥�è¥ è¥¡è¥¢è¥£è¥¤è¥¥è¥§è¥¨è¥©è¥ªè¥«è¥¬è¥è¥®è¥¯è¥°è¥±è¥²è¥³è¥´è¥µè¥¶è¥·è¥¸è¥¹è¥ºè¥¼ï¿½è¥½è¥¾è¦€è¦‚覄覅覇覈覉覊見覌è¦�覎è¦�è¦�覑覒覓覔覕視覗覘覙覚覛覜è¦�è¦žè¦Ÿè¦ è¦¡æ‘‡å°§é�¥çª‘谣姚咬舀è�¯è¦�耀椰噎耶爷野冶也页掖业å�¶æ›³è…‹å¤œæ¶²ä¸€å£¹åŒ»æ�–铱ä¾�伊衣é¢�夷é�—移仪胰疑沂宜姨å½�椅èš�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔æ„�毅忆义益溢诣议谊译异翼翌绎茵è�«å› 殷音阴姻å�Ÿé“¶æ·«å¯…饮尹引éš��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬è¦è¦®è¦¯è¦°è¦±è¦²è¦³è¦´è¦µè¦¶è¦·è¦¸è¦¹è¦ºè¦»è¦¼è¦½è¦¾è¦¿è§€è§ƒè§�觓觔觕觗觘觙觛è§�è§Ÿè§ è§¡è§¢è§¤è§§è§¨è§©è§ªè§¬è§è§®è§°è§±è§²è§´è§µè§¶è§·è§¸è§¹è§ºï¿½è§»è§¼è§½è§¾è§¿è¨�訂訃訄訅訆計訉訊訋訌è¨�討è¨�è¨�訑訒訓訔訕訖託記訙訚訛訜è¨�å�°è‹±æ¨±å©´é¹°åº”缨莹è�¤è�¥è�§è�‡è¿Žèµ¢ç›ˆå½±é¢–ç¡¬æ˜ å“Ÿæ‹¥ä½£è‡ƒç—ˆåº¸é›�踊蛹å’�泳涌永æ�¿å‹‡ç”¨å¹½ä¼˜æ‚ 忧尤由邮铀犹油游酉有å�‹å�³ä½‘釉诱å�ˆå¹¼è¿‚淤于盂榆虞愚舆余俞逾鱼愉æ¸�渔隅予娱雨与屿禹宇è¯ç¾½çŽ‰åŸŸèŠ‹éƒ�å��é�‡å–»å³ªå¾¡æ„ˆæ¬²ç‹±è‚²èª‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨žè¨Ÿè¨ è¨¡è¨¢è¨£è¨¤è¨¥è¨¦è¨§è¨¨è¨©è¨ªè¨«è¨¬è¨è¨®è¨¯è¨°è¨±è¨²è¨³è¨´è¨µè¨¶è¨·è¨¸è¨¹è¨ºè¨»è¨¼è¨½è¨¿è©€è©�詂詃詄詅詆詇詉詊詋詌è©�詎è©�è©�詑詒詓詔評詖詗詘詙詚詛詜è©�è©žï¿½è©Ÿè© è©¡è©¢è©£è©¤è©¥è©¦è©§è©¨è©©è©ªè©«è©¬è©è©®è©¯è©°è©±è©²è©³è©´è©µè©¶è©·è©¸è©ºè©»è©¼è©½è©¾è©¿èª€æµ´å¯“裕预豫é©é¸³æ¸Šå†¤å…ƒåž£è¢�原æ�´è¾•å›å‘˜åœ†çŒ¿æº�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨å…�è¿�è•´é…�晕韵å•åŒ�ç ¸æ�‚æ ½å“‰ç�¾å®°è½½å†�在咱攒暂赞赃è„�葬é�糟凿藻枣早澡蚤èº�å™ªé€ çš‚ç�¶ç‡¥è´£æ‹©åˆ™æ³½è´¼æ€Žå¢žæ†Žæ›¾èµ 扎喳渣æœè½§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������èª�誂誃誄誅誆誇誈誋誌èª�誎èª�èª�誑誒誔誕誖誗誘誙誚誛誜èª�èªžèªŸèª èª¡èª¢èª£èª¤èª¥èª¦èª§èª¨èª©èªªèª«èª¬èªèª®èª¯èª°èª±èª²èª³èª´èªµèª¶èª·èª¸èª¹èªºèª»èª¼èª½èª¾èª¿è«€è«�諂�諃諄諅諆談諈諉諊請諌è«�諎è«�è«�諑諒諓諔諕論諗諘諙諚諛諜è«�è«žè«Ÿè« è«¡è«¢è«£é“¡é—¸çœ¨æ …æ¦¨å’‹ä¹�炸诈摘斋宅窄债寨瞻毡詹粘沾ç›�æ–©è¾—å´å±•è˜¸æ ˆå� æˆ˜ç«™æ¹›ç»½æ¨Ÿç« å½°æ¼³å¼ æŽŒæ¶¨æ�–丈å¸�è´¦ä»—èƒ€ç˜´éšœæ‹›æ˜æ‰¾æ²¼èµµç…§ç½©å…†è‚‡å�¬é�®æŠ˜å“²è›°è¾™è€…锗蔗这浙ç��æ–ŸçœŸç”„ç §è‡»è´žé’ˆä¾¦æž•ç–¹è¯Šéœ‡æŒ¯é•‡é˜µè’¸æŒ£ç��å¾�ç‹°äº‰æ€”æ•´æ‹¯æ£æ”¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬è«è«®è«¯è«°è«±è«²è«³è«´è«µè«¶è«·è«¸è«¹è«ºè«»è«¼è«½è«¾è«¿è¬€è¬�謂謃謄謅謆謈謉謊謋謌è¬�謎è¬�è¬�謑謒謓謔謕謖謗謘謙謚講謜è¬�è¬žè¬Ÿè¬ è¬¡è¬¢è¬£ï¿½è¬¤è¬¥è¬§è¬¨è¬©è¬ªè¬«è¬¬è¬è¬®è¬¯è¬°è¬±è¬²è¬³è¬´è¬µè¬¶è¬·è¬¸è¬¹è¬ºè¬»è¬¼è¬½è¬¾è¬¿è€è�è‚èƒè„è…帧症郑è¯�èŠ�æž�支å�±èœ˜çŸ¥è‚¢è„‚æ±�之织è�Œç›´æ¤�殖执值侄å�€æŒ‡æ¢è¶¾å�ªæ—¨çº¸å¿—挚掷至致置帜峙制智秩稚质炙痔滞治窒ä¸ç›…å¿ é’Ÿè¡·ç»ˆç§�è‚¿é‡�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤ç� æ ªè››æœ±çŒªè¯¸è¯›é€�竹烛煮拄瞩嘱主著柱助蛀贮铸ç‘�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������è†è‡èˆè‰èŠè‹èŒè�èŽè�è�è‘è’è“è”è•è–è—è˜è™èšè›èœè�èžèŸè è¡è¢è£è¤è¥è§è¨è©èªè«èè®è¯è°è±è²è³è´èµè¶è·è¸è¹èºè»è¼è½è¾è¿è®€è®�讂讃讄讅讆�讇讈讉變讋讌è®�讎è®�è®�讑讒讓讔讕讖讗讘讙讚讛讜è®�讞讟讬讱讻诇è¯�诪谉谞ä½�注ç¥�é©»æŠ“çˆªæ‹½ä¸“ç –è½¬æ’°èµšç¯†æ¡©åº„è£…å¦†æ’žå£®çŠ¶æ¤Žé”¥è¿½èµ˜å� 缀谆准æ�‰æ‹™å�“桌ç�¢èŒ�酌啄ç�€ç�¼æµŠå…¹å’¨èµ„姿滋淄åœç´«ä»”籽滓å�自æ¸�å—鬃棕踪宗综总纵邹走å¥�æ��ç§Ÿè¶³å�’æ—�祖诅阻组钻纂嘴醉最罪尊é�µæ˜¨å·¦ä½�柞å�šä½œå��座������\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋è±�豎è±�è±�豑豒豓豔豖豗豘豙豛豜è±�è±žè±Ÿè± è±£è±¤è±¥è±¦è±§è±¨è±©è±¬è±è±®è±¯è±°è±±è±²è±´è±µè±¶è±·è±»è±¼è±½è±¾è±¿è²€è²�貃貄貆貇�貈貋è²�貎è²�è²�貑貒貓貕貖貗貙貚貛貜è²�è²žè²Ÿè² è²¡è²¢è²£è²¤è²¥è²¦è²§è²¨è²©è²ªè²«è²¬è²äº�丌兀ä¸�廿å�…丕亘丞鬲å¬å™©ä¸¨ç¦ºä¸¿åŒ•乇å¤çˆ»å�®æ°�囟胤馗毓ç�¾é¼—丶亟é¼�乜乩亓芈å›å•¬å˜�仄åŽ�åŽ�厣厥厮é�¥èµ�匚å�µåŒ¦åŒ®åŒ¾èµœå�¦å�£åˆ‚刈刎åˆåˆ³åˆ¿å‰€å‰Œå‰žå‰¡å‰œè’¯å‰½åŠ‚åŠ�åŠ�劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚ä½��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀è³�賂賃賄賅賆資賈賉賊賋賌è³�賎è³�è³�賑賒賓賔賕賖賗賘賙賚賛賜è³�è³žè³Ÿè³ è³¡è³¢è³£è³¤è³¥è³¦è³§è³¨è³©è³ªè³«è³¬ï¿½è³è³®è³¯è³°è³±è³²è³³è³´è³µè³¶è³·è³¸è³¹è³ºè³»è³¼è³½è³¾è³¿è´€è´�贂贃贄贅贆贇贈贉贊贋贌è´�佟佗伲伽佶佴侑侉侃ä¾�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩å�Œä¿³å€¬å€�倮å€ä¿¾å€œå€Œå€¥å€¨å�¾å�ƒå�•å�ˆå�Žå�¬å�»å‚¥å‚§å‚©å‚ºåƒ–儆åƒåƒ¬åƒ¦åƒ®å„‡å„‹ä»�æ°½ä½˜ä½¥ä¿Žé¾ æ±†ç±´å…®å·½é»‰é¦˜å†�夔勹åŒ�訇åŒ�å‡«å¤™å…•äº å…–äº³è¡®è¢¤äºµè„”è£’ç¦€å¬´è ƒç¾¸å†«å†±å†½å†¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"����������������������������������������������������������������贎è´�è´�è´‘è´’è´“è´”è´•è´–è´—è´˜è´™è´šè´›è´œè´ èµ‘èµ’èµ—èµŸèµ¥èµ¨èµ©èµªèµ¬èµ®èµ¯èµ±èµ²èµ¸èµ¹èµºèµ»èµ¼èµ½èµ¾èµ¿è¶€è¶‚è¶ƒè¶†è¶‡è¶ˆè¶‰è¶Œè¶�è¶Žè¶�è¶�趒趓趕趖趗趘趙趚趛趜è¶�è¶žè¶ è¶¡ï¿½è¶¢è¶¤è¶¥è¶¦è¶§è¶¨è¶©è¶ªè¶«è¶¬è¶è¶®è¶¯è¶°è¶²è¶¶è¶·è¶¹è¶»è¶½è·€è·�跂跅跇跈跉跊è·�è·�è·’è·“è·”å‡‡å†–å†¢å†¥è® è®¦è®§è®ªè®´è®µè®·è¯‚è¯ƒè¯‹è¯�è¯Žè¯’è¯“è¯”è¯–è¯˜è¯™è¯œè¯Ÿè¯ è¯¤è¯¨è¯©è¯®è¯°è¯³è¯¶è¯¹è¯¼è¯¿è°€è°‚è°„è°‡è°Œè°�谑谒谔谕谖谙谛谘è°�è°Ÿè° è°¡è°¥è°§è°ªè°«è°®è°¯è°²è°³è°µè°¶å�©å�ºé˜�阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈éš�éš—éš°é‚—é‚›é‚�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è·•è·˜è·™è·œè· è·¡è·¢è·¥è·¦è·§è·©è·è·®è·°è·±è·²è·´è·¶è·¼è·¾è·¿è¸€è¸�踂踃踄踆踇踈踋è¸�踎è¸�è¸‘è¸’è¸“è¸•è¸–è¸—è¸˜è¸™è¸šè¸›è¸œè¸ è¸¡è¸¤è¸¥è¸¦è¸§è¸¨è¸«è¸è¸°è¸²è¸³è¸´è¸¶è¸·è¸¸è¸»è¸¼è¸¾ï¿½è¸¿è¹ƒè¹…蹆蹌è¹�蹎è¹�è¹�蹓蹔蹕蹖蹗蹘蹚蹛蹜è¹�è¹žè¹Ÿè¹ è¹¡è¹¢è¹£è¹¤è¹¥è¹§è¹¨è¹ªè¹«è¹®è¹±é‚¸é‚°éƒ�郅邾éƒ�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆åˆ�奂劢劬åŠåŠ¾å“¿å‹�å‹–å‹°å�Ÿç‡®çŸ�廴凵凼鬯厶å¼�畚巯å�Œåž©åž¡å¡¾å¢¼å£…壑圩圬圪圳圹圮圯å�œåœ»å�‚å�©åž…å�«åž†å�¼å�»å�¨å�å�¶å�³åžåž¤åžŒåž²åŸ�åž§åž´åž“åž åŸ•åŸ˜åŸšåŸ™åŸ’åž¸åŸ´åŸ¯åŸ¸åŸ¤åŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌èº�躎躑躒躓躕躖躗躘躙躚躛èº�èºŸèº èº¡èº¢èº£èº¤èº¥èº¦èº§èº¨èº©èºªèºèº®èº°èº±èº³èº´èºµèº¶èº·èº¸èº¹èº»èº¼èº½èº¾èº¿è»€è»�軂�軃軄軅軆軇軈軉車軋軌è»�è»�è»�軑軒軓軔軕軖軗軘軙軚軛軜è»�è»žè»Ÿè» è»¡è»¢è»£è»¤å ‹å �埽åŸå €å žå ™å¡„å 塥塬å¢�墉墚墀馨鼙懿艹艽艿èŠ�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌è‹�芩芴芡芪芟苄苎芤苡茉苷苤èŒ�èŒ‡è‹œè‹´è‹’è‹˜èŒŒè‹»è‹“èŒ‘èŒšèŒ†èŒ”èŒ•è‹ è‹•èŒœè�‘è�›è�œèŒˆèŽ’èŒ¼èŒ´èŒ±èŽ›è�žèŒ¯è��è�‡è�ƒè�Ÿè�€èŒ—è� èŒèŒºèŒ³è�¦è�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬è»è»®è»¯è»°è»±è»²è»³è»´è»µè»¶è»·è»¸è»¹è»ºè»»è»¼è»½è»¾è»¿è¼€è¼�輂較輄輅輆輇輈載輊輋輌è¼�輎è¼�è¼�輑輒輓輔輕輖輗輘輙輚輛輜è¼�è¼žè¼Ÿè¼ è¼¡è¼¢è¼£ï¿½è¼¤è¼¥è¼¦è¼§è¼¨è¼©è¼ªè¼«è¼¬è¼è¼®è¼¯è¼°è¼±è¼²è¼³è¼´è¼µè¼¶è¼·è¼¸è¼¹è¼ºè¼»è¼¼è¼½è¼¾è¼¿è½€è½�轂轃轄è�¨èŒ›è�©è�¬è�ªè�è�®èްè�¸èŽ³èŽ´èŽ èŽªèŽ“èŽœèŽ…è�¼èŽ¶èŽ©è�½èޏè�»èŽ˜èŽžèŽ¨èŽºèŽ¼è��è��è�¥è�˜å ‡è�˜è�‹è��è�½è�–è�œè�¸è�‘è�†è�”è�Ÿè��è�ƒè�¸è�¹è�ªè�…è�€è�¦è�°è�¡è‘œè‘‘葚葙葳蒇蒈葺蒉葸è�¼è‘†è‘©è‘¶è’Œè’Žè�±è‘è“�è“�è“�è“¦è’½è““è“Šè’¿è’ºè“ è’¡è’¹è’´è’—è“¥è“£è”Œç”�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌è½�轎è½�è½�轑轒轓轔轕轖轗轘轙轚轛轜è½�è½žè½Ÿè½ è½¡è½¢è½£è½¤è½¥è½ªè¾€è¾Œè¾’è¾�è¾ è¾¡è¾¢è¾¤è¾¥è¾¦è¾§è¾ªè¾¬è¾è¾®è¾¯è¾²è¾³è¾´è¾µè¾·è¾¸è¾ºè¾»è¾¼è¾¿è¿€è¿ƒè¿†ï¿½è¿‰è¿Šè¿‹è¿Œè¿�è¿�è¿’è¿–è¿—è¿šè¿ è¿¡è¿£è¿§è¿¬è¿¯è¿±è¿²è¿´è¿µè¿¶è¿ºè¿»è¿¼è¿¾è¿¿é€‡é€ˆé€Œé€Žé€“é€•é€˜è•–è”»è“¿è“¼è•™è•ˆè•¨è•¤è•žè•ºçž¢è•ƒè•²è•»è–¤è–¨è–‡è–�蕹薮薜薅薹薷薰藓è—�藜藿蘧蘅蘩蘖蘼廾弈夼å¥�耷奕奚奘åŒ�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹æ�‹æ�ƒæŽæ�¶æ�±æ�ºæŽŽæŽ´æ�掬掊æ�©æŽ®æŽ¼æ�²æ�¸æ� æ�¿æ�„æ�žæ�Žæ‘’æ�†æŽ¾æ‘…æ‘�æ�‹æ�›æ� æ�Œæ�¦æ�¡æ‘žæ’„æ‘æ’–�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿é�€é�ƒé�…é�†é�ˆé�‰é�Šé�‹é�Œé�Žé�”é�•é�–é�™é�šé�œé��é�žé�Ÿé� é�¡é�¤é�¦é�§é�©é�ªé�«é�¬é�¯é�°é�±é�²é�³é�¶é�·é�¸é�¹é�ºé�»é�¼é�¾é‚��還邅邆邇邉邊邌é‚�邎é‚�é‚�é‚’é‚”é‚–é‚˜é‚šé‚œé‚žé‚Ÿé‚ é‚¤é‚¥é‚§é‚¨é‚©é‚«é‚邲邷邼邽邿郀摺撷撸撙撺擀æ“�擗擤擢攉攥攮弋忒甙弑å�Ÿå�±å�½å�©å�¨å�»å�’å�–å�†å‘‹å‘’呓呔呖呃å�¡å‘—å‘™å�£å�²å’‚咔呷呱呤咚咛咄呶呦å’�å“�å’哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤å“�å“�å“žå”›å“§å” å“½å””å“³å”¢å”£å”�唑唧唪啧å–�喵啉å•å•�啕唿å•�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌éƒ�éƒ’éƒ”éƒ•éƒ–éƒ˜éƒ™éƒšéƒžéƒŸéƒ éƒ£éƒ¤éƒ¥éƒ©éƒªéƒ¬éƒ®éƒ°éƒ±éƒ²éƒ³éƒµéƒ¶éƒ·éƒ¹éƒºéƒ»éƒ¼éƒ¿é„€é„�鄃鄅鄆鄇鄈鄉鄊鄋鄌é„�鄎é„�é„�鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�é„�é„Ÿé„ é„¡é„¤é„¥é„¦é„§é„¨é„©é„ªé„«é„¬é„鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀é…�酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈å–�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦å—�嗄嗯嗥嗲嗳嗌å—�嗨嗵嗤辔嘞嘈嘌å˜�嘤嘣嗾嘀嘧å˜å™˜å˜¹å™—嘬å™�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗å›�囡囵囫囹囿圄圊圉圜å¸�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é……é…‡é…ˆé…‘é…“é…”é…•é…–é…˜é…™é…›é…œé…Ÿé… é…¦é…§é…¨é…«é…酳酺酻酼醀é†�醂醃醄醆醈醊醎é†�醓醔醕醖醗醘醙醜é†�é†žé†Ÿé† é†¡é†¤é†¥é†¦é†§é†¨é†©é†«é†¬é†°é†±é†²é†³é†¶é†·é†¸é†¹é†»ï¿½é†¼é†½é†¾é†¿é‡€é‡�釂釃釄釅釆釈釋é‡�釒釓釔釕釖釗釘釙釚釛é‡�é‡žé‡Ÿé‡ é‡¡é‡¢é‡£é‡¤é‡¥å¸·å¹„å¹”å¹›å¹žå¹¡å²Œå±ºå²�å²�岖岈岘岙岑岚岜岵岢岽岬岫岱岣å³�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯åµ�嵫嵋嵊嵩嵴嶂嶙å¶�豳嶷巅彳彷徂徇徉後徕徙徜徨å¾å¾µå¾¼è¡¢å½¡çŠçŠ°çŠ´çŠ·çŠ¸ç‹ƒç‹�狎ç‹�狒狨狯狩狲狴狷çŒ�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬é‡é‡®é‡¯é‡°é‡±é‡²é‡³é‡´é‡µé‡¶é‡·é‡¸é‡¹é‡ºé‡»é‡¼é‡½é‡¾é‡¿éˆ€éˆ�鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌éˆ�鈎éˆ�éˆ�鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜éˆ�éˆžéˆŸéˆ éˆ¡éˆ¢éˆ£éˆ¤ï¿½éˆ¥éˆ¦éˆ§éˆ¨éˆ©éˆªéˆ«éˆ¬éˆéˆ®éˆ¯éˆ°éˆ±éˆ²éˆ³éˆ´éˆµéˆ¶éˆ·éˆ¸éˆ¹éˆºéˆ»éˆ¼éˆ½éˆ¾éˆ¿é‰€é‰�鉂鉃鉄鉅狻猗猓猡猊猞çŒ�猕猢猹猥猬猸猱ç��ç��ç�—ç� ç�¬ç�¯ç�¾èˆ›å¤¥é£§å¤¤å¤‚饣饧饨饩饪饫饬饴饷饽馀馄馇馊é¦�é¦�é¦‘é¦“é¦”é¦•åº€åº‘åº‹åº–åº¥åº åº¹åºµåº¾åº³èµ“å»’å»‘å»›å»¨å»ªè†ºå¿„å¿‰å¿–å¿�怃忮怄忡忤忾怅怆忪å¿å¿¸æ€™æ€µæ€¦æ€›æ€�æ€�怩怫怊怿怡æ�¸æ�¹æ�»æ�ºæ�‚�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌é‰�鉎é‰�é‰�鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜é‰�é‰žé‰Ÿé‰ é‰¡é‰¢é‰£é‰¤é‰¥é‰¦é‰§é‰¨é‰©é‰ªé‰«é‰¬é‰é‰®é‰¯é‰°é‰±é‰²é‰³é‰µé‰¶é‰·é‰¸é‰¹é‰ºé‰»é‰¼é‰½é‰¾é‰¿éŠ€éŠ�銂銃銄銅�銆銇銈銉銊銋銌éŠ�éŠ�éŠ�銑銒銓銔銕銖銗銘銙銚銛銜éŠ�éŠžéŠŸéŠ éŠ¡éŠ¢éŠ£éŠ¤éŠ¥éŠ¦éŠ§æ�ªæ�½æ‚–æ‚šæ‚æ‚�悃悒悌悛惬悻悱æƒ�æƒ˜æƒ†æƒšæ‚´æ„ æ„¦æ„•æ„£æƒ´æ„€æ„Žæ„«æ…Šæ…µæ†¬æ†”æ†§æ†·æ‡”æ‡µå¿�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌é˜�é˜�阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅æ²�沔沌汨汩汴汶沆沩æ³�æ³”æ²æ³·æ³¸æ³±æ³—æ²²æ³ æ³–æ³ºæ³«æ³®æ²±æ³“æ³¯æ³¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������銨銩銪銫銬éŠéŠ¯éŠ°éŠ±éŠ²éŠ³éŠ´éŠµéŠ¶éŠ·éŠ¸éŠ¹éŠºéŠ»éŠ¼éŠ½éŠ¾éŠ¿é‹€é‹�鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌é‹�鋎é‹�é‹�鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜é‹�é‹žé‹Ÿé‹ é‹¡é‹¢é‹£é‹¤é‹¥é‹¦é‹§é‹¨ï¿½é‹©é‹ªé‹«é‹¬é‹é‹®é‹¯é‹°é‹±é‹²é‹³é‹´é‹µé‹¶é‹·é‹¸é‹¹é‹ºé‹»é‹¼é‹½é‹¾é‹¿éŒ€éŒ�錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫æµ�洮洵洚æµ�æµ’æµ”æ´³æ¶‘æµ¯æ¶žæ¶ æµžæ¶“æ¶”æµœæµ æµ¼æµ£æ¸šæ·‡æ·…æ·žæ¸Žæ¶¿æ· æ¸‘æ·¦æ·�æ·™æ¸–æ¶«æ¸Œæ¶®æ¸«æ¹®æ¹Žæ¹«æº²æ¹Ÿæº†æ¹“æ¹”æ¸²æ¸¥æ¹„æ»Ÿæº±æº˜æ» æ¼æ»¢æº¥æº§æº½æº»æº·æ»—溴æ»�æº�滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉æ¾�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������錊錋錌éŒ�錎éŒ�éŒ�錑錒錓錔錕錖錗錘錙錚錛錜éŒ�éŒžéŒŸéŒ éŒ¡éŒ¢éŒ£éŒ¤éŒ¥éŒ¦éŒ§éŒ¨éŒ©éŒªéŒ«éŒ¬éŒéŒ®éŒ¯éŒ°éŒ±éŒ²éŒ³éŒ´éŒµéŒ¶éŒ·éŒ¸éŒ¹éŒºéŒ»éŒ¼éŒ½éŒ¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰ï¿½é�Šé�‹é�Œé��é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�«æ¿‰æ¾§æ¾¹æ¾¶æ¿‚æ¿¡æ¿®æ¿žæ¿ æ¿¯ç€šç€£ç€›ç€¹ç€µç��ç�žå®€å®„宕宓宥宸甯骞æ�´å¯¤å¯®è¤°å¯°è¹‡è¬‡è¾¶è¿“迕迥迮迤迩迦迳迨逅逄逋逦逑é€�逖逡逵逶é€é€¯é�„é�‘é�’é��é�¨é�˜é�¢é�›æš¹é�´é�½é‚‚邈邃邋å½�彗彖彘尻咫å±�å±™å±å±£å±¦ç¾¼å¼ªå¼©å¼è‰´å¼¼é¬»å±®å¦�妃å¦�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������é�¬é�é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿éŽ€éŽ�鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌éŽ�鎎éŽ�鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜éŽ�éŽžéŽŸéŽ éŽ¡éŽ¢éŽ£éŽ¤éŽ¥éŽ¦éŽ§éŽ¨éŽ©éŽªéŽ«ï¿½éŽ¬éŽéŽ®éŽ¯éŽ°éŽ±éŽ²éŽ³éŽ´éŽµéŽ¶éŽ·éŽ¸éŽ¹éŽºéŽ»éŽ¼éŽ½éŽ¾éŽ¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�‹é�Œé��妗姊妫妞妤姒妲妯姗妾娅娆å§�å¨ˆå§£å§˜å§¹å¨Œå¨‰å¨²å¨´å¨‘å¨£å¨“å©€å©§å©Šå©•å¨¼å©¢å©µèƒ¬åªªåª›å©·å©ºåª¾å««åª²å«’å«”åª¸å« å«£å«±å«–å«¦å«˜å«œå¬‰å¬—å¬–å¬²å¬·å€å°•å°œåšå¥å³å‘å“å¢é©µé©·é©¸é©ºé©¿é©½éª€éª�骅骈骊éª�骒骓骖骘骛骜éª�éªŸéª éª¢éª£éª¥éª§çºŸçº¡çº£çº¥çº¨çº©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������é�Žé��é��é�‘é�’é�“é�”é�•é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé���é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�é�®çºçº°çº¾ç»€ç»�绂绉绋绌ç»�ç»”ç»—ç»›ç» ç»¡ç»¨ç»«ç»®ç»¯ç»±ç»²ç¼�绶绺绻绾ç¼�缂缃缇缈缋缌ç¼�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬ç¼ç¼¯ç¼°ç¼±ç¼²ç¼³ç¼µå¹ºç•¿å·›ç”¾é‚•玎玑玮玢玟ç��ç�‚ç�‘玷玳ç�€ç�‰ç�ˆç�¥ç�™é¡¼ç�Šç�©ç�§ç�žçŽºç�²ç��ç�ªç‘›ç�¦ç�¥ç�¨ç�°ç�®ç�¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¿é‘€é‘�鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌é‘�鑎é‘�é‘�鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜é‘�é‘žé‘Ÿé‘ é‘¡é‘¢é‘£é‘¤é‘¥é‘¦é‘§é‘¨é‘©é‘ªé‘¬é‘鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀é’�钂钃钄钑钖钘铇é“�é““é“”é“šé“¦é“»é”œé” ç�›ç�šç‘�瑜瑗瑕瑙瑷ç‘瑾璜璎璀ç’�璇璋璞璨璩ç’�璧瓒璺韪韫韬æ�Œæ�“æ�žæ�ˆæ�©æž¥æž‡æ�ªæ�³æž˜æž§æ�µæž¨æžžæžæž‹æ�·æ�¼æŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æžµæŸšæž³æŸ�æ €æŸƒæž¸æŸ¢æ ŽæŸ�æŸ½æ ²æ ³æ¡ æ¡¡æ¡Žæ¡¢æ¡„æ¡¤æ¢ƒæ �桕桦æ¡�æ¡§æ¡€æ ¾æ¡Šæ¡‰æ ©æ¢µæ¢�æ¡´æ¡·æ¢“æ¡«æ£‚æ¥®æ£¼æ¤Ÿæ¤ æ£¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é”§é”³é”½é•ƒé•ˆé•‹é••é•šé• é•®é•´é•µé•·é•¸é•¹é•ºé•»é•¼é•½é•¾é–€é–�閂閃閄閅閆閇閈閉閊開閌é–�é–Žé–�é–�閑閒間閔閕閖閗閘閙閚閛閜é–�é–žé–Ÿé– é–¡é–¢é–£é–¤é–¥é–¦é–§é–¨é–©é–ªï¿½é–«é–¬é–閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀é—�闂闃闄闅闆闇闈闉闊闋椤棰椋æ¤�楗棣æ¤�æ¥±æ¤¹æ¥ æ¥‚æ¥�æ¦„æ¥«æ¦€æ¦˜æ¥¸æ¤´æ§Œæ¦‡æ¦ˆæ§Žæ¦‰æ¥¦æ¥£æ¥¹æ¦›æ¦§æ¦»æ¦«æ¦æ§”榱æ§�æ§Šæ§Ÿæ¦•æ§ æ¦�æ§¿æ¨¯æ§æ¨—æ¨˜æ©¥æ§²æ©„æ¨¾æª æ©�橛樵檎橹樽樨橘橼檑æª�檩檗檫猷ç�’æ®�殂殇殄殒殓æ®�殚殛殡殪轫è½è½±è½²è½³è½µè½¶è½¸è½·è½¹è½ºè½¼è½¾è¾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������闌é—�é—Žé—�é—�闑闒闓闔闕闖闗闘闙闚闛關é—�é—žé—Ÿé— é—¡é—¢é—£é—¤é—¥é—¦é—§é—¬é—¿é˜‡é˜“é˜˜é˜›é˜žé˜ é˜£é˜¤é˜¥é˜¦é˜§é˜¨é˜©é˜«é˜¬é˜é˜¯é˜°é˜·é˜¸é˜¹é˜ºé˜¾é™�陃陊陎é™�陑陒陓陖陗�陘陙陚陜é™�é™žé™ é™£é™¥é™¦é™«é™é™®é™¯é™°é™±é™³é™¸é™¹é™ºé™»é™¼é™½é™¾é™¿éš€éš�隂隃隄隇隉隊è¾�辎è¾�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿ç”�甑甓攴旮旯旰昊昙æ�²æ˜ƒæ˜•昀炅曷æ˜�昴昱昶昵耆晟晔æ™�æ™�晖晡晗晷暄暌暧æš�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇èµ�赕赙觇觊觋觌觎è§�è§�觑牮犟ç‰�牦牯牾牿犄犋çŠ�çŠ�犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際éš�éšžéšŸéš éš¡éš¢éš£éš¤éš¥éš¦éš¨éš©éšªéš«éš¬éšéš®éš¯éš±éš²éš´éšµéš·éš¸éšºéš»éš¿é›‚雃雈雊雋é›�雑雓雔雖雗雘雙雚雛雜é›�雞雟雡離難雤雥雦雧雫�雬é›é›®é›°é›±é›²é›´é›µé›¸é›ºé›»é›¼é›½é›¿éœ‚霃霅霊霋霌éœ�霑霒霔霕霗霘霙霚霛éœ�éœŸéœ æ�¿æ“˜è€„毪毳毽毵毹氅氇氆æ°�氕氘氙氚氡氩氤氪氲攵敕敫ç‰�牒牖爰虢刖肟肜肓肼朊肽肱肫è‚肴肷胧胨胩胪胛胂胄胙èƒ�胗æœ�èƒ�胫胱胴èƒè„�è„Žèƒ²èƒ¼æœ•è„’è±šè„¶è„žè„¬è„˜è„²è…ˆè…Œè…“è…´è…™è…šè…±è… è…©è…¼è…½è…è…§å¡�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé��é�Žé��é��é�‘é�”é�•é�—é�˜é�šé�œé��é�Ÿé�£é�¤é�¦é�§é�¨é�ªé�«é�¬é�é�®é�¯é�°é�±ï¿½é�²é�µé�·é�¸é�¹é�ºé�»é�½é�¾é�¿éž€éž�鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎éž�éž�鞓鞕鞖鞗鞙鞚鞛鞜éž�è‡�è†¦æ¬¤æ¬·æ¬¹æƒæ†æ™é£‘飒飓飕飙飚殳彀毂觳æ–�齑斓於旆旄旃旌旎旒旖炀炜炖ç‚�炻烀炷炫炱烨烊ç„�ç„“ç„–ç„¯ç„±ç…³ç…œç…¨ç……ç…²ç…Šç…¸ç…ºç†˜ç†³ç†µç†¨ç† ç‡ ç‡”ç‡§ç‡¹çˆ�爨ç�¬ç„˜ç…¦ç†¹æˆ¾æˆ½æ‰ƒæ‰ˆæ‰‰ç¤»ç¥€ç¥†ç¥‰ç¥›ç¥œç¥“ç¥šç¥¢ç¥—ç¥ ç¥¯ç¥§ç¥ºç¦…ç¦Šç¦šç¦§ç¦³å¿‘å¿��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀éŸ�韂韃韄韅韆韇韈韉韊韋韌éŸ�韎éŸ�éŸ�韑韒韓韔韕韖韗韘韙韚韛韜éŸ�éŸžéŸŸéŸ éŸ¡éŸ¢éŸ£ï¿½éŸ¤éŸ¥éŸ¨éŸ®éŸ¯éŸ°éŸ±éŸ²éŸ´éŸ·éŸ¸éŸ¹éŸºéŸ»éŸ¼éŸ½éŸ¾éŸ¿é €é �é ‚é ƒé „é …é †é ‡é ˆé ‰é Šé ‹é Œé �é Žæ€¼æ��æ�šæ�§æ��æ�™æ�£æ‚«æ„†æ„�æ…�憩æ†�懋懑戆肀è�¿æ²“æ³¶æ·¼çŸ¶çŸ¸ç €ç ‰ç —ç ˜ç ‘æ–«ç ç œç �ç ¹ç ºç »ç Ÿç ¼ç ¥ç ¬ç £ç ©ç¡Žç¡ç¡–ç¡—ç ¦ç¡�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄çœ�盹眇眈眚眢眙çœçœ¦çœµçœ¸ç��ç�‘ç�‡ç�ƒç�šç�¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������é �é �é ‘é ’é “é ”é •é –é —é ˜é ™é šé ›é œé �é žé Ÿé é ¡é ¢é £é ¤é ¥é ¦é §é ¨é ©é ªé «é ¬é é ®é ¯é °é ±é ²é ³é ´é µé ¶é ·é ¸é ¹é ºé »é ¼é ½é ¾é ¿é¡€é¡�顂顃顄顅顆顇顈顉顊顋題é¡��顎é¡�é¡�顑顒顓顔顕顖顗願顙顚顛顜é¡�é¡žé¡Ÿé¡ é¡¡é¡¢é¡£é¡¤é¡¥é¡¦é¡§é¡¨é¡©é¡ªé¡«é¡¬é¡é¡®ç�¢ç�¥ç�¿çž�ç�½çž€çžŒçž‘çžŸçž çž°çžµçž½ç”ºç•€ç•Žç•‹ç•ˆç•›ç•²ç•¹ç–ƒç½˜ç½¡ç½Ÿè©ˆç½¨ç½´ç½±ç½¹ç¾�ç½¾ç›�ç›¥è ²é’…é’†é’‡é’‹é’Šé’Œé’�é’�é’�钔钗钕钚钛钜钣钤钫钪é’钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌é“�铎é“�é“‘é“’é“•é“–é“—é“™é“˜é“›é“žé“Ÿé“ é“¢é“¤é“¥é“§é“¨é“ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬é¢é¢®é¢¯é¢°é¢±é¢²é¢³é¢´é¢µé¢¶é¢·é¢¸é¢¹é¢ºé¢»é¢¼é¢½é¢¾é¢¿é£€é£�飂飃飄飅飆飇飈飉飊飋飌é£�é£�é£�飔飖飗飛飜é£�é£ é£¡é£¢é££é£¤ï¿½é£¥é£¦é£©é£ªé£«é£¬é£é£®é£¯é£°é£±é£²é£³é£´é£µé£¶é£·é£¸é£¹é£ºé£»é£¼é£½é£¾é£¿é¤€é¤�餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊é”�锎é”�锒锓锔锕锖锘锛é”�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎é•�镒镓镔镖镗镘镙镛镞镟é•�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕ç§ç§£ç§«ç¨†åµ‡ç¨ƒç¨‚稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������餈餉養餋餌餎é¤�餑餒餓餔餕餖餗餘餙餚餛餜é¤�é¤žé¤Ÿé¤ é¤¡é¤¢é¤£é¤¤é¤¥é¤¦é¤§é¤¨é¤©é¤ªé¤«é¤¬é¤é¤¯é¤°é¤±é¤²é¤³é¤´é¤µé¤¶é¤·é¤¸é¤¹é¤ºé¤»é¤¼é¤½é¤¾é¤¿é¥€é¥�饂饃饄饅饆饇饈饉�饊饋饌é¥�饎é¥�é¥�饑饒饓饖饗饘饙饚饛饜é¥�é¥žé¥Ÿé¥ é¥¡é¥¢é¥¤é¥¦é¥³é¥¸é¥¹é¥»é¥¾é¦‚é¦ƒé¦‰ç¨¹ç¨·ç©‘é»�é¦¥ç©°çšˆçšŽçš“çš™çš¤ç“žç“ ç”¬é¸ é¸¢é¸¨é¸©é¸ªé¸«é¸¬é¸²é¸±é¸¶é¸¸é¸·é¸¹é¸ºé¸¾é¹�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱é¹é¹³ç–’ç–”ç––ç– ç–�疬疣疳疴疸痄疱疰痃痂痖ç—�痣痨痦痤痫痧瘃痱痼痿ç˜�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������馌馎馚馛馜é¦�é¦žé¦Ÿé¦ é¦¡é¦¢é¦£é¦¤é¦¦é¦§é¦©é¦ªé¦«é¦¬é¦é¦®é¦¯é¦°é¦±é¦²é¦³é¦´é¦µé¦¶é¦·é¦¸é¦¹é¦ºé¦»é¦¼é¦½é¦¾é¦¿é§€é§�駂駃駄駅駆駇駈駉駊駋駌é§�é§Žé§�é§�駑駒駓駔駕駖駗駘�駙駚駛駜é§�é§žé§Ÿé§ é§¡é§¢é§£é§¤é§¥é§¦é§§é§¨é§©é§ªé§«é§¬é§é§®é§¯é§°é§±é§²é§³é§´é§µé§¶é§·é§¸é§¹ç˜›ç˜¼ç˜¢ç˜ 癀ç˜ç˜°ç˜¿ç˜µç™ƒç˜¾ç˜³ç™�ç™žç™”ç™œç™–ç™«ç™¯ç¿Šç«¦ç©¸ç©¹çª€çª†çªˆçª•çª¦çª çª¬çª¨çªçª³è¡¤è¡©è¡²è¡½è¡¿è¢‚袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶è¥�è¥¦è¥»ç–‹èƒ¥çš²çš´çŸœè€’è€”è€–è€œè€ è€¢è€¥è€¦è€§è€©è€¨è€±è€‹è€µè�ƒè�†è��è�’è�©è�±è¦ƒé¡¸é¢€é¢ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀é¨�騂騃騄騅騆騇騈騉騊騋騌é¨�騎é¨�é¨�騑騒験騔騕騖騗騘騙騚騛騜é¨�é¨žé¨Ÿé¨ é¨¡é¨¢é¨£é¨¤é¨¥é¨¦é¨§é¨¨é¨©é¨ªé¨«é¨¬é¨é¨®é¨¯é¨°é¨±é¨²é¨³é¨´é¨µé¨¶é¨·é¨¸ï¿½é¨¹é¨ºé¨»é¨¼é¨½é¨¾é¨¿é©€é©�驂驃驄驅驆驇驈驉驊驋驌é©�驎é©�é©�驑驒驓驔驕驖驗驘驙颉颌é¢�é¢�颔颚颛颞颟颡颢颥颦è™�虔虬虮虿虺虼虻蚨èš�蚋蚬èš�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉è›�蚴蛩蛱蛲è›è›³è›�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊èœ�蜉蜣蜻蜞蜥蜮蜚蜾è�ˆèœ´èœ±èœ©èœ·èœ¿èž‚蜢è�½è�¾è�»è� è�°è�Œè�®èž‹è�“è�£è�¼è�¤è�™è�¥èž“螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������驚驛驜é©�é©žé©Ÿé© é©¡é©¢é©£é©¤é©¥é©¦é©§é©¨é©©é©ªé©«é©²éªƒéª‰éª�骎骔骕骙骦骩骪骫骬éªéª®éª¯éª²éª³éª´éªµéª¹éª»éª½éª¾éª¿é«ƒé«„髆髇髈髉髊é«�髎é«�é«�髒體髕髖髗髙髚髛髜�é«�é«žé« é«¢é«£é«¤é«¥é«§é«¨é«©é«ªé«¬é«®é«°é«±é«²é«³é«´é«µé«¶é«·é«¸é«ºé«¼é«½é«¾é«¿é¬€é¬�鬂鬄鬅鬆蟆螈螅èžèž—èžƒèž«èŸ¥èž¬èžµèž³èŸ‹èŸ“èž½èŸ‘èŸ€èŸŠèŸ›èŸªèŸ èŸ®è –è “èŸ¾è Šè ›è ¡è ¹è ¼ç¼¶ç½‚ç½„ç½…èˆ�竺竽笈笃笄笕笊笫ç¬�ç‡ç¬¸ç¬ªç¬™ç¬®ç¬±ç¬ 笥笤笳笾笞ç˜çšç…çµçŒç�ç ç®ç»ç¢ç²ç±ç®�箦箧箸箬ç®�箨箅箪箜箢箫箴篑ç¯�篌ç¯�篚篥篦篪簌篾篼ç°�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌é¬�鬎é¬�鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜é¬�é¬žé¬ é¬¡é¬¢é¬¤é¬¥é¬¦é¬§é¬¨é¬©é¬ªé¬«é¬¬é¬é¬®é¬°é¬±é¬³é¬´é¬µé¬¶é¬·é¬¸é¬¹é¬ºé¬½é¬¾é¬¿é€é†éŠé‹éŒéŽé�é’é“é•é–é—é˜é™éšï¿½é›éœé�éžéŸé é¡é¢é£é¤é¥é¦é§é¨é©éªé«é¬éé®é¯é°é±é²é³é´éµé¶é·é¸é¹éºé»ç°Ÿç°ªç°¦ç°¸ç±�籀臾èˆ�舂舄臬衄舡舢舣èˆèˆ¯èˆ¨èˆ«èˆ¸èˆ»èˆ³èˆ´èˆ¾è‰„艉艋è‰�艚艟艨衾袅袈裘裟襞ç¾�羟羧羯羰羲籼敉粑ç²�粜粞粢粲粼粽ç³�糇糌ç³�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧èµè±‡è±‰é…Šé…�é…Žé…�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"����������������������������������������������������������������é¼é½é¾é¿é®€é®�鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌é®�鮎é®�é®�鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜é®�é®žé®Ÿé® é®¡é®¢é®£é®¤é®¥é®¦é®§é®¨é®©é®ªé®«é®¬é®é®®é®¯é®°é®±é®²é®³é®´é®µé®¶é®·é®¸é®¹é®ºï¿½é®»é®¼é®½é®¾é®¿é¯€é¯�鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌é¯�鯎é¯�é¯�鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅é†�é†�醑醢醣醪é†é†®é†¯é†µé†´é†ºè±•鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎è·�跛跆跬跷跸跣跹跻跤踉跽踔è¸�踟踬踮踣踯踺蹀踹踵踽踱蹉è¹�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅èº�躔èº�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"����������������������������������������������������������������鯜é¯�é¯žé¯Ÿé¯ é¯¡é¯¢é¯£é¯¤é¯¥é¯¦é¯§é¯¨é¯©é¯ªé¯«é¯¬é¯é¯®é¯¯é¯°é¯±é¯²é¯³é¯´é¯µé¯¶é¯·é¯¸é¯¹é¯ºé¯»é¯¼é¯½é¯¾é¯¿é°€é°�鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌é°�é°Žé°�é°�鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜é°�é°žé°Ÿé° é°¡é°¢é°£é°¤é°¥é°¦é°§é°¨é°©é°ªé°«é°¬é°é°®é°¯é°°é°±é°²é°³é°´é°µé°¶é°·é°¸é°¹é°ºé°»è§¥è§«è§¯è¨¾è¬¦é�“雩雳雯霆éœ�霈éœ�霎霪éœéœ°éœ¾é¾€é¾ƒé¾…龆龇龈龉龊龌黾鼋é¼�éš¹éš¼éš½é›Žé›’çž¿é› éŠŽéŠ®é‹ˆéŒ¾é�ªé�ŠéŽ�é�¾é‘«é±¿é²‚鲅鲆鲇鲈稣鲋鲎é²�é²‘é²’é²”é²•é²šé²›é²žé²Ÿé² é²¡é²¢é²£é²¥é²¦é²§é²¨é²©é²«é²é²®é²°é²±é²²é²³é²´é²µé²¶é²·é²ºé²»é²¼é²½é³„鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀é±�鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌é±�鱎é±�é±�鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜é±�é±žé±Ÿé± é±¡é±¢é±£é±¤é±¥é±¦é±§é±¨é±©é±ªé±«é±¬é±é±®é±¯é±°é±±é±²é±³é±´é±µé±¶é±·é±¸é±¹é±ºï¿½é±»é±½é±¾é²€é²ƒé²„鲉鲊鲌é²�鲓鲖鲗鲘鲙é²�鲪鲬鲯鲹鲾鲿鳀é³�é³‚é³ˆé³‰é³‘é³’é³šé³›é³ é³¡é³Œé³�鳎é³�é³�鳓鳔鳕鳗鳘鳙鳜é³�鳟鳢é�¼éž…鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼é«�髀髅髂髋髌髑é…éƒé‡é‰éˆé�é‘飨é¤�餮饕饔髟髡髦髯髫髻é«é«¹é¬ˆé¬�鬓鬟鬣麽麾縻麂麇麈麋麒é�–éº�麟黛黜é»�é» é»Ÿé»¢é»©é»§é»¥é»ªé»¯é¼¢é¼¬é¼¯é¼¹é¼·é¼½é¼¾é½„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬é³é³®é³¯é³°é³±é³²é³³é³´é³µé³¶é³·é³¸é³¹é³ºé³»é³¼é³½é³¾é³¿é´€é´�鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌é´�é´Žé´�é´�鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜é´�é´žé´Ÿé´ é´¡ï¿½é´¢é´£é´¤é´¥é´¦é´§é´¨é´©é´ªé´«é´¬é´é´®é´¯é´°é´±é´²é´³é´´é´µé´¶é´·é´¸é´¹é´ºé´»é´¼é´½é´¾é´¿éµ€éµ�鵂�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌éµ�鵎éµ�éµ�鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜éµ�éµžéµŸéµ éµ¡éµ¢éµ£éµ¤éµ¥éµ¦éµ§éµ¨éµ©éµªéµ«éµ¬éµéµ®éµ¯éµ°éµ±éµ²éµ³éµ´éµµéµ¶éµ·éµ¸éµ¹éµºéµ»éµ¼éµ½éµ¾éµ¿é¶€é¶��鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌é¶�é¶Žé¶�é¶�鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜é¶�é¶žé¶Ÿé¶ é¶¡é¶¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬é¶é¶®é¶¯é¶°é¶±é¶²é¶³é¶´é¶µé¶¶é¶·é¶¸é¶¹é¶ºé¶»é¶¼é¶½é¶¾é¶¿é·€é·�鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌é·�é·Žé·�é·�鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜é·�é·žé·Ÿé· é·¡ï¿½é·¢é·£é·¤é·¥é·¦é·§é·¨é·©é·ªé·«é·¬é·é·®é·¯é·°é·±é·²é·³é·´é·µé·¶é··é·¸é·¹é·ºé·»é·¼é·½é·¾é·¿é¸€é¸�鸂�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌é¸�鸎é¸�é¸�鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜é¸�鸞鸤鸧鸮鸰鸴鸻鸼鹀é¹�é¹�鹒鹓鹔鹖鹙é¹�é¹Ÿé¹ é¹¡é¹¢é¹¥é¹®é¹¯é¹²é¹´é¹µé¹¶é¹·é¹¸é¹¹é¹ºé¹»é¹¼é¹½éº€ï¿½éº�麃麄麅麆麉麊麌éº�麎éº�éº�éº‘éº”éº•éº–éº—éº˜éº™éºšéº›éºœéºžéº éº¡éº¢éº£éº¤éº¥éº§éº¨éº©éºªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������麫麬éºéº®éº¯éº°éº±éº²éº³éºµéº¶éº·éº¹éººéº¼éº¿é»€é»�黂黃黅黆黇黈黊黋黌é»�黒黓黕黖黗黙黚點黡黣黤黦黨黫黬é»é»®é»°é»±é»²é»³é»´é»µé»¶é»·é»¸é»ºé»½é»¿é¼€é¼�鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌é¼�鼑鼒鼔鼕鼖鼘鼚鼛鼜é¼�鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫é¼é¼®é¼°é¼±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀é½�齂齃齅齆齇齈齉齊齋齌é½�齎é½�齒齓齔齕齖齗齘齙齚齛齜é½�é½žé½Ÿé½ é½¡é½¢é½£é½¤é½¥é½¦é½§é½¨é½©é½ªé½«é½¬é½é½®é½¯é½°é½±é½²é½³é½´é½µé½¶é½·é½¸ï¿½é½¹é½ºé½»é½¼é½½é½¾é¾�龂é¾�龎é¾�é¾�龑龒龓龔龕龖龗龘龜é¾�龞龡龢龣龤龥郎凉秊裏隣�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"����������������������������������������������������������������兀ï¨�﨎ï¨�ï¨‘ï¨“ï¨”ï¨˜ï¨Ÿï¨ ï¨¡ï¨£ï¨¤ï¨§ï¨¨ï¨©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[949] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"�����������������������������������������������������������������갂갃갅갆갋갌ê°�ê°Žê°�갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳갴������갵갶갷갺갻갽갾갿ê±�걂걃걄걅걆걇걈걉걊걌걎ê±�ê±�걑걒걓걕������걖걗걙걚걛ê±�ê±žê±Ÿê± ê±¡ê±¢ê±£ê±¤ê±¥ê±¦ê±§ê±¨ê±©ê±ªê±«ê±¬ê±ê±®ê±¯ê±²ê±³ê±µê±¶ê±¹ê±»ê±¼ê±½ê±¾ê±¿ê²‚겇겈ê²�겎ê²�겑겒겓겕겖겗겘겙겚겛겞겢겣겤겥겦겧겫ê²ê²®ê²±ê²²ê²³ê²´ê²µê²¶ê²·ê²ºê²¾ê²¿ê³€ê³‚곃곅곆곇곉곊곋ê³�곎ê³�ê³�곑곒곓곔곖곘곙곚곛곜ê³�곞곟곢곣곥곦곩곫ê³ê³®ê³²ê³´ê³·ê³¸ê³¹ê³ºê³»ê³¾ê³¿ê´�괂괃괅괇괈괉괊괋괎ê´�괒괓�\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"�����������������������������������������������������������������괔괕괖괗괙괚괛ê´�괞괟괡괢괣괤괥괦괧괨괪괫괮괯괰괱괲괳������괶괷괹괺괻괽괾괿굀êµ�굂굃굆굈굊굋굌êµ�굎êµ�굑굒굓굕굖굗������굙굚굛굜êµ�êµžêµŸêµ êµ¢êµ¤êµ¥êµ¦êµ§êµ¨êµ©êµªêµ«êµ®êµ¯êµ±êµ²êµ·êµ¸êµ¹êµºêµ¾ê¶€ê¶ƒê¶„ê¶…ê¶†ê¶‡ê¶Šê¶‹ê¶�ê¶Žê¶�ê¶‘ê¶’ê¶“ê¶”ê¶•ê¶–ê¶—ê¶˜ê¶™ê¶šê¶›ê¶žê¶Ÿê¶ ê¶¡ê¶¢ê¶£ê¶¥ê¶¦ê¶§ê¶¨ê¶©ê¶ªê¶«ê¶¬ê¶ê¶®ê¶¯ê¶°ê¶±ê¶²ê¶³ê¶´ê¶µê¶¶ê¶¸ê¶¹ê¶ºê¶»ê¶¼ê¶½ê¶¾ê¶¿ê·‚귃귅귆귇귉귊귋귌ê·�ê·Žê·�귒귔귕귖귗귘귙귚귛ê·�귞귟귡귢귣귥귦귧귨귩귪귫귬ê·ê·®ê·¯ê·°ê·±ê·²ê·³ê·´ê·µê·¶ê··ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"�����������������������������������������������������������������귺귻귽귾긂긃긄긅긆긇긊긌긎ê¸�ê¸�긑긒긓긕긖긗긘긙긚긛긜������ê¸�ê¸žê¸Ÿê¸ ê¸¡ê¸¢ê¸£ê¸¤ê¸¥ê¸¦ê¸§ê¸¨ê¸©ê¸ªê¸«ê¸¬ê¸ê¸®ê¸¯ê¸²ê¸³ê¸µê¸¶ê¸¹ê¸»ê¸¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ê¸½ê¸¾ê¸¿ê¹‚깄깇깈깉깋ê¹�깑깒깓깕깗깘깙깚깛깞깢깣깤깦깧깪깫ê¹ê¹®ê¹¯ê¹±ê¹²ê¹³ê¹´ê¹µê¹¶ê¹·ê¹ºê¹¾ê¹¿êº€êº�꺂꺃꺆꺇꺈꺉꺊꺋êº�꺎êº�êº�꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜êº�êºžêºŸêº êº¡êº¢êº£êº¤êº¥êº¦êº§êº¨êº©êºªêº«êº¬êºêº®êº¯êº°êº±êº²êº³êº´êºµêº¶êº·êº¸êº¹êººêº»êº¿ê»�껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛ê»�ê»žê»Ÿê» ê»¡ê»¢ê»£ê»¤ê»¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"�����������������������������������������������������������������껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺껻껽껾껿꼀ê¼�꼂꼃꼄꼅������꼆꼉꼊꼋꼌꼎ê¼�꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜ê¼�ê¼žê¼Ÿê¼ ê¼¡ê¼¢ê¼£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ê¼¤ê¼¥ê¼¦ê¼§ê¼¨ê¼©ê¼ªê¼«ê¼®ê¼¯ê¼±ê¼³ê¼µê¼¶ê¼·ê¼¸ê¼¹ê¼ºê¼»ê¼¾ê½€ê½„ê½…ê½†ê½‡ê½Šê½‹ê½Œê½�꽎ê½�ê½‘ê½’ê½“ê½”ê½•ê½–ê½—ê½˜ê½™ê½šê½›ê½žê½Ÿê½ ê½¡ê½¢ê½£ê½¦ê½§ê½¨ê½©ê½ªê½«ê½¬ê½ê½®ê½¯ê½°ê½±ê½²ê½³ê½´ê½µê½¶ê½·ê½¸ê½ºê½»ê½¼ê½½ê½¾ê½¿ê¾�꾂꾃꾅꾆꾇꾉꾊꾋꾌ê¾�꾎ê¾�꾒꾓꾔꾖꾗꾘꾙꾚꾛ê¾�ê¾žê¾Ÿê¾ ê¾¡ê¾¢ê¾£ê¾¤ê¾¥ê¾¦ê¾§ê¾¨ê¾©ê¾ªê¾«ê¾¬ê¾ê¾®ê¾¯ê¾°ê¾±ê¾²ê¾³ê¾´ê¾µê¾¶ê¾·ê¾ºê¾»ê¾½ê¾¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"�����������������������������������������������������������������꾿ê¿�꿂꿃꿄꿅꿆꿊꿌ê¿�ê¿�꿑꿒꿓꿕꿖꿗꿘꿙꿚꿛ê¿�ê¿žê¿Ÿê¿ ê¿¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ê¿¢ê¿£ê¿¤ê¿¥ê¿¦ê¿§ê¿ªê¿«ê¿¬ê¿ê¿®ê¿¯ê¿²ê¿³ê¿µê¿¶ê¿·ê¿¹ê¿ºê¿»ê¿¼ê¿½ê¿¾ê¿¿ë€‚뀃������뀅뀆뀇뀈뀉뀊뀋ë€�뀎ë€�ë€‘ë€’ë€“ë€•ë€–ë€—ë€˜ë€™ë€šë€›ë€žë€Ÿë€ ë€¡ë€¢ë€£ë€¤ë€¥ë€¦ë€§ë€©ë€ªë€«ë€¬ë€ë€®ë€¯ë€°ë€±ë€²ë€³ë€´ë€µë€¶ë€·ë€¸ë€¹ë€ºë€»ë€¼ë€½ë€¾ë€¿ë�€ë��ë�‚ë�ƒë�†ë�‡ë�‰ë�‹ë��ë��ë��ë�‘ë�’ë�–ë�˜ë�šë�›ë�œë�žë�Ÿë� ë�¡ë�¢ë�£ë�¤ë�¥ë�¦ë�§ë�¨ë�©ë�ªë�«ë�¬ë�ë�®ë�¯ë�°ë�±ë�²ë�³ë�´ë�µë�¶ë�·ë�¸ë�¹ë�ºë�»ë�¾ë�¿ë‚�낂낃낅낆낇낈낉낊낋낎ë‚�낒낓낔낕낖낗낛ë‚�낞낣낤�\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"�����������������������������������������������������������������낥낦낧낪낰낲낶낷낹낺낻낽낾낿냀ëƒ�냂냃냆냊냋냌ëƒ�냎ëƒ�냒������냓냕냖냗냙냚냛냜ëƒ�냞냟냡냢냣냤냦냧냨냩냪냫냬ëƒëƒ®ëƒ¯ëƒ°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ëƒ±ëƒ²ëƒ³ëƒ´ëƒµëƒ¶ëƒ·ëƒ¸ëƒ¹ëƒºëƒ»ëƒ¼ëƒ½ëƒ¾ëƒ¿ë„€ë„�넂넃넄넅넆넇넊ë„�넎ë„�ë„‘ë„”ë„•ë„–ë„—ë„šë„žë„Ÿë„ ë„¡ë„¢ë„¦ë„§ë„©ë„ªë„«ë„넮넯넰넱넲넳넶넺넻넼넽넾넿녂녃녅녆녇녉녊녋녌ë…�ë…Žë…�녒녓녖녗녙녚녛ë…�녞녟녡녢녣녤녥녦녧녨녩녪녫녬ë…녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿ë†�놃놄놅놆놇놊놌놎ë†�ë†�놑놕놖놗놙놚놛ë†��\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë†žë†Ÿë† ë†¡ë†¢ë†£ë†¤ë†¥ë†¦ë†§ë†©ë†ªë†«ë†¬ë†ë†®ë†¯ë†°ë†±ë†²ë†³ë†´ë†µë†¶ë†·ë†¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë†¹ë†ºë†»ë†¼ë†½ë†¾ë†¿ë‡€ë‡�뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋ë‡�뇎ë‡�ë‡‘ë‡’ë‡“ë‡•ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë‡–ë‡—ë‡˜ë‡™ë‡šë‡›ë‡žë‡ ë‡¡ë‡¢ë‡£ë‡¤ë‡¥ë‡¦ë‡§ë‡ªë‡«ë‡ë‡®ë‡¯ë‡±ë‡²ë‡³ë‡´ë‡µë‡¶ë‡·ë‡¸ë‡ºë‡¼ë‡¾ë‡¿ëˆ€ëˆ�눂눃눆눇눉눊ëˆ�눎ëˆ�ëˆ�눑눒눓눖눘눚눛눜ëˆ�눞눟눡눢눣눤눥눦눧눨눩눪눫눬ëˆëˆ®ëˆ¯ëˆ°ëˆ±ëˆ²ëˆ³ëˆµëˆ¶ëˆ·ëˆ¸ëˆ¹ëˆºëˆ»ëˆ½ëˆ¾ëˆ¿ë‰€ë‰�뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌ë‰�뉎ë‰�ë‰�뉑뉒뉓뉔뉕뉖뉗뉙뉚뉛ë‰�뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬ë‰ë‰®ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"�����������������������������������������������������������������뉯뉰뉱뉲뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀ëŠ�늂늃늆늇늈늊늋늌ëŠ�늎������ëŠ�늒늓늕늖늗늛늜ëŠ�늞늟늢늤늧늨늩늫ëŠëŠ®ëŠ¯ëŠ±ëŠ²ëŠ³ëŠµëŠ¶ëŠ·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ëŠ¸ëŠ¹ëŠºëŠ»ëŠ¼ëŠ½ëŠ¾ëŠ¿ë‹€ë‹�닂닃닄닅닆닇닊닋ë‹�닎ë‹�ë‹‘ë‹“ë‹”ë‹•ë‹–ë‹—ë‹šë‹œë‹žë‹Ÿë‹ ë‹¡ë‹£ë‹§ë‹©ë‹ªë‹°ë‹±ë‹²ë‹¶ë‹¼ë‹½ë‹¾ëŒ‚ëŒƒëŒ…ëŒ†ëŒ‡ëŒ‰ëŒŠëŒ‹ëŒŒëŒ�댎ëŒ�댒댖댗댘댙댚댛ëŒ�ëŒžëŒŸëŒ ëŒ¡ëŒ¢ëŒ£ëŒ¤ëŒ¥ëŒ¦ëŒ§ëŒ¨ëŒ©ëŒªëŒ«ëŒ¬ëŒëŒ®ëŒ¯ëŒ°ëŒ±ëŒ²ëŒ³ëŒ´ëŒµëŒ¶ëŒ·ëŒ¸ëŒ¹ëŒºëŒ»ëŒ¼ëŒ½ëŒ¾ëŒ¿ë�€ë��ë�‚ë�ƒë�„ë�…ë�†ë�‡ë�ˆë�‰ë�Šë�‹ë�Œë��ë�Žë��ë��ë�‘ë�’ë�“ë�—ë�™ë�šë��ë� ë�¡ë�¢ë�£ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"�����������������������������������������������������������������ë�¦ë�¨ë�ªë�¬ë�ë�¯ë�²ë�³ë�µë�¶ë�·ë�¹ë�ºë�»ë�¼ë�½ë�¾ë�¿ëŽ‚ëŽ†ëŽ‡ëŽˆëŽ‰ëŽŠëŽ‹ëŽ�������뎎ëŽ�뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜ëŽ�뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫ëŽï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ëŽ®ëŽ¯ëŽ°ëŽ±ëŽ²ëŽ³ëŽ´ëŽµëŽ¶ëŽ·ëŽ¸ëŽ¹ëŽºëŽ»ëŽ¼ëŽ½ëŽ¾ëŽ¿ë�€ë��ë�‚ë�ƒë�†ë�‡ë�‰ë�Šë��ë��ë�‘ë�’ë�“ë�–ë�˜ë�šë�œë�žë�Ÿë�¡ë�¢ë�£ë�¥ë�¦ë�§ë�©ë�ªë�«ë�¬ë�ë�®ë�¯ë�°ë�±ë�²ë�³ë�´ë�µë�¶ë�·ë�¸ë�¹ë�ºë�»ë�½ë�¾ë�¿ë�€ë��ë�‚ë�ƒë�„ë�…ë�†ë�‡ë�ˆë�‰ë�Šë�‹ë�Œë��ë�Žë��ë�‘ë�’ë�“ë�”ë�•ë�–ë�—ë�™ë�šë�›ë��ë�žë�Ÿë�¡ë�¢ë�£ë�¤ë�¥ë�¦ë�§ë�ªë�¬ë�ë�®ë�¯ë�°ë�±ë�²ë�³ë�µë�¶ë�·ë�¸ë�¹ë�ºë�»ë�¼ë�½ë�¾ë�¿ë‘€ë‘�둂둃둄�\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"�����������������������������������������������������������������둅둆둇둈둉둊둋둌ë‘�둎ë‘�둒둓둕둖둗둙둚둛둜ë‘�둞둟둢둤둦������둧둨둩둪둫ë‘둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿ë’�뒂������뒃뒄뒅뒆뒇뒉뒊뒋뒌ë’�ë’Žë’�ë’�ë’‘ë’’ë’“ë’”ë’•ë’–ë’—ë’˜ë’™ë’šë’›ë’œë’žë’Ÿë’ ë’¡ë’¢ë’£ë’¥ë’¦ë’§ë’©ë’ªë’«ë’뒮뒯뒰뒱뒲뒳뒴뒶뒸뒺뒻뒼뒽뒾뒿ë“�듂듃듅듆듇듉듊듋듌ë“�듎ë“�듑듒듓듔듖듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺듻듼듽듾듿딀ë”�딂딃딄딅딆딇딈딉딊딋딌ë”�딎ë”�ë”�딑딒딓딖딗딙딚ë”��\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë”žë”Ÿë” ë”¡ë”¢ë”£ë”¦ë”«ë”¬ë”딮딯딲딳딵딶딷딹딺딻딼딽딾딿땂땆������땇땈땉땊땎ë•�땑땒땓땕땖땗땘땙땚땛땞땢땣땤땥땦땧땨땩땪������땫땬ë•땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀ë–�떂떃떄떅떆떇떈떉떊떋떌ë–�ë–Žë–�ë–�떑떒떓떔떕떖떗떘떙떚떛떜ë–�떞떟떢떣떥떦떧떩떬ë–떮떯떲떶떷떸떹떺떾떿ë—�뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜ë—�ë—žë—Ÿë— ë—¡ë—¢ë—£ë—¤ë—¥ë—¦ë—§ë—¨ë—©ë—ªë—«ë—뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿�\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"�����������������������������������������������������������������똀ë˜�똂똃똄똅똆똇똈똉똊똋똌ë˜�똎ë˜�똒똓똕똖똗똙똚똛똜ë˜�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë˜žë˜Ÿë˜ ë˜¡ë˜¢ë˜£ë˜¤ë˜¦ë˜§ë˜¨ë˜©ë˜ªë˜«ë˜ë˜®ë˜¯ë˜°ë˜±ë˜²ë˜³ë˜µë˜¶ë˜·ë˜¸ë˜¹ë˜ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë˜»ë˜¼ë˜½ë˜¾ë˜¿ë™€ë™�뙂뙃뙄뙅뙆뙇뙉뙊뙋뙌ë™�뙎ë™�ë™�뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜ë™�ë™žë™Ÿë™ ë™¡ë™¢ë™£ë™¥ë™¦ë™§ë™©ë™ªë™«ë™¬ë™ë™®ë™¯ë™°ë™±ë™²ë™³ë™´ë™µë™¶ë™·ë™¸ë™¹ë™ºë™»ë™¼ë™½ë™¾ë™¿ëš€ëš�뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌ëš�뚎ëš�ëš�뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪ëšëš®ëš¯ëš°ëš²ëš³ëš´ëšµëš¶ëš·ëš¸ëš¹ëšºëš»ëš¼ëš½ëš¾ëš¿ë›€ë›�뛂�\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"�����������������������������������������������������������������뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌ë›�뛎ë›�ë›�뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜ë›�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë›žë›Ÿë› ë›¡ë›¢ë›£ë›¤ë›¥ë›¦ë›§ë›¨ë›©ë›ªë›«ë›¬ë›ë›®ë›¯ë›±ë›²ë›³ë›µë›¶ë›·ë›¹ë›ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë›»ë›¼ë›½ë›¾ë›¿ëœ‚뜃뜄뜆뜇뜈뜉뜊뜋뜌ëœ�뜎ëœ�ëœ�뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜ëœ�ëœžëœŸëœ ëœ¡ëœ¢ëœ£ëœ¤ëœ¥ëœ¦ëœ§ëœªëœ«ëœëœ®ëœ±ëœ²ëœ³ëœ´ëœµëœ¶ëœ·ëœºëœ¼ëœ½ëœ¾ëœ¿ë�€ë��ë�‚ë�ƒë�…ë�†ë�‡ë�‰ë�Šë�‹ë��ë�Žë��ë��ë�‘ë�’ë�“ë�–ë�—ë�˜ë�™ë�šë�›ë�œë��ë�žë�Ÿë�¡ë�¢ë�£ë�¥ë�¦ë�§ë�©ë�ªë�«ë�¬ë�ë�®ë�¯ë�²ë�´ë�¶ë�·ë�¸ë�¹ë�ºë�»ë�¾ë�¿ëž�랂랃랅랆랇랈랉랊랋랎랓랔랕랚랛ëž�랞�\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"�����������������������������������������������������������������랟랡랢랣랤랥랦랧랪랮랯랰랱랲랳랶랷랹랺랻랼랽랾랿럀ëŸ�������럂럃럄럅럆럈럊럋럌ëŸ�럎ëŸ�ëŸ�럑럒럓럔럕럖럗럘럙럚럛럜ëŸ�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ëŸžëŸŸëŸ ëŸ¡ëŸ¢ëŸ£ëŸ¤ëŸ¥ëŸ¦ëŸ§ëŸ¨ëŸ©ëŸªëŸ«ëŸ®ëŸ¯ëŸ±ëŸ²ëŸ³ëŸµëŸ¶ëŸ·ëŸ¸ëŸ¹ëŸºëŸ»ëŸ¾ë ‚ë ƒë „ë …ë †ë Šë ‹ë �ë Žë �ë ‘ë ’ë “ë ”ë •ë –ë —ë šë œë žë Ÿë ë ¡ë ¢ë £ë ¦ë §ë ©ë ªë «ë ë ®ë ¯ë °ë ±ë ²ë ³ë ¶ë ºë »ë ¼ë ½ë ¾ë ¿ë¡�롂롃롅롆롇롈롉롊롋롌ë¡�롎ë¡�ë¡�롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰롲롳롴롵롶롷롹롺롻롽롾롿뢀ë¢�뢂뢃뢄�\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"�����������������������������������������������������������������뢅뢆뢇뢈뢉뢊뢋뢌뢎ë¢�ë¢�뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜ë¢�ë¢žë¢Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë¢ ë¢¡ë¢¢ë¢£ë¢¤ë¢¥ë¢¦ë¢§ë¢©ë¢ªë¢«ë¢¬ë¢ë¢®ë¢¯ë¢±ë¢²ë¢³ë¢µë¢¶ë¢·ë¢¹ë¢ºë¢»ë¢¼ë¢½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë¢¾ë¢¿ë£‚룄룆룇룈룉룊룋ë£�룎ë£�ë£‘ë£’ë£“ë£•ë£–ë£—ë£˜ë£™ë£šë£›ë£œë£žë£ ë£¢ë££ë£¤ë£¥ë£¦ë£§ë£ªë£«ë£ë£®ë£¯ë£±ë£²ë£³ë£´ë£µë£¶ë£·ë£ºë£¼ë£¾ë£¿ë¤€ë¤�뤂뤃뤅뤆뤇뤈뤉뤊뤋뤌ë¤�뤎ë¤�ë¤�뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜ë¤�뤞뤟뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬ë¤ë¤®ë¤¯ë¤°ë¤±ë¤²ë¤³ë¤´ë¤µë¤¶ë¤·ë¤¸ë¤¹ë¤ºë¤»ë¤¾ë¤¿ë¥�륂륃륅륆륇륈륉륊륋ë¥�륎ë¥�륒륓륔륕륖륗�\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"�����������������������������������������������������������������륚륛ë¥�륞륟륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽������륾륿릀ë¦�릂릃릆릈릋릌ë¦�ë¦�릑릒릓릔릕릖릗릘릙릚릛릜ë¦�ë¦žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë¦Ÿë¦ ë¦¡ë¦¢ë¦£ë¦¤ë¦¥ë¦¦ë¦§ë¦¨ë¦©ë¦ªë¦«ë¦®ë¦¯ë¦±ë¦²ë¦³ë¦µë¦¶ë¦·ë¦¸ë¦¹ë¦ºë¦»ë¦¾ë§€ë§‚ë§ƒë§„ë§…ë§†ë§‡ë§Šë§‹ë§�ë§“ë§”ë§•ë§–ë§—ë§šë§œë§Ÿë§ ë§¢ë§¦ë§§ë§©ë§ªë§«ë§ë§®ë§¯ë§°ë§±ë§²ë§³ë§¶ë§»ë§¼ë§½ë§¾ë§¿ë¨‚먃먄먅먆먇먉먊먋먌ë¨�먎ë¨�ë¨�먑먒먓먔먖먗먘먙먚먛먜ë¨�ë¨žë¨Ÿë¨ ë¨¡ë¨¢ë¨£ë¨¤ë¨¥ë¨¦ë¨§ë¨¨ë¨©ë¨ªë¨«ë¨¬ë¨ë¨®ë¨¯ë¨°ë¨±ë¨²ë¨³ë¨´ë¨µë¨¶ë¨·ë¨ºë¨»ë¨½ë¨¾ë¨¿ë©�멃멄멅멆�\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"�����������������������������������������������������������������멇멊멌ë©�ë©�멑멒멖멗멙멚멛ë©�ë©žë©Ÿë© ë©¡ë©¢ë©£ë©¦ë©ªë©«ë©¬ë©ë©®ë©¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë©²ë©³ë©µë©¶ë©·ë©¹ë©ºë©»ë©¼ë©½ë©¾ë©¿ëª€ëª�몂몆몈몉몊몋ëª�몎ëª�ëª�몑몒������몓몔몕몖몗몘몙몚몛몜ëª�ëªžëªŸëª ëª¡ëª¢ëª£ëª¤ëª¥ëª¦ëª§ëªªëªëª®ëª¯ëª±ëª³ëª´ëªµëª¶ëª·ëªºëª¼ëª¾ëª¿ë«€ë«�뫂뫃뫅뫆뫇뫉뫊뫋뫌ë«�뫎ë«�ë«�뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜ë«�ë«žë«Ÿë« ë«¡ë«¢ë«£ë«¤ë«¥ë«¦ë«§ë«¨ë«©ë«ªë««ë«¬ë«ë«®ë«¯ë«°ë«±ë«²ë«³ë«´ë«µë«¶ë«·ë«¸ë«¹ë«ºë«»ë«½ë«¾ë«¿ë¬�묂묃묅묆묇묈묉묊묋묌묎ë¬�묒묓묔묕묖묗묙묚묛ë¬�묞묟묡묢묣묤묥묦묧�\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"�����������������������������������������������������������������묨묪묬ë¬ë¬®ë¬¯ë¬°ë¬±ë¬²ë¬³ë¬·ë¬¹ë¬ºë¬¿ë€ë�ë‚ëƒë†ëˆëŠë‹ëŒëŽë‘ë’������ë“ë•ë–ë—ë™ëšë›ëœë�ëžëŸë ë¢ë¤ë¥ë¦ë§ë¨ë©ëªë«ëë®ë¯ë°ë±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë²ë³ë´ëµë¶ë·ë¸ë¹ëºë»ë¼ë½ë¾ë¿ë®€ë®�뮂뮃뮄뮅뮆뮇뮉뮊뮋ë®�뮎ë®�뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜ë®�ë®žë®Ÿë® ë®¡ë®¢ë®£ë®¥ë®¦ë®§ë®©ë®ªë®«ë®ë®®ë®¯ë®°ë®±ë®²ë®³ë®µë®¶ë®¸ë®¹ë®ºë®»ë®¼ë®½ë®¾ë®¿ë¯�믂믃믅믆믇믉믊믋믌ë¯�믎ë¯�믑믒믔믕믖믗믘믙믚믛믜ë¯�ë¯žë¯Ÿë¯ ë¯¡ë¯¢ë¯£ë¯¤ë¯¥ë¯¦ë¯§ë¯¨ë¯©ë¯ªë¯«ë¯¬ë¯ë¯®ë¯¯ë¯°ë¯±ë¯²ë¯³ë¯´ë¯µë¯¶ë¯·ë¯ºë¯»ë¯½ë¯¾ë°��\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"�����������������������������������������������������������������밃밄밅밆밇밊밎ë°�ë°’ë°“ë°™ë°šë° ë°¡ë°¢ë°£ë°¦ë°¨ë°ªë°«ë°¬ë°®ë°¯ë°²ë°³ë°µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë°¶ë°·ë°¹ë°ºë°»ë°¼ë°½ë°¾ë°¿ë±‚ë±†ë±‡ë±ˆë±Šë±‹ë±Žë±�ë±‘ë±’ë±“ë±”ë±•ë±–ë±—ë±˜ë±™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë±šë±›ë±œë±žë±Ÿë± ë±¡ë±¢ë±£ë±¤ë±¥ë±¦ë±§ë±¨ë±©ë±ªë±«ë±¬ë±ë±®ë±¯ë±°ë±±ë±²ë±³ë±´ë±µë±¶ë±·ë±¸ë±¹ë±ºë±»ë±¼ë±½ë±¾ë±¿ë²€ë²�벂벃벆벇벉벊ë²�ë²�ë²�벑벒벓벖벘벛벜ë²�벞벟벢벣벥벦벩벪벫벬ë²ë²®ë²¯ë²²ë²¶ë²·ë²¸ë²¹ë²ºë²»ë²¾ë²¿ë³�볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖볗볙볚볛ë³�ë³žë³Ÿë³ ë³¡ë³¢ë³£ë³¤ë³¥ë³¦ë³§ë³¨ë³©ë³ªë³«ë³¬ë³ë³®ë³¯ë³°ë³±ë³²ë³³ë³·ë³¹ë³ºë³»ë³½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"�����������������������������������������������������������������볾볿봀ë´�봂봃봆봈봊봋봌ë´�ë´Žë´�봑봒봓봕봖봗봘봙봚봛봜ë´�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë´žë´Ÿë´ ë´¡ë´¢ë´£ë´¥ë´¦ë´§ë´¨ë´©ë´ªë´«ë´ë´®ë´¯ë´°ë´±ë´²ë´³ë´´ë´µë´¶ë´·ë´¸ë´¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë´ºë´»ë´¼ë´½ë´¾ë´¿ëµ�뵂뵃뵄뵅뵆뵇뵊뵋ëµ�뵎ëµ�뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜ëµ�ëµžëµŸëµ ëµ¡ëµ¢ëµ£ëµ¥ëµ¦ëµ§ëµ©ëµªëµ«ëµ¬ëµëµ®ëµ¯ëµ°ëµ±ëµ²ëµ³ëµ´ëµµëµ¶ëµ·ëµ¸ëµ¹ëµºëµ»ëµ¼ëµ½ëµ¾ëµ¿ë¶‚붃붅붆붋붌ë¶�ë¶Žë¶�붒붔붖붗붘붛ë¶�ë¶žë¶Ÿë¶ ë¶¡ë¶¢ë¶£ë¶¥ë¶¦ë¶§ë¶¨ë¶©ë¶ªë¶«ë¶¬ë¶ë¶®ë¶¯ë¶±ë¶²ë¶³ë¶´ë¶µë¶¶ë¶·ë¶¹ë¶ºë¶»ë¶¼ë¶½ë¶¾ë¶¿ë·€ë·�뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌ë·�ë·Žë·�ë·�뷑�\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"�����������������������������������������������������������������뷒뷓뷖뷗뷙뷚뷛ë·�ë·žë·Ÿë· ë·¡ë·¢ë·£ë·¤ë·¥ë·¦ë·§ë·¨ë·ªë·«ë·¬ë·ë·®ë·¯ë·±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë·²ë·³ë·µë·¶ë··ë·¹ë·ºë·»ë·¼ë·½ë·¾ë·¿ë¸�븂븄븆븇븈븉븊븋븎ë¸�ë¸‘ë¸’ë¸“ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë¸•ë¸–ë¸—ë¸˜ë¸™ë¸šë¸›ë¸žë¸ ë¸¡ë¸¢ë¸£ë¸¤ë¸¥ë¸¦ë¸§ë¸¨ë¸©ë¸ªë¸«ë¸¬ë¸ë¸®ë¸¯ë¸°ë¸±ë¸²ë¸³ë¸´ë¸µë¸¶ë¸·ë¸¸ë¸¹ë¸ºë¸»ë¸¼ë¸½ë¸¾ë¸¿ë¹€ë¹�빂빃빆빇빉빊빋ë¹�ë¹�ë¹�빑빒빓빖빘빜ë¹�빞빟빢빣빥빦빧빩빫빬ë¹ë¹®ë¹¯ë¹²ë¹¶ë¹·ë¹¸ë¹¹ë¹ºë¹¾ë¹¿ëº�뺂뺃뺅뺆뺇뺈뺉뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜ëº�ëºžëºŸëº ëº¡ëº¢ëº£ëº¤ëº¥ëº¦ëº§ëº©ëºªëº«ëº¬ëºëº®ëº¯ëº°ëº±ëº²ëº³ëº´ëºµëº¶ëº·ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"�����������������������������������������������������������������뺸뺹뺺뺻뺼뺽뺾뺿뻀ë»�뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌ë»�뻎ë»�뻒뻓������뻕뻖뻙뻚뻛뻜ë»�뻞뻟뻡뻢뻦뻧뻨뻩뻪뻫ë»ë»®ë»¯ë»°ë»±ë»²ë»³ë»´ë»µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë»¶ë»·ë»¸ë»¹ë»ºë»»ë»¼ë»½ë»¾ë»¿ë¼€ë¼‚뼃뼄뼅뼆뼇뼊뼋뼌ë¼�뼎ë¼�ë¼�ë¼‘ë¼’ë¼“ë¼”ë¼•ë¼–ë¼—ë¼šë¼žë¼Ÿë¼ ë¼¡ë¼¢ë¼£ë¼¤ë¼¥ë¼¦ë¼§ë¼¨ë¼©ë¼ªë¼«ë¼¬ë¼ë¼®ë¼¯ë¼°ë¼±ë¼²ë¼³ë¼´ë¼µë¼¶ë¼·ë¼¸ë¼¹ë¼ºë¼»ë¼¼ë¼½ë¼¾ë¼¿ë½‚뽃뽅뽆뽇뽉뽊뽋뽌ë½�뽎ë½�뽒뽓뽔뽖뽗뽘뽙뽚뽛뽜ë½�ë½žë½Ÿë½ ë½¡ë½¢ë½£ë½¤ë½¥ë½¦ë½§ë½¨ë½©ë½ªë½«ë½¬ë½ë½®ë½¯ë½°ë½±ë½²ë½³ë½´ë½µë½¶ë½·ë½¸ë½¹ë½ºë½»ë½¼ë½½ë½¾ë½¿ë¾€ë¾�뾂�\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"�����������������������������������������������������������������뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌ë¾�뾎ë¾�ë¾�뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜ë¾�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë¾žë¾Ÿë¾ ë¾¡ë¾¢ë¾£ë¾¤ë¾¥ë¾¦ë¾§ë¾¨ë¾©ë¾ªë¾«ë¾¬ë¾ë¾®ë¾¯ë¾±ë¾²ë¾³ë¾´ë¾µë¾¶ë¾·ë¾¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë¾¹ë¾ºë¾»ë¾¼ë¾½ë¾¾ë¾¿ë¿€ë¿�뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎ë¿�뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛ë¿�ë¿žë¿ ë¿¢ë¿£ë¿¤ë¿¥ë¿¦ë¿§ë¿¨ë¿©ë¿ªë¿«ë¿¬ë¿ë¿®ë¿¯ë¿°ë¿±ë¿²ë¿³ë¿´ë¿µë¿¶ë¿·ë¿¸ë¿¹ë¿ºë¿»ë¿¼ë¿½ë¿¾ë¿¿ì€€ì€�쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌ì€�쀎ì€�ì€�쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜ì€�ì€žì€Ÿì€ ì€¡ì€¢ì€£ì€¤ì€¥ì€¦ì€§ì€¨ì€©ì€ªì€«ì€¬ì€ì€®ì€¯ì€°ì€±ì€²ì€³ì€´ì€µì€¶ì€·ì€¸ì€¹ì€ºì€»ì€½ì€¾ì€¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"�����������������������������������������������������������������ì�€ì��ì�‚ì�ƒì�„ì�…ì�†ì�‡ì�ˆì�‰ì�Šì�‹ì�Œì��ì�Žì��ì��ì�’ì�“ì�”ì�•ì�–ì�—ì�™ì�šì�›ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì��ì�žì�Ÿì�¡ì�¢ì�£ì�¤ì�¥ì�¦ì�§ì�ªì�«ì�¬ì�ì�®ì�¯ì�°ì�±ì�²ì�³ì�´ì�µì�¶ì�·ì�¸ì�¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì�ºì�»ì�¼ì�½ì�¾ì�¿ì‚€ì‚�삂삃삄삅삆삇삈삉삊삋삌ì‚�삎ì‚�삒삓삕삖삗삙삚삛삜ì‚�삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄샆샇샊샋ìƒ�샎ìƒ�ìƒ‘ìƒ’ìƒ“ìƒ”ìƒ•ìƒ–ìƒ—ìƒšìƒžìƒŸìƒ ìƒ¡ìƒ¢ìƒ£ìƒ¦ìƒ§ìƒ©ìƒªìƒ«ìƒìƒ®ìƒ¯ìƒ°ìƒ±ìƒ²ìƒ³ìƒ¶ìƒ¸ìƒºìƒ»ìƒ¼ìƒ½ìƒ¾ìƒ¿ì„�섂섃섅섆섇섉섊섋섌ì„�섎ì„�섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮�\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"�����������������������������������������������������������������섲섳섴섵섷섺섻섽섾섿ì…�셂셃셄셅셆셇셊셎ì…�ì…�셑셒셓셖셗������셙셚셛ì…�ì…žì…Ÿì… ì…¡ì…¢ì…£ì…¦ì…ªì…«ì…¬ì…셮셯셱셲셳셵셶셷셹셺셻������셼셽셾셿솀ì†�솂솃솄솆솇솈솉솊솋ì†�ì†‘ì†’ì†“ì†•ì†—ì†˜ì†™ì†šì†›ì†žì† ì†¢ì†£ì†¤ì†¦ì†§ì†ªì†«ì†ì†®ì†¯ì†±ì†²ì†³ì†´ì†µì†¶ì†·ì†¸ì†¹ì†ºì†»ì†¼ì†¾ì†¿ì‡€ì‡�쇂쇃쇅쇆쇇쇉쇊쇋ì‡�쇎ì‡�ì‡�쇑쇒쇓쇕쇖쇙쇚쇛쇜ì‡�쇞쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬ì‡ì‡®ì‡¯ì‡²ì‡´ì‡µì‡¶ì‡·ì‡¸ì‡¹ì‡ºì‡»ì‡¾ì‡¿ìˆ�숂숃숅숆숇숈숉숊숋숎ìˆ�숒숓숔숕숖숗숚숛ìˆ�숞숡숢숣�\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"�����������������������������������������������������������������숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀ì‰�쉂쉃쉄쉅������쉆쉇쉉쉊쉋쉌ì‰�쉎ì‰�쉒쉓쉕쉖쉗쉙쉚쉛쉜ì‰�쉞쉟쉡쉢쉣쉤쉦������쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅슆슇슊슋슌ìŠ�슎ìŠ�ìŠ‘ìŠ’ìŠ“ìŠ”ìŠ•ìŠ–ìŠ—ìŠ™ìŠšìŠœìŠžìŠŸìŠ ìŠ¡ìŠ¢ìŠ£ìŠ¦ìŠ§ìŠ©ìŠªìŠ«ìŠ®ìŠ¯ìŠ°ìŠ±ìŠ²ìŠ³ìŠ¶ìŠ¸ìŠºìŠ»ìŠ¼ìŠ½ìŠ¾ìŠ¿ì‹€ì‹�싂싃싄싅싆싇싈싉싊싋싌ì‹�싎ì‹�ì‹�싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿ìŒ�쌂쌃쌄쌅쌆쌇쌊쌋쌎ìŒ��\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"�����������������������������������������������������������������ìŒ�쌑쌒쌖쌗쌙쌚쌛ìŒ�ìŒžìŒŸìŒ ìŒ¡ìŒ¢ìŒ£ìŒ¦ìŒ§ìŒªìŒ«ìŒ¬ìŒìŒ®ìŒ¯ìŒ°ìŒ±ìŒ²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ìŒ³ìŒ´ìŒµìŒ¶ìŒ·ìŒ¸ìŒ¹ìŒºìŒ»ìŒ¼ìŒ½ìŒ¾ìŒ¿ì�€ì��ì�‚ì�ƒì�„ì�†ì�‡ì�ˆì�‰ì�Šì�‹ì�Œì��������ì�Žì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�™ì�šì�›ì�œì��ì�žì�Ÿì� ì�¡ì�¢ì�£ì�¤ì�¥ì�¦ì�§ì�ªì�«ì�ì�®ì�¯ì�±ì�³ì�´ì�µì�¶ì�·ì�ºì�»ì�¾ì�¿ìŽ€ìŽ�쎂쎃쎅쎆쎇쎉쎊쎋ìŽ�쎎ìŽ�ìŽ�쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜ìŽ�ìŽžìŽŸìŽ ìŽ¡ìŽ¢ìŽ£ìŽ¤ìŽ¥ìŽ¦ìŽ§ìŽ¨ìŽ©ìŽªìŽ«ìŽ¬ìŽìŽ®ìŽ¯ìŽ°ìŽ±ìŽ²ìŽ³ìŽ´ìŽµìŽ¶ìŽ·ìŽ¸ìŽ¹ìŽºìŽ»ìŽ¼ìŽ½ìŽ¾ìŽ¿ì��ì�‚ì�ƒì�„ì�…ì�†ì�‡ì�ˆì�‰ì�Šì�‹ì�Œì��ì�Žì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�šï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"�����������������������������������������������������������������ì�›ì��ì�žì�¡ì�£ì�¤ì�¥ì�¦ì�§ì�ªì�«ì�¬ì�®ì�¯ì�°ì�±ì�²ì�³ì�¶ì�·ì�¹ì�ºì�»ì�¼ì�½ì�¾ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì�¿ì�€ì��ì�‚ì�ƒì�„ì�…ì�†ì�‡ì�‰ì�Šì�‹ì�Œì��ì�Žì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�™ì�šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì�›ì�œì��ì�žì�Ÿì� ì�¡ì�¢ì�£ì�¥ì�¦ì�§ì�¨ì�©ì�ªì�«ì�ì�®ì�¯ì�±ì�²ì�³ì�µì�¶ì�·ì�¸ì�¹ì�ºì�»ì�¾ì�¿ì‘€ì‘�쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌ì‘�쑎ì‘�ì‘�쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜ì‘�ì‘žì‘Ÿì‘ ì‘¡ì‘¢ì‘£ì‘¦ì‘§ì‘©ì‘ªì‘«ì‘쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿ì’�쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌ì’�ì’Žì’�ì’�쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛ì’�ì’žì’Ÿì’ ì’¡ì’¢ì’£ì’¤ì’¥ì’¦ì’§ì’¨ì’©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"�����������������������������������������������������������������쒪쒫쒬ì’쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀ì“�쓂쓃쓄쓅������쓆쓇쓈쓉쓊쓋쓌ì“�쓎ì“�ì“�쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜ì“�ì“žì“Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì“ ì“¡ì“¢ì“£ì“¤ì“¥ì“¦ì“§ì“¨ì“ªì“«ì“¬ì“쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋ì”�씎ì”�씑씒씓씕씖씗씘씙씚씛ì”�ì”žì”Ÿì” ì”¡ì”¢ì”£ì”¤ì”¥ì”¦ì”§ì”ªì”«ì”씮씯씱씲씳씴씵씶씷씺씼씾씿앀ì•�앂앃앆앇앋ì•�ì•�앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬ì•앮앯앲앶앷앸앹앺앻앾앿ì–�얂얃얅얆얈얉얊얋얎ì–�얒얓얔�\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"�����������������������������������������������������������������얖얙얚얛ì–�얞얟얡얢얣얤얥얦얧얨얪얫얬ì–얮얯얰얱얲얳얶������얷얺얿엀ì—�엂엃엋ì—�ì—�엒엓엕엖엗엙엚엛엜ì—�엞엟엢엤엦엧������엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋ì˜�옎ì˜�옑옒옓옔옕옖옗옚ì˜�ì˜žì˜Ÿì˜ ì˜¡ì˜¢ì˜£ì˜¦ì˜§ì˜©ì˜ªì˜«ì˜¯ì˜±ì˜²ì˜¶ì˜¸ì˜ºì˜¼ì˜½ì˜¾ì˜¿ì™‚ì™ƒì™…ì™†ì™‡ì™‰ì™Šì™‹ì™Œì™�왎ì™�왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫ì™ì™®ì™°ì™²ì™³ì™´ì™µì™¶ì™·ì™ºì™»ì™½ì™¾ì™¿ìš�욂욃욄욅욆욇욊욌욎ìš�ìš�욑욒욓욖욗욙욚욛ìš�ìšžìšŸìš ìš¡ìš¢ìš£ìš¦ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"�����������������������������������������������������������������욨욪욫욬ìšìš®ìš¯ìš²ìš³ìšµìš¶ìš·ìš»ìš¼ìš½ìš¾ìš¿ì›‚웄웆웇웈웉웊웋웎������ì›�웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫ì›ì›®ì›¯ì›±ì›²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì›³ì›´ì›µì›¶ì›·ì›ºì›»ì›¼ì›¾ì›¿ìœ€ìœ�윂윃윆윇윉윊윋ìœ�윎ìœ�ìœ�윑윒윓윖윘윚윛윜ìœ�윞윟윢윣윥윦윧윩윪윫윬ìœìœ®ìœ¯ìœ²ìœ´ìœ¶ìœ¸ìœ¹ìœºìœ»ìœ¾ìœ¿ì��ì�‚ì�ƒì�…ì�†ì�‡ì�ˆì�‰ì�‹ì�Žì��ì�™ì�šì�›ì��ì�žì�Ÿì�¡ì�¢ì�£ì�¤ì�¥ì�¦ì�§ì�©ì�ªì�¬ì�ì�®ì�¯ì�°ì�±ì�²ì�³ì�¶ì�·ì�¹ì�ºì�»ì�¿ìž€ìž�잂잆잋잌ìž�ìž�잒잓잕잙잛잜ìž�잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷�\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"�����������������������������������������������������������������잸잹잺잻잾쟂쟃쟄쟅쟆쟇쟊쟋ìŸ�ìŸ�ìŸ‘ìŸ’ìŸ“ìŸ”ìŸ•ìŸ–ìŸ—ìŸ™ìŸšìŸ›ìŸœï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ìŸžìŸŸìŸ ìŸ¡ìŸ¢ìŸ£ìŸ¥ìŸ¦ìŸ§ìŸ©ìŸªìŸ«ìŸìŸ®ìŸ¯ìŸ°ìŸ±ìŸ²ìŸ³ìŸ´ìŸµìŸ¶ìŸ·ìŸ¸ìŸ¹ìŸºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ìŸ»ìŸ¼ìŸ½ìŸ¾ìŸ¿ì ‚ì ƒì …ì †ì ‡ì ‰ì ‹ì Œì �ì Žì �ì ’ì ”ì —ì ˜ì ™ì šì ›ì žì Ÿì ¡ì ¢ì £ì ¥ì ¦ì §ì ¨ì ©ì ªì «ì ®ì °ì ²ì ³ì ´ì µì ¶ì ·ì ¹ì ºì »ì ½ì ¾ì ¿ì¡�졂졃졄졅졆졇졊졋졎ì¡�ì¡�졑졒졓졕졖졗졘졙졚졛졜ì¡�ì¡žì¡Ÿì¡ ì¡¡ì¡¢ì¡£ì¡¤ì¡¥ì¡¦ì¡§ì¡¨ì¡©ì¡ªì¡«ì¡¬ì¡ì¡®ì¡¯ì¡²ì¡³ì¡µì¡¶ì¡·ì¡¹ì¡»ì¡¼ì¡½ì¡¾ì¡¿ì¢‚좄좈좉좊좎ì¢�ì¢�ì¢‘ì¢’ì¢“ì¢•ì¢–ì¢—ì¢˜ì¢™ì¢šì¢›ì¢œì¢žì¢ ì¢¢ì¢£ì¢¤ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"�����������������������������������������������������������������좥좦좧좩좪좫좬ì¢ì¢®ì¢¯ì¢°ì¢±ì¢²ì¢³ì¢´ì¢µì¢¶ì¢·ì¢¸ì¢¹ì¢ºì¢»ì¢¾ì¢¿ì£€ì£�������죂죃죅죆죇죉죊죋ì£�죎ì£�ì£�죑죒죓죖죘죚죛죜ì£�죞죟죢죣죥������죦죧죨죩죪죫죬ì£ì£®ì£¯ì£°ì£±ì£²ì£³ì£´ì£¶ì£·ì£¸ì£¹ì£ºì£»ì£¾ì£¿ì¤�줂줃줇줈줉줊줋줎 ã€�。·‥…¨〃Â―∥\∼‘’“â€�〔〕〈〉《》「ã€�『ã€�ã€�ã€‘Â±Ã—Ã·â‰ â‰¤â‰¥âˆžâˆ´Â°â€²â€³â„ƒâ„«ï¿ ï¿¡ï¿¥â™‚â™€âˆ âŠ¥âŒ’âˆ‚âˆ‡â‰¡â‰’Â§â€»â˜†â˜…â—‹â—�◎◇◆□■△▲▽▼→â†�↑↓↔〓≪≫√∽âˆ�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������ì¤�줒줓줔줕줖줗줙줚줛줜ì¤�ì¤žì¤Ÿì¤ ì¤¡ì¤¢ì¤£ì¤¤ì¤¥ì¤¦ì¤§ì¤¨ì¤©ì¤ªì¤«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¤ì¤®ì¤¯ì¤°ì¤±ì¤²ì¤³ì¤µì¤¶ì¤·ì¤¸ì¤¹ì¤ºì¤»ì¤¼ì¤½ì¤¾ì¤¿ì¥€ì¥�쥂쥃쥄쥅쥆쥇������쥈쥉쥊쥋쥌ì¥�쥎ì¥�쥒쥓쥕쥖쥗쥙쥚쥛쥜ì¥�쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫ì¥ì¥®ì¥¯â‡’⇔∀∃´~ˇ˘Ë�˚˙¸˛¡¿Ë�∮∑âˆ�¤℉‰â—�◀▷▶♤♠♡♥♧♣⊙◈▣â—�◑▒▤▥▨▧▦▩♨â˜�☎☜☞¶†‡↕↗↙↖↘â™â™©â™ªâ™¬ã‰¿ãˆœâ„–ã�‡â„¢ã�‚ã�˜â„¡â‚¬Â®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽쥾쥿즀ì¦�즂즃즄즅즆즇즊즋ì¦�즎ì¦�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¦‘ì¦’ì¦“ì¦”ì¦•ì¦–ì¦—ì¦šì¦œì¦žì¦Ÿì¦ ì¦¡ì¦¢ì¦£ì¦¤ì¦¥ì¦¦ì¦§ì¦¨ì¦©ì¦ªì¦«ì¦¬ì¦ì¦®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¦¯ì¦°ì¦±ì¦²ì¦³ì¦´ì¦µì¦¶ì¦·ì¦¸ì¦¹ì¦ºì¦»ì¦¼ì¦½ì¦¾ì¦¿ì§‚짃짅짆짉짋짌ì§�ì§Žì§�짒짔짗짘짛ï¼�"#$%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¿¦ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������짞짟짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿ì¨�쨂쨃쨄������쨅쨆쨇쨊쨎ì¨�ì¨�쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜ì¨�ì¨žì¨Ÿì¨ ì¨¡ì¨¢ì¨£ì¨¤ì¨¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¨¦ì¨§ì¨¨ì¨ªì¨«ì¨¬ì¨ì¨®ì¨¯ì¨°ì¨±ì¨²ì¨³ì¨´ì¨µì¨¶ì¨·ì¨¸ì¨¹ì¨ºì¨»ì¨¼ì¨½ì¨¾ì¨¿ì©€ì©�쩂쩃쩄쩅쩆ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀã…�ㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌã…�ã…Žã…�ã…�ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜã…�ã…žã…Ÿã… ã…¡ã…¢ã…£ã…¤ã…¥ã…¦ã…§ã…¨ã…©ã…ªã…«ã…¬ã…ㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀã†�ㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌã†�ㆎ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������쩇쩈쩉쩊쩋쩎ì©�쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞쩢쩣쩤쩥쩦쩧쩩쩪������쩫쩬ì©ì©®ì©¯ì©°ì©±ì©²ì©³ì©´ì©µì©¶ì©·ì©¸ì©¹ì©ºì©»ì©¼ì©¾ì©¿ìª€ìª�쪂쪃쪅쪆������쪇쪈쪉쪊쪋쪌ìª�쪎ìª�ìª�쪑쪒쪓쪔쪕쪖쪗쪙쪚쪛쪜ìª�ìªžìªŸìª ìª¡ìª¢ìª£ìª¤ìª¥ìª¦ìª§â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ï¿½ï¿½ï¿½ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������쪨쪩쪪쪫쪬ìªìª®ìª¯ìª°ìª±ìª²ìª³ìª´ìªµìª¶ìª·ìª¸ìª¹ìªºìª»ìª¾ìª¿ì«�쫂쫃쫅������쫆쫇쫈쫉쫊쫋쫎ì«�쫒쫔쫕쫖쫗쫚쫛쫜ì«�쫞쫟쫡쫢쫣쫤쫥쫦쫧������쫨쫩쫪쫫ì«ì«®ì«¯ì«°ì«±ì«²ì«³ì«µì«¶ì«·ì«¸ì«¹ì«ºì«»ì«¼ì«½ì«¾ì«¿ì¬€ì¬�쬂쬃쬄쬅쬆쬇쬉쬊─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂┒┑┚┙┖┕┎â”�┞┟┡┢┦┧┩┪â”┮┱┲┵┶┹┺┽┾╀â•�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������쬋쬌ì¬�쬎ì¬�쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜ì¬�쬞쬟쬢쬣쬤쬥쬦쬧쬨쬩������쬪쬫쬬ì¬ì¬®ì¬¯ì¬°ì¬±ì¬²ì¬³ì¬´ì¬µì¬¶ì¬·ì¬¸ì¬¹ì¬ºì¬»ì¬¼ì¬½ì¬¾ì¬¿ì€ì‚ìƒì„������ì…ì†ì‡ìŠì‹ì�ìŽì�ì‘ì’ì“ì”ì•ì–ì—ìšì›ìœìžìŸì ì¡ì¢ì£ì¥ì¦ì§ì¨ì©ìªì«ì¬ãŽ•ãŽ–ãŽ—â„“ãŽ˜ã�„㎣㎤㎥㎦㎙㎚㎛㎜ãŽ�㎞㎟㎠㎡㎢ã�ŠãŽ�㎎ãŽ�ã��㎈㎉ã�ˆãŽ§ãŽ¨ãŽ°ãŽ±ãŽ²ãŽ³ãŽ´ãŽµãŽ¶ãŽ·ãŽ¸ãŽ¹ãŽ€ãŽ�㎂㎃㎄㎺㎻㎼㎽㎾㎿ãŽ�㎑㎒㎓㎔Ωã�€ã��㎊㎋㎌ã�–ã�…ãŽãŽ®ãŽ¯ã�›ãŽ©ãŽªãŽ«ãŽ¬ã��ã��ã�“ã�ƒã�‰ã�œã�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������ìì®ì¯ì°ì±ì²ì³ì´ìµì¶ì·ìºì»ì¼ì½ì¾ì¿ì®€ì®�쮂쮃쮄쮅쮆쮇쮈������쮉쮊쮋쮌ì®�쮎ì®�ì®�쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛ì®�ì®žì®Ÿì® ì®¡ì®¢ì®£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì®¤ì®¥ì®¦ì®§ì®¨ì®©ì®ªì®«ì®¬ì®ì®®ì®¯ì®°ì®±ì®²ì®³ì®´ì®µì®¶ì®·ì®¹ì®ºì®»ì®¼ì®½ì®¾ì®¿ì¯€ì¯�쯂쯃쯄ÆÃ�ªĦ�IJ�ĿÅ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬ã‰ã‰®ã‰¯ã‰°ã‰±ã‰²ã‰³ã‰´ã‰µã‰¶ã‰·ã‰¸ã‰¹ã‰ºã‰»â“�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜâ“�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬â‘⑮½⅓⅔¼¾⅛⅜â…�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������쯅쯆쯇쯈쯉쯊쯋쯌ì¯�쯎ì¯�ì¯�쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜ì¯�ì¯žì¯Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¯ ì¯¡ì¯¢ì¯£ì¯¥ì¯¦ì¯¨ì¯ªì¯«ì¯¬ì¯ì¯®ì¯¯ì¯°ì¯±ì¯²ì¯³ì¯´ì¯µì¯¶ì¯·ì¯¸ì¯¹ì¯ºì¯»ì¯¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¯½ì¯¾ì¯¿ì°€ì°�찂찃찄찅찆찇찈찉찊찋찎ì°�ì°‘ì°’ì°“ì°•ì°–ì°—ì°˜ì°™ì°šì°›ì°žì°Ÿì° ì°£ì°¤Ã¦Ä‘Ã°Ä§Ä±Ä³Ä¸Å€Å‚Ã¸Å“ÃŸÃ¾Å§Å‹Å‰ãˆ€ãˆ�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌ãˆ�㈎ãˆ�ãˆ�㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜â’�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬â’⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂¹²³â�´â�¿â‚�₂₃₄�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"�����������������������������������������������������������������찥찦찪찫ì°ì°¯ì°±ì°²ì°³ì°´ì°µì°¶ì°·ì°ºì°¿ì±€ì±�챂챃챆챇챉챊챋ì±�챎������ì±�ì±�챑챒챓챖챚챛챜ì±�챞챟챡챢챣챥챧챩챪챫챬ì±ì±®ì±¯ì±±ì±²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì±³ì±´ì±¶ì±·ì±¸ì±¹ì±ºì±»ì±¼ì±½ì±¾ì±¿ì²€ì²�첂첃첄첅첆첇첈첉첊첋첌ì²�첎ì²�ì²�첑첒첓ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������첔첕첖첗첚첛ì²�첞첟첡첢첣첤첥첦첧첪첮첯첰첱첲첳첶첷첹������첺첻첽첾첿쳀ì³�쳂쳃쳆쳈쳊쳋쳌ì³�쳎ì³�쳑쳒쳓쳕쳖쳗쳘쳙쳚������쳛쳜ì³�ì³žì³Ÿì³ ì³¡ì³¢ì³£ì³¥ì³¦ì³§ì³¨ì³©ì³ªì³«ì³ì³®ì³¯ì³±ì³²ì³³ì³´ì³µì³¶ì³·ì³¸ì³¹ì³ºì³»ì³¼ì³½ã‚¡ã‚¢ã‚£ã‚¤ã‚¥ã‚¦ã‚§ã‚¨ã‚©ã‚ªã‚«ã‚¬ã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"�����������������������������������������������������������������쳾쳿촀촂촃촄촅촆촇촊촋ì´�ì´Žì´�ì´‘ì´’ì´“ì´”ì´•ì´–ì´—ì´šì´œì´žì´Ÿì´ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì´¡ì´¢ì´£ì´¥ì´¦ì´§ì´©ì´ªì´«ì´ì´®ì´¯ì´°ì´±ì´²ì´³ì´´ì´µì´¶ì´·ì´¸ì´ºì´»ì´¼ì´½ì´¾ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì´¿ìµ€ìµ�쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌ìµ�쵎ìµ�ìµ�쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛ìµ�쵞쵟Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"�����������������������������������������������������������������쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻쵼쵽쵾쵿춀������ì¶�춂춃춄춅춆춇춉춊춋춌ì¶�ì¶Žì¶�ì¶�춑춒춓춖춗춙춚춛ì¶�ì¶žì¶Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¶ ì¶¡ì¶¢ì¶£ì¶¦ì¶¨ì¶ªì¶«ì¶¬ì¶ì¶®ì¶¯ì¶±ì¶²ì¶³ì¶´ì¶µì¶¶ì¶·ì¶¸ì¶¹ì¶ºì¶»ì¶¼ì¶½ì¶¾ì¶¿ì·€ì·�췂췃췅�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"�����������������������������������������������������������������췆췇췈췉췊췋ì·�ì·Žì·�췑췒췓췔췕췖췗췘췙췚췛췜ì·�ì·žì·Ÿì· ì·¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì·¢ì·£ì·¤ì·¥ì·¦ì·§ì·©ì·ªì·«ì·ì·®ì·¯ì·±ì·²ì·³ì·´ì·µì·¶ì··ì·ºì·¼ì·¾ì·¿ì¸€ì¸�츂������츃츅츆츇츉츊츋ì¸�츎ì¸�ì¸�츑츒츓츕츖츗츘츚츛츜ì¸�츞츟츢츣츥츦츧츩츪츫�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"�����������������������������������������������������������������츬ì¸ì¸®ì¸¯ì¸²ì¸´ì¸¶ì¸·ì¸¸ì¸¹ì¸ºì¸»ì¸¼ì¸½ì¸¾ì¸¿ì¹€ì¹�칂칃칄칅칆칇칈칉������칊칋칌ì¹�칎ì¹�ì¹�칑칒칓칔칕칖칗칚칛ì¹�칞칢칣칤칥칦칧칪칬������칮칯칰칱칲칳칶칷칹칺칻칽칾칿캀ìº�캂캃캆캈캊캋캌ìº�캎ìº�캒캓캕캖캗캙�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"�����������������������������������������������������������������캚캛캜ìº�캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳캴캵캶캷캸캹캺������캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌ì»�컎ì»�ì»�컑컒컓컔컕������컖컗컘컙컚컛컜ì»�ì»žì»Ÿì» ì»¡ì»¢ì»£ì»¦ì»§ì»©ì»ªì»ì»®ì»¯ì»°ì»±ì»²ì»³ì»¶ì»ºì»»ì»¼ì»½ì»¾ì»¿ê°€ê°�간갇갈갉갊ê°�갑값갓갔강갖갗같갚갛개ê°�ê° ê°¤ê°¬ê°ê°¯ê°°ê°±ê°¸ê°¹ê°¼ê±€ê±‹ê±�걔걘걜거걱건걷걸걺검ê²�것겄겅겆겉겊겋게ê²�겔겜ê²�ê²Ÿê² ê²¡ê²¨ê²©ê²ªê²¬ê²¯ê²°ê²¸ê²¹ê²»ê²¼ê²½ê³�ê³„ê³ˆê³Œê³•ê³—ê³ ê³¡ê³¤ê³§ê³¨ê³ªê³¬ê³¯ê³°ê³±ê³³ê³µê³¶ê³¼ê³½ê´€ê´„ê´†ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������켂켃켅켆켇켉켊켋켌ì¼�켎ì¼�켒켔켖켗켘켙켚켛ì¼�켞켟켡켢켣������켥켦켧켨켩켪켫켮켲켳켴켵켶켷켹켺켻켼켽켾켿콀ì½�콂콃콄������콅콆콇콈콉콊콋콌ì½�콎ì½�ì½�콑콒콓콖콗콙콚콛ì½�ì½žì½Ÿì½ ì½¡ì½¢ì½£ì½¦ì½¨ì½ªì½«ì½¬ê´Œê´�ê´�ê´‘ê´˜ê´œê´ ê´©ê´¬ê´ê´´ê´µê´¸ê´¼êµ„굅굇굉êµ�굔굘굡굣구êµêµ°êµ³êµ´êµµêµ¶êµ»êµ¼êµ½êµ¿ê¶�궂궈궉권ê¶�ê¶œê¶�궤궷귀ê·�ê·„ê·ˆê·�ê·‘ê·“ê·œê· ê·¤ê·¸ê·¹ê·¼ê·¿ê¸€ê¸�금급긋ê¸�긔기긱긴긷길긺김ê¹�깃깅깆깊까ê¹�깎ê¹�깔깖깜ê¹�ê¹Ÿê¹ ê¹¡ê¹¥ê¹¨ê¹©ê¹¬ê¹°ê¹¸ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������ì½ì½®ì½¯ì½²ì½³ì½µì½¶ì½·ì½¹ì½ºì½»ì½¼ì½½ì½¾ì½¿ì¾�쾂쾃쾄쾆쾇쾈쾉쾊쾋ì¾�������쾎ì¾�ì¾�쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜ì¾�ì¾žì¾Ÿì¾ ì¾¢ì¾£ì¾¤ì¾¥ì¾¦ì¾§ì¾©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¾ªì¾«ì¾¬ì¾ì¾®ì¾¯ì¾±ì¾²ì¾³ì¾´ì¾µì¾¶ì¾·ì¾¸ì¾¹ì¾ºì¾»ì¾¼ì¾½ì¾¾ì¾¿ì¿€ì¿�쿂쿃쿅쿆쿇쿈쿉쿊쿋깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌ê»�ê»�ê»�껑께껙껜껨껫ê»ê»´ê»¸ê»¼ê¼‡ê¼ˆê¼�ê¼�꼬ê¼ê¼°ê¼²ê¼´ê¼¼ê¼½ê¼¿ê½�꽂꽃꽈꽉ê½�꽜ê½�꽤꽥꽹꾀꾄꾈ê¾�꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋ê¿�꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀ë€�뀄뀌ë€�뀔뀜ë€�뀨ë�„ë�…ë�ˆë�Šë�Œë�Žë�“ë�”ë�•ë�—ë�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������쿌ì¿�쿎ì¿�ì¿�쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜ì¿�쿞쿟쿢쿣쿥쿦쿧쿩������쿪쿫쿬ì¿ì¿®ì¿¯ì¿²ì¿´ì¿¶ì¿·ì¿¸ì¿¹ì¿ºì¿»ì¿½ì¿¾ì¿¿í€�퀂퀃퀅퀆퀇퀈퀉퀊������퀋퀌í€�퀎í€�í€�퀒퀓퀔퀕퀖퀗퀙퀚퀛퀜í€�í€ží€Ÿí€ í€¡í€¢í€£í€¤í€¥í€¦í€§í€¨í€©í€ªí€«í€¬ë��ë�¼ë�½ë‚€ë‚„낌ë‚�ë‚�ë‚‘ë‚˜ë‚™ë‚šë‚œë‚Ÿë‚ ë‚¡ë‚¢ë‚¨ë‚©ë‚«ë‚¬ë‚낮낯낱낳내낵낸낼냄냅냇냈냉ëƒ�ëƒ‘ëƒ”ëƒ˜ëƒ ëƒ¥ë„ˆë„‰ë„‹ë„Œë„�넒넓넘넙넛넜ë„�넣네넥넨넬넴넵넷넸넹녀ë…�ë…„ë…ˆë…�ë…‘ë…”ë…•ë…˜ë…œë… ë…¸ë…¹ë…¼ë†€ë†‚ë†ˆë†‰ë†‹ë†�높놓놔놘놜놨뇌ë‡�뇔뇜ë‡��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������퀮퀯퀰퀱퀲퀳퀶퀷퀹퀺퀻퀽퀾퀿í�€í��í�‚í�ƒí�†í�ˆí�Ší�‹í�Œí��í�Ží��������í�‘í�’í�“í�•í�–í�—í�™í�ší�›í�œí��í�ží�Ÿí�¡í�¢í�£í�¤í�¥í�¦í�§í�¨í�©í�ªí�«í�®í�¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í�±í�²í�³í�µí�¶í�·í�¸í�¹í�ºí�»í�¾í�¿í‚€í‚‚킃킄킅킆킇킈킉킊킋킌í‚�킎í‚�í‚�í‚‘í‚’í‚“í‚”ë‡Ÿë‡¨ë‡©ë‡¬ë‡°ë‡¹ë‡»ë‡½ëˆ„ëˆ…ëˆˆëˆ‹ëˆŒëˆ”ëˆ•ëˆ—ëˆ™ëˆ ëˆ´ëˆ¼ë‰˜ë‰œë‰ ë‰¨ë‰©ë‰´ë‰µë‰¼ëŠ„ëŠ…ëŠ‰ëŠ�ëŠ‘ëŠ”ëŠ˜ëŠ™ëŠšëŠ ëŠ¡ëŠ£ëŠ¥ëŠ¦ëŠªëŠ¬ëŠ°ëŠ´ë‹ˆë‹‰ë‹Œë‹�닒님닙닛ë‹�닢다닥닦단닫달ë‹ë‹®ë‹¯ë‹³ë‹´ë‹µë‹·ë‹¸ë‹¹ë‹ºë‹»ë‹¿ëŒ€ëŒ�댄댈ëŒ�댑댓댔댕댜ë�”ë�•ë�–ë�˜ë�›ë�œë�žë�Ÿë�¤ë�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������킕킖킗킘킙킚킛킜í‚�í‚ží‚Ÿí‚ í‚¡í‚¢í‚£í‚¦í‚§í‚©í‚ªí‚«í‚킮킯킰킱킲������킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌íƒ�탎íƒ�탒탖탗탘탙탚������탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺탻탼탽탾탿턀í„�턂턃턄ë�§ë�©ë�«ë�®ë�°ë�±ë�´ë�¸ëŽ€ëŽ�뎃뎄뎅뎌ëŽ�ëŽ”ëŽ ëŽ¡ëŽ¨ëŽ¬ë�„ë�…ë�ˆë�‹ë�Œë�Žë��ë�”ë�•ë�—ë�™ë�›ë��ë� ë�¤ë�¨ë�¼ë��ë�˜ë�œë� ë�¨ë�©ë�«ë�´ë‘�ë‘‘ë‘”ë‘˜ë‘ ë‘¡ë‘£ë‘¥ë‘¬ë’€ë’ˆë’�뒤뒨뒬뒵뒷뒹듀듄듈ë“�듕드ë“�ë“ ë“£ë“¤ë“¦ë“¬ë“듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������턅턆턇턈턉턊턋턌턎í„�í„�턑턒턓턔턕턖턗턘턙턚턛턜í„�í„ží„Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í„ í„¡í„¢í„£í„¤í„¥í„¦í„§í„¨í„©í„ªí„«í„¬í„턮턯턲턳턵턶턷턹턻턼턽턾������턿텂텆텇텈텉텊텋텎í…�í…‘í…’í…“í…•í…–í…—í…˜í…™í…ší…›í…ží… í…¢í…£í…¤í…¥í…¦í…§í…©í…ªí…«í…ë•€ë•�땃땄땅땋때ë•�ë•�땔땜ë•�ë•Ÿë• ë•¡ë– ë–¡ë–¤ë–¨ë–ªë–«ë–°ë–±ë–³ë–´ë–µë–»ë–¼ë–½ë—€ë—„ë—Œë—�ë—�ë—�뗑뗘뗬ë˜�똑똔똘똥똬똴뙈뙤뙨뚜ëš�ëš ëš¤ëš«ëš¬ëš±ë›”ë›°ë›´ë›¸ëœ€ëœ�뜅뜨뜩뜬뜯뜰뜸뜹뜻ë�„ë�ˆë�Œë�”ë�•ë� ë�¤ë�¨ë�°ë�±ë�³ë�µë�¼ë�½ëž€ëž„람ëž�ëž�ëž�랑랒랖랗�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������텮텯텰텱텲텳텴텵텶텷텸텹텺텻텽텾텿톀í†�톂톃톅톆톇톉톊������톋톌í†�톎í†�í†�톑톒톓톔톕톖톗톘톙톚톛톜í†�톞톟톢톣톥톦톧������톩톪톫톬í†í†®í†¯í†²í†´í†¶í†·í†¸í†¹í†»í†½í†¾í†¿í‡�퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌í‡�퇎í‡�ëž˜ëž™ëžœëž ëž¨ëž©ëž«ëž¬ëžëž´ëžµëž¸ëŸ‡ëŸ‰ëŸ¬ëŸëŸ°ëŸ´ëŸ¼ëŸ½ëŸ¿ë €ë �ë ‡ë ˆë ‰ë Œë �ë ˜ë ™ë ›ë �ë ¤ë ¥ë ¨ë ¬ë ´ë µë ·ë ¸ë ¹ë¡€ë¡„ë¡‘ë¡“ë¡œë¡�ë¡ ë¡¤ë¡¬ë¡ë¡¯ë¡±ë¡¸ë¡¼ë¢�뢨뢰뢴뢸룀ë£�룃룅료ë£�룔ë£�ë£Ÿë£¡ë£¨ë£©ë£¬ë£°ë£¸ë£¹ë£»ë£½ë¤„ë¤˜ë¤ ë¤¼ë¤½ë¥€ë¥„ë¥Œë¥�ë¥‘ë¥˜ë¥™ë¥œë¥ ë¥¨ë¥©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������í‡�퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜í‡�í‡ží‡Ÿí‡ í‡¡í‡¢í‡£í‡¤í‡¥í‡¦í‡§í‡¨í‡©í‡ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í‡«í‡¬í‡í‡®í‡¯í‡°í‡±í‡²í‡³í‡µí‡¶í‡·í‡¹í‡ºí‡»í‡¼í‡½í‡¾í‡¿íˆ€íˆ�툂툃툄툅툆������툈툊툋툌íˆ�툎íˆ�툑툒툓툔툕툖툗툘툙툚툛툜íˆ�íˆžíˆŸíˆ íˆ¡íˆ¢íˆ£íˆ¤íˆ¥íˆ¦íˆ§íˆ¨íˆ©ë¥«ë¥ë¥´ë¥µë¥¸ë¥¼ë¦„릅릇릉릊ë¦�릎리ë¦ë¦°ë¦´ë¦¼ë¦½ë¦¿ë§�마막만많ë§�ë§�맑맒맘맙맛ë§�맞맡맣매맥맨맬맴맵맷맸맹맺먀ë¨�먈먕머먹먼멀멂멈멉멋ë©�멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������툪툫툮툯툱툲툳툵툶툷툸툹툺툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌������í‰�퉎í‰�í‰�퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛í‰�í‰ží‰Ÿí‰ í‰¡í‰¢í‰£í‰¥í‰¦í‰§í‰¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í‰©í‰ªí‰«í‰¬í‰í‰®í‰¯í‰°í‰±í‰²í‰³í‰´í‰µí‰¶í‰·í‰¸í‰¹í‰ºí‰»í‰¼í‰½í‰¾í‰¿íŠ‚íŠƒíŠ…íŠ†íŠ‡íŠ‰íŠŠíŠ‹íŠŒë¬€ë¬„ë¬�ë¬�ë¬‘ë¬˜ë¬œë¬ ë¬©ë¬«ë¬´ë¬µë¬¶ë¬¸ë¬»ë¬¼ë¬½ë¬¾ë„ë…ë‡ë‰ë�ë�ë�ë”ë˜ë¡ë£ë¬ë®ˆë®Œë®�뮤뮨뮬뮴뮷므믄믈ë¯�믓미믹민믿밀밂밈밉밋밌ë°�ë°�밑바박밖밗반받발ë°�밞밟밤밥밧방ë°ë°°ë°±ë°´ë°¸ë±€ë±�뱃뱄뱅뱉뱌ë±�ë±�ë±�버벅번벋벌벎범법벗�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������íŠ�튎íŠ�튒튓튔튖튗튘튙튚튛íŠ�튞튟튡튢튣튥튦튧튨튩튪튫íŠï¿½ï¿½ï¿½ï¿½ï¿½ï¿½íŠ®íŠ¯íŠ°íŠ²íŠ³íŠ´íŠµíŠ¶íŠ·íŠºíŠ»íŠ½íŠ¾í‹�틃틄틅틆틇틊틌í‹�틎í‹�í‹�틑������틒틓틕틖틗틙틚틛í‹�í‹ží‹Ÿí‹ í‹¡í‹¢í‹£í‹¦í‹§í‹¨í‹©í‹ªí‹«í‹¬í‹í‹®í‹¯í‹²í‹³í‹µí‹¶í‹·í‹¹í‹ºë²™ë²šë² 벡벤벧벨벰벱벳벴벵벼벽변별ë³�ë³�ë³�병볕볘볜보복볶본볼봄봅봇봉ë´�봔봤봬뵀뵈뵉뵌ëµ�뵘뵙뵤뵨부ë¶�분붇불붉붊ë¶�붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브ë¸�ë¸�블븜ë¸�ë¸Ÿë¹„ë¹…ë¹ˆë¹Œë¹Žë¹”ë¹•ë¹—ë¹™ë¹šë¹›ë¹ ë¹¡ë¹¤ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������틻틼틽틾틿팂팄팆팇팈팉팊팋íŒ�팑팒팓팕팗팘팙팚팛팞팢팣������팤팦팧팪팫íŒíŒ®íŒ¯íŒ±íŒ²íŒ³íŒ´íŒµíŒ¶íŒ·íŒºíŒ¾íŒ¿í�€í��í�‚í�ƒí�†í�‡í�ˆí�‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í�Ší�‹í�Œí��í�Ží��í��í�‘í�’í�“í�”í�•í�–í�—í�˜í�™í�ší�›í�œí��í�ží�Ÿí� í�¡í�¢í�£í�¤í�¥í�¦í�§í�¨í�©ë¹¨ë¹ªë¹°ë¹±ë¹³ë¹´ë¹µë¹»ë¹¼ë¹½ëº€ëº„뺌ëº�ëº�ëº�뺑뺘뺙뺨ë»�ë»‘ë»”ë»—ë»˜ë» ë»£ë»¤ë»¥ë»¬ë¼�뼈뼉뼘뼙뼛뼜ë¼�ë½€ë½�뽄뽈ë½�뽑뽕뾔뾰뿅뿌ë¿�ë¿�뿔뿜뿟뿡쀼ì�‘ì�˜ì�œì� ì�¨ì�©ì‚�ì‚‘ì‚”ì‚˜ì‚ ì‚¡ì‚£ì‚¥ì‚¬ì‚삯산삳살삵삶삼삽삿샀ìƒ�샅새색샌ìƒ�샘샙샛샜ìƒ�샤�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������í�ªí�«í�¬í�í�®í�¯í�°í�±í�²í�³í�´í�µí�¶í�·í�¸í�¹í�ºí�»í�¾í�¿íŽ�펂펃펅펆펇������펈펉펊펋펎펒펓펔펕펖펗펚펛íŽ�펞펟펡펢펣펤펥펦펧펪펬펮������펯펰펱펲펳펵펶펷펹펺펻펽펾펿í�€í��í�‚í�ƒí�†í�‡í�Ší�‹í�Œí��í�Ží��í�‘í�’í�“í�”í�•í�–샥샨샬샴샵샷샹섀섄섈ì„�섕서ì„�ì„žì„Ÿì„ ì„£ì„¤ì„¦ì„§ì„¬ì„섯섰성섶세섹센셀셈셉셋셌ì…�셔셕션셜셤셥셧셨셩셰셴셸솅소ì†�솎ì†�솔솖솜ì†�ì†Ÿì†¡ì†¥ì†¨ì†©ì†¬ì†°ì†½ì‡„ì‡ˆì‡Œì‡”ì‡—ì‡˜ì‡ ì‡¤ì‡¨ì‡°ì‡±ì‡³ì‡¼ì‡½ìˆ€ìˆ„ìˆŒìˆ�ìˆ�ìˆ‘ìˆ˜ìˆ™ìˆœìˆŸìˆ ìˆ¨ìˆ©ìˆ«ìˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������í�—í�™í�ší�›í�œí��í�ží�Ÿí� í�¢í�¤í�¥í�¦í�§í�¨í�©í�ªí�«í�®í�¯í�±í�²í�³í�µí�¶í�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í�¸í�¹í�ºí�»í�¾í�€í�‚í�ƒí�„í�…í�†í�‡í�‰í�Ší�‹í�Œí��í�Ží��í��í�‘í�’í�“í�”í�•í�–������í�—í�˜í�™í�ší�›í�œí�ží�Ÿí� í�¡í�¢í�£í�¤í�¥í�¦í�§í�¨í�©í�ªí�«í�¬í�í�®í�¯í�°í�±í�²í�³í�´í�µí�¶í�·ìˆ¯ìˆ±ìˆ²ìˆ´ì‰ˆì‰�ì‰‘ì‰”ì‰˜ì‰ ì‰¥ì‰¬ì‰ì‰°ì‰´ì‰¼ì‰½ì‰¿ìŠ�슈슉ìŠ�슘슛ìŠ�스슥슨슬ìŠìŠ´ìŠµìŠ·ìŠ¹ì‹œì‹�ì‹ ì‹£ì‹¤ì‹«ì‹¬ì‹ì‹¯ì‹±ì‹¶ì‹¸ì‹¹ì‹»ì‹¼ìŒ€ìŒˆìŒ‰ìŒŒìŒ�쌓쌔쌕쌘쌜쌤쌥쌨쌩ì�…ì�¨ì�©ì�¬ì�°ì�²ì�¸ì�¹ì�¼ì�½ìŽ„ìŽˆìŽŒì�€ì�˜ì�™ì�œì�Ÿì� ì�¢ì�¨ì�©ì�ì�´ì�µì�¸ì�ˆì��ì�¤ì�¬ì�°ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������í�¸í�¹í�ºí�»í�¼í�½í�¾í�¿í‘�푂푃푅푆푇푈푉푊푋푌í‘�푎í‘�í‘�푑푒푓������푔푕푖푗푘푙푚푛í‘�푞푟푡푢푣푥푦푧푨푩푪푫푬푮푰푱푲������푳푴푵푶푷푺푻푽푾í’�풃풄풅풆풇풊풌풎í’�í’�풑풒풓풕풖풗풘풙풚풛풜í’�ì�´ì�¼ì�½ì‘ˆì‘¤ì‘¥ì‘¨ì‘¬ì‘´ì‘µì‘¹ì’€ì’”쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀ì”�씌ì”�씔씜씨씩씬씰씸씹씻씽아악안앉않알ì•�앎앓암압앗았앙ì•�ì•žì• ì•¡ì•¤ì•¨ì•°ì•±ì•³ì•´ì•µì•¼ì•½ì–€ì–„ì–‡ì–Œì–�ì–�ì–‘ì–•ì–—ì–˜ì–œì– ì–©ì–´ì–µì–¸ì–¹ì–»ì–¼ì–½ì–¾ì—„ì—…ì—†ì—‡ì—ˆì—‰ì—Šì—Œì—Žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í’ží’Ÿí’ í’¡í’¢í’£í’¤í’¥í’¦í’§í’¨í’ªí’«í’¬í’풮풯풰풱풲풳풴풵풶풷풸������풹풺풻풼풽풾풿퓀í“�퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋í“�퓎í“�퓑퓒퓓퓕������퓖퓗퓘퓙퓚퓛í“�í“ží“ í“¡í“¢í“£í“¤í“¥í“¦í“§í“©í“ªí“«í“퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼ì—�ì—‘ì—”ì—˜ì— ì—¡ì—£ì—¥ì—¬ì—엮연열엶엷염엽엾엿였ì˜�옅옆옇예옌ì˜�옘옙옛옜오옥온올ì˜ì˜®ì˜°ì˜³ì˜´ì˜µì˜·ì˜¹ì˜»ì™€ì™�완왈ì™�왑왓왔왕왜ì™�ì™ ì™¬ì™¯ì™±ì™¸ì™¹ì™¼ìš€ìšˆìš‰ìš‹ìš�요욕욘욜욤욥욧용우욱운울욹욺움ì›�웃웅워ì›�ì›�월웜ì›�ì› ì›¡ì›¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������퓾퓿픀í”�픂픃픅픆픇픉픊픋í”�픎í”�í”�픑픒픓픖픘픙픚픛픜í”�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í”ží”Ÿí” í”¡í”¢í”£í”¤í”¥í”¦í”§í”¨í”©í”ªí”«í”¬í”픮픯픰픱픲픳픴픵픶픷������픸픹픺픻픾픿í•�핂핃핅핆핇핈핉핊핋핎í•�핒핓핔핕핖핗핚핛í•�í•ží•Ÿí•¡í•¢í•£ì›©ì›¬ì›°ì›¸ì›¹ì›½ìœ„ìœ…ìœˆìœŒìœ”ìœ•ìœ—ìœ™ìœ ìœ¡ìœ¤ìœ¨ìœ°ìœ±ìœ³ìœµìœ·ìœ¼ìœ½ì�€ì�„ì�Šì�Œì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�œì� ì�¨ì�«ì�´ì�µì�¸ì�¼ì�½ì�¾ìžƒìž„입잇있잉잊잎ìž�ìž‘ìž”ìž–ìž—ìž˜ìžšìž ìž¡ìž£ìž¤ìž¥ìž¦ìž¬ìžìž°ìž´ìž¼ìž½ìž¿ìŸ€ìŸ�쟈쟉쟌쟎ìŸ�쟘ìŸ�ìŸ¤ìŸ¨ìŸ¬ì €ì �ì „ì ˆì Šï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻핽핾핿햀í–�햂햃햆햊햋������햌í–�í–Ží–�햑햒햓햔햕햖햗햘햙햚햛햜í–�í–ží–Ÿí– í–¡í–¢í–£í–¤í–¦í–§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í–¨í–©í–ªí–«í–¬í–햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀í—�헂헃헄헅헆헇ì �ì ‘ì “ì •ì –ì œì �ì ì ¤ì ¬ì ì ¯ì ±ì ¸ì ¼ì¡€ì¡ˆì¡‰ì¡Œì¡�졔조족존졸졺좀ì¢�좃종좆좇좋좌ì¢�좔ì¢�ì¢Ÿì¢¡ì¢¨ì¢¼ì¢½ì£„ì£ˆì£Œì£”ì£•ì£—ì£™ì£ ì£¡ì£¤ì£µì£¼ì£½ì¤€ì¤„ì¤…ì¤†ì¤Œì¤�ì¤�중줘줬줴ì¥�ì¥‘ì¥”ì¥˜ì¥ ì¥¡ì¥£ì¥¬ì¥°ì¥´ì¥¼ì¦ˆì¦‰ì¦Œì¦�즘즙즛ì¦�ì§€ì§�진짇질짊ì§�집짓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������헊헋í—�í—Ží—�í—‘í—“í—”í—•í—–í——í—ší—œí—ží—Ÿí— í—¡í—¢í—£í—¦í—§í—©í—ªí—«í—헮������헯헰헱헲헳헶헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌í˜�혎í˜�혒������혖혗혘혙혚혛í˜�혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷혺혻징짖짙짚짜ì§�ì§ ì§¢ì§¤ì§§ì§¬ì§ì§¯ì§°ì§±ì§¸ì§¹ì§¼ì¨€ì¨ˆì¨‰ì¨‹ì¨Œì¨�쨔쨘쨩쩌ì©�ì©�쩔쩜ì©�ì©Ÿì© ì©¡ì©¨ì©½ìª„ìª˜ìª¼ìª½ì«€ì«„ì«Œì«�ì«�ì«‘ì«“ì«˜ì«™ì« ì«¬ì«´ì¬ˆì¬�ì¬”ì¬˜ì¬ ì¬¡ì�ìˆì‰ìŒì�ì˜ì™ì�ì¤ì¸ì¹ì®œì®¸ì¯”쯤쯧쯩찌ì°�ì°�찔찜ì°�찡찢찧차착찬찮찰참찹찻�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������혽혾혿í™�홂홃홄홆홇홊홌홎í™�í™�홒홓홖홗홙홚홛í™�í™ží™Ÿí™ í™¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í™¢í™£í™¤í™¥í™¦í™¨í™ªí™«í™¬í™í™®í™¯í™²í™³í™µí™¶í™·í™¸í™¹í™ºí™»í™¼í™½í™¾í™¿íš€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½íš�횂횄횆횇횈횉횊횋횎íš�íš‘íš’íš“íš•íš–íš—íš˜íš™íššíš›íšœíšžíš íš¢íš£íš¤íš¥íš¦íš§íš©íšªì°¼ì°½ì°¾ì±„ì±…ì±ˆì±Œì±”ì±•ì±—ì±˜ì±™ì± ì±¤ì±¦ì±¨ì±°ì±µì²˜ì²™ì²œì² ì²¨ì²©ì²«ì²¬ì²ì²´ì²µì²¸ì²¼ì³„쳅쳇쳉ì³�쳔쳤쳬쳰ì´�초촉촌ì´�촘촙촛ì´�ì´¤ì´¨ì´¬ì´¹ìµœìµ ìµ¤ìµ¬ìµìµ¯ìµ±ìµ¸ì¶ˆì¶”축춘출춤춥춧충춰췄췌ì·�ì·¨ì·¬ì·°ì·¸ì·¹ì·»ì·½ì¸„ì¸ˆì¸Œì¸”ì¸™ì¸ ì¸¡ì¸¤ì¸¨ì¸°ì¸±ì¸³ì¸µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������횫íšíš®íš¯íš±íš²íš³íš´íšµíš¶íš·íš¸íšºíš¼íš½íš¾íš¿í›€í›�훂훃훆훇훉훊훋������í›�훎í›�í›�훒훓훕훖훘훚훛훜í›�훞훟훡훢훣훥훦훧훩훪훫훬í›ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í›®í›¯í›±í›²í›³í›´í›¶í›·í›¸í›¹í›ºí›»í›¾í›¿íœ�휂휃휅휆휇휈휉휊휋휌íœ�휎íœ�íœ�íœ’íœ“íœ”ì¹˜ì¹™ì¹œì¹Ÿì¹ ì¹¡ì¹¨ì¹©ì¹«ì¹ì¹´ì¹µì¹¸ì¹¼ìº„캅캇캉ìº�ìº‘ìº”ìº˜ìº ìº¡ìº£ìº¤ìº¥ìº¬ìºì»�커컥컨컫컬컴컵컷컸컹케ì¼�켄켈ì¼�ì¼‘ì¼“ì¼•ì¼œì¼ ì¼¤ì¼¬ì¼ì¼¯ì¼°ì¼±ì¼¸ì½”ì½•ì½˜ì½œì½¤ì½¥ì½§ì½©ì½°ì½±ì½´ì½¸ì¾€ì¾…ì¾Œì¾¡ì¾¨ì¾°ì¿„ì¿ ì¿¡ì¿¤ì¿¨ì¿°ì¿±ì¿³ì¿µì¿¼í€€í€„í€‘í€˜í€í€´í€µí€¸í€¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������휕휖휗휚휛íœ�휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹������휺휻휽휾휿í�€í��í�‚í�ƒí�…í�†í�ˆí�Ší�‹í�Œí��í�Ží��í�’í�“í�•í�ší�›í�œí��í�žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í�Ÿí�¢í�¤í�¦í�§í�¨í�ªí�«í�í�®í�¯í�±í�²í�³í�µí�¶í�·í�¸í�¹í�ºí�»í�¾í�¿íž€íž‚힃힄힅힆힇힊힋í�„í�…í�‡í�‰í��í�”í�˜í� í�¬í�í�°í�´í�¼í�½í‚�키킥킨킬킴킵킷킹타íƒ�탄탈탉íƒ�탑탓탔탕태íƒ�íƒ íƒ¤íƒ¬íƒíƒ¯íƒ°íƒ±íƒ¸í„�터턱턴털턺텀í…�텃텄텅테í…�í…�텔템í…�í…Ÿí…¡í…¨í…¬í…¼í†„í†ˆí† í†¡í†¤í†¨í†°í†±í†³í†µí†ºí†¼í‡€í‡˜í‡´í‡¸íˆ‡íˆ‰íˆ�투íˆíˆ°íˆ´íˆ¼íˆ½íˆ¿í‰�퉈퉜�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������íž�힎íž�íž‘íž’íž“íž”íž•íž–íž—ížšížœížžížŸíž íž¡íž¢íž£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½í‰¤íŠ€íŠ�튄튈íŠ�íŠ‘íŠ•íŠœíŠ íŠ¤íŠ¬íŠ±íŠ¸íŠ¹íŠ¼íŠ¿í‹€í‹‚í‹ˆí‹‰í‹‹í‹”í‹˜í‹œí‹¤í‹¥í‹°í‹±í‹´í‹¸íŒ€íŒ�팃팅파íŒ�팎íŒ�팔팖팜íŒ�íŒŸíŒ íŒ¡íŒ¥íŒ¨íŒ©íŒ¬íŒ°íŒ¸íŒ¹íŒ»íŒ¼íŒ½í�„í�…í�¼í�½íŽ€íŽ„íŽŒíŽ�íŽ�íŽ�íŽ‘íŽ˜íŽ™íŽœíŽ íŽ¨íŽ©íŽ«íŽíŽ´íŽ¸íŽ¼í�„í�…í�ˆí�‰í��í�˜í�¡í�£í�¬í�í�°í�´í�¼í�½í�¿í���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�ˆí��í‘€í‘„í‘œí‘ í‘¤í‘푯푸푹푼푿풀풂품풉풋í’�풔풩퓌í“�퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌í•�í•�í•‘í•˜í•™í•œí• í•¥í•¨í•©í•«í•해핵핸핼햄햅햇했행í–�향허헉헌í—�헒험헙헛í—�헤헥헨헬헴헵헷헹혀í˜�현혈í˜�í˜‘í˜“í˜”í˜•í˜œí˜ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤í˜í˜¸í˜¹í˜¼í™€í™…홈홉홋í™�홑화확환활홧황홰홱홴횃횅회íš�íš�íš”íš�íšŸíš¡íš¨íš¬íš°íš¹íš»í›„í›…í›ˆí›Œí›‘í›”í›—í›™í› í›¤í›¨í›°í›µí›¼í›½íœ€íœ„íœ‘íœ˜íœ™íœœíœ íœ¨íœ©íœ«íœíœ´íœµíœ¸íœ¼í�„í�‡í�‰í��í�‘í�”í�–í�—í�˜í�™í� í�¡í�£í�¥í�©í�¬í�°í�´í�¼í�½íž�히힉힌íž�힘힙힛íž��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳å�‡åƒ¹åŠ å�¯å‘µå“¥å˜‰å«�家暇架枷柯æŒç�‚痂稼苛茄街袈訶賈è·�軻迦駕刻å�´å�„æ�ªæ…¤æ®¼ç��脚覺角閣侃刊墾奸姦干幹懇æ�€æ�†æŸ¬æ¡¿æ¾—癎看磵稈竿簡è‚�艮艱諫間乫å–�曷渴碣ç«è‘›è¤�è�Žéž¨å‹˜å�Žå ªåµŒæ„Ÿæ†¾æˆ¡æ•¢æŸ‘橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åŒ£å²¬ç”²èƒ›é‰€é–˜å‰›å ˆå§œå²¡å´—åº·å¼ºå½Šæ…·æ±Ÿç•ºç–†ç³ çµ³ç¶±ç¾Œè…”èˆ¡è–‘è¥�講鋼é™�鱇介价個凱å¡�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客å�‘ï¤�粳羹醵倨去居巨拒æ�®æ“šæ“§æ¸ ç‚¬ç¥›è·�踞車é�½é‰…鋸乾件å�¥å·¾å»ºæ„†æ¥—腱虔蹇é�µé¨«ä¹žå‚‘æ�°æ¡€å„‰åŠ�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼éˆ�黔劫怯迲å�ˆæ†©æ�æ“Šæ ¼æª„æ¿€è†ˆè¦¡éš”å …ç‰½çŠ¬ç”„çµ¹ç¹è‚©è¦‹è´é�£éµ‘抉決潔çµ�缺訣兼慊ç®�謙鉗鎌京俓倞傾儆å‹�å‹�å�¿å�°å¢ƒåºšå¾‘慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖è¦è¼•逕é�¡é ƒé ¸é©šé¯¨ä¿‚å•“å ºå¥‘å£å±†æ‚¸æˆ’桂械�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄å�¤å�©å‘Šå‘±å›ºå§‘å¤å°»åº«æ‹·æ”·æ•…æ•²æš æž¯æ§�沽痼çš�ç�¾ç¨¿ç¾”考股è†�苦苽è�°è—�è ±è¢´èª¥ï¤ƒè¾œéŒ®é›‡é¡§é«˜é¼“å“æ–›æ›²æ¢�ç©€è°·éµ å›°å�¤å´‘昆梱æ£�滾ç�¨è¢žé¯¤æ±¨ï¤„骨供公共功å”å·¥æ��æ�拱控攻ç�™ç©ºèš£è²¢éž�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科è�“誇課跨é�Žé�‹é¡†å»“槨藿éƒï¤…å† å®˜å¯¬æ…£æ£ºæ¬¾ç�Œç�¯ç“˜ç®¡ç½�è�…觀貫關館刮æ��æ‹¬é€‚ä¾Šå…‰åŒ¡å£™å»£æ› æ´¸ç‚šç‹‚ç�–ç�胱鑛å�¦æŽ›ç½«ä¹–傀塊壞怪愧æ‹�æ§�é�å®�ç´˜è‚±è½Ÿäº¤åƒ‘å’¬å–¬å¬Œå¶ å·§æ”ªæ•Žæ ¡æ©‹ç‹¡çšŽçŸ¯çµžç¿¹è† è•Žè›Ÿè¼ƒè½ŽéƒŠé¤ƒé©•é®«ä¸˜ä¹…ä¹�仇俱具勾�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�€å�£å�¥å’Žå˜”å�µåž¢å¯‡å¶‡å»�懼拘救枸柩構æ�毆毬求æº�ç�¸ç‹—玖ç�ƒçž¿çŸ©ç©¶çµ¿è€‰è‡¼èˆ…舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局è�Šéž 鞫麴å�›çª˜ç¾¤è£™è»�éƒ¡å €å±ˆæŽ˜çªŸå®®å¼“ç©¹çª®èŠŽèº¬å€¦åˆ¸å‹¸å�·åœˆæ‹³æ�²æ¬Šæ·ƒçœ·åŽ¥ç�—蕨蹶闕机櫃潰è©è»Œé¥‹ï¤†æ™·æ¸è²´ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜å�«åœå¥Žæ�†æ§»ç�ªç¡…窺竅糾葵è¦�赳逵閨勻å�‡ç•‡ç è�Œéˆžï¤ˆæ©˜å…‹å‰‹åŠ‡æˆŸæ£˜æ¥µéš™åƒ…åŠ¤å‹¤æ‡ƒæ–¤æ ¹æ§¿ç‘¾ç‹èйè�«è¦²è¬¹è¿‘饉契今妗擒昑檎ç�´ç¦�禽芩衾衿襟金錦伋å�Šæ€¥æ‰±æ±²ç´šçµ¦äº˜å…¢çŸœè‚¯ä¼�伎其冀嗜器圻基埼夔奇妓寄å²�崎己幾忌技旗旣�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期æ�žæ£‹æ£„機欺氣汽沂淇玘ç�¦ç�ªç’‚璣畸畿ç¢�磯ç¥�祇祈祺箕紀綺羈耆è€è‚Œè¨˜è�豈起錡錤飢饑騎é¨�驥麒緊佶å�‰æ‹®æ¡”金喫儺喇奈娜懦ï¤�æ‹�拿癩ï¤�ï¤�螺裸邏那樂洛烙珞落諾酪駱亂卵暖ï¤�ç…–ï¤žï¤Ÿé›£ï¤ æ��æ�ºå�—嵐æž�æ¥ æ¹³ï¤¢ç”·ï¤£ï¤¤ï¤¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç´�臘蠟衲囊娘廊朗浪狼郎乃ï¤å…§å¥ˆæŸ°è€�冷女年撚秊念æ�¬æ‹ˆæ�»å¯§å¯—努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿ï¥�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓ï¥�漏ï¥�ï¥�陋嫩訥æ�»ç´�勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段æ¹�çŸç«¯ç°žç·žè›‹è¢’鄲é�›æ’»æ¾¾ç�ºç–¸é�”å•–å��æ†ºæ“”æ›‡æ·¡æ¹›æ½æ¾¹ç—°è�ƒè†½è•�覃談èšéŒŸæ²“ç•“ç”è¸�é��å”�å ‚å¡˜å¹¢æˆ‡æ’žæ£ ç•¶ç³–èž³é»¨ä»£åžˆå�®å¤§å°�å²±å¸¶å¾…æˆ´æ“¡çŽ³è‡ºè¢‹è²¸éšŠé»›å®…å¾·æ‚³å€’åˆ€åˆ°åœ–å µå¡—å°Žå± å³¶å¶‹åº¦å¾’æ‚¼æŒ‘æŽ‰æ�—桃�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜ç�¹ç¦±ç¨»è�„覩è³è·³è¹ˆé€ƒé€”é�“都é��陶韜毒瀆牘犢ç�¨ç�£ç¦¿ç¯¤çº›è®€å¢©æƒ‡æ•¦æ—½æš¾æ²Œç„žç‡‰è±šé “ä¹çª�ä»�冬å‡�å‹•å�Œæ†§æ�±æ¡�棟洞潼疼瞳童胴董銅兜斗æ�œæž“痘竇è�³ï¥šè±†é€—é 屯臀芚é��é�¯éˆ�å¾—å¶�橙燈登ç‰è—¤è¬„鄧騰喇懶拏癩羅�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸é‚�樂洛烙ç�žçµ¡è�½ï¥�酪駱丹亂å�µæ¬„欒瀾爛è˜é¸žå‰Œè¾£åµ�擥攬欖濫籃纜è—�è¥¤è¦½æ‹‰è‡˜è Ÿå»Šæœ—æµªç‹¼ç�…瑯螂郞來å´�å¾ è�Šå†·æŽ 略亮倆兩凉æ¢�樑粮粱糧良諒輛é‡�ä¾¶å„·å‹µå‘‚å»¬æ…®æˆ¾æ—…æ«šæ¿¾ç¤ªè—œè £é–驢驪麗黎力曆æ·ç€�礫轢é�‚æ†�戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練è�¯è“®è¼¦é€£é�Šå†½åˆ—劣洌烈裂廉斂殮濂簾ç�µä»¤ä¼¶å›¹ï¥Ÿå²ºå¶ºæ€œç޲ç¬ç¾šç¿Žè�†é€žéˆ´é›¶é�ˆé ˜é½¡ä¾‹æ¾§ç¦®é†´éš·å‹žï¥ 撈擄櫓潞瀘çˆ�ç›§è€�蘆虜路輅露é¯é·ºé¹µç¢Œç¥¿ç¶ è�‰éŒ„鹿麓論壟弄朧瀧ç“�ç± è�¾å„¡ç€¨ç‰¢ç£Šè³‚賚賴雷了僚寮廖料燎療çžè�Šè“¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¼é¬§é¾�壘å©�屢樓淚æ¼�瘻累縷蔞褸é�¤é™‹åŠ‰æ—’æŸ³æ¦´æµ�溜ç€�ç�‰ç‘ ç•™ç˜¤ç¡«è¬¬é¡žå…æˆ®é™¸ä¾–å€«å´™æ·ªç¶¸è¼ªå¾‹æ…„æ —ï¥¡éš†å‹’è‚‹å‡œå‡Œæ¥žç¨œç¶¾è�±é™µä¿šåˆ©åŽ˜å��唎履悧æ�Žæ¢¨æµ¬çŠ�狸ç�†ç’ƒï¥¢ç—¢ç±¬ç½¹ç¾¸èމè£�裡里é‡�離鯉å��æ½¾ç‡�璘藺躪隣鱗麟林淋ç�³è‡¨éœ–ç ¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç«‹ç¬ ç²’æ‘©ç‘ªç—²ç¢¼ç£¨é¦¬é”éº»å¯žå¹•æ¼ è†œèŽ«é‚ˆä¸‡å��娩巒彎慢挽晩曼滿漫ç�£çžžè�¬è”“è »è¼“é¥…é°»å”œæŠ¹æœ«æ²«èŒ‰è¥ªé�ºäº¡å¦„忘忙望網罔芒茫莽輞邙埋妹媒å¯�昧枚梅æ¯�煤罵買賣é‚�é…è„ˆè²Šé™Œé©€éº¥åŸæ°“猛盲盟è�Œå†ªè¦“å…�å†•å‹‰æ£‰æ²”çœ„çœ ç¶¿ç·¬é�¢éºµæ»…�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥å��命明æš�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮æŸ�模æ¯�毛牟牡ç‘�眸矛耗芼茅謀謨貌木æ²�牧目ç�¦ç©†é¶©æ¿æ²’夢朦蒙å�¯å¢“妙廟æ��昴æ�³æ¸ºçŒ«ç«—è‹—éŒ¨å‹™å·«æ†®æ‡‹æˆŠæ‹‡æ’«æ— æ¥™æ¦æ¯‹ç„¡ç�·ç•�繆舞茂蕪誣貿霧鵡墨默們刎å�»å•�文�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋è�žèšŠé–€é›¯å‹¿æ²•物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷é�¡é»´å²·æ‚¶æ„�憫æ•�旻旼民泯玟ç�‰ç·¡é–”密蜜è¬�å‰�å�šæ‹�æ��撲朴樸泊ç�€ç’žç®”粕縛膊舶薄迫雹é§�ä¼´å�Šå��å�›æ‹Œæ�¬æ”€æ–‘槃泮潘ç�畔瘢盤盼ç£�ç£»ç¤¬çµ†èˆ¬èŸ è¿”é ’é£¯å‹ƒæ‹”æ’¥æ¸¤æ½‘ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮éƒå€£å‚�å�Šå¦¨å°¨å¹‡å½·æˆ¿æ”¾æ–¹æ—�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防é¾�å€�俳北培徘拜排æ�¯æ¹ƒç„™ç›ƒèƒŒèƒšè£´è£µè¤™è³ 輩é…�陪伯佰帛æŸ�æ ¢ç™½ç™¾é„幡樊煩燔番磻ç¹�蕃藩飜ä¼�ç�罰閥凡帆梵氾汎泛犯範范法ç�ºåƒ»åŠˆå£�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便å�žå¼�變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳ç”�病秉ç«�è¼§é¤ é¨ˆä¿�å ¡å ±å¯¶æ™®æ¥æ´‘湺潽ç�¤ç”«è�©è£œè¤“èœè¼”ä¼�僕åŒ�å�œå®“復æœ�ç¦�腹茯蔔複覆輹輻馥鰒本乶俸奉å°�峯峰æ�§æ£’烽熢ç�«ç¸«è“¬èœ‚逢鋒鳳ä¸�付俯傅剖副å�¦å’�åŸ å¤«å©¦ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������åšåµå¯Œåºœï¥¦æ‰¶æ•·æ–§æµ®æº¥çˆ¶ç¬¦ç°¿ç¼¶è…�è…‘è†šè‰€èŠ™èŽ©è¨ƒè² è³¦è³»èµ´è¶ºéƒ¨é‡œé˜œé™„é§™é³§åŒ—åˆ†å�©å™´å¢³å¥”奮忿憤扮æ˜�汾焚盆粉糞紛芬è³�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪å�‘妃婢庇悲憊扉批æ–�枇榧比毖毗毘沸泌ç�µç—ºç ’碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂è�²èœšè£¨èª¹è¬è²»é„™é�žé£›é¼»åš¬å¬ªå½¬æ–Œæª³æ®¯æµœæ¿±ç€•ç‰�çŽè²§è³“é »æ†‘æ°·è�˜é¨�ä¹�事些仕伺似使俟僿å�²å�¸å”†å—£å››å£«å¥¢å¨‘寫寺射巳師徙æ€�æ�¨æ–œæ–¯æŸ¶æŸ»æ¢æ»æ²™æ³—渣瀉ç�…ç ‚ç¤¾ç¥€ç¥ ç§�篩紗絲肆èˆ�莎蓑蛇裟è©�詞è¬�賜赦è¾é‚ªé£¼é§Ÿéº�削數朔索�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕ç�Šç”£ç–�算蒜酸霰乷撒殺煞薩三參æ�‰æ£®æ¸—芟蔘衫æ�·æ¾�鈒颯上傷åƒ�償商喪嘗å€å°™å³ å¸¸åºŠåº å»‚æƒ³æ¡‘æ©¡æ¹˜çˆ½ç‰€ç‹€ç›¸ç¥¥ç®±ç¿”è£³è§´è©³è±¡è³žéœœå¡žç’½è³½å—‡ï¥¬ç©¡ç´¢è‰²ç‰²ç”Ÿç”¥ï¥ç¬™å¢…壻嶼åº�庶å¾�æ�•抒æ�¿æ•�æš‘æ›™æ›¸æ –æ£²çŠ€ç‘žç®çµ®ç·–署�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓é€�鋤é»�é¼ å¤•å¥å¸æƒœæ˜”晳æž�æ±�淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽ç��瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣é�¸éŠ‘é�¥é¥�é®®å�¨å±‘楔泄洩渫舌薛褻è¨èªªé›ªé½§å‰¡æš¹æ®²çº–蟾è´�é–ƒé™�æ”�涉燮葉城姓宬性惺æˆ�星晟猩ç�¹ç››çœ�ç¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�–è�²è…¥èª é†’ä¸–å‹¢æ²æ´—稅笹細說貰å�¬å˜¯å¡‘宵å°�少巢所掃æ�”æ˜æ¢³æ²¼æ¶ˆæº¯ç€Ÿç‚¤ç‡’甦ç–�ç–Žç˜™ç¬‘ç¯ ç°«ç´ ç´¹è”¬è•蘇訴é€�é�¡é‚µéŠ·éŸ¶é¨·ä¿—å±¬æ�Ÿæ¶‘粟續謖贖速å«å·½æ��è“€é�œé£¡çŽ‡å®‹æ‚šæ�¾æ·žè¨Ÿèª¦é€�é Œåˆ·ï¥°ç�‘碎鎖衰釗修å�—嗽囚垂壽嫂守岫峀帥æ„��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æˆ�手授æ�œæ”¶æ•¸æ¨¹æ®Šæ°´æ´™æ¼±ç‡§ç‹©ç�¸ç�‡ç’²ç˜¦ç�¡ç§€ç©—竪粹ç¶�綬繡羞脩茱è’�蓚藪袖誰è®�輸é�‚é‚ƒé…¬éŠ–éŠ¹éš‹éš§éš¨é›–éœ€é ˆé¦–é«“é¬šå�”塾夙å°å®¿æ·‘潚熟ç�¡ç’¹è‚…è�½å·¡å¾‡å¾ªæ�‚æ—¬æ ’æ¥¯æ©“æ®‰æ´µæ·³ç�£ç›¾çž¬ç�純脣舜è�€è“´è•£è©¢è«„é†‡éŒžé †é¦´æˆŒè¡“è¿°é‰¥å´‡å´§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟è†�è�¨æ¿•拾習褶襲丞乘僧å‹�å�‡æ‰¿æ˜‡ç¹©è …陞ä¾�匙嘶始媤尸屎å±�市弑æ�ƒæ–½æ˜¯æ™‚枾柴猜矢示翅蒔è“�視試詩諡豕豺埴寔å¼�æ�¯æ‹æ¤�殖湜熄篒è�•è˜è»¾é£Ÿé£¾ä¼¸ä¾�ä¿¡å‘»å¨ å®¸æ„¼æ–°æ™¨ç‡¼ç”³ç¥žç´³è…Žè‡£èŽ˜è–ªè—Žèœƒè¨Šèº«è¾›ï¥±è¿…å¤±å®¤å¯¦æ‚‰å¯©å°‹å¿ƒæ²��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什å��拾雙æ°�亞俄兒啞娥峨我牙芽莪蛾衙è¨�阿雅餓鴉éµ�å Šå²³å¶½å¹„æƒ¡æ„•æ�¡æ¨‚渥鄂é�”顎é°�齷安岸按æ™�案眼é›�éž�顔鮟斡è¬�軋閼唵岩巖庵暗癌è�´é—‡å£“押狎鴨仰央æ€�昻殃秧鴦厓哀埃崖愛曖涯ç¢�艾隘é�„厄扼掖液縊腋é¡��\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹æ�¶æ¤°çˆºè€¶ï¥´é‡Žå¼±ï¥µï¥¶ç´„若葯蒻藥èº�ï¥·ä½¯ï¥¸ï¥¹å£¤åƒæ�™æ�šæ”˜æ•æš˜ï¥ºæ¥Šæ¨£æ´‹ç€�煬痒ç˜�禳穰糧羊良襄諒讓釀陽量養圄御於æ¼�瘀禦語é¦éšé½¬å„„憶抑æª�臆å�ƒå °å½¦ç„‰è¨€è«ºå¼è˜–俺儼嚴奄掩淹嶪æ¥å††äºˆä½™ï¥¿ï¦€ï¦�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¦ƒæŸæ±�濾璵礖礪與艅茹輿è½�閭餘驪麗黎亦力域役易曆歷疫繹è¯ï¦�é€†é©›åš¥å §å§¸å¨Ÿå®´ï¦Žå»¶ï¦�ï¦�æ��挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉ç¡�硯秊çµç·£ï¦–縯聯è¡�軟輦蓮連鉛鍊鳶列ï¦�ï¦žæ‚…æ¶…ï¦Ÿç†±ï¦ ï¦¡é–±åŽï¦¢ï¦£ï¦¤æŸ“殮炎焰ç�°è‰¶è‹’�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵ç‡�è‘‰ï¦¨ï¦©å¡‹ï¦ªï¦«å¶¸å½±ï¦¬æ˜ æšŽæ¥¹æ¦®æ°¸æ³³æ¸¶æ½�濚瀛瀯ç…�營ç�°ï¦ç‘›ï¦®ç“”ç›ˆç©Žçº“ï¦¯ï¦°è‹±è© è¿Žï¦±é�ˆï¦²éœ™ï¦³ï¦´ä¹‚倪例刈å�¡æ›³æ±æ¿ŠçŒŠç�¿ç©¢èŠ®è—�蘂禮裔詣è½è±«ï¦·éŠ³ï¦¸éœ“é �五ä¼�俉傲å�ˆå�¾å�³å—šå¡¢å¢ºå¥§å¨›å¯¤æ‚Ÿï¦¹æ‡Šæ•–旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çƒ�熬ç�’ç½èœˆèª¤é°²é¼‡å±‹æ²ƒç�„玉鈺溫瑥瘟穩縕蘊兀壅æ“�瓮甕癰ç¿�é‚•é›�饔渦瓦窩窪臥蛙è�¸è¨›å©‰å®Œå®›æ¢¡æ¤€æµ£çŽ©ç�“ç�¬ç¢—ç·©ç¿«è„˜è…•èŽžè±Œé˜®é ‘æ›°å¾€æ—ºæž‰æ±ªçŽ‹å€å¨ƒæªçŸ®å¤–嵬å·�猥ç•�ï¦ºï¦»åƒ¥å‡¹å ¯å¤å¦–姚寥寮尿嶢拗æ�–撓擾料曜樂橈燎燿瑤ï§��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯è¦�è¬ é�™ï§ƒé‚€é¥’慾欲浴縟褥辱俑å‚冗勇埇墉容庸慂榕涌湧溶熔瑢用甬è�³èŒ¸è“‰è¸ŠéŽ”é�žï§„于佑å�¶å„ªå�ˆå�‹å�³å®‡å¯“尤愚憂旴牛玗瑀盂ç¥�禑禹紆羽芋藕虞迂é�‡éƒµé‡ªéš…é›¨é›©å‹–å½§æ—æ˜±æ ¯ç…œç¨¶éƒ�é Šäº‘ï§…æ©’æ®žæ¾�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�‹éš•雲韻蔚鬱äº�熊雄元原員圓園垣媛嫄寃怨愿æ�´æ²…洹湲æº�爰猿瑗苑è¢�è½…é� 阮院願鴛月越鉞ä½�å�‰åƒžå�±åœ�å§”å¨�尉慰æš�æ¸çˆ²ç‘‹ç·¯èƒƒè�Žè‘¦è”¿è�Ÿè¡›è¤˜è¬‚é�•韋é�乳侑儒兪劉唯喩åºå®¥å¹¼å¹½åº¾æ‚ 惟愈愉æ�„攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由ï§�ç™’ï§Žï§�ç¶è‡¾è�¸è£•誘諛è«è¸°è¹‚é�Šé€¾é�ºé…‰é‡‰é�®ï§�ï§‘å ‰ï§’æ¯“è‚‰è‚²ï§“ï§”å…�奫尹崙淪潤玧胤贇輪鈗é–�律慄栗率è�¿æˆŽç€œçµ¨èž�ï§œåž æ�©æ…‡æ®·èª¾éŠ€éš±ä¹™å�Ÿæ·«è”陰音飮æ�–泣邑å‡�應膺鷹ä¾�倚儀宜æ„�懿擬椅毅疑矣義艤è–�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è°é†«äºŒä»¥ä¼Šï§�ï§žå¤·å§¨ï§Ÿå·²å¼›å½›æ€¡ï§ ï§¡ï§¢ï§£çˆ¾ç�¥ï§¤ç•°ç—�痢移罹而耳肄苡è�‘裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人ä»�刃å�°ï§å’½å› 姻寅引å¿�湮燐璘絪茵藺蚓èª�ï§±é�é�·ï§²ï§³ä¸€ä½šä½¾å£¹æ—¥æº¢é€¸éŽ°é¦¹ä»»å£¬å¦Šå§™æ��林淋稔臨è��賃入å�„�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒ä»�剩å•芿仔刺咨姉姿å�å—åœæ�£æ…ˆæ»‹ç‚™ç…®çŽ†ç“·ç–µç£�紫者自茨蔗藉諮資雌作勺嚼斫昨ç�¼ç‚¸çˆµç¶½èŠ�é…Œé›€éµ²å±æ£§æ®˜æ½ºç›žå²‘æš«æ½›ç®´ç°ªè ¶é›œä¸ˆä»—åŒ å ´å¢»å£¯å¥¬å°‡å¸³åº„å¼µæŽŒæš²æ�–樟檣欌漿牆狀ç��ç’‹ç« ç²§è…¸è‡Ÿè‡§èŽŠè‘¬è”£è–”è—�è£�贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障å†�哉在宰æ‰�æ��æ ½æ¢“æ¸½æ»“ç�½ç¸¡è£�財載齋齎çˆç®�è«�錚佇低儲咀å§�底抵æ�µæ¥®æ¨—沮渚狙猪疽箸紵苧è�¹è‘—藷詛貯躇這邸雎齟勣å�Šå«¡å¯‚摘敵滴狄炙的ç©�笛ç±�績翟è�»è¬«è³Šèµ¤è·¡è¹Ÿè¿ªè¿¹é�©é�‘佃佺傳全典å‰�å‰ªå¡¡å¡¼å¥ å°ˆå±•å»›æ‚›æˆ°æ “æ®¿æ°ˆæ¾±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎ç� 田甸畑癲çŒç®‹ç®ç¯†çº�詮輾轉鈿銓錢é�«é›»é¡šé¡«é¤žåˆ‡æˆªæŠ˜æµ™ç™¤ç«Šç¯€çµ¶å� 岾店漸点粘霑鮎點接摺è�¶ä¸�井äºå�œå�µå‘ˆå§ƒå®šå¹€åºå»·å¾�æƒ…æŒºæ”¿æ•´æ—Œæ™¶æ™¸æŸ¾æ¥¨æª‰æ£æ±€æ·€æ·¨æ¸Ÿæ¹žç€žç‚¡çŽŽç�½ç”ºç�›ç¢‡ç¦Žç¨‹ç©½ç²¾ç¶Žè‰‡è¨‚諪貞é„é…Šé‡˜é‰¦é‹ŒéŒ éœ†é�–�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�œé ‚é¼Žåˆ¶åŠ‘å•¼å ¤å¸�弟悌æ��梯濟ç¥ç¬¬è‡�薺製諸蹄é†�除際霽題齊俎兆凋助嘲弔彫措æ“�æ—©æ™�曺曹æœ�æ¢�æ£—æ§½æ¼•æ½®ç…§ç‡¥çˆªç’ªçœºç¥–ç¥šç§Ÿç¨ çª•ç²—ç³Ÿçµ„ç¹°è‚‡è—»èš¤è©”èª¿è¶™èº�é€ é�釣阻雕鳥æ—�簇足é�ƒå˜å°Šå�’æ‹™çŒ�倧宗從悰慫棕淙ç�®ç¨®çµ‚綜縱腫�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵é�¾é�˜ä½�å��左座挫罪主ä½�ä¾�å�šå§�胄呪周嗾å¥�宙州廚æ™�æœ±æŸ±æ ªæ³¨æ´²æ¹Šæ¾�ç‚·ç� 疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄é§�竹粥俊å„�å‡†åŸˆå¯¯å³»æ™™æ¨½æµšæº–æ¿¬ç„Œç•¯ç«£è ¢é€¡é�µé›‹é§¿èŒ�ä¸ä»²è¡†é‡�å�½æ«›æ¥«æ±�葺增憎曾拯çƒ�甑症繒蒸è‰è´ˆä¹‹å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地å�€å¿—æŒ�指摯支旨智æž�æž³æ¢æ± æ²šæ¼¬çŸ¥ç ¥ç¥‰ç¥—ç´™è‚¢è„‚è‡³èŠ�芷蜘誌識贄趾é�²ç›´ç¨™ç¨·ç¹”è�·å”‡å—”塵振æ�¢æ™‰æ™‹æ¡æ¦›æ®„津溱ç��瑨璡畛疹盡眞瞋秦縉ç¸�臻蔯袗診賑軫辰進éŽé™£é™³éœ‡ä¾„å�±å§ªå«‰å¸™æ¡Žç“†ç–¾ç§©çª’膣è›è³ªè·Œè¿æ–Ÿæœ•什執潗ç·�輯�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¶é›†å¾µæ‡²æ¾„且侘借å�‰å—Ÿåµ¯å·®æ¬¡æ¤ç£‹ç®šï§¾è¹‰è»Šé�®æ�‰æ�¾ç�€çª„錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽é¤�饌刹察擦æœç´®åƒå�ƒå¡¹æ…˜æ…™æ‡ºæ–¬ç«™è®’è®–å€‰å€¡å‰µå”±å¨¼å» å½°æ„´æ•žæ˜Œæ˜¶æš¢æ§�滄漲猖瘡窓脹艙è�–è’¼å‚µåŸ°å¯€å¯¨å½©æŽ¡ç ¦ç¶µè�œè”¡é‡‡é‡µå†ŠæŸµç–�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è²¬å‡„å¦»æ‚½è™•å€œï§¿å‰”å°ºæ…½æˆšæ‹“æ“²æ–¥æ»Œç˜ è„Šè¹ é™Ÿéš»ä»Ÿå�ƒå–˜å¤©å·�擅泉淺玔穿舛薦賤è¸�é�·é‡§é—¡é˜¡éŸ†å‡¸å“²å–†å¾¹æ’¤æ¾ˆç¶´è¼Ÿè½�é�µåƒ‰å°–æ²¾æ·»ç”›çž»ç°½ç±¤è©¹è«‚å žå¦¾å¸–æ�·ç‰’ç–Šç�«è«œè²¼è¼’廳晴淸è�½è��è«‹é�‘é¯–ï¨€å‰ƒæ›¿æ¶•æ»¯ç· è«¦é€®é�žé«”åˆ�剿哨憔抄招梢�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦ç¡�ç¤�礎秒ç¨�肖艸苕è�‰è•‰è²‚超酢醋醮促囑ç‡çŸ—蜀觸寸忖æ�‘邨å�¢å¡šå¯µæ‚¤æ†�æ‘ ç¸½è�°è”¥éŠƒæ’®å‚¬å´”æœ€å¢œæŠ½æŽ¨æ¤Žæ¥¸æ¨žæ¹«çšºç§‹èŠ»è�©è«�趨追鄒酋醜éŒ�錘鎚雛騶é°�丑畜ç¥�竺ç‘築縮蓄蹙蹴軸é€�æ˜¥æ¤¿ç‘ƒå‡ºæœ®é»œå……å¿ æ²–èŸ²è¡�衷悴膵è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅å�–å�¹å˜´å¨¶å°±ç‚Šç¿ è�šè„†è‡è¶£é†‰é©Ÿé·²å�´ä»„åŽ æƒ»æ¸¬å±¤ä¾ˆå€¤å—¤å³™å¹Ÿæ�¥æ¢”治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅é£è¦ªä¸ƒæŸ’漆侵寢枕沈浸ç�›ç §é‡�é�¼èŸ„秤稱快他咤唾墮妥惰打拖朶楕舵陀馱é§�倬å�“å•„å�¼ï¨�托拓擢晫æŸ�æ¿�濯ç�¢ç�¸è¨—�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¸å‘‘嘆å�¦å½ˆæ†šæŽç�˜ç‚綻誕奪脫探眈耽貪塔æ�榻宕帑湯糖蕩兌å�°å¤ªæ€ 態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎å��土討慟桶洞痛ç’çµ±é€šå †æ§Œè…¿è¤ªé€€é ¹å�¸å¥—妬投é€�鬪æ…�特闖å�¡å©†å·´æŠŠæ’擺æ�·æ³¢æ´¾çˆ¬ç�¶ç ´ç½·èŠè·›é —判å�‚æ�¿ç‰ˆç“£è²©è¾¦éˆ‘�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八å�æ�Œä½©å”„悖敗沛浿牌狽稗覇è²�彿¾Žçƒ¹è†¨æ„Žä¾¿å��æ‰�片篇編翩é��éžé¨™è²¶å�ªå¹³æž°è��è©•å� 嬖幣廢弊斃肺蔽閉陛佈包åŒ�åŒ�咆哺圃布怖抛抱æ�•ï¨†æ³¡æµ¦ç–±ç ²èƒžè„¯è‹žè‘¡è’²è¢�褒逋鋪飽鮑幅暴æ›�瀑爆輻俵剽彪慓æ�“標漂瓢票表豹飇飄驃�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å“�稟楓諷豊風馮彼披疲皮被é�¿é™‚匹弼必泌ç�Œç•¢ç–‹ç†è‹¾é¦�ä¹�逼下何厦å¤�廈昰河瑕è�·è�¦è³€é��霞鰕壑å¸è™�謔鶴寒æ�¨æ‚�旱汗漢澣瀚罕翰閑閒é™�韓割轄函å�«å’¸å•£å–Šæª»æ¶µç·˜è‰¦éŠœé™·é¹¹å�ˆå“ˆç›’蛤閤闔陜亢伉姮嫦巷æ�’抗æ�æ¡�沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¨ˆï¨‰é …äº¥å�•咳垓奚å©å®³æ‡ˆæ¥·æµ·ç€£èŸ¹è§£è©²è«§é‚‚é§éª¸åŠ¾æ ¸å€–å¹¸æ��è�‡è¡Œäº«å�‘åš®ç�¦é„•響餉饗香噓墟虛許憲櫶ç�»è»’æ‡éšªé©—奕爀赫é�©ä¿”峴弦懸晛泫炫玄玹ç�¾çœ©ç��絃絢縣舷衒見賢鉉顯å‘ç©´è¡€é �å«Œä¿ å�”夾峽挾浹狹脅脇莢é‹�é °äº¨å…„åˆ‘åž‹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅ç��炯熒ç�©ç‘©è�Šèž¢è¡¡é€ˆé‚¢éŽ£é¦¨å…®å½—æƒ æ…§æš³è•™è¹Šé†¯éž‹ä¹Žäº’å‘¼å£•å£ºå¥½å²µå¼§æˆ¶æ‰ˆæ˜Šæ™§æ¯«æµ©æ·�æ¹–æ»¸æ¾”æ¿ æ¿©ç��ç‹�ç�¥ç‘šç“ 皓祜糊縞胡芦葫蒿虎號è�´è·è±ªéŽ¬é €é¡¥æƒ‘æˆ–é…·å©šæ˜�混渾ç�¿é‚忽惚ç¬�哄弘汞泓洪烘紅虹訌鴻化和嬅樺ç�«ç•µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç¦�禾花è�¯è©±è�貨é�´ï¨‹æ“´æ”«ç¢ºç¢»ç©«ä¸¸å–šå¥�宦幻患æ�›æ¡æ™¥æ¡“渙煥環紈還驩鰥活滑猾è±�闊凰幌徨æ��惶愰慌晃晄榥æ³�湟滉潢煌璜皇ç¯�ç°§è�’è�—é�‘éš�黃匯回廻徊æ�¢æ‚”懷晦會檜淮澮ç�°ç�ªç¹ªè†¾èŒ´è›”誨賄劃ç�²å®–æ©«é�„哮嚆å�效斅曉梟æ¶�淆�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵é©�侯候厚å�Žå�¼å–‰å—…帿後朽煦ç��逅勛勳塤壎焄ç†�燻薰訓暈薨喧暄煊è�±å�‰å–™æ¯�彙徽æ�®æš‰ç…‡è«±è¼�麾休æ�ºçƒ‹ç•¦è™§æ�¤èŽé·¸å…‡å‡¶åŒˆæ´¶èƒ¸é»‘昕欣炘痕å�ƒå±¹ç´‡è¨–æ¬ æ¬½æ†å�¸æ�°æ´½ç¿•興僖凞喜噫å›�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[950] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"���������������������������������������������������������������� ,ã€�。.‧;:?ï¼�︰…‥ï¹�﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴ï¹�()︵︶{ï½�︷︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙﹚����������������������������������﹛﹜ï¹�﹞‘’“â€�ã€�〞‵′#&*※§〃○â—�△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_Ë�﹉﹊ï¹�ï¹Žï¹‹ï¹Œï¹Ÿï¹ ï¹¡ï¼‹ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓â†�→↖↗↙↘∥∣ï¼��\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¼¼âˆ•ï¹¨ï¼„ï¿¥ã€’ï¿ ï¿¡ï¼…ï¼ â„ƒâ„‰ï¹©ï¹ªï¹«ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„°兙兛兞å…�兡兣嗧瓩糎â–�▂▃▄▅▆▇█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘â•����������������������������������╮╰╯â•�╞╪╡◢◣◥◤╱╲╳ï¼�ï¼‘ï¼’ï¼“ï¼”ï¼•ï¼–ï¼—ï¼˜ï¼™â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ã€¡ã€¢ã€£ã€¤ã€¥ã€¦ã€§ã€¨ã€©å��å�„å�…ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï½�bcdefghijklï½�nï½�ï½�qrstuv�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�����������������������������������ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ���������������������������������€������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"����������������������������������������������������������������一乙ä¸�七乃ä¹�äº†äºŒäººå„¿å…¥å…«å‡ åˆ€åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å�å‘å“寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰�����������������������������������丑ä¸�ä¸�ä¸ä¸°ä¸¹ä¹‹å°¹äºˆäº‘井互五亢ä»�什仃仆仇ä»�今介仄元å…�å…§å…兮公冗凶分切刈勻勾勿化匹å�ˆå�‡å�…å�žåŽ„å�‹å�Šå��壬天夫太å¤å”å°‘å°¤å°ºå±¯å·´å¹»å»¿å¼”å¼•å¿ƒæˆˆæˆ¶æ‰‹æ‰Žæ”¯æ–‡æ–—æ–¤æ–¹æ—¥æ›°æœˆæœ¨æ¬ æ¢æ¹æ¯‹æ¯”毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ä¸™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������������������������������������世丕且丘主ä¹�ä¹�ä¹Žä»¥ä»˜ä»”ä»•ä»–ä»—ä»£ä»¤ä»™ä»žå……å…„å†‰å†Šå†¬å‡¹å‡ºå‡¸åˆŠåŠ åŠŸåŒ…åŒ†åŒ—åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�å�»å››å›šå¤–����������������������������������央失奴奶å•它尼巨巧左市布平幼å¼�å¼˜å¼—å¿…æˆŠæ‰“æ‰”æ‰’æ‰‘æ–¥æ—¦æœ®æœ¬æœªæœ«æœæ£æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全�\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������共å†�å†°åˆ—åˆ‘åˆ’åˆŽåˆ–åŠ£åŒˆåŒ¡åŒ å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’å› å›žå›�圳地在åœåœ¬åœ¯åœ©å¤™å¤šå¤·å¤¸å¦„奸妃好她如å¦�å—å˜å®‡å®ˆå®…安寺尖屹州帆并年����������������������������������å¼�弛忙忖戎戌æˆ�æˆ�æ‰£æ‰›æ‰˜æ”¶æ—©æ—¨æ—¬æ—æ›²æ›³æœ‰æœ½æœ´æœ±æœµæ¬¡æ¤æ»æ°–æ±�æ±—æ±™æ±Ÿæ± æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�佑伽伺伸佃佔似但佣�\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä½œä½ ä¼¯ä½Žä¼¶ä½™ä½�佈佚兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�å�žå�¾å�¦å‘Žå�§å‘†å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘å�€å������������������������������������å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å�åœåšå›å®Œå®‹å®�尬局å±�å°¿å°¾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�å¿±å¿«å¿¸å¿ªæˆ’æˆ‘æŠ„æŠ—æŠ–æŠ€æ‰¶æŠ‰æ‰æŠŠæ‰¼æ‰¾æ‰¹æ‰³æŠ’æ‰¯æŠ˜æ‰®æŠ•æŠ“æŠ‘æŠ†æ”¹æ”»æ”¸æ—±æ›´æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� �\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������æ�“æ�—æ¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ 狄狂玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒����������������������������������芋èŠ�見角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅åŸå¤å£å®—定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�å¿ å¿½å¿µå¿¿æ€�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜�昕昊�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������昇æœ�朋æ�枋枕æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ¦æ§æ¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�æ²®æ³—æ³…æ³±æ²¿æ²»æ³¡æ³›æ³Šæ²¬æ³¯æ³œæ³–æ³ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç‚•ç‚Žç‚’ç‚Šç‚™çˆ¬çˆçˆ¸ç‰ˆç‰§ç‰©ç‹€ç‹Žç‹™ç‹—ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直知矽社祀ç¥�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙èŠèŠ½èŠŸèŠ¹èŠ±èŠ¬èŠ¥èŠ¯èŠ¸èŠ£èŠ°èŠ¾èŠ·è™Žè™±åˆ�表軋迎返近邵邸邱邶采金長門阜陀阿阻附�\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������陂隹雨é�’é�žäºŸäºäº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�ä¿„ä¿‚ä¿šä¿Žä¿žä¾·å…—å†’å†‘å† å‰Žå‰ƒå‰Šå‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å“„å“ˆå’¯å’«å’±å’»å’©å’§å’¿å›¿åž‚åž‹åž åž£åž¢åŸŽåž®åž“å¥•å¥‘å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�å§»å©å®£å®¦å®¤å®¢å®¥å°�屎å±�å±�屋峙峒巷å¸�å¸¥å¸Ÿå¹½åº åº¦å»ºå¼ˆå¼å½¥å¾ˆå¾…徊律徇後徉怒æ€�æ€ æ€¥æ€Žæ€¨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�æ‹œæŒ–æŒ‰æ‹¼æ‹æŒ�拮拽指拱拷�\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‹¯æ‹¬æ‹¾æ‹´æŒ‘æŒ‚æ”¿æ•…æ–«æ–½æ—¢æ˜¥æ˜æ˜ 昧是星昨昱昤曷柿染柱柔æŸ�柬架枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�æŸ’æªæ®ƒæ®†æ®µæ¯’毗氟泉洋洲洪æµ�津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯ç‚ç‚¸ç‚®ç‚¤çˆ°ç‰²ç‰¯ç‰´ç‹©ç‹ ç‹¡çŽ·ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�ç›¹ç›¸çœ‰çœ‹ç›¾ç›¼çœ‡çŸœç ‚ç ”ç Œç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸美羿耄�\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������è€�è€�耑耶胖胥胚胃胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�è§”è¨ˆè¨‚è¨ƒè²žè² èµ´èµ³è¶´è»�軌述迦迢迪迥����������������������������������è¿è¿«è¿¤è¿¨éƒŠéƒŽéƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸéŸ³é �風飛食首香乘亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修å€å€ªä¿¾å€«å€‰å…¼å†¤å†¥å†¢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩å“員唉哮哪�\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������哦唧唇哽å”�åœƒåœ„åŸ‚åŸ”åŸ‹åŸƒå ‰å¤�å¥—å¥˜å¥šå¨‘å¨˜å¨œå¨Ÿå¨›å¨“å§¬å¨ å¨£å¨©å¨¥å¨Œå¨‰å«å±˜å®°å®³å®¶å®´å®®å®µå®¹å®¸å°„屑展å±�å³å³½å³»å³ªå³¨å³°å³¶å´�å³´å·®å¸å¸«åº«åºåº§å¼±å¾’徑å¾�æ�™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�£æ�¥æ��æ�•æ�æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºæ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�æ›¸æœ”æœ•æœ—æ ¡æ ¸æ¡ˆæ¡†æ¡“æ ¹æ¡‚æ¡”æ ©æ¢³æ —æ¡Œæ¡‘æ ½æŸ´æ¡�æ¡€æ ¼æ¡ƒæ ªæ¡…æ “æ ˜æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�ç›Žçœ©çœŸçœ çœ¨çŸ©ç °ç §ç ¸ç �ç ´ç ·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç ¥ç ç ç Ÿç ²ç¥•ç¥�ç¥ ç¥Ÿç¥–ç¥žç¥�ç¥—ç¥šç§¤ç§£ç§§ç§Ÿç§¦ç§©ç§˜çª„çªˆç«™ç¬†ç¬‘ç²‰ç´¡ç´—ç´‹ç´Šç´ ç´¢ç´”ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耘耕耙耗耽耿胱脂胰脅èƒèƒ´è„†èƒ¸èƒ³è„ˆèƒ½è„Šèƒ¼èƒ¯è‡è‡¬èˆ€èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗è�€èŒ±èŒ¨è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙閃院陣陡����������������������������������陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µå�´å�·å��å€�å�¯å�兜冕凰剪副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯啤唸售啜唬啣唳å•�å•—åœˆåœ‹åœ‰åŸŸå …å Šå †åŸ åŸ¤åŸºå ‚å µåŸ·åŸ¹å¤ å¥¢å¨¶å©�婉婦婪婀�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������娼婢婚婆婊å°å¯‡å¯…å¯„å¯‚å®¿å¯†å°‰å°ˆå°‡å± å±œå±�å´‡å´†å´Žå´›å´–å´¢å´‘å´©å´”å´™å´¤å´§å´—å·¢å¸¸å¸¶å¸³å¸·åº·åº¸åº¶åºµåº¾å¼µå¼·å½—å½¬å½©å½«å¾—å¾™å¾žå¾˜å¾¡å¾ å¾œæ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æƒ…æ‚»æ‚µæƒœæ‚¼æƒ˜æƒ•æƒ†æƒŸæ‚¸æƒšæƒ‡æˆšæˆ›æ‰ˆæŽ æŽ§æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—�旋旌旎æ™�晚晤晨晦晞曹勗望æ¢�æ¢¯æ¢¢æ¢“æ¢µæ¡¿æ¡¶æ¢±æ¢§æ¢—æ¢°æ¢ƒæ£„æ¢æ¢†æ¢…梔æ¢�梨梟梡梂欲殺�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒç�†ç�¾ç��ç“ ç“¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç“·ç”œç”¢ç•¥ç•¦ç•¢ç•°ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票ç¥ç§»çª’çª•ç¬ ç¬¨ç¬›ç¬¬ç¬¦ç¬™ç¬žç¬®ç²’ç²—ç²•çµ†çµƒçµ±ç´®ç´¹ç´¼çµ€ç´°ç´³çµ„ç´¯çµ‚ç´²ç´±ç¼½ç¾žç¾šç¿Œç¿Žç¿’è€œè�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“èŽ‰èŽ è�·è�»è�¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖è¢�袋覓è¦�訪è¨�訣訥許è¨è¨Ÿè¨›è¨¢è±‰è±šè²©è²¬è²«è²¨è²ªè²§èµ§èµ¦è¶¾è¶ºè»›è»Ÿé€™é€�通逗連速é€�é€�é€•é€žé€ é€�逢逖逛途����������������������������������部éƒéƒ½é…—野釵釦釣釧é‡é‡©é–‰é™ªé™µé™³é™¸é™°é™´é™¶é™·é™¬é›€é›ªé›©ç« ç«Ÿé ‚é ƒéšé³¥é¹µé¹¿éº¥éº»å‚¢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�å ¯å ªå ´å ¤å °å ±å ¡å �å å£¹å£ºå¥ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������婷媚婿媒媛媧å³å±å¯’富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊å»�廂廄弼å½å¾©å¾ªå¾¨æƒ‘æƒ¡æ‚²æ‚¶æƒ æ„œæ„£æƒºæ„•æƒ°æƒ»æƒ´æ…¨æƒ±æ„Žæƒ¶æ„‰æ„€æ„’æˆŸæ‰‰æŽ£æŽŒæ��æ�€æ�©æ�‰æ�†æ������������������������������������æ�’æ�£æ��æ�¡æ�–æ�æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶景暑智晾晷曾替期æœ�æ£ºæ£•æ£ æ£˜æ£—æ¤…æ£Ÿæ£µæ£®æ£§æ£¹æ£’æ£²æ££æ£‹æ£�æ¤�æ¤’æ¤Žæ£‰æ£šæ¥®æ£»æ¬¾æ¬ºæ¬½æ®˜æ®–æ®¼æ¯¯æ°®æ°¯æ°¬æ¸¯æ¸¸æ¹”æ¸¡æ¸²æ¹§æ¹Šæ¸ æ¸¥æ¸£æ¸›æ¹›æ¹˜æ¸¤æ¹–æ¹®æ¸æ¸¦æ¹¯æ¸´æ¹�渺測湃æ¸�渾滋�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— 登發皖皓皴盜ç��çŸç¡�硬硯ç¨�稈程稅稀窘����������������������������������窗窖童竣ç‰ç–ç†ç�ç’ç”ç�ç‹ç�ç‘粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›è›”蛛蛤è›�蛞街è£�è£‚è¢±è¦ƒè¦–è¨»è© è©•è©žè¨¼è©��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑����������������������������������間閒閎隊階隋陽隅隆éš�陲隄é›�é›…é›„é›†é›‡é›¯é›²éŸŒé …é †é ˆé£§é£ªé£¯é£©é£²é£é¦®é¦é»ƒé»�黑亂å‚債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌å¡å¡Šå¡¢å¡’塋奧å«�嫉嫌媾媽媼�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�會榔æ¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¥šæ¥·æ¥ 楔極椰概楊楨楫楞楓楹榆æ¥�æ¥£æ¥›æ‡æ²æ¯€æ®¿æ¯“毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷ç�…猿猾瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ç�žç�£ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"����������������������������������������������������������������ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œç¨šç¨ ç¨”ç¨Ÿç¨žçªŸçª ç·ç¯€ç ç®ç§ç²±ç²³ç²µç¶“絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�è£¡è£Šè£•è£’è¦œè§£è©«è©²è©³è©¦è©©è©°èª‡è©¼è©£èª è©±èª…è©è©¢è©®è©¬è©¹è©»è¨¾è©¨è±¢è²Šè²‰è³Šè³‡è³ˆè³„貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������辟農é�‹é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶é �é ‘é “é Šé ’é Œé£¼é£´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é£½é£¾é¦³é¦±é¦´é«¡é³©éº‚é¼Žé¼“é¼ åƒ§åƒ®åƒ¥åƒ–åƒåƒšåƒ•åƒ�僑僱僎僩兢凳劃劂匱åŽå—¾å˜€å˜›å˜—嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣åµå¯žå¯§å¯¡å¯¥å¯¦å¯¨å¯¢å¯¤å¯Ÿå°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘摻敲斡旗旖暢暨æš�榜榨榕æ§�榮槓構榛榷榻榫榴æ§�æ§�æ¦æ§Œæ¦¦æ§ƒæ¦£æ‰æŒæ°³æ¼³æ¼”æ»¾æ¼“æ»´æ¼©æ¼¾æ¼ æ¼¬æ¼�漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒爾犒犖ç�„ç��瑤瑣瑪瑰ç‘甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦�種稱窪窩ç«ç«¯ç®¡ç®•箋çµç®—ç®�ç®”ç®�ç®¸ç®‡ç®„ç²¹ç²½ç²¾ç¶»ç¶°ç¶œç¶½ç¶¾ç¶ ç·Šç¶´ç¶²ç¶±ç¶ºç¶¢ç¶¿ç¶µç¶¸ç¶ç·’緇綬�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç½°ç¿ ç¿¡ç¿Ÿè�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣èª�誡誓誤����������������������������������說誥誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žé�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…éŸ¶é —é ˜é¢¯é¢±é¤ƒé¤…é¤Œé¤‰é§�骯骰髦é�é‚鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦å¥å¬‰å«»å¬‹å«µå¬Œå¬ˆå¯®å¯¬å¯©å¯«å±¤å±¥å¶�嶔幢幟幡廢廚廟å»�å»£å» å½ˆå½±å¾·å¾µæ…¶æ…§æ…®æ…�慕憂����������������������������������慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�æ’°æ’¥æ’“æ’•æ’©æ’’æ’®æ’æ’«æ’šæ’¬æ’™æ’¢æ’³æ•µæ•·æ•¸æš®æš«æš´æš±æ¨£æ¨Ÿæ§¨æ¨�æ¨žæ¨™æ§½æ¨¡æ¨“æ¨Šæ§³æ¨‚æ¨…æ§æ¨‘æ�æŽæ®¤æ¯…æ¯†æ¼¿æ½¼æ¾„æ½‘æ½¦æ½”æ¾†æ½æ½›æ½¸æ½®æ¾Žæ½ºæ½°æ½¤æ¾—æ½˜æ»•æ½¯æ½ æ½Ÿç†Ÿç†¬ç†±ç†¨ç‰–çŠ›ç�Žç�—瑩璋璃�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç‘¾ç’€ç•¿ç˜ ç˜©ç˜Ÿç˜¤ç˜¦ç˜¡ç˜¢çššçšºç›¤çžŽçž‡çžŒçž‘çž‹ç£‹ç£…ç¢ºç£Šç¢¾ç£•ç¢¼ç£�稿稼穀稽稷稻窯窮ç®ç®±ç¯„箴篆篇ç¯�ç® ç¯Œç³Šç· ç·´ç·¯ç·»ç·˜ç·¬ç·�編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜è†�è† è†šè†˜è”—è”½è”šè“®è”¬è”蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論è«�èª¶èª¹è«›è±Œè±Žè±¬è³ è³žè³¦è³¤è³¬è³è³¢è³£è³œè³ªè³¡èµè¶Ÿè¶£è¸«è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟輩輦輪輜輞�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������輥é�©é�®é�¨é�é�·é„°é„鄧鄱醇醉醋醃鋅銻銷鋪銬鋤é‹�銳銼鋒鋇鋰銲é–閱霄霆震霉é� éž�éž‹éž�é ¡é «é œé¢³é¤Šé¤“é¤’é¤˜é§�é§�駟駛駑駕駒駙骷髮髯鬧é…é„é·é¯é´†é´‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é´ƒéº©éº¾é»Žå¢¨é½’儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴å¸å¯°å°Žå½Šæ†²æ†‘憩憊æ‡�憶憾懊懈戰擅æ“�擋撻撼據擄擇擂æ“�æ’¿æ“’æ“”æ’¾æ•´æ›†æ›‰æš¹æ›„æ›‡æš¸æ¨½æ¨¸æ¨ºæ©™æ©«æ©˜æ¨¹æ©„æ©¢æ©¡æ©‹æ©‡æ¨µæ©Ÿæ©ˆæ™æ·æ°…濂澱澡�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������濃澤æ¿�æ¾§æ¾³æ¿€æ¾¹æ¾¶æ¾¦æ¾ æ¾´ç†¾ç‡‰ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ç’Ÿç’žç“¢ç”Œç”�ç˜´ç˜¸ç˜ºç›§ç›¥çž çžžçžŸçž¥ç£¨ç£šç£¬ç£§ç¦¦ç©�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉è•蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷è«è«³è«¶è«¼è±«è±è²“賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’éŒ éŒ¶é‹¸éŒ³éŒ¯éŒ¢é‹¼éŒ«éŒ„éŒšï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"����������������������������������������������������������������éŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °é ¸é »é ·é é ¹é ¤é¤�館餞餛餡餚é§é§¢é§±éª¸éª¼é«»é«é¬¨é®‘鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵嚎嚀åš�嚅嚇����������������������������������åš�壕壓壑壎嬰嬪嬤åºå°·å±¨å¶¼å¶ºå¶½å¶¸å¹«å½Œå¾½æ‡‰æ‡‚æ‡‡æ‡¦æ‡‹æˆ²æˆ´æ“Žæ“Šæ“˜æ“ æ“°æ“¦æ“¬æ“±æ“¢æ“æ–‚斃曙曖檀檔檄檢檜櫛檣橾檗æª�æª æœæ®®æ¯šæ°ˆæ¿˜æ¿±æ¿Ÿæ¿ 濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥ç‡ç‡¬ç‡´ç‡ 爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������瞧çžçŸ¯ç£·ç£ºç£´ç£¯ç¤�禧禪穗窿簇ç°�ç¯¾ç¯·ç°Œç¯ ç³ ç³œç³žç³¢ç³Ÿç³™ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºè‡‚è‡€è†¿è†½è‡‰è†¾è‡¨èˆ‰è‰±è–ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è–„è•¾è–œè–‘è–”è–¯è–›è–‡è–¨è–Šè™§èŸ€èŸ‘èž³èŸ’èŸ†èž«èž»èžºèŸˆèŸ‹è¤»è¤¶è¥„è¤¸è¤½è¦¬è¬Žè¬—è¬™è¬›è¬Šè¬ è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”é—Šé—‹é—Œé—ˆé—†éš±éš¸é›–éœœéœžéž éŸ“é¡†é¢¶é¤µé¨��\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������駿鮮鮫鮪é®é´»é´¿éº‹é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�æ‡£æˆ³æ“´æ“²æ“¾æ”†æ“ºæ“»æ“·æ–·æ›œæœ¦æª³æª¬æ«ƒæª»æª¸æ«‚æª®æª¯æŸæ¸æ®¯ç€‰ç€‹æ¿¾ç€†æ¿ºç€‘ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•ç™–ç™˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç™’çž½çž¿çž»çž¼ç¤Žç¦®ç©¡ç©¢ç© ç«„ç«…ç°«ç°§ç°ªç°žç°£ç°¡ç³§ç¹”ç¹•ç¹žç¹šç¹¡ç¹’ç¹™ç½ˆç¿¹ç¿»è�·è�¶è‡�è‡�舊è—�è–©è—�è—�è—‰è–°è–ºè–¹è–¦èŸ¯èŸ¬èŸ²èŸ è¦†è¦²è§´è¬¨è¬¹è¬¬è¬«è±�贅蹙蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖é—�闕離雜雙雛雞霤鞣鞦�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������éžéŸ¹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é�éŽé�鯊鯉鯽鯈鯀鵑éµ�éµ é» é¼•é¼¬å„³åš¥å£žå£Ÿå£¢å¯µé¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹ç¹¹ç¹©ç¹ªç¾…繳羶羹羸臘藩è—�è—ªè—•è—¤è—¥è—·èŸ»è …è �èŸ¹èŸ¾è¥ è¥Ÿè¥–è¥žè�èœè˜è‰èšèŽè�è†è™è´ˆè´Šè¹¼è¹²èº‡è¹¶è¹¬è¹ºè¹´è½”轎è¾é‚Šé‚‹é†±é†®é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´é›£éœªéœ§é�¡éŸœéŸ»é¡žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������願顛颼饅饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤å€åƒå½å¯¶å·‰æ‡¸æ‡ºæ”˜æ””攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬礫竇競籌籃ç±�ç³¯ç³°è¾®ç¹½ç¹¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çº‚ç½Œè€€è‡šè‰¦è—»è—¹è˜‘è—ºè˜†è˜‹è˜‡è˜Šè ”è •è¥¤è¦ºè§¸è°è¬è¦è¯èŸè«è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼蘗è˜è˜šè £è ¢è ¡è Ÿè¥ªè¥¬è¦½è´ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������è·è½è´“躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅驃驀騾é«�é”é‘é°é°¥é¶¯é¶´é·‚鶸éº�黯鼙齜齦齧儼儻囈囊囉å¿å·”巒彎懿攤權æ¡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽霾韃éŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�ç“šç«Šç±¤ç±£ç±¥çº“çº–çº”è‡¢è˜¸è˜¿è ±è®Šé‚�é‚�é‘£é‘ é‘¤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�ç¾ˆè ¶è ¹è¡¢è®“è®’ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������讖艷贛釀鑪é�‚é�ˆé�„韆顰驟鬢é˜é±Ÿé·¹é·ºé¹¼é¹½é¼‡é½·é½²å»³æ¬–ç�£ç±¬ç±®è »è§€èº¡é‡�鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[201] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇äº�囗兀屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼仨仜仩仡ä»�仚刌匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰�氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓刉åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿å–尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�æ‰œæ‰žæ‰¤æ‰¡æ‰¦æ‰¢æ‰™æ‰ æ‰šæ‰¥æ—¯æ—®æœ¾æœ¹æœ¸æœ»æœºæœ¿æœ¼æœ³æ°˜æ±†æ±’æ±œæ±�汊汔汋�\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�è¥¾é‚™é‚—é‚˜é‚›é‚”é˜¢é˜¤é˜ é˜£ä½–ä¼»ä½¢ä½‰ä½“ä½¤ä¼¾ä½§ä½’ä½Ÿä½�佘ä¼ä¼³ä¼¿ä½¡å†�冹刜刞刡åŠåŠ®åŒ‰å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�½å‘�å‘�å�¨å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’å¤†å¥€å¦¦å¦˜å¦ å¦—å¦Žå¦¢å¦�å¦�妧妡宎宒尨尪å²�å²�å²ˆå²‹å²‰å²’å²Šå²†å²“å²•å· å¸Šå¸Žåº‹åº‰åºŒåºˆåº�å¼…å¼�彸彶忒忑å¿�å¿å¿¨å¿®å¿³å¿¡å¿¤å¿£å¿ºå¿¯å¿·å¿»æ€€å¿´æˆºæŠƒæŠŒæŠŽæŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴攷旰旴旳旲旵æ�…æ�‡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�æ±±æ±¯æ±©æ²šæ±æ²‡æ²•沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�èŠ…èŠŽèŠ‘èŠ“ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŠŠèŠƒèŠ„è±¸è¿‰è¾¿é‚Ÿé‚¡é‚¥é‚žé‚§é‚ é˜°é˜¨é˜¯é˜ä¸³ä¾˜ä½¼ä¾…佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑咂咈呫呺呾呥呬呴呦å’�å‘¯å‘¡å‘ å’˜å‘£å‘§å‘¤å›·å›¹å�¯å�²å�å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇å¢å¥å®“å®•å±„å±‡å²®å²¤å² å²µå²¯å²¨å²¬å²Ÿå²£å²å²¢å²ªå²§å²�å²¥å²¶å²°å²¦å¸—å¸”å¸™å¼¨å¼¢å¼£å¼¤å½”å¾‚å½¾å½½å¿žå¿¥æ€æ€¦æ€™æ€²æ€‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ€´æ€Šæ€—怳怚怞怬怢æ€�æ€�æ€®æ€“æ€‘æ€Œæ€‰æ€œæˆ”æˆ½æŠæŠ´æ‹‘æŠ¾æŠªæŠ¶æ‹ŠæŠ®æŠ³æŠ¯æŠ»æŠ©æŠ°æŠ¸æ”½æ–¨æ–»æ˜‰æ—¼æ˜„æ˜’æ˜ˆæ—»æ˜ƒæ˜‹æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃æ�½æž�æ�¸æ�¹æž”æ¬¥æ®€æ¾æ¯žæ°�æ²“æ³¬æ³«æ³®æ³™æ²¶æ³”æ²æ³§æ²·æ³�æ³‚æ²ºæ³ƒæ³†æ³æ³²ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������泒æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡çŽçŽ¦çŽ¢çŽ çŽ¬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵è‚èˆ èŠ è‹€èŠ«èŠšèŠ˜èŠ›èŠµèŠ§èŠ®èŠ¼èŠžèŠºèŠ´èŠ¨èŠ¡èŠ©è‹‚èŠ¤è‹ƒèŠ¶èŠ¢è™°è™¯è™è™®è±–è¿’è¿‹è¿“è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅俓侲俉俋ä¿�俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’å’¥å“��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������哃èŒ�å’·å’®å“–å’¶å“…å“†å’ å‘°å’¼å’¢å’¾å‘²å“žå’°åžµåžžåžŸåž¤åžŒåž—åž�垛垔垘åž�垙垥垚垕壴å¤�奓姡姞姮娀姱å§�å§ºå§½å§¼å§¶å§¤å§²å§·å§›å§©å§³å§µå§ å§¾å§´å§å®¨å±Œå³�峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔å³�å³ˆå³†å³Žå³Ÿå³¸å·¹å¸¡å¸¢å¸£å¸ å¸¤åº°åº¤åº¢åº›åº£åº¥å¼‡å¼®å½–å¾†æ€·æ€¹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲柈枺�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵æŸ�æž³æŸ·æŸ¶æŸ®æŸ£æŸ‚æž¹æŸŽæŸ§æŸ°æž²æŸ¼æŸ†æŸæŸŒæž®æŸ¦æŸ›æŸºæŸ‰æŸŠæŸƒæŸªæŸ‹æ¬¨æ®‚æ®„æ®¶æ¯–æ¯˜æ¯ æ° æ°¡æ´¨æ´´æ´æ´Ÿæ´¼æ´¿æ´’洊泚洳洄洙洺洚洑洀æ´�浂����������������������������������æ´�洘洷洃æ´�æµ€æ´‡æ´ æ´¬æ´ˆæ´¢æ´‰æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„çœˆçœƒçœ„çœ…çœŠç›·ç›»ç›ºçŸ§çŸ¨ç †ç ‘ç ’ç …ç �ç �ç Žç ‰ç ƒç “ç¥Šç¥Œç¥‹ç¥…ç¥„ç§•ç§�ç§�秖秎窀�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"����������������������������������������������������������������穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�è€”è€·èƒ˜èƒ‡èƒ èƒ‘èƒˆèƒ‚èƒ�胅胣胙胜胊胕胉èƒ�胗胦èƒ�è‡¿èˆ¡èŠ”è‹™è‹¾è‹¹èŒ‡è‹¨èŒ€è‹•èŒºè‹«è‹–è‹´è‹¬è‹¡è‹²è‹µèŒŒè‹»è‹¶è‹°è‹ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‹¤è‹ è‹ºè‹³è‹è™·è™´è™¼è™³è¡�è¡Žè¡§è¡ªè¡©è§“è¨„è¨‡èµ²è¿£è¿¡è¿®è¿ éƒ±é‚½é‚¿éƒ•éƒ…é‚¾éƒ‡éƒ‹éƒˆé‡”é‡“é™”é™�é™‘é™“é™Šé™Žå€žå€…å€‡å€“å€¢å€°å€›ä¿µä¿´å€³å€·å€¬ä¿¶ä¿·å€—å€œå€ å€§å€µå€¯å€±å€Žå…šå†”å†“å‡Šå‡„å‡…å‡ˆå‡Žå‰¡å‰šå‰’å‰žå‰Ÿå‰•å‰¢å‹�匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å”Šå“»å“·å“¸å“ å”Žå”ƒå”‹åœ�åœ‚åŸŒå ²åŸ•åŸ’åžºåŸ†åž½åž¼åž¸åž¶åž¿åŸ‡åŸ�åž¹åŸ�夎奊娙娖å¨å¨®å¨•å¨�娗娊娞娳å¬å®§å®å®¬å°ƒå±–屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ��æ�šæ�§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��悢悈悀悒æ‚�æ‚�悃悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”æ�™æŒæ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„æ—‚æ™Šæ™Ÿæ™‡æ™‘æœ’æœ“æ Ÿæ šæ¡‰æ ²æ ³æ »æ¡‹æ¡�æ –æ ±æ œæ µæ «æ æ ¯æ¡Žæ¡„æ ´æ �æ ’æ ”æ ¦æ ¨æ ®æ¡�æ ºæ ¥æ æ¬¬æ¬¯æ¬æ¬±æ¬´æè‚‚殈毦毤�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������毨毣毢毧氥浺浣浤浶æ´�æµ¡æ¶’æµ˜æµ¢æµæµ¯æ¶‘æ¶�æ·¯æµ¿æ¶†æµžæµ§æµ æ¶—æµ°æµ¼æµŸæ¶‚æ¶˜æ´¯æµ¨æ¶‹æµ¾æ¶€æ¶„æ´–æ¶ƒæµ»æµ½æµµæ¶�烜烓烑çƒ�çƒ‹ç¼¹çƒ¢çƒ—çƒ’çƒžçƒ çƒ”çƒ�烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿç“´ç“µç”¡ç•›ç•Ÿç–°ç—�疻痄痀疿疶疺皊盉çœ�眛çœ�çœ“çœ’çœ£çœ‘çœ•çœ™çœšçœ¢çœ§ç £ç ¬ç ¢ç µç ¯ç ¨ç ®ç «ç ¡ç ©ç ³ç ªç ±ç¥”ç¥›ç¥�ç¥œç¥“ç¥’ç¥‘ç§«ç§¬ç§ ç§®ç§ç§ªç§œç§žç§�窆窉窅窋窌窊窇竘ç¬��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�ç´Œç½œç½¡ç½žç½ ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳èŒè�„茙è�‘茥è�–茿è��茦茜茢����������������������������������è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��èŒ–èŒ¤èŒ èŒ·èŒ¯èŒ©è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄è¡è¡µè¡¶è¡²è¢€è¡±è¡¿è¡¯è¢ƒè¡¾è¡´è¡¼è¨’è±‡è±—è±»è²¤è²£èµ¶èµ¸è¶µè¶·è¶¶è»‘è»“è¿¾è¿µé€‚è¿¿è¿»é€„è¿¼è¿¶éƒ–éƒ éƒ™éƒšéƒ£éƒŸéƒ¥éƒ˜éƒ›éƒ—éƒœéƒ¤é…��\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"����������������������������������������������������������������酎é…�釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫å‰å‰¬å‰®å‹–å‹“åŒåŽœå•µå•¶å”¼å•�å•�唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈å”å”»å•€å•‹åœŠåœ‡åŸ»å ”åŸ¢åŸ¶åŸœåŸ´å €åŸåŸ½å ˆåŸ¸å ‹åŸ³åŸ�å ‡åŸ®åŸ£åŸ²åŸ¥åŸ¬åŸ¡å ŽåŸ¼å �埧å �å ŒåŸ±åŸ©åŸ°å �å „å¥œå© å©˜å©•å©§å©žå¨¸å¨µå©å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜å²å®å¯�寀屙崞崋å´�å´šå´ å´Œå´¨å´�崦崥å´��\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽæŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�掮æ�¼æŽ¤æŒ»æŽŸï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�æ¢œæ¡æ¡®æ¢®æ¢«æ¥–桯梣梬梩桵桴梲æ¢�æ¡·æ¢’æ¡¼æ¡«æ¡²æ¢ªæ¢€æ¡±æ¡¾æ¢›æ¢–æ¢‹æ¢ æ¢‰æ¢¤æ¡¸æ¡»æ¢‘æ¢Œæ¢Šæ¡½æ¬¶æ¬³æ¬·æ¬¸æ®‘æ®�æ®�æ®Žæ®Œæ°ªæ·€æ¶«æ¶´æ¶³æ¹´æ¶¬æ·©æ·¢æ¶·æ·¶æ·”æ¸€æ·ˆæ· æ·Ÿæ·–æ¶¾æ·¥æ·œæ·�æ·›æ·´æ·Šæ¶½æ·æ·°æ¶ºæ·•æ·‚æ·�淉�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎牾牻牼牿çŒ�猗猇猑猘猊猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�����������������������������������痋痌痑ç—�çš�皉盓眹眯çœçœ±çœ²çœ´çœ³çœ½çœ¥çœ»çœµç¡ˆç¡’硉ç¡�ç¡Šç¡Œç ¦ç¡…ç¡�祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵ç‡ç¬´ç¬¥ç¬°ç¬¢ç¬¤ç¬³ç¬˜ç¬ªç¬�笱笫ç¬ç¬¯ç¬²ç¬¸ç¬šç¬£ç²”粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„脟脬脞脡脕脧è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶èŽšè™™è™–èš¿èš·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è›‚è›�蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘軞è»�è»œè»—è» è»¡é€¤é€‹é€‘é€œé€Œé€¡éƒ¯éƒªéƒ°éƒ´éƒ²éƒ³éƒ”éƒ«éƒ¬éƒ©é…–é…˜é…šé…“é…•é‡¬é‡´é‡±é‡³é‡¸é‡¤é‡¹é‡ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������釫釷釨釮镺閆閈陼é™é™«é™±é™¯éš¿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥å–啷噅喢喓喈å–�å–µå–�å–£å–’å–¤å•½å–Œå–¦å•¿å–•å–¡å–ŽåœŒå ©å ·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ™å žå §å £å ¨åŸµå¡ˆå ¥å œå ›å ³å ¿å ¶å ®å ¹å ¸å å ¬å »å¥¡åª¯åª”åªŸå©ºåª¢åªžå©¸åª¦å©¼åª¥åª¬åª•åª®å¨·åª„åªŠåª—åªƒåª‹åª©å©»å©½åªŒåªœåª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌惢惎惄愔�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒����������������������������������晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�湳渜渳湋湀湑渻渃渮湞�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¹¨æ¹œæ¹¡æ¸±æ¸¨æ¹ æ¹±æ¹«æ¸¹æ¸¢æ¸°æ¹“æ¹¥æ¸§æ¹¸æ¹¤æ¹·æ¹•æ¹¹æ¹’æ¹¦æ¸µæ¸¶æ¹šç„ ç„žç„¯çƒ»ç„®ç„±ç„£ç„¥ç„¢ç„²ç„Ÿç„¨ç„ºç„›ç‰‹ç‰šçŠˆçŠ‰çŠ†çŠ…çŠ‹çŒ’çŒ‹çŒ°çŒ¢çŒ±çŒ³çŒ§çŒ²çŒçŒ¦çŒ£çŒµçŒŒç�®ç�¬ç�°ç�«ç�–����������������������������������ç�šç�¡ç�ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ 硤硥硜ç¡ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤çŠç¬»ç„çˆçŒçŽç€ç˜ç…粢粞粨粡絘絯絣絓絖絧絪çµ�çµçµœçµ«çµ’絔絩絑絟絎缾缿罥�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç½¦ç¾¢ç¾ ç¾¡ç¿—è�‘è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è��è�žè�‘è�†è�‚è�³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�•è�ºè�‡è�‘è�ªè�“è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩é€é€´é€¯é„†é„¬é„„郿郼鄈郹郻é„�é„€é„‡é„…é„ƒé…¡é…¤é…Ÿé…¢é… éˆ�鈊鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾隈����������������������������������隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�å¡™å¡¥å¡›å ½å¡£å¡±å£¼å«‡å«„å«‹åªºåª¸åª±åªµåª°åª¿å«ˆåª»å«†ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������媷嫀嫊媴媶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�å¹‹å»…å»Œå»†å»‹å»‡å½€å¾¯å¾æƒ·æ…‰æ…Šæ„«æ……愶愲愮慆愯æ…�æ„©æ…€æˆ é…¨æˆ£æˆ¥æˆ¤æ�…æ�±æ�«æ��æ�’æ�‰æ� æ�¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�³æ‘ƒæ�Ÿæ�•æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓暆暌暕æš�æš‹æšŠæš™æš”æ™¸æœ æ¥¦æ¥Ÿæ¤¸æ¥Žæ¥¢æ¥±æ¤¿æ¥…æ¥ªæ¤¹æ¥‚æ¥—æ¥™æ¥ºæ¥ˆæ¥‰æ¤µæ¥¬æ¤³æ¤½æ¥¥æ£°æ¥¸æ¤´æ¥©æ¥€æ¥¯æ¥„æ¥¶æ¥˜æ¥�楴楌椻楋椷楜æ¥�æ¥‘æ¤²æ¥’æ¤¯æ¥»æ¤¼æ†æ…æƒæ‚æˆæ�æ®›ï¨�毻毼�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������毹毷毸溛滖滈æº�æ»€æºŸæº“æº”æº æº±æº¹æ»†æ»’æº½æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�æ»Šæº—æº®æº£ç…‡ç…”ç…’ç…£ç… ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�煓����������������������������������煄ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶ç—痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ç�§ç�”ç�™ç�çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������稛ç¨�窣窢窞竫ç¦ç¤çç´ç©ç²ç¥ç³ç±ç°ç¡ç¸ç¶ç£ç²²ç²´ç²¯ç¶ˆç¶†ç¶€ç¶�絿綅絺綎絻綃絼綌綔綄絽綒ç½ç½«ç½§ç½¨ç½¬ç¾¦ç¾¥ç¾§ç¿›ç¿œè€¡è…¤è… 腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�葟葰è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³è‘¨è‘¾è‘„è�«è‘ 葔葮è‘�蜋蜄蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�覅覛觟觥觤�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è§¡è§ è§¢è§œè§¦è©¶èª†è©¿è©¡è¨¿è©·èª‚èª„è©µèªƒèª�詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�è¶’è·°è· è·¬è·±è·®è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿����������������������������������é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆é‰é‰¬é‰�é‰ é‰§é‰¯éˆ¶é‰¡é‰°éˆ±é‰”é‰£é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �é Žé¢¬é£¶é£¹é¦¯é¦²é¦°é¦µéªéª«é›é³ªé³é³§éº€é»½åƒ¦åƒ”僗僨僳僛僪åƒ�åƒ¤åƒ“åƒ¬åƒ°åƒ¯åƒ£åƒ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������凘劀åŠ�勩勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚å«å««å«³å«¢å« 嫛嫬嫞å«�嫙嫨嫟å·å¯ ����������������������������������寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�æ‘´æ‘¶æ‘²æ‘³æ‘½æ‘µæ‘¦æ’¦æ‘Žæ’‚æ‘žæ‘œæ‘‹æ‘“æ‘ æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…æœ„æœ¢æ¦±æ¦¶æ§‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¦ æ§Žæ¦–æ¦°æ¦¬æ¦¼æ¦‘æ¦™æ¦Žæ¦§æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓榪榡榞槙榗æ¦�æ§‚æ¦µæ¦¥æ§†æŠæ�æ‹æ®žæ®Ÿæ® æ¯ƒæ¯„æ¯¾æ»Žæ»µæ»±æ¼ƒæ¼¥æ»¸æ¼·æ»»æ¼®æ¼‰æ½Žæ¼™æ¼šæ¼§æ¼˜æ¼»æ¼’æ»æ¼Šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¼¶æ½³æ»¹æ»®æ¼æ½€æ¼°æ¼¼æ¼µæ»«æ¼‡æ¼Žæ½ƒæ¼…滽滶漹漜滼漺漟æ¼�漞漈漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ 碬碢碤禘禊禋禖禕禔禓�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤è��è�œè†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�è’ è“—è“”è“’è“›è’°è’‘è™¡èœ³èœ£èœ¨è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ 蜲蜪èœèœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�é„£é„œé„ é„¢é„Ÿé„�é„šé„¤é„¡é„›é…ºé…²é…¹é…³éŠ¥éŠ¤é‰¶éŠ›é‰ºéŠ éŠ”éŠªéŠ�����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩éŠ�銋éˆéšžéš¡é›¿é�˜é�½é�ºé�¾éžƒéž€éž‚é�»éž„éž�é�¿éŸŽéŸ�é –é¢é¢®é¤‚餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧鬾鬿é é¡éŸé³±é³²é³µéº§åƒ¿å„ƒå„°åƒ¸å„†å„‡åƒ¶åƒ¾å„‹å„Œåƒ½å„ŠåŠ‹åŠŒå‹±å‹¯å™ˆå™‚å™Œå˜µå™�噊噉噆噘�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�å¢±å¢ å¢£å¢¯å¢¬å¢¥å¢¡å£¿å«¿å«´å«½å«·å«¶å¬ƒå«¸å¬‚å«¹å¬�嬇嬅å¬�å±§å¶™å¶—å¶Ÿå¶’å¶¢å¶“å¶•å¶ å¶œå¶¡å¶šå¶žå¹©å¹�å¹ å¹œç·³å»›å»žå»¡å½‰å¾²æ†‹æ†ƒæ…¹æ†±æ†°æ†¢æ†‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ†›æ†“æ†¯æ†æ†Ÿæ†’憪憡æ†�æ…¦æ†³æˆæ‘®æ‘°æ’–æ’ æ’…æ’—æ’œæ’�æ’‹æ’Šæ’Œæ’£æ’Ÿæ‘¨æ’±æ’˜æ•¶æ•ºæ•¹æ•»æ–²æ–³æšµæš°æš©æš²æš·æšªæš¯æ¨€æ¨†æ¨—æ§¥æ§¸æ¨•æ§±æ§¤æ¨ æ§¿æ§¬æ§¢æ¨›æ¨�槾樧槲槮樔槷槧橀樈槦槻æ¨�槼槫樉樄樘樥æ¨�æ§¶æ¨¦æ¨‡æ§´æ¨–æ‘æ®¥æ®£æ®¢æ®¦æ°�氀毿氂æ½�漦潾澇濆澒�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫潽潧æ¾�æ½“æ¾‹æ½©æ½¿æ¾•æ½£æ½·æ½ªæ½»ç†²ç†¯ç†›ç†°ç† ç†šç†©ç†µç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�ç£Œç£‘ç£Žç£”ç£ˆç£ƒç£„ç£‰ç¦šç¦¡ç¦ ç¦œç¦¢ç¦›æ¶ç¨¹çª²çª´çª³ç®·ç¯‹ç®¾ç®¬ç¯Žç®¯ç®¹ç¯Šç®µç³…糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰ç¾ç¿ç¿«ç¿ªç¿¬ç¿¦ç¿¨è�¤è�§è†£è†Ÿï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������膞膕膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�è”®è”‚è“½è”žè“¶è”±è”¦è“§è“¨è“°è“¯è“¹è”˜è” è”°è”‹è”™è”¯è™¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣è§è§°è§¬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�è³§è¶ è¶œè¶¡è¶›è¸ è¸£è¸¥è¸¤è¸®è¸•è¸›è¸–è¸‘è¸™è¸¦è¸§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¸”è¸’è¸˜è¸“è¸œè¸—è¸šè¼¬è¼¤è¼˜è¼šè¼ è¼£è¼–è¼—é�³é�°é�¯é�§é�«é„¯é„«é„©é„ªé„²é„¦é„®é†…醆醊é†�醂醄醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�é‹•é‹‰é‹ é‹žé‹§é‹‘é‹“ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éŠµé‹¡é‹†éŠ´é•¼é–¬é–«é–®é–°éš¤éš¢é›“éœ…éœˆéœ‚é�šéžŠéžŽéžˆéŸ�éŸ�é žé �é ¦é ©é ¨é é ›é §é¢²é¤ˆé£ºé¤‘é¤”é¤–é¤—é¤•é§œé§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱é†éƒé§é´é±é¦é¶éµé°é¨é¤é¬é³¼é³ºé³½é³¿é³·é´‡é´€é³¹é³»é´ˆé´…鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ 噮�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������噳噦噣å™å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�å¬–å¬¨å¬šå¬ å¬žå¯¯å¶¬å¶±å¶©å¶§å¶µå¶°å¶®å¶ªå¶¨å¶²å¶å¶¯å¶´å¹§å¹¨å¹¦å¹¯å»©å»§å»¦å»¨å»¥å½‹å¾¼æ†�憨憖懅憴懆æ‡�懌憺����������������������������������憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽暻暺曌朣樴橦橉橧樲橨樾æ©�æ©æ©¶æ©›æ©‘樨橚樻樿æ©�橪橤æ©�æ©�æ©”æ©¯æ©©æ© æ¨¼æ©žæ©–æ©•æ©�æ©Žæ©†æ•æ”æ–æ®§æ®ªæ®«æ¯ˆæ¯‡æ°„æ°ƒæ°†æ¾æ¿‹æ¾£æ¿‡æ¾¼æ¿Žæ¿ˆæ½žæ¿„澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ 璔璒璕璡甋疀瘯ç˜ç˜±ç˜½ç˜³ç˜¼ç˜µç˜²ç˜°çš»ç›¦çžšçž�瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗ç£�磩磥磪磞磣磛磡磢ç£ç£Ÿç£ 禤穄穈穇窶窸窵窱窷篞篣篧ç¯�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗ç³�ç³‘ç¸’ç¸¡ç¸—ç¸Œç¸Ÿç¸ ç¸“ç¸Žç¸œç¸•ç¸šç¸¢ç¸‹ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������蕀蕆蕤è•�è•¢è•„è•‘è•‡è•£è”¾è•›è•±è•Žè•®è•µè••è•§è• è–Œè•¦è•�蕔蕥蕬虣虥虤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰è¤è¤®è¤§è¤±è¤¢è¤©è¤£è¤¯è¤¬è¤Ÿè§±è« ����������������������������������諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»é‚†éƒºé„³é„µé„¶é†“é†�醑é†�é†�錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒéŒŽéŒ�é‹‹éŒ�鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒éœ�éž™éž—éž”éŸ°éŸ¸é µé ¯é ²é¤¤é¤Ÿé¤§é¤©é¦žé§®é§¬é§¥é§¤é§°é§£é§ªé§©é§§éª¹éª¿éª´éª»é«¶é«ºé«¹é«·é¬³é®€é®…é®‡é¼é¾é»é®‚鮓鮒é®�éºé®•����������������������������������é½é®ˆé´¥é´—é´ é´žé´”é´©é´�鴘鴢é´�鴙鴟麈麆麇麮éºé»•é»–é»ºé¼’é¼½å„¦å„¥å„¢å„¤å„ å„©å‹´åš“åšŒåš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒å¬å¬¥å¬²å¬£å¬¬å¬§å¬¦å¬¯å¬®å»å¯±å¯²å¶·å¹¬å¹ªå¾¾å¾»æ‡ƒæ†µæ†¼æ‡§æ‡ 懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª�檖æª�檥檉檟檛檡檞檇檓檎�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æª•æªƒæª¨æª¤æª‘æ©¿æª¦æªšæª…æªŒæª’æ›æ®æ°‰æ¿Œæ¾©æ¿´æ¿”æ¿£æ¿œæ¿æ¿§æ¿¦æ¿žæ¿²æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�ç’ªç’璱璥璯ç”�甑甒ç”�疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨ç¸ç¸¼ç¹‚縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�è–§è–•è– è–‹è–£è•»è–¤è–šè–žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆è–�è–™è–�è–�薢薂薈薅蕹蕶薘è–�薟虨螾螪èžèŸ…螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒褷襂è¦è¦¯è¦®è§²è§³è¬žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¬˜è¬–謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰豲豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�é† éŽ¡éŽƒéŽ¯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��é�‘é� é�éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§éŽ€é�Žé�™é—‡é—€é—‰é—ƒé—…é–·éš®éš°éš¬éœ éœŸéœ˜éœ�霙鞚鞡鞜�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯é¤é¤±é¤°é¦˜é¦£é¦¡é¨‚駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼éˆé®šé®¨é®žé®›é®¦é®¡é®¥é®¤é®†é®¢é® 鮯鴳éµ�鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵é´éºŠéº‰éº�éº°é»ˆé»šé»»é»¿é¼¤é¼£é¼¢é½”é¾ å„±å„儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀å¹å¹®æ‡˜æ‡Ÿæ‡æ‡®æ‡±æ‡ªæ‡°æ‡«æ‡–懩擿攄擽擸æ”�æ”ƒæ“¼æ–”æ—›æ›šæ››æ›˜æ«…æª¹æª½æ«¡æ«†æªºæª¶æª·æ«‡æª´æªæžæ¯‰æ°‹ç€‡ç€Œç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������璸瓀璵ç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺磿礌礓礔礉ç¤�礒礑ç¦ç¦¬ç©Ÿç°œç°©ç°™ç° ç°Ÿç°ç°�簦簨簢簥簰繜ç¹�ç¹–ç¹£ç¹˜ç¹¢ç¹Ÿç¹‘ç¹ ç¹—ç¹“ç¾µç¾³ç¿·ç¿¸è�µè‡‘臒����������������������������������è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓èŸèŸ˜èŸ£èž¤èŸ—蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉謪謧謣謳謰謵è‡è¬¯è¬¼è¬¾è¬±è¬¥è¬·è¬¦è¬¶è¬®è¬¤è¬»è¬½è¬ºè±‚è±µè²™è²˜è²—è³¾è´„è´‚è´€è¹œè¹¢è¹ è¹—è¹–è¹žè¹¥è¹§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������蹛蹚蹡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟éŽ�鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵éŠéŒé‹é¯‡é¯†é¯ƒé®¿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫åšåš¦åš§åšªåš¬å£šå£�壛夒嬽嬾嬿巃幰�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������徿懻攇æ”�æ”�攉攌攎斄旞æ—�æ›žæ«§æ« æ«Œæ«‘æ«™æ«‹æ«Ÿæ«œæ«�æ««æ«�æ«�æ«žæ æ®°æ°Œç€™ç€§ç€ ç€–ç€«ç€¡ç€¢ç€£ç€©ç€—ç€¤ç€œç€ªçˆŒçˆŠçˆ‡çˆ‚çˆ…çŠ¥çŠ¦çŠ¤çŠ£çŠ¡ç“‹ç“…ç’·ç“ƒç”–ç™ çŸ‰çŸŠçŸ„çŸ±ç¤�礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕艤艡艣藫藱è—è—™è—¡è—¨è—šè——è—¬è—²è—¸è—˜è—Ÿè—£è—œè—‘è—°è—¦è—¯è—žè—¢è €èŸºè ƒèŸ¶èŸ·è ‰è Œè ‹è †èŸ¼è ˆèŸ¿è Šè ‚è¥¢è¥šè¥›è¥—è¥¡è¥œè¥˜è¥�襙覈覷覶觶è�èˆèŠè€è“è–è”è‹è•�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������è‘è‚è’è—豃豷豶貚贆贇贉趬趪è¶è¶«è¹è¹¸è¹³è¹ªè¹¯è¹»è»‚轒轑è½�è½�轓辴酀鄿醰é†é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žé�€é�’é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�é¨¤é¨›é¨¢é¨ é¨§é¨£é¨žé¨œé¨”é«‚é¬‹é¬Šé¬Žé¬Œé¬·é¯ªé¯«é¯ é¯žé¯¤é¯¦é¯¢é¯°é¯”é¯—é¯¬é¯œé¯™é¯¥é¯•é¯¡é¯šéµ·é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼é¼é½€é½�é½�齖齗齘匷嚲�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������嚵嚳壣å…巆巇廮廯忀å¿�懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱ç�‚瀸瀿瀺瀹ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›çŸŒçŸŽçŸ�çŸ�矲礥礣礧礨礤礩����������������������������������禲穮穬ç©ç«·ç±‰ç±ˆç±Šç±‡ç±…糮繻繾çº�纀羺翿è�¹è‡›è‡™èˆ‹è‰¨è‰©è˜¢è—¿è˜�è—¾è˜›è˜€è—¶è˜„è˜‰è˜…è˜Œè—½è ™è �è ‘è —è “è –è¥£è¥¦è¦¹è§·è èªè�è¨è£è¥è§è趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�Šé�¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"����������������������������������������������������������������é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌饋饓騲騴騱騬騪騶騩騮騸é¨é«‡é«Šé«†é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶�鶒鶘é¶�é¶›ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¶ é¶”é¶œé¶ªé¶—é¶¡é¶šé¶¢é¶¨é¶žé¶£é¶¿é¶©é¶–é¶¦é¶§éº™éº›éºšé»¥é»¤é»§é»¦é¼°é¼®é½›é½ é½žé½�齙龑儺儹劘劗囃嚽嚾åˆå‡å·‹å·�廱懽攛欂櫼欃櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�ç¤ç¤±ç¤¯ç±”籓糲纊纇纈纋纆çº�ç½�羻耰è‡�è˜˜è˜ªè˜¦è˜Ÿè˜£è˜œè˜™è˜§è˜®è˜¡è˜ è˜©è˜žè˜¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è ©è �è ›è è ¤è œè «è¡Šè¥è¥©è¥®è¥«è§ºè¹è¸è…èºè»è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�¼é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺����������������������������������騿é«�鬕鬗鬘鬖鬺é’é°«é°�鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱é¶é·Œé¶³é·�鶲鹺麜黫黮é»é¼›é¼˜é¼šé¼±é½Žé½¥é½¤é¾’亹囆囅囋奱å‹åŒå·•å·‘å»²æ”¡æ” æ”¦æ”¢æ¬‹æ¬ˆæ¬‰æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ç“•瓙瓗ç™çšç¤µç¦´ç©°ç©±ç±—籜籙籛籚�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������糴糱纑ç½�ç¾‡è‡žè‰«è˜´è˜µè˜³è˜¬è˜²è˜¶è ¬è ¨è ¦è ªè ¥è¥±è¦¿è¦¾è§»è¾è®„讂讆讅è¿è´•躕躔躚躒èº�èº–èº—è½ è½¢é…‡é‘Œé‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊����������������������������������驉驒é©�é«�鬙鬫鬻é–é•鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲å�å·˜è ¯å½�æˆ�戃戄攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�çŽƒç™°çŸ”ç±§ç±¦çº•è‰¬è˜ºè™€è˜¹è˜¼è˜±è˜»è˜¾è °è ²è ®è ³è¥¶è¥´è¥³è§¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕é‘�é‘—é‘žéŸ„éŸ…é €é©–é©™é¬žé¬Ÿé¬ é±’é±˜é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨é·é»‚é»�黲黳鼆鼜鼸鼷鼶齃é½�����������������������������������齱齰齮齯囓å›�åŽå±æ”æ›æ›®æ¬“ç�Ÿç�¡ç��ç� 爣瓛瓥矕礸禷禶籪纗羉è‰è™ƒè ¸è ·è µè¡‹è®”è®•èºžèºŸèº èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•é™é±£é±§é±¦é±¢é±žé± 鸂鷾鸇鸃鸆鸅鸀é¸�é¸‰é·¿é·½é¸„éº é¼žé½†é½´é½µé½¶å›”æ”®æ–¸æ¬˜æ¬™æ¬—æ¬šç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ç±«ç³¶çºšï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘鑯鑱鑳é�‰é¡²é¥Ÿé±¨é±®é±é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© 鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•鸗齈戇欞爧虌躨钂钀é’�驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªéº¤é½¾é½‰é¾˜ç¢�銹è£�墻æ�’粧嫺╔╦╗╠╬╣╚╩â•�╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║â•�â•╮╰╯▓�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[1026] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãå{ñÇ.<(+!&éêëèÃîïìßĞİ*);^-/ÂÄÀÃ�ÃÅ[Ñş,%_>?øÉÊËÈÃ�ÃŽÃ�Ìı:ÖŞ'=ÜØabcdefghi«»}`¦±°jklmnopqrªºæ¸Æ¤µöstuvwxyz¡¿]$@®¢£¥·©§¶¼½¾¬|¯¨´×çABCDEFGHIÂô~òóõğJKLMNOPQR¹û\\\\ùúÿü÷STUVWXYZ²Ô#ÒÓÕ0123456789³Û\\\"Ùڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1250] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“â€�•–—�™š›śťžź ˇ˘Å�¤Ą¦§¨©Ş«¬Â®Ż°±˛ł´µ¶·¸ąş»ĽË�ľżŔÃ�ÂĂÄĹĆÇČÉĘËĚÃ�ÃŽÄŽÄ�ŃŇÓÔÅ�Ö×ŘŮÚŰÜÃ�ŢßŕáâăäĺćçÄ�éęëěÃîÄ�đńňóôőö÷řůúűüýţ˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1251] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋÐ�ђ‘’“â€�•–—�™љ›њќћџ ЎўЈ¤Ò�¦§Ð�©Є«¬Â®Ї°±Ііґµ¶·ё№є»јЅѕїÐ�БВГДЕЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1252] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“â€�•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�Ã�ÑÒÓÔÕÖרÙÚÛÜÃ�Þßà áâãäåæçèéêëìÃîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1253] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡�‰�‹�����‘’“â€�•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬Â®―°±²³΄µ¶·ΈΉΊ»Ό½ΎÎ�Î�ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏ�ςστυφχψωϊϋόÏ�ώ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1254] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“â€�•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�ĞÑÒÓÔÕÖרÙÚÛÜİŞßà áâãäåæçèéêëìÃîïğñòóôõö÷øùúûüışÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1255] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹�����‘’“â€�•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬Â®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀×�ׂ׃װױײ׳״�������×�בגדהוזחטיךכל×�×ž×Ÿ× ×¡×¢×£×¤×¥×¦×§×¨×©×ªï¿½ï¿½â€Žâ€��\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1256] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“â€�•–—ک™ڑ›œ‌â€�ں ،¢£¤¥¦§¨©ھ«¬Â®¯°±²³´µ¶·¸¹؛»¼½¾؟Û�Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬ØØ®Ø¯Ø°Ø±Ø²Ø³Ø´ØµØ¶Ã—طظعغـÙ�قكà لâمنهوçèéêëىيîïًٌÙ�َôÙ�Ù�÷ّùْûü‎â€�Û’\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1257] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“â€�•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬Â®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲÅ�ŚŪÜŻŽßąįÄ�ćäåęēÄ�éźėģķīļšńņóÅ�õö÷ųłśūüżž˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1258] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“â€�•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃ�ÂĂÄÅÆÇÈÉÊË̀Ã�ÃŽÃ�Ä�Ã‘Ì‰Ã“Ã”Æ Ã–Ã—Ã˜Ã™ÃšÃ›ÃœÆ¯ÌƒÃŸÃ Ã¡Ã¢ÄƒÃ¤Ã¥Ã¦Ã§Ã¨Ã©ÃªÃ«Ì�Ãîïđṇ̃óôơö÷øùúûüư₫ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[47451] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäà åçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥ßƒáÃóúñѪº¿âŒ�¬½¼¡«»ãõØøœŒÀÃÕ¨´†¶©®™ijIJ×�×‘×’×“×”×•×–×—×˜×™×›×œ×ž× ×¡×¢×¤×¦×§×¨×©×ª×Ÿ×š×�ףץ§∧∞αβΓπΣσµτΦΘΩδ∮φ∈∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²Â³Â¯\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10000] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑âˆ�π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“â€�‘’÷◊ÿŸâ�„¤‹›ï¬�fl‡·‚„‰ÂÊÃ�ËÈÃ�ÃŽÃ�ÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸Ë�˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10006] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ĺ²É³ÖÜ΅à âä΄¨çéèê룙î‰ôö¦Âùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάÎ�¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“â€�‘’÷ΉΊΌΎÎήίόÎ�Ï�αβψδεφγηιξκλμνοπώÏ�στθωςχυζϊϋÎ�ΰ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10007] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ð�БВГДЕЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“â€�‘’÷„ЎўÐ�ÑŸâ„–Ð�Ñ‘Ñ�абвгдежзийклмнопрÑ�туфхцчшщъыьÑ�ю¤\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10029] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄĀÄ�ÉĄÖÜáąČäÄ�Ćć鏟ĎÃÄ�ĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňÅ�ÕőŌ–—“â€�‘’÷◊Å�ŔŕŘ‹›řŖŗŠ‚„šŚśÃ�ŤťÃ�ŽžŪÓÔūŮÚůŰűŲųÃ�ýķŻÅ�żĢˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10079] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûüÃ�°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑âˆ�π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“â€�‘’÷◊ÿŸâ�„¤Ã�ðÞþý·‚„‰ÂÊÃ�ËÈÃ�ÃŽÃ�ÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸Ë�˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10081] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑âˆ�π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“â€�‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÃ�ËÈÃ�ÃŽÃ�ÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸Ë�˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28591] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�Ã�ÑÒÓÔÕÖרÙÚÛÜÃ�Þßà áâãäåæçèéêëìÃîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28592] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ Ą˘Å�¤ĽŚ§¨ŠŞŤŹÂŽŻ°ą˛ł´ľśˇ¸šşťźË�žżŔÃ�ÂĂÄĹĆÇČÉĘËĚÃ�ÃŽÄŽÄ�ŃŇÓÔÅ�Ö×ŘŮÚŰÜÃ�ŢßŕáâăäĺćçÄ�éęëěÃîÄ�đńňóôőö÷řůúűüýţ˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28593] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ Ħ˘£¤�Ĥ§¨İŞĞĴÂ�ݰħ²³´µĥ·¸ışğĵ½�żÀÃ�Â�ÄĊĈÇÈÉÊËÌÃ�ÃŽÃ�ï¿½Ã‘Ã’Ã“Ã”Ä Ã–Ã—ÄœÃ™ÃšÃ›ÃœÅ¬ÅœÃŸÃ Ã¡Ã¢ï¿½Ã¤Ä‹Ä‰Ã§Ã¨Ã©ÃªÃ«Ã¬Ãîï�ñòóôġö÷Ä�ùúûüÅÅ�Ë™\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28594] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦÂޝ°ą˛ŗ´ĩšēģŧŊžŋĀÃ�ÂÃÄÅÆĮČÉĘËĖÃ�ÎĪÄ�ŅŌĶÔÕÖרŲÚÛÜŨŪßÄ�áâãäåæįÄ�éęëėÃîīđņÅ�ķôõö÷øųúûüũū˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28595] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ Ð�ЂЃЄЅІЇЈЉЊЋЌÂÐŽÐ�Ð�БВГДЕЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ�№ёђѓєѕіїјљњћќ§ўџ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28596] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ���¤�������،Âï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ø›ï¿½ï¿½ï¿½ØŸï¿½Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬ØØ®Ø¯Ø°Ø±Ø²Ø³Ø´ØµØ¶Ø·Ø¸Ø¹Øºï¿½ï¿½ï¿½ï¿½ï¿½Ù€Ù�قكلمنهوىيًٌÙ�ÙŽÙ�Ù�ّْ�������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28597] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ‘’£€₯¦§¨©ͺ«¬Â�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎÎ�Î�ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάÎήίΰαβγδεζηθικλμνξοπÏ�ςστυφχψωϊϋόÏ�ώ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28598] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ �¢£¤¥¦§¨©×«¬Â®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗×�בגדהוזחטיךכל×�×ž×Ÿ× ×¡×¢×£×¤×¥×¦×§×¨×©×ªï¿½ï¿½â€Žâ€��\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28599] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�ĞÑÒÓÔÕÖרÙÚÛÜİŞßà áâãäåæçèéêëìÃîïğñòóôõö÷øùúûüışÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28600] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ĄĒĢĪĨͧĻÄ�ŠŦŽÂŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÃ�ÂÃÄÅÆĮČÉĘËĖÃ�ÃŽÃ�Ã�ŅŌÓÔÕÖŨØŲÚÛÜÃ�ÞßÄ�áâãäåæįÄ�éęëėÃîïðņÅ�óôõöũøųúûüýþĸ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28601] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ à¸�ขฃคฅฆงจฉชซฌà¸�ฎà¸�à¸�ฑฒณดตถทธนบปผà¸�พฟภมยรฤลฦวศษสหฬà¸à¸®à¸¯à¸°à¸±à¸²à¸³à¸´à¸µà¸¶à¸·à¸¸à¸¹à¸ºï¿½ï¿½ï¿½ï¿½à¸¿à¹€à¹�โใไๅๆ็่้๊๋์à¹�๎à¹�à¹�๑๒๓๔๕๖๗๘๙๚๛����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28603] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ â€�¢£¤„¦§Ø©Ŗ«¬Â®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲÅ�ŚŪÜŻŽßąįÄ�ćäåęēÄ�éźėģķīļšńņóÅ�õö÷ųłśūüżž’\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28604] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲÂÂ®Å¸á¸žá¸ŸÄ Ä¡á¹€á¹�¶Ṗáº�ṗẃṠỳẄẅṡÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�ŴÑÒÓÔÕÖṪØÙÚÛÜÃ�Ŷßà áâãäåæçèéêëìÃîïŵñòóôõöṫøùúûüýŷÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28605] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ¡¢£€¥Š§š©ª«¬Â®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�Ã�ÑÒÓÔÕÖרÙÚÛÜÃ�Þßà áâãäåæçèéêëìÃîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28606] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ĄąÅ�€„Чš©Ș«ŹÂźŻ°±ČłŽâ€�¶·žÄ�ș»ŒœŸżÀÃ�ÂĂÄĆÆÇÈÉÊËÌÃ�ÃŽÃ�Ä�ŃÒÓÔÅ�ÖŚŰÙÚÛÜĘȚßà áâăäćæçèéêëìÃîïđńòóôőöśűùúûüęțÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[708] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~│┤éâ╡à ╢çêëèïî╖╕╣║╗â•�ô╜╛ûùâ”�└š›œÂ�žŸï£�┴┬├¤─┼╞╟╚╔╩،╦«»░▒▓╠â•�â•¬â•§â•¨â•¤â•¥â•™Ø›â•˜â•’â•“ØŸâ•«Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬ØØ®Ø¯Ø°Ø±Ø²Ø³Ø´ØµØ¶Ø·Ø¸Ø¹Øºâ–ˆâ–„â–Œâ–�â–€Ù€Ù�قكلمنهوىيًٌÙ�ÙŽÙ�Ù�ّْ╪┘┌µ£■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[720] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�éâ„à †çêëèïîÂ�ÂŽÂ�Â�Ù‘Ù’Ã´Â¤Ù€Ã»Ã¹Ø¡Ø¢Ø£Ø¤Â£Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬ØØ®Ø¯Ø°Ø±Ø²Ø³Ø´ØµÂ«Â»â–‘▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀ضطظعغÙ�µقكلمنهوىي≡ًٌÙ�ÙŽÙ�Ù�≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[808] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ð�БВГДЕЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀рÑ�туфхцчшщъыьÑ�ÑŽÑ�Ð�ёЄєЇїЎў°∙·√№€■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[858] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäà åçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáÃóúñѪº¿®¬½¼¡«»░▒▓│┤Ã�ÂÀ©╣║╗â•�¢¥â”�└┴┬├─┼ãÃ╚╔╩╦╠â•�╬¤ðÃ�ÊËÈ€Ã�ÃŽÃ�┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÃ�¯´Â±‗¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[870] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäţáăÄ�çć[.<(+!&éęëůÃîľĺß]$*);^-/ÂÄË�Ã�ĂČÇĆ|,%_>?ˇÉĘËŮÃ�ÎĽĹ`:#@'=\\\"˘abcdefghiśňđýřş°jklmnopqrłńš¸˛¤ą~stuvwxyzŚŇÄ�Ã�ŘŞ˙ĄżŢݧžźŽŹÅ�ŃŠ¨´×{ABCDEFGHIÂôöŕóő}JKLMNOPQRĚűüťúě\\\\÷STUVWXYZÄ�ÔÖŔÓÅ�0123456789ĎŰܫڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[872] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёÐ�єЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџÐ�юЮъЪаÐ�бБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗â•�йЙâ”�└┴┬├─┼кК╚╔╩╦╠â•�╬€лЛмМнÐ�оОп┘┌█▄ПÑ�▀ЯрРÑ�СтТуУжЖвВьЬ№ÂыЫзЗшШÑ�ÐщЩчЧ§■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1010] = (function(){ var d = \"�\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"£$%&’()*+,-./0123456789:;<=>?à ABCDEFGHIJKLMNOPQRSTUVWXYZ°ç§ˆ_µabcdefghijklmnopqrstuvwxyzéùè¨���������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1047] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�\\n\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„…\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñ¢.<(+|&éêëèÃîïìß!$*);^-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿Ã�[Þ®¬£¥·©§¶¼½¾Ã�¨¯]´×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1132] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������àº�ຂຄງຈສຊàº�ດຕຖທນບປຜàº�ພຟມຢຣລວຫàºàº®ï¿½ï¿½ï¿½àº¯àº°àº²àº³àº´àºµàº¶àº·àº¸àº¹àº¼àº±àº»àº½ï¿½ï¿½ï¿½à»€à»�ໂໃໄ່້໊໋໌à»�ໆ�ໜà»�â‚����������������à»�໑໒໓໔໕໖໗໘໙��¢¬¦ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1140] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñ¢.<(+|&éêëèÃîïìß!$*);¬-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿Ã�Ã�Þ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1141] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  â{à áãåçñÄ.<(+!&éêëèÃîïì~Ü$*);^-/Â[ÀÃ�ÃÅÇÑö,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#§'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µßstuvwxyz¡¿Ã�Ã�Þ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHIÂô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\\\ÒÓÕ0123456789³Û]Ùڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1142] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áã}çñ#.<(+!&éêëèÃîïì߀Å*);^-/ÂÄÀÃ�Ã$ÇÑø,%_>?¦ÉÊËÈÃ�ÃŽÃ�ÃŒ`:ÆØ'=\\\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿Ã�Ã�Þ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHIÂôöòóõåJKLMNOPQR¹û~ùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1143] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  â{à áã}çñ§.<(+!&`êëèÃîïì߀Å*);^-/Â#ÀÃ�Ã$ÇÑö,%_>?ø\\\\ÊËÈÃ�ÃŽÃ�Ìé:ÄÖ'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿Ã�Ã�Þ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHIÂô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1144] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âä{áãå\\\\ñ°.<(+!&]êë}Ãîï~ßé$*);^-/ÂÄÀÃ�ÃÅÇÑò,%_>?øÉÊËÈÃ�ÃŽÃ�Ìù:£§'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€µìstuvwxyz¡¿Ã�Ã�Þ®¢#¥·©@¶¼½¾¬|¯¨´×à ABCDEFGHIÂôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1145] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåç¦[.<(+|&éêëèÃîïìß]$*);¬-/ÂÄÀÃ�ÃÅÇ#ñ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:Ñ@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¨stuvwxyz¡¿Ã�Ã�Þ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1146] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñ$.<(+|&éêëèÃîïìß!£*);¬-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¯stuvwxyz¡¿Ã�Ã�Þ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1147] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âä@áãå\\\\ñ°.<(+!&{êë}Ãîïìß§$*);^-/ÂÄÀÃ�ÃÅÇÑù,%_>?øÉÊËÈÃ�ÃŽÃ�̵:£à '=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€`¨stuvwxyz¡¿Ã�Ã�Þ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHIÂôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1148] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñ[.<(+!&éêëèÃîïìß]$*);^-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿Ã�Ã�Þ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1149] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñÞ.<(+!&éêëèÃîïì߯$*);Ö-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�Ìð:#Ã�'=\\\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]€µöstuvwxyz¡¿@Ã�[®¢£¥·©§¶¼½¾¬|¯¨\\\\×þABCDEFGHIÂô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1361] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ��������������������������������������������������������������������������������ï£ï£®ï£¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï£°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï£±ï£²ï£³ï£´ï£µï£¶\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[132] = \"������������������������������������������������������������������ᆨᆩᆪᆫᆬá†á†®á†¯á†°á†±á†²á†³á†´á†µá†¶á†·ï¿½á†¸á†¹á†ºá†»á†¼á†½á†¾á†¿á‡€á‡�ᇂ���ᅡ�������������������������������ᅢ�������������������������������ᅣ�������������������������������ᅤ�������������������������������ᅥ������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"�����������������������������������������������������������������ᅦ�������������������������������ᅧ�������������������������������ᅨ�������������������������������ᅩ�������������������������������ᅪ�������������������������������ᅫ������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"�����������������������������������������������������������������ᅬ�������������������������������á…�������������������������������ᅮ�������������������������������ᅯ�������������������������������ᅰ�������������������������������ᅱ������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"�����������������������������������������������������������������ᅲ�������������������������������ᅳ�������������������������������ᅴ�������������������������������ᅵ����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"�����������������������������������������������������������������ᄀ�������������������������������가ê°�갂갃간갅갆갇갈갉갊갋갌ê°�ê°Žê°�ê°��갑값갓갔강갖갗갘같갚갛���개ê°�ê°žê°Ÿê° ê°¡ê°¢ê°£ê°¤ê°¥ê°¦ê°§ê°¨ê°©ê°ªê°«ê°¬ï¿½ê°ê°®ê°¯ê°°ê°±ê°²ê°³ê°´ê°µê°¶ê°·ï¿½ï¿½ï¿½ê°¸ê°¹ê°ºê°»ê°¼ê°½ê°¾ê°¿ê±€ê±�걂걃걄걅걆걇걈�걉걊걋걌ê±�걎ê±�ê±�걑걒걓���걔걕걖걗걘걙걚걛걜ê±�ê±žê±Ÿê± ê±¡ê±¢ê±£ê±¤ï¿½ê±¥ê±¦ê±§ê±¨ê±©ê±ªê±«ê±¬ê±ê±®ê±¯ï¿½ï¿½ï¿½ê±°ê±±ê±²ê±³ê±´ê±µê±¶ê±·ê±¸ê±¹ê±ºê±»ê±¼ê±½ê±¾ê±¿ê²€ï¿½ê²�겂것겄겅겆겇겈겉겊겋��\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"�����������������������������������������������������������������게ê²�겎ê²�ê²�겑겒겓겔겕겖겗겘겙겚겛겜�ê²�ê²žê²Ÿê² ê²¡ê²¢ê²£ê²¤ê²¥ê²¦ê²§ï¿½ï¿½ï¿½ê²¨ê²©ê²ªê²«ê²¬ê²ê²®ê²¯ê²°ê²±ê²²ê²³ê²´ê²µê²¶ê²·ê²¸ï¿½ê²¹ê²ºê²»ê²¼ê²½ê²¾ê²¿ê³€ê³�곂곃���계곅곆곇곈곉곊곋곌ê³�곎ê³�ê³�곑곒곓곔�곕곖곗곘곙곚곛곜ê³�ê³žê³Ÿï¿½ï¿½ï¿½ê³ ê³¡ê³¢ê³£ê³¤ê³¥ê³¦ê³§ê³¨ê³©ê³ªê³«ê³¬ê³ê³®ê³¯ê³°ï¿½ê³±ê³²ê³³ê³´ê³µê³¶ê³·ê³¸ê³¹ê³ºê³»ï¿½ï¿½ï¿½ê³¼ê³½ê³¾ê³¿ê´€ê´�괂괃괄괅괆괇괈괉괊괋괌�ê´�ê´Žê´�ê´�광괒괓괔괕괖괗���괘괙괚괛괜ê´�ê´žê´Ÿê´ ê´¡ê´¢ê´£ê´¤ê´¥ê´¦ê´§ê´¨ï¿½ê´©ê´ªê´«ê´¬ê´ê´®ê´¯ê´°ê´±ê´²ê´³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"�����������������������������������������������������������������괴괵괶괷괸괹괺괻괼괽괾괿굀êµ�굂굃굄�굅굆굇굈굉굊굋굌êµ�굎êµ����êµ�굑굒굓굔굕굖굗굘굙굚굛굜êµ�êµžêµŸêµ ï¿½êµ¡êµ¢êµ£êµ¤êµ¥êµ¦êµ§êµ¨êµ©êµªêµ«ï¿½ï¿½ï¿½êµ¬êµêµ®êµ¯êµ°êµ±êµ²êµ³êµ´êµµêµ¶êµ·êµ¸êµ¹êµºêµ»êµ¼ï¿½êµ½êµ¾êµ¿ê¶€ê¶�궂궃궄궅궆궇���궈궉궊궋권ê¶�ê¶Žê¶�ê¶�궑궒궓궔궕궖궗궘�궙궚궛궜ê¶�ê¶žê¶Ÿê¶ ê¶¡ê¶¢ê¶£ï¿½ï¿½ï¿½ê¶¤ê¶¥ê¶¦ê¶§ê¶¨ê¶©ê¶ªê¶«ê¶¬ê¶ê¶®ê¶¯ê¶°ê¶±ê¶²ê¶³ê¶´ï¿½ê¶µê¶¶ê¶·ê¶¸ê¶¹ê¶ºê¶»ê¶¼ê¶½ê¶¾ê¶¿ï¿½ï¿½ï¿½ê·€ê·�귂귃귄귅귆귇귈귉귊귋귌ê·�ê·Žê·�ê·��귑귒귓귔귕귖귗귘귙귚귛��\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"�����������������������������������������������������������������규ê·�ê·žê·Ÿê· ê·¡ê·¢ê·£ê·¤ê·¥ê·¦ê·§ê·¨ê·©ê·ªê·«ê·¬ï¿½ê·ê·®ê·¯ê·°ê·±ê·²ê·³ê·´ê·µê·¶ê··ï¿½ï¿½ï¿½ê·¸ê·¹ê·ºê·»ê·¼ê·½ê·¾ê·¿ê¸€ê¸�긂긃긄긅긆긇금�급긊긋긌ê¸�긎ê¸�ê¸�긑긒긓���긔긕긖긗긘긙긚긛긜ê¸�ê¸žê¸Ÿê¸ ê¸¡ê¸¢ê¸£ê¸¤ï¿½ê¸¥ê¸¦ê¸§ê¸¨ê¸©ê¸ªê¸«ê¸¬ê¸ê¸®ê¸¯ï¿½ï¿½ï¿½ê¸°ê¸±ê¸²ê¸³ê¸´ê¸µê¸¶ê¸·ê¸¸ê¸¹ê¸ºê¸»ê¸¼ê¸½ê¸¾ê¸¿ê¹€ï¿½ê¹�깂깃깄깅깆깇깈깉깊깋������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"�����������������������������������������������������������������á„��������������������������������까ê¹�깎ê¹�ê¹�깑깒깓깔깕깖깗깘깙깚깛깜�ê¹�ê¹žê¹Ÿê¹ ê¹¡ê¹¢ê¹£ê¹¤ê¹¥ê¹¦ê¹§ï¿½ï¿½ï¿½ê¹¨ê¹©ê¹ªê¹«ê¹¬ê¹ê¹®ê¹¯ê¹°ê¹±ê¹²ê¹³ê¹´ê¹µê¹¶ê¹·ê¹¸ï¿½ê¹¹ê¹ºê¹»ê¹¼ê¹½ê¹¾ê¹¿êº€êº�꺂꺃���꺄꺅꺆꺇꺈꺉꺊꺋꺌êº�꺎êº�êº�꺑꺒꺓꺔�꺕꺖꺗꺘꺙꺚꺛꺜êº�êºžêºŸï¿½ï¿½ï¿½êº êº¡êº¢êº£êº¤êº¥êº¦êº§êº¨êº©êºªêº«êº¬êºêº®êº¯êº°ï¿½êº±êº²êº³êº´êºµêº¶êº·êº¸êº¹êººêº»ï¿½ï¿½ï¿½êº¼êº½êº¾êº¿ê»€ê»�껂껃껄껅껆껇껈껉껊껋껌�ê»�껎ê»�ê»�껑껒껓껔껕껖껗��\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"�����������������������������������������������������������������께껙껚껛껜ê»�ê»žê»Ÿê» ê»¡ê»¢ê»£ê»¤ê»¥ê»¦ê»§ê»¨ï¿½ê»©ê»ªê»«ê»¬ê»ê»®ê»¯ê»°ê»±ê»²ê»³ï¿½ï¿½ï¿½ê»´ê»µê»¶ê»·ê»¸ê»¹ê»ºê»»ê»¼ê»½ê»¾ê»¿ê¼€ê¼�꼂꼃꼄�꼅꼆꼇꼈꼉꼊꼋꼌ê¼�꼎ê¼����ê¼�꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜ê¼�ê¼žê¼Ÿê¼ ï¿½ê¼¡ê¼¢ê¼£ê¼¤ê¼¥ê¼¦ê¼§ê¼¨ê¼©ê¼ªê¼«ï¿½ï¿½ï¿½ê¼¬ê¼ê¼®ê¼¯ê¼°ê¼±ê¼²ê¼³ê¼´ê¼µê¼¶ê¼·ê¼¸ê¼¹ê¼ºê¼»ê¼¼ï¿½ê¼½ê¼¾ê¼¿ê½€ê½�꽂꽃꽄꽅꽆꽇���꽈꽉꽊꽋꽌ê½�꽎ê½�ê½�꽑꽒꽓꽔꽕꽖꽗꽘�꽙꽚꽛꽜ê½�ê½žê½Ÿê½ ê½¡ê½¢ê½£ï¿½ï¿½ï¿½ê½¤ê½¥ê½¦ê½§ê½¨ê½©ê½ªê½«ê½¬ê½ê½®ê½¯ê½°ê½±ê½²ê½³ê½´ï¿½ê½µê½¶ê½·ê½¸ê½¹ê½ºê½»ê½¼ê½½ê½¾ê½¿ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"�����������������������������������������������������������������꾀ê¾�꾂꾃꾄꾅꾆꾇꾈꾉꾊꾋꾌ê¾�꾎ê¾�ê¾��꾑꾒꾓꾔꾕꾖꾗꾘꾙꾚꾛���꾜ê¾�ê¾žê¾Ÿê¾ ê¾¡ê¾¢ê¾£ê¾¤ê¾¥ê¾¦ê¾§ê¾¨ê¾©ê¾ªê¾«ê¾¬ï¿½ê¾ê¾®ê¾¯ê¾°ê¾±ê¾²ê¾³ê¾´ê¾µê¾¶ê¾·ï¿½ï¿½ï¿½ê¾¸ê¾¹ê¾ºê¾»ê¾¼ê¾½ê¾¾ê¾¿ê¿€ê¿�꿂꿃꿄꿅꿆꿇꿈�꿉꿊꿋꿌ê¿�꿎ê¿�ê¿�꿑꿒꿓���꿔꿕꿖꿗꿘꿙꿚꿛꿜ê¿�ê¿žê¿Ÿê¿ ê¿¡ê¿¢ê¿£ê¿¤ï¿½ê¿¥ê¿¦ê¿§ê¿¨ê¿©ê¿ªê¿«ê¿¬ê¿ê¿®ê¿¯ï¿½ï¿½ï¿½ê¿°ê¿±ê¿²ê¿³ê¿´ê¿µê¿¶ê¿·ê¿¸ê¿¹ê¿ºê¿»ê¿¼ê¿½ê¿¾ê¿¿ë€€ï¿½ë€�뀂뀃뀄뀅뀆뀇뀈뀉뀊뀋���뀌ë€�뀎ë€�ë€�뀑뀒뀓뀔뀕뀖뀗뀘뀙뀚뀛뀜�ë€�ë€žë€Ÿë€ ë€¡ë€¢ë€£ë€¤ë€¥ë€¦ë€§ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"�����������������������������������������������������������������뀨뀩뀪뀫뀬ë€ë€®ë€¯ë€°ë€±ë€²ë€³ë€´ë€µë€¶ë€·ë€¸ï¿½ë€¹ë€ºë€»ë€¼ë€½ë€¾ë€¿ë�€ë��ë�‚ë�ƒï¿½ï¿½ï¿½ë�„ë�…ë�†ë�‡ë�ˆë�‰ë�Šë�‹ë�Œë��ë�Žë��ë��ë�‘ë�’ë�“ë�”�ë�•ë�–ë�—ë�˜ë�™ë�šë�›ë�œë��ë�žë�Ÿï¿½ï¿½ï¿½ë� ë�¡ë�¢ë�£ë�¤ë�¥ë�¦ë�§ë�¨ë�©ë�ªë�«ë�¬ë�ë�®ë�¯ë�°ï¿½ë�±ë�²ë�³ë�´ë�µë�¶ë�·ë�¸ë�¹ë�ºë�»ï¿½ï¿½ï¿½ë�¼ë�½ë�¾ë�¿ë‚€ë‚�낂낃낄낅낆낇낈낉낊낋낌�ë‚�낎ë‚�ë‚�낑낒낓낔낕낖낗������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"�����������������������������������������������������������������ᄂ�������������������������������나낙낚낛난ë‚�ë‚žë‚Ÿë‚ ë‚¡ë‚¢ë‚£ë‚¤ë‚¥ë‚¦ë‚§ë‚¨ï¿½ë‚©ë‚ªë‚«ë‚¬ë‚낮낯낰낱낲낳���내낵낶낷낸낹낺낻낼낽낾낿냀ëƒ�냂냃냄�냅냆냇냈냉냊냋냌ëƒ�냎ëƒ����ëƒ�냑냒냓냔냕냖냗냘냙냚냛냜ëƒ�ëƒžëƒŸëƒ ï¿½ëƒ¡ëƒ¢ëƒ£ëƒ¤ëƒ¥ëƒ¦ëƒ§ëƒ¨ëƒ©ëƒªëƒ«ï¿½ï¿½ï¿½ëƒ¬ëƒëƒ®ëƒ¯ëƒ°ëƒ±ëƒ²ëƒ³ëƒ´ëƒµëƒ¶ëƒ·ëƒ¸ëƒ¹ëƒºëƒ»ëƒ¼ï¿½ëƒ½ëƒ¾ëƒ¿ë„€ë„�넂넃넄넅넆넇���너넉넊넋넌ë„�넎ë„�ë„�넑넒넓넔넕넖넗넘�넙넚넛넜ë„�ë„žë„Ÿë„ ë„¡ë„¢ë„£ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"�����������������������������������������������������������������네넥넦넧넨넩넪넫넬ë„넮넯넰넱넲넳넴�넵넶넷넸넹넺넻넼넽넾넿���녀ë…�녂녃년녅녆녇녈녉녊녋녌ë…�ë…Žë…�ë…��녑녒녓녔녕녖녗녘녙녚녛���녜ë…�ë…žë…Ÿë… ë…¡ë…¢ë…£ë…¤ë…¥ë…¦ë…§ë…¨ë…©ë…ªë…«ë…¬ï¿½ë…녮녯녰녱녲녳녴녵녶녷���노녹녺녻논녽녾녿놀ë†�놂놃놄놅놆놇놈�놉놊놋놌ë†�놎ë†�ë†�놑높놓���놔놕놖놗놘놙놚놛놜ë†�ë†žë†Ÿë† ë†¡ë†¢ë†£ë†¤ï¿½ë†¥ë†¦ë†§ë†¨ë†©ë†ªë†«ë†¬ë†ë†®ë†¯ï¿½ï¿½ï¿½ë†°ë†±ë†²ë†³ë†´ë†µë†¶ë†·ë†¸ë†¹ë†ºë†»ë†¼ë†½ë†¾ë†¿ë‡€ï¿½ë‡�뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋��\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"�����������������������������������������������������������������뇌ë‡�뇎ë‡�ë‡�뇑뇒뇓뇔뇕뇖뇗뇘뇙뇚뇛뇜�ë‡�ë‡žë‡Ÿë‡ ë‡¡ë‡¢ë‡£ë‡¤ë‡¥ë‡¦ë‡§ï¿½ï¿½ï¿½ë‡¨ë‡©ë‡ªë‡«ë‡¬ë‡ë‡®ë‡¯ë‡°ë‡±ë‡²ë‡³ë‡´ë‡µë‡¶ë‡·ë‡¸ï¿½ë‡¹ë‡ºë‡»ë‡¼ë‡½ë‡¾ë‡¿ëˆ€ëˆ�눂눃���누눅눆눇눈눉눊눋눌ëˆ�눎ëˆ�ëˆ�눑눒눓눔�눕눖눗눘눙눚눛눜ëˆ�ëˆžëˆŸï¿½ï¿½ï¿½ëˆ ëˆ¡ëˆ¢ëˆ£ëˆ¤ëˆ¥ëˆ¦ëˆ§ëˆ¨ëˆ©ëˆªëˆ«ëˆ¬ëˆëˆ®ëˆ¯ëˆ°ï¿½ëˆ±ëˆ²ëˆ³ëˆ´ëˆµëˆ¶ëˆ·ëˆ¸ëˆ¹ëˆºëˆ»ï¿½ï¿½ï¿½ëˆ¼ëˆ½ëˆ¾ëˆ¿ë‰€ë‰�뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌�ë‰�뉎ë‰�ë‰�뉑뉒뉓뉔뉕뉖뉗���뉘뉙뉚뉛뉜ë‰�ë‰žë‰Ÿë‰ ë‰¡ë‰¢ë‰£ë‰¤ë‰¥ë‰¦ë‰§ë‰¨ï¿½ë‰©ë‰ªë‰«ë‰¬ë‰ë‰®ë‰¯ë‰°ë‰±ë‰²ë‰³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"�����������������������������������������������������������������뉴뉵뉶뉷뉸뉹뉺뉻뉼뉽뉾뉿늀ëŠ�늂늃늄�늅늆늇늈늉늊늋늌ëŠ�늎ëŠ����ëŠ�늑늒늓는늕늖늗늘늙늚늛늜ëŠ�ëŠžëŠŸëŠ ï¿½ëŠ¡ëŠ¢ëŠ£ëŠ¤ëŠ¥ëŠ¦ëŠ§ëŠ¨ëŠ©ëŠªëŠ«ï¿½ï¿½ï¿½ëŠ¬ëŠëŠ®ëŠ¯ëŠ°ëŠ±ëŠ²ëŠ³ëŠ´ëŠµëŠ¶ëŠ·ëŠ¸ëŠ¹ëŠºëŠ»ëŠ¼ï¿½ëŠ½ëŠ¾ëŠ¿ë‹€ë‹�닂닃닄닅닆닇���니닉닊닋닌ë‹�닎ë‹�ë‹�닑닒닓닔닕닖닗님�닙닚닛닜ë‹�ë‹žë‹Ÿë‹ ë‹¡ë‹¢ë‹£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"�����������������������������������������������������������������ᄃ�������������������������������다닥닦닧단닩닪닫달ë‹ë‹®ë‹¯ë‹°ë‹±ë‹²ë‹³ë‹´ï¿½ë‹µë‹¶ë‹·ë‹¸ë‹¹ë‹ºë‹»ë‹¼ë‹½ë‹¾ë‹¿ï¿½ï¿½ï¿½ëŒ€ëŒ�댂댃댄댅댆댇댈댉댊댋댌ëŒ�댎ëŒ�ëŒ��댑댒댓댔댕댖댗댘댙댚댛���댜ëŒ�ëŒžëŒŸëŒ ëŒ¡ëŒ¢ëŒ£ëŒ¤ëŒ¥ëŒ¦ëŒ§ëŒ¨ëŒ©ëŒªëŒ«ëŒ¬ï¿½ëŒëŒ®ëŒ¯ëŒ°ëŒ±ëŒ²ëŒ³ëŒ´ëŒµëŒ¶ëŒ·ï¿½ï¿½ï¿½ëŒ¸ëŒ¹ëŒºëŒ»ëŒ¼ëŒ½ëŒ¾ëŒ¿ë�€ë��ë�‚ë�ƒë�„ë�…ë�†ë�‡ë�ˆï¿½ë�‰ë�Šë�‹ë�Œë��ë�Žë��ë��ë�‘ë�’ë�“���ë�”ë�•ë�–ë�—ë�˜ë�™ë�šë�›ë�œë��ë�žë�Ÿë� ë�¡ë�¢ë�£ë�¤ï¿½ë�¥ë�¦ë�§ë�¨ë�©ë�ªë�«ë�¬ë�ë�®ë�¯ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"�����������������������������������������������������������������ë�°ë�±ë�²ë�³ë�´ë�µë�¶ë�·ë�¸ë�¹ë�ºë�»ë�¼ë�½ë�¾ë�¿ëŽ€ï¿½ëŽ�뎂뎃뎄뎅뎆뎇뎈뎉뎊뎋���뎌ëŽ�뎎ëŽ�ëŽ�뎑뎒뎓뎔뎕뎖뎗뎘뎙뎚뎛뎜�ëŽ�ëŽžëŽŸëŽ ëŽ¡ëŽ¢ëŽ£ëŽ¤ëŽ¥ëŽ¦ëŽ§ï¿½ï¿½ï¿½ëŽ¨ëŽ©ëŽªëŽ«ëŽ¬ëŽëŽ®ëŽ¯ëŽ°ëŽ±ëŽ²ëŽ³ëŽ´ëŽµëŽ¶ëŽ·ëŽ¸ï¿½ëŽ¹ëŽºëŽ»ëŽ¼ëŽ½ëŽ¾ëŽ¿ë�€ë��ë�‚ë�ƒï¿½ï¿½ï¿½ë�„ë�…ë�†ë�‡ë�ˆë�‰ë�Šë�‹ë�Œë��ë�Žë��ë��ë�‘ë�’ë�“ë�”�ë�•ë�–ë�—ë�˜ë�™ë�šë�›ë�œë��ë�žë�Ÿï¿½ï¿½ï¿½ë� ë�¡ë�¢ë�£ë�¤ë�¥ë�¦ë�§ë�¨ë�©ë�ªë�«ë�¬ë�ë�®ë�¯ë�°ï¿½ë�±ë�²ë�³ë�´ë�µë�¶ë�·ë�¸ë�¹ë�ºë�»ï¿½ï¿½ï¿½ë�¼ë�½ë�¾ë�¿ë�€ë��ë�‚ë�ƒë�„ë�…ë�†ë�‡ë�ˆë�‰ë�Šë�‹ë�Œï¿½ë��ë�Žë��ë��ë�‘ë�’ë�“ë�”ë�•ë�–ë�—��\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"�����������������������������������������������������������������ë�˜ë�™ë�šë�›ë�œë��ë�žë�Ÿë� ë�¡ë�¢ë�£ë�¤ë�¥ë�¦ë�§ë�¨ï¿½ë�©ë�ªë�«ë�¬ë�ë�®ë�¯ë�°ë�±ë�²ë�³ï¿½ï¿½ï¿½ë�´ë�µë�¶ë�·ë�¸ë�¹ë�ºë�»ë�¼ë�½ë�¾ë�¿ë‘€ë‘�둂둃둄�둅둆둇둈둉둊둋둌ë‘�둎ë‘����ë‘�둑둒둓둔둕둖둗둘둙둚둛둜ë‘�ë‘žë‘Ÿë‘ ï¿½ë‘¡ë‘¢ë‘£ë‘¤ë‘¥ë‘¦ë‘§ë‘¨ë‘©ë‘ªë‘«ï¿½ï¿½ï¿½ë‘¬ë‘둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼�둽둾둿뒀ë’�뒂뒃뒄뒅뒆뒇���뒈뒉뒊뒋뒌ë’�ë’Žë’�ë’�뒑뒒뒓뒔뒕뒖뒗뒘�뒙뒚뒛뒜ë’�ë’žë’Ÿë’ ë’¡ë’¢ë’£ï¿½ï¿½ï¿½ë’¤ë’¥ë’¦ë’§ë’¨ë’©ë’ªë’«ë’¬ë’뒮뒯뒰뒱뒲뒳뒴�뒵뒶뒷뒸뒹뒺뒻뒼뒽뒾뒿��\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"�����������������������������������������������������������������듀ë“�듂듃듄듅듆듇듈듉듊듋듌ë“�듎ë“�ë“��듑듒듓듔듕듖듗듘듙듚듛���드ë“�ë“žë“Ÿë“ ë“¡ë“¢ë“£ë“¤ë“¥ë“¦ë“§ë“¨ë“©ë“ªë“«ë“¬ï¿½ë“듮듯듰등듲듳듴듵듶듷���듸듹듺듻듼듽듾듿딀ë”�딂딃딄딅딆딇딈�딉딊딋딌ë”�딎ë”�ë”�딑딒딓���디딕딖딗딘딙딚딛딜ë”�ë”žë”Ÿë” ë”¡ë”¢ë”£ë”¤ï¿½ë”¥ë”¦ë”§ë”¨ë”©ë”ªë”«ë”¬ë”딮딯������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"�����������������������������������������������������������������ᄄ�������������������������������따딱딲딳딴딵딶딷딸딹딺딻딼딽딾딿땀�ë•�땂땃땄땅땆땇땈땉땊땋���때ë•�땎ë•�ë•�땑땒땓땔땕땖땗땘땙땚땛땜�ë•�ë•žë•Ÿë• ë•¡ë•¢ë•£ë•¤ë•¥ë•¦ë•§ï¿½ï¿½ï¿½ë•¨ë•©ë•ªë•«ë•¬ë•땮땯땰땱땲땳땴땵땶땷땸�땹땺땻땼땽땾땿떀ë–�떂떃���떄떅떆떇떈떉떊떋떌ë–�ë–Žë–�ë–�떑떒떓떔�떕떖떗떘떙떚떛떜ë–�ë–žë–Ÿï¿½ï¿½ï¿½ë– ë–¡ë–¢ë–£ë–¤ë–¥ë–¦ë–§ë–¨ë–©ë–ªë–«ë–¬ë–떮떯떰�떱떲떳떴떵떶떷떸떹떺떻��\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"�����������������������������������������������������������������떼떽떾떿뗀ë—�뗂뗃뗄뗅뗆뗇뗈뗉뗊뗋뗌�ë—�ë—Žë—�ë—�뗑뗒뗓뗔뗕뗖뗗���뗘뗙뗚뗛뗜ë—�ë—žë—Ÿë— ë—¡ë—¢ë—£ë—¤ë—¥ë—¦ë—§ë—¨ï¿½ë—©ë—ªë—«ë—¬ë—뗮뗯뗰뗱뗲뗳���뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿똀ë˜�똂똃똄�똅똆똇똈똉똊똋똌ë˜�똎ë˜����ë˜�똑똒똓똔똕똖똗똘똙똚똛똜ë˜�ë˜žë˜Ÿë˜ ï¿½ë˜¡ë˜¢ë˜£ë˜¤ë˜¥ë˜¦ë˜§ë˜¨ë˜©ë˜ªë˜«ï¿½ï¿½ï¿½ë˜¬ë˜ë˜®ë˜¯ë˜°ë˜±ë˜²ë˜³ë˜´ë˜µë˜¶ë˜·ë˜¸ë˜¹ë˜ºë˜»ë˜¼ï¿½ë˜½ë˜¾ë˜¿ë™€ë™�뙂뙃뙄뙅뙆뙇���뙈뙉뙊뙋뙌ë™�뙎ë™�ë™�뙑뙒뙓뙔뙕뙖뙗뙘�뙙뙚뙛뙜ë™�ë™žë™Ÿë™ ë™¡ë™¢ë™£ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"�����������������������������������������������������������������뙤뙥뙦뙧뙨뙩뙪뙫뙬ë™ë™®ë™¯ë™°ë™±ë™²ë™³ë™´ï¿½ë™µë™¶ë™·ë™¸ë™¹ë™ºë™»ë™¼ë™½ë™¾ë™¿ï¿½ï¿½ï¿½ëš€ëš�뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌ëš�뚎ëš�ëš��뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛���뚜ëš�ëšžëšŸëš ëš¡ëš¢ëš£ëš¤ëš¥ëš¦ëš§ëš¨ëš©ëšªëš«ëš¬ï¿½ëšëš®ëš¯ëš°ëš±ëš²ëš³ëš´ëšµëš¶ëš·ï¿½ï¿½ï¿½ëš¸ëš¹ëšºëš»ëš¼ëš½ëš¾ëš¿ë›€ë›�뛂뛃뛄뛅뛆뛇뛈�뛉뛊뛋뛌ë›�뛎ë›�ë›�뛑뛒뛓���뛔뛕뛖뛗뛘뛙뛚뛛뛜ë›�ë›žë›Ÿë› ë›¡ë›¢ë›£ë›¤ï¿½ë›¥ë›¦ë›§ë›¨ë›©ë›ªë›«ë›¬ë›ë›®ë›¯ï¿½ï¿½ï¿½ë›°ë›±ë›²ë›³ë›´ë›µë›¶ë›·ë›¸ë›¹ë›ºë›»ë›¼ë›½ë›¾ë›¿ëœ€ï¿½ëœ�뜂뜃뜄뜅뜆뜇뜈뜉뜊뜋��\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"�����������������������������������������������������������������뜌ëœ�뜎ëœ�ëœ�뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜�ëœ�ëœžëœŸëœ ëœ¡ëœ¢ëœ£ëœ¤ëœ¥ëœ¦ëœ§ï¿½ï¿½ï¿½ëœ¨ëœ©ëœªëœ«ëœ¬ëœëœ®ëœ¯ëœ°ëœ±ëœ²ëœ³ëœ´ëœµëœ¶ëœ·ëœ¸ï¿½ëœ¹ëœºëœ»ëœ¼ëœ½ëœ¾ëœ¿ë�€ë��ë�‚ë�ƒï¿½ï¿½ï¿½ë�„ë�…ë�†ë�‡ë�ˆë�‰ë�Šë�‹ë�Œë��ë�Žë��ë��ë�‘ë�’ë�“ë�”�ë�•ë�–ë�—ë�˜ë�™ë�šë�›ë�œë��ë�žë�Ÿï¿½ï¿½ï¿½ë� ë�¡ë�¢ë�£ë�¤ë�¥ë�¦ë�§ë�¨ë�©ë�ªë�«ë�¬ë�ë�®ë�¯ë�°ï¿½ë�±ë�²ë�³ë�´ë�µë�¶ë�·ë�¸ë�¹ë�ºë�»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"�����������������������������������������������������������������ᄅ�������������������������������ë�¼ë�½ë�¾ë�¿ëž€ëž�랂랃랄랅랆랇랈랉랊랋람�ëž�랎ëž�ëž�랑랒랓랔랕랖랗���래랙랚랛랜ëž�ëžžëžŸëž ëž¡ëž¢ëž£ëž¤ëž¥ëž¦ëž§ëž¨ï¿½ëž©ëžªëž«ëž¬ëžëž®ëž¯ëž°ëž±ëž²ëž³ï¿½ï¿½ï¿½ëž´ëžµëž¶ëž·ëž¸ëž¹ëžºëž»ëž¼ëž½ëž¾ëž¿ëŸ€ëŸ�럂럃럄�럅럆럇럈량럊럋럌ëŸ�럎ëŸ����ëŸ�럑럒럓럔럕럖럗럘럙럚럛럜ëŸ�ëŸžëŸŸëŸ ï¿½ëŸ¡ëŸ¢ëŸ£ëŸ¤ëŸ¥ëŸ¦ëŸ§ëŸ¨ëŸ©ëŸªëŸ«ï¿½ï¿½ï¿½ëŸ¬ëŸëŸ®ëŸ¯ëŸ°ëŸ±ëŸ²ëŸ³ëŸ´ëŸµëŸ¶ëŸ·ëŸ¸ëŸ¹ëŸºëŸ»ëŸ¼ï¿½ëŸ½ëŸ¾ëŸ¿ë €ë �ë ‚ë ƒë „ë …ë †ë ‡ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë ˆë ‰ë Šë ‹ë Œë �ë Žë �ë �ë ‘ë ’ë “ë ”ë •ë –ë —ë ˜ï¿½ë ™ë šë ›ë œë �ë žë Ÿë ë ¡ë ¢ë £ï¿½ï¿½ï¿½ë ¤ë ¥ë ¦ë §ë ¨ë ©ë ªë «ë ¬ë ë ®ë ¯ë °ë ±ë ²ë ³ë ´ï¿½ë µë ¶ë ·ë ¸ë ¹ë ºë »ë ¼ë ½ë ¾ë ¿ï¿½ï¿½ï¿½ë¡€ë¡�롂롃롄롅롆롇롈롉롊롋롌ë¡�롎ë¡�ë¡��롑롒롓롔롕롖롗롘롙롚롛���로ë¡�ë¡žë¡Ÿë¡ ë¡¡ë¡¢ë¡£ë¡¤ë¡¥ë¡¦ë¡§ë¡¨ë¡©ë¡ªë¡«ë¡¬ï¿½ë¡ë¡®ë¡¯ë¡°ë¡±ë¡²ë¡³ë¡´ë¡µë¡¶ë¡·ï¿½ï¿½ï¿½ë¡¸ë¡¹ë¡ºë¡»ë¡¼ë¡½ë¡¾ë¡¿ë¢€ë¢�뢂뢃뢄뢅뢆뢇뢈�뢉뢊뢋뢌ë¢�뢎ë¢�ë¢�뢑뢒뢓���뢔뢕뢖뢗뢘뢙뢚뢛뢜ë¢�ë¢žë¢Ÿë¢ ë¢¡ë¢¢ë¢£ë¢¤ï¿½ë¢¥ë¢¦ë¢§ë¢¨ë¢©ë¢ªë¢«ë¢¬ë¢ë¢®ë¢¯ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"�����������������������������������������������������������������뢰뢱뢲뢳뢴뢵뢶뢷뢸뢹뢺뢻뢼뢽뢾뢿룀�ë£�룂룃룄룅룆룇룈룉룊룋���료ë£�룎ë£�ë£�룑룒룓룔룕룖룗룘룙룚룛룜�ë£�ë£žë£Ÿë£ ë£¡ë£¢ë££ë£¤ë£¥ë£¦ë£§ï¿½ï¿½ï¿½ë£¨ë£©ë£ªë£«ë£¬ë£ë£®ë£¯ë£°ë£±ë£²ë£³ë£´ë£µë£¶ë£·ë£¸ï¿½ë£¹ë£ºë£»ë£¼ë£½ë£¾ë£¿ë¤€ë¤�뤂뤃���뤄뤅뤆뤇뤈뤉뤊뤋뤌ë¤�뤎ë¤�ë¤�뤑뤒뤓뤔�뤕뤖뤗뤘뤙뤚뤛뤜ë¤�ë¤žë¤Ÿï¿½ï¿½ï¿½ë¤ ë¤¡ë¤¢ë¤£ë¤¤ë¤¥ë¤¦ë¤§ë¤¨ë¤©ë¤ªë¤«ë¤¬ë¤ë¤®ë¤¯ë¤°ï¿½ë¤±ë¤²ë¤³ë¤´ë¤µë¤¶ë¤·ë¤¸ë¤¹ë¤ºë¤»ï¿½ï¿½ï¿½ë¤¼ë¤½ë¤¾ë¤¿ë¥€ë¥�륂륃륄륅륆륇륈륉륊륋륌�ë¥�륎ë¥�ë¥�륑륒륓륔륕륖륗��\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"�����������������������������������������������������������������류륙륚륛륜ë¥�ë¥žë¥Ÿë¥ ë¥¡ë¥¢ë¥£ë¥¤ë¥¥ë¥¦ë¥§ë¥¨ï¿½ë¥©ë¥ªë¥«ë¥¬ë¥ë¥®ë¥¯ë¥°ë¥±ë¥²ë¥³ï¿½ï¿½ï¿½ë¥´ë¥µë¥¶ë¥·ë¥¸ë¥¹ë¥ºë¥»ë¥¼ë¥½ë¥¾ë¥¿ë¦€ë¦�릂릃름�릅릆릇릈릉릊릋릌ë¦�릎ë¦����ë¦�릑릒릓릔릕릖릗릘릙릚릛릜ë¦�ë¦žë¦Ÿë¦ ï¿½ë¦¡ë¦¢ë¦£ë¦¤ë¦¥ë¦¦ë¦§ë¦¨ë¦©ë¦ªë¦«ï¿½ï¿½ï¿½ë¦¬ë¦ë¦®ë¦¯ë¦°ë¦±ë¦²ë¦³ë¦´ë¦µë¦¶ë¦·ë¦¸ë¦¹ë¦ºë¦»ë¦¼ï¿½ë¦½ë¦¾ë¦¿ë§€ë§�맂맃맄맅맆맇������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"�����������������������������������������������������������������ᄆ�������������������������������마막맊맋만ë§�ë§Žë§�ë§�맑맒맓맔맕맖맗맘�맙맚맛맜ë§�ë§žë§Ÿë§ ë§¡ë§¢ë§£ï¿½ï¿½ï¿½ë§¤ë§¥ë§¦ë§§ë§¨ë§©ë§ªë§«ë§¬ë§ë§®ë§¯ë§°ë§±ë§²ë§³ë§´ï¿½ë§µë§¶ë§·ë§¸ë§¹ë§ºë§»ë§¼ë§½ë§¾ë§¿ï¿½ï¿½ï¿½ë¨€ë¨�먂먃먄먅먆먇먈먉먊먋먌ë¨�먎ë¨�ë¨��먑먒먓먔먕먖먗먘먙먚먛���먜ë¨�ë¨žë¨Ÿë¨ ë¨¡ë¨¢ë¨£ë¨¤ë¨¥ë¨¦ë¨§ë¨¨ë¨©ë¨ªë¨«ë¨¬ï¿½ë¨ë¨®ë¨¯ë¨°ë¨±ë¨²ë¨³ë¨´ë¨µë¨¶ë¨·ï¿½ï¿½ï¿½ë¨¸ë¨¹ë¨ºë¨»ë¨¼ë¨½ë¨¾ë¨¿ë©€ë©�멂멃멄멅멆멇멈�멉멊멋멌ë©�멎ë©�ë©�멑멒멓��\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"�����������������������������������������������������������������메멕멖멗멘멙멚멛멜ë©�ë©žë©Ÿë© ë©¡ë©¢ë©£ë©¤ï¿½ë©¥ë©¦ë©§ë©¨ë©©ë©ªë©«ë©¬ë©ë©®ë©¯ï¿½ï¿½ï¿½ë©°ë©±ë©²ë©³ë©´ë©µë©¶ë©·ë©¸ë©¹ë©ºë©»ë©¼ë©½ë©¾ë©¿ëª€ï¿½ëª�몂몃몄명몆몇몈몉몊몋���몌ëª�몎ëª�ëª�몑몒몓몔몕몖몗몘몙몚몛몜�ëª�ëªžëªŸëª ëª¡ëª¢ëª£ëª¤ëª¥ëª¦ëª§ï¿½ï¿½ï¿½ëª¨ëª©ëªªëª«ëª¬ëªëª®ëª¯ëª°ëª±ëª²ëª³ëª´ëªµëª¶ëª·ëª¸ï¿½ëª¹ëªºëª»ëª¼ëª½ëª¾ëª¿ë«€ë«�뫂뫃���뫄뫅뫆뫇뫈뫉뫊뫋뫌ë«�뫎ë«�ë«�뫑뫒뫓뫔�뫕뫖뫗뫘뫙뫚뫛뫜ë«�ë«žë«Ÿï¿½ï¿½ï¿½ë« ë«¡ë«¢ë«£ë«¤ë«¥ë«¦ë«§ë«¨ë«©ë«ªë««ë«¬ë«ë«®ë«¯ë«°ï¿½ë«±ë«²ë«³ë«´ë«µë«¶ë«·ë«¸ë«¹ë«ºë«»ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������뫼뫽뫾뫿묀ë¬�묂묃묄묅묆묇묈묉묊묋묌�ë¬�묎ë¬�ë¬�묑묒묓묔묕묖묗���묘묙묚묛묜ë¬�ë¬žë¬Ÿë¬ ë¬¡ë¬¢ë¬£ë¬¤ë¬¥ë¬¦ë¬§ë¬¨ï¿½ë¬©ë¬ªë¬«ë¬¬ë¬ë¬®ë¬¯ë¬°ë¬±ë¬²ë¬³ï¿½ï¿½ï¿½ë¬´ë¬µë¬¶ë¬·ë¬¸ë¬¹ë¬ºë¬»ë¬¼ë¬½ë¬¾ë¬¿ë€ë�ë‚ëƒë„�ë…ë†ë‡ëˆë‰ëŠë‹ëŒë�ëŽë����ë�ë‘ë’ë“ë”ë•ë–ë—ë˜ë™ëšë›ëœë�ëžëŸë �ë¡ë¢ë£ë¤ë¥ë¦ë§ë¨ë©ëªë«ï¿½ï¿½ï¿½ë¬ëë®ë¯ë°ë±ë²ë³ë´ëµë¶ë·ë¸ë¹ëºë»ë¼ï¿½ë½ë¾ë¿ë®€ë®�뮂뮃뮄뮅뮆뮇���뮈뮉뮊뮋뮌ë®�뮎ë®�ë®�뮑뮒뮓뮔뮕뮖뮗뮘�뮙뮚뮛뮜ë®�ë®žë®Ÿë® ë®¡ë®¢ë®£ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������뮤뮥뮦뮧뮨뮩뮪뮫뮬ë®ë®®ë®¯ë®°ë®±ë®²ë®³ë®´ï¿½ë®µë®¶ë®·ë®¸ë®¹ë®ºë®»ë®¼ë®½ë®¾ë®¿ï¿½ï¿½ï¿½ë¯€ë¯�믂믃믄믅믆믇믈믉믊믋믌ë¯�믎ë¯�ë¯��믑믒믓믔믕믖믗믘믙믚믛���믜ë¯�ë¯žë¯Ÿë¯ ë¯¡ë¯¢ë¯£ë¯¤ë¯¥ë¯¦ë¯§ë¯¨ë¯©ë¯ªë¯«ë¯¬ï¿½ë¯ë¯®ë¯¯ë¯°ë¯±ë¯²ë¯³ë¯´ë¯µë¯¶ë¯·ï¿½ï¿½ï¿½ë¯¸ë¯¹ë¯ºë¯»ë¯¼ë¯½ë¯¾ë¯¿ë°€ë°�밂밃밄밅밆밇밈�밉밊밋밌ë°�ë°Žë°�ë°�밑밒밓������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������ᄇ�������������������������������바박밖밗반밙밚받발ë°�ë°žë°Ÿë° ë°¡ë°¢ë°£ë°¤ï¿½ë°¥ë°¦ë°§ë°¨ë°©ë°ªë°«ë°¬ë°ë°®ë°¯ï¿½ï¿½ï¿½ë°°ë°±ë°²ë°³ë°´ë°µë°¶ë°·ë°¸ë°¹ë°ºë°»ë°¼ë°½ë°¾ë°¿ë±€ï¿½ë±�뱂뱃뱄뱅뱆뱇뱈뱉뱊뱋���뱌ë±�뱎ë±�ë±�뱑뱒뱓뱔뱕뱖뱗뱘뱙뱚뱛뱜�ë±�ë±žë±Ÿë± ë±¡ë±¢ë±£ë±¤ë±¥ë±¦ë±§ï¿½ï¿½ï¿½ë±¨ë±©ë±ªë±«ë±¬ë±ë±®ë±¯ë±°ë±±ë±²ë±³ë±´ë±µë±¶ë±·ë±¸ï¿½ë±¹ë±ºë±»ë±¼ë±½ë±¾ë±¿ë²€ë²�벂벃���버벅벆벇번벉벊벋벌ë²�벎ë²�ë²�벑벒벓범�법벖벗벘벙벚벛벜ë²�벞벟��\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë² ë²¡ë²¢ë²£ë²¤ë²¥ë²¦ë²§ë²¨ë²©ë²ªë²«ë²¬ë²ë²®ë²¯ë²°ï¿½ë²±ë²²ë²³ë²´ë²µë²¶ë²·ë²¸ë²¹ë²ºë²»ï¿½ï¿½ï¿½ë²¼ë²½ë²¾ë²¿ë³€ë³�볂볃별볅볆볇볈볉볊볋볌�ë³�볎ë³�ë³�병볒볓볔볕볖볗���볘볙볚볛볜ë³�ë³žë³Ÿë³ ë³¡ë³¢ë³£ë³¤ë³¥ë³¦ë³§ë³¨ï¿½ë³©ë³ªë³«ë³¬ë³ë³®ë³¯ë³°ë³±ë³²ë³³ï¿½ï¿½ï¿½ë³´ë³µë³¶ë³·ë³¸ë³¹ë³ºë³»ë³¼ë³½ë³¾ë³¿ë´€ë´�봂봃봄�봅봆봇봈봉봊봋봌ë´�ë´Žë´����ë´�봑봒봓봔봕봖봗봘봙봚봛봜ë´�ë´žë´Ÿë´ ï¿½ë´¡ë´¢ë´£ë´¤ë´¥ë´¦ë´§ë´¨ë´©ë´ªë´«ï¿½ï¿½ï¿½ë´¬ë´ë´®ë´¯ë´°ë´±ë´²ë´³ë´´ë´µë´¶ë´·ë´¸ë´¹ë´ºë´»ë´¼ï¿½ë´½ë´¾ë´¿ëµ€ëµ�뵂뵃뵄뵅뵆뵇��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������뵈뵉뵊뵋뵌ëµ�뵎ëµ�ëµ�뵑뵒뵓뵔뵕뵖뵗뵘�뵙뵚뵛뵜ëµ�ëµžëµŸëµ ëµ¡ëµ¢ëµ£ï¿½ï¿½ï¿½ëµ¤ëµ¥ëµ¦ëµ§ëµ¨ëµ©ëµªëµ«ëµ¬ëµëµ®ëµ¯ëµ°ëµ±ëµ²ëµ³ëµ´ï¿½ëµµëµ¶ëµ·ëµ¸ëµ¹ëµºëµ»ëµ¼ëµ½ëµ¾ëµ¿ï¿½ï¿½ï¿½ë¶€ë¶�붂붃분붅붆붇불붉붊붋붌ë¶�ë¶Žë¶�ë¶��붑붒붓붔붕붖붗붘붙붚붛���붜ë¶�ë¶žë¶Ÿë¶ ë¶¡ë¶¢ë¶£ë¶¤ë¶¥ë¶¦ë¶§ë¶¨ë¶©ë¶ªë¶«ë¶¬ï¿½ë¶ë¶®ë¶¯ë¶°ë¶±ë¶²ë¶³ë¶´ë¶µë¶¶ë¶·ï¿½ï¿½ï¿½ë¶¸ë¶¹ë¶ºë¶»ë¶¼ë¶½ë¶¾ë¶¿ë·€ë·�뷂뷃뷄뷅뷆뷇뷈�뷉뷊뷋뷌ë·�ë·Žë·�ë·�뷑뷒뷓���뷔뷕뷖뷗뷘뷙뷚뷛뷜ë·�ë·žë·Ÿë· ë·¡ë·¢ë·£ë·¤ï¿½ë·¥ë·¦ë·§ë·¨ë·©ë·ªë·«ë·¬ë·ë·®ë·¯ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������뷰뷱뷲뷳뷴뷵뷶뷷뷸뷹뷺뷻뷼뷽뷾뷿븀�ë¸�븂븃븄븅븆븇븈븉븊븋���브ë¸�븎ë¸�ë¸�븑븒븓블븕븖븗븘븙븚븛븜�ë¸�ë¸žë¸Ÿë¸ ë¸¡ë¸¢ë¸£ë¸¤ë¸¥ë¸¦ë¸§ï¿½ï¿½ï¿½ë¸¨ë¸©ë¸ªë¸«ë¸¬ë¸ë¸®ë¸¯ë¸°ë¸±ë¸²ë¸³ë¸´ë¸µë¸¶ë¸·ë¸¸ï¿½ë¸¹ë¸ºë¸»ë¸¼ë¸½ë¸¾ë¸¿ë¹€ë¹�빂빃���비빅빆빇빈빉빊빋빌ë¹�빎ë¹�ë¹�빑빒빓빔�빕빖빗빘빙빚빛빜ë¹�빞빟������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½á„ˆï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë¹ ë¹¡ë¹¢ë¹£ë¹¤ë¹¥ë¹¦ë¹§ë¹¨ë¹©ë¹ªë¹«ë¹¬ë¹ë¹®ë¹¯ë¹°ï¿½ë¹±ë¹²ë¹³ë¹´ë¹µë¹¶ë¹·ë¹¸ë¹¹ë¹ºë¹»ï¿½ï¿½ï¿½ë¹¼ë¹½ë¹¾ë¹¿ëº€ëº�뺂뺃뺄뺅뺆뺇뺈뺉뺊뺋뺌�ëº�뺎ëº�ëº�뺑뺒뺓뺔뺕뺖뺗���뺘뺙뺚뺛뺜ëº�ëºžëºŸëº ëº¡ëº¢ëº£ëº¤ëº¥ëº¦ëº§ëº¨ï¿½ëº©ëºªëº«ëº¬ëºëº®ëº¯ëº°ëº±ëº²ëº³ï¿½ï¿½ï¿½ëº´ëºµëº¶ëº·ëº¸ëº¹ëººëº»ëº¼ëº½ëº¾ëº¿ë»€ë»�뻂뻃뻄�뻅뻆뻇뻈뻉뻊뻋뻌ë»�뻎ë»����ë»�뻑뻒뻓뻔뻕뻖뻗뻘뻙뻚뻛뻜ë»�ë»žë»Ÿë» ï¿½ë»¡ë»¢ë»£ë»¤ë»¥ë»¦ë»§ë»¨ë»©ë»ªë»«ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������뻬ë»ë»®ë»¯ë»°ë»±ë»²ë»³ë»´ë»µë»¶ë»·ë»¸ë»¹ë»ºë»»ë»¼ï¿½ë»½ë»¾ë»¿ë¼€ë¼�뼂뼃뼄뼅뼆뼇���뼈뼉뼊뼋뼌ë¼�뼎ë¼�ë¼�뼑뼒뼓뼔뼕뼖뼗뼘�뼙뼚뼛뼜ë¼�ë¼žë¼Ÿë¼ ë¼¡ë¼¢ë¼£ï¿½ï¿½ï¿½ë¼¤ë¼¥ë¼¦ë¼§ë¼¨ë¼©ë¼ªë¼«ë¼¬ë¼ë¼®ë¼¯ë¼°ë¼±ë¼²ë¼³ë¼´ï¿½ë¼µë¼¶ë¼·ë¼¸ë¼¹ë¼ºë¼»ë¼¼ë¼½ë¼¾ë¼¿ï¿½ï¿½ï¿½ë½€ë½�뽂뽃뽄뽅뽆뽇뽈뽉뽊뽋뽌ë½�뽎ë½�ë½��뽑뽒뽓뽔뽕뽖뽗뽘뽙뽚뽛���뽜ë½�ë½žë½Ÿë½ ë½¡ë½¢ë½£ë½¤ë½¥ë½¦ë½§ë½¨ë½©ë½ªë½«ë½¬ï¿½ë½ë½®ë½¯ë½°ë½±ë½²ë½³ë½´ë½µë½¶ë½·ï¿½ï¿½ï¿½ë½¸ë½¹ë½ºë½»ë½¼ë½½ë½¾ë½¿ë¾€ë¾�뾂뾃뾄뾅뾆뾇뾈�뾉뾊뾋뾌ë¾�뾎ë¾�ë¾�뾑뾒뾓��\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"�����������������������������������������������������������������뾔뾕뾖뾗뾘뾙뾚뾛뾜ë¾�ë¾žë¾Ÿë¾ ë¾¡ë¾¢ë¾£ë¾¤ï¿½ë¾¥ë¾¦ë¾§ë¾¨ë¾©ë¾ªë¾«ë¾¬ë¾ë¾®ë¾¯ï¿½ï¿½ï¿½ë¾°ë¾±ë¾²ë¾³ë¾´ë¾µë¾¶ë¾·ë¾¸ë¾¹ë¾ºë¾»ë¾¼ë¾½ë¾¾ë¾¿ë¿€ï¿½ë¿�뿂뿃뿄뿅뿆뿇뿈뿉뿊뿋���뿌ë¿�뿎ë¿�ë¿�뿑뿒뿓뿔뿕뿖뿗뿘뿙뿚뿛뿜�ë¿�ë¿žë¿Ÿë¿ ë¿¡ë¿¢ë¿£ë¿¤ë¿¥ë¿¦ë¿§ï¿½ï¿½ï¿½ë¿¨ë¿©ë¿ªë¿«ë¿¬ë¿ë¿®ë¿¯ë¿°ë¿±ë¿²ë¿³ë¿´ë¿µë¿¶ë¿·ë¿¸ï¿½ë¿¹ë¿ºë¿»ë¿¼ë¿½ë¿¾ë¿¿ì€€ì€�쀂쀃���쀄쀅쀆쀇쀈쀉쀊쀋쀌ì€�쀎ì€�ì€�쀑쀒쀓쀔�쀕쀖쀗쀘쀙쀚쀛쀜ì€�ì€žì€Ÿï¿½ï¿½ï¿½ì€ ì€¡ì€¢ì€£ì€¤ì€¥ì€¦ì€§ì€¨ì€©ì€ªì€«ì€¬ì€ì€®ì€¯ì€°ï¿½ì€±ì€²ì€³ì€´ì€µì€¶ì€·ì€¸ì€¹ì€ºì€»ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������쀼쀽쀾쀿ì�€ì��ì�‚ì�ƒì�„ì�…ì�†ì�‡ì�ˆì�‰ì�Šì�‹ì�Œï¿½ì��ì�Žì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—���ì�˜ì�™ì�šì�›ì�œì��ì�žì�Ÿì� ì�¡ì�¢ì�£ì�¤ì�¥ì�¦ì�§ì�¨ï¿½ì�©ì�ªì�«ì�¬ì�ì�®ì�¯ì�°ì�±ì�²ì�³ï¿½ï¿½ï¿½ì�´ì�µì�¶ì�·ì�¸ì�¹ì�ºì�»ì�¼ì�½ì�¾ì�¿ì‚€ì‚�삂삃삄�삅삆삇삈삉삊삋삌ì‚�삎ì‚����ì‚�삑삒삓삔삕삖삗삘삙삚삛삜ì‚�ì‚žì‚Ÿì‚ ï¿½ì‚¡ì‚¢ì‚£ì‚¤ì‚¥ì‚¦ì‚§ì‚¨ì‚©ì‚ªì‚«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"�����������������������������������������������������������������ᄉ�������������������������������사ì‚삮삯산삱삲삳살삵삶삷삸삹삺삻삼�삽삾삿샀ìƒ�샂샃샄샅샆샇���새색샊샋샌ìƒ�샎ìƒ�ìƒ�샑샒샓샔샕샖샗샘�샙샚샛샜ìƒ�ìƒžìƒŸìƒ ìƒ¡ìƒ¢ìƒ£ï¿½ï¿½ï¿½ìƒ¤ìƒ¥ìƒ¦ìƒ§ìƒ¨ìƒ©ìƒªìƒ«ìƒ¬ìƒìƒ®ìƒ¯ìƒ°ìƒ±ìƒ²ìƒ³ìƒ´ï¿½ìƒµìƒ¶ìƒ·ìƒ¸ìƒ¹ìƒºìƒ»ìƒ¼ìƒ½ìƒ¾ìƒ¿ï¿½ï¿½ï¿½ì„€ì„�섂섃섄섅섆섇섈섉섊섋섌ì„�섎ì„�ì„��섑섒섓섔섕섖섗섘섙섚섛���서ì„�ì„žì„Ÿì„ ì„¡ì„¢ì„£ì„¤ì„¥ì„¦ì„§ì„¨ì„©ì„ªì„«ì„¬ï¿½ì„섮섯섰성섲섳섴섵섶섷��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"�����������������������������������������������������������������세섹섺섻센섽섾섿셀ì…�셂셃셄셅셆셇셈�셉셊셋셌ì…�ì…Žì…�ì…�셑셒셓���셔셕셖셗션셙셚셛셜ì…�ì…žì…Ÿì… ì…¡ì…¢ì…£ì…¤ï¿½ì…¥ì…¦ì…§ì…¨ì…©ì…ªì…«ì…¬ì…셮셯���셰셱셲셳셴셵셶셷셸셹셺셻셼셽셾셿솀�ì†�솂솃솄솅솆솇솈솉솊솋���소ì†�솎ì†�ì†�솑솒솓솔솕솖솗솘솙솚솛솜�ì†�ì†žì†Ÿì† ì†¡ì†¢ì†£ì†¤ì†¥ì†¦ì†§ï¿½ï¿½ï¿½ì†¨ì†©ì†ªì†«ì†¬ì†ì†®ì†¯ì†°ì†±ì†²ì†³ì†´ì†µì†¶ì†·ì†¸ï¿½ì†¹ì†ºì†»ì†¼ì†½ì†¾ì†¿ì‡€ì‡�쇂쇃���쇄쇅쇆쇇쇈쇉쇊쇋쇌ì‡�쇎ì‡�ì‡�쇑쇒쇓쇔�쇕쇖쇗쇘쇙쇚쇛쇜ì‡�쇞쇟��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì‡ ì‡¡ì‡¢ì‡£ì‡¤ì‡¥ì‡¦ì‡§ì‡¨ì‡©ì‡ªì‡«ì‡¬ì‡ì‡®ì‡¯ì‡°ï¿½ì‡±ì‡²ì‡³ì‡´ì‡µì‡¶ì‡·ì‡¸ì‡¹ì‡ºì‡»ï¿½ï¿½ï¿½ì‡¼ì‡½ì‡¾ì‡¿ìˆ€ìˆ�숂숃숄숅숆숇숈숉숊숋숌�ìˆ�숎ìˆ�ìˆ�숑숒숓숔숕숖숗���수숙숚숛순ìˆ�ìˆžìˆŸìˆ ìˆ¡ìˆ¢ìˆ£ìˆ¤ìˆ¥ìˆ¦ìˆ§ìˆ¨ï¿½ìˆ©ìˆªìˆ«ìˆ¬ìˆìˆ®ìˆ¯ìˆ°ìˆ±ìˆ²ìˆ³ï¿½ï¿½ï¿½ìˆ´ìˆµìˆ¶ìˆ·ìˆ¸ìˆ¹ìˆºìˆ»ìˆ¼ìˆ½ìˆ¾ìˆ¿ì‰€ì‰�쉂쉃쉄�쉅쉆쉇쉈쉉쉊쉋쉌ì‰�쉎ì‰����ì‰�쉑쉒쉓쉔쉕쉖쉗쉘쉙쉚쉛쉜ì‰�ì‰žì‰Ÿì‰ ï¿½ì‰¡ì‰¢ì‰£ì‰¤ì‰¥ì‰¦ì‰§ì‰¨ì‰©ì‰ªì‰«ï¿½ï¿½ï¿½ì‰¬ì‰ì‰®ì‰¯ì‰°ì‰±ì‰²ì‰³ì‰´ì‰µì‰¶ì‰·ì‰¸ì‰¹ì‰ºì‰»ì‰¼ï¿½ì‰½ì‰¾ì‰¿ìŠ€ìŠ�슂슃슄슅슆슇��\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"�����������������������������������������������������������������슈슉슊슋슌ìŠ�슎ìŠ�ìŠ�슑슒슓슔슕슖슗슘�슙슚슛슜ìŠ�ìŠžìŠŸìŠ ìŠ¡ìŠ¢ìŠ£ï¿½ï¿½ï¿½ìŠ¤ìŠ¥ìŠ¦ìŠ§ìŠ¨ìŠ©ìŠªìŠ«ìŠ¬ìŠìŠ®ìŠ¯ìŠ°ìŠ±ìŠ²ìŠ³ìŠ´ï¿½ìŠµìŠ¶ìŠ·ìŠ¸ìŠ¹ìŠºìŠ»ìŠ¼ìŠ½ìŠ¾ìŠ¿ï¿½ï¿½ï¿½ì‹€ì‹�싂싃싄싅싆싇싈싉싊싋싌ì‹�싎ì‹�ì‹��싑싒싓싔싕싖싗싘싙싚싛���시ì‹�ì‹žì‹Ÿì‹ ì‹¡ì‹¢ì‹£ì‹¤ì‹¥ì‹¦ì‹§ì‹¨ì‹©ì‹ªì‹«ì‹¬ï¿½ì‹ì‹®ì‹¯ì‹°ì‹±ì‹²ì‹³ì‹´ì‹µì‹¶ì‹·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"�����������������������������������������������������������������ᄊ�������������������������������싸싹싺싻싼싽싾싿쌀ìŒ�쌂쌃쌄쌅쌆쌇쌈�쌉쌊쌋쌌ìŒ�쌎ìŒ�ìŒ�쌑쌒쌓���쌔쌕쌖쌗쌘쌙쌚쌛쌜ìŒ�ìŒžìŒŸìŒ ìŒ¡ìŒ¢ìŒ£ìŒ¤ï¿½ìŒ¥ìŒ¦ìŒ§ìŒ¨ìŒ©ìŒªìŒ«ìŒ¬ìŒìŒ®ìŒ¯ï¿½ï¿½ï¿½ìŒ°ìŒ±ìŒ²ìŒ³ìŒ´ìŒµìŒ¶ìŒ·ìŒ¸ìŒ¹ìŒºìŒ»ìŒ¼ìŒ½ìŒ¾ìŒ¿ì�€ï¿½ì��ì�‚ì�ƒì�„ì�…ì�†ì�‡ì�ˆì�‰ì�Šì�‹ï¿½ï¿½ï¿½ì�Œì��ì�Žì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�™ì�šì�›ì�œï¿½ì��ì�žì�Ÿì� ì�¡ì�¢ì�£ì�¤ì�¥ì�¦ì�§ï¿½ï¿½ï¿½ì�¨ì�©ì�ªì�«ì�¬ì�ì�®ì�¯ì�°ì�±ì�²ì�³ì�´ì�µì�¶ì�·ì�¸ï¿½ì�¹ì�ºì�»ì�¼ì�½ì�¾ì�¿ìŽ€ìŽ�쎂쎃��\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������쎄쎅쎆쎇쎈쎉쎊쎋쎌ìŽ�쎎ìŽ�ìŽ�쎑쎒쎓쎔�쎕쎖쎗쎘쎙쎚쎛쎜ìŽ�ìŽžìŽŸï¿½ï¿½ï¿½ìŽ ìŽ¡ìŽ¢ìŽ£ìŽ¤ìŽ¥ìŽ¦ìŽ§ìŽ¨ìŽ©ìŽªìŽ«ìŽ¬ìŽìŽ®ìŽ¯ìŽ°ï¿½ìŽ±ìŽ²ìŽ³ìŽ´ìŽµìŽ¶ìŽ·ìŽ¸ìŽ¹ìŽºìŽ»ï¿½ï¿½ï¿½ìŽ¼ìŽ½ìŽ¾ìŽ¿ì�€ì��ì�‚ì�ƒì�„ì�…ì�†ì�‡ì�ˆì�‰ì�Šì�‹ì�Œï¿½ì��ì�Žì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—���ì�˜ì�™ì�šì�›ì�œì��ì�žì�Ÿì� ì�¡ì�¢ì�£ì�¤ì�¥ì�¦ì�§ì�¨ï¿½ì�©ì�ªì�«ì�¬ì�ì�®ì�¯ì�°ì�±ì�²ì�³ï¿½ï¿½ï¿½ì�´ì�µì�¶ì�·ì�¸ì�¹ì�ºì�»ì�¼ì�½ì�¾ì�¿ì�€ì��ì�‚ì�ƒì�„�ì�…ì�†ì�‡ì�ˆì�‰ì�Šì�‹ì�Œì��ì�Žì�����ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�™ì�šì�›ì�œì��ì�žì�Ÿì� �ì�¡ì�¢ì�£ì�¤ì�¥ì�¦ì�§ì�¨ì�©ì�ªì�«ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������ì�¬ì�ì�®ì�¯ì�°ì�±ì�²ì�³ì�´ì�µì�¶ì�·ì�¸ì�¹ì�ºì�»ì�¼ï¿½ì�½ì�¾ì�¿ì‘€ì‘�쑂쑃쑄쑅쑆쑇���쑈쑉쑊쑋쑌ì‘�쑎ì‘�ì‘�쑑쑒쑓쑔쑕쑖쑗쑘�쑙쑚쑛쑜ì‘�ì‘žì‘Ÿì‘ ì‘¡ì‘¢ì‘£ï¿½ï¿½ï¿½ì‘¤ì‘¥ì‘¦ì‘§ì‘¨ì‘©ì‘ªì‘«ì‘¬ì‘쑮쑯쑰쑱쑲쑳쑴�쑵쑶쑷쑸쑹쑺쑻쑼쑽쑾쑿���쒀ì’�쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌ì’�ì’Žì’�ì’��쒑쒒쒓쒔쒕쒖쒗쒘쒙쒚쒛���쒜ì’�ì’žì’Ÿì’ ì’¡ì’¢ì’£ì’¤ì’¥ì’¦ì’§ì’¨ì’©ì’ªì’«ì’¬ï¿½ì’쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷���쒸쒹쒺쒻쒼쒽쒾쒿쓀ì“�쓂쓃쓄쓅쓆쓇쓈�쓉쓊쓋쓌ì“�쓎ì“�ì“�쓑쓒쓓��\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������쓔쓕쓖쓗쓘쓙쓚쓛쓜ì“�ì“žì“Ÿì“ ì“¡ì“¢ì“£ì“¤ï¿½ì“¥ì“¦ì“§ì“¨ì“©ì“ªì“«ì“¬ì“쓮쓯���쓰쓱쓲쓳쓴쓵쓶쓷쓸쓹쓺쓻쓼쓽쓾쓿씀�ì”�씂씃씄씅씆씇씈씉씊씋���씌ì”�씎ì”�ì”�씑씒씓씔씕씖씗씘씙씚씛씜�ì”�ì”žì”Ÿì” ì”¡ì”¢ì”£ì”¤ì”¥ì”¦ì”§ï¿½ï¿½ï¿½ì”¨ì”©ì”ªì”«ì”¬ì”씮씯씰씱씲씳씴씵씶씷씸�씹씺씻씼씽씾씿앀ì•�앂앃������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������ᄋ�������������������������������아악앆앇안앉않앋알ì•�앎ì•�ì•�앑앒앓암�압앖앗았앙앚앛앜ì•�ì•žì•Ÿï¿½ï¿½ï¿½ì• ì•¡ì•¢ì•£ì•¤ì•¥ì•¦ì•§ì•¨ì•©ì•ªì•«ì•¬ì•앮앯앰�앱앲앳앴앵앶앷앸앹앺앻���야약앾앿얀ì–�얂얃얄얅얆얇얈얉얊얋얌�ì–�ì–Žì–�ì–�양얒얓얔얕얖얗���얘얙얚얛얜ì–�ì–žì–Ÿì– ì–¡ì–¢ì–£ì–¤ì–¥ì–¦ì–§ì–¨ï¿½ì–©ì–ªì–«ì–¬ì–얮얯얰얱얲얳���어억얶얷언얹얺얻얼얽얾얿엀ì—�엂엃엄�업없엇었엉엊엋엌ì—�ì—Žì—���\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������ì—�엑엒엓엔엕엖엗엘엙엚엛엜ì—�ì—žì—Ÿì— ï¿½ì—¡ì—¢ì—£ì—¤ì—¥ì—¦ì—§ì—¨ì—©ì—ªì—«ï¿½ï¿½ï¿½ì—¬ì—엮엯연엱엲엳열엵엶엷엸엹엺엻염�엽엾엿였ì˜�옂옃옄옅옆옇���예옉옊옋옌ì˜�옎ì˜�ì˜�옑옒옓옔옕옖옗옘�옙옚옛옜ì˜�ì˜žì˜Ÿì˜ ì˜¡ì˜¢ì˜£ï¿½ï¿½ï¿½ì˜¤ì˜¥ì˜¦ì˜§ì˜¨ì˜©ì˜ªì˜«ì˜¬ì˜ì˜®ì˜¯ì˜°ì˜±ì˜²ì˜³ì˜´ï¿½ì˜µì˜¶ì˜·ì˜¸ì˜¹ì˜ºì˜»ì˜¼ì˜½ì˜¾ì˜¿ï¿½ï¿½ï¿½ì™€ì™�왂왃완왅왆왇왈왉왊왋왌ì™�왎ì™�ì™��왑왒왓왔왕왖왗왘왙왚왛���왜ì™�ì™žì™Ÿì™ ì™¡ì™¢ì™£ì™¤ì™¥ì™¦ì™§ì™¨ì™©ì™ªì™«ì™¬ï¿½ì™ì™®ì™¯ì™°ì™±ì™²ì™³ì™´ì™µì™¶ì™·ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������외왹왺왻왼왽왾왿욀ìš�욂욃욄욅욆욇욈�욉욊욋욌ìš�욎ìš�ìš�욑욒욓���요욕욖욗욘욙욚욛욜ìš�ìšžìšŸìš ìš¡ìš¢ìš£ìš¤ï¿½ìš¥ìš¦ìš§ìš¨ìš©ìšªìš«ìš¬ìšìš®ìš¯ï¿½ï¿½ï¿½ìš°ìš±ìš²ìš³ìš´ìšµìš¶ìš·ìš¸ìš¹ìšºìš»ìš¼ìš½ìš¾ìš¿ì›€ï¿½ì›�웂웃웄웅웆웇웈웉웊웋���워ì›�웎ì›�ì›�웑웒웓월웕웖웗웘웙웚웛웜�ì›�ì›žì›Ÿì› ì›¡ì›¢ì›£ì›¤ì›¥ì›¦ì›§ï¿½ï¿½ï¿½ì›¨ì›©ì›ªì›«ì›¬ì›ì›®ì›¯ì›°ì›±ì›²ì›³ì›´ì›µì›¶ì›·ì›¸ï¿½ì›¹ì›ºì›»ì›¼ì›½ì›¾ì›¿ìœ€ìœ�윂윃���위윅윆윇윈윉윊윋윌ìœ�윎ìœ�ìœ�윑윒윓윔�윕윖윗윘윙윚윛윜ìœ�윞윟��\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ìœ ìœ¡ìœ¢ìœ£ìœ¤ìœ¥ìœ¦ìœ§ìœ¨ìœ©ìœªìœ«ìœ¬ìœìœ®ìœ¯ìœ°ï¿½ìœ±ìœ²ìœ³ìœ´ìœµìœ¶ìœ·ìœ¸ìœ¹ìœºìœ»ï¿½ï¿½ï¿½ìœ¼ìœ½ìœ¾ìœ¿ì�€ì��ì�‚ì�ƒì�„ì�…ì�†ì�‡ì�ˆì�‰ì�Šì�‹ì�Œï¿½ì��ì�Žì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—���ì�˜ì�™ì�šì�›ì�œì��ì�žì�Ÿì� ì�¡ì�¢ì�£ì�¤ì�¥ì�¦ì�§ì�¨ï¿½ì�©ì�ªì�«ì�¬ì�ì�®ì�¯ì�°ì�±ì�²ì�³ï¿½ï¿½ï¿½ì�´ì�µì�¶ì�·ì�¸ì�¹ì�ºì�»ì�¼ì�½ì�¾ì�¿ìž€ìž�잂잃임�입잆잇있잉잊잋잌ìž�잎ìž�������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������ᄌ�������������������������������ìž�작잒잓잔잕잖잗잘잙잚잛잜ìž�ìžžìžŸìž ï¿½ìž¡ìž¢ìž£ìž¤ìž¥ìž¦ìž§ìž¨ìž©ìžªìž«ï¿½ï¿½ï¿½ìž¬ìžìž®ìž¯ìž°ìž±ìž²ìž³ìž´ìžµìž¶ìž·ìž¸ìž¹ìžºìž»ìž¼ï¿½ìž½ìž¾ìž¿ìŸ€ìŸ�쟂쟃쟄쟅쟆쟇���쟈쟉쟊쟋쟌ìŸ�쟎ìŸ�ìŸ�쟑쟒쟓쟔쟕쟖쟗쟘�쟙쟚쟛쟜ìŸ�ìŸžìŸŸìŸ ìŸ¡ìŸ¢ìŸ£ï¿½ï¿½ï¿½ìŸ¤ìŸ¥ìŸ¦ìŸ§ìŸ¨ìŸ©ìŸªìŸ«ìŸ¬ìŸìŸ®ìŸ¯ìŸ°ìŸ±ìŸ²ìŸ³ìŸ´ï¿½ìŸµìŸ¶ìŸ·ìŸ¸ìŸ¹ìŸºìŸ»ìŸ¼ìŸ½ìŸ¾ìŸ¿ï¿½ï¿½ï¿½ì €ì �ì ‚ì ƒì „ì …ì †ì ‡ì ˆì ‰ì Šì ‹ì Œì �ì Žì �ì �ï¿½ì ‘ì ’ì “ì ”ì •ì –ì —ì ˜ì ™ì šì ›ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì œì �ì žì Ÿì ì ¡ì ¢ì £ì ¤ì ¥ì ¦ì §ì ¨ì ©ì ªì «ì ¬ï¿½ì ì ®ì ¯ì °ì ±ì ²ì ³ì ´ì µì ¶ì ·ï¿½ï¿½ï¿½ì ¸ì ¹ì ºì »ì ¼ì ½ì ¾ì ¿ì¡€ì¡�졂졃졄졅졆졇졈�졉졊졋졌ì¡�졎ì¡�ì¡�졑졒졓���졔졕졖졗졘졙졚졛졜ì¡�ì¡žì¡Ÿì¡ ì¡¡ì¡¢ì¡£ì¡¤ï¿½ì¡¥ì¡¦ì¡§ì¡¨ì¡©ì¡ªì¡«ì¡¬ì¡ì¡®ì¡¯ï¿½ï¿½ï¿½ì¡°ì¡±ì¡²ì¡³ì¡´ì¡µì¡¶ì¡·ì¡¸ì¡¹ì¡ºì¡»ì¡¼ì¡½ì¡¾ì¡¿ì¢€ï¿½ì¢�좂좃좄종좆좇좈좉좊좋���좌ì¢�좎ì¢�ì¢�좑좒좓좔좕좖좗좘좙좚좛좜�ì¢�ì¢žì¢Ÿì¢ ì¢¡ì¢¢ì¢£ì¢¤ì¢¥ì¢¦ì¢§ï¿½ï¿½ï¿½ì¢¨ì¢©ì¢ªì¢«ì¢¬ì¢ì¢®ì¢¯ì¢°ì¢±ì¢²ì¢³ì¢´ì¢µì¢¶ì¢·ì¢¸ï¿½ì¢¹ì¢ºì¢»ì¢¼ì¢½ì¢¾ì¢¿ì£€ì£�죂죃��\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������죄죅죆죇죈죉죊죋죌ì£�죎ì£�ì£�죑죒죓죔�죕죖죗죘죙죚죛죜ì£�ì£žì£Ÿï¿½ï¿½ï¿½ì£ ì£¡ì£¢ì££ì£¤ì£¥ì£¦ì£§ì£¨ì£©ì£ªì£«ì£¬ì£ì£®ì£¯ì£°ï¿½ì£±ì£²ì£³ì£´ì£µì£¶ì£·ì£¸ì£¹ì£ºì£»ï¿½ï¿½ï¿½ì£¼ì£½ì£¾ì£¿ì¤€ì¤�줂줃줄줅줆줇줈줉줊줋줌�ì¤�줎ì¤�ì¤�중줒줓줔줕줖줗���줘줙줚줛줜ì¤�ì¤žì¤Ÿì¤ ì¤¡ì¤¢ì¤£ì¤¤ì¤¥ì¤¦ì¤§ì¤¨ï¿½ì¤©ì¤ªì¤«ì¤¬ì¤ì¤®ì¤¯ì¤°ì¤±ì¤²ì¤³ï¿½ï¿½ï¿½ì¤´ì¤µì¤¶ì¤·ì¤¸ì¤¹ì¤ºì¤»ì¤¼ì¤½ì¤¾ì¤¿ì¥€ì¥�쥂쥃쥄�쥅쥆쥇쥈쥉쥊쥋쥌ì¥�쥎ì¥����ì¥�쥑쥒쥓쥔쥕쥖쥗쥘쥙쥚쥛쥜ì¥�ì¥žì¥Ÿì¥ ï¿½ì¥¡ì¥¢ì¥£ì¥¤ì¥¥ì¥¦ì¥§ì¥¨ì¥©ì¥ªì¥«ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������쥬ì¥ì¥®ì¥¯ì¥°ì¥±ì¥²ì¥³ì¥´ì¥µì¥¶ì¥·ì¥¸ì¥¹ì¥ºì¥»ì¥¼ï¿½ì¥½ì¥¾ì¥¿ì¦€ì¦�즂즃즄즅즆즇���즈즉즊즋즌ì¦�즎ì¦�ì¦�즑즒즓즔즕즖즗즘�즙즚즛즜ì¦�ì¦žì¦Ÿì¦ ì¦¡ì¦¢ì¦£ï¿½ï¿½ï¿½ì¦¤ì¦¥ì¦¦ì¦§ì¦¨ì¦©ì¦ªì¦«ì¦¬ì¦ì¦®ì¦¯ì¦°ì¦±ì¦²ì¦³ì¦´ï¿½ì¦µì¦¶ì¦·ì¦¸ì¦¹ì¦ºì¦»ì¦¼ì¦½ì¦¾ì¦¿ï¿½ï¿½ï¿½ì§€ì§�짂짃진짅짆짇질짉짊짋짌ì§�ì§Žì§�ì§��집짒짓짔징짖짗짘짙짚짛������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������á„��������������������������������짜ì§�ì§žì§Ÿì§ ì§¡ì§¢ì§£ì§¤ì§¥ì§¦ì§§ì§¨ì§©ì§ªì§«ì§¬ï¿½ì§ì§®ì§¯ì§°ì§±ì§²ì§³ì§´ì§µì§¶ì§·ï¿½ï¿½ï¿½ì§¸ì§¹ì§ºì§»ì§¼ì§½ì§¾ì§¿ì¨€ì¨�쨂쨃쨄쨅쨆쨇쨈�쨉쨊쨋쨌ì¨�쨎ì¨�ì¨�쨑쨒쨓���쨔쨕쨖쨗쨘쨙쨚쨛쨜ì¨�ì¨žì¨Ÿì¨ ì¨¡ì¨¢ì¨£ì¨¤ï¿½ì¨¥ì¨¦ì¨§ì¨¨ì¨©ì¨ªì¨«ì¨¬ì¨ì¨®ì¨¯ï¿½ï¿½ï¿½ì¨°ì¨±ì¨²ì¨³ì¨´ì¨µì¨¶ì¨·ì¨¸ì¨¹ì¨ºì¨»ì¨¼ì¨½ì¨¾ì¨¿ì©€ï¿½ì©�쩂쩃쩄쩅쩆쩇쩈쩉쩊쩋���쩌ì©�쩎ì©�ì©�쩑쩒쩓쩔쩕쩖쩗쩘쩙쩚쩛쩜�ì©�ì©žì©Ÿì© ì©¡ì©¢ì©£ì©¤ì©¥ì©¦ì©§ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������쩨쩩쩪쩫쩬ì©ì©®ì©¯ì©°ì©±ì©²ì©³ì©´ì©µì©¶ì©·ì©¸ï¿½ì©¹ì©ºì©»ì©¼ì©½ì©¾ì©¿ìª€ìª�쪂쪃���쪄쪅쪆쪇쪈쪉쪊쪋쪌ìª�쪎ìª�ìª�쪑쪒쪓쪔�쪕쪖쪗쪘쪙쪚쪛쪜ìª�ìªžìªŸï¿½ï¿½ï¿½ìª ìª¡ìª¢ìª£ìª¤ìª¥ìª¦ìª§ìª¨ìª©ìªªìª«ìª¬ìªìª®ìª¯ìª°ï¿½ìª±ìª²ìª³ìª´ìªµìª¶ìª·ìª¸ìª¹ìªºìª»ï¿½ï¿½ï¿½ìª¼ìª½ìª¾ìª¿ì«€ì«�쫂쫃쫄쫅쫆쫇쫈쫉쫊쫋쫌�ì«�쫎ì«�ì«�쫑쫒쫓쫔쫕쫖쫗���쫘쫙쫚쫛쫜ì«�ì«žì«Ÿì« ì«¡ì«¢ì«£ì«¤ì«¥ì«¦ì«§ì«¨ï¿½ì«©ì«ªì««ì«¬ì«ì«®ì«¯ì«°ì«±ì«²ì«³ï¿½ï¿½ï¿½ì«´ì«µì«¶ì«·ì«¸ì«¹ì«ºì«»ì«¼ì«½ì«¾ì«¿ì¬€ì¬�쬂쬃쬄�쬅쬆쬇쬈쬉쬊쬋쬌ì¬�쬎ì¬���\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������ì¬�쬑쬒쬓쬔쬕쬖쬗쬘쬙쬚쬛쬜ì¬�ì¬žì¬Ÿì¬ ï¿½ì¬¡ì¬¢ì¬£ì¬¤ì¬¥ì¬¦ì¬§ì¬¨ì¬©ì¬ªì¬«ï¿½ï¿½ï¿½ì¬¬ì¬ì¬®ì¬¯ì¬°ì¬±ì¬²ì¬³ì¬´ì¬µì¬¶ì¬·ì¬¸ì¬¹ì¬ºì¬»ì¬¼ï¿½ì¬½ì¬¾ì¬¿ì€ì�ì‚ìƒì„ì…ì†ì‡ï¿½ï¿½ï¿½ìˆì‰ìŠì‹ìŒì�ìŽì�ì�ì‘ì’ì“ì”ì•ì–ì—ì˜ï¿½ì™ìšì›ìœì�ìžìŸì ì¡ì¢ì£ï¿½ï¿½ï¿½ì¤ì¥ì¦ì§ì¨ì©ìªì«ì¬ìì®ì¯ì°ì±ì²ì³ì´ï¿½ìµì¶ì·ì¸ì¹ìºì»ì¼ì½ì¾ì¿ï¿½ï¿½ï¿½ì®€ì®�쮂쮃쮄쮅쮆쮇쮈쮉쮊쮋쮌ì®�쮎ì®�ì®��쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛���쮜ì®�ì®žì®Ÿì® ì®¡ì®¢ì®£ì®¤ì®¥ì®¦ì®§ì®¨ì®©ì®ªì®«ì®¬ï¿½ì®ì®®ì®¯ì®°ì®±ì®²ì®³ì®´ì®µì®¶ì®·ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������쮸쮹쮺쮻쮼쮽쮾쮿쯀ì¯�쯂쯃쯄쯅쯆쯇쯈�쯉쯊쯋쯌ì¯�쯎ì¯�ì¯�쯑쯒쯓���쯔쯕쯖쯗쯘쯙쯚쯛쯜ì¯�ì¯žì¯Ÿì¯ ì¯¡ì¯¢ì¯£ì¯¤ï¿½ì¯¥ì¯¦ì¯§ì¯¨ì¯©ì¯ªì¯«ì¯¬ì¯ì¯®ì¯¯ï¿½ï¿½ï¿½ì¯°ì¯±ì¯²ì¯³ì¯´ì¯µì¯¶ì¯·ì¯¸ì¯¹ì¯ºì¯»ì¯¼ì¯½ì¯¾ì¯¿ì°€ï¿½ì°�찂찃찄찅찆찇찈찉찊찋���찌ì°�ì°Žì°�ì°�찑찒찓찔찕찖찗찘찙찚찛찜�ì°�ì°žì°Ÿì° ì°¡ì°¢ì°£ì°¤ì°¥ì°¦ì°§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������ᄎ�������������������������������차착찪찫찬ì°ì°®ì°¯ì°°ì°±ì°²ì°³ì°´ì°µì°¶ì°·ì°¸ï¿½ì°¹ì°ºì°»ì°¼ì°½ì°¾ì°¿ì±€ì±�챂챃���채책챆챇챈챉챊챋챌ì±�챎ì±�ì±�챑챒챓챔�챕챖챗챘챙챚챛챜ì±�ì±žì±Ÿï¿½ï¿½ï¿½ì± ì±¡ì±¢ì±£ì±¤ì±¥ì±¦ì±§ì±¨ì±©ì±ªì±«ì±¬ì±ì±®ì±¯ì±°ï¿½ì±±ì±²ì±³ì±´ì±µì±¶ì±·ì±¸ì±¹ì±ºì±»ï¿½ï¿½ï¿½ì±¼ì±½ì±¾ì±¿ì²€ì²�첂첃첄첅첆첇첈첉첊첋첌�ì²�첎ì²�ì²�첑첒첓첔첕첖첗���처척첚첛천ì²�ì²žì²Ÿì² ì²¡ì²¢ì²£ì²¤ì²¥ì²¦ì²§ì²¨ï¿½ì²©ì²ªì²«ì²¬ì²ì²®ì²¯ì²°ì²±ì²²ì²³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������체첵첶첷첸첹첺첻첼첽첾첿쳀ì³�쳂쳃쳄�쳅쳆쳇쳈쳉쳊쳋쳌ì³�쳎ì³����ì³�쳑쳒쳓쳔쳕쳖쳗쳘쳙쳚쳛쳜ì³�ì³žì³Ÿì³ ï¿½ì³¡ì³¢ì³£ì³¤ì³¥ì³¦ì³§ì³¨ì³©ì³ªì³«ï¿½ï¿½ï¿½ì³¬ì³ì³®ì³¯ì³°ì³±ì³²ì³³ì³´ì³µì³¶ì³·ì³¸ì³¹ì³ºì³»ì³¼ï¿½ì³½ì³¾ì³¿ì´€ì´�촂촃촄촅촆촇���초촉촊촋촌ì´�ì´Žì´�ì´�촑촒촓촔촕촖촗촘�촙촚촛촜ì´�ì´žì´Ÿì´ ì´¡ì´¢ì´£ï¿½ï¿½ï¿½ì´¤ì´¥ì´¦ì´§ì´¨ì´©ì´ªì´«ì´¬ì´ì´®ì´¯ì´°ì´±ì´²ì´³ì´´ï¿½ì´µì´¶ì´·ì´¸ì´¹ì´ºì´»ì´¼ì´½ì´¾ì´¿ï¿½ï¿½ï¿½ìµ€ìµ�쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌ìµ�쵎ìµ�ìµ��쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛��\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������최ìµ�ìµžìµŸìµ ìµ¡ìµ¢ìµ£ìµ¤ìµ¥ìµ¦ìµ§ìµ¨ìµ©ìµªìµ«ìµ¬ï¿½ìµìµ®ìµ¯ìµ°ìµ±ìµ²ìµ³ìµ´ìµµìµ¶ìµ·ï¿½ï¿½ï¿½ìµ¸ìµ¹ìµºìµ»ìµ¼ìµ½ìµ¾ìµ¿ì¶€ì¶�춂춃춄춅춆춇춈�춉춊춋춌ì¶�ì¶Žì¶�ì¶�춑춒춓���추축춖춗춘춙춚춛출ì¶�ì¶žì¶Ÿì¶ ì¶¡ì¶¢ì¶£ì¶¤ï¿½ì¶¥ì¶¦ì¶§ì¶¨ì¶©ì¶ªì¶«ì¶¬ì¶ì¶®ì¶¯ï¿½ï¿½ï¿½ì¶°ì¶±ì¶²ì¶³ì¶´ì¶µì¶¶ì¶·ì¶¸ì¶¹ì¶ºì¶»ì¶¼ì¶½ì¶¾ì¶¿ì·€ï¿½ì·�췂췃췄췅췆췇췈췉췊췋���췌ì·�ì·Žì·�ì·�췑췒췓췔췕췖췗췘췙췚췛췜�ì·�ì·žì·Ÿì· ì·¡ì·¢ì·£ì·¤ì·¥ì·¦ì·§ï¿½ï¿½ï¿½ì·¨ì·©ì·ªì·«ì·¬ì·ì·®ì·¯ì·°ì·±ì·²ì·³ì·´ì·µì·¶ì··ì·¸ï¿½ì·¹ì·ºì·»ì·¼ì·½ì·¾ì·¿ì¸€ì¸�츂츃��\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������츄츅츆츇츈츉츊츋츌ì¸�츎ì¸�ì¸�츑츒츓츔�츕츖츗츘츙츚츛츜ì¸�ì¸žì¸Ÿï¿½ï¿½ï¿½ì¸ ì¸¡ì¸¢ì¸£ì¸¤ì¸¥ì¸¦ì¸§ì¸¨ì¸©ì¸ªì¸«ì¸¬ì¸ì¸®ì¸¯ì¸°ï¿½ì¸±ì¸²ì¸³ì¸´ì¸µì¸¶ì¸·ì¸¸ì¸¹ì¸ºì¸»ï¿½ï¿½ï¿½ì¸¼ì¸½ì¸¾ì¸¿ì¹€ì¹�칂칃칄칅칆칇칈칉칊칋칌�ì¹�칎ì¹�ì¹�칑칒칓칔칕칖칗���치칙칚칛친ì¹�ì¹žì¹Ÿì¹ ì¹¡ì¹¢ì¹£ì¹¤ì¹¥ì¹¦ì¹§ì¹¨ï¿½ì¹©ì¹ªì¹«ì¹¬ì¹ì¹®ì¹¯ì¹°ì¹±ì¹²ì¹³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������á„��������������������������������카칵칶칷칸칹칺칻칼칽칾칿캀ìº�캂캃캄�캅캆캇캈캉캊캋캌ìº�캎ìº����ìº�캑캒캓캔캕캖캗캘캙캚캛캜ìº�ìºžìºŸìº ï¿½ìº¡ìº¢ìº£ìº¤ìº¥ìº¦ìº§ìº¨ìº©ìºªìº«ï¿½ï¿½ï¿½ìº¬ìºìº®ìº¯ìº°ìº±ìº²ìº³ìº´ìºµìº¶ìº·ìº¸ìº¹ìººìº»ìº¼ï¿½ìº½ìº¾ìº¿ì»€ì»�컂컃컄컅컆컇���컈컉컊컋컌ì»�컎ì»�ì»�컑컒컓컔컕컖컗컘�컙컚컛컜ì»�ì»žì»Ÿì» ì»¡ì»¢ì»£ï¿½ï¿½ï¿½ì»¤ì»¥ì»¦ì»§ì»¨ì»©ì»ªì»«ì»¬ì»ì»®ì»¯ì»°ì»±ì»²ì»³ì»´ï¿½ì»µì»¶ì»·ì»¸ì»¹ì»ºì»»ì»¼ì»½ì»¾ì»¿ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������케ì¼�켂켃켄켅켆켇켈켉켊켋켌ì¼�켎ì¼�ì¼��켑켒켓켔켕켖켗켘켙켚켛���켜ì¼�ì¼žì¼Ÿì¼ ì¼¡ì¼¢ì¼£ì¼¤ì¼¥ì¼¦ì¼§ì¼¨ì¼©ì¼ªì¼«ì¼¬ï¿½ì¼ì¼®ì¼¯ì¼°ì¼±ì¼²ì¼³ì¼´ì¼µì¼¶ì¼·ï¿½ï¿½ï¿½ì¼¸ì¼¹ì¼ºì¼»ì¼¼ì¼½ì¼¾ì¼¿ì½€ì½�콂콃콄콅콆콇콈�콉콊콋콌ì½�콎ì½�ì½�콑콒콓���코콕콖콗콘콙콚콛콜ì½�ì½žì½Ÿì½ ì½¡ì½¢ì½£ì½¤ï¿½ì½¥ì½¦ì½§ì½¨ì½©ì½ªì½«ì½¬ì½ì½®ì½¯ï¿½ï¿½ï¿½ì½°ì½±ì½²ì½³ì½´ì½µì½¶ì½·ì½¸ì½¹ì½ºì½»ì½¼ì½½ì½¾ì½¿ì¾€ï¿½ì¾�쾂쾃쾄쾅쾆쾇쾈쾉쾊쾋���쾌ì¾�쾎ì¾�ì¾�쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜�ì¾�ì¾žì¾Ÿì¾ ì¾¡ì¾¢ì¾£ì¾¤ì¾¥ì¾¦ì¾§ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������쾨쾩쾪쾫쾬ì¾ì¾®ì¾¯ì¾°ì¾±ì¾²ì¾³ì¾´ì¾µì¾¶ì¾·ì¾¸ï¿½ì¾¹ì¾ºì¾»ì¾¼ì¾½ì¾¾ì¾¿ì¿€ì¿�쿂쿃���쿄쿅쿆쿇쿈쿉쿊쿋쿌ì¿�쿎ì¿�ì¿�쿑쿒쿓쿔�쿕쿖쿗쿘쿙쿚쿛쿜ì¿�ì¿žì¿Ÿï¿½ï¿½ï¿½ì¿ ì¿¡ì¿¢ì¿£ì¿¤ì¿¥ì¿¦ì¿§ì¿¨ì¿©ì¿ªì¿«ì¿¬ì¿ì¿®ì¿¯ì¿°ï¿½ì¿±ì¿²ì¿³ì¿´ì¿µì¿¶ì¿·ì¿¸ì¿¹ì¿ºì¿»ï¿½ï¿½ï¿½ì¿¼ì¿½ì¿¾ì¿¿í€€í€�퀂퀃퀄퀅퀆퀇퀈퀉퀊퀋퀌�í€�퀎í€�í€�퀑퀒퀓퀔퀕퀖퀗���퀘퀙퀚퀛퀜í€�í€ží€Ÿí€ í€¡í€¢í€£í€¤í€¥í€¦í€§í€¨ï¿½í€©í€ªí€«í€¬í€í€®í€¯í€°í€±í€²í€³ï¿½ï¿½ï¿½í€´í€µí€¶í€·í€¸í€¹í€ºí€»í€¼í€½í€¾í€¿í�€í��í�‚í�ƒí�„�í�…í�†í�‡í�ˆí�‰í�Ší�‹í�Œí��í�Ží����\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������í��í�‘í�’í�“í�”í�•í�–í�—í�˜í�™í�ší�›í�œí��í�ží�Ÿí� �í�¡í�¢í�£í�¤í�¥í�¦í�§í�¨í�©í�ªí�«ï¿½ï¿½ï¿½í�¬í�í�®í�¯í�°í�±í�²í�³í�´í�µí�¶í�·í�¸í�¹í�ºí�»í�¼ï¿½í�½í�¾í�¿í‚€í‚�킂킃킄킅킆킇���킈킉킊킋킌í‚�킎í‚�í‚�킑킒킓킔킕킖킗킘�킙킚킛킜í‚�í‚ží‚Ÿí‚ í‚¡í‚¢í‚£ï¿½ï¿½ï¿½í‚¤í‚¥í‚¦í‚§í‚¨í‚©í‚ªí‚«í‚¬í‚킮킯킰킱킲킳킴�킵킶킷킸킹킺킻킼킽킾킿������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������á„��������������������������������타íƒ�탂탃탄탅탆탇탈탉탊탋탌íƒ�탎íƒ�íƒ��탑탒탓탔탕탖탗탘탙탚탛���태íƒ�íƒžíƒŸíƒ íƒ¡íƒ¢íƒ£íƒ¤íƒ¥íƒ¦íƒ§íƒ¨íƒ©íƒªíƒ«íƒ¬ï¿½íƒíƒ®íƒ¯íƒ°íƒ±íƒ²íƒ³íƒ´íƒµíƒ¶íƒ·ï¿½ï¿½ï¿½íƒ¸íƒ¹íƒºíƒ»íƒ¼íƒ½íƒ¾íƒ¿í„€í„�턂턃턄턅턆턇턈�턉턊턋턌í„�턎í„�í„�턑턒턓���턔턕턖턗턘턙턚턛턜í„�í„ží„Ÿí„ í„¡í„¢í„£í„¤ï¿½í„¥í„¦í„§í„¨í„©í„ªí„«í„¬í„턮턯���터턱턲턳턴턵턶턷털턹턺턻턼턽턾턿텀�í…�텂텃텄텅텆텇텈텉텊텋��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"�����������������������������������������������������������������테í…�í…Ží…�í…�텑텒텓텔텕텖텗텘텙텚텛템�í…�í…ží…Ÿí… í…¡í…¢í…£í…¤í…¥í…¦í…§ï¿½ï¿½ï¿½í…¨í…©í…ªí…«í…¬í…텮텯텰텱텲텳텴텵텶텷텸�텹텺텻텼텽텾텿톀í†�톂톃���톄톅톆톇톈톉톊톋톌í†�톎í†�í†�톑톒톓톔�톕톖톗톘톙톚톛톜í†�í†ží†Ÿï¿½ï¿½ï¿½í† í†¡í†¢í†£í†¤í†¥í†¦í†§í†¨í†©í†ªí†«í†¬í†í†®í†¯í†°ï¿½í†±í†²í†³í†´í†µí†¶í†·í†¸í†¹í†ºí†»ï¿½ï¿½ï¿½í†¼í†½í†¾í†¿í‡€í‡�퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌�í‡�퇎í‡�í‡�퇑퇒퇓퇔퇕퇖퇗���퇘퇙퇚퇛퇜í‡�í‡ží‡Ÿí‡ í‡¡í‡¢í‡£í‡¤í‡¥í‡¦í‡§í‡¨ï¿½í‡©í‡ªí‡«í‡¬í‡í‡®í‡¯í‡°í‡±í‡²í‡³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"�����������������������������������������������������������������퇴퇵퇶퇷퇸퇹퇺퇻퇼퇽퇾퇿툀íˆ�툂툃툄�툅툆툇툈툉툊툋툌íˆ�툎íˆ����íˆ�툑툒툓툔툕툖툗툘툙툚툛툜íˆ�íˆžíˆŸíˆ ï¿½íˆ¡íˆ¢íˆ£íˆ¤íˆ¥íˆ¦íˆ§íˆ¨íˆ©íˆªíˆ«ï¿½ï¿½ï¿½íˆ¬íˆíˆ®íˆ¯íˆ°íˆ±íˆ²íˆ³íˆ´íˆµíˆ¶íˆ·íˆ¸íˆ¹íˆºíˆ»íˆ¼ï¿½íˆ½íˆ¾íˆ¿í‰€í‰�퉂퉃퉄퉅퉆퉇���퉈퉉퉊퉋퉌í‰�퉎í‰�í‰�퉑퉒퉓퉔퉕퉖퉗퉘�퉙퉚퉛퉜í‰�í‰ží‰Ÿí‰ í‰¡í‰¢í‰£ï¿½ï¿½ï¿½í‰¤í‰¥í‰¦í‰§í‰¨í‰©í‰ªí‰«í‰¬í‰í‰®í‰¯í‰°í‰±í‰²í‰³í‰´ï¿½í‰µí‰¶í‰·í‰¸í‰¹í‰ºí‰»í‰¼í‰½í‰¾í‰¿ï¿½ï¿½ï¿½íŠ€íŠ�튂튃튄튅튆튇튈튉튊튋튌íŠ�튎íŠ�íŠ��튑튒튓튔튕튖튗튘튙튚튛��\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������튜íŠ�íŠžíŠŸíŠ íŠ¡íŠ¢íŠ£íŠ¤íŠ¥íŠ¦íŠ§íŠ¨íŠ©íŠªíŠ«íŠ¬ï¿½íŠíŠ®íŠ¯íŠ°íŠ±íŠ²íŠ³íŠ´íŠµíŠ¶íŠ·ï¿½ï¿½ï¿½íŠ¸íŠ¹íŠºíŠ»íŠ¼íŠ½íŠ¾íŠ¿í‹€í‹�틂틃틄틅틆틇틈�틉틊틋틌í‹�틎í‹�í‹�틑틒틓���틔틕틖틗틘틙틚틛틜í‹�í‹ží‹Ÿí‹ í‹¡í‹¢í‹£í‹¤ï¿½í‹¥í‹¦í‹§í‹¨í‹©í‹ªí‹«í‹¬í‹í‹®í‹¯ï¿½ï¿½ï¿½í‹°í‹±í‹²í‹³í‹´í‹µí‹¶í‹·í‹¸í‹¹í‹ºí‹»í‹¼í‹½í‹¾í‹¿íŒ€ï¿½íŒ�팂팃팄팅팆팇팈팉팊팋������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������ᄑ�������������������������������파íŒ�팎íŒ�íŒ�팑팒팓팔팕팖팗팘팙팚팛팜�íŒ�íŒžíŒŸíŒ íŒ¡íŒ¢íŒ£íŒ¤íŒ¥íŒ¦íŒ§ï¿½ï¿½ï¿½íŒ¨íŒ©íŒªíŒ«íŒ¬íŒíŒ®íŒ¯íŒ°íŒ±íŒ²íŒ³íŒ´íŒµíŒ¶íŒ·íŒ¸ï¿½íŒ¹íŒºíŒ»íŒ¼íŒ½íŒ¾íŒ¿í�€í��í�‚í�ƒï¿½ï¿½ï¿½í�„í�…í�†í�‡í�ˆí�‰í�Ší�‹í�Œí��í�Ží��í��í�‘í�’í�“í�”�í�•í�–í�—í�˜í�™í�ší�›í�œí��í�ží�Ÿï¿½ï¿½ï¿½í� í�¡í�¢í�£í�¤í�¥í�¦í�§í�¨í�©í�ªí�«í�¬í�í�®í�¯í�°ï¿½í�±í�²í�³í�´í�µí�¶í�·í�¸í�¹í�ºí�»ï¿½ï¿½ï¿½í�¼í�½í�¾í�¿íŽ€íŽ�펂펃펄펅펆펇펈펉펊펋펌�íŽ�펎íŽ�íŽ�펑펒펓펔펕펖펗��\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������페펙펚펛펜íŽ�íŽžíŽŸíŽ íŽ¡íŽ¢íŽ£íŽ¤íŽ¥íŽ¦íŽ§íŽ¨ï¿½íŽ©íŽªíŽ«íŽ¬íŽíŽ®íŽ¯íŽ°íŽ±íŽ²íŽ³ï¿½ï¿½ï¿½íŽ´íŽµíŽ¶íŽ·íŽ¸íŽ¹íŽºíŽ»íŽ¼íŽ½íŽ¾íŽ¿í�€í��í�‚í�ƒí�„�í�…í�†í�‡í�ˆí�‰í�Ší�‹í�Œí��í�Ží�����í��í�‘í�’í�“í�”í�•í�–í�—í�˜í�™í�ší�›í�œí��í�ží�Ÿí� �í�¡í�¢í�£í�¤í�¥í�¦í�§í�¨í�©í�ªí�«ï¿½ï¿½ï¿½í�¬í�í�®í�¯í�°í�±í�²í�³í�´í�µí�¶í�·í�¸í�¹í�ºí�»í�¼ï¿½í�½í�¾í�¿í�€í��í�‚í�ƒí�„í�…í�†í�‡ï¿½ï¿½ï¿½í�ˆí�‰í�Ší�‹í�Œí��í�Ží��í��í�‘í�’í�“í�”í�•í�–í�—í�˜ï¿½í�™í�ší�›í�œí��í�ží�Ÿí� í�¡í�¢í�£ï¿½ï¿½ï¿½í�¤í�¥í�¦í�§í�¨í�©í�ªí�«í�¬í�í�®í�¯í�°í�±í�²í�³í�´ï¿½í�µí�¶í�·í�¸í�¹í�ºí�»í�¼í�½í�¾í�¿ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������푀í‘�푂푃푄푅푆푇푈푉푊푋푌í‘�푎í‘�í‘��푑푒푓푔푕푖푗푘푙푚푛���표í‘�í‘ží‘Ÿí‘ í‘¡í‘¢í‘£í‘¤í‘¥í‘¦í‘§í‘¨í‘©í‘ªí‘«í‘¬ï¿½í‘푮푯푰푱푲푳푴푵푶푷���푸푹푺푻푼푽푾푿풀í’�풂풃풄풅풆풇품�풉풊풋풌í’�í’Ží’�í’�풑풒풓���풔풕풖풗풘풙풚풛풜í’�í’ží’Ÿí’ í’¡í’¢í’£í’¤ï¿½í’¥í’¦í’§í’¨í’©í’ªí’«í’¬í’풮풯���풰풱풲풳풴풵풶풷풸풹풺풻풼풽풾풿퓀�í“�퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋���퓌í“�퓎í“�í“�퓑퓒퓓퓔퓕퓖퓗퓘퓙퓚퓛퓜�í“�í“ží“Ÿí“ í“¡í“¢í“£í“¤í“¥í“¦í“§ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������퓨퓩퓪퓫퓬í“퓮퓯퓰퓱퓲퓳퓴퓵퓶퓷퓸�퓹퓺퓻퓼퓽퓾퓿픀í”�픂픃���프픅픆픇픈픉픊픋플í”�픎í”�í”�픑픒픓픔�픕픖픗픘픙픚픛픜í”�í”ží”Ÿï¿½ï¿½ï¿½í” í”¡í”¢í”£í”¤í”¥í”¦í”§í”¨í”©í”ªí”«í”¬í”픮픯픰�픱픲픳픴픵픶픷픸픹픺픻���피픽픾픿핀í•�핂핃필핅핆핇핈핉핊핋핌�í•�핎í•�í•�핑핒핓핔핕핖핗������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������ᄒ�������������������������������하학핚핛한í•�í•ží•Ÿí• í•¡í•¢í•£í•¤í•¥í•¦í•§í•¨ï¿½í•©í•ªí•«í•¬í•핮핯핰핱핲핳���해핵핶핷핸핹핺핻핼핽핾핿햀í–�햂햃햄�햅햆햇했행햊햋햌í–�í–Ží–����í–�햑햒햓햔햕햖햗햘햙햚햛햜í–�í–ží–Ÿí– ï¿½í–¡í–¢í–£í–¤í–¥í–¦í–§í–¨í–©í–ªí–«ï¿½ï¿½ï¿½í–¬í–햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼�햽햾햿헀í—�헂헃헄헅헆헇���허헉헊헋헌í—�í—Ží—�í—�헑헒헓헔헕헖헗험�헙헚헛헜í—�í—ží—Ÿí— í—¡í—¢í—£ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������헤헥헦헧헨헩헪헫헬í—헮헯헰헱헲헳헴�헵헶헷헸헹헺헻헼헽헾헿���혀í˜�혂혃현혅혆혇혈혉혊혋혌í˜�혎í˜�í˜��협혒혓혔형혖혗혘혙혚혛���혜í˜�í˜ží˜Ÿí˜ í˜¡í˜¢í˜£í˜¤í˜¥í˜¦í˜§í˜¨í˜©í˜ªí˜«í˜¬ï¿½í˜í˜®í˜¯í˜°í˜±í˜²í˜³í˜´í˜µí˜¶í˜·ï¿½ï¿½ï¿½í˜¸í˜¹í˜ºí˜»í˜¼í˜½í˜¾í˜¿í™€í™�홂홃홄홅홆홇홈�홉홊홋홌í™�홎í™�í™�홑홒홓���화확홖홗환홙홚홛활í™�í™ží™Ÿí™ í™¡í™¢í™£í™¤ï¿½í™¥í™¦í™§í™¨í™©í™ªí™«í™¬í™í™®í™¯ï¿½ï¿½ï¿½í™°í™±í™²í™³í™´í™µí™¶í™·í™¸í™¹í™ºí™»í™¼í™½í™¾í™¿íš€ï¿½íš�횂횃횄횅횆횇횈횉횊횋��\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������회íš�횎íš�íš�횑횒횓횔횕횖횗횘횙횚횛횜�íš�íšžíšŸíš íš¡íš¢íš£íš¤íš¥íš¦íš§ï¿½ï¿½ï¿½íš¨íš©íšªíš«íš¬íšíš®íš¯íš°íš±íš²íš³íš´íšµíš¶íš·íš¸ï¿½íš¹íšºíš»íš¼íš½íš¾íš¿í›€í›�훂훃���후훅훆훇훈훉훊훋훌í›�훎í›�í›�훑훒훓훔�훕훖훗훘훙훚훛훜í›�í›ží›Ÿï¿½ï¿½ï¿½í› í›¡í›¢í›£í›¤í›¥í›¦í›§í›¨í›©í›ªí›«í›¬í›í›®í›¯í›°ï¿½í›±í›²í›³í›´í›µí›¶í›·í›¸í›¹í›ºí›»ï¿½ï¿½ï¿½í›¼í›½í›¾í›¿íœ€íœ�휂휃휄휅휆휇휈휉휊휋휌�íœ�휎íœ�íœ�휑휒휓휔휕휖휗���휘휙휚휛휜íœ�íœžíœŸíœ íœ¡íœ¢íœ£íœ¤íœ¥íœ¦íœ§íœ¨ï¿½íœ©íœªíœ«íœ¬íœíœ®íœ¯íœ°íœ±íœ²íœ³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������휴휵휶휷휸휹휺휻휼휽휾휿í�€í��í�‚í�ƒí�„�í�…í�†í�‡í�ˆí�‰í�Ší�‹í�Œí��í�Ží�����í��í�‘í�’í�“í�”í�•í�–í�—í�˜í�™í�ší�›í�œí��í�ží�Ÿí� �í�¡í�¢í�£í�¤í�¥í�¦í�§í�¨í�©í�ªí�«ï¿½ï¿½ï¿½í�¬í�í�®í�¯í�°í�±í�²í�³í�´í�µí�¶í�·í�¸í�¹í�ºí�»í�¼ï¿½í�½í�¾í�¿íž€íž�힂힃힄힅힆힇���히힉힊힋힌íž�힎íž�íž�힑힒힓힔힕힖힗힘�힙힚힛힜íž�ížžížŸíž íž¡íž¢íž£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[216] = \"�������������������������������������������������î€�î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��������������������î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"������������������������������������������������� ã€�。·‥…¨〃Â―∥\∼‘’“â€�〔〕〈〉《》「ã€�『ã€�ã€�ã€‘Â±Ã—Ã·â‰ â‰¤â‰¥âˆžâˆ´Â°â€²â€³â„ƒâ„«ï¿ ï¿¡ï¿¥â™‚â™€âˆ âŠ¥âŒ’âˆ‚âˆ‡â‰¡â‰’Â§â€»â˜†â˜…â—‹â—�◎◇◆□■△▲▽▼→â†�↑↓↔〓≪≫√������������������∽âˆ�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔∀∃´~ˇ˘Ë�˚˙¸˛¡¿Ë�∮∑âˆ�¤℉‰â—�◀▷▶♤♠♡♥♧♣⊙◈▣â—�◑▒▤▥▨▧▦▩♨â˜�☎☜☞¶†‡↕↗↙↖↘â™â™©â™ªâ™¬ã‰¿ãˆœâ„–ã�‡â„¢ã�‚ã�˜â„¡â‚¬Â®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�������������������������������������������������ï¼�"#$%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¿¦ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�n������������������ï½�ï½�qrstuvwxyz{|ï½� ̄���������������������������������������������������ᅟᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜá‡�ᇟá„�ᄞᄠᄢᄣᄧᄨᄫᄬá„ᄮᄯᄲᄶᅀᅇᅌᅅᅆᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ï¿½ï¿½ï¿½ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξ������������������οπÏ�στυφχψω������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂┒┑┚┙┖┕┎â”�┞┟┡┢┦┧┩┪â”┮┱┲┵┶┹┺┽┾╀â•�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�������������������������������������������������㎕㎖㎗ℓ㎘ã�„㎣㎤㎥㎦㎙㎚㎛㎜ãŽ�㎞㎟㎠㎡㎢ã�ŠãŽ�㎎ãŽ�ã��㎈㎉ã�ˆãŽ§ãŽ¨ãŽ°ãŽ±ãŽ²ãŽ³ãŽ´ãŽµãŽ¶ãŽ·ãŽ¸ãŽ¹ãŽ€ãŽ�㎂㎃㎄㎺㎻㎼㎽㎾㎿ãŽ�㎑㎒㎓㎔Ωã�€ã��㎊㎋㎌ã�–ã�…ãŽãŽ®ãŽ¯ã�›ãŽ©ãŽªãŽ«ãŽ¬ã��ã��ã�“ã�ƒã�‰ã�œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ã�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ã†Ã�ªĦ�IJ�ĿÅ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬ã‰ã‰®ã‰¯ã‰°ã‰±ã‰²ã‰³ã‰´ã‰µã‰¶ã‰·ã‰¸ã‰¹ã‰ºã‰»â“�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜâ“�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬â‘⑮½⅓⅔¼¾⅛⅜â…�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀ãˆ�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌ãˆ�㈎ãˆ�ãˆ�㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜â’�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬â’⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻������������������⑼⑽⑾⑿⒀â’�⒂¹²³â�´â�¿â‚�₂₃₄ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[224] = \"�������������������������������������������������伽佳å�‡åƒ¹åŠ å�¯å‘µå“¥å˜‰å«�家暇架枷柯æŒç�‚痂稼苛茄街袈訶賈è·�軻迦駕刻å�´å�„æ�ªæ…¤æ®¼ç��脚覺角閣侃刊墾奸姦干幹懇æ�€æ�†æŸ¬æ¡¿æ¾—癎看磵稈竿簡è‚�艮艱諫間乫å–�曷渴碣ç«è‘›è¤�è�Žéž¨å‹˜å�Žå ªåµŒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ„Ÿæ†¾æˆ¡æ•¢æŸ‘æ©„æ¸›ç”˜ç–³ç›£çž°ç´ºé‚¯é‘‘é‘’é¾•åŒ£å²¬ç”²èƒ›é‰€é–˜å‰›å ˆå§œå²¡å´—åº·å¼ºå½Šæ…·æ±Ÿç•ºç–†ç³ çµ³ç¶±ç¾Œè…”èˆ¡è–‘è¥�講鋼é™�鱇介价個凱å¡�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客å�‘ï¤�粳羹醵倨去居巨拒æ�®æ“šæ“§æ¸ ç‚¬ç¥›è·�踞車é�½é‰…鋸乾件å�¥å·¾å»ºæ„†æ¥—腱虔蹇é�µé¨«ä¹žå‚‘æ�°æ¡€å„‰åŠ�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�������������������������������������������������瞼éˆ�黔劫怯迲å�ˆæ†©æ�æ“Šæ ¼æª„æ¿€è†ˆè¦¡éš”å …ç‰½çŠ¬ç”„çµ¹ç¹è‚©è¦‹è´é�£éµ‘抉決潔çµ�缺訣兼慊ç®�謙鉗鎌京俓倞傾儆å‹�å‹�å�¿å�°å¢ƒåºšå¾‘慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖è¦è¼•������������������逕é�¡é ƒé ¸é©šé¯¨ä¿‚å•“å ºå¥‘å£å±†æ‚¸æˆ’桂械棨溪界癸磎稽系繫繼計誡谿階鷄å�¤å�©å‘Šå‘±å›ºå§‘å¤å°»åº«æ‹·æ”·æ•…æ•²æš æž¯æ§�沽痼çš�ç�¾ç¨¿ç¾”考股è†�苦苽è�°è—�è ±è¢´èª¥ï¤ƒè¾œéŒ®é›‡é¡§é«˜é¼“å“æ–›æ›²æ¢�ç©€è°·éµ å›°å�¤å´‘昆梱æ£�滾ç�¨è¢žé¯¤æ±¨ï¤„骨供公共功å”å·¥æ��æ�拱控攻ç�™ç©ºèš£è²¢éž�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�������������������������������������������������科è�“誇課跨é�Žé�‹é¡†å»“槨藿éƒï¤…å† å®˜å¯¬æ…£æ£ºæ¬¾ç�Œç�¯ç“˜ç®¡ç½�è�…觀貫關館刮æ��æ‹¬é€‚ä¾Šå…‰åŒ¡å£™å»£æ› æ´¸ç‚šç‹‚ç�–ç�胱鑛å�¦æŽ›ç½«ä¹–傀塊壞怪愧æ‹�æ§�é�å®�ç´˜è‚±è½Ÿäº¤åƒ‘å’¬å–¬å¬Œå¶ å·§æ”ªæ•Žæ ¡æ©‹ç‹¡çšŽçŸ¯çµžç¿¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è† è•Žè›Ÿè¼ƒè½ŽéƒŠé¤ƒé©•é®«ä¸˜ä¹…ä¹�仇俱具勾å�€å�£å�¥å’Žå˜”å�µåž¢å¯‡å¶‡å»�懼拘救枸柩構æ�毆毬求æº�ç�¸ç‹—玖ç�ƒçž¿çŸ©ç©¶çµ¿è€‰è‡¼èˆ…舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局è�Šéž 鞫麴å�›çª˜ç¾¤è£™è»�éƒ¡å €å±ˆæŽ˜çªŸå®®å¼“ç©¹çª®èŠŽèº¬å€¦åˆ¸å‹¸å�·åœˆæ‹³æ�²æ¬Šæ·ƒçœ·åŽ¥ç�—蕨蹶闕机櫃潰è©è»Œé¥‹ï¤†æ™·æ¸è²´ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�������������������������������������������������鬼龜å�«åœå¥Žæ�†æ§»ç�ªç¡…窺竅糾葵è¦�赳逵閨勻å�‡ç•‡ç è�Œéˆžï¤ˆæ©˜å…‹å‰‹åŠ‡æˆŸæ£˜æ¥µéš™åƒ…åŠ¤å‹¤æ‡ƒæ–¤æ ¹æ§¿ç‘¾ç‹èйè�«è¦²è¬¹è¿‘饉契今妗擒昑檎ç�´ç¦�禽芩衾衿襟金錦伋å�Šæ€¥æ‰±æ±²ç´šçµ¦äº˜å…¢çŸœè‚¯ä¼�伎其冀嗜������������������器圻基埼夔奇妓寄å²�崎己幾忌技旗旣朞期æ�žæ£‹æ£„機欺氣汽沂淇玘ç�¦ç�ªç’‚璣畸畿ç¢�磯ç¥�祇祈祺箕紀綺羈耆è€è‚Œè¨˜è�豈起錡錤飢饑騎é¨�驥麒緊佶å�‰æ‹®æ¡”金喫儺喇奈娜懦ï¤�æ‹�拿癩ï¤�ï¤�螺裸邏那樂洛烙珞落諾酪駱亂卵暖ï¤�ç…–ï¤žï¤Ÿé›£ï¤ æ��æ�ºå�—嵐æž�æ¥ æ¹³ï¤¢ç”·ï¤£ï¤¤ï¤¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�������������������������������������������������ç´�臘蠟衲囊娘廊朗浪狼郎乃ï¤å…§å¥ˆæŸ°è€�冷女年撚秊念æ�¬æ‹ˆæ�»å¯§å¯—努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿ï¥�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓ï¥�漏ï¥�ï¥�陋嫩訥æ�»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç´�勒肋凜凌稜綾能菱陵尼泥匿溺多茶丹亶但單團壇彖斷旦檀段æ¹�çŸç«¯ç°žç·žè›‹è¢’鄲é�›æ’»æ¾¾ç�ºç–¸é�”å•–å��æ†ºæ“”æ›‡æ·¡æ¹›æ½æ¾¹ç—°è�ƒè†½è•�覃談èšéŒŸæ²“ç•“ç”è¸�é��å”�å ‚å¡˜å¹¢æˆ‡æ’žæ£ ç•¶ç³–èž³é»¨ä»£åžˆå�®å¤§å°�å²±å¸¶å¾…æˆ´æ“¡çŽ³è‡ºè¢‹è²¸éšŠé»›å®…å¾·æ‚³å€’åˆ€åˆ°åœ–å µå¡—å°Žå± å³¶å¶‹åº¦å¾’æ‚¼æŒ‘æŽ‰æ�—桃�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�������������������������������������������������棹櫂淘渡滔濤燾盜ç�¹ç¦±ç¨»è�„覩è³è·³è¹ˆé€ƒé€”é�“都é��陶韜毒瀆牘犢ç�¨ç�£ç¦¿ç¯¤çº›è®€å¢©æƒ‡æ•¦æ—½æš¾æ²Œç„žç‡‰è±šé “ä¹çª�ä»�冬å‡�å‹•å�Œæ†§æ�±æ¡�棟洞潼疼瞳童胴董銅兜斗æ�œæž“痘竇è�³ï¥šè±†é€—é 屯臀芚é��é�¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éˆ�å¾—å¶�橙燈登ç‰è—¤è¬„鄧騰喇懶拏癩羅蘿螺裸é‚�樂洛烙ç�žçµ¡è�½ï¥�酪駱丹亂å�µæ¬„欒瀾爛è˜é¸žå‰Œè¾£åµ�擥攬欖濫籃纜è—�è¥¤è¦½æ‹‰è‡˜è Ÿå»Šæœ—æµªç‹¼ç�…瑯螂郞來å´�å¾ è�Šå†·æŽ 略亮倆兩凉æ¢�樑粮粱糧良諒輛é‡�ä¾¶å„·å‹µå‘‚å»¬æ…®æˆ¾æ—…æ«šæ¿¾ç¤ªè—œè £é–驢驪麗黎力曆æ·ç€�礫轢é�‚æ†�戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�������������������������������������������������煉璉練è�¯è“®è¼¦é€£é�Šå†½åˆ—劣洌烈裂廉斂殮濂簾ç�µä»¤ä¼¶å›¹ï¥Ÿå²ºå¶ºæ€œç޲ç¬ç¾šç¿Žè�†é€žéˆ´é›¶é�ˆé ˜é½¡ä¾‹æ¾§ç¦®é†´éš·å‹žï¥ 撈擄櫓潞瀘çˆ�ç›§è€�蘆虜路輅露é¯é·ºé¹µç¢Œç¥¿ç¶ è�‰éŒ„鹿麓論壟弄朧瀧ç“�ç± è�¾å„¡ç€¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç‰¢ç£Šè³‚賚賴雷了僚寮廖料燎療çžè�Šè“¼é�¼é¬§é¾�壘å©�屢樓淚æ¼�瘻累縷蔞褸é�¤é™‹åŠ‰æ—’æŸ³æ¦´æµ�溜ç€�ç�‰ç‘ ç•™ç˜¤ç¡«è¬¬é¡žå…æˆ®é™¸ä¾–å€«å´™æ·ªç¶¸è¼ªå¾‹æ…„æ —ï¥¡éš†å‹’è‚‹å‡œå‡Œæ¥žç¨œç¶¾è�±é™µä¿šåˆ©åŽ˜å��唎履悧æ�Žæ¢¨æµ¬çŠ�狸ç�†ç’ƒï¥¢ç—¢ç±¬ç½¹ç¾¸èމè£�裡里é‡�離鯉å��æ½¾ç‡�璘藺躪隣鱗麟林淋ç�³è‡¨éœ–ç ¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç«‹ç¬ ç²’æ‘©ç‘ªç—²ç¢¼ç£¨é¦¬é”éº»å¯žå¹•æ¼ è†œèŽ«é‚ˆä¸‡å��娩巒彎慢挽晩曼滿漫ç�£çžžè�¬è”“è »è¼“é¥…é°»å”œæŠ¹æœ«æ²«èŒ‰è¥ªé�ºäº¡å¦„忘忙望網罔芒茫莽輞邙埋妹媒å¯�昧枚梅æ¯�煤罵買賣é‚�é…è„ˆè²Šé™Œé©€éº¥åŸæ°“猛盲������������������盟è�Œå†ªè¦“å…�å†•å‹‰æ£‰æ²”çœ„çœ ç¶¿ç·¬é�¢éºµæ»…蔑冥å��命明æš�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮æŸ�模æ¯�毛牟牡ç‘�眸矛耗芼茅謀謨貌木æ²�牧目ç�¦ç©†é¶©æ¿æ²’夢朦蒙å�¯å¢“妙廟æ��昴æ�³æ¸ºçŒ«ç«—è‹—éŒ¨å‹™å·«æ†®æ‡‹æˆŠæ‹‡æ’«æ— æ¥™æ¦æ¯‹ç„¡ç�·ç•�繆舞茂蕪誣貿霧鵡墨默們刎å�»å•�文�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�������������������������������������������������汶紊紋è�žèšŠé–€é›¯å‹¿æ²•物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷é�¡é»´å²·æ‚¶æ„�憫æ•�旻旼民泯玟ç�‰ç·¡é–”密蜜è¬�å‰�å�šæ‹�æ��撲朴樸泊ç�€ç’žç®”粕縛膊舶薄迫雹é§�ä¼´å�Šå��å�›æ‹Œæ�¬æ”€æ–‘槃泮潘ç�畔瘢������������������盤盼ç£�ç£»ç¤¬çµ†èˆ¬èŸ è¿”é ’é£¯å‹ƒæ‹”æ’¥æ¸¤æ½‘ç™¼è·‹é†±é‰¢é«®éƒå€£å‚�å�Šå¦¨å°¨å¹‡å½·æˆ¿æ”¾æ–¹æ—�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防é¾�å€�俳北培徘拜排æ�¯æ¹ƒç„™ç›ƒèƒŒèƒšè£´è£µè¤™è³ 輩é…�陪伯佰帛æŸ�æ ¢ç™½ç™¾é„幡樊煩燔番磻ç¹�蕃藩飜ä¼�ç�罰閥凡帆梵氾汎泛犯範范法ç�ºåƒ»åŠˆå£�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�������������������������������������������������碧蘗闢霹便å�žå¼�變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳ç”�病秉ç«�è¼§é¤ é¨ˆä¿�å ¡å ±å¯¶æ™®æ¥æ´‘湺潽ç�¤ç”«è�©è£œè¤“èœè¼”ä¼�僕åŒ�å�œå®“復æœ�ç¦�腹茯蔔複覆輹輻馥鰒本乶俸奉å°�峯峰æ�§æ£’烽熢ç�«ç¸«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è“¬èœ‚逢鋒鳳ä¸�付俯傅剖副å�¦å’�åŸ å¤«å©¦åšåµå¯Œåºœï¥¦æ‰¶æ•·æ–§æµ®æº¥çˆ¶ç¬¦ç°¿ç¼¶è…�è…‘è†šè‰€èŠ™èŽ©è¨ƒè² è³¦è³»èµ´è¶ºéƒ¨é‡œé˜œé™„é§™é³§åŒ—åˆ†å�©å™´å¢³å¥”奮忿憤扮æ˜�汾焚盆粉糞紛芬è³�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪å�‘妃婢庇悲憊扉批æ–�枇榧比毖毗毘沸泌ç�µç—ºç ’碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�������������������������������������������������脾臂è�²èœšè£¨èª¹è¬è²»é„™é�žé£›é¼»åš¬å¬ªå½¬æ–Œæª³æ®¯æµœæ¿±ç€•ç‰�çŽè²§è³“é »æ†‘æ°·è�˜é¨�ä¹�事些仕伺似使俟僿å�²å�¸å”†å—£å››å£«å¥¢å¨‘寫寺射巳師徙æ€�æ�¨æ–œæ–¯æŸ¶æŸ»æ¢æ»æ²™æ³—渣瀉ç�…ç ‚ç¤¾ç¥€ç¥ ç§�篩紗絲肆èˆ�莎蓑������������������蛇裟è©�詞è¬�賜赦è¾é‚ªé£¼é§Ÿéº�削數朔索傘刪山散汕ç�Šç”£ç–�算蒜酸霰乷撒殺煞薩三參æ�‰æ£®æ¸—芟蔘衫æ�·æ¾�鈒颯上傷åƒ�償商喪嘗å€å°™å³ å¸¸åºŠåº å»‚æƒ³æ¡‘æ©¡æ¹˜çˆ½ç‰€ç‹€ç›¸ç¥¥ç®±ç¿”è£³è§´è©³è±¡è³žéœœå¡žç’½è³½å—‡ï¥¬ç©¡ç´¢è‰²ç‰²ç”Ÿç”¥ï¥ç¬™å¢…壻嶼åº�庶å¾�æ�•抒æ�¿æ•�æš‘æ›™æ›¸æ –æ£²çŠ€ç‘žç®çµ®ç·–署�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�������������������������������������������������胥舒薯西誓é€�鋤é»�é¼ å¤•å¥å¸æƒœæ˜”晳æž�æ±�淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽ç��瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣é�¸éŠ‘é�¥é¥�é®®å�¨å±‘楔泄洩渫舌薛褻è¨èªªé›ªé½§å‰¡æš¹æ®²çº–蟾è´�é–ƒé™�æ”�������������������涉燮葉城姓宬性惺æˆ�星晟猩ç�¹ç››çœ�ç¬è�–è�²è…¥èª é†’ä¸–å‹¢æ²æ´—稅笹細說貰å�¬å˜¯å¡‘宵å°�少巢所掃æ�”æ˜æ¢³æ²¼æ¶ˆæº¯ç€Ÿç‚¤ç‡’甦ç–�ç–Žç˜™ç¬‘ç¯ ç°«ç´ ç´¹è”¬è•蘇訴é€�é�¡é‚µéŠ·éŸ¶é¨·ä¿—å±¬æ�Ÿæ¶‘粟續謖贖速å«å·½æ��è“€é�œé£¡çŽ‡å®‹æ‚šæ�¾æ·žè¨Ÿèª¦é€�é Œåˆ·ï¥°ç�‘碎鎖衰釗修å�—嗽囚垂壽嫂守岫峀帥æ„��\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�������������������������������������������������æˆ�手授æ�œæ”¶æ•¸æ¨¹æ®Šæ°´æ´™æ¼±ç‡§ç‹©ç�¸ç�‡ç’²ç˜¦ç�¡ç§€ç©—竪粹ç¶�綬繡羞脩茱è’�蓚藪袖誰è®�輸é�‚é‚ƒé…¬éŠ–éŠ¹éš‹éš§éš¨é›–éœ€é ˆé¦–é«“é¬šå�”塾夙å°å®¿æ·‘潚熟ç�¡ç’¹è‚…è�½å·¡å¾‡å¾ªæ�‚æ—¬æ ’æ¥¯æ©“æ®‰æ´µæ·³ç�£ç›¾çž¬ç�純脣������������������舜è�€è“´è•£è©¢è«„é†‡éŒžé †é¦´æˆŒè¡“è¿°é‰¥å´‡å´§åµ©ç‘Ÿè†�è�¨æ¿•拾習褶襲丞乘僧å‹�å�‡æ‰¿æ˜‡ç¹©è …陞ä¾�匙嘶始媤尸屎å±�市弑æ�ƒæ–½æ˜¯æ™‚枾柴猜矢示翅蒔è“�視試詩諡豕豺埴寔å¼�æ�¯æ‹æ¤�殖湜熄篒è�•è˜è»¾é£Ÿé£¾ä¼¸ä¾�ä¿¡å‘»å¨ å®¸æ„¼æ–°æ™¨ç‡¼ç”³ç¥žç´³è…Žè‡£èŽ˜è–ªè—Žèœƒè¨Šèº«è¾›ï¥±è¿…å¤±å®¤å¯¦æ‚‰å¯©å°‹å¿ƒæ²��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�������������������������������������������������沈深瀋甚芯諶什å��拾雙æ°�亞俄兒啞娥峨我牙芽莪蛾衙è¨�阿雅餓鴉éµ�å Šå²³å¶½å¹„æƒ¡æ„•æ�¡æ¨‚渥鄂é�”顎é°�齷安岸按æ™�案眼é›�éž�顔鮟斡è¬�軋閼唵岩巖庵暗癌è�´é—‡å£“押狎鴨仰央æ€�昻殃秧鴦厓哀������������������埃崖愛曖涯ç¢�艾隘é�„厄扼掖液縊腋é¡�櫻罌鶯鸚也倻冶夜惹æ�¶æ¤°çˆºè€¶ï¥´é‡Žå¼±ï¥µï¥¶ç´„若葯蒻藥èº�ï¥·ä½¯ï¥¸ï¥¹å£¤åƒæ�™æ�šæ”˜æ•æš˜ï¥ºæ¥Šæ¨£æ´‹ç€�煬痒ç˜�禳穰糧羊良襄諒讓釀陽量養圄御於æ¼�瘀禦語é¦éšé½¬å„„憶抑æª�臆å�ƒå °å½¦ç„‰è¨€è«ºå¼è˜–俺儼嚴奄掩淹嶪æ¥å††äºˆä½™ï¥¿ï¦€ï¦�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¦ƒæŸæ±�濾璵礖礪與艅茹輿è½�閭餘驪麗黎亦力域役易曆歷疫繹è¯ï¦�é€†é©›åš¥å §å§¸å¨Ÿå®´ï¦Žå»¶ï¦�ï¦�æ��挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉ç¡�硯秊çµç·£ï¦–縯聯è¡�軟輦蓮連鉛鍊鳶列ï¦�ï¦žæ‚…æ¶…ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¦Ÿç†±ï¦ ï¦¡é–±åŽï¦¢ï¦£ï¦¤æŸ“殮炎焰ç�°è‰¶è‹’簾閻髥鹽曄獵ç‡�è‘‰ï¦¨ï¦©å¡‹ï¦ªï¦«å¶¸å½±ï¦¬æ˜ æšŽæ¥¹æ¦®æ°¸æ³³æ¸¶æ½�濚瀛瀯ç…�營ç�°ï¦ç‘›ï¦®ç“”ç›ˆç©Žçº“ï¦¯ï¦°è‹±è© è¿Žï¦±é�ˆï¦²éœ™ï¦³ï¦´ä¹‚倪例刈å�¡æ›³æ±æ¿ŠçŒŠç�¿ç©¢èŠ®è—�蘂禮裔詣è½è±«ï¦·éŠ³ï¦¸éœ“é �五ä¼�俉傲å�ˆå�¾å�³å—šå¡¢å¢ºå¥§å¨›å¯¤æ‚Ÿï¦¹æ‡Šæ•–旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�������������������������������������������������çƒ�熬ç�’ç½èœˆèª¤é°²é¼‡å±‹æ²ƒç�„玉鈺溫瑥瘟穩縕蘊兀壅æ“�瓮甕癰ç¿�é‚•é›�饔渦瓦窩窪臥蛙è�¸è¨›å©‰å®Œå®›æ¢¡æ¤€æµ£çŽ©ç�“ç�¬ç¢—ç·©ç¿«è„˜è…•èŽžè±Œé˜®é ‘æ›°å¾€æ—ºæž‰æ±ªçŽ‹å€å¨ƒæªçŸ®å¤–嵬å·�猥ç•�ï¦ºï¦»åƒ¥å‡¹å ¯å¤å¦–姚������������������寥寮尿嶢拗æ�–撓擾料曜樂橈燎燿瑤ï§�窈窯繇繞耀腰蓼蟯è¦�è¬ é�™ï§ƒé‚€é¥’慾欲浴縟褥辱俑å‚冗勇埇墉容庸慂榕涌湧溶熔瑢用甬è�³èŒ¸è“‰è¸ŠéŽ”é�žï§„于佑å�¶å„ªå�ˆå�‹å�³å®‡å¯“尤愚憂旴牛玗瑀盂ç¥�禑禹紆羽芋藕虞迂é�‡éƒµé‡ªéš…é›¨é›©å‹–å½§æ—æ˜±æ ¯ç…œç¨¶éƒ�é Šäº‘ï§…æ©’æ®žæ¾�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�������������������������������������������������é�‹éš•雲韻蔚鬱äº�熊雄元原員圓園垣媛嫄寃怨愿æ�´æ²…洹湲æº�爰猿瑗苑è¢�è½…é� 阮院願鴛月越鉞ä½�å�‰åƒžå�±åœ�å§”å¨�尉慰æš�æ¸çˆ²ç‘‹ç·¯èƒƒè�Žè‘¦è”¿è�Ÿè¡›è¤˜è¬‚é�•韋é�乳侑儒兪劉唯喩åºå®¥å¹¼å¹½åº¾æ‚ 惟������������������愈愉æ�„攸有杻柔柚柳楡楢油洧流游溜濡猶猷琉瑜由ï§�ç™’ï§Žï§�ç¶è‡¾è�¸è£•誘諛è«è¸°è¹‚é�Šé€¾é�ºé…‰é‡‰é�®ï§�ï§‘å ‰ï§’æ¯“è‚‰è‚²ï§“ï§”å…�奫尹崙淪潤玧胤贇輪鈗é–�律慄栗率è�¿æˆŽç€œçµ¨èž�ï§œåž æ�©æ…‡æ®·èª¾éŠ€éš±ä¹™å�Ÿæ·«è”陰音飮æ�–泣邑å‡�應膺鷹ä¾�倚儀宜æ„�懿擬椅毅疑矣義艤è–�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�������������������������������������������������è°é†«äºŒä»¥ä¼Šï§�ï§žå¤·å§¨ï§Ÿå·²å¼›å½›æ€¡ï§ ï§¡ï§¢ï§£çˆ¾ç�¥ï§¤ç•°ç—�痢移罹而耳肄苡è�‘裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人ä»�刃å�°ï§å’½å› 姻寅引å¿�湮燐璘絪茵藺蚓èª�ï§±é�é�·ï§²ï§³ä¸€ä½šä½¾å£¹æ—¥æº¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é€¸éŽ°é¦¹ä»»å£¬å¦Šå§™æ��林淋稔臨è��賃入å�„立笠粒ä»�剩å•芿仔刺咨姉姿å�å—åœæ�£æ…ˆæ»‹ç‚™ç…®çŽ†ç“·ç–µç£�紫者自茨蔗藉諮資雌作勺嚼斫昨ç�¼ç‚¸çˆµç¶½èŠ�é…Œé›€éµ²å±æ£§æ®˜æ½ºç›žå²‘æš«æ½›ç®´ç°ªè ¶é›œä¸ˆä»—åŒ å ´å¢»å£¯å¥¬å°‡å¸³åº„å¼µæŽŒæš²æ�–樟檣欌漿牆狀ç��ç’‹ç« ç²§è…¸è‡Ÿè‡§èŽŠè‘¬è”£è–”è—�è£�贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�������������������������������������������������障å†�哉在宰æ‰�æ��æ ½æ¢“æ¸½æ»“ç�½ç¸¡è£�財載齋齎çˆç®�è«�錚佇低儲咀å§�底抵æ�µæ¥®æ¨—沮渚狙猪疽箸紵苧è�¹è‘—藷詛貯躇這邸雎齟勣å�Šå«¡å¯‚摘敵滴狄炙的ç©�笛ç±�績翟è�»è¬«è³Šèµ¤è·¡è¹Ÿè¿ªè¿¹é�©é�‘佃佺傳������������������全典å‰�å‰ªå¡¡å¡¼å¥ å°ˆå±•å»›æ‚›æˆ°æ “æ®¿æ°ˆæ¾±ç…Žç� 田甸畑癲çŒç®‹ç®ç¯†çº�詮輾轉鈿銓錢é�«é›»é¡šé¡«é¤žåˆ‡æˆªæŠ˜æµ™ç™¤ç«Šç¯€çµ¶å� 岾店漸点粘霑鮎點接摺è�¶ä¸�井äºå�œå�µå‘ˆå§ƒå®šå¹€åºå»·å¾�æƒ…æŒºæ”¿æ•´æ—Œæ™¶æ™¸æŸ¾æ¥¨æª‰æ£æ±€æ·€æ·¨æ¸Ÿæ¹žç€žç‚¡çŽŽç�½ç”ºç�›ç¢‡ç¦Žç¨‹ç©½ç²¾ç¶Žè‰‡è¨‚諪貞é„é…Šé‡˜é‰¦é‹ŒéŒ éœ†é�–�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�������������������������������������������������é�œé ‚é¼Žåˆ¶åŠ‘å•¼å ¤å¸�弟悌æ��梯濟ç¥ç¬¬è‡�薺製諸蹄é†�除際霽題齊俎兆凋助嘲弔彫措æ“�æ—©æ™�曺曹æœ�æ¢�æ£—æ§½æ¼•æ½®ç…§ç‡¥çˆªç’ªçœºç¥–ç¥šç§Ÿç¨ çª•ç²—ç³Ÿçµ„ç¹°è‚‡è—»èš¤è©”èª¿è¶™èº�é€ é�釣阻雕鳥æ—�簇足é�ƒå˜å°Šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�’æ‹™çŒ�倧宗從悰慫棕淙ç�®ç¨®çµ‚綜縱腫踪踵é�¾é�˜ä½�å��左座挫罪主ä½�ä¾�å�šå§�胄呪周嗾å¥�宙州廚æ™�æœ±æŸ±æ ªæ³¨æ´²æ¹Šæ¾�ç‚·ç� 疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄é§�竹粥俊å„�å‡†åŸˆå¯¯å³»æ™™æ¨½æµšæº–æ¿¬ç„Œç•¯ç«£è ¢é€¡é�µé›‹é§¿èŒ�ä¸ä»²è¡†é‡�å�½æ«›æ¥«æ±�葺增憎曾拯çƒ�甑症繒蒸è‰è´ˆä¹‹å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�������������������������������������������������咫地å�€å¿—æŒ�指摯支旨智æž�æž³æ¢æ± æ²šæ¼¬çŸ¥ç ¥ç¥‰ç¥—ç´™è‚¢è„‚è‡³èŠ�芷蜘誌識贄趾é�²ç›´ç¨™ç¨·ç¹”è�·å”‡å—”塵振æ�¢æ™‰æ™‹æ¡æ¦›æ®„津溱ç��瑨璡畛疹盡眞瞋秦縉ç¸�臻蔯袗診賑軫辰進éŽé™£é™³éœ‡ä¾„å�±å§ªå«‰å¸™æ¡Žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç“†ç–¾ç§©çª’膣è›è³ªè·Œè¿æ–Ÿæœ•什執潗ç·�輯é�¶é›†å¾µæ‡²æ¾„且侘借å�‰å—Ÿåµ¯å·®æ¬¡æ¤ç£‹ç®šï§¾è¹‰è»Šé�®æ�‰æ�¾ç�€çª„錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽é¤�饌刹察擦æœç´®åƒå�ƒå¡¹æ…˜æ…™æ‡ºæ–¬ç«™è®’è®–å€‰å€¡å‰µå”±å¨¼å» å½°æ„´æ•žæ˜Œæ˜¶æš¢æ§�滄漲猖瘡窓脹艙è�–è’¼å‚µåŸ°å¯€å¯¨å½©æŽ¡ç ¦ç¶µè�œè”¡é‡‡é‡µå†ŠæŸµç–�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è²¬å‡„å¦»æ‚½è™•å€œï§¿å‰”å°ºæ…½æˆšæ‹“æ“²æ–¥æ»Œç˜ è„Šè¹ é™Ÿéš»ä»Ÿå�ƒå–˜å¤©å·�擅泉淺玔穿舛薦賤è¸�é�·é‡§é—¡é˜¡éŸ†å‡¸å“²å–†å¾¹æ’¤æ¾ˆç¶´è¼Ÿè½�é�µåƒ‰å°–æ²¾æ·»ç”›çž»ç°½ç±¤è©¹è«‚å žå¦¾å¸–æ�·ç‰’ç–Šç�«è«œè²¼è¼’廳晴淸è�½è��è«‹é�‘é¯–ï¨€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‰ƒæ›¿æ¶•æ»¯ç· è«¦é€®é�žé«”åˆ�剿哨憔抄招梢椒楚樵炒焦ç¡�ç¤�礎秒ç¨�肖艸苕è�‰è•‰è²‚超酢醋醮促囑ç‡çŸ—蜀觸寸忖æ�‘邨å�¢å¡šå¯µæ‚¤æ†�æ‘ ç¸½è�°è”¥éŠƒæ’®å‚¬å´”æœ€å¢œæŠ½æŽ¨æ¤Žæ¥¸æ¨žæ¹«çšºç§‹èŠ»è�©è«�趨追鄒酋醜éŒ�錘鎚雛騶é°�丑畜ç¥�竺ç‘築縮蓄蹙蹴軸é€�æ˜¥æ¤¿ç‘ƒå‡ºæœ®é»œå……å¿ æ²–èŸ²è¡�衷悴膵è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�������������������������������������������������贅å�–å�¹å˜´å¨¶å°±ç‚Šç¿ è�šè„†è‡è¶£é†‰é©Ÿé·²å�´ä»„åŽ æƒ»æ¸¬å±¤ä¾ˆå€¤å—¤å³™å¹Ÿæ�¥æ¢”治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅é£è¦ªä¸ƒæŸ’漆侵寢枕沈浸ç�›ç §é‡�é�¼èŸ„秤稱快他咤唾墮妥惰打拖朶楕舵陀馱������������������é§�倬å�“å•„å�¼ï¨�托拓擢晫æŸ�æ¿�濯ç�¢ç�¸è¨—é�¸å‘‘嘆å�¦å½ˆæ†šæŽç�˜ç‚綻誕奪脫探眈耽貪塔æ�榻宕帑湯糖蕩兌å�°å¤ªæ€ 態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎å��土討慟桶洞痛ç’çµ±é€šå †æ§Œè…¿è¤ªé€€é ¹å�¸å¥—妬投é€�鬪æ…�特闖å�¡å©†å·´æŠŠæ’擺æ�·æ³¢æ´¾çˆ¬ç�¶ç ´ç½·èŠè·›é —判å�‚æ�¿ç‰ˆç“£è²©è¾¦éˆ‘�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�������������������������������������������������阪八å�æ�Œä½©å”„悖敗沛浿牌狽稗覇è²�彿¾Žçƒ¹è†¨æ„Žä¾¿å��æ‰�片篇編翩é��éžé¨™è²¶å�ªå¹³æž°è��è©•å� 嬖幣廢弊斃肺蔽閉陛佈包åŒ�åŒ�咆哺圃布怖抛抱æ�•ï¨†æ³¡æµ¦ç–±ç ²èƒžè„¯è‹žè‘¡è’²è¢�褒逋鋪飽鮑幅暴æ›�瀑������������������爆輻俵剽彪慓æ�“標漂瓢票表豹飇飄驃å“�稟楓諷豊風馮彼披疲皮被é�¿é™‚匹弼必泌ç�Œç•¢ç–‹ç†è‹¾é¦�ä¹�逼下何厦å¤�廈昰河瑕è�·è�¦è³€é��霞鰕壑å¸è™�謔鶴寒æ�¨æ‚�旱汗漢澣瀚罕翰閑閒é™�韓割轄函å�«å’¸å•£å–Šæª»æ¶µç·˜è‰¦éŠœé™·é¹¹å�ˆå“ˆç›’蛤閤闔陜亢伉姮嫦巷æ�’抗æ�æ¡�沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¨ˆï¨‰é …äº¥å�•咳垓奚å©å®³æ‡ˆæ¥·æµ·ç€£èŸ¹è§£è©²è«§é‚‚é§éª¸åŠ¾æ ¸å€–å¹¸æ��è�‡è¡Œäº«å�‘åš®ç�¦é„•響餉饗香噓墟虛許憲櫶ç�»è»’æ‡éšªé©—奕爀赫é�©ä¿”峴弦懸晛泫炫玄玹ç�¾çœ©ç��絃絢縣舷衒見賢鉉顯å‘ç©´è¡€é �å«Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä¿ å�”夾峽挾浹狹脅脇莢é‹�é °äº¨å…„åˆ‘åž‹å½¢æ³‚æ»Žç€…ç��炯熒ç�©ç‘©è�Šèž¢è¡¡é€ˆé‚¢éŽ£é¦¨å…®å½—æƒ æ…§æš³è•™è¹Šé†¯éž‹ä¹Žäº’å‘¼å£•å£ºå¥½å²µå¼§æˆ¶æ‰ˆæ˜Šæ™§æ¯«æµ©æ·�æ¹–æ»¸æ¾”æ¿ æ¿©ç��ç‹�ç�¥ç‘šç“ 皓祜糊縞胡芦葫蒿虎號è�´è·è±ªéŽ¬é €é¡¥æƒ‘æˆ–é…·å©šæ˜�混渾ç�¿é‚忽惚ç¬�哄弘汞泓洪烘紅虹訌鴻化和嬅樺ç�«ç•µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"�������������������������������������������������ç¦�禾花è�¯è©±è�貨é�´ï¨‹æ“´æ”«ç¢ºç¢»ç©«ä¸¸å–šå¥�宦幻患æ�›æ¡æ™¥æ¡“渙煥環紈還驩鰥活滑猾è±�闊凰幌徨æ��惶愰慌晃晄榥æ³�湟滉潢煌璜皇ç¯�ç°§è�’è�—é�‘éš�黃匯回廻徊æ�¢æ‚”懷晦會檜淮澮ç�°ç�ªç¹ªè†¾èŒ´è›”������������������誨賄劃ç�²å®–æ©«é�„哮嚆å�效斅曉梟æ¶�淆爻肴酵é©�侯候厚å�Žå�¼å–‰å—…帿後朽煦ç��逅勛勳塤壎焄ç†�燻薰訓暈薨喧暄煊è�±å�‰å–™æ¯�彙徽æ�®æš‰ç…‡è«±è¼�麾休æ�ºçƒ‹ç•¦è™§æ�¤èŽé·¸å…‡å‡¶åŒˆæ´¶èƒ¸é»‘昕欣炘痕å�ƒå±¹ç´‡è¨–æ¬ æ¬½æ†å�¸æ�°æ´½ç¿•興僖凞喜噫å›�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10001] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������� 。「」、・ヲァィゥェォャï½ï½®ï½¯ï½°ï½±ï½²ï½³ï½´ï½µï½¶ï½·ï½¸ï½¹ï½ºï½»ï½¼ï½½ï½¾ï½¿ï¾€ï¾�ツテトナニヌネノハヒフï¾�ホï¾�ï¾�ムメモヤユヨラリルレロワï¾�゙゚�����������������������������©™�\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"���������������������������������������������������������������� ã€�。,.・:;?ï¼�゛゜´`¨^ ̄_ヽヾã‚�ゞ〃ä»�々〆〇ー―â€�ï¼�\~∥|…‥‘’“â€�()〔〕[]{ï½�〈〉《》「ã€�『ã€�ã€�】+ï¼�±×�÷ï¼�â‰ ï¼œï¼žâ‰¦â‰§âˆžâˆ´â™‚â™€Â°â€²â€³â„ƒï¿¥ï¼„ï¿ ï¿¡ï¼…ï¼ƒï¼†ï¼Šï¼ Â§â˜†â˜…â—‹â—�◎◇◆□■△▲▽▼※〒→â†�↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽âˆ�∵∫∬�������ʼn♯â™â™ªâ€ ‡¶����◯���\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"�������������������������������������������������������������������������������ï¼�123456789�������ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz����ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん��������������\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミ�ムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î‘ΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�����������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмн�опрÑ�туфхцчшщъыьÑ�ÑŽÑ��������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂�����������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬â‘â‘®â‘¯â‘°â‘±â‘²â‘³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"����������������������������������������������������������������㎜�ãŽ����㎡�㎞�㎎�ãŽ�ã�„�����������������������������������������������������������������������������№ã��℡��������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"���������������������������������������������������������������������������㈹�㈱��㈲�����������������������������������������������ã€�〟�����������������㊤㊥㊦㊧㊨�������ã�‰ãŒ¢ã��㌔����㌃㌶㌘�㌧ã�‘ã�Šï¿½ã�—ãŒ��㌣㌦㌻㌫�����������������������������������������������ã�¾ã�½ã�¼ã�»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"����������������������������������������������������������������∮∟⊿��������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜ç©�悪æ�¡æ¸¥æ—葦芦鯵梓圧斡扱宛å§�虻飴絢綾鮎或粟袷安庵按暗案闇éž�æ��以伊ä½�ä¾�å�‰å›²å¤·å§”å¨�尉惟æ„�慰易椅為ç•�ç•°ç§»ç¶ç·¯èƒƒè�Žè¡£è¬‚é�•é�ºåŒ»äº•亥域育éƒ�磯一壱溢逸稲茨芋鰯å…�å�°å’½å“¡å› 姻引飲淫胤è”���\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é™¢é™°éš éŸ»å�‹å�³å®‡çƒ�羽迂雨å�¯éµœçªºä¸‘碓臼渦嘘唄æ¬�蔚鰻姥厩浦瓜é–�噂云é�‹é›²è��餌å�¡å–¶å¬°å½±æ˜ æ›³æ „æ°¸æ³³æ´©ç‘›ç›ˆç©Žé ´è‹±è¡›è© é‹æ¶²ç–«ç›Šé§…悦è¬�越閲榎åŽå††ï¿½åœ’å °å¥„å®´å»¶æ€¨æŽ©æ�´æ²¿æ¼”炎焔煙燕猿ç¸�艶苑薗é� 鉛鴛塩於汚甥凹央奥往応押旺横欧殴王ç¿�襖鴬鴎黄岡沖è�»å„„屋憶臆桶牡乙俺å�¸æ�©æ¸©ç©�éŸ³ä¸‹åŒ–ä»®ä½•ä¼½ä¾¡ä½³åŠ å�¯å˜‰å¤�å«�å®¶å¯¡ç§‘æš‡æžœæž¶æŒæ²³ç�«ç�‚ç¦�禾稼箇花苛茄è�·è�¯è�“è�¦èª²å˜©è²¨è¿¦é�ŽéœžèšŠä¿„峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔æ�¢æ‡�戒æ‹�改���\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������é�晦械海ç�°ç•Œçš†çµµèŠ¥èŸ¹é–‹éšŽè²�凱劾外咳害崖慨概涯ç¢�蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇å�„å»“æ‹¡æ’¹æ ¼æ ¸æ®»ç�²ç¢ºç©«è¦šè§’赫較éƒé–£éš”é�©å¦å²³æ¥½é¡�é¡ŽæŽ›ç¬ æ¨«ï¿½æ©¿æ¢¶é°�潟割å–�æ�°æ‹¬æ´»æ¸‡æ»‘è‘›è¤�轄且鰹å�¶æ¤›æ¨ºéž„æ ªå…œç«ƒè’²é‡œéŽŒå™›é´¨æ ¢èŒ…è�±ç²¥åˆˆè‹…ç“¦ä¹¾ä¾ƒå† å¯’åˆŠå‹˜å‹§å·»å–šå ªå§¦å®Œå®˜å¯›å¹²å¹¹æ‚£æ„Ÿæ…£æ†¾æ�›æ•¢æŸ‘æ¡“æ£ºæ¬¾æ“æ±—漢澗潅環甘監看竿管簡緩缶翰è‚�艦莞観諌貫還鑑間閑関陥韓館舘丸å�«å²¸å·ŒçŽ©ç™Œçœ¼å²©ç¿«è´‹é›�é ‘é¡”é¡˜ä¼�伎å�±å–œå™¨åŸºå¥‡å¬‰å¯„å²�希幾忌æ�®æœºæ——既期棋棄���\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������機帰毅気汽畿祈å£ç¨€ç´€å¾½è¦�記貴起軌è¼�飢騎鬼亀å�½å„€å¦“å®œæˆ¯æŠ€æ“¬æ¬ºçŠ ç–‘ç¥‡ç¾©èŸ»èª¼è°æŽ¬è�Šéž å�‰å�ƒå–«æ¡”æ©˜è©°ç §æ�µé»�å�´å®¢è„šè™�逆丘久仇休å�Šå�¸å®®å¼“急救�朽求汲泣ç�¸ç�ƒç©¶çª®ç¬ˆç´šç³¾çµ¦æ—§ç‰›åŽ»å±…å·¨æ‹’æ‹ æŒ™æ¸ è™šè¨±è·�鋸æ¼�禦éšäº¨äº«äº¬ä¾›ä¾ 僑兇競共凶å�”匡å�¿å�«å–¬å¢ƒå³¡å¼·å½Šæ€¯æ��æ�挟教橋æ³�ç‹‚ç‹çŸ¯èƒ¸è„…興蕎郷é�¡éŸ¿é¥—驚仰å‡�å°æš�æ¥å±€æ›²æ¥µçމæ¡�ç²�僅勤å�‡å·¾éŒ¦æ–¤æ¬£æ¬½ç�´ç¦�禽ç‹ç·Šèйè�Œè¡¿è¥Ÿè¬¹è¿‘金å�ŸéŠ€ä¹�倶å�¥åŒºç‹—玖矩苦躯駆駈駒具愚虞喰空å�¶å¯“é�‡éš…串櫛釧屑屈���\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������掘窟沓é�´è½¡çªªç†Šéšˆç²‚æ —ç¹°æ¡‘é�¬å‹²å�›è–«è¨“群è»�郡å�¦è¢ˆç¥�係傾刑兄啓åœç�ªåž‹å¥‘形径æ�µæ…¶æ…§æ†©æŽ²æ�ºæ•¬æ™¯æ¡‚渓畦稽系経継繋罫茎è�Šè›�計詣è¦è»½é šé¶�芸迎鯨�劇戟撃激隙æ¡�å‚‘æ¬ æ±ºæ½”ç©´çµ�血訣月件倹倦å�¥å…¼åˆ¸å‰£å–§åœ�å …å«Œå»ºæ†²æ‡¸æ‹³æ�²æ¤œæ¨©ç‰½çŠ¬çŒ®ç ”ç¡¯çµ¹çœŒè‚©è¦‹è¬™è³¢è»’é�£é�µé™ºé¡•験鹸元原厳幻弦減æº�玄ç�¾çµƒèˆ·è¨€è«ºé™�乎個å�¤å‘¼å›ºå§‘å¤å·±åº«å¼§æˆ¸æ•…枯湖ç‹�糊袴股胡è�°è™Žèª‡è·¨éˆ·é›‡é¡§é¼“五互ä¼�å�ˆå‘‰å�¾å¨¯å¾Œå¾¡æ‚Ÿæ¢§æªŽç‘šç¢�語誤è·é†�乞鯉交佼侯候倖光公功効勾厚å�£å�‘���\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������å�Žå–‰å�‘垢好å”å�å®�工巧巷幸広庚康弘æ�’慌抗拘控攻昂晃更æ�æ ¡æ¢—æ§‹æ±Ÿæ´ªæµ©æ¸¯æº�ç”²çš‡ç¡¬ç¨¿ç³ ç´…ç´˜çµžç¶±è€•è€ƒè‚¯è‚±è…”è†�航è�’è¡Œè¡¡è¬›è²¢è³¼éƒŠé…µé‰±ç ¿é‹¼é–¤é™�ï¿½é …é¦™é«˜é´»å‰›åŠ«å�·å�ˆå£•æ‹·æ¿ è±ªè½Ÿéº¹å…‹åˆ»å‘Šå›½ç©€é…·éµ é»’ç�„漉腰甑忽惚骨狛込æ¤é ƒä»Šå›°å�¤å¢¾å©šæ�¨æ‡‡æ˜�æ˜†æ ¹æ¢±æ··ç—•ç´ºè‰®é‚些ä½�å�‰å”†åµ¯å·¦å·®æŸ»æ²™ç‘³ç ‚è©�鎖裟å��座挫債催å†�最哉塞妻宰彩æ‰�æŽ¡æ ½æ³æ¸ˆç�½é‡‡çŠ€ç •ç ¦ç¥æ–Žç´°è�œè£�載際剤在æ��罪財冴å�‚é˜ªå ºæ¦Šè‚´å’²å´ŽåŸ¼ç¢•é·ºä½œå‰Šå’‹æ�¾æ˜¨æœ”柵窄ç–索錯桜é®ç¬¹åŒ™å†Šåˆ·ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¯Ÿæ‹¶æ’®æ“¦æœæ®ºè–©é›‘çš�鯖æ�ŒéŒ†é®«çš¿æ™’三傘å�‚山惨撒散桟燦ç�Šç”£ç®—纂蚕讃賛酸é¤�斬暫残仕仔伺使刺å�¸å�²å—£å››å£«å§‹å§‰å§¿å�å±�市師志æ€�æŒ‡æ”¯åœæ–¯æ–½æ—¨æž�æ¢ï¿½æ»æ°�ç�…祉ç§�糸紙紫肢脂至視詞詩試誌諮資賜雌飼æ¯äº‹ä¼¼ä¾�å…�å—寺慈æŒ�時次滋治爾璽痔ç£�示而耳自蒔辞æ±�鹿å¼�è˜é´«ç«ºè»¸å®�雫七å�±åŸ·å¤±å«‰å®¤æ‚‰æ¹¿æ¼†ç–¾è³ªå®Ÿè”€ç¯ å�²æŸ´èŠ�屡蕊縞舎写射æ�¨èµ¦æ–œç…®ç¤¾ç´—者è¬�車é�®è›‡é‚ªå€Ÿå‹ºå°ºæ�“ç�¼çˆµé…Œé‡ˆéŒ«è‹¥å¯‚弱惹主å�–守手朱殊狩ç� 種腫趣酒首儒å�—呪寿授樹綬需囚å�Žå‘¨ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������宗就州修æ„�拾洲秀秋終ç¹�ç¿’è‡èˆŸè’�衆襲è®�蹴輯週酋酬集醜什ä½�å……å��従戎柔æ±�渋ç�£ç¸¦é‡�銃å�”夙宿淑ç¥�縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡é�µé†‡é †å‡¦åˆ�所暑曙渚庶緒署書薯藷諸助å�™å¥³åº�å¾�æ�•鋤除傷償å‹�åŒ å�‡å�¬å“¨å•†å”±å˜—奨妾娼宵将å°�å°‘å°šåº„åºŠå» å½°æ‰¿æŠ„æ‹›æŽŒæ�·æ˜‡æ˜Œæ˜æ™¶æ�¾æ¢¢æ¨Ÿæ¨µæ²¼æ¶ˆæ¸‰æ¹˜ç„¼ç„¦ç…§ç—‡çœ�ç¡�ç¤�ç¥¥ç§°ç« ç¬‘ç²§ç´¹è‚–è�–蒋蕉è¡�裳訟証詔詳象賞醤鉦é�¾é�˜éšœéž˜ä¸Šä¸ˆä¸žä¹—å†—å‰°åŸŽå ´å£Œå¬¢å¸¸æƒ…æ“¾æ�¡æ�–浄状畳穣蒸è²é†¸éŒ 嘱埴飾���\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‹æ¤�æ®–ç‡ç¹”è�·è‰²è§¦é£Ÿè�•è¾±å°»ä¼¸ä¿¡ä¾µå”‡å¨ å¯�審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進é‡�震人ä»�刃塵壬尋甚尽腎訊迅陣é�笥è«�é ˆé…¢å›³åŽ¨ï¿½é€—å�¹åž‚帥推水炊ç�¡ç²‹ç¿ è¡°é�‚é…”éŒ�錘éš�瑞髄崇嵩数枢趨雛æ�®æ�‰æ¤™è�…é —é›€è£¾æ¾„æ‘ºå¯¸ä¸–ç€¬ç•�是凄制勢姓å¾�性æˆ�æ”¿æ•´æ˜Ÿæ™´æ£²æ –æ£æ¸…牲生盛精è�–å£°è£½è¥¿èª èª“è«‹é€�醒é�’é�™æ–‰ç¨Žè„†éš»å¸æƒœæˆšæ–¥æ˜”æž�石ç©�ç±�績脊責赤跡蹟碩切拙接摂折è¨çªƒç¯€èª¬é›ªçµ¶èˆŒè�‰ä»™å…ˆå�ƒå� 宣専尖å·�æˆ¦æ‰‡æ’°æ “æ ´æ³‰æµ…æ´—æŸ“æ½œç…Žç…½æ—‹ç©¿ç®ç·šï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������繊羨腺舛船薦詮賎践é�¸é�·éŠéŠ‘é–ƒé®®å‰�善漸然全禅繕膳糎噌塑岨措曾曽楚狙ç–�ç–Žç¤Žç¥–ç§Ÿç²—ç´ çµ„è˜‡è¨´é˜»é�¡é¼ 僧創å�Œå�¢å€‰å–ªå£®å¥�爽宋層åŒ�惣想æ�œæŽƒæŒ¿æŽ»ï¿½æ“�早曹巣æ§�槽漕燥争痩相窓糟ç·�ç¶œè�¡è�‰è�˜è‘¬è’¼è—»è£…èµ°é€�é�鎗霜騒åƒ�å¢—æ†Žè‡“è”µè´ˆé€ ä¿ƒå�´å‰‡å�³æ�¯æ�‰æ�Ÿæ¸¬è¶³é€Ÿä¿—属賊æ—�ç¶šå�’袖其æ�ƒå˜å«å°Šæ��æ�‘é�œä»–å¤šå¤ªæ±°è©‘å”¾å •å¦¥æƒ°æ‰“æŸ�èˆµæ¥•é™€é§„é¨¨ä½“å †å¯¾è€�å²±å¸¯å¾…æ€ æ…‹æˆ´æ›¿æ³°æ»žèƒŽè…¿è‹”è¢‹è²¸é€€é€®éšŠé»›é¯›ä»£å�°å¤§ç¬¬é†�題鷹æ»�瀧å�“啄宅托択拓沢濯ç�¢è¨—é�¸æ¿�諾茸凧蛸å�ªï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������å�©ä½†é�”辰奪脱巽竪辿棚谷狸鱈樽誰丹å�˜å˜†å�¦æ‹…æŽ¢æ—¦æŽæ·¡æ¹›ç‚çŸç«¯ç®ªç¶»è€½èƒ†è›‹èª•é�›å›£å£‡å¼¾æ–暖檀段男談値知地弛æ�¥æ™ºæ± 痴稚置致蜘é�…馳築畜竹ç‘蓄�é€�秩窒茶嫡ç�€ä¸ä»²å®™å¿ 抽昼柱注虫衷註酎鋳é§�樗瀦猪苧著貯ä¸�兆凋喋寵帖帳åº�弔張彫徴懲挑暢æœ�潮牒町眺è�´è„¹è…¸è�¶èª¿è«œè¶…è·³éŠšé•·é ‚é³¥å‹…æ�—直朕沈ç��è³ƒéŽ®é™³æ´¥å¢œæ¤Žæ§Œè¿½éŽšç—›é€šå¡šæ ‚æŽ´æ§»ä½ƒæ¼¬æŸ˜è¾»è”¦ç¶´é�”椿潰å�ªå£·å¬¬ç´¬çˆªå�Šé‡£é¶´äºä½Žå�œå�µå‰ƒè²žå‘ˆå ¤å®šå¸�底åºå»·å¼Ÿæ‚ŒæŠµæŒºæ��æ¢¯æ±€ç¢‡ç¦Žç¨‹ç· è‰‡è¨‚è«¦è¹„é€“ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������邸é„釘鼎泥摘擢敵滴的笛é�©é�‘溺哲徹撤è½�è¿é‰„典填天展店添çº�甜貼転顛点ä¼�殿澱田電兎å��å µå¡—å¦¬å± å¾’æ–—æ�œæ¸¡ç™»è�Ÿè³é€”都é��ç ¥ç ºåŠªåº¦åœŸå¥´æ€’å€’å…šå†¬ï¿½å‡�刀å”�塔塘套宕島嶋悼投æ�æ�±æ¡ƒæ¢¼æ£Ÿç›—淘湯涛ç�¯ç‡ˆå½“痘祷ç‰ç”ç’糖統到董蕩藤討謄豆è¸�逃é€�é�™é™¶é 騰闘åƒ�å‹•å�Œå ‚導憧撞洞瞳童胴è�„é�“éŠ…å³ é´‡åŒ¿å¾—å¾³æ¶œç‰¹ç�£ç¦¿ç¯¤æ¯’ç‹¬èªæ ƒæ©¡å‡¸çª�椴届鳶苫寅酉瀞噸屯惇敦沌豚é��é “å‘‘æ›‡éˆ�奈那内ä¹�凪薙謎ç�˜æ�ºé�‹æ¥¢é¦´ç¸„ç•·å�—æ¥ è»Ÿé›£æ±�二尼å¼�迩匂賑肉虹廿日乳入���\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������如尿韮任妊å¿�èª�濡禰祢寧葱猫熱年念æ�»æ’šç‡ƒç²˜ä¹ƒå»¼ä¹‹åŸœå𢿂©æ¿ƒç´�能脳膿農覗蚤巴把æ’覇æ�·æ³¢æ´¾ç�¶ç ´å©†ç½µèŠé¦¬ä¿³å»ƒæ‹�排敗æ�¯ç›ƒç‰ŒèƒŒè‚ºè¼©é…�å€�åŸ¹åª’æ¢…ï¿½æ¥³ç…¤ç‹½è²·å£²è³ é™ªé€™è�¿ç§¤çŸ§è�©ä¼¯å‰¥å�šæ‹�æŸ�泊白箔粕舶薄迫æ›�æ¼ çˆ†ç¸›èŽ«é§�éº¦å‡½ç®±ç¡²ç®¸è‚‡çˆæ«¨å¹¡è‚Œç•‘ç• å…«é‰¢æºŒç™ºé†—é«ªä¼�罰抜ç�閥鳩噺塙蛤隼伴判å�Šå��å�›å¸†æ�¬æ–‘æ�¿æ°¾æ±Žç‰ˆçНç�ç•”ç¹�èˆ¬è—©è²©ç¯„é‡†ç…©é ’é£¯æŒ½æ™©ç•ªç›¤ç£�蕃蛮匪å�‘å�¦å¦ƒåº‡å½¼æ‚²æ‰‰æ‰¹æŠ«æ–�比泌疲皮碑秘緋罷肥被誹費é�¿é�žé£›æ¨‹ç°¸å‚™å°¾å¾®æž‡æ¯˜ç�µçœ‰ç¾Žï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������鼻柊稗匹疋é«å½¦è†�è�±è‚˜å¼¼å¿…ç•¢ç†é€¼æ¡§å§«åª›ç´�百謬俵彪標氷漂瓢票表評豹廟æ��病秒苗錨鋲蒜è›é°å“�å½¬æ–Œæµœç€•è²§è³“é »æ•�ç“¶ä¸�ä»˜åŸ å¤«å©¦å¯Œå†¨å¸ƒåºœæ€–æ‰¶æ•·ï¿½æ–§æ™®æµ®çˆ¶ç¬¦è…�膚芙èœè² 賦赴阜附侮撫æ¦èˆžè‘¡è•ªéƒ¨å°�楓風葺蕗ä¼�副復幅æœ�ç¦�腹複覆淵弗払沸ä»�物鮒分å�»å™´å¢³æ†¤æ‰®ç„šå¥®ç²‰ç³žç´›é›°æ–‡è�žä¸™ä½µå…µå¡€å¹£å¹³å¼ŠæŸ„並蔽閉陛米é �僻å£�癖碧別瞥蔑箆å��変片篇編辺返é��便勉娩å¼�éžä¿�舗鋪圃æ�•æ©ç”«è£œè¼”穂募墓慕戊暮æ¯�ç°¿è�©å€£ä¿¸åŒ…å‘†å ±å¥‰å®�峰峯崩庖抱æ�§æ”¾æ–¹æœ‹ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ³•æ³¡çƒ¹ç ²ç¸«èƒžèŠ³è�Œè“¬èœ‚褒訪豊邦鋒飽鳳鵬ä¹�亡å‚�剖å�Šå¦¨å¸½å¿˜å¿™æˆ¿æš´æœ›æŸ�棒冒紡肪膨謀貌貿鉾防å� é ¬åŒ—åƒ•å�œå¢¨æ’²æœ´ç‰§ç�¦ç©†é‡¦å‹ƒæ²¡æ®†å €å¹Œå¥”本翻凡盆�摩磨é”麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒æ¡�亦俣å�ˆæŠ¹æœ«æ²«è¿„ä¾ç¹éº¿ä¸‡æ…¢æº€æ¼«è”“味未é…巳箕岬密蜜湊蓑稔脈妙ç²�æ°‘çœ å‹™å¤¢ç„¡ç‰ŸçŸ›éœ§éµ¡æ¤‹å©¿å¨˜å†¥å��命明盟迷銘鳴姪ç‰�æ»…å…�棉綿緬é�¢éººæ‘¸æ¨¡èŒ‚å¦„åŸæ¯›çŒ›ç›²ç¶²è€—蒙儲木黙目æ�¢å‹¿é¤…尤戻籾貰å•�æ‚¶ç´‹é–€åŒ�也冶夜爺耶野弥矢厄役約薬訳èº�é�–柳薮鑓愉愈油癒���\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������è«è¼¸å”¯ä½‘優勇å�‹å®¥å¹½æ‚ 憂æ�–有柚湧涌猶猷由ç¥�裕誘é�Šé‚‘郵雄èž�夕予余与誉輿é �å‚幼妖容庸æ�šæ�ºæ“�曜楊様洋溶熔用窯羊耀葉蓉è¦�謡踊é�¥é™½é¤Šæ…¾æŠ‘欲�沃浴翌翼淀羅螺裸æ�¥èŽ±é ¼é›·æ´›çµ¡è�½é…ªä¹±å�µåµ�欄濫è—�è˜è¦§åˆ©å��å±¥æ�Žæ¢¨ç�†ç’ƒç—¢è£�è£¡é‡Œé›¢é™¸å¾‹çŽ‡ç«‹è‘ŽæŽ ç•¥åŠ‰æµ�溜ç�‰ç•™ç¡«ç²’隆竜é¾�侶慮旅虜了亮僚両凌寮料æ¢�涼猟療çžç¨œç³§è‰¯è«’é�¼é‡�é™µé ˜åŠ›ç·‘å€«åŽ˜æž—æ·‹ç‡�ç�³è‡¨è¼ªéš£é±—éºŸç‘ å¡�涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦æ´åˆ—劣烈裂廉æ�‹æ†�漣煉簾練è�¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è“®é€£éŒ¬å‘‚é¯æ«“炉賂路露労å©�廊弄朗楼榔浪æ¼�牢狼ç¯è€�è�¾è�‹éƒŽå…麓禄肋録論å€å’Œè©±æªè³„è„‡æƒ‘æž é·²äº™äº˜é°�è©«è—�蕨椀湾碗腕��������������������������������������������弌ä¸�丕个丱丶丼丿乂乖乘亂亅豫亊舒å¼�äºŽäºžäºŸäº äº¢äº°äº³äº¶ä»Žä»�仄仆仂仗仞ä»ä»Ÿä»·ä¼‰ä½šä¼°ä½›ä½�佗佇佶侈ä¾�侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚ä¿�俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆å�ƒå�‡æœƒå�•å��å�ˆå�šå�–å�¬å�¸å‚€å‚šå‚…傴傲���\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������僉僊傳僂僖僞僥åƒåƒ£åƒ®åƒ¹åƒµå„‰å„�儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉å†�å†‘å†“å†•å†–å†¤å†¦å†¢å†©å†ªå†«å†³å†±å†²å†°å†µå†½å‡…å‡‰å‡›å‡ è™•å‡©å‡ï¿½å‡°å‡µå‡¾åˆ„刋刔刎刧刪刮刳刹å‰�剄剋剌剞剔剪剴剩剳剿剽åŠ�劔劒剱劈劑辨辧劬åŠåŠ¼åŠµå‹�å‹�勗勞勣勦é£å‹ 勳勵勸勹匆匈甸åŒ�åŒ�åŒ�匕匚匣匯匱匳匸å�€å�†å�…丗å�‰å��凖å�žå�©å�®å¤˜å�»å�·åŽ‚åŽ–åŽ åŽ¦åŽ¥åŽ®åŽ°åŽ¶å�ƒç°’é›™å�Ÿæ›¼ç‡®å�®å�¨å�å�ºå��å�½å‘€å�¬å�å�¼å�®å�¶å�©å��呎å’�呵咎呟呱呷呰咒呻咀呶咄å’�咆哇咢咸咥咬哄哈咨���\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"����������������������������������������������������������������咫哂咤咾咼哘哥哦å”�唔哽哮å“哺哢唹啀啣啌售啜啅啖啗唸唳å•�喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎å™�ç‡Ÿå˜´å˜¶å˜²å˜¸ï¿½å™«å™¤å˜¯å™¬å™ªåš†åš€åšŠåš åš”åš�嚥嚮嚶嚴囂嚼å›�囃囀囈囎囑囓囗囮囹圀囿圄圉圈國åœ�圓團圖嗇圜圦圷圸å�Žåœ»å�€å��å�©åŸ€åžˆå�¡å�¿åž‰åž“åž åž³åž¤åžªåž°åŸƒåŸ†åŸ”åŸ’åŸ“å ŠåŸ–åŸ£å ‹å ™å �å¡²å ¡å¡¢å¡‹å¡°æ¯€å¡’å ½å¡¹å¢…å¢¹å¢Ÿå¢«å¢ºå£žå¢»å¢¸å¢®å£…å£“å£‘å£—å£™å£˜å£¥å£œå£¤å£Ÿå£¯å£ºå£¹å£»å£¼å£½å¤‚å¤Šå¤�夛梦夥夬å¤å¤²å¤¸å¤¾ç«’奕å¥�å¥Žå¥šå¥˜å¥¢å¥ å¥§å¥¬å¥©ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"����������������������������������������������������������������奸å¦�å¦�佞侫妣妲姆姨姜å¦�姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲å«�嬪嬶嬾åƒå…å€å‘å•åšå›å¥å©å°å³åµå¸æ–ˆåºå®€ï¿½å®ƒå®¦å®¸å¯ƒå¯‡å¯‰å¯”å¯�寤實寢寞寥寫寰寶寳尅將專å°�å°“å° å°¢å°¨å°¸å°¹å±�屆屎屓å±�å±�å±å±¬å±®ä¹¢å±¶å±¹å²Œå²‘岔妛岫岻岶岼岷峅岾峇峙峩峽峺å³å¶Œå³ªå´‹å´•崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢å¶�嶬嶮嶽å¶�嶷嶼巉å·�å·“å·’å·–å·›å·«å·²å·µå¸‹å¸šå¸™å¸‘å¸›å¸¶å¸·å¹„å¹ƒå¹€å¹Žå¹—å¹”å¹Ÿå¹¢å¹¤å¹‡å¹µå¹¶å¹ºéº¼å¹¿åº å»�廂廈å»�å»����\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������廖廣å»�廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉å½�彜弋弑弖弩å¼å¼¸å½�彈彌彎弯彑彖彗彙彡å½å½³å½·å¾ƒå¾‚å½¿å¾Šå¾ˆå¾‘å¾‡å¾žå¾™å¾˜å¾ å¾¨å¾å¾¼å¿–忻忤忸忱å¿�悳忿怡æ� �怙æ€�怩怎怱怛怕怫怦æ€�怺æ�šæ��æ�ªæ�·æ�Ÿæ�Šæ�†æ��æ�£æ�ƒæ�¤æ�‚æ�¬æ�«æ�™æ‚�æ‚�æƒ§æ‚ƒæ‚šæ‚„æ‚›æ‚–æ‚—æ‚’æ‚§æ‚‹æƒ¡æ‚¸æƒ æƒ“æ‚´å¿°æ‚½æƒ†æ‚µæƒ˜æ…�愕愆惶惷愀惴惺愃愡惻惱æ„�愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟æ…�慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹æ‡�懦懣懶懺懴懿懽懼懾戀戈戉æˆ�戌戔戛���\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������戞戡截戮戰戲戳æ‰�æ‰Žæ‰žæ‰£æ‰›æ‰ æ‰¨æ‰¼æŠ‚æŠ‰æ‰¾æŠ’æŠ“æŠ–æ‹”æŠƒæŠ”æ‹—æ‹‘æŠ»æ‹�拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵æ��挾æ��æ�œæ��掖掎掀掫æ�¶æŽ£æŽ�掉掟掵æ�«ï¿½æ�©æŽ¾æ�©æ�€æ�†æ�£æ�‰æ�’æ�¶æ�„æ�–æ�´æ�†æ�“æ�¦æ�¶æ”�æ�—æ�¨æ��æ‘§æ‘¯æ‘¶æ‘Žæ”ªæ’•æ’“æ’¥æ’©æ’ˆæ’¼æ“šæ“’æ“…æ“‡æ’»æ“˜æ“‚æ“±æ“§èˆ‰æ“ æ“¡æŠ¬æ“£æ“¯æ”¬æ“¶æ“´æ“²æ“ºæ”€æ“½æ”˜æ”œæ”…æ”¤æ”£æ”«æ”´æ”µæ”·æ”¶æ”¸ç•‹æ•ˆæ•–æ••æ•�敘敞æ•�敲數斂斃變斛斟斫斷旃旆æ—�æ—„æ—Œæ—’æ—›æ—™æ— æ—¡æ—±æ�²æ˜Šæ˜ƒæ—»æ�³æ˜µæ˜¶æ˜´æ˜œæ™�晄晉æ™�晞æ™�晤晧晨晟晢晰暃暈暎暉暄暘æš�æ›�暹曉暾暼���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ›„æš¸æ›–æ›šæ› æ˜¿æ›¦æ›©æ›°æ›µæ›·æœ�朖朞朦朧霸朮朿朶æ��朸朷æ�†æ�žæ� æ�™æ�£æ�¤æž‰æ�°æž©æ�¼æ�ªæžŒæž‹æž¦æž¡æž…枷柯枴柬枳柩枸柤柞æŸ�æŸ¢æŸ®æž¹æŸŽæŸ†æŸ§æªœæ žæ¡†æ ©æ¡€æ¡�æ ²æ¡Žï¿½æ¢³æ «æ¡™æ¡£æ¡·æ¡¿æ¢Ÿæ¢�æ¢æ¢”æ¢�æ¢›æ¢ƒæª®æ¢¹æ¡´æ¢µæ¢ æ¢ºæ¤�æ¢�桾æ¤�棊椈棘椢椦棡椌æ£�æ£”æ£§æ£•æ¤¶æ¤’æ¤„æ£—æ££æ¤¥æ£¹æ£ æ£¯æ¤¨æ¤ªæ¤šæ¤£æ¤¡æ£†æ¥¹æ¥·æ¥œæ¥¸æ¥«æ¥”æ¥¾æ¥®æ¤¹æ¥´æ¤½æ¥™æ¤°æ¥¡æ¥žæ¥�æ¦�楪榲榮æ§�榿æ§�槓榾槎寨槊æ§�æ¦»æ§ƒæ¦§æ¨®æ¦‘æ¦ æ¦œæ¦•æ¦´æ§žæ§¨æ¨‚æ¨›æ§¿æ¬Šæ§¹æ§²æ§§æ¨…æ¦±æ¨žæ§æ¨”槫樊樒æ«�樣樓橄樌橲樶橸橇橢橙橦橈樸樢æª�æª�æª æª„æª¢æª£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æª—è˜—æª»æ«ƒæ«‚æª¸æª³æª¬æ«žæ«‘æ«Ÿæªªæ«šæ«ªæ«»æ¬…è˜–æ«ºæ¬’æ¬–é¬±æ¬Ÿæ¬¸æ¬·ç›œæ¬¹é£®æ‡æƒæ‰æ�æ™æ”æ›æŸæ¡æ¸æ¹æ¿æ®€æ®„殃æ®�殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂æ²�沚æ²�沛汾汨汳沒æ²�泄泱泓沽泗泅æ³�沮沱沾沺泛泯泙泪洟è¡�æ´¶æ´«æ´½æ´¸æ´™æ´µæ´³æ´’æ´Œæµ£æ¶“æµ¤æµšæµ¹æµ™æ¶Žæ¶•æ¿¤æ¶…æ·¹æ¸•æ¸Šæ¶µæ·‡æ·¦æ¶¸æ·†æ·¬æ·žæ·Œæ·¨æ·’æ·…æ·ºæ·™æ·¤æ·•æ·ªæ·®æ¸æ¹®æ¸®æ¸™æ¹²æ¹Ÿæ¸¾æ¸£æ¹«æ¸«æ¹¶æ¹�渟湃渺湎渤滿æ¸�游溂溪溘滉溷滓溽溯滄溲滔滕æº�溥滂溟æ½�漑ç�Œæ»¬æ»¸æ»¾æ¼¿æ»²æ¼±æ»¯æ¼²æ»Œï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[224] = \"����������������������������������������������������������������漾漓滷澆潺潸æ¾�æ¾€æ½¯æ½›æ¿³æ½æ¾‚潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑ç€�ç€�濾瀛瀚潴ç€�瀘瀟瀰瀾瀲ç�‘ç�£ç‚™ç‚’炯烱炬炸炳炮烟烋çƒ��烙焉烽焜焙煥煕熈煦煢煌煖煬ç†�ç‡»ç†„ç†•ç†¨ç†¬ç‡—ç†¹ç†¾ç‡’ç‡‰ç‡”ç‡Žç‡ ç‡¬ç‡§ç‡µç‡¼ç‡¹ç‡¿çˆ�çˆ�爛爨çˆçˆ¬çˆ°çˆ²çˆ»çˆ¼çˆ¿ç‰€ç‰†ç‰‹ç‰˜ç‰´ç‰¾çŠ‚çŠ�çŠ‡çŠ’çŠ–çŠ¢çŠ§çŠ¹çŠ²ç‹ƒç‹†ç‹„ç‹Žç‹’ç‹¢ç‹ ç‹¡ç‹¹ç‹·å€�猗猊猜猖çŒ�猴猯猩猥猾ç�Žç��默ç�—ç�ªç�¨ç�°ç�¸ç�µç�»ç�ºç�ˆç޳ç�ŽçŽ»ç�€ç�¥ç�®ç�žç’¢ç�…瑯ç�¥ç�¸ç�²ç�ºç‘•ç�¿ç‘Ÿç‘™ç‘�瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊ç“�ç“”ç�±ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç“ ç“£ç“§ç“©ç“®ç“²ç“°ç“±ç“¸ç“·ç”„ç”ƒç”…ç”Œç”Žç”�甕甓甞甦甬甼畄ç•�畊畉畛畆畚畩畤畧畫ç•畸當疆疇畴疊疉疂疔疚ç–�疥疣痂疳痃疵疽疸疼疱ç—�痊痒痙痣痞痾痿�痼ç˜�痰痺痲痳瘋ç˜�ç˜‰ç˜Ÿç˜§ç˜ ç˜¡ç˜¢ç˜¤ç˜´ç˜°ç˜»ç™‡ç™ˆç™†ç™œç™˜ç™¡ç™¢ç™¨ç™©ç™ªç™§ç™¬ç™°ç™²ç™¶ç™¸ç™¼çš€çšƒçšˆçš‹çšŽçš–çš“çš™çššçš°çš´çš¸çš¹çšºç›‚ç›�盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸ç�‡ç�šç�¨ç�«ç�›ç�¥ç�¿ç�¾ç�¹çžŽçž‹çž‘çž çžžçž°çž¶çž¹çž¿çž¼çž½çž»çŸ‡çŸ�çŸ—çŸšçŸœçŸ£çŸ®çŸ¼ç Œç ’ç¤¦ç 礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç£§ç£šç£½ç£´ç¤‡ç¤’ç¤‘ç¤™ç¤¬ç¤«ç¥€ç¥ ç¥—ç¥Ÿç¥šç¥•ç¥“ç¥ºç¥¿ç¦Šç¦�禧齋禪禮禳禹禺秉秕秧秬秡秣稈ç¨�ç¨˜ç¨™ç¨ ç¨Ÿç¦€ç¨±ç¨»ç¨¾ç¨·ç©ƒç©—ç©‰ç©¡ç©¢ç©©é¾�穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊ç«�ç«�竕竓站竚ç«�竡竢竦ç«ç«°ç¬‚ç¬�笊笆笳笘笙笞笵笨笶ç�çºç¬„ç�笋çŒç…çµç¥ç´ç§ç°ç±ç¬ç®ç®�箘箟ç®�箜箚箋箒ç®�ç�箙篋ç¯�篌ç¯�箴篆ç¯�ç¯©ç°‘ç°”ç¯¦ç¯¥ç± ç°€ç°‡ç°“ç¯³ç¯·ç°—ç°�篶簣簧簪簟簷簫簽籌籃籔ç±�ç±€ç±�籘籟籤籖籥籬籵粃ç²�粤ç²ç²¢ç²«ç²¡ç²¨ç²³ç²²ç²±ç²®ç²¹ç²½ç³€ç³…糂糘糒糜糢鬻糯糲糴糶糺紆���\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮çµ�絣經綉絛ç¶�絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘ç·�緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧ç¹�繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒çº�纓纔纖纎纛纜缸缺罅罌ç½�罎ç½�ç½‘ç½•ç½”ç½˜ç½Ÿç½ ç½¨ç½©ç½§ç½¸ç¾‚ç¾†ç¾ƒç¾ˆç¾‡ç¾Œç¾”ç¾žç¾�羚羣羯羲羹羮羶羸è±ç¿…翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻è�Šè�†è�’è�˜è�šè�Ÿè�¢è�¨è�³è�²è�°è�¶è�¹è�½è�¿è‚„肆肅肛肓肚è‚å†�肬胛胥胙èƒ�胄胚胖脉胯胱脛脩脣脯腋���\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš‹è…†è„¾è…“è…‘èƒ¼è…±è…®è…¥è…¦è…´è†ƒè†ˆè†Šè†€è†‚è† è†•è†¤è†£è…Ÿè†“è†©è†°è†µè†¾è†¸è†½è‡€è‡‚è†ºè‡‰è‡�è‡‘è‡™è‡˜è‡ˆè‡šè‡Ÿè‡ è‡§è‡ºè‡»è‡¾èˆ�舂舅與舊èˆ�èˆ�舖舩舫舸舳艀艙艘è‰�艚艟艤�艢艨艪艫舮艱艷艸艾èŠ�芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱è�€èŒ¹è��è�…茯茫茗茘莅莚莪莟莢莖茣莎莇莊è�¼è޵è�³è�µèŽ èŽ‰èŽ¨è�´è�“è�«è�Žè�½è�ƒè�˜è�‹è��è�·è�‡è� è�²è��è�¢è� 莽è�¸è”†è�»è‘è�ªè�¼è•šè’„è‘·è‘«è’葮蒂葩葆è�¬è‘¯è‘¹è�µè“Šè‘¢è’¹è’¿è’Ÿè“™è“�蒻蓚è“�è“�蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������è•�蘂蕋蕕薀薤薈薑薊薨è•薔薛藪薇薜蕷蕾è–�藉薺è—�è–¹è—�è—•è—�藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿è™�ä¹•è™”è™Ÿè™§è™±èš“èš£èš©èšªèš‹èšŒèš¶èš¯è›„è›†èš°è›‰è £èš«è›”è›žè›©è›¬ï¿½è›Ÿè››è›¯èœ’èœ†èœˆèœ€èœƒè›»èœ‘èœ‰èœ�蛹蜊蜴蜿蜷蜻蜥蜩蜚è� è�Ÿè�¸è�Œè�Žè�´è�—è�¨è�®è�™è�“è�£è�ªè …螢螟螂螯蟋螽蟀èŸ�é›–èž«èŸ„èž³èŸ‡èŸ†èž»èŸ¯èŸ²èŸ è �è �èŸ¾èŸ¶èŸ·è ŽèŸ’è ‘è –è •è ¢è ¡è ±è ¶è ¹è §è »è¡„è¡‚è¡’è¡™è¡žè¡¢è¡«è¢�衾袞衵衽袵衲袂袗袒袮袙袢è¢�袤袰袿袱裃裄裔裘裙è£�裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫è¥�襄褻褶褸襌è¤�è¥ è¥žï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������襦襤è¥è¥ªè¥¯è¥´è¥·è¥¾è¦ƒè¦ˆè¦Šè¦“覘覡覩覦覬覯覲覺覽覿觀觚觜è§�觧觴觸訃訖è¨�訌訛è¨�訥訶è©�詛詒詆詈詼è©è©¬è©¢èª…誂誄誨誡誑誥誦誚誣諄è«�è«‚è«šè««è«³è«§ï¿½è«¤è«±è¬”è« è«¢è«·è«žè«›è¬Œè¬‡è¬šè«¡è¬–è¬�è¬—è¬ è¬³éž«è¬¦è¬«è¬¾è¬¨è�èŒè�èŽè‰è–è›èšè«èŸè¬è¯è´è½è®€è®Œè®Žè®’讓讖讙讚谺è±�谿豈豌豎è±�豕豢豬豸豺貂貉貅貊è²�貎貔豼貘æˆ�è²è²ªè²½è²²è²³è²®è²¶è³ˆè³�賤賣賚賽賺賻贄贅贊贇è´�è´�è´�齎贓è³�贔贖赧èµèµ±èµ³è¶�趙跂趾趺è·�跚跖跌跛跋跪跫跟跣跼踈踉跿è¸�踞è¸�踟蹂踵踰踴蹊���\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������蹇蹉蹌è¹�è¹ˆè¹™è¹¤è¹ è¸ªè¹£è¹•è¹¶è¹²è¹¼èº�躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣è¾è¾¯è¾·è¿šè¿¥è¿¢è¿ªè¿¯é‚‡è¿´é€…迹迺逑逕逡é€�逞逖逋逧逶逵逹迸é��é��é�‘é�’逎é�‰é€¾é�–é�˜é�žé�¨é�¯é�¶éš¨é�²é‚‚é�½é‚�邀邊邉é‚�邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀é‡�釉釋é‡�釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋é‰�銜銖銓銛鉚é‹�銹銷鋩éŒ�鋺é�„錮���\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������錙錢錚錣錺錵錻é�œé� é�¼é�®é�–鎰鎬éŽéŽ”éŽ¹é�–é�—é�¨é�¥é�˜é�ƒé��é��é�ˆé�¤é�šé�”é�“é�ƒé�‡é��é�¶é�«é�µé�¡é�ºé‘�é‘’é‘„é‘›é‘ é‘¢é‘žé‘ªéˆ©é‘°é‘µé‘·é‘½é‘šé‘¼é‘¾é’�é‘¿é–‚é–‡é–Šé–”é––é–˜é–™ï¿½é– é–¨é–§é–閼閻閹閾闊濶闃é—�闌闕闔闖關闡闥闢阡阨阮阯陂陌é™�陋陷陜陞é™�陟陦陲陬éš�隘隕隗險隧隱隲隰隴隶隸隹雎雋雉é›�è¥�雜éœ�雕雹霄霆霈霓霎霑éœ�霖霙霤霪霰霹霽霾é�„é�†é�ˆé�‚é�‰é�œé� é�¤é�¦é�¨å‹’é�«é�±é�¹éž…é�¼éž�é�ºéž†éž‹éž�éž�鞜鞨鞦鞣鞳鞴韃韆韈韋韜éŸé½�韲竟韶韵é �é Œé ¸é ¤é ¡é ·é ½é¡†é¡�顋顫顯顰���\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡é¤�é¤žé¤¤é¤ é¤¬é¤®é¤½é¤¾é¥‚é¥‰é¥…é¥�饋饑饒饌饕馗馘馥é¦é¦®é¦¼é§Ÿé§›é§�駘駑é§é§®é§±é§²é§»é§¸é¨�é¨�騅駢騙騫騷驅驂驀驃�騾驕é©�驛驗驟驢驥驤驩驫驪éªéª°éª¼é«€é«�髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲é„éƒé�é�éŽé‘é˜é´é®“é®ƒé®‘é®–é®—é®Ÿé® é®¨é®´é¯€é¯Šé®¹é¯†é¯�é¯‘é¯’é¯£é¯¢é¯¤é¯”é¯¡é°ºé¯²é¯±é¯°é°•é°”é°‰é°“é°Œé°†é°ˆé°’é°Šé°„é°®é°›é°¥é°¤é°¡é°°é±‡é°²é±†é°¾é±šé± é±§é±¶é±¸é³§é³¬é³°é´‰é´ˆé³«é´ƒé´†é´ªé´¦é¶¯é´£é´Ÿéµ„é´•é´’éµ�鴿鴾鵆鵈���\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������éµ�鵞鵤鵑éµ�鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄é·�鶻鶸鶺鷆é·�鷂鷙鷓鷸鷦é·é·¯é·½é¸šé¸›é¸žé¹µé¹¹é¹½éº�麈麋麌麒麕麑éº�麥麩麸麪éºé�¡é»Œé»Žé»�é»�黔黜點é»�é» é»¥é»¨é»¯ï¿½é»´é»¶é»·é»¹é»»é»¼é»½é¼‡é¼ˆçš·é¼•é¼¡é¼¬é¼¾é½Šé½’é½”é½£é½Ÿé½ é½¡é½¦é½§é½¬é½ªé½·é½²é½¶é¾•é¾œé¾ å ¯æ§‡é�™ç‘¤å‡œç†™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[240] = \"����������������������������������������������������������������î€�î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾ï¿½î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚���\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������îƒ�îƒ�îƒ�îƒ�îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºï¿½îƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„�î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„î…�î…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…���\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������î†�î†�î†�î†�î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†î†®î†¯î†°î†±î†²î†³î†´î†µî†¶ï¿½î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡�î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������î‰�î‰�î‰�î‰�î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²ï¿½î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ�îŠ�îŠ�îŠ�îŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������îŒ�îŒ�îŒ�îŒ�îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒîŒ®ï¿½îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµîŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£îŽ¤îŽ¥îŽ¦îŽ§îŽ¨îŽ©îŽªîŽ«ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"����������������������������������������������������������������îŽîŽ®îŽ¯îŽ°îŽ±îŽ²îŽ³îŽ´îŽµîŽ¶îŽ·îŽ¸îŽ¹îŽºîŽ»îŽ¼îŽ½îŽ¾îŽ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªï¿½î�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�î‘žî‘Ÿî‘ î‘¡î‘¢î‘£î‘¤î‘¥î‘¦î‘§ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"����������������������������������������������������������������î‘î’�î’�î’Žî’�î’�î’�î’žî’Ÿî’ î’¡î’¢î’£î’¤î’¥î’¦ï¿½î’§î’¨î’©î’ªî’«î’¬î’î“�î“�î“�î“�î“�î“žî“Ÿî“ î“¡î“¢î“£î“¤î“¥î“¦î“§î“¨î“©î“ªî“«î“¬î“î”�î”�î”�î”�î”�î”žî”Ÿî” î”¡î”¢î”£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������î”î•�î•�î•�î•�î•�î•žî•Ÿî• î•¡î•¢ï¿½î•£î•¤î•¥î•¦î•§î•¨î•©î•ªî•«î•¬î•î–�î–�î–Žî–�î–�î–�î–žî–Ÿî– î–¡î–¢î–£î–¤î–¥î–¦î–§î–¨î–©î–ªî–«î–¬î–î—�î—�î—Žî—�î—�î—����\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î— î—¡î—¢î—£î—¤î—¥î—¦î—§î—¨î—©î—ªî—«î—¬î—î˜�î˜�î˜�î˜�î˜�î˜žï¿½î˜Ÿî˜ î˜¡î˜¢î˜£î˜¤î˜¥î˜¦î˜§î˜¨î˜©î˜ªî˜«î˜¬î˜î˜®î˜¯î˜°î˜±î˜²î˜³î˜´î˜µî˜¶î˜·î˜¸î˜¹î˜ºî˜»î˜¼î˜½î˜¾î˜¿î™€î™�î™�î™�î™�î™�î™žî™Ÿî™ î™¡î™¢î™£î™¤î™¥î™¦î™§î™¨î™©î™ªî™«î™¬î™î™®î™¯î™°î™±î™²î™³î™´î™µî™¶î™·î™¸î™¹î™ºî™»î™¼î™½î™¾î™¿îš€îš�îš�îš�îš����\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"����������������������������������������������������������������îš�îšžîšŸîš îš¡îš¢îš£îš¤îš¥îš¦îš§îš¨îš©îšªîš«îš¬îšîš®îš¯îš°îš±îš²îš³îš´îšµîš¶îš·îš¸îš¹îšºîš»îš¼îš½îš¾îš¿î›€î›�î›�î›�î›��î›�î›žî›Ÿî› î›¡î›¢î›£î›¤î›¥î›¦î›§î›¨î›©î›ªî›«î›¬î›î›®î›¯î›°î›±î›²î›³î›´î›µî›¶î›·î›¸î›¹î›ºî›»î›¼î›½î›¾î›¿îœ€îœ�îœ�îœ�îœ�îœ�îœžîœŸîœ îœ¡îœ¢îœ£îœ¤îœ¥îœ¦îœ§îœ¨îœ©îœªîœ«îœ¬îœîœ®îœ¯îœ°îœ±îœ²îœ³îœ´îœµîœ¶îœ·îœ¸îœ¹îœºîœ»îœ¼îœ½îœ¾îœ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—���\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"�������������������������������������������������������������������������������������¦'"����纊褜é�ˆéŠˆè“œä¿‰ç‚»æ˜±æ£ˆé‹¹æ›»å½…ä¸¨ä»¡ä»¼ä¼€ä¼ƒä¼¹ä½–ä¾’ä¾Šä¾šä¾”ä¿�å�€å€¢ä¿¿å€žå�†å�°å�‚傔僴僘兊�兤å†�冾凬刕劜劦勀勛匀匇匤å�²åŽ“åŽ²å��﨎咜咊咩哿喆å�™å�¥åž¬åŸˆåŸ‡ï¨�ï¨�增墲夋奓奛å¥�奣妤妺å–寀甯寘寬尞岦岺峵崧嵓﨑嵂åµå¶¸å¶¹å·�弡弴彧德忞æ��æ‚…æ‚Šæƒžæƒ•æ„ æƒ²æ„‘æ„·æ„°æ†˜æˆ“æŠ¦æ�µæ‘ æ’�æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜®æ˜žæ˜¤æ™¥æ™—æ™™ï¨’æ™³æš™æš æš²æš¿æ›ºæœŽï¤©æ�¦æž»æ¡’柀æ �æ¡„æ£�﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������涖涬æ·�淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫ç„�焄煜煆煇凞ç‡�燾犱犾猤猪ç�·ç޽ç�‰ç�–ç�£ç�’ç�‡ç�µç�¦ç�ªç�©ç�®ç‘¢ç’‰ç’Ÿç”�畯皂皜皞皛皦益ç�†åŠ¯ç ¡ç¡Žç¡¤ç¡ºç¤°ï¨˜ï¨™ï¿½ï¨šç¦”ï¨›ç¦›ç«‘ç«§ï¨œç««ç®žï¨�çµˆçµœç¶·ç¶ ç·–ç¹’ç½‡ç¾¡ï¨žèŒ�è�¢è�¿è�‡è�¶è‘ˆè’´è•“è•™è•«ï¨Ÿè–°ï¨ ï¨¡è ‡è£µè¨’è¨·è©¹èª§èª¾è«Ÿï¨¢è«¶è“è¿è³°è³´è´’赶﨣è»�﨤逸é�§éƒžï¨¦é„•鄧釚釗釞é‡é‡®é‡¤é‡¥éˆ†éˆ�鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙é‹�ï¨§é‹•é‹ é‹“éŒ¥éŒ¡é‹»ï¨¨éŒžé‹¿éŒ�錂é�°é�—鎤é�†é�žé�¸é�±é‘…鑈閒隆﨩éš�隯霳霻é�ƒé��é��é�‘é�•顗顥飯飼餧館馞驎髙���\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������髜éµé²é®�鮱鮻鰀鵰鵫ï¨é¸™é»‘������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10002] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����������������������������������������������������������������������������������������������������������������������������©™…\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"����������������������������������������������������������������î€�î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚��\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"����������������������������������������������������������������î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚îƒ�îƒ�îƒ�îƒ�����������������������������������îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºîƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„�î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„�\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������î…�î…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…����������������������������������î†�î†�î†�î†�î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†î†®î†¯î†°î†±î†²î†³î†´î†µî†¶î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡��\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�îˆ�îˆ�îˆ�����������������������������������îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³îˆ´îˆµîˆ¶îˆ·îˆ¸îˆ¹îˆºîˆ»îˆ¼îˆ½îˆ¾îˆ¿î‰€î‰�î‰�î‰�î‰�î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²î‰³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"����������������������������������������������������������������îŠ�îŠ�îŠ�îŠ�îŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯î‹°î‹±î‹²î‹³î‹´î‹µî‹¶î‹·î‹¸î‹¹î‹ºî‹»î‹¼î‹½î‹¾î‹¿îŒ€îŒ�îŒ�îŒ�îŒ��\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"����������������������������������������������������������������îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒîŒ®îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµîŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî������������������������������������î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£îŽ¤îŽ¥îŽ¦îŽ§îŽ¨îŽ©îŽªîŽ«îŽ¬îŽï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"����������������������������������������������������������������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘��\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"����������������������������������������������������������������î‘�î‘�î‘�î‘�î‘žî‘Ÿî‘ î‘¡î‘¢î‘£î‘¤î‘¥î‘¦î‘§î‘¨î‘©î‘ªî‘«î‘¬î‘î’�����������������������������������î’�î’Žî’�î’�î’�î’žî’Ÿî’ î’¡î’¢î’£î’¤î’¥î’¦î’§î’¨î’©î’ªî’«î’¬î’î“�î“�î“�î“�î“�î“žî“Ÿî“ î“¡î“¢î“£î“¤î“¥î“¦î“§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"����������������������������������������������������������������î“î”�î”�î”�î”�î”�î”žî”Ÿî” î”¡î”¢î”£î”¤î”¥î”¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î”§î”¨î”©î”ªî”«î”¬î”î•�î•�î•�î•�î•�î•žî•Ÿî• î•¡î•¢î•£î•¤î•¥î•¦î•§î•¨î•©î•ªî•«î•¬î•î–��\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������î–�î–Žî–�î–�î–�î–žî–Ÿî– î–¡î–¢î–£î–¤î–¥î–¦î–§î–¨î–©î–ªî–«î–¬î–î—�����������������������������������î—�î—Žî—�î—�î—�î—žî—Ÿî— î—¡î—¢î—£î—¤î—¥î—¦î—§î—¨î—©î—ªî—«î—¬î—î˜�î˜�î˜�î˜�î˜�î˜žî˜Ÿî˜ î˜¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������î˜î˜®î˜¯î˜°î˜±î˜²î˜³î˜´î˜µî˜¶î˜·î˜¸î˜¹î˜ºî˜»î˜¼î˜½î˜¾î˜¿î™€î™�î™�î™�î™�î™�î™žî™Ÿî™ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î™¡î™¢î™£î™¤î™¥î™¦î™§î™¨î™©î™ªî™«î™¬î™î™®î™¯î™°î™±î™²î™³î™´î™µî™¶î™·î™¸î™¹î™ºî™»î™¼î™½î™¾î™¿îš€îš�îš�îš�îš�îš�îšžîšŸîš îš¡îš¢îš£îš¤îš¥îš¦îš§îš¨îš©îšªîš«îš¬îšîš®îš¯îš°îš±îš²îš³îš´îšµîš¶îš·îš¸îš¹îšºîš»îš¼îš½îš¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������î›�î›�î›�î›�î›�î›žî›Ÿî› î›¡î›¢î›£î›¤î›¥î›¦î›§î›¨î›©î›ªî›«î›¬î›î›®î›¯î›°î›±î›²î›³î›´î›µî›¶î›·î›¸î›¹î›ºî›»î›¼î›½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î›¾î›¿îœ€îœ�îœ�îœ�îœ�îœ�îœžîœŸîœ îœ¡îœ¢îœ£îœ¤îœ¥îœ¦îœ§îœ¨îœ©îœªîœ«îœ¬îœîœ®îœ¯îœ°îœ±îœ²îœ³îœ´îœµîœ¶îœ·îœ¸îœ¹îœºîœ»îœ¼îœ½îœ¾îœ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îž€îž�îž�îž�îž�����������������������������������îž�îžžîžŸîž îž¡îž¢îž£îž¤îž¥îž¦îž§îž¨îž©îžªîž«îž¬îžîž®îž¯îž°îž±îž²îž³îž´îžµîž¶îž·îž¸îž¹îžºîž»îž¼îž½îž¾îž¿îŸ€îŸ�îŸ�îŸ�îŸ�îŸ�îŸžîŸŸîŸ îŸ¡îŸ¢îŸ£îŸ¤îŸ¥îŸ¦îŸ§îŸ¨îŸ©îŸªîŸ«îŸ¬îŸîŸ®îŸ¯îŸ°îŸ±îŸ²îŸ³îŸ´îŸµîŸ¶îŸ·îŸ¸ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îŸ¹îŸºîŸ»îŸ¼îŸ½îŸ¾îŸ¿î €î �î ‚î ƒî „î …î †î ‡î ˆî ‰î Šî ‹î Œî �î Žî �î �î ‘î ’î “î ”î •î –î —î ˜î ™î šî ›î œî �î žî Ÿî î ¡î ¢î £î ¤î ¥î ¦î §î ¨î ©î ªî «î ¬î î ®î ¯î °î ±î ²î ³î ´î µî ¶î ·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î ¸î ¹î ºî »î ¼î ½î ¾î ¿î¡€î¡�î¡�î¡�î¡�î¡�î¡žî¡Ÿî¡ î¡¡î¡¢î¡£î¡¤î¡¥î¡¦î¡§î¡¨î¡©î¡ªî¡«î¡¬î¡î¡®î¡¯î¡°î¡±î¡²î¡³î¡´î¡µî¡¶î¡·î¡¸î¡¹î¡ºî¡»î¡¼î¡½î¡¾î¡¿î¢€î¢�î¢�î¢�î¢��\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������î¢�î¢žî¢Ÿî¢ î¢¡î¢¢î¢£î¢¤î¢¥î¢¦î¢§î¢¨î¢©î¢ªî¢«î¢¬î¢î¢®î¢¯î¢°î¢±î¢²î¢³î¢´î¢µî¢¶î¢·î¢¸î¢¹î¢ºî¢»î¢¼î¢½î¢¾î¢¿î£€î£�î£�î£�î£�����������������������������������î£�î£žî£Ÿî£ î£¡î£¢î££î£¤î£¥î£¦î£§î£¨î£©î£ªî£«î£¬î£î£®î£¯î£°î£±î£²î£³î£´î£µî£¶î£·î£¸î£¹î£ºî£»î£¼î£½î£¾î£¿î¤€î¤�î¤�î¤�î¤�î¤�î¤žî¤Ÿî¤ î¤¡î¤¢î¤£î¤¤î¤¥î¤¦î¤§î¤¨î¤©î¤ªî¤«î¤¬î¤î¤®î¤¯î¤°î¤±î¤²ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������î¥�î¥�î¥�î¥�î¥�î¥žî¥Ÿî¥ î¥¡î¥¢î¥£î¥¤î¥¥î¥¦î¥§î¥¨î¥©î¥ªî¥«î¥¬î¥î¥®î¥¯î¥°î¥±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¥²î¥³î¥´î¥µî¥¶î¥·î¥¸î¥¹î¥ºî¥»î¥¼î¥½î¥¾î¥¿î¦€î¦�î¦�î¦�î¦�î¦�î¦žî¦Ÿî¦ î¦¡î¦¢î¦£î¦¤î¦¥î¦¦î¦§î¦¨î¦©î¦ªî¦«î¦¬î¦î¦®î¦¯î¦°î¦±î¦²î¦³î¦´î¦µî¦¶î¦·î¦¸î¦¹î¦ºî¦»î¦¼î¦½î¦¾î¦¿î§€î§�î§�î§Žî§��\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������î§�î§�î§žî§Ÿî§ î§¡î§¢î§£î§¤î§¥î§¦î§§î§¨î§©î§ªî§«î§¬î§î§®î§¯î§°î§±î§²î§³î§´î§µî§¶î§·î§¸î§¹î§ºî§»î§¼î§½î§¾î§¿î¨€î¨�î¨�����������������������������������î¨�î¨�î¨�î¨žî¨Ÿî¨ î¨¡î¨¢î¨£î¨¤î¨¥î¨¦î¨§î¨¨î¨©î¨ªî¨«î¨¬î¨î¨®î¨¯î¨°î¨±î¨²î¨³î¨´î¨µî¨¶î¨·î¨¸î¨¹î¨ºî¨»î¨¼î¨½î¨¾î¨¿î©€î©�î©�î©�î©�î©�î©žî©Ÿî© î©¡î©¢î©£î©¤î©¥î©¦î©§î©¨î©©î©ªî©«î©¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������î©î©®î©¯î©°î©±î©²î©³î©´î©µî©¶î©·î©¸î©¹î©ºî©»î©¼î©½î©¾î©¿îª€îª�îª�îª�îª�îª�îªžîªŸîª îª¡îª¢îª£îª¤îª¥îª¦îª§îª¨îª©îªªîª«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îª¬îªîª®îª¯îª°îª±îª²îª³îª´îªµîª¶îª·îª¸îª¹îªºîª»îª¼îª½îª¾îª¿î«€î«�î«�î«�î«�î«�î«žî«Ÿî« î«¡î«¢î«£î«¤î«¥î«¦î«§î«¨î«©î«ªî««î«¬î«î«®î«¯î«°î«±î«²î«³î«´î«µî«¶î«·î«¸î«¹î«ºî«»î«¼î«½î«¾î«¿î¬€î¬��\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������î¬�î¬�î¬�î¬�î¬žî¬Ÿî¬ î¬¡î¬¢î¬£î¬¤î¬¥î¬¦î¬§î¬¨î¬©î¬ªî¬«î¬¬î¬î¬®î¬¯î¬°î¬±î¬²î¬³î¬´î¬µî¬¶î¬·î¬¸î¬¹î¬ºî¬»î¬¼î¬½î¬¾î¬¿î€î�î‚îƒî„î…î†î‡îˆï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î‰îŠî‹îŒî�îŽî�î�î‘î’î“î”î•î–î—î˜î™îšî›îœî�îžîŸî î¡î¢î£î¤î¥î¦î§î¨î©îªî«î¬îî®î¯î°î±î²î³î´îµî¶î·î¸î¹îºî»î¼î½î¾î¿î®€î®�î®�î®�î®�î®�î®žî®Ÿî® î®¡î®¢î®£î®¤î®¥î®¦ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������î®î®®î®¯î®°î®±î®²î®³î®´î®µî®¶î®·î®¸î®¹î®ºî®»î®¼î®½î®¾î®¿î¯€î¯�î¯�î¯�î¯�î¯�î¯žî¯Ÿî¯ î¯¡î¯¢î¯£î¯¤î¯¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¯¦î¯§î¯¨î¯©î¯ªî¯«î¯¬î¯î¯®î¯¯î¯°î¯±î¯²î¯³î¯´î¯µî¯¶î¯·î¯¸î¯¹î¯ºî¯»î¯¼î¯½î¯¾î¯¿î°€î°�î°�î°Žî°�î°�î°�î°žî°Ÿî° î°¡î°¢î°£î°¤î°¥î°¦î°§î°¨î°©î°ªî°«î°¬î°î°®î°¯î°°î°±î°²î°³î°´î°µî°¶î°·î°¸î°¹î°ºî°»î°¼î°½î°¾î°¿î±€î±��\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������î±�î±�î±�î±�î±žî±Ÿî± î±¡î±¢î±£î±¤î±¥î±¦î±§î±¨î±©î±ªî±«î±¬î±î±®î±¯î±°î±±î±²î±³î±´î±µî±¶î±·î±¸î±¹î±ºî±»î±¼î±½î±¾î±¿î²€î²�����������������������������������î²�î²�î²�î²�î²žî²Ÿî² î²¡î²¢î²£î²¤î²¥î²¦î²§î²¨î²©î²ªî²«î²¬î²î²®î²¯î²°î²±î²²î²³î²´î²µî²¶î²·î²¸î²¹î²ºî²»î²¼î²½î²¾î²¿î³€î³�î³�î³�î³�î³�î³žî³Ÿî³ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������î³î³®î³¯î³°î³±î³²î³³î³´î³µî³¶î³·î³¸î³¹î³ºî³»î³¼î³½î³¾î³¿î´€î´�î´�î´Žî´�î´�î´�î´žî´Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î´ î´¡î´¢î´£î´¤î´¥î´¦î´§î´¨î´©î´ªî´«î´¬î´î´®î´¯î´°î´±î´²î´³î´´î´µî´¶î´·î´¸î´¹î´ºî´»î´¼î´½î´¾î´¿îµ€îµ�îµ�îµ�îµ�îµ�îµžîµŸîµ îµ¡îµ¢îµ£îµ¤îµ¥îµ¦îµ§îµ¨îµ©îµªîµ«îµ¬îµîµ®îµ¯îµ°îµ±îµ²îµ³îµ´îµµîµ¶îµ·îµ¸îµ¹îµºîµ»îµ¼îµ½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������î¶�î¶�î¶Žî¶�î¶�î¶�î¶žî¶Ÿî¶ î¶¡î¶¢î¶£î¶¤î¶¥î¶¦î¶§î¶¨î¶©î¶ªî¶«î¶¬î¶î¶®î¶¯î¶°î¶±î¶²î¶³î¶´î¶µî¶¶î¶·î¶¸î¶¹î¶ºî¶»î¶¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¶½î¶¾î¶¿î·€î·�î·�î·Žî·�î·�î·�î·žî·Ÿî· î·¡î·¢î·£î·¤î·¥î·¦î·§î·¨î·©î·ªî·«î·¬î·î·®î·¯î·°î·±î·²î·³î·´î·µî·¶î··î·¸î·¹î·ºî·»î·¼î·½î·¾î·¿î¸€î¸�î¸�î¸�î¸��\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"����������������������������������������������������������������î¸�î¸žî¸Ÿî¸ î¸¡î¸¢î¸£î¸¤î¸¥î¸¦î¸§î¸¨î¸©î¸ªî¸«î¸¬î¸î¸®î¸¯î¸°î¸±î¸²î¸³î¸´î¸µî¸¶î¸·î¸¸î¸¹î¸ºî¸»î¸¼î¸½î¸¾î¸¿î¹€î¹�î¹�î¹�î¹�����������������������������������î¹�î¹žî¹Ÿî¹ î¹¡î¹¢î¹£î¹¤î¹¥î¹¦î¹§î¹¨î¹©î¹ªî¹«î¹¬î¹î¹®î¹¯î¹°î¹±î¹²î¹³î¹´î¹µî¹¶î¹·î¹¸î¹¹î¹ºî¹»î¹¼î¹½î¹¾î¹¿îº€îº�îº�îº�îº�îº�îºžîºŸîº îº¡îº¢îº£îº¤îº¥îº¦îº§îº¨îº©îºªîº«îº¬îºîº®îº¯îº°îº±îº²îº³îº´îºµîº¶îº·ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������î»�î»�î»�î»�î»�î»žî»Ÿî» î»¡î»¢î»£î»¤î»¥î»¦î»§î»¨î»©î»ªî»«î»¬î»î»®î»¯î»°î»±î»²î»³î»´î»µî»¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î»·î»¸î»¹î»ºî»»î»¼î»½î»¾î»¿î¼€î¼�î¼�î¼�î¼�î¼�î¼žî¼Ÿî¼ î¼¡î¼¢î¼£î¼¤î¼¥î¼¦î¼§î¼¨î¼©î¼ªî¼«î¼¬î¼î¼®î¼¯î¼°î¼±î¼²î¼³î¼´î¼µî¼¶î¼·î¼¸î¼¹î¼ºî¼»î¼¼î¼½î¼¾î¼¿î½€î½�î½�î½�î½��\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"����������������������������������������������������������������î½�î½žî½Ÿî½ î½¡î½¢î½£î½¤î½¥î½¦î½§î½¨î½©î½ªî½«î½¬î½î½®î½¯î½°î½±î½²î½³î½´î½µî½¶î½·î½¸î½¹î½ºî½»î½¼î½½î½¾î½¿î¾€î¾�î¾�î¾�î¾�����������������������������������î¾�î¾žî¾Ÿî¾ î¾¡î¾¢î¾£î¾¤î¾¥î¾¦î¾§î¾¨î¾©î¾ªî¾«î¾¬î¾î¾®î¾¯î¾°î¾±î¾²î¾³î¾´î¾µî¾¶î¾·î¾¸î¾¹î¾ºî¾»î¾¼î¾½î¾¾î¾¿î¿€î¿�î¿�î¿�î¿�î¿�î¿žî¿Ÿî¿ î¿¡î¿¢î¿£î¿¤î¿¥î¿¦î¿§î¿¨î¿©î¿ªî¿«î¿¬î¿î¿®î¿¯î¿°î¿±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"����������������������������������������������������������������ï€�ï€�ï€�ï€�ï€�ï€žï€Ÿï€ ï€¡ï€¢ï€£ï€¤ï€¥ï€¦ï€§ï€¨ï€©ï€ªï€«ï€¬ï€ï€®ï€¯ï€°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï€±ï€²ï€³ï€´ï€µï€¶ï€·ï€¸ï€¹ï€ºï€»ï€¼ï€½ï€¾ï€¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï‚€ï‚�ï‚��\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������ï‚�ï‚�ï‚�ï‚žï‚Ÿï‚ ï‚¡ï‚¢ï‚£ï‚¤ï‚¥ï‚¦ï‚§ï‚¨ï‚©ï‚ªï‚«ï‚¬ï‚ïƒ�ïƒ�����������������������������������ïƒ�ïƒ�ïƒ�ïƒžïƒŸïƒ ïƒ¡ïƒ¢ïƒ£ïƒ¤ïƒ¥ïƒ¦ïƒ§ïƒ¨ïƒ©ïƒªïƒ«ïƒ¬ïƒïƒ®ïƒ¯ïƒ°ïƒ±ïƒ²ïƒ³ïƒ´ïƒµïƒ¶ïƒ·ïƒ¸ïƒ¹ïƒºïƒ»ïƒ¼ïƒ½ïƒ¾ïƒ¿ï„€ï„�ï„�ï„�ï„�ï„�ï„žï„Ÿï„ ï„¡ï„¢ï„£ï„¤ï„¥ï„¦ï„§ï„¨ï„©ï„ªï„«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������ï„ï…�ï…�ï…Žï…�ï…�ï…�ï…žï…Ÿï… ï…¡ï…¢ï…£ï…¤ï…¥ï…¦ï…§ï…¨ï…©ï…ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï…«ï…¬ï…ï†�ï†�ï†�ï†�ï†�ï†žï†Ÿï† ï†¡ï†¢ï†£ï†¤ï†¥ï†¦ï†§ï†¨ï†©ï†ªï†«ï†¬ï†ï†®ï†¯ï†°ï†±ï†²ï†³ï†´ï†µï†¶ï†·ï†¸ï†¹ï†ºï†»ï†¼ï†½ï†¾ï†¿ï‡€ï‡��\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"����������������������������������������������������������������ï‡�ï‡�ï‡�ï‡�ï‡žï‡Ÿï‡ ï‡¡ï‡¢ï‡£ï‡¤ï‡¥ï‡¦ï‡§ï‡¨ï‡©ï‡ªï‡«ï‡¬ï‡ï‡®ï‡¯ï‡°ï‡±ï‡²ï‡³ï‡´ï‡µï‡¶ï‡·ï‡¸ï‡¹ï‡ºï‡»ï‡¼ï‡½ï‡¾ï‡¿ïˆ€ïˆ�����������������������������������ïˆ�ïˆ�ïˆ�ïˆ�ïˆžïˆŸïˆ ïˆ¡ïˆ¢ïˆ£ïˆ¤ïˆ¥ïˆ¦ïˆ§ïˆ¨ïˆ©ïˆªïˆ«ïˆ¬ïˆïˆ®ïˆ¯ïˆ°ïˆ±ïˆ²ïˆ³ïˆ´ïˆµïˆ¶ïˆ·ïˆ¸ïˆ¹ïˆºïˆ»ïˆ¼ïˆ½ïˆ¾ïˆ¿ï‰€ï‰�ï‰�ï‰�ï‰�ï‰�ï‰žï‰Ÿï‰ ï‰¡ï‰¢ï‰£ï‰¤ï‰¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������ï‰ï‰®ï‰¯ï‰°ï‰±ï‰²ï‰³ï‰´ï‰µï‰¶ï‰·ï‰¸ï‰¹ï‰ºï‰»ï‰¼ï‰½ï‰¾ï‰¿ïŠ€ïŠ�ïŠ�ïŠ�ïŠ�ïŠ�ïŠžïŠŸïŠ ïŠ¡ïŠ¢ïŠ£ïŠ¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ïŠ¥ïŠ¦ïŠ§ïŠ¨ïŠ©ïŠªïŠ«ïŠ¬ïŠïŠ®ïŠ¯ïŠ°ïŠ±ïŠ²ïŠ³ïŠ´ïŠµïŠ¶ïŠ·ïŠ¸ïŠ¹ïŠºïŠ»ïŠ¼ïŠ½ïŠ¾ïŠ¿ï‹€ï‹�ï‹�ï‹�ï‹�ï‹�ï‹žï‹Ÿï‹ ï‹¡ï‹¢ï‹£ï‹¤ï‹¥ï‹¦ï‹§ï‹¨ï‹©ï‹ªï‹«ï‹¬ï‹ï‹®ï‹¯ï‹°ï‹±ï‹²ï‹³ï‹´ï‹µï‹¶ï‹·ï‹¸ï‹¹ï‹ºï‹»ï‹¼ï‹½ï‹¾ï‹¿ïŒ€ïŒ��\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������ïŒ�ïŒ�ïŒ�ïŒ�ïŒžïŒŸïŒ ïŒ¡ïŒ¢ïŒ£ïŒ¤ïŒ¥ïŒ¦ïŒ§ïŒ¨ïŒ©ïŒªïŒ«ïŒ¬ïŒïŒ®ïŒ¯ïŒ°ïŒ±ïŒ²ïŒ³ïŒ´ïŒµïŒ¶ïŒ·ïŒ¸ïŒ¹ïŒºïŒ»ïŒ¼ïŒ½ïŒ¾ïŒ¿ï�€ï������������������������������������ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ïŽ€ïŽ�ïŽ�ïŽ�ïŽ�ïŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"���������������������������������������������������������������� ,ã€�。.‧;:?ï¼�︰�‥ï¹�﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴ï¹�()︵︶{ï½�︷︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙﹚����������������������������������﹛﹜ï¹�﹞‘’“â€�ã€�〞‵′#&*※§〃○â—�△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_Ë�﹉﹊ï¹�ï¹Žï¹‹ï¹Œï¹Ÿï¹ ï¹¡ï¼‹ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓â†�→↖↗↙↘∥∣ï¼��\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¼¼âˆ•ï¹¨ï¼„ï¿¥ã€’ï¿ ï¿¡ï¼…ï¼ â„ƒâ„‰ï¹©ï¹ªï¹«ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„°兙兛兞å…�兡兣嗧瓩糎â–�▂▃▄▅▆▇█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘â•����������������������������������╮╰╯����◢◣◥◤╱╲╳ï¼�ï¼‘ï¼’ï¼“ï¼”ï¼•ï¼–ï¼—ï¼˜ï¼™â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ã€¡ã€¢ã€£ã€¤ã€¥ã€¦ã€§ã€¨ã€©ï¿½å�„�ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï½�bcdefghijklï½�nï½�ï½�qrstuv�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�����������������������������������ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ����������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"����������������������������������������������������������������一乙ä¸�七乃ä¹�äº†äºŒäººå„¿å…¥å…«å‡ åˆ€åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å�å‘å“寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰�����������������������������������丑ä¸�ä¸�ä¸ä¸°ä¸¹ä¹‹å°¹äºˆäº‘井互五亢ä»�什仃仆仇ä»�今介仄元å…�å…§å…兮公冗凶分切刈勻勾勿化匹å�ˆå�‡å�…å�žåŽ„å�‹å�Šå��壬天夫太å¤å”å°‘å°¤å°ºå±¯å·´å¹»å»¿å¼”å¼•å¿ƒæˆˆæˆ¶æ‰‹æ‰Žæ”¯æ–‡æ–—æ–¤æ–¹æ—¥æ›°æœˆæœ¨æ¬ æ¢æ¹æ¯‹æ¯”毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ä¸™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������������������������������������世丕且丘主ä¹�ä¹�ä¹Žä»¥ä»˜ä»”ä»•ä»–ä»—ä»£ä»¤ä»™ä»žå……å…„å†‰å†Šå†¬å‡¹å‡ºå‡¸åˆŠåŠ åŠŸåŒ…åŒ†åŒ—åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�å�»å››å›šå¤–����������������������������������央失奴奶å•它尼巨巧左市布平幼å¼�å¼˜å¼—å¿…æˆŠæ‰“æ‰”æ‰’æ‰‘æ–¥æ—¦æœ®æœ¬æœªæœ«æœæ£æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全�\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������共å†�å†°åˆ—åˆ‘åˆ’åˆŽåˆ–åŠ£åŒˆåŒ¡åŒ å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’å› å›žå›�圳地在åœåœ¬åœ¯åœ©å¤™å¤šå¤·å¤¸å¦„奸妃好她如å¦�å—å˜å®‡å®ˆå®…安寺尖屹州帆并年����������������������������������å¼�弛忙忖戎戌æˆ�æˆ�æ‰£æ‰›æ‰˜æ”¶æ—©æ—¨æ—¬æ—æ›²æ›³æœ‰æœ½æœ´æœ±æœµæ¬¡æ¤æ»æ°–æ±�æ±—æ±™æ±Ÿæ± æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�佑伽伺伸佃佔似但佣�\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä½œä½ ä¼¯ä½Žä¼¶ä½™ä½�佈佚兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�å�žå�¾å�¦å‘Žå�§å‘†å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘å�€å������������������������������������å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å�åœåšå›å®Œå®‹å®�尬局å±�å°¿å°¾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�å¿±å¿«å¿¸å¿ªæˆ’æˆ‘æŠ„æŠ—æŠ–æŠ€æ‰¶æŠ‰æ‰æŠŠæ‰¼æ‰¾æ‰¹æ‰³æŠ’æ‰¯æŠ˜æ‰®æŠ•æŠ“æŠ‘æŠ†æ”¹æ”»æ”¸æ—±æ›´æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� �\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������æ�“æ�—æ¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ 狄狂玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒����������������������������������芋èŠ�見角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅åŸå¤å£å®—定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�å¿ å¿½å¿µå¿¿æ€�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜�昕昊�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������昇æœ�朋æ�枋枕æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ¦æ§æ¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�æ²®æ³—æ³…æ³±æ²¿æ²»æ³¡æ³›æ³Šæ²¬æ³¯æ³œæ³–æ³ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç‚•ç‚Žç‚’ç‚Šç‚™çˆ¬çˆçˆ¸ç‰ˆç‰§ç‰©ç‹€ç‹Žç‹™ç‹—ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直知矽社祀ç¥�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙èŠèŠ½èŠŸèŠ¹èŠ±èŠ¬èŠ¥èŠ¯èŠ¸èŠ£èŠ°èŠ¾èŠ·è™Žè™±åˆ�表軋迎返近邵邸邱邶采金長門阜陀阿阻附�\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������陂隹雨é�’é�žäºŸäºäº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�ä¿„ä¿‚ä¿šä¿Žä¿žä¾·å…—å†’å†‘å† å‰Žå‰ƒå‰Šå‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å“„å“ˆå’¯å’«å’±å’»å’©å’§å’¿å›¿åž‚åž‹åž åž£åž¢åŸŽåž®åž“å¥•å¥‘å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�å§»å©å®£å®¦å®¤å®¢å®¥å°�屎å±�å±�屋峙峒巷å¸�å¸¥å¸Ÿå¹½åº åº¦å»ºå¼ˆå¼å½¥å¾ˆå¾…徊律徇後徉怒æ€�æ€ æ€¥æ€Žæ€¨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�æ‹œæŒ–æŒ‰æ‹¼æ‹æŒ�拮拽指拱拷�\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‹¯æ‹¬æ‹¾æ‹´æŒ‘æŒ‚æ”¿æ•…æ–«æ–½æ—¢æ˜¥æ˜æ˜ 昧是星昨昱昤曷柿染柱柔æŸ�柬架枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�æŸ’æªæ®ƒæ®†æ®µæ¯’毗氟泉洋洲洪æµ�津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯ç‚ç‚¸ç‚®ç‚¤çˆ°ç‰²ç‰¯ç‰´ç‹©ç‹ ç‹¡çŽ·ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�ç›¹ç›¸çœ‰çœ‹ç›¾ç›¼çœ‡çŸœç ‚ç ”ç Œç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸美羿耄�\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������è€�è€�耑耶胖胥胚胃胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�è§”è¨ˆè¨‚è¨ƒè²žè² èµ´èµ³è¶´è»�軌述迦迢迪迥����������������������������������è¿è¿«è¿¤è¿¨éƒŠéƒŽéƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸéŸ³é �風飛食首香乘亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修å€å€ªä¿¾å€«å€‰å…¼å†¤å†¥å†¢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩å“員唉哮哪�\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������哦唧唇哽å”�åœƒåœ„åŸ‚åŸ”åŸ‹åŸƒå ‰å¤�å¥—å¥˜å¥šå¨‘å¨˜å¨œå¨Ÿå¨›å¨“å§¬å¨ å¨£å¨©å¨¥å¨Œå¨‰å«å±˜å®°å®³å®¶å®´å®®å®µå®¹å®¸å°„屑展å±�å³å³½å³»å³ªå³¨å³°å³¶å´�å³´å·®å¸å¸«åº«åºåº§å¼±å¾’徑å¾�æ�™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�£æ�¥æ��æ�•æ�æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºæ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�æ›¸æœ”æœ•æœ—æ ¡æ ¸æ¡ˆæ¡†æ¡“æ ¹æ¡‚æ¡”æ ©æ¢³æ —æ¡Œæ¡‘æ ½æŸ´æ¡�æ¡€æ ¼æ¡ƒæ ªæ¡…æ “æ ˜æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�ç›Žçœ©çœŸçœ çœ¨çŸ©ç °ç §ç ¸ç �ç ´ç ·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç ¥ç ç ç Ÿç ²ç¥•ç¥�ç¥ ç¥Ÿç¥–ç¥žç¥�ç¥—ç¥šç§¤ç§£ç§§ç§Ÿç§¦ç§©ç§˜çª„çªˆç«™ç¬†ç¬‘ç²‰ç´¡ç´—ç´‹ç´Šç´ ç´¢ç´”ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耘耕耙耗耽耿胱脂胰脅èƒèƒ´è„†èƒ¸èƒ³è„ˆèƒ½è„Šèƒ¼èƒ¯è‡è‡¬èˆ€èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗è�€èŒ±èŒ¨è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙閃院陣陡����������������������������������陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µå�´å�·å��å€�å�¯å�兜冕凰剪副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯啤唸售啜唬啣唳å•�å•—åœˆåœ‹åœ‰åŸŸå …å Šå †åŸ åŸ¤åŸºå ‚å µåŸ·åŸ¹å¤ å¥¢å¨¶å©�婉婦婪婀�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������娼婢婚婆婊å°å¯‡å¯…å¯„å¯‚å®¿å¯†å°‰å°ˆå°‡å± å±œå±�å´‡å´†å´Žå´›å´–å´¢å´‘å´©å´”å´™å´¤å´§å´—å·¢å¸¸å¸¶å¸³å¸·åº·åº¸åº¶åºµåº¾å¼µå¼·å½—å½¬å½©å½«å¾—å¾™å¾žå¾˜å¾¡å¾ å¾œæ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æƒ…æ‚»æ‚µæƒœæ‚¼æƒ˜æƒ•æƒ†æƒŸæ‚¸æƒšæƒ‡æˆšæˆ›æ‰ˆæŽ æŽ§æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—�旋旌旎æ™�晚晤晨晦晞曹勗望æ¢�æ¢¯æ¢¢æ¢“æ¢µæ¡¿æ¡¶æ¢±æ¢§æ¢—æ¢°æ¢ƒæ£„æ¢æ¢†æ¢…梔æ¢�梨梟梡梂欲殺�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒç�†ç�¾ç��ç“ ç“¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç“·ç”œç”¢ç•¥ç•¦ç•¢ç•°ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票ç¥ç§»çª’çª•ç¬ ç¬¨ç¬›ç¬¬ç¬¦ç¬™ç¬žç¬®ç²’ç²—ç²•çµ†çµƒçµ±ç´®ç´¹ç´¼çµ€ç´°ç´³çµ„ç´¯çµ‚ç´²ç´±ç¼½ç¾žç¾šç¿Œç¿Žç¿’è€œè�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“èŽ‰èŽ è�·è�»è�¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖è¢�袋覓è¦�訪è¨�訣訥許è¨è¨Ÿè¨›è¨¢è±‰è±šè²©è²¬è²«è²¨è²ªè²§èµ§èµ¦è¶¾è¶ºè»›è»Ÿé€™é€�通逗連速é€�é€�é€•é€žé€ é€�逢逖逛途����������������������������������部éƒéƒ½é…—野釵釦釣釧é‡é‡©é–‰é™ªé™µé™³é™¸é™°é™´é™¶é™·é™¬é›€é›ªé›©ç« ç«Ÿé ‚é ƒéšé³¥é¹µé¹¿éº¥éº»å‚¢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�å ¯å ªå ´å ¤å °å ±å ¡å �å å£¹å£ºå¥ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������婷媚婿媒媛媧å³å±å¯’富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊å»�廂廄弼å½å¾©å¾ªå¾¨æƒ‘æƒ¡æ‚²æ‚¶æƒ æ„œæ„£æƒºæ„•æƒ°æƒ»æƒ´æ…¨æƒ±æ„Žæƒ¶æ„‰æ„€æ„’æˆŸæ‰‰æŽ£æŽŒæ��æ�€æ�©æ�‰æ�†æ������������������������������������æ�’æ�£æ��æ�¡æ�–æ�æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶景暑智晾晷曾替期æœ�æ£ºæ£•æ£ æ£˜æ£—æ¤…æ£Ÿæ£µæ£®æ£§æ£¹æ£’æ£²æ££æ£‹æ£�æ¤�æ¤’æ¤Žæ£‰æ£šæ¥®æ£»æ¬¾æ¬ºæ¬½æ®˜æ®–æ®¼æ¯¯æ°®æ°¯æ°¬æ¸¯æ¸¸æ¹”æ¸¡æ¸²æ¹§æ¹Šæ¸ æ¸¥æ¸£æ¸›æ¹›æ¹˜æ¸¤æ¹–æ¹®æ¸æ¸¦æ¹¯æ¸´æ¹�渺測湃æ¸�渾滋�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— 登發皖皓皴盜ç��çŸç¡�硬硯ç¨�稈程稅稀窘����������������������������������窗窖童竣ç‰ç–ç†ç�ç’ç”ç�ç‹ç�ç‘粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›è›”蛛蛤è›�蛞街è£�è£‚è¢±è¦ƒè¦–è¨»è© è©•è©žè¨¼è©��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑����������������������������������間閒閎隊階隋陽隅隆éš�陲隄é›�é›…é›„é›†é›‡é›¯é›²éŸŒé …é †é ˆé£§é£ªé£¯é£©é£²é£é¦®é¦é»ƒé»�黑亂å‚債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌å¡å¡Šå¡¢å¡’塋奧å«�嫉嫌媾媽媼�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�會榔æ¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¥šæ¥·æ¥ 楔極椰概楊楨楫楞楓楹榆æ¥�æ¥£æ¥›æ‡æ²æ¯€æ®¿æ¯“毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷ç�…猿猾瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ç�žç�£ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"����������������������������������������������������������������ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œç¨šç¨ ç¨”ç¨Ÿç¨žçªŸçª ç·ç¯€ç ç®ç§ç²±ç²³ç²µç¶“絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�è£¡è£Šè£•è£’è¦œè§£è©«è©²è©³è©¦è©©è©°èª‡è©¼è©£èª è©±èª…è©è©¢è©®è©¬è©¹è©»è¨¾è©¨è±¢è²Šè²‰è³Šè³‡è³ˆè³„貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������辟農é�‹é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶é �é ‘é “é Šé ’é Œé£¼é£´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é£½é£¾é¦³é¦±é¦´é«¡é³©éº‚é¼Žé¼“é¼ åƒ§åƒ®åƒ¥åƒ–åƒåƒšåƒ•åƒ�僑僱僎僩兢凳劃劂匱åŽå—¾å˜€å˜›å˜—嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣åµå¯žå¯§å¯¡å¯¥å¯¦å¯¨å¯¢å¯¤å¯Ÿå°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘摻敲斡旗旖暢暨æš�榜榨榕æ§�榮槓構榛榷榻榫榴æ§�æ§�æ¦æ§Œæ¦¦æ§ƒæ¦£æ‰æŒæ°³æ¼³æ¼”æ»¾æ¼“æ»´æ¼©æ¼¾æ¼ æ¼¬æ¼�漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒爾犒犖ç�„ç��瑤瑣瑪瑰ç‘甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦�種稱窪窩ç«ç«¯ç®¡ç®•箋çµç®—ç®�ç®”ç®�ç®¸ç®‡ç®„ç²¹ç²½ç²¾ç¶»ç¶°ç¶œç¶½ç¶¾ç¶ ç·Šç¶´ç¶²ç¶±ç¶ºç¶¢ç¶¿ç¶µç¶¸ç¶ç·’緇綬�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç½°ç¿ ç¿¡ç¿Ÿè�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣èª�誡誓誤����������������������������������說誥誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žé�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…éŸ¶é —é ˜é¢¯é¢±é¤ƒé¤…é¤Œé¤‰é§�骯骰髦é�é‚鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦å¥å¬‰å«»å¬‹å«µå¬Œå¬ˆå¯®å¯¬å¯©å¯«å±¤å±¥å¶�嶔幢幟幡廢廚廟å»�å»£å» å½ˆå½±å¾·å¾µæ…¶æ…§æ…®æ…�慕憂����������������������������������慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�æ’°æ’¥æ’“æ’•æ’©æ’’æ’®æ’æ’«æ’šæ’¬æ’™æ’¢æ’³æ•µæ•·æ•¸æš®æš«æš´æš±æ¨£æ¨Ÿæ§¨æ¨�æ¨žæ¨™æ§½æ¨¡æ¨“æ¨Šæ§³æ¨‚æ¨…æ§æ¨‘æ�æŽæ®¤æ¯…æ¯†æ¼¿æ½¼æ¾„æ½‘æ½¦æ½”æ¾†æ½æ½›æ½¸æ½®æ¾Žæ½ºæ½°æ½¤æ¾—æ½˜æ»•æ½¯æ½ æ½Ÿç†Ÿç†¬ç†±ç†¨ç‰–çŠ›ç�Žç�—瑩璋璃�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç‘¾ç’€ç•¿ç˜ ç˜©ç˜Ÿç˜¤ç˜¦ç˜¡ç˜¢çššçšºç›¤çžŽçž‡çžŒçž‘çž‹ç£‹ç£…ç¢ºç£Šç¢¾ç£•ç¢¼ç£�稿稼穀稽稷稻窯窮ç®ç®±ç¯„箴篆篇ç¯�ç® ç¯Œç³Šç· ç·´ç·¯ç·»ç·˜ç·¬ç·�編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜è†�è† è†šè†˜è”—è”½è”šè“®è”¬è”蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論è«�èª¶èª¹è«›è±Œè±Žè±¬è³ è³žè³¦è³¤è³¬è³è³¢è³£è³œè³ªè³¡èµè¶Ÿè¶£è¸«è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟輩輦輪輜輞�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������輥é�©é�®é�¨é�é�·é„°é„鄧鄱醇醉醋醃鋅銻銷鋪銬鋤é‹�銳銼鋒鋇鋰銲é–閱霄霆震霉é� éž�éž‹éž�é ¡é «é œé¢³é¤Šé¤“é¤’é¤˜é§�é§�駟駛駑駕駒駙骷髮髯鬧é…é„é·é¯é´†é´‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é´ƒéº©éº¾é»Žå¢¨é½’儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴å¸å¯°å°Žå½Šæ†²æ†‘憩憊æ‡�憶憾懊懈戰擅æ“�擋撻撼據擄擇擂æ“�æ’¿æ“’æ“”æ’¾æ•´æ›†æ›‰æš¹æ›„æ›‡æš¸æ¨½æ¨¸æ¨ºæ©™æ©«æ©˜æ¨¹æ©„æ©¢æ©¡æ©‹æ©‡æ¨µæ©Ÿæ©ˆæ™æ·æ°…濂澱澡�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������濃澤æ¿�æ¾§æ¾³æ¿€æ¾¹æ¾¶æ¾¦æ¾ æ¾´ç†¾ç‡‰ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ç’Ÿç’žç“¢ç”Œç”�ç˜´ç˜¸ç˜ºç›§ç›¥çž çžžçžŸçž¥ç£¨ç£šç£¬ç£§ç¦¦ç©�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉è•蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷è«è«³è«¶è«¼è±«è±è²“賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’éŒ éŒ¶é‹¸éŒ³éŒ¯éŒ¢é‹¼éŒ«éŒ„éŒšï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"����������������������������������������������������������������éŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °é ¸é »é ·é é ¹é ¤é¤�館餞餛餡餚é§é§¢é§±éª¸éª¼é«»é«é¬¨é®‘鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵嚎嚀åš�嚅嚇����������������������������������åš�壕壓壑壎嬰嬪嬤åºå°·å±¨å¶¼å¶ºå¶½å¶¸å¹«å½Œå¾½æ‡‰æ‡‚æ‡‡æ‡¦æ‡‹æˆ²æˆ´æ“Žæ“Šæ“˜æ“ æ“°æ“¦æ“¬æ“±æ“¢æ“æ–‚斃曙曖檀檔檄檢檜櫛檣橾檗æª�æª æœæ®®æ¯šæ°ˆæ¿˜æ¿±æ¿Ÿæ¿ 濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥ç‡ç‡¬ç‡´ç‡ 爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������瞧çžçŸ¯ç£·ç£ºç£´ç£¯ç¤�禧禪穗窿簇ç°�ç¯¾ç¯·ç°Œç¯ ç³ ç³œç³žç³¢ç³Ÿç³™ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºè‡‚è‡€è†¿è†½è‡‰è†¾è‡¨èˆ‰è‰±è–ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è–„è•¾è–œè–‘è–”è–¯è–›è–‡è–¨è–Šè™§èŸ€èŸ‘èž³èŸ’èŸ†èž«èž»èžºèŸˆèŸ‹è¤»è¤¶è¥„è¤¸è¤½è¦¬è¬Žè¬—è¬™è¬›è¬Šè¬ è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”é—Šé—‹é—Œé—ˆé—†éš±éš¸é›–éœœéœžéž éŸ“é¡†é¢¶é¤µé¨��\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������駿鮮鮫鮪é®é´»é´¿éº‹é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�æ‡£æˆ³æ“´æ“²æ“¾æ”†æ“ºæ“»æ“·æ–·æ›œæœ¦æª³æª¬æ«ƒæª»æª¸æ«‚æª®æª¯æŸæ¸æ®¯ç€‰ç€‹æ¿¾ç€†æ¿ºç€‘ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•ç™–ç™˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç™’çž½çž¿çž»çž¼ç¤Žç¦®ç©¡ç©¢ç© ç«„ç«…ç°«ç°§ç°ªç°žç°£ç°¡ç³§ç¹”ç¹•ç¹žç¹šç¹¡ç¹’ç¹™ç½ˆç¿¹ç¿»è�·è�¶è‡�è‡�舊è—�è–©è—�è—�è—‰è–°è–ºè–¹è–¦èŸ¯èŸ¬èŸ²èŸ è¦†è¦²è§´è¬¨è¬¹è¬¬è¬«è±�贅蹙蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖é—�闕離雜雙雛雞霤鞣鞦�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������éžéŸ¹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é�éŽé�鯊鯉鯽鯈鯀鵑éµ�éµ é» é¼•é¼¬å„³åš¥å£žå£Ÿå£¢å¯µé¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹ç¹¹ç¹©ç¹ªç¾…繳羶羹羸臘藩è—�è—ªè—•è—¤è—¥è—·èŸ»è …è �èŸ¹èŸ¾è¥ è¥Ÿè¥–è¥žè�èœè˜è‰èšèŽè�è†è™è´ˆè´Šè¹¼è¹²èº‡è¹¶è¹¬è¹ºè¹´è½”轎è¾é‚Šé‚‹é†±é†®é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´é›£éœªéœ§é�¡éŸœéŸ»é¡žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������願顛颼饅饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤å€åƒå½å¯¶å·‰æ‡¸æ‡ºæ”˜æ””攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬礫竇競籌籃ç±�ç³¯ç³°è¾®ç¹½ç¹¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çº‚ç½Œè€€è‡šè‰¦è—»è—¹è˜‘è—ºè˜†è˜‹è˜‡è˜Šè ”è •è¥¤è¦ºè§¸è°è¬è¦è¯èŸè«è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼蘗è˜è˜šè £è ¢è ¡è Ÿè¥ªè¥¬è¦½è´ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������è·è½è´“躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅驃驀騾é«�é”é‘é°é°¥é¶¯é¶´é·‚鶸éº�黯鼙齜齦齧儼儻囈囊囉å¿å·”巒彎懿攤權æ¡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽霾韃éŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�ç“šç«Šç±¤ç±£ç±¥çº“çº–çº”è‡¢è˜¸è˜¿è ±è®Šé‚�é‚�é‘£é‘ é‘¤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�ç¾ˆè ¶è ¹è¡¢è®“è®’ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������讖艷贛釀鑪é�‚é�ˆé�„韆顰驟鬢é˜é±Ÿé·¹é·ºé¹¼é¹½é¼‡é½·é½²å»³æ¬–ç�£ç±¬ç±®è »è§€èº¡é‡�鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…é‘½é‘¾é‘¼é±·é±¸é»·è±”é‘¿é¸šçˆ¨é©ªé¬±é¸›é¸žç±²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ïŽ ïŽ¡ïŽ¢ïŽ£ïŽ¤ïŽ¥ïŽ¦ïŽ§ïŽ¨ïŽ©ïŽªïŽ«ïŽ¬ïŽïŽ®ïŽ¯ïŽ°ïŽ±ïŽ²ïŽ³ïŽ´ïŽµïŽ¶ïŽ·ïŽ¸ïŽ¹ïŽºïŽ»ïŽ¼ïŽ½ïŽ¾ïŽ¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������ï�¾ï�¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï�½ï�¾ï�¿ï‘€ï‘�ï‘�ï‘�ï‘�ï‘�ï‘žï‘Ÿï‘ ï‘¡ï‘¢ï‘£ï‘¤ï‘¥ï‘¦ï‘§ï‘¨ï‘©ï‘ªï‘«ï‘¬ï‘ï’�ï’�ï’Žï’�ï’��\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"����������������������������������������������������������������ï’�ï’žï’Ÿï’ ï’¡ï’¢ï’£ï’¤ï’¥ï’¦ï’§ï’¨ï’©ï’ªï’«ï’¬ï’ï“�ï“�ï“�ï“�����������������������������������ï“�ï“žï“Ÿï“ ï“¡ï“¢ï“£ï“¤ï“¥ï“¦ï“§ï“¨ï“©ï“ªï“«ï“¬ï“ï”�ï”�ï”�ï”�ï”�ï”žï”Ÿï” ï”¡ï”¢ï”£ï”¤ï”¥ï”¦ï”§ï”¨ï”©ï”ªï”«ï”¬ï”�\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇äº�囗兀屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼仨仜仩仡ä»�仚刌匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰�氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓刉åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿å–尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�æ‰œæ‰žæ‰¤æ‰¡æ‰¦æ‰¢æ‰™æ‰ æ‰šæ‰¥æ—¯æ—®æœ¾æœ¹æœ¸æœ»æœºæœ¿æœ¼æœ³æ°˜æ±†æ±’æ±œæ±�汊汔汋�\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�è¥¾é‚™é‚—é‚˜é‚›é‚”é˜¢é˜¤é˜ é˜£ä½–ä¼»ä½¢ä½‰ä½“ä½¤ä¼¾ä½§ä½’ä½Ÿä½�佘ä¼ä¼³ä¼¿ä½¡å†�冹刜刞刡åŠåŠ®åŒ‰å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�½å‘�å‘�å�¨å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’å¤†å¥€å¦¦å¦˜å¦ å¦—å¦Žå¦¢å¦�å¦�妧妡宎宒尨尪å²�å²�å²ˆå²‹å²‰å²’å²Šå²†å²“å²•å· å¸Šå¸Žåº‹åº‰åºŒåºˆåº�å¼…å¼�彸彶忒忑å¿�å¿å¿¨å¿®å¿³å¿¡å¿¤å¿£å¿ºå¿¯å¿·å¿»æ€€å¿´æˆºæŠƒæŠŒæŠŽæŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴攷旰旴旳旲旵æ�…æ�‡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�æ±±æ±¯æ±©æ²šæ±æ²‡æ²•沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�èŠ…èŠŽèŠ‘èŠ“ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŠŠèŠƒèŠ„è±¸è¿‰è¾¿é‚Ÿé‚¡é‚¥é‚žé‚§é‚ é˜°é˜¨é˜¯é˜ä¸³ä¾˜ä½¼ä¾…佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑咂咈呫呺呾呥呬呴呦å’�å‘¯å‘¡å‘ å’˜å‘£å‘§å‘¤å›·å›¹å�¯å�²å�å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇å¢å¥å®“å®•å±„å±‡å²®å²¤å² å²µå²¯å²¨å²¬å²Ÿå²£å²å²¢å²ªå²§å²�å²¥å²¶å²°å²¦å¸—å¸”å¸™å¼¨å¼¢å¼£å¼¤å½”å¾‚å½¾å½½å¿žå¿¥æ€æ€¦æ€™æ€²æ€‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ€´æ€Šæ€—怳怚怞怬怢æ€�æ€�æ€®æ€“æ€‘æ€Œæ€‰æ€œæˆ”æˆ½æŠæŠ´æ‹‘æŠ¾æŠªæŠ¶æ‹ŠæŠ®æŠ³æŠ¯æŠ»æŠ©æŠ°æŠ¸æ”½æ–¨æ–»æ˜‰æ—¼æ˜„æ˜’æ˜ˆæ—»æ˜ƒæ˜‹æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃æ�½æž�æ�¸æ�¹æž”æ¬¥æ®€æ¾æ¯žæ°�æ²“æ³¬æ³«æ³®æ³™æ²¶æ³”æ²æ³§æ²·æ³�æ³‚æ²ºæ³ƒæ³†æ³æ³²ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������泒æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡çŽçŽ¦çŽ¢çŽ çŽ¬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵è‚èˆ èŠ è‹€èŠ«èŠšèŠ˜èŠ›èŠµèŠ§èŠ®èŠ¼èŠžèŠºèŠ´èŠ¨èŠ¡èŠ©è‹‚èŠ¤è‹ƒèŠ¶èŠ¢è™°è™¯è™è™®è±–è¿’è¿‹è¿“è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅俓侲俉俋ä¿�俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’å’¥å“��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������哃èŒ�å’·å’®å“–å’¶å“…å“†å’ å‘°å’¼å’¢å’¾å‘²å“žå’°åžµåžžåžŸåž¤åžŒåž—åž�垛垔垘åž�垙垥垚垕壴å¤�奓姡姞姮娀姱å§�å§ºå§½å§¼å§¶å§¤å§²å§·å§›å§©å§³å§µå§ å§¾å§´å§å®¨å±Œå³�峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔å³�å³ˆå³†å³Žå³Ÿå³¸å·¹å¸¡å¸¢å¸£å¸ å¸¤åº°åº¤åº¢åº›åº£åº¥å¼‡å¼®å½–å¾†æ€·æ€¹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲柈枺�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵æŸ�æž³æŸ·æŸ¶æŸ®æŸ£æŸ‚æž¹æŸŽæŸ§æŸ°æž²æŸ¼æŸ†æŸæŸŒæž®æŸ¦æŸ›æŸºæŸ‰æŸŠæŸƒæŸªæŸ‹æ¬¨æ®‚æ®„æ®¶æ¯–æ¯˜æ¯ æ° æ°¡æ´¨æ´´æ´æ´Ÿæ´¼æ´¿æ´’洊泚洳洄洙洺洚洑洀æ´�浂����������������������������������æ´�洘洷洃æ´�æµ€æ´‡æ´ æ´¬æ´ˆæ´¢æ´‰æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„çœˆçœƒçœ„çœ…çœŠç›·ç›»ç›ºçŸ§çŸ¨ç †ç ‘ç ’ç …ç �ç �ç Žç ‰ç ƒç “ç¥Šç¥Œç¥‹ç¥…ç¥„ç§•ç§�ç§�秖秎窀�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"����������������������������������������������������������������穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�è€”è€·èƒ˜èƒ‡èƒ èƒ‘èƒˆèƒ‚èƒ�胅胣胙胜胊胕胉èƒ�胗胦èƒ�è‡¿èˆ¡èŠ”è‹™è‹¾è‹¹èŒ‡è‹¨èŒ€è‹•èŒºè‹«è‹–è‹´è‹¬è‹¡è‹²è‹µèŒŒè‹»è‹¶è‹°è‹ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‹¤è‹ è‹ºè‹³è‹è™·è™´è™¼è™³è¡�è¡Žè¡§è¡ªè¡©è§“è¨„è¨‡èµ²è¿£è¿¡è¿®è¿ éƒ±é‚½é‚¿éƒ•éƒ…é‚¾éƒ‡éƒ‹éƒˆé‡”é‡“é™”é™�é™‘é™“é™Šé™Žå€žå€…å€‡å€“å€¢å€°å€›ä¿µä¿´å€³å€·å€¬ä¿¶ä¿·å€—å€œå€ å€§å€µå€¯å€±å€Žå…šå†”å†“å‡Šå‡„å‡…å‡ˆå‡Žå‰¡å‰šå‰’å‰žå‰Ÿå‰•å‰¢å‹�匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å”Šå“»å“·å“¸å“ å”Žå”ƒå”‹åœ�åœ‚åŸŒå ²åŸ•åŸ’åžºåŸ†åž½åž¼åž¸åž¶åž¿åŸ‡åŸ�åž¹åŸ�夎奊娙娖å¨å¨®å¨•å¨�娗娊娞娳å¬å®§å®å®¬å°ƒå±–屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ��æ�šæ�§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��悢悈悀悒æ‚�æ‚�悃悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”æ�™æŒæ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„æ—‚æ™Šæ™Ÿæ™‡æ™‘æœ’æœ“æ Ÿæ šæ¡‰æ ²æ ³æ »æ¡‹æ¡�æ –æ ±æ œæ µæ «æ æ ¯æ¡Žæ¡„æ ´æ �æ ’æ ”æ ¦æ ¨æ ®æ¡�æ ºæ ¥æ æ¬¬æ¬¯æ¬æ¬±æ¬´æè‚‚殈毦毤�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������毨毣毢毧氥浺浣浤浶æ´�æµ¡æ¶’æµ˜æµ¢æµæµ¯æ¶‘æ¶�æ·¯æµ¿æ¶†æµžæµ§æµ æ¶—æµ°æµ¼æµŸæ¶‚æ¶˜æ´¯æµ¨æ¶‹æµ¾æ¶€æ¶„æ´–æ¶ƒæµ»æµ½æµµæ¶�烜烓烑çƒ�çƒ‹ç¼¹çƒ¢çƒ—çƒ’çƒžçƒ çƒ”çƒ�烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿç“´ç“µç”¡ç•›ç•Ÿç–°ç—�疻痄痀疿疶疺皊盉çœ�眛çœ�çœ“çœ’çœ£çœ‘çœ•çœ™çœšçœ¢çœ§ç £ç ¬ç ¢ç µç ¯ç ¨ç ®ç «ç ¡ç ©ç ³ç ªç ±ç¥”ç¥›ç¥�ç¥œç¥“ç¥’ç¥‘ç§«ç§¬ç§ ç§®ç§ç§ªç§œç§žç§�窆窉窅窋窌窊窇竘ç¬��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�ç´Œç½œç½¡ç½žç½ ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳èŒè�„茙è�‘茥è�–茿è��茦茜茢����������������������������������è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��èŒ–èŒ¤èŒ èŒ·èŒ¯èŒ©è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄è¡è¡µè¡¶è¡²è¢€è¡±è¡¿è¡¯è¢ƒè¡¾è¡´è¡¼è¨’è±‡è±—è±»è²¤è²£èµ¶èµ¸è¶µè¶·è¶¶è»‘è»“è¿¾è¿µé€‚è¿¿è¿»é€„è¿¼è¿¶éƒ–éƒ éƒ™éƒšéƒ£éƒŸéƒ¥éƒ˜éƒ›éƒ—éƒœéƒ¤é…��\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"����������������������������������������������������������������酎é…�釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫å‰å‰¬å‰®å‹–å‹“åŒåŽœå•µå•¶å”¼å•�å•�唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈å”å”»å•€å•‹åœŠåœ‡åŸ»å ”åŸ¢åŸ¶åŸœåŸ´å €åŸåŸ½å ˆåŸ¸å ‹åŸ³åŸ�å ‡åŸ®åŸ£åŸ²åŸ¥åŸ¬åŸ¡å ŽåŸ¼å �埧å �å ŒåŸ±åŸ©åŸ°å �å „å¥œå© å©˜å©•å©§å©žå¨¸å¨µå©å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜å²å®å¯�寀屙崞崋å´�å´šå´ å´Œå´¨å´�崦崥å´��\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽæŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�掮æ�¼æŽ¤æŒ»æŽŸï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�æ¢œæ¡æ¡®æ¢®æ¢«æ¥–桯梣梬梩桵桴梲æ¢�æ¡·æ¢’æ¡¼æ¡«æ¡²æ¢ªæ¢€æ¡±æ¡¾æ¢›æ¢–æ¢‹æ¢ æ¢‰æ¢¤æ¡¸æ¡»æ¢‘æ¢Œæ¢Šæ¡½æ¬¶æ¬³æ¬·æ¬¸æ®‘æ®�æ®�æ®Žæ®Œæ°ªæ·€æ¶«æ¶´æ¶³æ¹´æ¶¬æ·©æ·¢æ¶·æ·¶æ·”æ¸€æ·ˆæ· æ·Ÿæ·–æ¶¾æ·¥æ·œæ·�æ·›æ·´æ·Šæ¶½æ·æ·°æ¶ºæ·•æ·‚æ·�淉�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎牾牻牼牿çŒ�猗猇猑猘猊猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�����������������������������������痋痌痑ç—�çš�皉盓眹眯çœçœ±çœ²çœ´çœ³çœ½çœ¥çœ»çœµç¡ˆç¡’硉ç¡�ç¡Šç¡Œç ¦ç¡…ç¡�祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵ç‡ç¬´ç¬¥ç¬°ç¬¢ç¬¤ç¬³ç¬˜ç¬ªç¬�笱笫ç¬ç¬¯ç¬²ç¬¸ç¬šç¬£ç²”粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„脟脬脞脡脕脧è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶èŽšè™™è™–èš¿èš·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è›‚è›�蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘軞è»�è»œè»—è» è»¡é€¤é€‹é€‘é€œé€Œé€¡éƒ¯éƒªéƒ°éƒ´éƒ²éƒ³éƒ”éƒ«éƒ¬éƒ©é…–é…˜é…šé…“é…•é‡¬é‡´é‡±é‡³é‡¸é‡¤é‡¹é‡ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������釫釷釨釮镺閆閈陼é™é™«é™±é™¯éš¿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥å–啷噅喢喓喈å–�å–µå–�å–£å–’å–¤å•½å–Œå–¦å•¿å–•å–¡å–ŽåœŒå ©å ·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ™å žå §å £å ¨åŸµå¡ˆå ¥å œå ›å ³å ¿å ¶å ®å ¹å ¸å å ¬å »å¥¡åª¯åª”åªŸå©ºåª¢åªžå©¸åª¦å©¼åª¥åª¬åª•åª®å¨·åª„åªŠåª—åªƒåª‹åª©å©»å©½åªŒåªœåª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌惢惎惄愔�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒����������������������������������晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�湳渜渳湋湀湑渻渃渮湞�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¹¨æ¹œæ¹¡æ¸±æ¸¨æ¹ æ¹±æ¹«æ¸¹æ¸¢æ¸°æ¹“æ¹¥æ¸§æ¹¸æ¹¤æ¹·æ¹•æ¹¹æ¹’æ¹¦æ¸µæ¸¶æ¹šç„ ç„žç„¯çƒ»ç„®ç„±ç„£ç„¥ç„¢ç„²ç„Ÿç„¨ç„ºç„›ç‰‹ç‰šçŠˆçŠ‰çŠ†çŠ…çŠ‹çŒ’çŒ‹çŒ°çŒ¢çŒ±çŒ³çŒ§çŒ²çŒçŒ¦çŒ£çŒµçŒŒç�®ç�¬ç�°ç�«ç�–����������������������������������ç�šç�¡ç�ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ 硤硥硜ç¡ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤çŠç¬»ç„çˆçŒçŽç€ç˜ç…粢粞粨粡絘絯絣絓絖絧絪çµ�çµçµœçµ«çµ’絔絩絑絟絎缾缿罥�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç½¦ç¾¢ç¾ ç¾¡ç¿—è�‘è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è��è�žè�‘è�†è�‚è�³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�•è�ºè�‡è�‘è�ªè�“è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩é€é€´é€¯é„†é„¬é„„郿郼鄈郹郻é„�é„€é„‡é„…é„ƒé…¡é…¤é…Ÿé…¢é… éˆ�鈊鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾隈����������������������������������隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�å¡™å¡¥å¡›å ½å¡£å¡±å£¼å«‡å«„å«‹åªºåª¸åª±åªµåª°åª¿å«ˆåª»å«†ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������媷嫀嫊媴媶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�å¹‹å»…å»Œå»†å»‹å»‡å½€å¾¯å¾æƒ·æ…‰æ…Šæ„«æ……愶愲愮慆愯æ…�æ„©æ…€æˆ é…¨æˆ£æˆ¥æˆ¤æ�…æ�±æ�«æ��æ�’æ�‰æ� æ�¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�³æ‘ƒæ�Ÿæ�•æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓暆暌暕æš�æš‹æšŠæš™æš”æ™¸æœ æ¥¦æ¥Ÿæ¤¸æ¥Žæ¥¢æ¥±æ¤¿æ¥…æ¥ªæ¤¹æ¥‚æ¥—æ¥™æ¥ºæ¥ˆæ¥‰æ¤µæ¥¬æ¤³æ¤½æ¥¥æ£°æ¥¸æ¤´æ¥©æ¥€æ¥¯æ¥„æ¥¶æ¥˜æ¥�楴楌椻楋椷楜æ¥�æ¥‘æ¤²æ¥’æ¤¯æ¥»æ¤¼æ†æ…æƒæ‚æˆæ�æ®›ï¨�毻毼�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������毹毷毸溛滖滈æº�æ»€æºŸæº“æº”æº æº±æº¹æ»†æ»’æº½æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�æ»Šæº—æº®æº£ç…‡ç…”ç…’ç…£ç… ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�煓����������������������������������煄ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶ç—痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ç�§ç�”ç�™ç�çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������稛ç¨�窣窢窞竫ç¦ç¤çç´ç©ç²ç¥ç³ç±ç°ç¡ç¸ç¶ç£ç²²ç²´ç²¯ç¶ˆç¶†ç¶€ç¶�絿綅絺綎絻綃絼綌綔綄絽綒ç½ç½«ç½§ç½¨ç½¬ç¾¦ç¾¥ç¾§ç¿›ç¿œè€¡è…¤è… 腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�葟葰è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³è‘¨è‘¾è‘„è�«è‘ 葔葮è‘�蜋蜄蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�覅覛觟觥觤�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è§¡è§ è§¢è§œè§¦è©¶èª†è©¿è©¡è¨¿è©·èª‚èª„è©µèªƒèª�詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�è¶’è·°è· è·¬è·±è·®è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿����������������������������������é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆é‰é‰¬é‰�é‰ é‰§é‰¯éˆ¶é‰¡é‰°éˆ±é‰”é‰£é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �é Žé¢¬é£¶é£¹é¦¯é¦²é¦°é¦µéªéª«é›é³ªé³é³§éº€é»½åƒ¦åƒ”僗僨僳僛僪åƒ�åƒ¤åƒ“åƒ¬åƒ°åƒ¯åƒ£åƒ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������凘劀åŠ�勩勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚å«å««å«³å«¢å« 嫛嫬嫞å«�嫙嫨嫟å·å¯ ����������������������������������寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�æ‘´æ‘¶æ‘²æ‘³æ‘½æ‘µæ‘¦æ’¦æ‘Žæ’‚æ‘žæ‘œæ‘‹æ‘“æ‘ æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…æœ„æœ¢æ¦±æ¦¶æ§‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¦ æ§Žæ¦–æ¦°æ¦¬æ¦¼æ¦‘æ¦™æ¦Žæ¦§æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓榪榡榞槙榗æ¦�æ§‚æ¦µæ¦¥æ§†æŠæ�æ‹æ®žæ®Ÿæ® æ¯ƒæ¯„æ¯¾æ»Žæ»µæ»±æ¼ƒæ¼¥æ»¸æ¼·æ»»æ¼®æ¼‰æ½Žæ¼™æ¼šæ¼§æ¼˜æ¼»æ¼’æ»æ¼Šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¼¶æ½³æ»¹æ»®æ¼æ½€æ¼°æ¼¼æ¼µæ»«æ¼‡æ¼Žæ½ƒæ¼…滽滶漹漜滼漺漟æ¼�漞漈漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ 碬碢碤禘禊禋禖禕禔禓�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤è��è�œè†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�è’ è“—è“”è“’è“›è’°è’‘è™¡èœ³èœ£èœ¨è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ 蜲蜪èœèœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�é„£é„œé„ é„¢é„Ÿé„�é„šé„¤é„¡é„›é…ºé…²é…¹é…³éŠ¥éŠ¤é‰¶éŠ›é‰ºéŠ éŠ”éŠªéŠ�����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩éŠ�銋éˆéšžéš¡é›¿é�˜é�½é�ºé�¾éžƒéž€éž‚é�»éž„éž�é�¿éŸŽéŸ�é –é¢é¢®é¤‚餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧鬾鬿é é¡éŸé³±é³²é³µéº§åƒ¿å„ƒå„°åƒ¸å„†å„‡åƒ¶åƒ¾å„‹å„Œåƒ½å„ŠåŠ‹åŠŒå‹±å‹¯å™ˆå™‚å™Œå˜µå™�噊噉噆噘�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�å¢±å¢ å¢£å¢¯å¢¬å¢¥å¢¡å£¿å«¿å«´å«½å«·å«¶å¬ƒå«¸å¬‚å«¹å¬�嬇嬅å¬�å±§å¶™å¶—å¶Ÿå¶’å¶¢å¶“å¶•å¶ å¶œå¶¡å¶šå¶žå¹©å¹�å¹ å¹œç·³å»›å»žå»¡å½‰å¾²æ†‹æ†ƒæ…¹æ†±æ†°æ†¢æ†‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ†›æ†“æ†¯æ†æ†Ÿæ†’憪憡æ†�æ…¦æ†³æˆæ‘®æ‘°æ’–æ’ æ’…æ’—æ’œæ’�æ’‹æ’Šæ’Œæ’£æ’Ÿæ‘¨æ’±æ’˜æ•¶æ•ºæ•¹æ•»æ–²æ–³æšµæš°æš©æš²æš·æšªæš¯æ¨€æ¨†æ¨—æ§¥æ§¸æ¨•æ§±æ§¤æ¨ æ§¿æ§¬æ§¢æ¨›æ¨�槾樧槲槮樔槷槧橀樈槦槻æ¨�槼槫樉樄樘樥æ¨�æ§¶æ¨¦æ¨‡æ§´æ¨–æ‘æ®¥æ®£æ®¢æ®¦æ°�氀毿氂æ½�漦潾澇濆澒�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫潽潧æ¾�æ½“æ¾‹æ½©æ½¿æ¾•æ½£æ½·æ½ªæ½»ç†²ç†¯ç†›ç†°ç† ç†šç†©ç†µç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�ç£Œç£‘ç£Žç£”ç£ˆç£ƒç£„ç£‰ç¦šç¦¡ç¦ ç¦œç¦¢ç¦›æ¶ç¨¹çª²çª´çª³ç®·ç¯‹ç®¾ç®¬ç¯Žç®¯ç®¹ç¯Šç®µç³…糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰ç¾ç¿ç¿«ç¿ªç¿¬ç¿¦ç¿¨è�¤è�§è†£è†Ÿï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������膞膕膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�è”®è”‚è“½è”žè“¶è”±è”¦è“§è“¨è“°è“¯è“¹è”˜è” è”°è”‹è”™è”¯è™¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣è§è§°è§¬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�è³§è¶ è¶œè¶¡è¶›è¸ è¸£è¸¥è¸¤è¸®è¸•è¸›è¸–è¸‘è¸™è¸¦è¸§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¸”è¸’è¸˜è¸“è¸œè¸—è¸šè¼¬è¼¤è¼˜è¼šè¼ è¼£è¼–è¼—é�³é�°é�¯é�§é�«é„¯é„«é„©é„ªé„²é„¦é„®é†…醆醊é†�醂醄醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�é‹•é‹‰é‹ é‹žé‹§é‹‘é‹“ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éŠµé‹¡é‹†éŠ´é•¼é–¬é–«é–®é–°éš¤éš¢é›“éœ…éœˆéœ‚é�šéžŠéžŽéžˆéŸ�éŸ�é žé �é ¦é ©é ¨é é ›é §é¢²é¤ˆé£ºé¤‘é¤”é¤–é¤—é¤•é§œé§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱é†éƒé§é´é±é¦é¶éµé°é¨é¤é¬é³¼é³ºé³½é³¿é³·é´‡é´€é³¹é³»é´ˆé´…鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ 噮�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������噳噦噣å™å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�å¬–å¬¨å¬šå¬ å¬žå¯¯å¶¬å¶±å¶©å¶§å¶µå¶°å¶®å¶ªå¶¨å¶²å¶å¶¯å¶´å¹§å¹¨å¹¦å¹¯å»©å»§å»¦å»¨å»¥å½‹å¾¼æ†�憨憖懅憴懆æ‡�懌憺����������������������������������憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽暻暺曌朣樴橦橉橧樲橨樾æ©�æ©æ©¶æ©›æ©‘樨橚樻樿æ©�橪橤æ©�æ©�æ©”æ©¯æ©©æ© æ¨¼æ©žæ©–æ©•æ©�æ©Žæ©†æ•æ”æ–æ®§æ®ªæ®«æ¯ˆæ¯‡æ°„æ°ƒæ°†æ¾æ¿‹æ¾£æ¿‡æ¾¼æ¿Žæ¿ˆæ½žæ¿„澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ 璔璒璕璡甋疀瘯ç˜ç˜±ç˜½ç˜³ç˜¼ç˜µç˜²ç˜°çš»ç›¦çžšçž�瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗ç£�磩磥磪磞磣磛磡磢ç£ç£Ÿç£ 禤穄穈穇窶窸窵窱窷篞篣篧ç¯�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗ç³�ç³‘ç¸’ç¸¡ç¸—ç¸Œç¸Ÿç¸ ç¸“ç¸Žç¸œç¸•ç¸šç¸¢ç¸‹ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������蕀蕆蕤è•�è•¢è•„è•‘è•‡è•£è”¾è•›è•±è•Žè•®è•µè••è•§è• è–Œè•¦è•�蕔蕥蕬虣虥虤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰è¤è¤®è¤§è¤±è¤¢è¤©è¤£è¤¯è¤¬è¤Ÿè§±è« ����������������������������������諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»é‚†éƒºé„³é„µé„¶é†“é†�醑é†�é†�錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒéŒŽéŒ�é‹‹éŒ�鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒éœ�éž™éž—éž”éŸ°éŸ¸é µé ¯é ²é¤¤é¤Ÿé¤§é¤©é¦žé§®é§¬é§¥é§¤é§°é§£é§ªé§©é§§éª¹éª¿éª´éª»é«¶é«ºé«¹é«·é¬³é®€é®…é®‡é¼é¾é»é®‚鮓鮒é®�éºé®•����������������������������������é½é®ˆé´¥é´—é´ é´žé´”é´©é´�鴘鴢é´�鴙鴟麈麆麇麮éºé»•é»–é»ºé¼’é¼½å„¦å„¥å„¢å„¤å„ å„©å‹´åš“åšŒåš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒å¬å¬¥å¬²å¬£å¬¬å¬§å¬¦å¬¯å¬®å»å¯±å¯²å¶·å¹¬å¹ªå¾¾å¾»æ‡ƒæ†µæ†¼æ‡§æ‡ 懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª�檖æª�檥檉檟檛檡檞檇檓檎�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æª•æªƒæª¨æª¤æª‘æ©¿æª¦æªšæª…æªŒæª’æ›æ®æ°‰æ¿Œæ¾©æ¿´æ¿”æ¿£æ¿œæ¿æ¿§æ¿¦æ¿žæ¿²æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�ç’ªç’璱璥璯ç”�甑甒ç”�疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨ç¸ç¸¼ç¹‚縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�è–§è–•è– è–‹è–£è•»è–¤è–šè–žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆è–�è–™è–�è–�薢薂薈薅蕹蕶薘è–�薟虨螾螪èžèŸ…螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒褷襂è¦è¦¯è¦®è§²è§³è¬žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¬˜è¬–謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰豲豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�é† éŽ¡éŽƒéŽ¯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��é�‘é� é�éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§éŽ€é�Žé�™é—‡é—€é—‰é—ƒé—…é–·éš®éš°éš¬éœ éœŸéœ˜éœ�霙鞚鞡鞜�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯é¤é¤±é¤°é¦˜é¦£é¦¡é¨‚駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼éˆé®šé®¨é®žé®›é®¦é®¡é®¥é®¤é®†é®¢é® 鮯鴳éµ�鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵é´éºŠéº‰éº�éº°é»ˆé»šé»»é»¿é¼¤é¼£é¼¢é½”é¾ å„±å„儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀å¹å¹®æ‡˜æ‡Ÿæ‡æ‡®æ‡±æ‡ªæ‡°æ‡«æ‡–懩擿攄擽擸æ”�æ”ƒæ“¼æ–”æ—›æ›šæ››æ›˜æ«…æª¹æª½æ«¡æ«†æªºæª¶æª·æ«‡æª´æªæžæ¯‰æ°‹ç€‡ç€Œç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������璸瓀璵ç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺磿礌礓礔礉ç¤�礒礑ç¦ç¦¬ç©Ÿç°œç°©ç°™ç° ç°Ÿç°ç°�簦簨簢簥簰繜ç¹�ç¹–ç¹£ç¹˜ç¹¢ç¹Ÿç¹‘ç¹ ç¹—ç¹“ç¾µç¾³ç¿·ç¿¸è�µè‡‘臒����������������������������������è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓èŸèŸ˜èŸ£èž¤èŸ—蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉謪謧謣謳謰謵è‡è¬¯è¬¼è¬¾è¬±è¬¥è¬·è¬¦è¬¶è¬®è¬¤è¬»è¬½è¬ºè±‚è±µè²™è²˜è²—è³¾è´„è´‚è´€è¹œè¹¢è¹ è¹—è¹–è¹žè¹¥è¹§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������蹛蹚蹡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟éŽ�鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵éŠéŒé‹é¯‡é¯†é¯ƒé®¿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫åšåš¦åš§åšªåš¬å£šå£�壛夒嬽嬾嬿巃幰�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������徿懻攇æ”�æ”�攉攌攎斄旞æ—�æ›žæ«§æ« æ«Œæ«‘æ«™æ«‹æ«Ÿæ«œæ«�æ««æ«�æ«�æ«žæ æ®°æ°Œç€™ç€§ç€ ç€–ç€«ç€¡ç€¢ç€£ç€©ç€—ç€¤ç€œç€ªçˆŒçˆŠçˆ‡çˆ‚çˆ…çŠ¥çŠ¦çŠ¤çŠ£çŠ¡ç“‹ç“…ç’·ç“ƒç”–ç™ çŸ‰çŸŠçŸ„çŸ±ç¤�礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕艤艡艣藫藱è—è—™è—¡è—¨è—šè——è—¬è—²è—¸è—˜è—Ÿè—£è—œè—‘è—°è—¦è—¯è—žè—¢è €èŸºè ƒèŸ¶èŸ·è ‰è Œè ‹è †èŸ¼è ˆèŸ¿è Šè ‚è¥¢è¥šè¥›è¥—è¥¡è¥œè¥˜è¥�襙覈覷覶觶è�èˆèŠè€è“è–è”è‹è•�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������è‘è‚è’è—豃豷豶貚贆贇贉趬趪è¶è¶«è¹è¹¸è¹³è¹ªè¹¯è¹»è»‚轒轑è½�è½�轓辴酀鄿醰é†é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žé�€é�’é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�é¨¤é¨›é¨¢é¨ é¨§é¨£é¨žé¨œé¨”é«‚é¬‹é¬Šé¬Žé¬Œé¬·é¯ªé¯«é¯ é¯žé¯¤é¯¦é¯¢é¯°é¯”é¯—é¯¬é¯œé¯™é¯¥é¯•é¯¡é¯šéµ·é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼é¼é½€é½�é½�齖齗齘匷嚲�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������嚵嚳壣å…巆巇廮廯忀å¿�懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱ç�‚瀸瀿瀺瀹ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›çŸŒçŸŽçŸ�çŸ�矲礥礣礧礨礤礩����������������������������������禲穮穬ç©ç«·ç±‰ç±ˆç±Šç±‡ç±…糮繻繾çº�纀羺翿è�¹è‡›è‡™èˆ‹è‰¨è‰©è˜¢è—¿è˜�è—¾è˜›è˜€è—¶è˜„è˜‰è˜…è˜Œè—½è ™è �è ‘è —è “è –è¥£è¥¦è¦¹è§·è èªè�è¨è£è¥è§è趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�Šé�¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"����������������������������������������������������������������é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌饋饓騲騴騱騬騪騶騩騮騸é¨é«‡é«Šé«†é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶�鶒鶘é¶�é¶›ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¶ é¶”é¶œé¶ªé¶—é¶¡é¶šé¶¢é¶¨é¶žé¶£é¶¿é¶©é¶–é¶¦é¶§éº™éº›éºšé»¥é»¤é»§é»¦é¼°é¼®é½›é½ é½žé½�齙龑儺儹劘劗囃嚽嚾åˆå‡å·‹å·�廱懽攛欂櫼欃櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�ç¤ç¤±ç¤¯ç±”籓糲纊纇纈纋纆çº�ç½�羻耰è‡�è˜˜è˜ªè˜¦è˜Ÿè˜£è˜œè˜™è˜§è˜®è˜¡è˜ è˜©è˜žè˜¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è ©è �è ›è è ¤è œè «è¡Šè¥è¥©è¥®è¥«è§ºè¹è¸è…èºè»è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�¼é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺����������������������������������騿é«�鬕鬗鬘鬖鬺é’é°«é°�鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱é¶é·Œé¶³é·�鶲鹺麜黫黮é»é¼›é¼˜é¼šé¼±é½Žé½¥é½¤é¾’亹囆囅囋奱å‹åŒå·•å·‘å»²æ”¡æ” æ”¦æ”¢æ¬‹æ¬ˆæ¬‰æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ç“•瓙瓗ç™çšç¤µç¦´ç©°ç©±ç±—籜籙籛籚�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������糴糱纑ç½�ç¾‡è‡žè‰«è˜´è˜µè˜³è˜¬è˜²è˜¶è ¬è ¨è ¦è ªè ¥è¥±è¦¿è¦¾è§»è¾è®„讂讆讅è¿è´•躕躔躚躒èº�èº–èº—è½ è½¢é…‡é‘Œé‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊����������������������������������驉驒é©�é«�鬙鬫鬻é–é•鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲å�å·˜è ¯å½�æˆ�戃戄攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�çŽƒç™°çŸ”ç±§ç±¦çº•è‰¬è˜ºè™€è˜¹è˜¼è˜±è˜»è˜¾è °è ²è ®è ³è¥¶è¥´è¥³è§¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕é‘�é‘—é‘žéŸ„éŸ…é €é©–é©™é¬žé¬Ÿé¬ é±’é±˜é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨é·é»‚é»�黲黳鼆鼜鼸鼷鼶齃é½�����������������������������������齱齰齮齯囓å›�åŽå±æ”æ›æ›®æ¬“ç�Ÿç�¡ç��ç� 爣瓛瓥矕礸禷禶籪纗羉è‰è™ƒè ¸è ·è µè¡‹è®”è®•èºžèºŸèº èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•é™é±£é±§é±¦é±¢é±žé± 鸂鷾鸇鸃鸆鸅鸀é¸�é¸‰é·¿é·½é¸„éº é¼žé½†é½´é½µé½¶å›”æ”®æ–¸æ¬˜æ¬™æ¬—æ¬šç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ç±«ç³¶çºšï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘鑯鑱鑳é�‰é¡²é¥Ÿé±¨é±®é±é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© 鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•鸗齈戇欞爧虌躨钂钀é’�驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªéº¤é½¾é½‰é¾˜ç¢�銹è£�墻æ�’粧嫺╔╦╗╠╬╣╚╩â•�╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║â•�����▓�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"����������������������������������������������������������������ï•�ï•�ï•�ï•�ï•�ï•žï•Ÿï• ï•¡ï•¢ï•£ï•¤ï•¥ï•¦ï•§ï•¨ï•©ï•ªï•«ï•¬ï•����������������������������������ï–�ï–�ï–Žï–�ï–�ï–�ï–žï–Ÿï– ï–¡ï–¢ï–£ï–¤ï–¥ï–¦ï–§ï–¨ï–©ï–ªï–«ï–¬ï–ï—�ï—�ï—Žï—�ï—��\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������ï—�ï—žï—Ÿï— ï—¡ï—¢ï—£ï—¤ï—¥ï—¦ï—§ï—¨ï—©ï—ªï—«ï—¬ï—ï˜�ï˜�ï˜�ï˜�����������������������������������ï˜�ï˜žï˜Ÿï˜ ï˜¡ï˜¢ï˜£ï˜¤ï˜¥ï˜¦ï˜§ï˜¨ï˜©ï˜ªï˜«ï˜¬ï˜ï˜®ï˜¯ï˜°ï˜±ï˜²ï˜³ï˜´ï˜µï˜¶ï˜·ï˜¸ï˜¹ï˜ºï˜»ï˜¼ï˜½ï˜¾ï˜¿ï™€ï™�ï™�ï™�ï™�ï™�ï™žï™Ÿï™ ï™¡ï™¢ï™£ï™¤ï™¥ï™¦ï™§ï™¨ï™©ï™ªï™«ï™¬ï™ï™®ï™¯ï™°ï™±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������ïš�ïš�ïš�ïš�ïš�ïšžïšŸïš ïš¡ïš¢ïš£ïš¤ïš¥ïš¦ïš§ïš¨ïš©ïšªïš«ïš¬ïšïš®ïš¯ïš°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ïš±ïš²ïš³ïš´ïšµïš¶ïš·ïš¸ïš¹ïšºïš»ïš¼ïš½ïš¾ïš¿ï›€ï›�ï›�ï›�ï›�ï›�ï›žï›Ÿï› ï›¡ï›¢ï›£ï›¤ï›¥ï›¦ï›§ï›¨ï›©ï›ªï›«ï›¬ï›ï›®ï›¯ï›°ï›±ï›²ï›³ï›´ï›µï›¶ï›·ï›¸ï›¹ï›ºï›»ï›¼ï›½ï›¾ï›¿ïœ€ïœ�ïœ��\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10003] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。·‥…¨〃Â―∥\∼‘’“â€�〔〕〈〉《》「ã€�『ã€�ã€�ã€‘Â±Ã—Ã·â‰ â‰¤â‰¥âˆžâˆ´Â°â€²â€³â„ƒâ„«ï¿ ï¿¡ï¿¥â™‚â™€âˆ âŠ¥âŒ’âˆ‚âˆ‡â‰¡â‰’Â§â€»â˜†â˜…â—‹â—�◎◇◆□■△▲▽▼→â†�↑↓↔〓≪≫√∽âˆ�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘Ë�˚˙¸˛¡¿Ë�∮∑âˆ�¤℉‰â—�◀▷▶♤♠♡♥♧♣⊙◈▣â—�◑▒▤▥▨▧▦▩♨â˜�☎☜☞¶†‡↕↗↙↖↘â™â™©â™ªâ™¬ã‰¿ãˆœâ„–ã�‡â„¢ã�‚ã�˜â„¡â‚¬Â®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#$%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¿¦ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀã…�ㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌã…�ã…Žã…�ã…�ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜã…�ã…žã…Ÿã… ã…¡ã…¢ã…£ã…¤ã…¥ã…¦ã…§ã…¨ã…©ã…ªã…«ã…¬ã…ㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀã†�ㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌã†�ㆎ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ï¿½ï¿½ï¿½ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂┒┑┚┙┖┕┎â”�┞┟┡┢┦┧┩┪â”┮┱┲┵┶┹┺┽┾╀â•�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘ã�„㎣㎤㎥㎦㎙㎚㎛㎜ãŽ�㎞㎟㎠㎡㎢ã�ŠãŽ�㎎ãŽ�ã��㎈㎉ã�ˆãŽ§ãŽ¨ãŽ°ãŽ±ãŽ²ãŽ³ãŽ´ãŽµãŽ¶ãŽ·ãŽ¸ãŽ¹ãŽ€ãŽ�㎂㎃㎄㎺㎻㎼㎽㎾㎿ãŽ�㎑㎒㎓㎔Ωã�€ã��㎊㎋㎌ã�–ã�…ãŽãŽ®ãŽ¯ã�›ãŽ©ãŽªãŽ«ãŽ¬ã��ã��ã�“ã�ƒã�‰ã�œã�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆÃ�ªĦ�IJ�ĿÅ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬ã‰ã‰®ã‰¯ã‰°ã‰±ã‰²ã‰³ã‰´ã‰µã‰¶ã‰·ã‰¸ã‰¹ã‰ºã‰»â“�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜâ“�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬â‘⑮½⅓⅔¼¾⅛⅜â…�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀ãˆ�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌ãˆ�㈎ãˆ�ãˆ�㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜â’�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬â’⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂¹²³â�´â�¿â‚�₂₃₄�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������가ê°�간갇갈갉갊ê°�갑값갓갔강갖갗같갚갛개ê°�ê° ê°¤ê°¬ê°ê°¯ê°°ê°±ê°¸ê°¹ê°¼ê±€ê±‹ê±�걔걘걜거걱건걷걸걺검ê²�것겄겅겆겉겊겋게ê²�겔겜ê²�ê²Ÿê² ê²¡ê²¨ê²©ê²ªê²¬ê²¯ê²°ê²¸ê²¹ê²»ê²¼ê²½ê³�ê³„ê³ˆê³Œê³•ê³—ê³ ê³¡ê³¤ê³§ê³¨ê³ªê³¬ê³¯ê³°ê³±ê³³ê³µê³¶ê³¼ê³½ê´€ê´„ê´†ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌ê´�ê´�ê´‘ê´˜ê´œê´ ê´©ê´¬ê´ê´´ê´µê´¸ê´¼êµ„굅굇굉êµ�굔굘굡굣구êµêµ°êµ³êµ´êµµêµ¶êµ»êµ¼êµ½êµ¿ê¶�궂궈궉권ê¶�ê¶œê¶�궤궷귀ê·�ê·„ê·ˆê·�ê·‘ê·“ê·œê· ê·¤ê·¸ê·¹ê·¼ê·¿ê¸€ê¸�금급긋ê¸�긔기긱긴긷길긺김ê¹�깃깅깆깊까ê¹�깎ê¹�깔깖깜ê¹�ê¹Ÿê¹ ê¹¡ê¹¥ê¹¨ê¹©ê¹¬ê¹°ê¹¸ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌ê»�ê»�ê»�껑께껙껜껨껫ê»ê»´ê»¸ê»¼ê¼‡ê¼ˆê¼�ê¼�꼬ê¼ê¼°ê¼²ê¼´ê¼¼ê¼½ê¼¿ê½�꽂꽃꽈꽉ê½�꽜ê½�꽤꽥꽹꾀꾄꾈ê¾�꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋ê¿�꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀ë€�뀄뀌ë€�뀔뀜ë€�뀨ë�„ë�…ë�ˆë�Šë�Œë�Žë�“ë�”ë�•ë�—ë�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë��ë�¼ë�½ë‚€ë‚„낌ë‚�ë‚�ë‚‘ë‚˜ë‚™ë‚šë‚œë‚Ÿë‚ ë‚¡ë‚¢ë‚¨ë‚©ë‚«ë‚¬ë‚낮낯낱낳내낵낸낼냄냅냇냈냉ëƒ�ëƒ‘ëƒ”ëƒ˜ëƒ ëƒ¥ë„ˆë„‰ë„‹ë„Œë„�넒넓넘넙넛넜ë„�넣네넥넨넬넴넵넷넸넹녀ë…�ë…„ë…ˆë…�ë…‘ë…”ë…•ë…˜ë…œë… ë…¸ë…¹ë…¼ë†€ë†‚ë†ˆë†‰ë†‹ë†�높놓놔놘놜놨뇌ë‡�뇔뇜ë‡��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë‡Ÿë‡¨ë‡©ë‡¬ë‡°ë‡¹ë‡»ë‡½ëˆ„ëˆ…ëˆˆëˆ‹ëˆŒëˆ”ëˆ•ëˆ—ëˆ™ëˆ ëˆ´ëˆ¼ë‰˜ë‰œë‰ ë‰¨ë‰©ë‰´ë‰µë‰¼ëŠ„ëŠ…ëŠ‰ëŠ�ëŠ‘ëŠ”ëŠ˜ëŠ™ëŠšëŠ ëŠ¡ëŠ£ëŠ¥ëŠ¦ëŠªëŠ¬ëŠ°ëŠ´ë‹ˆë‹‰ë‹Œë‹�닖님닙닛ë‹�닢다닥닦단닫달ë‹ë‹®ë‹¯ë‹³ë‹´ë‹µë‹·ë‹¸ë‹¹ë‹ºë‹»ë‹¿ëŒ€ëŒ�댄댈ëŒ�댑댓댔댕댜ë�”ë�•ë�–ë�˜ë�›ë�œë�žë�Ÿë�¤ë�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë�§ë�©ë�«ë�®ë�°ë�±ë�´ë�¸ëŽ€ëŽ�뎃뎄뎅뎌ëŽ�ëŽ”ëŽ ëŽ¡ëŽ¨ëŽ¬ë�„ë�…ë�ˆë�‹ë�Œë�Žë��ë�”ë�•ë�—ë�™ë�›ë��ë� ë�¤ë�¨ë�¼ë��ë�˜ë�œë� ë�¨ë�©ë�«ë�´ë‘�ë‘‘ë‘”ë‘˜ë‘ ë‘¡ë‘£ë‘¥ë‘¬ë’€ë’ˆë’�뒤뒨뒬뒵뒷뒹듀듄듈ë“�듕드ë“�ë“ ë“£ë“¤ë“¦ë“¬ë“듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀ë•�땃땄땅땋때ë•�ë•�땔땜ë•�ë•Ÿë• ë•¡ë– ë–¡ë–¤ë–¨ë–ªë–«ë–°ë–±ë–³ë–´ë–µë–»ë–¼ë–½ë—€ë—„ë—Œë—�ë—�ë—�뗑뗘뗬ë˜�똑똔똘똥똬똴뙈뙤뙨뚜ëš�ëš ëš¤ëš«ëš¬ëš±ë›”ë›°ë›´ë›¸ëœ€ëœ�뜅뜨뜩뜬뜯뜰뜸뜹뜻ë�„ë�ˆë�Œë�”ë�•ë� ë�¤ë�¨ë�°ë�±ë�³ë�µë�¼ë�½ëž€ëž„람ëž�ëž�ëž�랑랒랖랗�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ëž˜ëž™ëžœëž ëž¨ëž©ëž«ëž¬ëžëž´ëžµëž¸ëŸ‡ëŸ‰ëŸ¬ëŸëŸ°ëŸ´ëŸ¼ëŸ½ëŸ¿ë €ë �ë ‡ë ˆë ‰ë Œë �ë ˜ë ™ë ›ë �ë ¤ë ¥ë ¨ë ¬ë ´ë µë ·ë ¸ë ¹ë¡€ë¡„ë¡‘ë¡“ë¡œë¡�ë¡ ë¡¤ë¡¬ë¡ë¡¯ë¡±ë¡¸ë¡¼ë¢�뢨뢰뢴뢸룀ë£�룃룅료ë£�룔ë£�ë£Ÿë£¡ë£¨ë£©ë£¬ë£°ë£¸ë£¹ë£»ë£½ë¤„ë¤˜ë¤ ë¤¼ë¤½ë¥€ë¥„ë¥Œë¥�ë¥‘ë¥˜ë¥™ë¥œë¥ ë¥¨ë¥©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫ë¥ë¥´ë¥µë¥¸ë¥¼ë¦„릅릇릉릊ë¦�릎리ë¦ë¦°ë¦´ë¦¼ë¦½ë¦¿ë§�마막만많ë§�ë§�맑맒맘맙맛ë§�맞맡맣매맥맨맬맴맵맷맸맹맺먀ë¨�먈먕머먹먼멀멂멈멉멋ë©�멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄ë¬�ë¬�ë¬‘ë¬˜ë¬œë¬ ë¬©ë¬«ë¬´ë¬µë¬¶ë¬¸ë¬»ë¬¼ë¬½ë¬¾ë„ë…ë‡ë‰ë�ë�ë�ë”ë˜ë¡ë£ë¬ë®ˆë®Œë®�뮤뮨뮬뮴뮷므믄믈ë¯�믓미믹민믿밀밂밈밉밋밌ë°�ë°�밑바박밖밗반받발ë°�밞밟밤밥밧방ë°ë°°ë°±ë°´ë°¸ë±€ë±�뱃뱄뱅뱉뱌ë±�ë±�ë±�버벅번벋벌벎범법벗�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë²™ë²šë² ë²¡ë²¤ë²§ë²¨ë²°ë²±ë²³ë²´ë²µë²¼ë²½ë³€ë³„ë³�ë³�ë³�병볕볘볜보복볶본볼봄봅봇봉ë´�봔봤봬뵀뵈뵉뵌ëµ�뵘뵙뵤뵨부ë¶�분붇불붉붊ë¶�붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브ë¸�ë¸�블븜ë¸�ë¸Ÿë¹„ë¹…ë¹ˆë¹Œë¹Žë¹”ë¹•ë¹—ë¹™ë¹šë¹›ë¹ ë¹¡ë¹¤ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌ëº�ëº�ëº�뺑뺘뺙뺨ë»�ë»‘ë»”ë»—ë»˜ë» ë»£ë»¤ë»¥ë»¬ë¼�뼈뼉뼘뼙뼛뼜ë¼�ë½€ë½�뽄뽈ë½�뽑뽕뾔뾰뿅뿌ë¿�ë¿�뿔뿜뿟뿡쀼ì�‘ì�˜ì�œì� ì�¨ì�©ì‚�ì‚‘ì‚”ì‚˜ì‚ ì‚¡ì‚£ì‚¥ì‚¬ì‚삯산삳살삵삶삼삽삿샀ìƒ�샅새색샌ìƒ�샘샙샛샜ìƒ�샤�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈ì„�섕서ì„�ì„žì„Ÿì„ ì„£ì„¤ì„¦ì„§ì„¬ì„섯섰성섶세섹센셀셈셉셋셌ì…�셔셕션셜셤셥셧셨셩셰셴셸솅소ì†�솎ì†�솔솖솜ì†�ì†Ÿì†¡ì†¥ì†¨ì†©ì†¬ì†°ì†½ì‡„ì‡ˆì‡Œì‡”ì‡—ì‡˜ì‡ ì‡¤ì‡¨ì‡°ì‡±ì‡³ì‡¼ì‡½ìˆ€ìˆ„ìˆŒìˆ�ìˆ�ìˆ‘ìˆ˜ìˆ™ìˆœìˆŸìˆ ìˆ¨ìˆ©ìˆ«ìˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈ì‰�ì‰‘ì‰”ì‰˜ì‰ ì‰¥ì‰¬ì‰ì‰°ì‰´ì‰¼ì‰½ì‰¿ìŠ�슈슉ìŠ�슘슛ìŠ�스슥슨슬ìŠìŠ´ìŠµìŠ·ìŠ¹ì‹œì‹�ì‹ ì‹£ì‹¤ì‹«ì‹¬ì‹ì‹¯ì‹±ì‹¶ì‹¸ì‹¹ì‹»ì‹¼ìŒ€ìŒˆìŒ‰ìŒŒìŒ�쌓쌔쌕쌘쌜쌤쌥쌨쌩ì�…ì�¨ì�©ì�¬ì�°ì�²ì�¸ì�¹ì�¼ì�½ìŽ„ìŽˆìŽŒì�€ì�˜ì�™ì�œì�Ÿì� ì�¢ì�¨ì�©ì�ì�´ì�µì�¸ì�ˆì��ì�¤ì�¬ì�°ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì�´ì�¼ì�½ì‘ˆì‘¤ì‘¥ì‘¨ì‘¬ì‘´ì‘µì‘¹ì’€ì’”쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀ì”�씌ì”�씔씜씨씩씬씰씸씹씻씽아악안앉않알ì•�앎앓암압앗았앙ì•�ì•žì• ì•¡ì•¤ì•¨ì•°ì•±ì•³ì•´ì•µì•¼ì•½ì–€ì–„ì–‡ì–Œì–�ì–�ì–‘ì–•ì–—ì–˜ì–œì– ì–©ì–´ì–µì–¸ì–¹ì–»ì–¼ì–½ì–¾ì—„ì—…ì—†ì—‡ì—ˆì—‰ì—Šì—Œì—Žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì—�ì—‘ì—”ì—˜ì— ì—¡ì—£ì—¥ì—¬ì—엮연열엶엷염엽엾엿였ì˜�옅옆옇예옌ì˜�옘옙옛옜오옥온올ì˜ì˜®ì˜°ì˜³ì˜´ì˜µì˜·ì˜¹ì˜»ì™€ì™�완왈ì™�왑왓왔왕왜ì™�ì™ ì™¬ì™¯ì™±ì™¸ì™¹ì™¼ìš€ìšˆìš‰ìš‹ìš�요욕욘욜욤욥욧용우욱운울욹욺움ì›�웃웅워ì›�ì›�월웜ì›�ì› ì›¡ì›¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì›©ì›¬ì›°ì›¸ì›¹ì›½ìœ„ìœ…ìœˆìœŒìœ”ìœ•ìœ—ìœ™ìœ ìœ¡ìœ¤ìœ¨ìœ°ìœ±ìœ³ìœµìœ·ìœ¼ìœ½ì�€ì�„ì�Šì�Œì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�œì� ì�¨ì�«ì�´ì�µì�¸ì�¼ì�½ì�¾ìžƒìž„입잇있잉잊잎ìž�ìž‘ìž”ìž–ìž—ìž˜ìžšìž ìž¡ìž£ìž¤ìž¥ìž¦ìž¬ìžìž°ìž´ìž¼ìž½ìž¿ìŸ€ìŸ�쟈쟉쟌쟎ìŸ�쟘ìŸ�ìŸ¤ìŸ¨ìŸ¬ì €ì �ì „ì ˆì Šï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì �ì ‘ì “ì •ì –ì œì �ì ì ¤ì ¬ì ì ¯ì ±ì ¸ì ¼ì¡€ì¡ˆì¡‰ì¡Œì¡�졔조족존졸졺좀ì¢�좃종좆좇좋좌ì¢�좔ì¢�ì¢Ÿì¢¡ì¢¨ì¢¼ì¢½ì£„ì£ˆì£Œì£”ì£•ì£—ì£™ì£ ì£¡ì£¤ì£µì£¼ì£½ì¤€ì¤„ì¤…ì¤†ì¤Œì¤�ì¤�중줘줬줴ì¥�ì¥‘ì¥”ì¥˜ì¥ ì¥¡ì¥£ì¥¬ì¥°ì¥´ì¥¼ì¦ˆì¦‰ì¦Œì¦�즘즙즛ì¦�ì§€ì§�진짇질짊ì§�집짓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜ì§�ì§ ì§¢ì§¤ì§§ì§¬ì§ì§¯ì§°ì§±ì§¸ì§¹ì§¼ì¨€ì¨ˆì¨‰ì¨‹ì¨Œì¨�쨔쨘쨩쩌ì©�ì©�쩔쩜ì©�ì©Ÿì© ì©¡ì©¨ì©½ìª„ìª˜ìª¼ìª½ì«€ì«„ì«Œì«�ì«�ì«‘ì«“ì«˜ì«™ì« ì«¬ì«´ì¬ˆì¬�ì¬”ì¬˜ì¬ ì¬¡ì�ìˆì‰ìŒì�ì˜ì™ì�ì¤ì¸ì¹ì®œì®¸ì¯”쯤쯧쯩찌ì°�ì°�찔찜ì°�찡찢찧차착찬찮찰참찹찻�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì°¼ì°½ì°¾ì±„ì±…ì±ˆì±Œì±”ì±•ì±—ì±˜ì±™ì± ì±¤ì±¦ì±¨ì±°ì±µì²˜ì²™ì²œì² ì²¨ì²©ì²«ì²¬ì²ì²´ì²µì²¸ì²¼ì³„쳅쳇쳉ì³�쳔쳤쳬쳰ì´�초촉촌ì´�촘촙촛ì´�ì´¤ì´¨ì´¬ì´¹ìµœìµ ìµ¤ìµ¬ìµìµ¯ìµ±ìµ¸ì¶ˆì¶”축춘출춤춥춧충춰췄췌ì·�ì·¨ì·¬ì·°ì·¸ì·¹ì·»ì·½ì¸„ì¸ˆì¸Œì¸”ì¸™ì¸ ì¸¡ì¸¤ì¸¨ì¸°ì¸±ì¸³ì¸µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¹˜ì¹™ì¹œì¹Ÿì¹ ì¹¡ì¹¨ì¹©ì¹«ì¹ì¹´ì¹µì¹¸ì¹¼ìº„캅캇캉ìº�ìº‘ìº”ìº˜ìº ìº¡ìº£ìº¤ìº¥ìº¬ìºì»�커컥컨컫컬컴컵컷컸컹케ì¼�켄켈ì¼�ì¼‘ì¼“ì¼•ì¼œì¼ ì¼¤ì¼¬ì¼ì¼¯ì¼°ì¼±ì¼¸ì½”ì½•ì½˜ì½œì½¤ì½¥ì½§ì½©ì½°ì½±ì½´ì½¸ì¾€ì¾…ì¾Œì¾¡ì¾¨ì¾°ì¿„ì¿ ì¿¡ì¿¤ì¿¨ì¿°ì¿±ì¿³ì¿µì¿¼í€€í€„í€‘í€˜í€í€´í€µí€¸í€¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�„í�…í�‡í�‰í��í�”í�˜í� í�¬í�í�°í�´í�¼í�½í‚�키킥킨킬킴킵킷킹타íƒ�탄탈탉íƒ�탑탓탔탕태íƒ�íƒ íƒ¤íƒ¬íƒíƒ¯íƒ°íƒ±íƒ¸í„�터턱턴털턺텀í…�텃텄텅테í…�í…�텔템í…�í…Ÿí…¡í…¨í…¬í…¼í†„í†ˆí† í†¡í†¤í†¨í†°í†±í†³í†µí†ºí†¼í‡€í‡˜í‡´í‡¸íˆ‡íˆ‰íˆ�투íˆíˆ°íˆ´íˆ¼íˆ½íˆ¿í‰�퉈퉜�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀íŠ�튄튈íŠ�íŠ‘íŠ•íŠœíŠ íŠ¤íŠ¬íŠ±íŠ¸íŠ¹íŠ¼íŠ¿í‹€í‹‚í‹ˆí‹‰í‹‹í‹”í‹˜í‹œí‹¤í‹¥í‹°í‹±í‹´í‹¸íŒ€íŒ�팃팅파íŒ�팎íŒ�팔팖팜íŒ�íŒŸíŒ íŒ¡íŒ¥íŒ¨íŒ©íŒ¬íŒ°íŒ¸íŒ¹íŒ»íŒ¼íŒ½í�„í�…í�¼í�½íŽ€íŽ„íŽŒíŽ�íŽ�íŽ�íŽ‘íŽ˜íŽ™íŽœíŽ íŽ¨íŽ©íŽ«íŽíŽ´íŽ¸íŽ¼í�„í�…í�ˆí�‰í��í�˜í�¡í�£í�¬í�í�°í�´í�¼í�½í�¿í���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�ˆí��í‘€í‘„í‘œí‘ í‘¤í‘푯푸푹푼푿풀풂품풉풋í’�풔풩퓌í“�퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌í•�í•�í•‘í•˜í•™í•œí• í•¥í•¨í•©í•«í•해핵핸핼햄햅햇했행í–�향허헉헌í—�헒험헙헛í—�헤헥헨헬헴헵헷헹혀í˜�현혈í˜�í˜‘í˜“í˜”í˜•í˜œí˜ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤í˜í˜¸í˜¹í˜¼í™€í™…홈홉홋í™�홑화확환활홧황홰홱홴횃횅회íš�íš�íš”íš�íšŸíš¡íš¨íš¬íš°íš¹íš»í›„í›…í›ˆí›Œí›‘í›”í›—í›™í› í›¤í›¨í›°í›µí›¼í›½íœ€íœ„íœ‘íœ˜íœ™íœœíœ íœ¨íœ©íœ«íœíœ´íœµíœ¸íœ¼í�„í�‡í�‰í��í�‘í�”í�–í�—í�˜í�™í� í�¡í�£í�¥í�©í�¬í�°í�´í�¼í�½íž�히힉힌íž�힘힙힛íž��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳å�‡åƒ¹åŠ å�¯å‘µå“¥å˜‰å«�家暇架枷柯æŒç�‚痂稼苛茄街袈訶賈è·�軻迦駕刻å�´å�„æ�ªæ…¤æ®¼ç��脚覺角閣侃刊墾奸姦干幹懇æ�€æ�†æŸ¬æ¡¿æ¾—癎看磵稈竿簡è‚�艮艱諫間乫å–�曷渴碣ç«è‘›è¤�è�Žéž¨å‹˜å�Žå ªåµŒæ„Ÿæ†¾æˆ¡æ•¢æŸ‘橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åŒ£å²¬ç”²èƒ›é‰€é–˜å‰›å ˆå§œå²¡å´—åº·å¼ºå½Šæ…·æ±Ÿç•ºç–†ç³ çµ³ç¶±ç¾Œè…”èˆ¡è–‘è¥�講鋼é™�鱇介价個凱å¡�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客å�‘ï¤�粳羹醵倨去居巨拒æ�®æ“šæ“§æ¸ ç‚¬ç¥›è·�踞車é�½é‰…鋸乾件å�¥å·¾å»ºæ„†æ¥—腱虔蹇é�µé¨«ä¹žå‚‘æ�°æ¡€å„‰åŠ�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼éˆ�黔劫怯迲å�ˆæ†©æ�æ“Šæ ¼æª„æ¿€è†ˆè¦¡éš”å …ç‰½çŠ¬ç”„çµ¹ç¹è‚©è¦‹è´é�£éµ‘抉決潔çµ�缺訣兼慊ç®�謙鉗鎌京俓倞傾儆å‹�å‹�å�¿å�°å¢ƒåºšå¾‘慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖è¦è¼•逕é�¡é ƒé ¸é©šé¯¨ä¿‚å•“å ºå¥‘å£å±†æ‚¸æˆ’桂械�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄å�¤å�©å‘Šå‘±å›ºå§‘å¤å°»åº«æ‹·æ”·æ•…æ•²æš æž¯æ§�沽痼çš�ç�¾ç¨¿ç¾”考股è†�苦苽è�°è—�è ±è¢´èª¥ï¤ƒè¾œéŒ®é›‡é¡§é«˜é¼“å“æ–›æ›²æ¢�ç©€è°·éµ å›°å�¤å´‘昆梱æ£�滾ç�¨è¢žé¯¤æ±¨ï¤„骨供公共功å”å·¥æ��æ�拱控攻ç�™ç©ºèš£è²¢éž�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科è�“誇課跨é�Žé�‹é¡†å»“槨藿éƒï¤…å† å®˜å¯¬æ…£æ£ºæ¬¾ç�Œç�¯ç“˜ç®¡ç½�è�…觀貫關館刮æ��æ‹¬é€‚ä¾Šå…‰åŒ¡å£™å»£æ› æ´¸ç‚šç‹‚ç�–ç�胱鑛å�¦æŽ›ç½«ä¹–傀塊壞怪愧æ‹�æ§�é�å®�ç´˜è‚±è½Ÿäº¤åƒ‘å’¬å–¬å¬Œå¶ å·§æ”ªæ•Žæ ¡æ©‹ç‹¡çšŽçŸ¯çµžç¿¹è† è•Žè›Ÿè¼ƒè½ŽéƒŠé¤ƒé©•é®«ä¸˜ä¹…ä¹�仇俱具勾�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�€å�£å�¥å’Žå˜”å�µåž¢å¯‡å¶‡å»�懼拘救枸柩構æ�毆毬求æº�ç�¸ç‹—玖ç�ƒçž¿çŸ©ç©¶çµ¿è€‰è‡¼èˆ…舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局è�Šéž 鞫麴å�›çª˜ç¾¤è£™è»�éƒ¡å €å±ˆæŽ˜çªŸå®®å¼“ç©¹çª®èŠŽèº¬å€¦åˆ¸å‹¸å�·åœˆæ‹³æ�²æ¬Šæ·ƒçœ·åŽ¥ç�—蕨蹶闕机櫃潰è©è»Œé¥‹ï¤†æ™·æ¸è²´ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜å�«åœå¥Žæ�†æ§»ç�ªç¡…窺竅糾葵è¦�赳逵閨勻å�‡ç•‡ç è�Œéˆžï¤ˆæ©˜å…‹å‰‹åŠ‡æˆŸæ£˜æ¥µéš™åƒ…åŠ¤å‹¤æ‡ƒæ–¤æ ¹æ§¿ç‘¾ç‹èйè�«è¦²è¬¹è¿‘饉契今妗擒昑檎ç�´ç¦�禽芩衾衿襟金錦伋å�Šæ€¥æ‰±æ±²ç´šçµ¦äº˜å…¢çŸœè‚¯ä¼�伎其冀嗜器圻基埼夔奇妓寄å²�崎己幾忌技旗旣�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期æ�žæ£‹æ£„機欺氣汽沂淇玘ç�¦ç�ªç’‚璣畸畿ç¢�磯ç¥�祇祈祺箕紀綺羈耆è€è‚Œè¨˜è�豈起錡錤飢饑騎é¨�驥麒緊佶å�‰æ‹®æ¡”金喫儺喇奈娜懦ï¤�æ‹�拿癩ï¤�ï¤�螺裸邏那樂洛烙珞落諾酪駱亂卵暖ï¤�ç…–ï¤žï¤Ÿé›£ï¤ æ��æ�ºå�—嵐æž�æ¥ æ¹³ï¤¢ç”·ï¤£ï¤¤ï¤¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç´�臘蠟衲囊娘廊朗浪狼郎乃ï¤å…§å¥ˆæŸ°è€�冷女年撚秊念æ�¬æ‹ˆæ�»å¯§å¯—努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿ï¥�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓ï¥�漏ï¥�ï¥�陋嫩訥æ�»ç´�勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段æ¹�çŸç«¯ç°žç·žè›‹è¢’鄲é�›æ’»æ¾¾ç�ºç–¸é�”å•–å��æ†ºæ“”æ›‡æ·¡æ¹›æ½æ¾¹ç—°è�ƒè†½è•�覃談èšéŒŸæ²“ç•“ç”è¸�é��å”�å ‚å¡˜å¹¢æˆ‡æ’žæ£ ç•¶ç³–èž³é»¨ä»£åžˆå�®å¤§å°�å²±å¸¶å¾…æˆ´æ“¡çŽ³è‡ºè¢‹è²¸éšŠé»›å®…å¾·æ‚³å€’åˆ€åˆ°åœ–å µå¡—å°Žå± å³¶å¶‹åº¦å¾’æ‚¼æŒ‘æŽ‰æ�—桃�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜ç�¹ç¦±ç¨»è�„覩è³è·³è¹ˆé€ƒé€”é�“都é��陶韜毒瀆牘犢ç�¨ç�£ç¦¿ç¯¤çº›è®€å¢©æƒ‡æ•¦æ—½æš¾æ²Œç„žç‡‰è±šé “ä¹çª�ä»�冬å‡�å‹•å�Œæ†§æ�±æ¡�棟洞潼疼瞳童胴董銅兜斗æ�œæž“痘竇è�³ï¥šè±†é€—é 屯臀芚é��é�¯éˆ�å¾—å¶�橙燈登ç‰è—¤è¬„鄧騰喇懶拏癩羅�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸é‚�樂洛烙ç�žçµ¡è�½ï¥�酪駱丹亂å�µæ¬„欒瀾爛è˜é¸žå‰Œè¾£åµ�擥攬欖濫籃纜è—�è¥¤è¦½æ‹‰è‡˜è Ÿå»Šæœ—æµªç‹¼ç�…瑯螂郞來å´�å¾ è�Šå†·æŽ 略亮倆兩凉æ¢�樑粮粱糧良諒輛é‡�ä¾¶å„·å‹µå‘‚å»¬æ…®æˆ¾æ—…æ«šæ¿¾ç¤ªè—œè £é–驢驪麗黎力曆æ·ç€�礫轢é�‚æ†�戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練è�¯è“®è¼¦é€£é�Šå†½åˆ—劣洌烈裂廉斂殮濂簾ç�µä»¤ä¼¶å›¹ï¥Ÿå²ºå¶ºæ€œç޲ç¬ç¾šç¿Žè�†é€žéˆ´é›¶é�ˆé ˜é½¡ä¾‹æ¾§ç¦®é†´éš·å‹žï¥ 撈擄櫓潞瀘çˆ�ç›§è€�蘆虜路輅露é¯é·ºé¹µç¢Œç¥¿ç¶ è�‰éŒ„鹿麓論壟弄朧瀧ç“�ç± è�¾å„¡ç€¨ç‰¢ç£Šè³‚賚賴雷了僚寮廖料燎療çžè�Šè“¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¼é¬§é¾�壘å©�屢樓淚æ¼�瘻累縷蔞褸é�¤é™‹åŠ‰æ—’æŸ³æ¦´æµ�溜ç€�ç�‰ç‘ ç•™ç˜¤ç¡«è¬¬é¡žå…æˆ®é™¸ä¾–å€«å´™æ·ªç¶¸è¼ªå¾‹æ…„æ —ï¥¡éš†å‹’è‚‹å‡œå‡Œæ¥žç¨œç¶¾è�±é™µä¿šåˆ©åŽ˜å��唎履悧æ�Žæ¢¨æµ¬çŠ�狸ç�†ç’ƒï¥¢ç—¢ç±¬ç½¹ç¾¸èމè£�裡里é‡�離鯉å��æ½¾ç‡�璘藺躪隣鱗麟林淋ç�³è‡¨éœ–ç ¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç«‹ç¬ ç²’æ‘©ç‘ªç—²ç¢¼ç£¨é¦¬é”éº»å¯žå¹•æ¼ è†œèŽ«é‚ˆä¸‡å��娩巒彎慢挽晩曼滿漫ç�£çžžè�¬è”“è »è¼“é¥…é°»å”œæŠ¹æœ«æ²«èŒ‰è¥ªé�ºäº¡å¦„忘忙望網罔芒茫莽輞邙埋妹媒å¯�昧枚梅æ¯�煤罵買賣é‚�é…è„ˆè²Šé™Œé©€éº¥åŸæ°“猛盲盟è�Œå†ªè¦“å…�å†•å‹‰æ£‰æ²”çœ„çœ ç¶¿ç·¬é�¢éºµæ»…�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥å��命明æš�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮æŸ�模æ¯�毛牟牡ç‘�眸矛耗芼茅謀謨貌木æ²�牧目ç�¦ç©†é¶©æ¿æ²’夢朦蒙å�¯å¢“妙廟æ��昴æ�³æ¸ºçŒ«ç«—è‹—éŒ¨å‹™å·«æ†®æ‡‹æˆŠæ‹‡æ’«æ— æ¥™æ¦æ¯‹ç„¡ç�·ç•�繆舞茂蕪誣貿霧鵡墨默們刎å�»å•�文�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋è�žèšŠé–€é›¯å‹¿æ²•物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷é�¡é»´å²·æ‚¶æ„�憫æ•�旻旼民泯玟ç�‰ç·¡é–”密蜜è¬�å‰�å�šæ‹�æ��撲朴樸泊ç�€ç’žç®”粕縛膊舶薄迫雹é§�ä¼´å�Šå��å�›æ‹Œæ�¬æ”€æ–‘槃泮潘ç�畔瘢盤盼ç£�ç£»ç¤¬çµ†èˆ¬èŸ è¿”é ’é£¯å‹ƒæ‹”æ’¥æ¸¤æ½‘ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮éƒå€£å‚�å�Šå¦¨å°¨å¹‡å½·æˆ¿æ”¾æ–¹æ—�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防é¾�å€�俳北培徘拜排æ�¯æ¹ƒç„™ç›ƒèƒŒèƒšè£´è£µè¤™è³ 輩é…�陪伯佰帛æŸ�æ ¢ç™½ç™¾é„幡樊煩燔番磻ç¹�蕃藩飜ä¼�ç�罰閥凡帆梵氾汎泛犯範范法ç�ºåƒ»åŠˆå£�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便å�žå¼�變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳ç”�病秉ç«�è¼§é¤ é¨ˆä¿�å ¡å ±å¯¶æ™®æ¥æ´‘湺潽ç�¤ç”«è�©è£œè¤“èœè¼”ä¼�僕åŒ�å�œå®“復æœ�ç¦�腹茯蔔複覆輹輻馥鰒本乶俸奉å°�峯峰æ�§æ£’烽熢ç�«ç¸«è“¬èœ‚逢鋒鳳ä¸�付俯傅剖副å�¦å’�åŸ å¤«å©¦ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������åšåµå¯Œåºœï¥¦æ‰¶æ•·æ–§æµ®æº¥çˆ¶ç¬¦ç°¿ç¼¶è…�è…‘è†šè‰€èŠ™èŽ©è¨ƒè² è³¦è³»èµ´è¶ºéƒ¨é‡œé˜œé™„é§™é³§åŒ—åˆ†å�©å™´å¢³å¥”奮忿憤扮æ˜�汾焚盆粉糞紛芬è³�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪å�‘妃婢庇悲憊扉批æ–�枇榧比毖毗毘沸泌ç�µç—ºç ’碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂è�²èœšè£¨èª¹è¬è²»é„™é�žé£›é¼»åš¬å¬ªå½¬æ–Œæª³æ®¯æµœæ¿±ç€•ç‰�çŽè²§è³“é »æ†‘æ°·è�˜é¨�ä¹�事些仕伺似使俟僿å�²å�¸å”†å—£å››å£«å¥¢å¨‘寫寺射巳師徙æ€�æ�¨æ–œæ–¯æŸ¶æŸ»æ¢æ»æ²™æ³—渣瀉ç�…ç ‚ç¤¾ç¥€ç¥ ç§�篩紗絲肆èˆ�莎蓑蛇裟è©�詞è¬�賜赦è¾é‚ªé£¼é§Ÿéº�削數朔索�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕ç�Šç”£ç–�算蒜酸霰乷撒殺煞薩三參æ�‰æ£®æ¸—芟蔘衫æ�·æ¾�鈒颯上傷åƒ�償商喪嘗å€å°™å³ å¸¸åºŠåº å»‚æƒ³æ¡‘æ©¡æ¹˜çˆ½ç‰€ç‹€ç›¸ç¥¥ç®±ç¿”è£³è§´è©³è±¡è³žéœœå¡žç’½è³½å—‡ï¥¬ç©¡ç´¢è‰²ç‰²ç”Ÿç”¥ï¥ç¬™å¢…壻嶼åº�庶å¾�æ�•抒æ�¿æ•�æš‘æ›™æ›¸æ –æ£²çŠ€ç‘žç®çµ®ç·–署�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓é€�鋤é»�é¼ å¤•å¥å¸æƒœæ˜”晳æž�æ±�淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽ç��瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣é�¸éŠ‘é�¥é¥�é®®å�¨å±‘楔泄洩渫舌薛褻è¨èªªé›ªé½§å‰¡æš¹æ®²çº–蟾è´�é–ƒé™�æ”�涉燮葉城姓宬性惺æˆ�星晟猩ç�¹ç››çœ�ç¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�–è�²è…¥èª é†’ä¸–å‹¢æ²æ´—稅笹細說貰å�¬å˜¯å¡‘宵å°�少巢所掃æ�”æ˜æ¢³æ²¼æ¶ˆæº¯ç€Ÿç‚¤ç‡’甦ç–�ç–Žç˜™ç¬‘ç¯ ç°«ç´ ç´¹è”¬è•蘇訴é€�é�¡é‚µéŠ·éŸ¶é¨·ä¿—å±¬æ�Ÿæ¶‘粟續謖贖速å«å·½æ��è“€é�œé£¡çŽ‡å®‹æ‚šæ�¾æ·žè¨Ÿèª¦é€�é Œåˆ·ï¥°ç�‘碎鎖衰釗修å�—嗽囚垂壽嫂守岫峀帥æ„��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æˆ�手授æ�œæ”¶æ•¸æ¨¹æ®Šæ°´æ´™æ¼±ç‡§ç‹©ç�¸ç�‡ç’²ç˜¦ç�¡ç§€ç©—竪粹ç¶�綬繡羞脩茱è’�蓚藪袖誰è®�輸é�‚é‚ƒé…¬éŠ–éŠ¹éš‹éš§éš¨é›–éœ€é ˆé¦–é«“é¬šå�”塾夙å°å®¿æ·‘潚熟ç�¡ç’¹è‚…è�½å·¡å¾‡å¾ªæ�‚æ—¬æ ’æ¥¯æ©“æ®‰æ´µæ·³ç�£ç›¾çž¬ç�純脣舜è�€è“´è•£è©¢è«„é†‡éŒžé †é¦´æˆŒè¡“è¿°é‰¥å´‡å´§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟è†�è�¨æ¿•拾習褶襲丞乘僧å‹�å�‡æ‰¿æ˜‡ç¹©è …陞ä¾�匙嘶始媤尸屎å±�市弑æ�ƒæ–½æ˜¯æ™‚枾柴猜矢示翅蒔è“�視試詩諡豕豺埴寔å¼�æ�¯æ‹æ¤�殖湜熄篒è�•è˜è»¾é£Ÿé£¾ä¼¸ä¾�ä¿¡å‘»å¨ å®¸æ„¼æ–°æ™¨ç‡¼ç”³ç¥žç´³è…Žè‡£èŽ˜è–ªè—Žèœƒè¨Šèº«è¾›ï¥±è¿…å¤±å®¤å¯¦æ‚‰å¯©å°‹å¿ƒæ²��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什å��拾雙æ°�亞俄兒啞娥峨我牙芽莪蛾衙è¨�阿雅餓鴉éµ�å Šå²³å¶½å¹„æƒ¡æ„•æ�¡æ¨‚渥鄂é�”顎é°�齷安岸按æ™�案眼é›�éž�顔鮟斡è¬�軋閼唵岩巖庵暗癌è�´é—‡å£“押狎鴨仰央æ€�昻殃秧鴦厓哀埃崖愛曖涯ç¢�艾隘é�„厄扼掖液縊腋é¡��\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹æ�¶æ¤°çˆºè€¶ï¥´é‡Žå¼±ï¥µï¥¶ç´„若葯蒻藥èº�ï¥·ä½¯ï¥¸ï¥¹å£¤åƒæ�™æ�šæ”˜æ•æš˜ï¥ºæ¥Šæ¨£æ´‹ç€�煬痒ç˜�禳穰糧羊良襄諒讓釀陽量養圄御於æ¼�瘀禦語é¦éšé½¬å„„憶抑æª�臆å�ƒå °å½¦ç„‰è¨€è«ºå¼è˜–俺儼嚴奄掩淹嶪æ¥å††äºˆä½™ï¥¿ï¦€ï¦�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¦ƒæŸæ±�濾璵礖礪與艅茹輿è½�閭餘驪麗黎亦力域役易曆歷疫繹è¯ï¦�é€†é©›åš¥å §å§¸å¨Ÿå®´ï¦Žå»¶ï¦�ï¦�æ��挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉ç¡�硯秊çµç·£ï¦–縯聯è¡�軟輦蓮連鉛鍊鳶列ï¦�ï¦žæ‚…æ¶…ï¦Ÿç†±ï¦ ï¦¡é–±åŽï¦¢ï¦£ï¦¤æŸ“殮炎焰ç�°è‰¶è‹’�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵ç‡�è‘‰ï¦¨ï¦©å¡‹ï¦ªï¦«å¶¸å½±ï¦¬æ˜ æšŽæ¥¹æ¦®æ°¸æ³³æ¸¶æ½�濚瀛瀯ç…�營ç�°ï¦ç‘›ï¦®ç“”ç›ˆç©Žçº“ï¦¯ï¦°è‹±è© è¿Žï¦±é�ˆï¦²éœ™ï¦³ï¦´ä¹‚倪例刈å�¡æ›³æ±æ¿ŠçŒŠç�¿ç©¢èŠ®è—�蘂禮裔詣è½è±«ï¦·éŠ³ï¦¸éœ“é �五ä¼�俉傲å�ˆå�¾å�³å—šå¡¢å¢ºå¥§å¨›å¯¤æ‚Ÿï¦¹æ‡Šæ•–旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çƒ�熬ç�’ç½èœˆèª¤é°²é¼‡å±‹æ²ƒç�„玉鈺溫瑥瘟穩縕蘊兀壅æ“�瓮甕癰ç¿�é‚•é›�饔渦瓦窩窪臥蛙è�¸è¨›å©‰å®Œå®›æ¢¡æ¤€æµ£çŽ©ç�“ç�¬ç¢—ç·©ç¿«è„˜è…•èŽžè±Œé˜®é ‘æ›°å¾€æ—ºæž‰æ±ªçŽ‹å€å¨ƒæªçŸ®å¤–嵬å·�猥ç•�ï¦ºï¦»åƒ¥å‡¹å ¯å¤å¦–姚寥寮尿嶢拗æ�–撓擾料曜樂橈燎燿瑤ï§��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯è¦�è¬ é�™ï§ƒé‚€é¥’慾欲浴縟褥辱俑å‚冗勇埇墉容庸慂榕涌湧溶熔瑢用甬è�³èŒ¸è“‰è¸ŠéŽ”é�žï§„于佑å�¶å„ªå�ˆå�‹å�³å®‡å¯“尤愚憂旴牛玗瑀盂ç¥�禑禹紆羽芋藕虞迂é�‡éƒµé‡ªéš…é›¨é›©å‹–å½§æ—æ˜±æ ¯ç…œç¨¶éƒ�é Šäº‘ï§…æ©’æ®žæ¾�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�‹éš•雲韻蔚鬱äº�熊雄元原員圓園垣媛嫄寃怨愿æ�´æ²…洹湲æº�爰猿瑗苑è¢�è½…é� 阮院願鴛月越鉞ä½�å�‰åƒžå�±åœ�å§”å¨�尉慰æš�æ¸çˆ²ç‘‹ç·¯èƒƒè�Žè‘¦è”¿è�Ÿè¡›è¤˜è¬‚é�•韋é�乳侑儒兪劉唯喩åºå®¥å¹¼å¹½åº¾æ‚ 惟愈愉æ�„攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由ï§�ç™’ï§Žï§�ç¶è‡¾è�¸è£•誘諛è«è¸°è¹‚é�Šé€¾é�ºé…‰é‡‰é�®ï§�ï§‘å ‰ï§’æ¯“è‚‰è‚²ï§“ï§”å…�奫尹崙淪潤玧胤贇輪鈗é–�律慄栗率è�¿æˆŽç€œçµ¨èž�ï§œåž æ�©æ…‡æ®·èª¾éŠ€éš±ä¹™å�Ÿæ·«è”陰音飮æ�–泣邑å‡�應膺鷹ä¾�倚儀宜æ„�懿擬椅毅疑矣義艤è–�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è°é†«äºŒä»¥ä¼Šï§�ï§žå¤·å§¨ï§Ÿå·²å¼›å½›æ€¡ï§ ï§¡ï§¢ï§£çˆ¾ç�¥ï§¤ç•°ç—�痢移罹而耳肄苡è�‘裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人ä»�刃å�°ï§å’½å› 姻寅引å¿�湮燐璘絪茵藺蚓èª�ï§±é�é�·ï§²ï§³ä¸€ä½šä½¾å£¹æ—¥æº¢é€¸éŽ°é¦¹ä»»å£¬å¦Šå§™æ��林淋稔臨è��賃入å�„�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒ä»�剩å•芿仔刺咨姉姿å�å—åœæ�£æ…ˆæ»‹ç‚™ç…®çŽ†ç“·ç–µç£�紫者自茨蔗藉諮資雌作勺嚼斫昨ç�¼ç‚¸çˆµç¶½èŠ�é…Œé›€éµ²å±æ£§æ®˜æ½ºç›žå²‘æš«æ½›ç®´ç°ªè ¶é›œä¸ˆä»—åŒ å ´å¢»å£¯å¥¬å°‡å¸³åº„å¼µæŽŒæš²æ�–樟檣欌漿牆狀ç��ç’‹ç« ç²§è…¸è‡Ÿè‡§èŽŠè‘¬è”£è–”è—�è£�贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障å†�哉在宰æ‰�æ��æ ½æ¢“æ¸½æ»“ç�½ç¸¡è£�財載齋齎çˆç®�è«�錚佇低儲咀å§�底抵æ�µæ¥®æ¨—沮渚狙猪疽箸紵苧è�¹è‘—藷詛貯躇這邸雎齟勣å�Šå«¡å¯‚摘敵滴狄炙的ç©�笛ç±�績翟è�»è¬«è³Šèµ¤è·¡è¹Ÿè¿ªè¿¹é�©é�‘佃佺傳全典å‰�å‰ªå¡¡å¡¼å¥ å°ˆå±•å»›æ‚›æˆ°æ “æ®¿æ°ˆæ¾±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎ç� 田甸畑癲çŒç®‹ç®ç¯†çº�詮輾轉鈿銓錢é�«é›»é¡šé¡«é¤žåˆ‡æˆªæŠ˜æµ™ç™¤ç«Šç¯€çµ¶å� 岾店漸点粘霑鮎點接摺è�¶ä¸�井äºå�œå�µå‘ˆå§ƒå®šå¹€åºå»·å¾�æƒ…æŒºæ”¿æ•´æ—Œæ™¶æ™¸æŸ¾æ¥¨æª‰æ£æ±€æ·€æ·¨æ¸Ÿæ¹žç€žç‚¡çŽŽç�½ç”ºç�›ç¢‡ç¦Žç¨‹ç©½ç²¾ç¶Žè‰‡è¨‚諪貞é„é…Šé‡˜é‰¦é‹ŒéŒ éœ†é�–�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�œé ‚é¼Žåˆ¶åŠ‘å•¼å ¤å¸�弟悌æ��梯濟ç¥ç¬¬è‡�薺製諸蹄é†�除際霽題齊俎兆凋助嘲弔彫措æ“�æ—©æ™�曺曹æœ�æ¢�æ£—æ§½æ¼•æ½®ç…§ç‡¥çˆªç’ªçœºç¥–ç¥šç§Ÿç¨ çª•ç²—ç³Ÿçµ„ç¹°è‚‡è—»èš¤è©”èª¿è¶™èº�é€ é�釣阻雕鳥æ—�簇足é�ƒå˜å°Šå�’æ‹™çŒ�倧宗從悰慫棕淙ç�®ç¨®çµ‚綜縱腫�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵é�¾é�˜ä½�å��左座挫罪主ä½�ä¾�å�šå§�胄呪周嗾å¥�宙州廚æ™�æœ±æŸ±æ ªæ³¨æ´²æ¹Šæ¾�ç‚·ç� 疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄é§�竹粥俊å„�å‡†åŸˆå¯¯å³»æ™™æ¨½æµšæº–æ¿¬ç„Œç•¯ç«£è ¢é€¡é�µé›‹é§¿èŒ�ä¸ä»²è¡†é‡�å�½æ«›æ¥«æ±�葺增憎曾拯çƒ�甑症繒蒸è‰è´ˆä¹‹å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地å�€å¿—æŒ�指摯支旨智æž�æž³æ¢æ± æ²šæ¼¬çŸ¥ç ¥ç¥‰ç¥—ç´™è‚¢è„‚è‡³èŠ�芷蜘誌識贄趾é�²ç›´ç¨™ç¨·ç¹”è�·å”‡å—”塵振æ�¢æ™‰æ™‹æ¡æ¦›æ®„津溱ç��瑨璡畛疹盡眞瞋秦縉ç¸�臻蔯袗診賑軫辰進éŽé™£é™³éœ‡ä¾„å�±å§ªå«‰å¸™æ¡Žç“†ç–¾ç§©çª’膣è›è³ªè·Œè¿æ–Ÿæœ•什執潗ç·�輯�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������������������������������������������������ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�¶é›†å¾µæ‡²æ¾„且侘借å�‰å—Ÿåµ¯å·®æ¬¡æ¤ç£‹ç®šï§¾è¹‰è»Šé�®æ�‰æ�¾ç�€çª„錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽é¤�饌刹察擦æœç´®åƒå�ƒå¡¹æ…˜æ…™æ‡ºæ–¬ç«™è®’è®–å€‰å€¡å‰µå”±å¨¼å» å½°æ„´æ•žæ˜Œæ˜¶æš¢æ§�滄漲猖瘡窓脹艙è�–è’¼å‚µåŸ°å¯€å¯¨å½©æŽ¡ç ¦ç¶µè�œè”¡é‡‡é‡µå†ŠæŸµç–�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è²¬å‡„å¦»æ‚½è™•å€œï§¿å‰”å°ºæ…½æˆšæ‹“æ“²æ–¥æ»Œç˜ è„Šè¹ é™Ÿéš»ä»Ÿå�ƒå–˜å¤©å·�擅泉淺玔穿舛薦賤è¸�é�·é‡§é—¡é˜¡éŸ†å‡¸å“²å–†å¾¹æ’¤æ¾ˆç¶´è¼Ÿè½�é�µåƒ‰å°–æ²¾æ·»ç”›çž»ç°½ç±¤è©¹è«‚å žå¦¾å¸–æ�·ç‰’ç–Šç�«è«œè²¼è¼’廳晴淸è�½è��è«‹é�‘é¯–ï¨€å‰ƒæ›¿æ¶•æ»¯ç· è«¦é€®é�žé«”åˆ�剿哨憔抄招梢�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦ç¡�ç¤�礎秒ç¨�肖艸苕è�‰è•‰è²‚超酢醋醮促囑ç‡çŸ—蜀觸寸忖æ�‘邨å�¢å¡šå¯µæ‚¤æ†�æ‘ ç¸½è�°è”¥éŠƒæ’®å‚¬å´”æœ€å¢œæŠ½æŽ¨æ¤Žæ¥¸æ¨žæ¹«çšºç§‹èŠ»è�©è«�趨追鄒酋醜éŒ�錘鎚雛騶é°�丑畜ç¥�竺ç‘築縮蓄蹙蹴軸é€�æ˜¥æ¤¿ç‘ƒå‡ºæœ®é»œå……å¿ æ²–èŸ²è¡�衷悴膵è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅å�–å�¹å˜´å¨¶å°±ç‚Šç¿ è�šè„†è‡è¶£é†‰é©Ÿé·²å�´ä»„åŽ æƒ»æ¸¬å±¤ä¾ˆå€¤å—¤å³™å¹Ÿæ�¥æ¢”治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅é£è¦ªä¸ƒæŸ’漆侵寢枕沈浸ç�›ç §é‡�é�¼èŸ„秤稱快他咤唾墮妥惰打拖朶楕舵陀馱é§�倬å�“å•„å�¼ï¨�托拓擢晫æŸ�æ¿�濯ç�¢ç�¸è¨—�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¸å‘‘嘆å�¦å½ˆæ†šæŽç�˜ç‚綻誕奪脫探眈耽貪塔æ�榻宕帑湯糖蕩兌å�°å¤ªæ€ 態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎å��土討慟桶洞痛ç’çµ±é€šå †æ§Œè…¿è¤ªé€€é ¹å�¸å¥—妬投é€�鬪æ…�特闖å�¡å©†å·´æŠŠæ’擺æ�·æ³¢æ´¾çˆ¬ç�¶ç ´ç½·èŠè·›é —判å�‚æ�¿ç‰ˆç“£è²©è¾¦éˆ‘�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八å�æ�Œä½©å”„悖敗沛浿牌狽稗覇è²�彿¾Žçƒ¹è†¨æ„Žä¾¿å��æ‰�片篇編翩é��éžé¨™è²¶å�ªå¹³æž°è��è©•å� 嬖幣廢弊斃肺蔽閉陛佈包åŒ�åŒ�咆哺圃布怖抛抱æ�•ï¨†æ³¡æµ¦ç–±ç ²èƒžè„¯è‹žè‘¡è’²è¢�褒逋鋪飽鮑幅暴æ›�瀑爆輻俵剽彪慓æ�“標漂瓢票表豹飇飄驃�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å“�稟楓諷豊風馮彼披疲皮被é�¿é™‚匹弼必泌ç�Œç•¢ç–‹ç†è‹¾é¦�ä¹�逼下何厦å¤�廈昰河瑕è�·è�¦è³€é��霞鰕壑å¸è™�謔鶴寒æ�¨æ‚�旱汗漢澣瀚罕翰閑閒é™�韓割轄函å�«å’¸å•£å–Šæª»æ¶µç·˜è‰¦éŠœé™·é¹¹å�ˆå“ˆç›’蛤閤闔陜亢伉姮嫦巷æ�’抗æ�æ¡�沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¨ˆï¨‰é …äº¥å�•咳垓奚å©å®³æ‡ˆæ¥·æµ·ç€£èŸ¹è§£è©²è«§é‚‚é§éª¸åŠ¾æ ¸å€–å¹¸æ��è�‡è¡Œäº«å�‘åš®ç�¦é„•響餉饗香噓墟虛許憲櫶ç�»è»’æ‡éšªé©—奕爀赫é�©ä¿”峴弦懸晛泫炫玄玹ç�¾çœ©ç��絃絢縣舷衒見賢鉉顯å‘ç©´è¡€é �å«Œä¿ å�”夾峽挾浹狹脅脇莢é‹�é °äº¨å…„åˆ‘åž‹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅ç��炯熒ç�©ç‘©è�Šèž¢è¡¡é€ˆé‚¢éŽ£é¦¨å…®å½—æƒ æ…§æš³è•™è¹Šé†¯éž‹ä¹Žäº’å‘¼å£•å£ºå¥½å²µå¼§æˆ¶æ‰ˆæ˜Šæ™§æ¯«æµ©æ·�æ¹–æ»¸æ¾”æ¿ æ¿©ç��ç‹�ç�¥ç‘šç“ 皓祜糊縞胡芦葫蒿虎號è�´è·è±ªéŽ¬é €é¡¥æƒ‘æˆ–é…·å©šæ˜�混渾ç�¿é‚忽惚ç¬�哄弘汞泓洪烘紅虹訌鴻化和嬅樺ç�«ç•µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç¦�禾花è�¯è©±è�貨é�´ï¨‹æ“´æ”«ç¢ºç¢»ç©«ä¸¸å–šå¥�宦幻患æ�›æ¡æ™¥æ¡“渙煥環紈還驩鰥活滑猾è±�闊凰幌徨æ��惶愰慌晃晄榥æ³�湟滉潢煌璜皇ç¯�ç°§è�’è�—é�‘éš�黃匯回廻徊æ�¢æ‚”懷晦會檜淮澮ç�°ç�ªç¹ªè†¾èŒ´è›”誨賄劃ç�²å®–æ©«é�„哮嚆å�效斅曉梟æ¶�淆�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵é©�侯候厚å�Žå�¼å–‰å—…帿後朽煦ç��逅勛勳塤壎焄ç†�燻薰訓暈薨喧暄煊è�±å�‰å–™æ¯�彙徽æ�®æš‰ç…‡è«±è¼�麾休æ�ºçƒ‹ç•¦è™§æ�¤èŽé·¸å…‡å‡¶åŒˆæ´¶èƒ¸é»‘昕欣炘痕å�ƒå±¹ç´‡è¨–æ¬ æ¬½æ†å�¸æ�°æ´½ç¿•興僖凞喜噫å›�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10004] = (function(){ var d = \"Û’Û’\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ä ÇÉÑÖÜáà âäں«çéèêëÃâ€¦Ã®Ã¯Ã±Ã³Â»Ã´Ã¶Ã·ÃºÃ¹Ã»Ã¼ï §ï ¨ï ©ï ªï «Ùªï ¬ï ï ®ï ¯ï °ï ±ØŒï ²ï ³ï ´Ù Ù¡Ù¢Ù£Ù¤Ù¥Ù¦Ù§Ù¨Ù©ï µØ›ï ¶ï ·ï ¸ØŸÙØ¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬ØØ®Ø¯Ø°Ø±Ø²Ø³Ø´ØµØ¶Ø·Ø¸Ø¹Øºï ¹ï ºï »ï ¼ï ½Ù€Ù�قكلمنهوىيًٌÙ�ÙŽÙ�Ù�Ù‘Ù’Ù¾Ù¹Ú†Û•Ú¤Ú¯ÚˆÚ‘ï ¾ï ¿ï¡€Ú˜Û’\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10005] = (function(){ var d = \"ï ¦ï ¦\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáà âäãåçéèêëÃÃ¬Ã®Ã¯Ã±Ã³Ã²Ã´Ã¶ÃµÃºÃ¹Ã»Ã¼ïŸ¼ïŸ½ïŸ¾ïŸ¿Â¤ï €â‚ªï �ï ‚ï ƒï „ï …ï †ï ‡ï ˆï ‰ï Šï ‹ï Œï �ï Žï �ï �ï ‘ï ’ï “ï ”ï •ï –ï —ï ˜ï ™ï šâ€žï ›ï œï �Ö½Ö¼ï žï Ÿâ€¦Â ï¿½Ö·ÖµÖ¶Ö´â€“â€”â€œâ€�‘’ï ï ¡Ö¾Ö°Ö²Ö±Ö»×�Ö¸Ö³×�בגדהוזחטיךכל×�×ž×Ÿ× ×¡×¢×£×¤×¥×¦×§×¨×©×ªï ¢ï £ï ¤ï ¥ï ¦\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10008] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€ï£�ï£žï£Ÿï£ ï£¡ï£¢ï££ï£¤ï£¥ï£¦ï£§ï£¨ï£©ï£ªï£«ï£¬ï£ï£®ï£¯ï£°ï£±ï£²ï£³ï£´ï£µï£¶ï£·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï£¸ï£¹ï£ºï£»ï£¼ï£½ï£¾ï£¿\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。・ˉˇ¨〃々―~�…‘’“â€�〔〕〈〉《》「ã€�『ã€�〖〗ã€�】±×÷∶∧∨∑âˆ�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽âˆ�â‰ â‰®â‰¯â‰¤â‰¥âˆžâˆµâˆ´â™‚â™€Â°â€²â€³â„ƒï¼„Â¤ï¿ ï¿¡â€°Â§â„–â˜†â˜…â—‹â—�◎◇◆□■△▲※→â†�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌â’�â’Žâ’�â’�⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�â’‚â’ƒâ’„â’…â’†â’‡â‘ â‘¡â‘¢â‘£â‘¤â‘¥â‘¦â‘§â‘¨â‘©ï¿½ï¿½ãˆ ãˆ¡ãˆ¢ãˆ£ãˆ¤ãˆ¥ãˆ¦ãˆ§ãˆ¨ãˆ©ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©â…ªâ…«ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#¥%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¼¼ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω���������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ä�áǎà ēéěèīÃÇ�ìÅ�óǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������─â”�│┃┄┅┆┇┈┉┊┋┌â”�┎â”�â”�┑┒┓└┕┖┗┘┙┚┛├â”�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬â”┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀â•�╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾ç¢�爱隘éž�æ°¨å®‰ä¿ºæŒ‰æš—å²¸èƒºæ¡ˆè‚®æ˜‚ç›Žå‡¹æ•–ç†¬ç¿±è¢„å‚²å¥¥æ‡Šæ¾³èŠæ�Œæ‰’å�å�§ç¬†å…«ç–¤å·´æ‹”è·‹é�¶æŠŠè€™å��霸罢爸白æŸ�百摆佰败拜稗斑ç�æ�¬æ‰³èˆ¬é¢�æ�¿ç‰ˆæ‰®æ‹Œä¼´ç“£å�ŠåŠžç»Šé‚¦å¸®æ¢†æ¦œè†€ç»‘æ£’ç£…èšŒé•‘å‚�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹ä¿�å ¡é¥±å®�抱报暴豹é²�爆æ�¯ç¢‘悲å�‘北辈背è´�é’¡å€�ç‹ˆå¤‡æƒ«ç„™è¢«å¥”è‹¯æœ¬ç¬¨å´©ç»·ç”æ³µè¹¦è¿¸é€¼é¼»æ¯”鄙笔彼碧蓖蔽毕毙毖å¸�åº‡ç—¹é—æ•�弊必辟å£�臂é�¿é™›éžè¾¹ç¼–è´¬æ‰�便å�˜å�žè¾¨è¾©è¾«é��æ ‡å½ªè†˜è¡¨é³–æ†‹åˆ«ç˜ªå½¬æ–Œæ¿’æ»¨å®¾æ‘ˆå…µå†°æŸ„ä¸™ç§‰é¥¼ç‚³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻è� æ’æ‹¨é’µæ³¢å�šå‹ƒæ��铂箔伯帛舶脖膊渤泊驳æ�•å�œå“ºè¡¥åŸ ä¸�布æ¥ç°¿éƒ¨æ€–擦猜è£�æ��æ‰�è´¢ç�¬è¸©é‡‡å½©è�œè”¡é¤�å�‚èš•æ®‹æƒæƒ¨ç�¿è‹�舱仓沧è—�æ“�糙槽曹è�‰åŽ•ç–ä¾§å†Œæµ‹å±‚è¹æ�’å�‰èŒ¬èŒ¶æŸ¥ç¢´æ�½å¯Ÿå²”差诧拆柴豺æ�€æŽºè�‰é¦‹è°—ç¼ é“²äº§é˜�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������场å°�常长å�¿è‚ 厂敞畅唱倡超抄钞æœ�嘲潮巢å�µç‚’车扯撤掣彻澈郴臣辰尘晨忱沉陈è¶�衬撑称城橙æˆ�呈乘程惩澄诚承逞骋秤å�ƒç—´æŒ�åŒ™æ± è¿Ÿå¼›é©°è€»é½¿ä¾ˆå°ºèµ¤ç¿…æ–¥ç‚½å……å†²è™«å´‡å® æŠ½é…¬ç•´è¸Œç¨ æ„�ç¹ä»‡ç»¸çž…丑è‡åˆ�出橱厨躇锄é›�æ»�除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗æ��触处æ�£å·�ç©¿æ¤½ä¼ èˆ¹å–˜ä¸²ç–®çª—å¹¢åºŠé—¯åˆ›å�¹ç‚Šæ�¶é”¤åž‚æ˜¥æ¤¿é†‡å”‡æ·³çº¯è ¢æˆ³ç»°ç–µèŒ¨ç£�雌辞慈瓷è¯�æ¤åˆºèµ�次è�ªè‘±å›±åŒ†ä»Žä¸›å‡‘粗醋簇促蹿篡窜摧崔催脆ç˜�ç²¹æ·¬ç¿ æ�‘å˜å¯¸ç£‹æ’®æ�“措挫错æ�è¾¾ç”瘩打大呆æ¹å‚£æˆ´å¸¦æ®†ä»£è´·è¢‹å¾…逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ€ è€½æ‹…ä¸¹å�•郸掸胆旦氮但惮淡诞弹蛋当挡党è�¡æ¡£åˆ€æ�£è¹ˆå€’岛祷导到稻悼é�“盗德得的蹬ç�¯ç™»ç‰çžªå‡³é‚“å ¤ä½Žæ»´è¿ªæ•Œç¬›ç‹„æ¶¤ç¿Ÿå«¡æŠµåº•åœ°è’‚ç¬¬å¸�å¼Ÿé€’ç¼”é¢ æŽ‚æ»‡ç¢˜ç‚¹å…¸é�›åž«ç”µä½ƒç”¸åº—æƒ¦å¥ æ·€æ®¿ç¢‰å�¼é›•凋åˆ�掉å�Šé’“调跌爹碟è�¶è¿è°�å� �\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ä¸�盯å�®é’‰é¡¶é¼Žé”å®šè®¢ä¸¢ä¸œå†¬è‘£æ‡‚åŠ¨æ ‹ä¾—æ�«å†»æ´žå…œæŠ–斗陡豆逗痘都ç�£æ¯’çŠŠç‹¬è¯»å µç�¹èµŒæ�œé•€è‚šåº¦æ¸¡å¦’端çŸé”»æ®µæ–ç¼Žå †å…‘é˜Ÿå¯¹å¢©å�¨è¹²æ•¦é¡¿å›¤é’�盾é��掇哆多夺垛躲朵跺舵å‰�æƒ°å •è›¾å³¨é¹…ä¿„é¢�讹娥æ�¶åŽ„æ‰¼é��鄂饿æ�©è€Œå„¿è€³å°”饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰å�‘罚ç�ä¼�ä¹�阀法ç��藩帆番翻樊矾钒ç¹�凡烦å��è¿”èŒƒè´©çŠ¯é¥æ³›å�ŠèŠ³æ–¹è‚ªæˆ¿é˜²å¦¨ä»¿è®¿çººæ”¾è�²é�žå•¡é£žè‚¥åŒªè¯½å� 肺废沸费芬酚å�©æ°›åˆ†çº·å�Ÿç„šæ±¾ç²‰å¥‹ä»½å¿¿æ„¤ç²ªä¸°å°�枫蜂峰锋风疯烽逢冯ç¼�讽奉凤佛å�¦å¤«æ•·è‚¤åµæ‰¶æ‹‚è¾�幅氟符ä¼�俘æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪ç¦�袱弗甫抚辅俯釜斧脯腑府è…�赴副覆赋å¤�傅付阜父腹负富讣附妇缚å’�噶嘎该改概钙盖溉干甘æ�†æŸ‘ç«¿è‚�赶感秆敢赣冈刚钢缸肛纲岗港æ� 篙皋高è†�羔糕æ�žé•�ç¨¿å‘Šå“¥æŒæ��戈鸽胳疙割é�©è‘›æ ¼è›¤é˜�隔铬个å�„ç»™æ ¹è·Ÿè€•æ›´åºšç¾¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功æ�龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构è´å¤Ÿè¾œè�‡å’•ç®�ä¼°æ²½å¤å§‘鼓å�¤è›Šéª¨è°·è‚¡æ•…顾固雇刮瓜å‰�寡挂褂乖æ‹�æ€ªæ£ºå…³å®˜å† è§‚ç®¡é¦†ç½�惯ç�Œè´¯å…‰å¹¿é€›ç‘°è§„åœç¡…归龟闺轨鬼诡癸桂柜跪贵刽辊滚æ£�é”…éƒå›½æžœè£¹è¿‡å“ˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éª¸å©æµ·æ°¦äº¥å®³éª‡é…£æ†¨é‚¯éŸ©å�«æ¶µå¯’函喊罕翰撼æ��旱憾æ‚�焊汗汉夯æ�航壕嚎豪毫éƒ�好耗å�·æµ©å‘µå–�è�·è��æ ¸ç¦¾å’Œä½•å�ˆç›’貉阂河涸赫è¤�é¹¤è´ºå˜¿é»‘ç—•å¾ˆç‹ æ�¨å“¼äº¨æ¨ªè¡¡æ�’轰哄烘虹鸿洪å®�弘红喉侯猴å�¼åŽšå€™å�Žå‘¼ä¹Žå¿½ç‘šå£¶è‘«èƒ¡è�´ç‹�糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗å�ŽçŒ¾æ»‘画划化è¯�æ§�徊怀淮å��欢环桓还缓æ�¢æ‚£å”¤ç—ªè±¢ç„•涣宦幻è�’慌黄磺è�—簧皇凰惶煌晃幌æ��è°Žç�°æŒ¥è¾‰å¾½æ�¢è›”回æ¯�悔慧å�‰æƒ 晦贿秽会烩汇讳诲绘è�¤æ˜�å©šé‚æµ‘æ··è±�活伙ç�«èŽ·æˆ–æƒ‘éœ�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉å�‰æž�棘辑ç±�集å�Šæ€¥ç–¾æ±²å�³å«‰çº§æŒ¤å‡ 脊己蓟技冀å£ä¼Žç¥å‰‚æ‚¸æµŽå¯„å¯‚è®¡è®°æ—¢å¿Œé™…å¦“ç»§çºªå˜‰æž·å¤¹ä½³å®¶åŠ è�šé¢Šè´¾ç”²é’¾å�‡ç¨¼ä»·æž¶é©¾å«�æ¼ç›‘å�šå°–笺间煎兼肩艰奸缄茧检柬碱硷拣æ�¡ç®€ä¿å‰ªå‡�è��槛鉴践贱è§�é”®ç®ä»¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�¥èˆ°å‰‘饯æ¸�æº…æ¶§å»ºåƒµå§œå°†æµ†æ±Ÿç–†è’‹æ¡¨å¥–è®²åŒ é…±é™�蕉椒ç¤�焦胶交郊浇骄娇嚼æ�…铰矫侥脚狡角饺缴绞剿教酵轿较å�«çª–æ�接皆秸街阶截劫节桔æ�°æ�·ç�«ç«æ´�结解å§�æˆ’è—‰èŠ¥ç•Œå€Ÿä»‹ç–¥è¯«å±Šå·¾ç‹æ–¤é‡‘今津襟紧锦仅谨进é�³æ™‹ç¦�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲è�†å…¢èŒŽç�›æ™¶é²¸äº¬æƒŠç²¾ç²³ç»�äº•è¦æ™¯é¢ˆé�™å¢ƒæ•¬é•œå¾„ç—‰é�–竟竞净炯窘æ�ªç©¶çº 玖éŸä¹…ç�¸ä¹�é…’åŽ©æ•‘æ—§è‡¼èˆ…å’Žå°±ç–šéž æ‹˜ç‹™ç–½å±…é©¹è�Šå±€å’€çŸ©ä¸¾æ²®è�šæ‹’æ�®å·¨å…·è·�踞锯俱å�¥æƒ§ç‚¬å‰§æ��鹃娟倦眷å�·ç»¢æ’…攫抉掘倔爵觉决诀ç»�å�‡è�Œé’§å†›å�›å³»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡éª�喀咖å�¡å’¯å¼€æ�©æ¥·å‡¯æ…¨åˆŠå ªå‹˜å�Žç �çœ‹åº·æ…·ç³ æ‰›æŠ—äº¢ç‚•è€ƒæ‹·çƒ¤é� å�·è‹›æŸ¯æ£µç£•颗科壳咳å�¯æ¸´å…‹åˆ»å®¢è¯¾è‚¯å•ƒåž¦æ�³å�‘å�空æ��å”æŽ§æŠ å�£æ‰£å¯‡æž¯å“窟苦酷库裤夸垮挎跨胯å�—ç·ä¾©å¿«å®½æ¬¾åŒ¡ç�狂框矿眶旷况äº�盔岿窥葵奎é�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃å�¤æ˜†æ�†å›°æ‹¬æ‰©å»“阔垃拉喇蜡腊辣啦莱æ�¥èµ–è“�婪æ �拦篮阑兰澜谰æ�½è§ˆæ‡’缆烂滥ç�…榔狼廊郎朗浪æ�žåŠ³ç‰¢è€�佬姥酪烙æ¶�å‹’ä¹�é›·é•蕾磊累儡垒擂肋类泪棱楞冷厘梨çŠ�黎篱狸离漓ç�†æ�Žé‡Œé²¤ç¤¼èމè�”å��æ —ä¸½åŽ‰åŠ±ç ¾åŽ†åˆ©å‚ˆä¾‹ä¿��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩è�”莲连镰廉怜涟帘敛脸链æ�‹ç‚¼ç»ƒç²®å‡‰æ¢�粱良两辆é‡�晾亮谅撩è�Šåƒšç–—燎寥辽潦了撂镣廖料列裂烈劣猎ç�³æž—磷霖临邻鳞淋凛èµ�å��拎玲è�±é›¶é¾„铃伶羚凌ç�µé™µå²é¢†å�¦ä»¤æºœç�‰æ¦´ç¡«é¦�留刘瘤æµ�柳å…é¾™è�‹å’™ç¬¼çª¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄æ�‚篓æ¼�陋芦å�¢é¢…åº�炉掳å�¤è™�é²�麓碌露路赂鹿潞禄录陆戮驴å�•é“�ä¾£æ—…å±¥å±¡ç¼•è™‘æ°¯å¾‹çŽ‡æ»¤ç»¿å³¦æŒ›åªæ»¦å�µä¹±æŽ 略抡轮伦仑沦纶论è��螺罗逻锣箩骡裸è�½æ´›éª†ç»œå¦ˆéº»çŽ›ç �蚂马骂嘛å�—埋买麦å�–迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆å�¯èŒ‚冒帽貌贸么玫枚梅酶霉煤没眉媒é•�æ¯�美昧å¯�妹媚门闷们è�Œè’™æª¬ç›Ÿé”°çŒ›æ¢¦åŸçœ¯é†šé�¡ç³œè¿·è°œå¼¥ç±³ç§˜è§…æ³Œèœœå¯†å¹‚æ£‰çœ ç»µå†•å…�勉娩缅é�¢è‹—æ��çž„è—�秒渺庙妙蔑ç�民抿皿æ•�悯闽明螟鸣é“å��命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‘¹è˜‘æ¨¡è†œç£¨æ‘©é”æŠ¹æœ«èŽ«å¢¨é»˜æ²«æ¼ å¯žé™Œè°‹ç‰ŸæŸ�拇牡亩姆æ¯�墓暮幕募慕木目ç�¦ç‰§ç©†æ‹¿å“ªå‘�é’ é‚£å¨œçº³æ°–ä¹ƒå¥¶è€�奈å�—ç”·éš¾å›ŠæŒ è„‘æ�¼é—¹æ·–å‘¢é¦�å†…å«©èƒ½å¦®éœ“å€ªæ³¥å°¼æ‹Ÿä½ åŒ¿è…»é€†æººè”«æ‹ˆå¹´ç¢¾æ’µæ�»å¿µå¨˜é…¿é¸Ÿå°¿æ��è�‚å½å•®é•Šé•�æ¶…æ‚¨æŸ ç‹žå‡�å®��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛æ‰é’®çº½è„“浓农弄奴努怒女暖è™�疟挪懦糯诺哦欧鸥殴藕呕å�¶æ²¤å•ªè¶´çˆ¬å¸•怕ç�¶æ‹�排牌徘湃派攀潘盘ç£�盼畔判å�›ä¹“庞æ—�耪胖抛咆刨炮è¢�跑泡呸胚培裴赔陪é…�ä½©æ²›å–·ç›†ç °æŠ¨çƒ¹æ¾Žå½è“¬æ£šç¡¼ç¯·è†¨æœ‹é¹�æ�§ç¢°å�¯ç ’霹批披劈ç�µæ¯—�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻å±�è¬ç¯‡å��片骗飘漂瓢票撇瞥拼频贫å“�è�˜ä¹’å�ªè‹¹è��å¹³å‡ç“¶è¯„å±�å�¡æ³¼é¢‡å©†ç ´é„迫粕剖扑铺仆莆葡è�©è’²åŸ”朴圃普浦谱æ›�ç€‘æœŸæ¬ºæ –æˆšå¦»ä¸ƒå‡„æ¼†æŸ’æ²�其棋奇æ§ç•¦å´Žè„�é½�旗祈ç¥�骑起岂乞ä¼�å�¯å¥‘ç Œå™¨æ°”è¿„å¼ƒæ±½æ³£è®«æŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�°æ´½ç‰µæ‰¦é’Žé“…å�ƒè¿�ç¾ä»Ÿè°¦ä¹¾é»”钱钳å‰�潜é�£æµ…è°´å ‘åµŒæ¬ æ‰æžªå‘›è…”羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘å³ä¿�çª�切茄且怯窃钦侵亲秦ç�´å‹¤èŠ¹æ“’ç¦½å¯�æ²�é�’轻氢倾å�¿æ¸…擎晴氰情顷请庆ç�¼ç©·ç§‹ä¸˜é‚±ç�ƒæ±‚å›šé…‹æ³…è¶‹åŒºè›†æ›²èº¯å±ˆé©±æ¸ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�–娶龋趣去圈颧æ�ƒé†›æ³‰å…¨ç—Šæ‹³çŠ¬åˆ¸åŠ�缺炔瘸å�´é¹Šæ¦·ç¡®é›€è£™ç¾¤ç„¶ç‡ƒå†‰æŸ“瓤壤攘嚷让饶扰绕惹çƒå£¬ä»�人å¿�韧任认刃妊纫扔ä»�日戎茸蓉è�£èž�熔溶容绒冗æ�‰æŸ”è‚‰èŒ¹è •å„’åºå¦‚辱乳æ±�入褥软阮蕊瑞é”�闰润若弱撒洒è�¨è…®é³ƒå¡žèµ›ä¸‰å���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧æ�”éªšæ‰«å«‚ç‘Ÿè‰²æ¶©æ£®åƒ§èŽŽç ‚æ�€åˆ¹æ²™çº±å‚»å•¥ç…žç›æ™’ç�Šè‹«æ�‰å±±åˆ 煽衫闪陕擅赡膳善汕扇缮墒伤商èµ�晌上尚裳梢æ�Žç¨�烧èŠ�勺韶少哨邵ç»�奢赊蛇舌èˆ�èµ¦æ‘„å°„æ…‘æ¶‰ç¤¾è®¾ç ·ç”³å‘»ä¼¸èº«æ·±å¨ ç»…ç¥žæ²ˆå®¡å©¶ç”šè‚¾æ…Žæ¸—å£°ç”Ÿç”¥ç‰²å�‡ç»³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çœ�盛剩胜圣师失狮施湿诗尸虱å��石拾时什食蚀实识å�²çŸ¢ä½¿å±Žé©¶å§‹å¼�示士世柿事æ‹èª“é€�势是嗜噬适仕ä¾�释饰æ°�市æ�ƒå®¤è§†è¯•收手首守寿授售å�—瘦兽蔬枢梳殊抒输å�”舒淑ç–�书赎å°ç†Ÿè–¯æš‘曙署蜀é»�é¼ å±žæœ¯è¿°æ ‘æ�Ÿæˆ�竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�•刷è€�æ‘”è¡°ç”©å¸…æ “æ‹´éœœå�Œçˆ½è°�æ°´ç�¡ç¨Žå�®çž¬é¡ºèˆœè¯´ç¡•朔çƒ�斯撕嘶æ€�ç§�å�¸ä¸�æ»è‚†å¯ºå—£å››ä¼ºä¼¼é¥²å·³æ�¾è€¸æ€‚颂é€�宋讼诵æ�œè‰˜æ“žå—½è‹�é…¥ä¿—ç´ é€Ÿç²Ÿåƒ³å¡‘æº¯å®¿è¯‰è‚ƒé…¸è’œç®—è™½éš‹éš�绥髓碎å²�ç©—é�‚éš§ç¥Ÿå™æ�Ÿç¬‹è“‘æ¢å”†ç¼©ç��ç´¢é”�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�挞蹋è¸�胎苔抬å�°æ³°é…žå¤ªæ€�æ±°å��摊贪瘫滩å�›æª€ç—°æ½è°è°ˆå�¦æ¯¯è¢’碳探å�¹ç‚汤塘æ�ªå ‚æ£ è†›å”�糖倘躺淌趟烫æŽ�涛滔绦è�„桃逃淘陶讨套特藤腾疼誊梯剔踢锑æ��题蹄啼体替åš�惕涕剃屉天添填田甜æ�¬èˆ”腆挑æ�¡è¿¢çœºè·³è´´é“�帖厅å�¬çƒƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷å�œäºåºæŒºè‰‡é€šæ¡�酮瞳å�Œé“œå½¤ç«¥æ¡¶æ�…ç’统痛å�·æŠ•头é€�凸秃çª�å›¾å¾’é€”æ¶‚å± åœŸå��å…”æ¹�团推颓腿蜕褪退å�žå±¯è‡€æ‹–托脱鸵陀驮驼æ¤å¦¥æ‹“唾挖哇蛙洼娃瓦袜æªå¤–豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄å¨��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å·�å¾®å�±éŸ¦è¿�桅围唯惟为æ½�维苇è�Žå§”伟伪尾纬未蔚味ç•�胃喂é�ä½�æ¸è°“尉慰å�«ç˜Ÿæ¸©èšŠæ–‡é—»çº¹å�»ç¨³ç´Šé—®å—¡ç¿�ç“®æŒ�蜗涡çª�我斡å�§æ�¡æ²ƒå·«å‘œé’¨ä¹Œæ±¡è¯¬å±‹æ— 芜梧å�¾å�´æ¯‹æ¦äº”æ�‚å�ˆèˆžä¼�ä¾®å�žæˆŠé›¾æ™¤ç‰©å‹¿åŠ¡æ‚Ÿè¯¯æ˜”ç†™æž�西硒矽晰嘻å�¸é”¡ç‰ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀æ�¯å¸Œæ‚‰è†�夕惜熄烯溪æ±�犀檄è¢å¸ä¹ 媳喜铣洗系隙æˆ�ç»†çžŽè™¾åŒ£éœžè¾–æš‡å³¡ä¾ ç‹ä¸‹åަå¤�å�“掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷é™�线相厢镶香箱襄湘乡翔祥详想å“�享项巷橡åƒ�å�‘象è�§ç¡�霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å°�å�æ ¡è‚–å•¸ç¬‘æ•ˆæ¥”äº›æ‡è�Žéž‹å��挟æ�ºé‚ªæ–œèƒ�è°�写械å�¸èŸ¹æ‡ˆæ³„泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸æ��性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须å¾�许蓄酗å�™æ—åº�畜æ�¤çµ®å©¿ç»ªç»è½©å–§å®£æ‚¬æ—‹çŽ„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚é�´è–›å¦ç©´é›ªè¡€å‹‹ç†�循旬询寻驯巡殉汛è®è®¯é€Šè¿…压押鸦é¸å‘€ä¸«èŠ½ç‰™èšœå´–è¡™æ¶¯é›…å“‘äºšè®¶ç„‰å’½é˜‰çƒŸæ·¹ç›�ä¸¥ç ”èœ’å²©å»¶è¨€é¢œé˜Žç‚Žæ²¿å¥„æŽ©çœ¼è¡�æ¼”è‰³å °ç‡•åŽŒç šé›�å”�彦焰宴谚验殃央鸯秧æ�¨æ‰¬ä½¯ç–¡ç¾Šæ´‹é˜³æ°§ä»°ç—’å…»æ ·æ¼¾é‚€è…°å¦–ç‘¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧é�¥çª‘谣姚咬舀è�¯è¦�耀椰噎耶爷野冶也页掖业å�¶æ›³è…‹å¤œæ¶²ä¸€å£¹åŒ»æ�–铱ä¾�伊衣é¢�夷é�—移仪胰疑沂宜姨å½�椅èš�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔æ„�毅忆义益溢诣议谊译异翼翌绎茵è�«å› 殷音阴姻å�Ÿé“¶æ·«å¯…饮尹引éš��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�°è‹±æ¨±å©´é¹°åº”缨莹è�¤è�¥è�§è�‡è¿Žèµ¢ç›ˆå½±é¢–ç¡¬æ˜ å“Ÿæ‹¥ä½£è‡ƒç—ˆåº¸é›�踊蛹å’�泳涌永æ�¿å‹‡ç”¨å¹½ä¼˜æ‚ 忧尤由邮铀犹油游酉有å�‹å�³ä½‘釉诱å�ˆå¹¼è¿‚淤于盂榆虞愚舆余俞逾鱼愉æ¸�渔隅予娱雨与屿禹宇è¯ç¾½çŽ‰åŸŸèŠ‹éƒ�å��é�‡å–»å³ªå¾¡æ„ˆæ¬²ç‹±è‚²èª‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫é©é¸³æ¸Šå†¤å…ƒåž£è¢�原æ�´è¾•å›å‘˜åœ†çŒ¿æº�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨å…�è¿�è•´é…�晕韵å•åŒ�ç ¸æ�‚æ ½å“‰ç�¾å®°è½½å†�在咱攒暂赞赃è„�葬é�糟凿藻枣早澡蚤èº�å™ªé€ çš‚ç�¶ç‡¥è´£æ‹©åˆ™æ³½è´¼æ€Žå¢žæ†Žæ›¾èµ 扎喳渣æœè½§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é“¡é—¸çœ¨æ …æ¦¨å’‹ä¹�炸诈摘斋宅窄债寨瞻毡詹粘沾ç›�æ–©è¾—å´å±•è˜¸æ ˆå� æˆ˜ç«™æ¹›ç»½æ¨Ÿç« å½°æ¼³å¼ æŽŒæ¶¨æ�–丈å¸�è´¦ä»—èƒ€ç˜´éšœæ‹›æ˜æ‰¾æ²¼èµµç…§ç½©å…†è‚‡å�¬é�®æŠ˜å“²è›°è¾™è€…锗蔗这浙ç��æ–ŸçœŸç”„ç §è‡»è´žé’ˆä¾¦æž•ç–¹è¯Šéœ‡æŒ¯é•‡é˜µè’¸æŒ£ç��å¾�ç‹°äº‰æ€”æ•´æ‹¯æ£æ”¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑è¯�èŠ�æž�支å�±èœ˜çŸ¥è‚¢è„‚æ±�之织è�Œç›´æ¤�殖执值侄å�€æŒ‡æ¢è¶¾å�ªæ—¨çº¸å¿—挚掷至致置帜峙制智秩稚质炙痔滞治窒ä¸ç›…å¿ é’Ÿè¡·ç»ˆç§�è‚¿é‡�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤ç� æ ªè››æœ±çŒªè¯¸è¯›é€�竹烛煮拄瞩嘱主著柱助蛀贮铸ç‘�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ä½�注ç¥�é©»æŠ“çˆªæ‹½ä¸“ç –è½¬æ’°èµšç¯†æ¡©åº„è£…å¦†æ’žå£®çŠ¶æ¤Žé”¥è¿½èµ˜å� 缀谆准æ�‰æ‹™å�“桌ç�¢èŒ�酌啄ç�€ç�¼æµŠå…¹å’¨èµ„姿滋淄åœç´«ä»”籽滓å�自æ¸�å—鬃棕踪宗综总纵邹走å¥�æ��ç§Ÿè¶³å�’æ—�祖诅阻组钻纂嘴醉最罪尊é�µæ˜¨å·¦ä½�柞å�šä½œå��座������\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������äº�丌兀ä¸�廿å�…丕亘丞鬲å¬å™©ä¸¨ç¦ºä¸¿åŒ•乇å¤çˆ»å�®æ°�囟胤馗毓ç�¾é¼—丶亟é¼�乜乩亓芈å›å•¬å˜�仄åŽ�åŽ�厣厥厮é�¥èµ�匚å�µåŒ¦åŒ®åŒ¾èµœå�¦å�£åˆ‚刈刎åˆåˆ³åˆ¿å‰€å‰Œå‰žå‰¡å‰œè’¯å‰½åŠ‚åŠ�åŠ�劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚ä½��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃ä¾�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩å�Œä¿³å€¬å€�倮å€ä¿¾å€œå€Œå€¥å€¨å�¾å�ƒå�•å�ˆå�Žå�¬å�»å‚¥å‚§å‚©å‚ºåƒ–儆åƒåƒ¬åƒ¦åƒ®å„‡å„‹ä»�æ°½ä½˜ä½¥ä¿Žé¾ æ±†ç±´å…®å·½é»‰é¦˜å†�夔勹åŒ�訇åŒ�å‡«å¤™å…•äº å…–äº³è¡®è¢¤äºµè„”è£’ç¦€å¬´è ƒç¾¸å†«å†±å†½å†¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‡‡å†–å†¢å†¥è® è®¦è®§è®ªè®´è®µè®·è¯‚è¯ƒè¯‹è¯�è¯Žè¯’è¯“è¯”è¯–è¯˜è¯™è¯œè¯Ÿè¯ è¯¤è¯¨è¯©è¯®è¯°è¯³è¯¶è¯¹è¯¼è¯¿è°€è°‚è°„è°‡è°Œè°�谑谒谔谕谖谙谛谘è°�è°Ÿè° è°¡è°¥è°§è°ªè°«è°®è°¯è°²è°³è°µè°¶å�©å�ºé˜�阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈éš�éš—éš°é‚—é‚›é‚�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰éƒ�郅邾éƒ�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆åˆ�奂劢劬åŠåŠ¾å“¿å‹�å‹–å‹°å�Ÿç‡®çŸ�廴凵凼鬯厶å¼�畚巯å�Œåž©åž¡å¡¾å¢¼å£…壑圩圬圪圳圹圮圯å�œåœ»å�‚å�©åž…å�«åž†å�¼å�»å�¨å�å�¶å�³åžåž¤åžŒåž²åŸ�åž§åž´åž“åž åŸ•åŸ˜åŸšåŸ™åŸ’åž¸åŸ´åŸ¯åŸ¸åŸ¤åŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ‹å �埽åŸå €å žå ™å¡„å 塥塬å¢�墉墚墀馨鼙懿艹艽艿èŠ�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌è‹�芩芴芡芪芟苄苎芤苡茉苷苤èŒ�èŒ‡è‹œè‹´è‹’è‹˜èŒŒè‹»è‹“èŒ‘èŒšèŒ†èŒ”èŒ•è‹ è‹•èŒœè�‘è�›è�œèŒˆèŽ’èŒ¼èŒ´èŒ±èŽ›è�žèŒ¯è��è�‡è�ƒè�Ÿè�€èŒ—è� èŒèŒºèŒ³è�¦è�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�¨èŒ›è�©è�¬è�ªè�è�®èްè�¸èŽ³èŽ´èŽ èŽªèŽ“èŽœèŽ…è�¼èŽ¶èŽ©è�½èޏè�»èŽ˜èŽžèŽ¨èŽºèŽ¼è��è��è�¥è�˜å ‡è�˜è�‹è��è�½è�–è�œè�¸è�‘è�†è�”è�Ÿè��è�ƒè�¸è�¹è�ªè�…è�€è�¦è�°è�¡è‘œè‘‘葚葙葳蒇蒈葺蒉葸è�¼è‘†è‘©è‘¶è’Œè’Žè�±è‘è“�è“�è“�è“¦è’½è““è“Šè’¿è’ºè“ è’¡è’¹è’´è’—è“¥è“£è”Œç”�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇è–�蕹薮薜薅薹薷薰藓è—�藜藿蘧蘅蘩蘖蘼廾弈夼å¥�耷奕奚奘åŒ�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹æ�‹æ�ƒæŽæ�¶æ�±æ�ºæŽŽæŽ´æ�掬掊æ�©æŽ®æŽ¼æ�²æ�¸æ� æ�¿æ�„æ�žæ�Žæ‘’æ�†æŽ¾æ‘…æ‘�æ�‹æ�›æ� æ�Œæ�¦æ�¡æ‘žæ’„æ‘æ’–�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀æ“�擗擤擢攉攥攮弋忒甙弑å�Ÿå�±å�½å�©å�¨å�»å�’å�–å�†å‘‹å‘’呓呔呖呃å�¡å‘—å‘™å�£å�²å’‚咔呷呱呤咚咛咄呶呦å’�å“�å’哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤å“�å“�å“žå”›å“§å” å“½å””å“³å”¢å”£å”�唑唧唪啧å–�喵啉å•å•�啕唿å•�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈å–�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦å—�嗄嗯嗥嗲嗳嗌å—�嗨嗵嗤辔嘞嘈嘌å˜�嘤嘣嗾嘀嘧å˜å™˜å˜¹å™—嘬å™�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗å›�囡囵囫囹囿圄圊圉圜å¸�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺å²�å²�岖岈岘岙岑岚岜岵岢岽岬岫岱岣å³�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯åµ�嵫嵋嵊嵩嵴嶂嶙å¶�豳嶷巅彳彷徂徇徉後徕徙徜徨å¾å¾µå¾¼è¡¢å½¡çŠçŠ°çŠ´çŠ·çŠ¸ç‹ƒç‹�狎ç‹�狒狨狯狩狲狴狷çŒ�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞çŒ�猕猢猹猥猬猸猱ç��ç��ç�—ç� ç�¬ç�¯ç�¾èˆ›å¤¥é£§å¤¤å¤‚饣饧饨饩饪饫饬饴饷饽馀馄馇馊é¦�é¦�é¦‘é¦“é¦”é¦•åº€åº‘åº‹åº–åº¥åº åº¹åºµåº¾åº³èµ“å»’å»‘å»›å»¨å»ªè†ºå¿„å¿‰å¿–å¿�怃忮怄忡忤忾怅怆忪å¿å¿¸æ€™æ€µæ€¦æ€›æ€�æ€�怩怫怊怿怡æ�¸æ�¹æ�»æ�ºæ�‚�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�ªæ�½æ‚–æ‚šæ‚æ‚�悃悒悌悛惬悻悱æƒ�æƒ˜æƒ†æƒšæ‚´æ„ æ„¦æ„•æ„£æƒ´æ„€æ„Žæ„«æ…Šæ…µæ†¬æ†”æ†§æ†·æ‡”æ‡µå¿�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌é˜�é˜�阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅æ²�沔沌汨汩汴汶沆沩æ³�æ³”æ²æ³·æ³¸æ³±æ³—æ²²æ³ æ³–æ³ºæ³«æ³®æ²±æ³“æ³¯æ³¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫æµ�洮洵洚æµ�æµ’æµ”æ´³æ¶‘æµ¯æ¶žæ¶ æµžæ¶“æ¶”æµœæµ æµ¼æµ£æ¸šæ·‡æ·…æ·žæ¸Žæ¶¿æ· æ¸‘æ·¦æ·�æ·™æ¸–æ¶«æ¸Œæ¶®æ¸«æ¹®æ¹Žæ¹«æº²æ¹Ÿæº†æ¹“æ¹”æ¸²æ¸¥æ¹„æ»Ÿæº±æº˜æ» æ¼æ»¢æº¥æº§æº½æº»æº·æ»—溴æ»�æº�滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉æ¾�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¿‰æ¾§æ¾¹æ¾¶æ¿‚æ¿¡æ¿®æ¿žæ¿ æ¿¯ç€šç€£ç€›ç€¹ç€µç��ç�žå®€å®„宕宓宥宸甯骞æ�´å¯¤å¯®è¤°å¯°è¹‡è¬‡è¾¶è¿“迕迥迮迤迩迦迳迨逅逄逋逦逑é€�逖逡逵逶é€é€¯é�„é�‘é�’é��é�¨é�˜é�¢é�›æš¹é�´é�½é‚‚邈邃邋å½�彗彖彘尻咫å±�å±™å±å±£å±¦ç¾¼å¼ªå¼©å¼è‰´å¼¼é¬»å±®å¦�妃å¦�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆å§�å¨ˆå§£å§˜å§¹å¨Œå¨‰å¨²å¨´å¨‘å¨£å¨“å©€å©§å©Šå©•å¨¼å©¢å©µèƒ¬åªªåª›å©·å©ºåª¾å««åª²å«’å«”åª¸å« å«£å«±å«–å«¦å«˜å«œå¬‰å¬—å¬–å¬²å¬·å€å°•å°œåšå¥å³å‘å“å¢é©µé©·é©¸é©ºé©¿é©½éª€éª�骅骈骊éª�骒骓骖骘骛骜éª�éªŸéª éª¢éª£éª¥éª§çºŸçº¡çº£çº¥çº¨çº©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çºçº°çº¾ç»€ç»�绂绉绋绌ç»�ç»”ç»—ç»›ç» ç»¡ç»¨ç»«ç»®ç»¯ç»±ç»²ç¼�绶绺绻绾ç¼�缂缃缇缈缋缌ç¼�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬ç¼ç¼¯ç¼°ç¼±ç¼²ç¼³ç¼µå¹ºç•¿å·›ç”¾é‚•玎玑玮玢玟ç��ç�‚ç�‘玷玳ç�€ç�‰ç�ˆç�¥ç�™é¡¼ç�Šç�©ç�§ç�žçŽºç�²ç��ç�ªç‘›ç�¦ç�¥ç�¨ç�°ç�®ç�¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�›ç�šç‘�瑜瑗瑕瑙瑷ç‘瑾璜璎璀ç’�璇璋璞璨璩ç’�璧瓒璺韪韫韬æ�Œæ�“æ�žæ�ˆæ�©æž¥æž‡æ�ªæ�³æž˜æž§æ�µæž¨æžžæžæž‹æ�·æ�¼æŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æžµæŸšæž³æŸ�æ €æŸƒæž¸æŸ¢æ ŽæŸ�æŸ½æ ²æ ³æ¡ æ¡¡æ¡Žæ¡¢æ¡„æ¡¤æ¢ƒæ �桕桦æ¡�æ¡§æ¡€æ ¾æ¡Šæ¡‰æ ©æ¢µæ¢�æ¡´æ¡·æ¢“æ¡«æ£‚æ¥®æ£¼æ¤Ÿæ¤ æ£¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋æ¤�楗棣æ¤�æ¥±æ¤¹æ¥ æ¥‚æ¥�æ¦„æ¥«æ¦€æ¦˜æ¥¸æ¤´æ§Œæ¦‡æ¦ˆæ§Žæ¦‰æ¥¦æ¥£æ¥¹æ¦›æ¦§æ¦»æ¦«æ¦æ§”榱æ§�æ§Šæ§Ÿæ¦•æ§ æ¦�æ§¿æ¨¯æ§æ¨—æ¨˜æ©¥æ§²æ©„æ¨¾æª æ©�橛樵檎橹樽樨橘橼檑æª�檩檗檫猷ç�’æ®�殂殇殄殒殓æ®�殚殛殡殪轫è½è½±è½²è½³è½µè½¶è½¸è½·è½¹è½ºè½¼è½¾è¾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è¾�辎è¾�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿ç”�甑甓攴旮旯旰昊昙æ�²æ˜ƒæ˜•昀炅曷æ˜�昴昱昶昵耆晟晔æ™�æ™�晖晡晗晷暄暌暧æš�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇èµ�赕赙觇觊觋觌觎è§�è§�觑牮犟ç‰�牦牯牾牿犄犋çŠ�çŠ�犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�¿æ“˜è€„毪毳毽毵毹氅氇氆æ°�氕氘氙氚氡氩氤氪氲攵敕敫ç‰�牒牖爰虢刖肟肜肓肼朊肽肱肫è‚肴肷胧胨胩胪胛胂胄胙èƒ�胗æœ�èƒ�胫胱胴èƒè„�è„Žèƒ²èƒ¼æœ•è„’è±šè„¶è„žè„¬è„˜è„²è…ˆè…Œè…“è…´è…™è…šè…±è… è…©è…¼è…½è…è…§å¡�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è‡�è†¦æ¬¤æ¬·æ¬¹æƒæ†æ™é£‘飒飓飕飙飚殳彀毂觳æ–�齑斓於旆旄旃旌旎旒旖炀炜炖ç‚�炻烀炷炫炱烨烊ç„�ç„“ç„–ç„¯ç„±ç…³ç…œç…¨ç……ç…²ç…Šç…¸ç…ºç†˜ç†³ç†µç†¨ç† ç‡ ç‡”ç‡§ç‡¹çˆ�爨ç�¬ç„˜ç…¦ç†¹æˆ¾æˆ½æ‰ƒæ‰ˆæ‰‰ç¤»ç¥€ç¥†ç¥‰ç¥›ç¥œç¥“ç¥šç¥¢ç¥—ç¥ ç¥¯ç¥§ç¥ºç¦…ç¦Šç¦šç¦§ç¦³å¿‘å¿��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼æ��æ�šæ�§æ��æ�™æ�£æ‚«æ„†æ„�æ…�憩æ†�懋懑戆肀è�¿æ²“æ³¶æ·¼çŸ¶çŸ¸ç €ç ‰ç —ç ˜ç ‘æ–«ç ç œç �ç ¹ç ºç »ç Ÿç ¼ç ¥ç ¬ç £ç ©ç¡Žç¡ç¡–ç¡—ç ¦ç¡�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄çœ�盹眇眈眚眢眙çœçœ¦çœµçœ¸ç��ç�‘ç�‡ç�ƒç�šç�¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�¢ç�¥ç�¿çž�ç�½çž€çžŒçž‘çžŸçž çž°çžµçž½ç”ºç•€ç•Žç•‹ç•ˆç•›ç•²ç•¹ç–ƒç½˜ç½¡ç½Ÿè©ˆç½¨ç½´ç½±ç½¹ç¾�ç½¾ç›�ç›¥è ²é’…é’†é’‡é’‹é’Šé’Œé’�é’�é’�钔钗钕钚钛钜钣钤钫钪é’钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌é“�铎é“�é“‘é“’é“•é“–é“—é“™é“˜é“›é“žé“Ÿé“ é“¢é“¤é“¥é“§é“¨é“ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊é”�锎é”�锒锓锔锕锖锘锛é”�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎é•�镒镓镔镖镗镘镙镛镞镟é•�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕ç§ç§£ç§«ç¨†åµ‡ç¨ƒç¨‚稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑é»�é¦¥ç©°çšˆçšŽçš“çš™çš¤ç“žç“ ç”¬é¸ é¸¢é¸¨é¸©é¸ªé¸«é¸¬é¸²é¸±é¸¶é¸¸é¸·é¸¹é¸ºé¸¾é¹�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱é¹é¹³ç–’ç–”ç––ç– ç–�疬疣疳疴疸痄疱疰痃痂痖ç—�痣痨痦痤痫痧瘃痱痼痿ç˜�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç˜›ç˜¼ç˜¢ç˜ ç™€ç˜ç˜°ç˜¿ç˜µç™ƒç˜¾ç˜³ç™�ç™žç™”ç™œç™–ç™«ç™¯ç¿Šç«¦ç©¸ç©¹çª€çª†çªˆçª•çª¦çª çª¬çª¨çªçª³è¡¤è¡©è¡²è¡½è¡¿è¢‚袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶è¥�è¥¦è¥»ç–‹èƒ¥çš²çš´çŸœè€’è€”è€–è€œè€ è€¢è€¥è€¦è€§è€©è€¨è€±è€‹è€µè�ƒè�†è��è�’è�©è�±è¦ƒé¡¸é¢€é¢ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌é¢�é¢�颔颚颛颞颟颡颢颥颦è™�虔虬虮虿虺虼虻蚨èš�蚋蚬èš�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉è›�蚴蛩蛱蛲è›è›³è›�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊èœ�蜉蜣蜻蜞蜥蜮蜚蜾è�ˆèœ´èœ±èœ©èœ·èœ¿èž‚蜢è�½è�¾è�»è� è�°è�Œè�®èž‹è�“è�£è�¼è�¤è�™è�¥èž“螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅èžèž—èžƒèž«èŸ¥èž¬èžµèž³èŸ‹èŸ“èž½èŸ‘èŸ€èŸŠèŸ›èŸªèŸ èŸ®è –è “èŸ¾è Šè ›è ¡è ¹è ¼ç¼¶ç½‚ç½„ç½…èˆ�竺竽笈笃笄笕笊笫ç¬�ç‡ç¬¸ç¬ªç¬™ç¬®ç¬±ç¬ 笥笤笳笾笞ç˜çšç…çµçŒç�ç ç®ç»ç¢ç²ç±ç®�箦箧箸箬ç®�箨箅箪箜箢箫箴篑ç¯�篌ç¯�篚篥篦篪簌篾篼ç°�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸ç±�籀臾èˆ�舂舄臬衄舡舢舣èˆèˆ¯èˆ¨èˆ«èˆ¸èˆ»èˆ³èˆ´èˆ¾è‰„艉艋è‰�艚艟艨衾袅袈裘裟襞ç¾�羟羧羯羰羲籼敉粑ç²�粜粞粢粲粼粽ç³�糇糌ç³�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧èµè±‡è±‰é…Šé…�é…Žé…�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅é†�é†�醑醢醣醪é†é†®é†¯é†µé†´é†ºè±•鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎è·�跛跆跬跷跸跣跹跻跤踉跽踔è¸�踟踬踮踣踯踺蹀踹踵踽踱蹉è¹�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅èº�躔èº�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦é�“雩雳雯霆éœ�霈éœ�霎霪éœéœ°éœ¾é¾€é¾ƒé¾…龆龇龈龉龊龌黾鼋é¼�éš¹éš¼éš½é›Žé›’çž¿é› éŠŽéŠ®é‹ˆéŒ¾é�ªé�ŠéŽ�é�¾é‘«é±¿é²‚鲅鲆鲇鲈稣鲋鲎é²�é²‘é²’é²”é²•é²šé²›é²žé²Ÿé² é²¡é²¢é²£é²¥é²¦é²§é²¨é²©é²«é²é²®é²°é²±é²²é²³é²´é²µé²¶é²·é²ºé²»é²¼é²½é³„鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌é³�鳎é³�é³�鳓鳔鳕鳗鳘鳙鳜é³�鳟鳢é�¼éž…鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼é«�髀髅髂髋髌髑é…éƒé‡é‰éˆé�é‘飨é¤�餮饕饔髟髡髦髯髫髻é«é«¹é¬ˆé¬�鬓鬟鬣麽麾縻麂麇麈麋麒é�–éº�麟黛黜é»�é» é»Ÿé»¢é»©é»§é»¥é»ªé»¯é¼¢é¼¬é¼¯é¼¹é¼·é¼½é¼¾é½„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10010] = (function(){ var d = \"ˇˇ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑âˆ�π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“â€�‘’÷◊ÿŸâ�„¤‹›Ţţ‡·‚„‰ÂÊÃ�ËÈÃ�ÃŽÃ�ÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸Ë�˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10017] = (function(){ var d = \"¤¤\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ð�БВГДЕЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ†°Ò�£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“â€�‘’÷„ЎўÐ�ÑŸâ„–Ð�Ñ‘Ñ�абвгдежзийклмнопрÑ�туфхцчшщъыьÑ�ю¤\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10021] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�«»…����������“â€���•�����������‘’� à¸�ขฃคฅฆงจฉชซฌà¸�ฎà¸�à¸�ฑฒณดตถทธนบปผà¸�พฟภมยรฤลฦวศษสหฬà¸à¸®à¸¯à¸°à¸±à¸²à¸³à¸´à¸µà¸¶à¸·à¸¸à¸¹à¸ºï»¿â€‹â€“—฿เà¹�โใไๅๆ็่้๊๋์à¹�â„¢à¹�à¹�๑๒๓๔๕๖๗๘๙®©����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10082] = (function(){ var d = \"ˇˇ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáà âäãåçéèêëÃìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑âˆ�š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœÄ�—“â€�‘’÷◊©â�„¤‹›Æ»–·‚„‰ÂćÃ�Ä�ÈÃ�ÃŽÃ�ÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20000] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"���������������������������������乂乜凵匚厂万丌乇äº�囗屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼仨仜仩仡ä»�仚刌刉匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰�氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓åˆ�劦���������������������������������� ,ã€�。․•;:?ï¼�︰…‥ï¹�﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴ï¹�()︵︶{ï½�︷︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙﹚﹛﹜ï¹�﹞‘’“â€�ã€�〞′‵#&*※§〃○â—�△▲◎☆★◇◆□■▽▼�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"���������������������������������匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿å–尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�æ‰œæ‰žæ‰¤æ‰¡æ‰¦æ‰¢æ‰™æ‰ æ‰šæ‰¥æ”·æ—¯æ—®æœ¾æœ¹æœ¸æœ»æœºæœ¿æœ¼æœ³æ°˜æ±†æ±’æ±œæ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�è¥¾é‚™é‚—é‚˜é‚›é‚”é˜¢é˜¤é˜ é˜£ä½–ä¼»ä½¢ä½‰ä½“ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ãŠ£â„…â€¾ï¿£ï¿½ï¿½ï¹‰ï¹Šï¹�ï¹Žï¹‹ï¹Œï¹Ÿï¹ ï¹¡ï¼‹ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓→â†�↖↗↙↘∥∣ï¼�ï¼¼ï¿½ï¹¨ï¼„ï¿¥ã€’ï¿ ï¿¡ï¼…ï¼ â„ƒâ„‰ï¹©ï¹ªï¹«ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„゜兙兛兞å…�兡兣�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"���������������������������������佤伾佧佒佟ä½�佘ä¼ä¼³ä¼¿ä½¡å†�冹刜刞刡åŠåŠ®åŒ‰å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜å�½å‘�å‘�å�¨å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’å¤†å¥€å¦¦å¦˜å¦ å¦—å¦Žå¦¢å¦�å¦�妧妡宎宒尨尪å²�å²�å²ˆå²‹å²‰å²’å²Šå²†å²“å²•å· å¸Šå¸Žåº‹åº‰åºŒåºˆåº�å¼…å¼�彸彶忒忑å¿�å¿å¿¨å¿®å¿³å¿¡å¿¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å—§ç“©ç³Žâ–�▂▃▄▅▆▇█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘â•╮╰╯â•�╞╪╡◢◣◥◤╱╲╳¨˄ヽヾã‚�ゞ�〄々〆〇ー[]✽ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"���������������������������������忣忺忯忷忻怀忴戺抃抌抎æŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�æ±±æ±¯æ±©æ²šæ±æ²‡æ²•沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�芅芎芑芓����������������������������������ï¼�ï¼‘ï¼’ï¼“ï¼”ï¼•ï¼–ï¼—ï¼˜ï¼™â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ã€¡ã€¢ã€£ã€¤ã€¥ã€¦ã€§ã€¨ã€©ï¿½å�„�ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï½�bcdefghijklï½�nï½�ï½�qrstuvwxyzΑΒΓΔΕΖΗΘΙΚ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŠŠèŠƒèŠ„è±¸è¿‰è¾¿é‚Ÿé‚¡é‚¥é‚žé‚§é‚ é˜°é˜¨é˜¯é˜ä¸³ä¾˜ä½¼ä¾…佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑咂咈呫呺呾呥呬呴呦å’�å‘¯å‘¡å‘ å’˜å‘£å‘§å‘¤å›·å›¹å�¯å�²å�å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î›ÎœÎ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"���������������������������������å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇å¢å¥å®“å®•å±„å±‡å²®å²¤å² å²µå²¯å²¨å²¬å²Ÿå²£å²å²¢å²ªå²§å²�å²¥å²¶å²°å²¦å¸—å¸”å¸™å¼¨å¼¢å¼£å¼¤å½”å¾‚å½¾å½½å¿žå¿¥æ€æ€¦æ€™æ€²æ€‹æ€´æ€Šæ€—怳怚怞怬怢æ€�æ€�æ€®æ€“æ€‘æ€Œæ€‰æ€œæˆ”æˆ½æŠæŠ´æ‹‘æŠ¾æŠªæŠ¶æ‹ŠæŠ®æŠ³æŠ¯æŠ»æŠ©æŠ°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â‘ â‘¡â‘¢â‘£â‘¤â‘¥â‘¦â‘§â‘¨â‘©â‘´â‘µâ‘¶â‘·â‘¸â‘¹â‘ºâ‘»â‘¼â‘½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをんァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼ�\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"���������������������������������抸攽斨斻昉旼昄昒昈旻昃昋æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃æ�½æž�æ�¸æ�¹æž”æ¬¥æ®€æ¾æ¯žæ°�æ²“æ³¬æ³«æ³®æ³™æ²¶æ³”æ²æ³§æ²·æ³�æ³‚æ²ºæ³ƒæ³†æ³æ³²æ³’æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�æ³©æ³‘ç‚”ç‚˜ç‚…ç‚“ç‚†ç‚„ç‚‘ç‚–ç‚‚ç‚šç‚ƒç‰ªç‹–ç‹‹ç‹˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä¸¶ä¸¿ï¿½äº…ï¿½äº ï¿½ï¿½ï¿½ï¿½å†‚å†–å†«ï¿½ï¿½ï¿½ï¿½å‹¹ï¿½ï¿½åŒ¸ï¿½ï¿½å�©ï¿½åŽ¶ï¿½ï¿½ï¿½ï¿½ï¿½å¤‚ï¿½ï¿½ï¿½ï¿½å®€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å·›ï¿½ï¿½ï¿½ï¿½å¹ºå¹¿å»´ï¿½ï¿½ï¿½å½�å½¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ”´ï¿½ï¿½ï¿½ï¿½æ— ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"���������������������������������狉狜狒狔狚狌狑玤玡çŽçŽ¦çŽ¢çŽ çŽ¬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵è‚èˆ èŠ è‹€èŠ«èŠšèŠ˜èŠ›èŠµèŠ§èŠ®èŠ¼èŠžèŠºèŠ´èŠ¨èŠ¡èŠ©è‹‚èŠ¤è‹ƒèŠ¶èŠ¢è™°è™¯è™è™®è±–è¿’è¿‹è¿“è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅������������������������������������������疒癶��������������������������������������������������������辵��������隶�������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"���������������������������������俓侲俉俋ä¿�俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’å’¥å“�哃èŒ�å’·å’®å“–å’¶å“…å“†å’ å‘°å’¼å’¢å’¾å‘²å“žå’°åžµåžžåžŸåž¤åžŒåž—åž�垛垔垘åž�垙垥垚垕壴å¤�奓姡姞姮娀姱å§�å§ºå§½å§¼å§¶å§¤å§²å§·å§›å§©å§³å§µå§ å§¾å§´å§å®¨å±Œå³�峘峌峗峋���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"���������������������������������峛峞峚峉峇峊峖峓峔å³�å³ˆå³†å³Žå³Ÿå³¸å·¹å¸¡å¸¢å¸£å¸ å¸¤åº°åº¤åº¢åº›åº£åº¥å¼‡å¼®å½–å¾†æ€·æ€¹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲柈����������������������������������î‘î’�î’�î’Žî’�î’�î’�î’žî’Ÿî’ î’¡î’¢î’£î’¤î’¥î’¦î’§î’¨î’©î’ªî’«î’¬î’î“��\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"���������������������������������枺柜枻柸柘柀枷柅柫柤柟枵æŸ�æž³æŸ·æŸ¶æŸ®æŸ£æŸ‚æž¹æŸŽæŸ§æŸ°æž²æŸ¼æŸ†æŸæŸŒæž®æŸ¦æŸ›æŸºæŸ‰æŸŠæŸƒæŸªæŸ‹æ¬¨æ®‚æ®„æ®¶æ¯–æ¯˜æ¯ æ° æ°¡æ´¨æ´´æ´æ´Ÿæ´¼æ´¿æ´’洊泚洳洄洙洺洚洑洀æ´�浂æ´�洘洷洃æ´�æµ€æ´‡æ´ æ´¬æ´ˆæ´¢æ´‰æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊����������������������������������î“�î“�î“�î“�î“žî“Ÿî“ î“¡î“¢î“£î“¤î“¥î“¦î“§î“¨î“©î“ªî“«î“¬î“î”�î”�î”�î”�î”�î”žî”Ÿî” î”¡î”¢î”£ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"���������������������������������狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„çœˆçœƒçœ„çœ…çœŠç›·ç›»ç›ºçŸ§çŸ¨ç †ç ‘ç ’ç …ç �ç �ç Žç ‰ç ƒç “ç¥Šç¥Œç¥‹ç¥…ç¥„ç§•ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�è€”è€·èƒ˜èƒ‡èƒ èƒ‘èƒˆèƒ‚èƒ�胅����������������������������������î”î•�î•�î•�î•�î•�î•žî•Ÿî• î•¡î•¢î•£î•¤î•¥î•¦î•§î•¨î•©î•ªî•«î•¬î•î–��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"���������������������������������胣胙胜胊胕胉èƒ�胗胦èƒ�è‡¿èˆ¡èŠ”è‹™è‹¾è‹¹èŒ‡è‹¨èŒ€è‹•èŒºè‹«è‹–è‹´è‹¬è‹¡è‹²è‹µèŒŒè‹»è‹¶è‹°è‹ªè‹¤è‹ è‹ºè‹³è‹è™·è™´è™¼è™³è¡�è¡Žè¡§è¡ªè¡©è§“è¨„è¨‡èµ²è¿£è¿¡è¿®è¿ éƒ±é‚½é‚¿éƒ•éƒ…é‚¾éƒ‡éƒ‹éƒˆé‡”é‡“é™”é™�é™‘é™“é™Šé™Žå€žå€…å€‡å€“å€¢å€°å€›ä¿µä¿´å€³å€·å€¬ä¿¶ä¿·å€—å€œå€ å€§å€µå€¯å€±å€Žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î–‚î–ƒî–„î–…î–†î–‡î–ˆî–‰î–Šî–‹î–Œî–�î–Žî–�î–�î–�î–žî–Ÿî– î–¡î–¢î–£î–¤î–¥î–¦î–§î–¨î–©î–ªî–«î–¬î–î—�î—�î—Žî—�î—�î—��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"���������������������������������党冔冓凊凄凅凈凎剡剚剒剞剟剕剢å‹�åŒŽåŽžå”¦å“¢å”—å”’å“§å“³å“¤å”šå“¿å”„å”ˆå“«å”‘å”…å“±å”Šå“»å“·å“¸å“ å”Žå”ƒå”‹åœ�åœ‚åŸŒå ²åŸ•åŸ’åžºåŸ†åž½åž¼åž¸åž¶åž¿åŸ‡åŸ�åž¹åŸ�夎奊娙娖å¨å¨®å¨•å¨�娗娊娞娳å¬å®§å®å®¬å°ƒå±–屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ��ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î— î—¡î—¢î—£î—¤î—¥î—¦î—§î—¨î—©î—ªî—«î—¬î—î˜�î˜�î˜�î˜�î˜�î˜žî˜Ÿî˜ î˜¡î˜¢î˜£î˜¤î˜¥î˜¦î˜§î˜¨î˜©î˜ªî˜«î˜¬î˜î˜®î˜¯î˜°î˜±î˜²î˜³î˜´î˜µî˜¶î˜·î˜¸î˜¹î˜ºî˜»î˜¼î˜½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"���������������������������������æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”æ�™æŒæ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„æ—‚æ™Šæ™Ÿæ™‡æ™‘æœ’æœ“æ Ÿæ šæ¡‰æ ²æ ³æ »æ¡‹æ¡�æ –æ ±æ œæ µæ «æ æ ¯æ¡Žæ¡„æ ´æ �æ ’æ ”æ ¦æ ¨æ ®æ¡�æ ºæ ¥æ æ¬¬æ¬¯æ¬æ¬±æ¬´æè‚‚殈����������������������������������î™�î™�î™�î™�î™�î™žî™Ÿî™ î™¡î™¢î™£î™¤î™¥î™¦î™§î™¨î™©î™ªî™«î™¬î™î™®î™¯î™°î™±î™²î™³î™´î™µî™¶î™·î™¸î™¹î™ºî™»î™¼î™½î™¾î™¿îš€îš�îš�îš�îš��\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"���������������������������������毦毤毨毣毢毧氥浺浣浤浶æ´�æµ¡æ¶’æµ˜æµ¢æµæµ¯æ¶‘æ¶�æ·¯æµ¿æ¶†æµžæµ§æµ æ¶—æµ°æµ¼æµŸæ¶‚æ¶˜æ´¯æµ¨æ¶‹æµ¾æ¶€æ¶„æ´–æ¶ƒæµ»æµ½æµµæ¶�烜烓烑çƒ�çƒ‹ç¼¹çƒ¢çƒ—çƒ’çƒžçƒ çƒ”çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îšœîš�îšžîšŸîš îš¡îš¢îš£îš¤îš¥îš¦îš§îš¨îš©îšªîš«îš¬îšîš®îš¯îš°îš±îš²îš³îš´îšµîš¶îš·îš¸îš¹îšºîš»îš¼îš½îš¾îš¿î›€î›�î›�î›�î›�î›�î›žî›Ÿî› î›¡î›¢î›£î›¤î›¥î›¦î›§î›¨î›©î›ªî›«î›¬î›î›®î›¯î›°î›±î›²î›³î›´î›µî›¶î›·î›¸î›¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"���������������������������������瓴瓵甡畛畟疰ç—�疻痄痀疿疶疺皊盉çœ�眛çœ�çœ“çœ’çœ£çœ‘çœ•çœ™çœšçœ¢çœ§ç £ç ¬ç ¢ç µç ¯ç ¨ç ®ç «ç ¡ç ©ç ³ç ªç ±ç¥”ç¥›ç¥�ç¥œç¥“ç¥’ç¥‘ç§«ç§¬ç§ ç§®ç§ç§ªç§œç§žç§�窆窉窅窋窌窊窇竘ç¬�笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�紌罜罡����������������������������������îœ�îœ�îœ�îœ�îœ�îœžîœŸîœ îœ¡îœ¢îœ£îœ¤îœ¥îœ¦îœ§îœ¨îœ©îœªîœ«îœ¬îœîœ®îœ¯îœ°îœ±îœ²îœ³îœ´îœµîœ¶îœ·îœ¸îœ¹îœºîœ»îœ¼îœ½îœ¾îœ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç½žç½ ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳èŒè�„茙è�‘茥è�–茿è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��èŒ–èŒ¤èŒ èŒ·èŒ¯èŒ©è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄è¡è¡µè¡¶è¡²è¢€è¡±è¡¿è¡¯è¢ƒè¡¾è¡´è¡¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îž€îž�îž�îž�îž�îž�îžžîžŸîž îž¡îž¢îž£îž¤îž¥îž¦îž§îž¨îž©îžªîž«îž¬îžîž®îž¯îž°îž±îž²îž³îž´îžµï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨’è±‡è±—è±»è²¤è²£èµ¶èµ¸è¶µè¶·è¶¶è»‘è»“è¿¾è¿µé€‚è¿¿è¿»é€„è¿¼è¿¶éƒ–éƒ éƒ™éƒšéƒ£éƒŸéƒ¥éƒ˜éƒ›éƒ—éƒœéƒ¤é…�é…Žé…�釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫å‰å‰¬å‰®å‹–å‹“åŒåŽœå•µå•¶å”¼å•�å•�唴唪啑啢唶唵����������������������������������îŸ�îŸ�îŸ�îŸ�îŸ�îŸžîŸŸîŸ îŸ¡îŸ¢îŸ£îŸ¤îŸ¥îŸ¦îŸ§îŸ¨îŸ©îŸªîŸ«îŸ¬îŸîŸ®îŸ¯îŸ°îŸ±îŸ²îŸ³îŸ´îŸµîŸ¶îŸ·îŸ¸îŸ¹îŸºîŸ»îŸ¼îŸ½îŸ¾îŸ¿î €î �î ‚î ƒî „î …î †î ‡î ˆî ‰î Šî ‹î Œî �î Žî �î �î ‘î ’î “ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"���������������������������������唰啒啅唌唲啥啎唹啈å”å”»å•€å•‹åœŠåœ‡åŸ»å ”åŸ¢åŸ¶åŸœåŸ´å €åŸåŸ½å ˆåŸ¸å ‹åŸ³åŸ�å ‡åŸ®åŸ£åŸ²åŸ¥åŸ¬åŸ¡å ŽåŸ¼å �埧å �å ŒåŸ±åŸ©åŸ°å �å „å¥œå© å©˜å©•å©§å©žå¨¸å¨µå©å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜å²å®å¯�寀屙崞崋å´�å´šå´ å´Œå´¨å´�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î ”î •î –î —î ˜î ™î šî ›î œî �î žî Ÿî î ¡î ¢î £î ¤î ¥î ¦î §î ¨î ©î ªî «î ¬î î ®î ¯î °î ±î ²î ³î ´î µî ¶î ·î ¸î ¹î ºî »î ¼î ½î ¾î ¿î¡€î¡�î¡�î¡�î¡�î¡�î¡žî¡Ÿî¡ î¡¡î¡¢î¡£î¡¤î¡¥î¡¦î¡§î¡¨î¡©î¡ªî¡«î¡¬î¡î¡®î¡¯î¡°î¡±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"���������������������������������崦崥å´�崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽæŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�掮æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�æ¢œæ¡æ¡®æ¢®æ¢«æ¥–桯梣梬梩����������������������������������î¢�î¢�î¢�î¢�î¢�î¢žî¢Ÿî¢ î¢¡î¢¢î¢£î¢¤î¢¥î¢¦î¢§î¢¨î¢©î¢ªî¢«î¢¬î¢î¢®î¢¯î¢°î¢±î¢²î¢³î¢´î¢µî¢¶î¢·î¢¸î¢¹î¢ºî¢»î¢¼î¢½î¢¾î¢¿î£€î£�î£�î£��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"���������������������������������桵桴梲æ¢�æ¡·æ¢’æ¡¼æ¡«æ¡²æ¢ªæ¢€æ¡±æ¡¾æ¢›æ¢–æ¢‹æ¢ æ¢‰æ¢¤æ¡¸æ¡»æ¢‘æ¢Œæ¢Šæ¡½æ¬¶æ¬³æ¬·æ¬¸æ®‘æ®�æ®�æ®Žæ®Œæ°ªæ·€æ¶«æ¶´æ¶³æ¹´æ¶¬æ·©æ·¢æ¶·æ·¶æ·”æ¸€æ·ˆæ· æ·Ÿæ·–æ¶¾æ·¥æ·œæ·�æ·›æ·´æ·Šæ¶½æ·æ·°æ¶ºæ·•æ·‚æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎����������������������������������î£�î£�î£žî£Ÿî£ î£¡î£¢î££î£¤î£¥î£¦î£§î£¨î£©î£ªî£«î£¬î£î£®î£¯î£°î£±î£²î£³î£´î£µî£¶î£·î£¸î£¹î£ºî£»î£¼î£½î£¾î£¿î¤€î¤�î¤�î¤�î¤�î¤�î¤žî¤Ÿî¤ î¤¡î¤¢î¤£î¤¤î¤¥î¤¦î¤§î¤¨î¤©î¤ªî¤«î¤¬î¤ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"���������������������������������牾牻牼牿çŒ�猗猇猑猘猊猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋痌痑ç—�çš�皉盓眹眯çœçœ±çœ²çœ´çœ³çœ½çœ¥çœ»çœµç¡ˆç¡’硉ç¡�ç¡Šç¡Œç ¦ç¡…ç¡�祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵笻笴笥笰笢笤笳笘笪ç¬�笱笫ç¬ç¬¯ç¬²ç¬¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¤®î¤¯î¤°î¤±î¤²î¤³î¤´î¤µî¤¶î¤·î¤¸î¤¹î¤ºî¤»î¤¼î¤½î¤¾î¤¿î¥€î¥�î¥�î¥�î¥�î¥�î¥žî¥Ÿî¥ î¥¡î¥¢î¥£î¥¤î¥¥î¥¦î¥§î¥¨î¥©î¥ªî¥«î¥¬î¥î¥®î¥¯î¥°î¥±î¥²î¥³î¥´î¥µî¥¶î¥·î¥¸î¥¹î¥ºî¥»î¥¼î¥½î¥¾î¥¿î¦€î¦��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"���������������������������������笚笣粔粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„脟脬脞脡脕脧è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶è™™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¦Œî¦�î¦�î¦�î¦�î¦žî¦Ÿî¦ î¦¡î¦¢î¦£î¦¤î¦¥î¦¦î¦§î¦¨î¦©î¦ªî¦«î¦¬î¦î¦®î¦¯î¦°î¦±î¦²î¦³î¦´î¦µî¦¶î¦·î¦¸î¦¹î¦ºî¦»î¦¼î¦½î¦¾î¦¿î§€î§�î§�î§Žî§�î§�î§�î§žî§Ÿî§ î§¡î§¢î§£î§¤î§¥î§¦î§§î§¨î§©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"���������������������������������虖蚿蚷蛂è›�蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘軞è»�è»œè»—è» è»¡é€¤é€‹é€‘é€œé€Œé€¡éƒ¯éƒªéƒ°éƒ´éƒ²éƒ³éƒ”éƒ«éƒ¬éƒ©é…–é…˜é…šé…“é…•é‡¬é‡´é‡±é‡³é‡¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î§ªî§«î§¬î§î§®î§¯î§°î§±î§²î§³î§´î§µî§¶î§·î§¸î§¹î§ºî§»î§¼î§½î§¾î§¿î¨€î¨�î¨�î¨�î¨�î¨�î¨žî¨Ÿî¨ î¨¡î¨¢î¨£î¨¤î¨¥î¨¦î¨§î¨¨î¨©î¨ªî¨«î¨¬î¨î¨®î¨¯î¨°î¨±î¨²î¨³î¨´î¨µî¨¶î¨·î¨¸î¨¹î¨ºî¨»î¨¼î¨½î¨¾î¨¿î©€î©��\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"���������������������������������釤釹釪釫釷釨釮镺閆閈陼é™é™«é™±é™¯éš¿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥å–啷噅喢喓喈å–�å–µå–�å–£å–’å–¤å•½å–Œå–¦å•¿å–•å–¡å–ŽåœŒå ©å ·å ™å žå §å £å ¨åŸµå¡ˆå ¥å œå ›å ³å ¿å ¶å ®å ¹å ¸å å ¬å »å¥¡åª¯åª”åªŸå©ºåª¢åªžå©¸åª¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î©ˆî©‰î©Šî©‹î©Œî©�î©�î©�î©�î©žî©Ÿî© î©¡î©¢î©£î©¤î©¥î©¦î©§î©¨î©©î©ªî©«î©¬î©î©®î©¯î©°î©±î©²î©³î©´î©µî©¶î©·î©¸î©¹î©ºî©»î©¼î©½î©¾î©¿îª€îª�îª�îª�îª�îª�îªžîªŸîª îª¡îª¢îª£îª¤îª¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"���������������������������������婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜åª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îª¦îª§îª¨îª©îªªîª«îª¬îªîª®îª¯îª°îª±îª²îª³îª´îªµîª¶îª·îª¸îª¹îªºîª»îª¼îª½îª¾îª¿î«€î«�î«�î«�î«�î«�î«žî«Ÿî« î«¡î«¢î«£î«¤î«¥î«¦î«§î«¨î«©î«ªî««î«¬î«î«®î«¯î«°î«±î«²î«³î«´î«µî«¶î«·î«¸î«¹î«ºî«»î«¼î«½î«¾î«¿î¬€î¬��\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"���������������������������������æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻����������������������������������î¬�î¬�î¬�î¬�î¬žî¬Ÿî¬ î¬¡î¬¢î¬£î¬¤î¬¥î¬¦î¬§î¬¨î¬©î¬ªî¬«î¬¬î¬î¬®î¬¯î¬°î¬±î¬²î¬³î¬´î¬µî¬¶î¬·î¬¸î¬¹î¬ºî¬»î¬¼î¬½î¬¾î¬¿î€î�î‚îƒî„î…î†î‡îˆî‰îŠî‹îŒî�îŽî�î�î‘î’î“î”î•î–î—î˜î™îšî›îœî�îžîŸî î¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"���������������������������������欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�æ¹³æ¸œæ¸³æ¹‹æ¹€æ¹‘æ¸»æ¸ƒæ¸®æ¹žæ¹¨æ¹œæ¹¡æ¸±æ¸¨æ¹ æ¹±æ¹«æ¸¹æ¸¢æ¸°æ¹“æ¹¥æ¸§æ¹¸æ¹¤æ¹·æ¹•æ¹¹æ¹’æ¹¦æ¸µæ¸¶æ¹šç„ ç„žç„¯çƒ»ç„®ç„±ç„£ç„¥ç„¢ç„²ç„Ÿç„¨ç„ºç„›ç‰‹ç‰šçŠˆçŠ‰çŠ†çŠ…çŠ‹çŒ’çŒ‹çŒ°çŒ¢çŒ±çŒ³çŒ§çŒ²çŒçŒ¦çŒ£çŒµçŒŒç�®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¢î£î¤î¥î¦î§î¨î©îªî«î¬îî®î¯î°î±î²î³î´îµî¶î·î¸î¹îºî»î¼î½î¾î¿î®€î®�î®�î®�î®�î®�î®žî®Ÿî® î®¡î®¢î®£î®¤î®¥î®¦î®§î®¨î®©î®ªî®«î®¬î®î®®î®¯î®°î®±î®²î®³î®´î®µî®¶î®·î®¸î®¹î®ºî®»î®¼î®½î®¾î®¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"���������������������������������ç�¬ç�°ç�«ç�–ç�šç�¡ç�ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ 硤硥硜ç¡ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤çŠç‡ç„çˆçŒçŽç€ç˜ç…粢粞粨粡絘絯絣絓絖絧絪çµ�çµçµœçµ«çµ’絔絩絑絟����������������������������������î¯�î¯�î¯�î¯�î¯�î¯žî¯Ÿî¯ î¯¡î¯¢î¯£î¯¤î¯¥î¯¦î¯§î¯¨î¯©î¯ªî¯«î¯¬î¯î¯®î¯¯î¯°î¯±î¯²î¯³î¯´î¯µî¯¶î¯·î¯¸î¯¹î¯ºî¯»î¯¼î¯½î¯¾î¯¿î°€î°�î°�î°Žî°�î°�î°��\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çµŽç¼¾ç¼¿ç½¥ç½¦ç¾¢ç¾ ç¾¡ç¿—è�‘è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è��è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“莚è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�è›«è›œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î°žî°Ÿî° î°¡î°¢î°£î°¤î°¥î°¦î°§î°¨î°©î°ªî°«î°¬î°î°®î°¯î°°î°±î°²î°³î°´î°µî°¶î°·î°¸î°¹î°ºî°»î°¼î°½î°¾î°¿î±€î±�î±�î±�î±�î±�î±žî±Ÿî± î±¡î±¢î±£î±¤î±¥î±¦î±§î±¨î±©î±ªî±«î±¬î±î±®î±¯î±°î±±î±²î±³î±´î±µî±¶î±·î±¸î±¹î±ºî±»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"���������������������������������蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩é€é€´é€¯é„†é„¬é„„郿郼鄈郹郻é„�鄀����������������������������������î²�î²�î²�î²�î²�î²žî²Ÿî² î²¡î²¢î²£î²¤î²¥î²¦î²§î²¨î²©î²ªî²«î²¬î²î²®î²¯î²°î²±î²²î²³î²´î²µî²¶î²·î²¸î²¹î²ºî²»î²¼î²½î²¾î²¿î³€î³�î³�î³�î³��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é„‡é„…é„ƒé…¡é…¤é…Ÿé…¢é… éˆ�鈊鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕����������������������������������î³�î³žî³Ÿî³ î³¡î³¢î³£î³¤î³¥î³¦î³§î³¨î³©î³ªî³«î³¬î³î³®î³¯î³°î³±î³²î³³î³´î³µî³¶î³·î³¸î³¹î³ºî³»î³¼î³½î³¾î³¿î´€î´�î´�î´Žî´�î´�î´�î´žî´Ÿî´ î´¡î´¢î´£î´¤î´¥î´¦î´§î´¨î´©î´ªî´«î´¬î´î´®î´¯î´°î´±î´²î´³î´´î´µî´¶î´·ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"���������������������������������嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�å¡™å¡¥å¡›å ½å¡£å¡±å£¼å«‡å«„å«‹åªºåª¸åª±åªµåª°åª¿å«ˆåª»å«†åª·å«€å«Šåª´åª¶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�å¹‹å»…å»Œå»†å»‹å»‡å½€å¾¯å¾æƒ·æ…‰æ…Šæ„«æ……愶愲愮慆愯æ…�æ„©æ…€æˆ é…¨æˆ£æˆ¥æˆ¤æ�…æ�±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î´¸î´¹î´ºî´»î´¼î´½î´¾î´¿îµ€îµ�îµ�îµ�îµ�îµ‘îµ’îµ“îµ”îµ•îµ–îµ—ï¿¢ï¿¤ï¿½ï¿½ãˆ±â„–â„¡îµŸîµ îµ¡îµ¢îµ£îµ¤îµ¥îµ¦îµ§îµ¨îµ©îµªîµ«îµ¬îµîµ®îµ¯îµ°îµ±îµ²îµ³îµ´ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"���������������������������������æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓暆暌暕æš�æš‹æšŠæš™æš”æ™¸æœ æ¥¦æ¥Ÿæ¤¸æ¥Žæ¥¢æ¥±æ¤¿æ¥…æ¥ªæ¤¹æ¥‚æ¥—æ¥™æ¥ºæ¥ˆæ¥‰æ¤µæ¥¬æ¤³æ¤½æ¥¥æ£°æ¥¸æ¤´æ¥©æ¥€æ¥¯æ¥„æ¥¶æ¥˜æ¥�楴楌椻楋椷楜æ¥�æ¥‘æ¤²æ¥’æ¤¯æ¥»æ¤¼æ†æ…æƒæ‚����������������������������������î¶�î¶�î¶Žî¶�î¶�î¶�î¶žî¶Ÿî¶ î¶¡î¶¢î¶£î¶¤î¶¥î¶¦î¶§î¶¨î¶©î¶ªî¶«î¶¬î¶î¶®î¶¯î¶°î¶±î¶²î¶³î¶´î¶µî¶¶î¶·î¶¸î¶¹î¶ºî¶»î¶¼î¶½î¶¾î¶¿î·€î·�î·�î·Žî·�î·��\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æˆæ�殛毻毼毹毷毸溛滖滈æº�æ»€æºŸæº“æº”æº æº±æº¹æ»†æ»’æº½æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�æ»Šæº—æº®æº£ç…‡ç…”ç…’ç…£ç… ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�ç…“ç…„ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎����������������������������������一乙ä¸�七乃ä¹�äº†äºŒäººå„¿å…¥å…«å‡ åˆ€åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å�å‘å“寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰�丑ä¸�ä¸�ä¸ä¸°ä¸¹ä¹‹å°¹äºˆäº‘井互五亢ä»�什仃仆仇ä»�今介仄元å…�å…§å…兮公冗凶�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"���������������������������������瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶ç—痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ç�§ç�”ç�™ç�çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛ç¨�窣窢窞竫ç¦ç¤çç´ç©ç²ç¥ç³ç±ç°ç¡ç¸ç¶ç£ç²²ç²´ç²¯ç¶ˆç¶†ç¶€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åˆ†åˆ‡åˆˆå‹»å‹¾å‹¿åŒ–匹å�ˆå�‡å�…å�žåŽ„å�‹å�Šå��壬天夫太å¤å”å°‘å°¤å°ºå±¯å·´å¹»å»¿å¼”å¼•å¿ƒæˆˆæˆ¶æ‰‹æ‰Žæ”¯æ–‡æ–—æ–¤æ–¹æ—¥æ›°æœˆæœ¨æ¬ æ¢æ¹æ¯‹æ¯”毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�ä¹Žä»¥ä»˜ä»”ä»•ä»–ä»—ä»£ä»¤ä»™ä»žå……å…„å†‰å†Šå†¬å‡¹å‡ºå‡¸åˆŠåŠ åŠŸåŒ…åŒ†ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"���������������������������������ç¶�絿綅絺綎絻綃絼綌綔綄絽綒ç½ç½«ç½§ç½¨ç½¬ç¾¦ç¾¥ç¾§ç¿›ç¿œè€¡è…¤è… 腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�葟葰è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åŒ—åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�å�»å››å›šå¤–央失奴奶å•它尼巨巧左市布平幼å¼�å¼˜å¼—å¿…æˆŠæ‰“æ‰”æ‰’æ‰‘æ–¥æ—¦æœ®æœ¬æœªæœ«æœæ£æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴�\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"���������������������������������葨葾葄è�«è‘ 葔葮è‘�蜋蜄蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�è¦…è¦›è§Ÿè§¥è§¤è§¡è§ è§¢è§œè§¦è©¶èª†è©¿è©¡è¨¿è©·èª‚èª„è©µèªƒèª�詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�è¶’è·°è· è·¬è·±è·®è·�跩跣跢跧跲跫跴輆軿è¼�輀輅����������������������������������立丞丟乒乓乩亙交亦亥仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�å†°åˆ—åˆ‘åˆ’åˆŽåˆ–åŠ£åŒˆåŒ¡åŒ å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’å› å›žå›�圳地在åœåœ¬åœ¯åœ©å¤™å¤šå¤·å¤¸å¦„奸妃好她如å¦�å—å˜å®‡å®ˆå®…安寺尖屹州帆并�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"���������������������������������輇輈輂輋é�’逿é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆é‰é‰¬é‰�é‰ é‰§é‰¯éˆ¶é‰¡é‰°éˆ±é‰”é‰£é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �é Žé¢¬é£¶é£¹é¦¯é¦²é¦°é¦µéªéª«é›é³ªé³é³§éº€é»½åƒ¦åƒ”僗僨僳僛僪åƒ�僤����������������������������������年å¼�弛忙忖戎戌æˆ�æˆ�æ‰£æ‰›æ‰˜æ”¶æ—©æ—¨æ—¬æ—æ›²æ›³æœ‰æœ½æœ´æœ±æœµæ¬¡æ¤æ»æ°–æ±�æ±—æ±™æ±Ÿæ± æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�佑伽伺伸佃佔似但�\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åƒ“åƒ¬åƒ°åƒ¯åƒ£åƒ å‡˜åŠ€åŠ�勩勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚å«å««å«³å«¢å« 嫛嫬嫞å«�嫙嫨嫟å·å¯ 寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�åµ¹åµ¿å¹˜å¹™å¹“å»˜å»‘å»—å»Žå»œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä½£ä½œä½ ä¼¯ä½Žä¼¶ä½™ä½�佈佚兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�å�žå�¾å�¦å‘Žå�§å‘†å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å�åœåšå›å®Œå®‹å®�尬局å±��\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"���������������������������������廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�æ‘´æ‘¶æ‘²æ‘³æ‘½æ‘µæ‘¦æ’¦æ‘Žæ’‚æ‘žæ‘œæ‘‹æ‘“æ‘ æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…æœ„æœ¢æ¦±æ¦¶æ§‰æ¦ æ§Žæ¦–æ¦°æ¦¬æ¦¼æ¦‘æ¦™æ¦Žæ¦§æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓����������������������������������尿尾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�å¿±å¿«å¿¸å¿ªæˆ’æˆ‘æŠ„æŠ—æŠ–æŠ€æ‰¶æŠ‰æ‰æŠŠæ‰¼æ‰¾æ‰¹æ‰³æŠ’æ‰¯æŠ˜æ‰®æŠ•æŠ“æŠ‘æŠ†æ”¹æ”»æ”¸æ—±æ›´æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� æ�“æ�—æ¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"���������������������������������榪榡榞槙榗æ¦�æ§‚æ¦µæ¦¥æ§†æŠæ�æ‹æ®žæ®Ÿæ® æ¯ƒæ¯„æ¯¾æ»Žæ»µæ»±æ¼ƒæ¼¥æ»¸æ¼·æ»»æ¼®æ¼‰æ½Žæ¼™æ¼šæ¼§æ¼˜æ¼»æ¼’æ»æ¼Šæ¼¶æ½³æ»¹æ»®æ¼æ½€æ¼°æ¼¼æ¼µæ»«æ¼‡æ¼Žæ½ƒæ¼…滽滶漹漜滼漺漟æ¼�漞漈漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽����������������������������������沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ 狄狂玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"���������������������������������ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ 碬碢碤禘禊禋禖禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩����������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅åŸå¤å£å®—定官宜宙宛尚�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"���������������������������������綡緉罳翢翣翥翞耤è��è�œè†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�è’ è“—è“”è“’è“›è’°è’‘è™¡èœ³èœ£èœ¨è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ 蜲蜪èœèœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱����������������������������������屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�å¿ å¿½å¿µå¿¿æ€�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"���������������������������������裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�é„£é„œé„ é„¢é„Ÿé„�é„šé„¤é„¡é„›é…ºé…²é…¹é…³éŠ¥éŠ¤é‰¶éŠ›é‰ºéŠ éŠ”éŠªéŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩éŠ�����������������������������������昕昊昇æœ�朋æ�枋枕æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ¦æ§æ¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�æ²®æ³—æ³…æ³±æ²¿æ²»æ³¡æ³›æ³Šæ²¬æ³¯æ³œæ³–æ³ ç‚•ç‚Žç‚’ç‚Šç‚™çˆ¬çˆçˆ¸ç‰ˆç‰§ç‰©ç‹€ç‹Žç‹™ç‹—ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"���������������������������������銋éˆéšžéš¡é›¿é�˜é�½é�ºé�¾éžƒéž€éž‚é�»éž„éž�é�¿éŸŽéŸ�é –é¢é¢®é¤‚餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧鬾鬿é é¡éŸé³±é³²é³µéº§åƒ¿å„ƒå„°åƒ¸å„†å„‡åƒ¶åƒ¾å„‹å„Œåƒ½å„ŠåŠ‹åŠŒå‹±å‹¯å™ˆå™‚å™Œå˜µå™�噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�å¢±å¢ å¢£å¢¯å¢¬å¢¥å¢¡å£¿å«¿å«´å«½å«·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çŸ¥çŸ½ç¤¾ç¥€ç¥�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙èŠèŠ½èŠŸèŠ¹èŠ±èŠ¬èŠ¥èŠ¯èŠ¸èŠ£èŠ°èŠ¾èŠ·è™Žè™±åˆ�表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨é�’é�žäºŸäºäº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�俄係俚俎俞�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"���������������������������������嫶嬃嫸嬂嫹å¬�嬇嬅å¬�å±§å¶™å¶—å¶Ÿå¶’å¶¢å¶“å¶•å¶ å¶œå¶¡å¶šå¶žå¹©å¹�å¹ å¹œç·³å»›å»žå»¡å½‰å¾²æ†‹æ†ƒæ…¹æ†±æ†°æ†¢æ†‰æ†›æ†“æ†¯æ†æ†Ÿæ†’憪憡æ†�æ…¦æ†³æˆæ‘®æ‘°æ’–æ’ æ’…æ’—æ’œæ’�æ’‹æ’Šæ’Œæ’£æ’Ÿæ‘¨æ’±æ’˜æ•¶æ•ºæ•¹æ•»æ–²æ–³æšµæš°æš©æš²æš·æšªæš¯æ¨€æ¨†æ¨—æ§¥æ§¸æ¨•æ§±æ§¤æ¨ æ§¿æ§¬æ§¢æ¨›æ¨�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä¾·å…—å†’å†‘å† å‰Žå‰ƒå‰Šå‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�å“„å“ˆå’¯å’«å’±å’»å’©å’§å’¿å›¿åž‚åž‹åž åž£åž¢åŸŽåž®åž“å¥•å¥‘å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�å§»å©å®£å®¦å®¤å®¢å®¥å°�屎å±�å±�屋峙峒巷å¸�å¸¥å¸Ÿå¹½åº åº¦å»ºå¼ˆå¼å½¥å¾ˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"���������������������������������槾樧槲槮樔槷槧橀樈槦槻æ¨�槼槫樉樄樘樥æ¨�æ§¶æ¨¦æ¨‡æ§´æ¨–æ‘æ®¥æ®£æ®¢æ®¦æ°�氀毿氂æ½�漦潾澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫潽潧æ¾�æ½“æ¾‹æ½©æ½¿æ¾•æ½£æ½·æ½ªæ½»ç†²ç†¯ç†›ç†°ç† ç†šç†©ç†µç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’����������������������������������待徊律徇後徉怒æ€�æ€ æ€¥æ€Žæ€¨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�æ‹œæŒ–æŒ‰æ‹¼æ‹æŒ�æ‹®æ‹½æŒ‡æ‹±æ‹·æ‹¯æ‹¬æ‹¾æ‹´æŒ‘æŒ‚æ”¿æ•…æ–«æ–½æ—¢æ˜¥æ˜æ˜ 昧是星昨昱昤曷柿染柱柔æŸ�柬架枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�æŸ’æªæ®ƒæ®†æ®µæ¯’毗氟泉洋洲洪æµ�津洌�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"���������������������������������ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�ç£Œç£‘ç£Žç£”ç£ˆç£ƒç£„ç£‰ç¦šç¦¡ç¦ ç¦œç¦¢ç¦›æ¶ç¨¹çª²çª´çª³ç®·ç¯‹ç®¾ç®¬ç¯Žç®¯ç®¹ç¯Šç®µç³…糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰ç¾ç¿ç¿«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ´±æ´žæ´—活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯ç‚ç‚¸ç‚®ç‚¤çˆ°ç‰²ç‰¯ç‰´ç‹©ç‹ ç‹¡çŽ·ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�ç›¹ç›¸çœ‰çœ‹ç›¾ç›¼çœ‡çŸœç ‚ç ”ç Œç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"���������������������������������翪翬翦翨è�¤è�§è†£è†Ÿè†žè†•膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�è”®è”‚è“½è”žè“¶è”±è”¦è“§è“¨è“°è“¯è“¹è”˜è” è”°è”‹è”™è”¯è™¢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¾Žç¾¿è€�è€�耑耶胖胥胚胃胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�è§”è¨ˆè¨‚è¨ƒè²žè² èµ´èµ³è¶´è»�軌述迦迢迪迥è¿è¿«è¿¤è¿¨éƒŠéƒŽéƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸéŸ³é �風飛食首香乘亳�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"���������������������������������è�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣è§è§°è§¬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�è³§è¶ è¶œè¶¡è¶›è¸ è¸£è¸¥è¸¤è¸®è¸•è¸›è¸–è¸‘è¸™è¸¦è¸§è¸”è¸’è¸˜è¸“è¸œè¸—è¸šè¼¬è¼¤è¼˜è¼šè¼ è¼£è¼–è¼—é�³é�°é�¯é�§é�«é„¯é„«é„©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å€Œå€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修å€å€ªä¿¾å€«å€‰å…¼å†¤å†¥å†¢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩å“員唉哮哪哦唧唇哽å”�åœƒåœ„åŸ‚åŸ”åŸ‹åŸƒå ‰å¤�å¥—å¥˜å¥šå¨‘å¨˜å¨œå¨Ÿå¨›å¨“å§¬å¨ å¨£å¨©å¨¥å¨Œå¨‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"���������������������������������鄪鄲鄦鄮醅醆醊é†�醂醄醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�é‹•é‹‰é‹ é‹žé‹§é‹‘é‹“éŠµé‹¡éŒ¥é‹†éŠ´é•¼é–¬é–«é–®é–°éš¤éš¢é›“éœ…éœˆéœ‚é�šéžŠéžŽéžˆéŸ�éŸ�é žé �é ¦é ©é ¨é é ›é §é¢²é¤ˆé£ºé¤‘é¤”é¤–é¤—é¤•é§œé§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳����������������������������������å«å±˜å®°å®³å®¶å®´å®®å®µå®¹å®¸å°„屑展å±�å³å³½å³»å³ªå³¨å³°å³¶å´�å³´å·®å¸å¸«åº«åºåº§å¼±å¾’徑å¾�æ�™æ�£æ�¥æ��æ�•æ�æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºæ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�æ›¸æœ”æœ•æœ—æ ¡æ ¸æ¡ˆæ¡†æ¡“æ ¹æ¡‚æ¡”ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"���������������������������������髲髱é†éƒé§é´é±é¦é¶éµé°é¨é¤é¬é³¼é³ºé³½é³¿é³·é´‡é´€é³¹é³»é´ˆé´…鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ 噮噳噦噣å™å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�å¬–å¬¨å¬šå¬ å¬žå¯¯å¶¬å¶±å¶©å¶§å¶µå¶°å¶®å¶ªå¶¨å¶²å¶å¶¯å¶´å¹§å¹¨å¹¦å¹¯å»©å»§å»¦å»¨å»¥å½‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ ©æ¢³æ —æ¡Œæ¡‘æ ½æŸ´æ¡�æ¡€æ ¼æ¡ƒæ ªæ¡…æ “æ ˜æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�ç›Žçœ©çœŸçœ çœ¨çŸ©ç °ç §ç ¸ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"���������������������������������徼徻æ†�憨憖懅憴懆æ‡�懌憺憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽暻暺曌朣樴橦橉橧樲橨樾æ©�æ©æ©¶æ©›æ©‘樨橚樻樿æ©�橪橤æ©�æ©�æ©”æ©¯æ©©æ© æ¨¼æ©žæ©–æ©•æ©�æ©Žæ©†æ•æ”æ–æ®§æ®ªæ®«æ¯ˆæ¯‡æ°„æ°ƒæ°†æ¾æ¿‹æ¾£æ¿‡æ¾¼æ¿Žæ¿ˆæ½žæ¿„澽澞����������������������������������ç �ç ´ç ·ç ¥ç ç ç Ÿç ²ç¥•ç¥�ç¥ ç¥Ÿç¥–ç¥žç¥�ç¥—ç¥šç§¤ç§£ç§§ç§Ÿç§¦ç§©ç§˜çª„çªˆç«™ç¬†ç¬‘ç²‰ç´¡ç´—ç´‹ç´Šç´ ç´¢ç´”ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耄耘耕耙耗耽耿胱脂胰脅èƒèƒ´è„†èƒ¸èƒ³è„ˆèƒ½è„Šèƒ¼èƒ¯è‡è‡¬èˆ€èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"���������������������������������濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ 璔璒璕璡甋疀瘯ç˜ç˜±ç˜½ç˜³ç˜¼ç˜µç˜²ç˜°çš»ç›¦çžšçž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢ç£ç£Ÿç£ 禤穄穈穇窶窸窵����������������������������������è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙閃院陣陡陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"���������������������������������窱窷篞篣篧ç¯�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗ç³�ç³‘ç¸’ç¸¡ç¸—ç¸Œç¸Ÿç¸ ç¸“ç¸Žç¸œç¸•ç¸šç¸¢ç¸‹ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�è•¢è•„è•‘è•‡è•£è”¾è•›è•±è•Žè•®è•µè••è•§è• è–Œè•¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�´å�·å��å€�å�¯å�兜冕凰剪副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯啤唸售啜唬啣唳å•�å•—åœˆåœ‹åœ‰åŸŸå …å Šå †åŸ åŸ¤åŸºå ‚å µåŸ·åŸ¹å¤ å¥¢å¨¶å©�婉婦婪婀娼婢婚婆婊å°å¯‡å¯…å¯„å¯‚å®¿å¯†å°‰å°ˆå°‡å± å±œå±�崇崆崎崛崖崢崑崩崔�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"���������������������������������è•�蕔蕥蕬虣虥虤螤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰è¤è¤®è¤§è¤±è¤¢è¤©è¤£è¤¯è¤¬è¤Ÿè§±è« 諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å´™å´¤å´§å´—å·¢å¸¸å¸¶å¸³å¸·åº·åº¸åº¶åºµåº¾å¼µå¼·å½—å½¬å½©å½«å¾—å¾™å¾žå¾˜å¾¡å¾ å¾œæ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…æ‚»æ‚µæƒœæ‚¼æƒ˜æƒ•æƒ†æƒŸæ‚¸æƒšæƒ‡æˆšæˆ›æ‰ˆæŽ æŽ§æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—��\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"���������������������������������邆郺鄳鄵鄶醓é†�醑é†�é†�錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒéŒŽéŒ�é‹‹éŒ�鋺錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒éœ�éž™éž—éž”éŸ°éŸ¸é µé ¯é ²é¤¤é¤Ÿé¤§é¤©é¦žé§®é§¬é§¥é§¤é§°é§£é§ªé§©é§§éª¹éª¿éª´éª»é«¶é«ºé«¹é«·é¬³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ—‹æ—Œæ—Žæ™�晚晤晨晦晞曹勗望æ¢�æ¢¯æ¢¢æ¢“æ¢µæ¡¿æ¡¶æ¢±æ¢§æ¢—æ¢°æ¢ƒæ£„æ¢æ¢†æ¢…梔æ¢�梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"���������������������������������鮀鮅鮇é¼é¾é»é®‚鮓鮒é®�éºé®•é½é®ˆé´¥é´—é´ é´žé´”é´©é´�鴘鴢é´�鴙鴟麈麆麇麮éºé»•é»–é»ºé¼’é¼½å„¦å„¥å„¢å„¤å„ å„©å‹´åš“åšŒåš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒å¬å¬¥å¬²å¬£å¬¬å¬§å¬¦å¬¯å¬®å»å¯±å¯²å¶·å¹¬å¹ªå¾¾æ‡ƒæ†µæ†¼æ‡§æ‡ 懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª�����������������������������������ç�†ç�¾ç��ç“ ç“¶ç“·ç”œç”¢ç•¥ç•¦ç•¢ç•°ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票ç¥ç§»çª’çª•ç¬ ç¬¨ç¬›ç¬¬ç¬¦ç¬™ç¬žç¬®ç²’ç²—ç²•çµ†çµƒçµ±ç´®ç´¹ç´¼çµ€ç´°ç´³çµ„ç´¯çµ‚ç´²ç´±ç¼½ç¾žç¾šç¿Œç¿Žç¿’è€œè�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"���������������������������������檖æª�æª¥æª‰æªŸæª›æª¡æªžæª‡æª“æªŽæª•æªƒæª¨æª¤æª‘æ©¿æª¦æªšæª…æªŒæª’æ›æ®æ°‰æ¿Œæ¾©æ¿´æ¿”æ¿£æ¿œæ¿æ¿§æ¿¦æ¿žæ¿²æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�ç’ªç’璱璥璯ç”�甑甒ç”�ç–„ç™ƒç™ˆç™‰ç™‡çš¤ç›©çžµçž«çž²çž·çž¶çž´çž±çž¨çŸ°ç£³ç£½ç¤‚ç£»ç£¼ç£¿ç£²ç¤…ç£¹ç£¾ç¤„ç¦«ç¦¨ç©œç©›ç©–ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŽ‰èŽ è�·è�»è�¼èŽ†èŽ§è™•å½ªè›‡è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許è¨è¨Ÿè¨›è¨¢è±‰è±šè²©è²¬è²«è²¨è²ªè²§èµ§èµ¦è¶¾è¶ºè»›è»Ÿé€™é€�通逗連速é€�é€�é€•é€žé€ é€�逢逖逛途部éƒéƒ½é…—野釵釦釣釧é‡é‡©é–‰é™ªé™µé™³é™¸é™°é™´é™¶é™·é™¬é›€é›ªé›©ç« 竟�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"���������������������������������穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨ç¸ç¸¼ç¹‚縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�è–§è–•è– è–‹è–£è•»è–¤è–šè–žè•·è•¼è–‰è–¡è•ºè•¸è•—è–Žè––è–†è–�è–™è–�è–�è–¢è–‚è–ˆè–…è•¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é ‚é ƒéšé³¥é¹µé¹¿éº¥éº»å‚¢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�å ¯å ªå ´å ¤å °å ±å ¡å �å å£¹å£ºå¥ å©·åªšå©¿åª’åª›åª§å³å±å¯’富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"���������������������������������蕶薘è–�薟虨螾螪èžèŸ…螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒褷襂è¦è¦¯è¦®è§²è§³è¬žè¬˜è¬–謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰豲豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�é† éŽ¡éŽƒéŽ¯é�¤é�–é�‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å»�廂廄弼å½å¾©å¾ªå¾¨æƒ‘æƒ¡æ‚²æ‚¶æƒ æ„œæ„£æƒºæ„•æƒ°æƒ»æƒ´æ…¨æƒ±æ„Žæƒ¶æ„‰æ„€æ„’æˆŸæ‰‰æŽ£æŽŒæ��æ�€æ�©æ�‰æ�†æ��æ�’æ�£æ��æ�¡æ�–æ�æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶景暑智晾晷曾替期æœ�æ£ºæ£•æ£ æ£˜æ£—æ¤…æ£Ÿæ£µæ£®æ£§æ£¹æ£’æ£²æ££æ£‹æ£�æ¤�椒椎棉棚楮棻�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"���������������������������������é�¼é�˜é�œé�¶é�‰é��é�‘é� é�éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§é�Žé�™é—‡é—€é—‰é—ƒé—…é–·éš®éš°éš¬éœ éœŸéœ˜éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯é¤é¤±é¤°é¦˜é¦£é¦¡é¨‚駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼éˆé®šé®¨é®žé®›é®¦é®¡é®¥é®¤é®†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¬¾æ¬ºæ¬½æ®˜æ®–æ®¼æ¯¯æ°®æ°¯æ°¬æ¸¯æ¸¸æ¹”æ¸¡æ¸²æ¹§æ¹Šæ¸ æ¸¥æ¸£æ¸›æ¹›æ¹˜æ¸¤æ¹–æ¹®æ¸æ¸¦æ¹¯æ¸´æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— 登發皖皓皴盜ç��çŸç¡�硬硯�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é®¢é® é®¯é´³éµ�鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵é´éºŠéº‰éº�éº°é»ˆé»šé»»é»¿é¼¤é¼£é¼¢é½”é¾ å„±å„儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀å¹å¹®æ‡˜æ‡Ÿæ‡æ‡®æ‡±æ‡ªæ‡°æ‡«æ‡–懩擿攄擽擸æ”�æ”ƒæ“¼æ–”æ—›æ›šæ››æ›˜æ«…æª¹æª½æ«¡æ«†æªºæª¶æª·æ«‡æª´æªæžæ¯‰æ°‹ç€‡ç€Œç€�ç€�瀅瀔瀎濿����������������������������������ç¨�稈程稅稀窘窗窖童竣ç‰ç–ç†ç�ç’ç”ç�ç‹ç�ç‘粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›è›”蛛蛤è›�蛞街è£�裂袱覃視�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"���������������������������������瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺礌礓礔礉ç¤�礒礑ç¦ç¦¬ç©Ÿç°œç°©ç°™ç° ç°Ÿç°ç°�簦簨簢簥簰繜ç¹�ç¹–ç¹£ç¹˜ç¹¢ç¹Ÿç¹‘ç¹ ç¹—ç¹“ç¾µç¾³ç¿·ç¿¸è�µè‡‘臒è‡�è‰Ÿè‰žè–´è—†è—€è—ƒè—‚è–³è–µè–½è—‡è—„è–¿è—‹è—Žè—ˆè—…è–±è–¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨»è© è©•è©žè¨¼è©�詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�é›…é›„é›†é›‡é›¯é›²éŸŒé …é †é ˆé£§é£ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"���������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓èŸèŸ˜èŸ£èŸ—蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉謪謧謣謳謰謵è‡è¬¯è¬¼è¬¾è¬±è¬¥è¬·è¬¦è¬¶è¬®è¬¤è¬»è¬½è¬ºè±‚è±µè²™è²˜è²—è³¾è´„è´‚è´€è¹œè¹¢è¹ è¹—è¹–è¹žè¹¥è¹§è¹›è¹šè¹¡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌����������������������������������飯飩飲é£é¦®é¦é»ƒé»�黑亂å‚債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌å¡å¡Šå¡¢å¡’塋奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"���������������������������������鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀éŽ�鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵éŠéŒé‹é¯‡é¯†é¯ƒé®¿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋����������������������������������æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�æœƒæ¦”æ¥æ¥šæ¥·æ¥ 楔極椰概楊楨楫楞楓楹榆æ¥�æ¥£æ¥›æ‡æ²æ¯€æ®¿æ¯“毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"���������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫åšåš¦åš§åšªåš¬å£šå£�壛夒嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞æ—�æ›žæ«§æ« æ«Œæ«‘æ«™æ«‹æ«Ÿæ«œæ«�æ««æ«�æ«�æ«žæ æ®°æ°Œç€™ç€§ç€ 瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅����������������������������������煞煆煨煖爺牒猷ç�…猿猾瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œç¨šç¨ ç¨”ç¨Ÿç¨žçªŸçª ç·ç¯€ç ç®ç§ç²±ç²³ç²µç¶“絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç’·ç“ƒç”–ç™ çŸ‰çŸŠçŸ„çŸ±ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕舋艤艡艣藫藱è—è—™è—¡è—¨è—šè——è—¬è—²è—¸è—˜è—Ÿè—£è—œè—‘è—°è—¦è—¯è—žè—¢è €èŸºè ƒèŸ¶èŸ·è ‰è Œè ‹è †èŸ¼è ˆèŸ¿è Šè ‚è¥¢è¥šè¥›è¥—è¥¡è¥œè¥˜è¥�襙覈覷����������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�è£¡è£Šè£•è£’è¦œè§£è©«è©²è©³è©¦è©©è©°èª‡è©¼è©£èª è©±èª…è©è©¢è©®è©¬è©¹è©»è¨¾è©¨è±¢è²Šè²‰è³Šè³‡è³ˆè³„貲賃賂賅跡跟跨路跳跺跪�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"���������������������������������覶觶è�èˆèŠè€è“è–è”è‹è•è‘è‚è’è—豃豷豶貚贆贇贉趬趪è¶è¶«è¹è¹¸è¹³è¹ªè¹¯è¹»è»‚轒轑è½�è½�轓辴酀鄿醰é†é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žé�€é�’鎥é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧����������������������������������跤跦躲較載軾輊辟農é�‹é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶é �é ‘é “é Šé ’é Œé£¼é£´é£½é£¾é¦³é¦±é¦´é«¡é³©éº‚é¼Žé¼“é¼ åƒ§åƒ®åƒ¥åƒ–åƒåƒšåƒ•åƒ�僑僱僎僩兢�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"���������������������������������騚騕騥é¨�é¨¤é¨›é¨¢é¨ é¨§é¨£é¨žé¨œé¨”é«‚é¬‹é¬Šé¬Žé¬Œé¬·é¯ªé¯«é¯ é¯žé¯¤é¯¦é¯¢é¯°é¯”é¯—é¯¬é¯œé¯™é¯¥é¯•é¯¡é¯šéµ·é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼é¼é½€é½�é½�齖齗齘匷嚲嚵嚳壣å…巆巇廮廯忀å¿�懹攗攖攕攓旟曨曣曤����������������������������������凳劃劂匱åŽå—¾å˜€å˜›å˜—嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣åµå¯žå¯§å¯¡å¯¥å¯¦å¯¨å¯¢å¯¤å¯Ÿå°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘摻敲斡�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"���������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱ç�‚瀸瀿瀺瀹瀪ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›çŸŒçŸŽçŸ�çŸ�矲礥礣礧礨礤礩禲穮穬ç©ç«·ç±‰ç±ˆç±Šç±‡ç±…糮繻繾çº�纀羺翿è�¹è‡›è‡™è‰¨è‰©è˜¢è—¿è˜�è—¾è˜›è˜€è—¶è˜„è˜‰è˜…è˜Œè—½è ™è �è ‘è —è “è –è¥£è¥¦è¦¹è§·è èªè�è¨è£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ——旖暢暨æš�榜榨榕æ§�榮槓構榛榷榻榫榴æ§�æ§�æ¦æ§Œæ¦¦æ§ƒæ¦£æ‰æŒæ°³æ¼³æ¼”æ»¾æ¼“æ»´æ¼©æ¼¾æ¼ æ¼¬æ¼�漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒爾犒犖ç�„ç��瑤瑣瑪瑰ç‘甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦��\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"���������������������������������è¥è§è趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�¼é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌饋饓騲騴騱騬騪騶騩騮騸é¨é«‡é«Šé«†é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀����������������������������������種稱窪窩ç«ç«¯ç®¡ç®•箋çµç®—ç®�ç®”ç®�ç®¸ç®‡ç®„ç²¹ç²½ç²¾ç¶»ç¶°ç¶œç¶½ç¶¾ç¶ ç·Šç¶´ç¶²ç¶±ç¶ºç¶¢ç¶¿ç¶µç¶¸ç¶ç·’ç·‡ç¶¬ç½°ç¿ ç¿¡ç¿Ÿè�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"���������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶�鶒鶘é¶�é¶›é¶ é¶”é¶œé¶ªé¶—é¶¡é¶šé¶¢é¶¨é¶žé¶£é¶¿é¶©é¶–é¶¦é¶§éº™éº›éºšé»¥é»¤é»§é»¦é¼°é¼®é½›é½ é½žé½�齙龑儺儹劘劗囃嚽嚾åˆå‡å·‹å·�廱懽攛欂櫼欃櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�ç¤ç¤±ç¤¯ç±”籓糲纊纇纈纋纆çº�ç½�羻耰è‡�����������������������������������誦誌語誣èª�誡誓誤說誥誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žé�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ¬éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…éŸ¶é —é ˜é¢¯é¢±é¤ƒé¤…é¤Œé¤‰é§�骯骰髦é�é‚鳴鳶鳳麼鼻齊億�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è˜˜è˜ªè˜¦è˜Ÿè˜£è˜œè˜™è˜§è˜®è˜¡è˜ è˜©è˜žè˜¥è ©è �è ›è è ¤è œè «è¡Šè¥è¥©è¥®è¥«è§ºè¹è¸è…èºè»è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺騿é«�鬕鬗鬘鬖鬺é’é°«é°�鰜鰬鰣鰨鰩鰤鰡鶷����������������������������������儀僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦å¥å¬‰å«»å¬‹å«µå¬Œå¬ˆå¯®å¯¬å¯©å¯«å±¤å±¥å¶�嶔幢幟幡廢廚廟å»�å»£å» å½ˆå½±å¾·å¾µæ…¶æ…§æ…®æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�撰�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"���������������������������������鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱é¶é·Œé¶³é·�鶲鹺麜黫黮é»é¼›é¼˜é¼šé¼±é½Žé½¥é½¤é¾’亹囆囅囋奱å‹åŒå·•å·‘å»²æ”¡æ” æ”¦æ”¢æ¬‹æ¬ˆæ¬‰æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ç“•瓙瓗ç™çšç¤µç¦´ç©°ç©±ç±—籜籙籛籚糴糱纑ç½�ç¾‡è‡žè‰«è˜´è˜µè˜³è˜¬è˜²è˜¶è ¬è ¨è ¦è ªè ¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ’¥æ’“æ’•æ’©æ’’æ’®æ’æ’«æ’šæ’¬æ’™æ’¢æ’³æ•µæ•·æ•¸æš®æš«æš´æš±æ¨£æ¨Ÿæ§¨æ¨�æ¨žæ¨™æ§½æ¨¡æ¨“æ¨Šæ§³æ¨‚æ¨…æ§æ¨‘æ�æŽæ®¤æ¯…æ¯†æ¼¿æ½¼æ¾„æ½‘æ½¦æ½”æ¾†æ½æ½›æ½¸æ½®æ¾Žæ½ºæ½°æ½¤æ¾—æ½˜æ»•æ½¯æ½ æ½Ÿç†Ÿç†¬ç†±ç†¨ç‰–çŠ›ç�Žç�—ç‘©ç’‹ç’ƒç‘¾ç’€ç•¿ç˜ ç˜©ç˜Ÿç˜¤ç˜¦ç˜¡ç˜¢çššçšºç›¤çžŽçž‡çžŒçž‘çž‹ç£‹ç£…ç¢ºç£Šï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"���������������������������������襱覿覾觻è¾è®„讂讆讅è¿è´•躕躔躚躒èº�èº–èº—è½ è½¢é…‡é‘Œé‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊驉驒é©�é«�鬙鬫鬻é–é•鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙����������������������������������碾磕碼ç£�稿稼穀稽稷稻窯窮ç®ç®±ç¯„箴篆篇ç¯�ç® ç¯Œç³Šç· ç·´ç·¯ç·»ç·˜ç·¬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�è† è†šè†˜è”—è”½è”šè“®è”¬è”蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"���������������������������������壨壧奲å�å·˜è ¯å½�æˆ�戃戄攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�çŽƒç™°çŸ”ç±§ç±¦çº•è‰¬è˜ºè™€è˜¹è˜¼è˜±è˜»è˜¾è °è ²è ®è ³è¥¶è¥´è¥³è§¾è®Œè®Žè®‹è®ˆè±…è´™èº˜è½¤è½£é†¼é‘¢é‘•é‘�é‘—é‘žéŸ„éŸ…é €é©–é©™é¬žé¬Ÿé¬ é±’é±˜é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴����������������������������������誰論è«�èª¶èª¹è«›è±Œè±Žè±¬è³ è³žè³¦è³¤è³¬è³è³¢è³£è³œè³ªè³¡èµè¶Ÿè¶£è¸«è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟輩輦輪輜輞輥é�©é�®é�¨é�é�·é„°é„鄧鄱醇醉醋醃鋅銻銷鋪鋤é‹�銳銼鋒鋇鋰銲é–閱霄霆震霉é� éž�éž‹éž�é ¡é «é œé¢³é¤Šé¤“é¤’é¤˜é§�é§�駟駛駑駕駒駙骷�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"���������������������������������鷳鷨é·é»‚é»�黲黳鼆鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�åŽå±æ”æ›æ›®æ¬“ç�Ÿç�¡ç��ç� 爣瓛瓥矕礸禷禶籪纗羉è‰è™ƒè ¸è ·è µè¡‹è®”è®•èºžèºŸèº èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•é™é±£é±§é±¦é±¢é±žé± 鸂鷾鸇鸃鸆鸅鸀é¸�é¸‰é·¿é·½é¸„éº é¼žé½†é½´é½µé½¶å›”æ”®æ–¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é«®é«¯é¬§é…é„é·é¯é´†é´‰é´ƒéº©éº¾é»Žå¢¨é½’儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴å¸å¯°å°Žå½Šæ†²æ†‘憩憊æ‡�憶憾懊懈戰擅æ“�擋撻撼據擄擇擂æ“�撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"���������������������������������欘欙欗欚ç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘鑯鑱鑳é�‰é¡²é¥Ÿé±¨é±®é±é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© 鬮鱴鱳鱱鱵鸔鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¨µæ©Ÿæ©ˆæ™æ·æ°…濂澱澡濃澤æ¿�æ¾§æ¾³æ¿€æ¾¹æ¾¶æ¾¦æ¾ æ¾´ç†¾ç‡‰ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ç’Ÿç’žç“¢ç”Œç”�ç˜´ç˜¸ç˜ºç›§ç›¥çž çžžçžŸçž¥ç£¨ç£šç£¬ç£§ç¦¦ç©�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"���������������������������������饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀é’�驩驨鸙虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªçˆ©éº¤é½¾é½‰é¾˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è•™è•ˆè•¨è•©è•ƒè•‰è•蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷è«è«³è«¶è«¼è±«è±è²“賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’éŒ éŒ¶é‹¸éŒ³éŒ¯éŒ¢é‹¼éŒ«éŒ„éŒšéŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"���������������������������������î€�î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é ¸é »é ·é é ¹é ¤é¤�館餞餛餡餚é§é§¢é§±éª¸éª¼é«»é«é¬¨é®‘鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤åºå°·å±¨å¶¼å¶ºå¶½å¶¸å¹«å½Œå¾½æ‡‰æ‡‚æ‡‡æ‡¦æ‡‹æˆ²æˆ´æ“Žæ“Šæ“˜æ“ æ“°æ“¦æ“¬æ“±æ“¢æ“æ–‚斃曙曖檀檔檄檢檜櫛檣橾檗æª�æª æœæ®®æ¯šï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"���������������������������������î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚î‚®î‚¯î‚°î‚±î‚²î‚³î‚´î‚µî‚¶î‚·î‚¸î‚¹î‚ºî‚»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ°ˆæ¿˜æ¿±æ¿Ÿæ¿ æ¿›æ¿¤æ¿«æ¿¯æ¾€æ¿¬æ¿¡æ¿©æ¿•æ¿®æ¿°ç‡§ç‡Ÿç‡®ç‡¦ç‡¥ç‡ç‡¬ç‡´ç‡ 爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬瞧çžçŸ¯ç£·ç£ºç£´ç£¯ç¤�禧禪穗窿簇ç°�ç¯¾ç¯·ç°Œç¯ ç³ ç³œç³žç³¢ç³Ÿç³™ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"���������������������������������îƒ�îƒ�îƒ�îƒ�îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºîƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„�î„‘î„’î„“î„”î„•î„–î„—î„˜î„™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‡‚è‡€è†¿è†½è‡‰è†¾è‡¨èˆ‰è‰±è–ªè–„è•¾è–œè–‘è–”è–¯è–›è–‡è–¨è–Šè–¦è™§èŸ€èŸ‘èž³èŸ’èŸ†èž«èž»èžºèŸˆèŸ‹è¤»è¤¶è¥„è¤¸è¤½è¦¬è¬Žè¬—è¬™è¬›è¬Šè¬ è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”闊闋闌闈闆�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"���������������������������������î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„î…�î…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…î…®î…¯î…°î…±î…²î…³î…´î…µî…¶î…·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš±éš¸é›–éœœéœžéž éŸ“é¡†é¢¶é¤µé¨�駿鮮鮫鮪é®é´»é´¿éº‹é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�æ‡£æˆ³æ“´æ“²æ“¾æ”†æ“ºæ“»æ“·æ–·æ›œæœ¦æª³æª¬æ«ƒæª»æª¸æ«‚æª®æª¯æŸæ¸æ®¯ç€‰ç€‹æ¿¾ç€†æ¿ºç€‘ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•ç™–ç™˜ç™’çž½çž¿çž»çž¼ç¤Žç¦®ç©¡ç©¢ç© ç«„ç«…ç°«ç°§ç°ªç°žç°£ç°¡ç³§ç¹”ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"���������������������������������î†�î†�î†�î†�î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†î†®î†¯î†°î†±î†²î†³î†´î†µî†¶î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡�����������������������������������繕繞繚繡繒繙罈翹翻è�·è�¶è‡�è‡�舊è—�è–©è—�è—�è—‰è–°è–ºè–¹èŸ¯èŸ¬èŸ²èŸ è¦†è¦²è§´è¬¨è¬¹è¬¬è¬«è±�贅蹙蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖é—�闕離雜雙雛雞霤鞣鞦éžéŸ¹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é�éŽé�鯊�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"���������������������������������î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¯‰é¯½é¯ˆé¯€éµ‘éµ�éµ é» é¼•é¼¬å„³åš¥åš¨å£žå£Ÿå£¢å¯µé¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹ç¹¹ç¹©ç¹ªç¹³ç¾…羶羹羸臘藩è—�è—ªè—•è—¤è—¥è—·èŸ»è …è �èŸ¹èŸ¾è¥ è¥Ÿè¥–è¥žè�èœè˜è‰èšï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"���������������������������������î‰�î‰�î‰�î‰�î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ�îŠ�îŠ�îŠ�����������������������������������èŽè�è†è™è´ˆè´Šè¹¼è¹²èº‡è¹¶è¹¬è¹ºè¹´è½”轎è¾é‚Šé‚‹é†±é†®é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚷嚶嚴嚼壤å€åƒå½å¯¶å·‰æ‡¸æ‡ºæ”˜æ””攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"���������������������������������îŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¤«ç«‡ç«¶ç±Œç±ƒç±�ç³¯ç³°è¾®ç¹½ç¹¼çº‚ç½Œè€€è‡šè‰¦è—»è—¹è˜‘è—ºè˜†è˜‹è˜‡è˜Šè ”è •è¥¤è¦ºè§¸è°è¬è¦è¯èŸè«è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼�\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"���������������������������������îŒ�îŒ�îŒ�îŒ�îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒîŒ®îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµîŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî������������������������������������蘗è˜è˜šè £è ¢è ¡è Ÿè¥ªè¥¬è¦½è´è·è½è´“躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅驃驀騾é«�é”é‘é°é°¥é¶¯é¶´é·‚鶸éº�黯鼙齜齦齧儼儻囈囊囉å¿å·”巒彎懿攤權æ¡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽�\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"���������������������������������î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£îŽ¤îŽ¥îŽ¦îŽ§îŽ¨îŽ©îŽªîŽ«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éœ¾éŸƒéŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�ç“šç«Šç±¤ç±£ç±¥çº“çº–çº”è‡¢è˜¸è˜¿è ±è®Šé‚�é‚�é‘£é‘ é‘¤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�ç¾ˆè ¶è ¹è¡¢è®“è®’è®–è‰·è´›é‡€é‘ªé�‚é�ˆé�„韆顰驟鬢é˜é±Ÿé·¹é·ºé¹¼é¹½é¼‡é½·ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"���������������������������������îŽîŽ®îŽ¯îŽ°îŽ±îŽ²îŽ³îŽ´îŽµîŽ¶îŽ·îŽ¸îŽ¹îŽºîŽ»îŽ¼îŽ½îŽ¾îŽ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é½²å»³æ¬–ç�£ç±¬ç±®è »è§€èº¡é‡�鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲ソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"���������������������������������î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�î‘žî‘Ÿî‘ î‘¡î‘¢î‘£î‘¤î‘¥î‘¦î‘§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ�⇧↸↹��䅚ク刂�冈������������\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20001] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�������������������������������������������������������������������������ï£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï£®ï£¯ï£°\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"������������������������������������������������ ,ã€�。․•;:?ï¼��������︰…‥ï¹�﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴ï¹�()︵︶{ï½�︷������︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙�����﹚﹛﹜ï¹�﹞‘’“â€�ã€�〞′‵#&*※§〃○â—�△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊ï¹�ï¹Žï¹‹ï¹Œï¹Ÿï¹ ï¹¡ï¼‹ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓→â†�↖↗↙↘∥∣ï¼�ï¼¼ï¿½ï¹¨ï¼„ï¿¥ã€’ï¿ ï¿¡ï¼…ï¼ â„ƒâ„‰ï¹©ï¹ªï¹«ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„゜兙兛兞å…�兡兣��\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"������������������������������������������������嗧瓩糎â–�▂▃▄▅▆▇�������█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘â•╮╰╯â•�������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾã‚�ゞ�〄々〆〇ー[]✽ã�������ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ï¼�ï¼‘ï¼’ï¼“ï¼”ï¼•ï¼–ï¼—ï¼˜ï¼™â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ã€¡ã€¢ã€£ã€¤ã€¥ã€¦ã€§ã€¨ã€©ï¿½å�„�ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï½�bcdefghijklï½�nï½�ï½�qrstuvwxyzΑΒΓΔΕΖΗΘΙΚ��\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"������������������������������������������������ΛΜÎ�ΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯â‘ ②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをんァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼ��\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä¸¶ä¸¿ï¿½äº…ï¿½äº ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å†‚å†–å†«ï¿½ï¿½ï¿½ï¿½å‹¹ï¿½ï¿½åŒ¸ï¿½ï¿½å�©ï¿½åŽ¶ï¿½ï¿½ï¿½ï¿½ï¿½å¤‚ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å®€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å·›ï¿½ï¿½ï¿½ï¿½å¹ºå¹¿å»´ï¿½ï¿½ï¿½å½�å½¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ”´ï¿½ï¿½ï¿½ï¿½æ— ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç–’ç™¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¾µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[145] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������¬¦��㈱№℡������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙ä¸�七乃ä¹�äº†äºŒäººå„¿å…¥å…«å‡ åˆ€åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å�å‘å“寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰�丑ä¸�ä¸�ä¸ä¸°ä¸¹ä¹‹å°¹äºˆäº‘井互五亢ä»�什仃仆仇ä»�今介仄元å…�å…§å…兮公冗凶��\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"������������������������������������������������分切刈勻勾勿化匹å�ˆå�‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�…å�žåŽ„å�‹å�Šå��壬天夫太å¤å”å°‘å°¤å°ºå±¯å·´å¹»å»¿å¼”å¼•å¿ƒæˆˆæˆ¶æ‰‹æ‰Žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ”¯æ–‡æ–—æ–¤æ–¹æ—¥æ›°æœˆæœ¨æ¬ æ¢æ¹æ¯‹æ¯”毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ï¿½ï¿½ï¿½ï¿½ï¿½ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�ä¹Žä»¥ä»˜ä»”ä»•ä»–ä»—ä»£ä»¤ä»™ä»žå……å…„å†‰å†Šå†¬å‡¹å‡ºå‡¸åˆŠåŠ åŠŸåŒ…åŒ†åŒ—åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�å�»å››å›šå¤–央失奴奶å•它尼巨巧左市布平幼å¼�å¼˜å¼—å¿…æˆŠæ‰“æ‰”æ‰’æ‰‘æ–¥æ—¦æœ®æœ¬æœªæœ«æœæ£æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�å†°åˆ—ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åˆ‘åˆ’åˆŽåˆ–åŠ£åŒˆåŒ¡åŒ å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’å› ï¿½ï¿½ï¿½ï¿½ï¿½å›žå›�圳地在åœåœ¬åœ¯åœ©å¤™å¤šå¤·å¤¸å¦„奸妃好她如å¦�å—å˜å®‡å®ˆå®…安寺尖屹州帆并年å¼�弛忙忖戎戌æˆ�æˆ�æ‰£æ‰›æ‰˜æ”¶æ—©æ—¨æ—¬æ—æ›²æ›³æœ‰æœ½æœ´æœ±æœµæ¬¡æ¤æ»æ°–æ±�æ±—æ±™æ±Ÿæ± æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�佑伽伺伸佃佔似但��\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä½£ä½œä½ ä¼¯ä½Žä¼¶ä½™ä½�佈佚�������兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�å�žå�¾å�¦å‘Žå�§å‘†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘�����å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å�åœåšå›å®Œå®‹å®�尬局å±�å°¿å°¾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�å¿±å¿«å¿¸å¿ªæˆ’æˆ‘æŠ„æŠ—æŠ–æŠ€æ‰¶æŠ‰æ‰æŠŠæ‰¼æ‰¾æ‰¹æ‰³æŠ’æ‰¯æŠ˜æ‰®æŠ•æŠ“æŠ‘æŠ†æ”¹æ”»æ”¸æ—±æ›´æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� æ�“æ�—æ¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘��\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"������������������������������������������������沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ 狄狂�������玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見������角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅åŸå¤å£å®—定官宜宙宛尚��\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�å¿ å¿½å¿µå¿¿æ€�������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜�昕昊昇æœ�朋æ�枋枕æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ¦æ§æ¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�æ²®æ³—æ³…æ³±æ²¿æ²»æ³¡æ³›æ³Šæ²¬æ³¯æ³œæ³–æ³ ç‚•ç‚Žç‚’ç‚Šç‚™çˆ¬çˆçˆ¸ç‰ˆç‰§ç‰©ç‹€ç‹Žç‹™ç‹—ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直��\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"������������������������������������������������知矽社祀ç¥�秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙èŠèŠ½èŠŸèŠ¹èŠ±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŠ¬èŠ¥èŠ¯èŠ¸èŠ£èŠ°èŠ¾èŠ·è™Žè™±åˆ�表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨é�’é�žäºŸäºäº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�ä¿„ä¿‚ä¿šä¿Žä¿žä¾·å…—å†’å†‘å† å‰Žå‰ƒå‰Šå‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�å“„å“ˆå’¯å’«å’±å’»å’©å’§å’¿å›¿åž‚åž‹åž åž£åž¢åŸŽåž®åž“å¥•å¥‘å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�å§»å©å®£å®¦å®¤å®¢å®¥å°�屎å±�å±�屋峙峒巷å¸�å¸¥å¸Ÿå¹½åº åº¦å»ºå¼ˆå¼å½¥å¾ˆï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"������������������������������������������������待徊律徇後徉怒æ€�æ€ æ€¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ€Žæ€¨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�æ‹œæŒ–æŒ‰æ‹¼æ‹æŒ�æ‹®æ‹½æŒ‡æ‹±æ‹·æ‹¯æ‹¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‹¾æ‹´æŒ‘æŒ‚æ”¿æ•…æ–«æ–½æ—¢æ˜¥æ˜æ˜ 昧是星昨昱昤曷柿染柱柔æŸ�柬架�����枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�æŸ’æªæ®ƒæ®†æ®µæ¯’毗氟泉洋洲洪æµ�津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯ç‚ç‚¸ç‚®ç‚¤çˆ°ç‰²ç‰¯ç‰´ç‹©ç‹ ç‹¡çŽ·ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�ç›¹ç›¸çœ‰çœ‹ç›¾ç›¼çœ‡çŸœç ‚ç ”ç Œç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸��\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"������������������������������������������������美羿è€�è€�耑耶胖胥胚胃�������胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔������苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�è§”è¨ˆè¨‚è¨ƒè²žè² èµ´èµ³è¶´è»�軌述迦�����迢迪迥è¿è¿«è¿¤è¿¨éƒŠéƒŽéƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸéŸ³é �風飛食首香乘亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修å€å€ªä¿¾å€«å€‰å…¼å†¤å†¥å†¢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩å“員唉哮哪哦唧唇哽å”�åœƒåœ„åŸ‚åŸ”åŸ‹åŸƒå ‰å¤�å¥—å¥˜å¥šå¨‘å¨˜å¨œå¨Ÿå¨›å¨“å§¬å¨ å¨£å¨©å¨¥å¨Œå¨‰ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"������������������������������������������������å«å±˜å®°å®³å®¶å®´å®®å®µå®¹å®¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å°„屑展å±�å³å³½å³»å³ªå³¨å³°å³¶å´�å³´å·®å¸å¸«åº«åºåº§å¼±å¾’徑å¾�æ�™æ�£æ�¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��æ�•æ�æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºï¿½ï¿½ï¿½ï¿½ï¿½æ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�æ›¸æœ”æœ•æœ—æ ¡æ ¸æ¡ˆæ¡†æ¡“æ ¹æ¡‚æ¡”æ ©æ¢³æ —æ¡Œæ¡‘æ ½æŸ´æ¡�æ¡€æ ¼æ¡ƒæ ªæ¡…æ “æ ˜æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�ç›Žçœ©çœŸçœ çœ¨çŸ©ç °ç §ç ¸ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"������������������������������������������������ç �ç ´ç ·ç ¥ç ç ç Ÿç ²ç¥•ç¥�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¥ ç¥Ÿç¥–ç¥žç¥�ç¥—ç¥šç§¤ç§£ç§§ç§Ÿç§¦ç§©ç§˜çª„çªˆç«™ç¬†ç¬‘ç²‰ç´¡ç´—ç´‹ç´Šç´ ç´¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç´”ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耄耘耕耙耗耽耿胱脂胰脅èƒï¿½ï¿½ï¿½ï¿½ï¿½èƒ´è„†èƒ¸èƒ³è„ˆèƒ½è„Šèƒ¼èƒ¯è‡è‡¬èˆ€èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙閃院陣陡陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"������������������������������������������������å�´å�·å��å€�å�¯å�兜冕凰剪�������副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯������啤唸售啜唬啣唳å•�å•—åœˆåœ‹åœ‰åŸŸå …å Šå †åŸ åŸ¤åŸºå ‚å µåŸ·åŸ¹å¤ å¥¢å¨¶ï¿½ï¿½ï¿½ï¿½ï¿½å©�婉婦婪婀娼婢婚婆婊å°å¯‡å¯…å¯„å¯‚å®¿å¯†å°‰å°ˆå°‡å± å±œå±�å´‡å´†å´Žå´›å´–å´¢å´‘å´©å´”å´™å´¤å´§å´—å·¢å¸¸å¸¶å¸³å¸·åº·åº¸åº¶åºµåº¾å¼µå¼·å½—å½¬å½©å½«å¾—å¾™å¾žå¾˜å¾¡å¾ å¾œæ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…æ‚»æ‚µæƒœæ‚¼æƒ˜æƒ•æƒ†æƒŸæ‚¸æƒšæƒ‡æˆšæˆ›æ‰ˆæŽ æŽ§æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"������������������������������������������������旋旌旎æ™�晚晤晨晦晞曹�������勗望æ¢�æ¢¯æ¢¢æ¢“æ¢µæ¡¿æ¡¶æ¢±æ¢§æ¢—æ¢°æ¢ƒæ£„æ¢æ¢†æ¢…梔æ¢�梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒç�†ç�¾ç��ç“ ç“¶ç“·ç”œç”¢ç•¥ç•¦ç•¢ç•°ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票ç¥ç§»çª’çª•ç¬ ç¬¨ç¬›ç¬¬ç¬¦ç¬™ç¬žç¬®ç²’ç²—ç²•çµ†çµƒçµ±ç´®ç´¹ç´¼çµ€ç´°ç´³çµ„ç´¯çµ‚ç´²ç´±ç¼½ç¾žç¾šç¿Œç¿Žç¿’è€œè�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŽ‰èŽ è�·è�»è�¼èŽ†èŽ§è™•å½ªè›‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許è¨è¨Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨›è¨¢è±‰è±šè²©è²¬è²«è²¨è²ªè²§èµ§èµ¦è¶¾è¶ºè»›è»Ÿé€™é€�通逗連速é€�é€�é€•é€žï¿½ï¿½ï¿½ï¿½ï¿½é€ é€�逢逖逛途部éƒéƒ½é…—野釵釦釣釧é‡é‡©é–‰é™ªé™µé™³é™¸é™°é™´é™¶é™·é™¬é›€é›ªé›©ç« ç«Ÿé ‚é ƒéšé³¥é¹µé¹¿éº¥éº»å‚¢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�å ¯å ªå ´å ¤å °å ±å ¡å �å å£¹å£ºå¥ å©·åªšå©¿åª’åª›åª§å³å±å¯’富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊��\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"������������������������������������������������å»�廂廄弼å½å¾©å¾ªå¾¨æƒ‘æƒ¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‚²æ‚¶æƒ æ„œæ„£æƒºæ„•æƒ°æƒ»æƒ´æ…¨æƒ±æ„Žæƒ¶æ„‰æ„€æ„’æˆŸæ‰‰æŽ£æŽŒæ��æ�€æ�©æ�‰æ�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��æ�’æ�£æ��æ�¡æ�–æ�æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶�����景暑智晾晷曾替期æœ�æ£ºæ£•æ£ æ£˜æ£—æ¤…æ£Ÿæ£µæ£®æ£§æ£¹æ£’æ£²æ££æ£‹æ£�æ¤�æ¤’æ¤Žæ£‰æ£šæ¥®æ£»æ¬¾æ¬ºæ¬½æ®˜æ®–æ®¼æ¯¯æ°®æ°¯æ°¬æ¸¯æ¸¸æ¹”æ¸¡æ¸²æ¹§æ¹Šæ¸ æ¸¥æ¸£æ¸›æ¹›æ¹˜æ¸¤æ¹–æ¹®æ¸æ¸¦æ¹¯æ¸´æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— 登發皖皓皴盜ç��çŸç¡�硬硯��\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"������������������������������������������������ç¨�稈程稅稀窘窗窖童竣�������ç‰ç–ç†ç�ç’ç”ç�ç‹ç�ç‘粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔������翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯ï¿½ï¿½ï¿½ï¿½ï¿½è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›è›”蛛蛤è›�蛞街è£�è£‚è¢±è¦ƒè¦–è¨»è© è©•è©žè¨¼è©�詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�é›…é›„é›†é›‡é›¯é›²éŸŒé …é †é ˆé£§é£ªï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"������������������������������������������������飯飩飲é£é¦®é¦é»ƒé»�黑亂�������å‚債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌å¡å¡Šå¡¢å¡’塋�����奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�æœƒæ¦”æ¥æ¥šæ¥·æ¥ 楔極椰概楊楨楫楞楓楹榆æ¥�æ¥£æ¥›æ‡æ²æ¯€æ®¿æ¯“毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"������������������������������������������������煞煆煨煖爺牒猷ç�…猿猾�������瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œï¿½ï¿½ï¿½ï¿½ï¿½ç¨šç¨ ç¨”ç¨Ÿç¨žçªŸçª ç·ç¯€ç ç®ç§ç²±ç²³ç²µç¶“絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„腱腰腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�è£¡è£Šè£•è£’è¦œè§£è©«è©²è©³è©¦è©©è©°èª‡è©¼è©£èª è©±èª…è©è©¢è©®è©¬è©¹è©»è¨¾è©¨è±¢è²Šè²‰è³Šè³‡è³ˆè³„貲賃賂賅跡跟跨路跳跺跪��\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"������������������������������������������������跤跦躲較載軾輊辟農é�‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶ï¿½ï¿½ï¿½ï¿½ï¿½é �é ‘é “é Šé ’é Œé£¼é£´é£½é£¾é¦³é¦±é¦´é«¡é³©éº‚é¼Žé¼“é¼ åƒ§åƒ®åƒ¥åƒ–åƒåƒšåƒ•åƒ�僑僱僎僩兢凳劃劂匱åŽå—¾å˜€å˜›å˜—嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣åµå¯žå¯§å¯¡å¯¥å¯¦å¯¨å¯¢å¯¤å¯Ÿå°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘摻敲斡��\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"������������������������������������������������旗旖暢暨æš�榜榨榕æ§�榮�������槓構榛榷榻榫榴æ§�æ§�æ¦æ§Œæ¦¦æ§ƒæ¦£æ‰æŒæ°³æ¼³æ¼”æ»¾æ¼“æ»´æ¼©æ¼¾æ¼ æ¼¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¼�漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒�����爾犒犖ç�„ç��瑤瑣瑪瑰ç‘甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦�種稱窪窩ç«ç«¯ç®¡ç®•箋çµç®—ç®�ç®”ç®�ç®¸ç®‡ç®„ç²¹ç²½ç²¾ç¶»ç¶°ç¶œç¶½ç¶¾ç¶ ç·Šç¶´ç¶²ç¶±ç¶ºç¶¢ç¶¿ç¶µç¶¸ç¶ç·’ç·‡ç¶¬ç½°ç¿ ç¿¡ç¿Ÿè�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"������������������������������������������������誦誌語誣èª�誡誓誤說誥�������誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ¬éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£ï¿½ï¿½ï¿½ï¿½ï¿½é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…éŸ¶é —é ˜é¢¯é¢±é¤ƒé¤…é¤Œé¤‰é§�骯骰髦é�é‚鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦å¥å¬‰å«»å¬‹å«µå¬Œå¬ˆå¯®å¯¬å¯©å¯«å±¤å±¥å¶�嶔幢幟幡廢廚廟å»�å»£å» å½ˆå½±å¾·å¾µæ…¶æ…§æ…®æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�撰��\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ’¥æ’“æ’•æ’©æ’’æ’®æ’æ’«æ’šæ’¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ’™æ’¢æ’³æ•µæ•·æ•¸æš®æš«æš´æš±æ¨£æ¨Ÿæ§¨æ¨�æ¨žæ¨™æ§½æ¨¡æ¨“æ¨Šæ§³æ¨‚æ¨…æ§æ¨‘æ�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æŽæ®¤æ¯…æ¯†æ¼¿æ½¼æ¾„æ½‘æ½¦æ½”æ¾†æ½æ½›æ½¸æ½®æ¾Žæ½ºæ½°æ½¤æ¾—æ½˜æ»•æ½¯æ½ æ½Ÿç†Ÿï¿½ï¿½ï¿½ï¿½ï¿½ç†¬ç†±ç†¨ç‰–çŠ›ç�Žç�—ç‘©ç’‹ç’ƒç‘¾ç’€ç•¿ç˜ ç˜©ç˜Ÿç˜¤ç˜¦ç˜¡ç˜¢çššçšºç›¤çžŽçž‡çžŒçž‘çž‹ç£‹ç£…ç¢ºç£Šç¢¾ç£•ç¢¼ç£�稿稼穀稽稷稻窯窮ç®ç®±ç¯„箴篆篇ç¯�ç® ç¯Œç³Šç· ç·´ç·¯ç·»ç·˜ç·¬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�è† è†šè†˜è”—è”½è”šè“®è”¬è”蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調��\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"������������������������������������������������誰論è«�èª¶èª¹è«›è±Œè±Žè±¬è³ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è³žè³¦è³¤è³¬è³è³¢è³£è³œè³ªè³¡èµè¶Ÿè¶£è¸«è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟������輩輦輪輜輞輥é�©é�®é�¨é�é�·é„°é„鄧鄱醇醉醋醃鋅銻銷鋪鋤é‹�銳�����銼鋒鋇鋰銲é–閱霄霆震霉é� éž�éž‹éž�é ¡é «é œé¢³é¤Šé¤“é¤’é¤˜é§�é§�駟駛駑駕駒駙骷髮髯鬧é…é„é·é¯é´†é´‰é´ƒéº©éº¾é»Žå¢¨é½’儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴å¸å¯°å°Žå½Šæ†²æ†‘憩憊æ‡�憶憾懊懈戰擅æ“�擋撻撼據擄擇擂æ“�撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¨µæ©Ÿæ©ˆæ™æ·æ°…濂澱澡濃�������澤æ¿�æ¾§æ¾³æ¿€æ¾¹æ¾¶æ¾¦æ¾ æ¾´ç†¾ç‡‰ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç’Ÿç’žç“¢ç”Œç”�ç˜´ç˜¸ç˜ºç›§ç›¥çž çžžçžŸçž¥ç£¨ç£šç£¬ç£§ç¦¦ç©�穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉è•蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷è«è«³è«¶è«¼è±«è±è²“賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’éŒ éŒ¶é‹¸éŒ³éŒ¯éŒ¢é‹¼éŒ«éŒ„éŒšéŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é ¸é »é ·é é ¹é ¤é¤�館餞餛�������餡餚é§é§¢é§±éª¸éª¼é«»é«é¬¨é®‘鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵������嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤åºå°·å±¨å¶¼å¶ºå¶½å¶¸å¹«å½Œå¾½æ‡‰æ‡‚æ‡‡ï¿½ï¿½ï¿½ï¿½ï¿½æ‡¦æ‡‹æˆ²æˆ´æ“Žæ“Šæ“˜æ“ æ“°æ“¦æ“¬æ“±æ“¢æ“æ–‚斃曙曖檀檔檄檢檜櫛檣橾檗æª�æª æœæ®®æ¯šæ°ˆæ¿˜æ¿±æ¿Ÿæ¿ 濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥ç‡ç‡¬ç‡´ç‡ 爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬瞧çžçŸ¯ç£·ç£ºç£´ç£¯ç¤�禧禪穗窿簇ç°�ç¯¾ç¯·ç°Œç¯ ç³ ç³œç³žç³¢ç³Ÿç³™ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‡‚è‡€è†¿è†½è‡‰è†¾è‡¨èˆ‰è‰±è–ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è–„è•¾è–œè–‘è–”è–¯è–›è–‡è–¨è–Šè–¦è™§èŸ€èŸ‘èž³èŸ’èŸ†èž«èž»èžºèŸˆèŸ‹è¤»è¤¶è¥„è¤¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¤½è¦¬è¬Žè¬—è¬™è¬›è¬Šè¬ è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”é—Šé—‹é—Œé—ˆé—†éš±éš¸é›–éœœéœžéž éŸ“é¡†é¢¶é¤µé¨�駿鮮鮫鮪é®é´»é´¿éº‹é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�æ‡£æˆ³æ“´æ“²æ“¾æ”†æ“ºæ“»æ“·æ–·æ›œæœ¦æª³æª¬æ«ƒæª»æª¸æ«‚æª®æª¯æŸæ¸æ®¯ç€‰ç€‹æ¿¾ç€†æ¿ºç€‘ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•ç™–ç™˜ç™’çž½çž¿çž»çž¼ç¤Žç¦®ç©¡ç©¢ç© ç«„ç«…ç°«ç°§ç°ªç°žç°£ç°¡ç³§ç¹”ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"������������������������������������������������繕繞繚繡繒繙罈翹翻è�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�¶è‡�è‡�舊è—�è–©è—�è—�è—‰è–°è–ºè–¹èŸ¯èŸ¬èŸ²èŸ è¦†è¦²è§´è¬¨è¬¹è¬¬è¬«è±�贅蹙������蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖é—�闕離雜雙雛雞霤鞣鞦éžéŸ¹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é�éŽé�鯊鯉鯽鯈鯀鵑éµ�éµ é» é¼•é¼¬å„³åš¥åš¨å£žå£Ÿå£¢å¯µé¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹ç¹¹ç¹©ç¹ªç¹³ç¾…羶羹羸臘藩è—�è—ªè—•è—¤è—¥è—·èŸ»è …è �èŸ¹èŸ¾è¥ è¥Ÿè¥–è¥žè�èœè˜è‰èšï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"������������������������������������������������èŽè�è†è™è´ˆè´Šè¹¼è¹²èº‡è¹¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¹¬è¹ºè¹´è½”轎è¾é‚Šé‚‹é†±é†®é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤å€åƒå½å¯¶å·‰æ‡¸æ‡ºæ”˜æ””攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬礫竇競籌籃ç±�ç³¯ç³°è¾®ç¹½ç¹¼çº‚ç½Œè€€è‡šè‰¦è—»è—¹è˜‘è—ºè˜†è˜‹è˜‡è˜Šè ”è •è¥¤è¦ºè§¸è°è¬è¦è¯èŸè«è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"������������������������������������������������蘗è˜è˜šè £è ¢è ¡è Ÿè¥ªè¥¬è¦½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è´è·è½è´“躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅������驃驀騾é«�é”é‘é°é°¥é¶¯é¶´é·‚鶸éº�黯鼙齜齦齧儼儻囈囊囉å¿å·”巒�����彎懿攤權æ¡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽霾韃éŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�ç“šç«Šç±¤ç±£ç±¥çº“çº–çº”è‡¢è˜¸è˜¿è ±è®Šé‚�é‚�é‘£é‘ é‘¤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�ç¾ˆè ¶è ¹è¡¢è®“è®’è®–è‰·è´›é‡€é‘ªé�‚é�ˆé�„韆顰驟鬢é˜é±Ÿé·¹é·ºé¹¼é¹½é¼‡é½·ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"������������������������������������������������齲廳欖ç�£ç±¬ç±®è »è§€èº¡é‡��������鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ������ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ�⇧↸↹��䅚ク刂�冈�������������\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"������������������������������������������������乂乜凵匚厂万丌乇äº�囗�������屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼������仨仜仩仡ä»�仚刌刉匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰������氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿å–尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�æ‰œæ‰žæ‰¤æ‰¡æ‰¦æ‰¢æ‰™æ‰ æ‰šæ‰¥æ”·æ—¯æ—®æœ¾æœ¹æœ¸æœ»æœºæœ¿æœ¼æœ³æ°˜æ±†æ±’æ±œæ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�è¥¾é‚™é‚—é‚˜é‚›é‚”é˜¢é˜¤é˜ é˜£ä½–ä¼»ä½¢ä½‰ä½“ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"������������������������������������������������佤伾佧佒佟ä½�佘ä¼ä¼³ä¼¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä½¡å†�冹刜刞刡åŠåŠ®åŒ‰å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜å�½å‘�å‘�å�¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’å¤†å¥€å¦¦å¦˜å¦ å¦—å¦Žå¦¢å¦�å¦�妧妡宎宒尨�����尪å²�å²�å²ˆå²‹å²‰å²’å²Šå²†å²“å²•å· å¸Šå¸Žåº‹åº‰åºŒåºˆåº�å¼…å¼�彸彶忒忑å¿�å¿å¿¨å¿®å¿³å¿¡å¿¤å¿£å¿ºå¿¯å¿·å¿»æ€€å¿´æˆºæŠƒæŠŒæŠŽæŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�æ±±æ±¯æ±©æ²šæ±æ²‡æ²•沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�芅芎芑芓��\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŠŠèŠƒèŠ„è±¸è¿‰è¾¿é‚Ÿé‚¡é‚¥é‚žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é‚§é‚ é˜°é˜¨é˜¯é˜ä¸³ä¾˜ä½¼ä¾…佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑�����咂咈呫呺呾呥呬呴呦å’�å‘¯å‘¡å‘ å’˜å‘£å‘§å‘¤å›·å›¹å�¯å�²å�å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇å¢å¥å®“å®•å±„å±‡å²®å²¤å² å²µå²¯å²¨å²¬å²Ÿå²£å²å²¢å²ªå²§å²�å²¥å²¶å²°å²¦å¸—å¸”å¸™å¼¨å¼¢å¼£å¼¤å½”å¾‚å½¾å½½å¿žå¿¥æ€æ€¦æ€™æ€²æ€‹æ€´æ€Šæ€—怳怚怞怬怢æ€�æ€�æ€®æ€“æ€‘æ€Œæ€‰æ€œæˆ”æˆ½æŠæŠ´æ‹‘æŠ¾æŠªæŠ¶æ‹ŠæŠ®æŠ³æŠ¯æŠ»æŠ©æŠ°ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃������æ�½æž�æ�¸æ�¹æž”æ¬¥æ®€æ¾æ¯žæ°�æ²“æ³¬æ³«æ³®æ³™æ²¶æ³”æ²æ³§æ²·æ³�泂沺泃泆æ³ï¿½ï¿½ï¿½ï¿½ï¿½æ³²æ³’æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡çŽçŽ¦çŽ¢çŽ çŽ¬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵è‚èˆ èŠ è‹€èŠ«èŠšèŠ˜èŠ›èŠµèŠ§èŠ®èŠ¼èŠžèŠºèŠ´èŠ¨èŠ¡èŠ©è‹‚èŠ¤è‹ƒèŠ¶èŠ¢è™°è™¯è™è™®è±–è¿’è¿‹è¿“è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"������������������������������������������������俓侲俉俋ä¿�俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’å’¥å“�哃èŒ�å’·å’®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å“–å’¶å“…å“†å’ å‘°å’¼å’¢å’¾å‘²å“žå’°åžµåžžåžŸåž¤åžŒåž—åž�垛垔垘åž�垙垥垚�����垕壴å¤�奓姡姞姮娀姱å§�å§ºå§½å§¼å§¶å§¤å§²å§·å§›å§©å§³å§µå§ å§¾å§´å§å®¨å±Œå³�峘峌峗峋峛峞峚峉峇峊峖峓峔å³�å³ˆå³†å³Žå³Ÿå³¸å·¹å¸¡å¸¢å¸£å¸ å¸¤åº°åº¤åº¢åº›åº£åº¥å¼‡å¼®å½–å¾†æ€·æ€¹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲柈��\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵æŸ�æž³æŸ·æŸ¶æŸ®æŸ£æŸ‚æž¹æŸŽæŸ§æŸ°æž²æŸ¼æŸ†æŸæŸŒæž®æŸ¦æŸ›æŸºæŸ‰æŸŠæŸƒæŸªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æŸ‹æ¬¨æ®‚æ®„æ®¶æ¯–æ¯˜æ¯ æ° æ°¡æ´¨æ´´æ´æ´Ÿæ´¼æ´¿æ´’洊泚洳洄洙洺洚洑洀�����æ´�浂æ´�洘洷洃æ´�æµ€æ´‡æ´ æ´¬æ´ˆæ´¢æ´‰æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„çœˆçœƒçœ„çœ…çœŠç›·ç›»ç›ºçŸ§çŸ¨ç †ç ‘ç ’ç …ç �ç �ç Žç ‰ç ƒç “ç¥Šç¥Œç¥‹ç¥…ç¥„ç§•ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�è€”è€·èƒ˜èƒ‡èƒ èƒ‘èƒˆèƒ‚èƒ�胅��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"������������������������������������������������胣胙胜胊胕胉èƒ�胗胦èƒ�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‡¿èˆ¡èŠ”è‹™è‹¾è‹¹èŒ‡è‹¨èŒ€è‹•èŒºè‹«è‹–è‹´è‹¬è‹¡è‹²è‹µèŒŒè‹»è‹¶è‹°è‹ªè‹¤è‹ è‹ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‹³è‹è™·è™´è™¼è™³è¡�è¡Žè¡§è¡ªè¡©è§“è¨„è¨‡èµ²è¿£è¿¡è¿®è¿ éƒ±é‚½é‚¿éƒ•éƒ…é‚¾éƒ‡ï¿½ï¿½ï¿½ï¿½ï¿½éƒ‹éƒˆé‡”é‡“é™”é™�é™‘é™“é™Šé™Žå€žå€…å€‡å€“å€¢å€°å€›ä¿µä¿´å€³å€·å€¬ä¿¶ä¿·å€—å€œå€ å€§å€µå€¯å€±å€Žå…šå†”å†“å‡Šå‡„å‡…å‡ˆå‡Žå‰¡å‰šå‰’å‰žå‰Ÿå‰•å‰¢å‹�åŒŽåŽžå”¦å“¢å”—å”’å“§å“³å“¤å”šå“¿å”„å”ˆå“«å”‘å”…å“±å”Šå“»å“·å“¸å“ å”Žå”ƒå”‹åœ�åœ‚åŸŒå ²åŸ•åŸ’åžºåŸ†åž½åž¼åž¸åž¶åž¿åŸ‡åŸ�åž¹åŸ�夎奊娙娖å¨å¨®å¨•å¨�娗娊娞娳å¬å®§å®å®¬å°ƒå±–屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ����\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"������������������������������������������������æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃�������悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”������æ�™æŒæ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„æ—‚æ™Šæ™Ÿæ™‡æ™‘æœ’æœ“æ Ÿæ šæ¡‰æ ²ï¿½ï¿½ï¿½ï¿½ï¿½æ ³æ »æ¡‹æ¡�æ –æ ±æ œæ µæ «æ æ ¯æ¡Žæ¡„æ ´æ �æ ’æ ”æ ¦æ ¨æ ®æ¡�æ ºæ ¥æ æ¬¬æ¬¯æ¬æ¬±æ¬´æè‚‚殈毦毤毨毣毢毧氥浺浣浤浶æ´�æµ¡æ¶’æµ˜æµ¢æµæµ¯æ¶‘æ¶�æ·¯æµ¿æ¶†æµžæµ§æµ æ¶—æµ°æµ¼æµŸæ¶‚æ¶˜æ´¯æµ¨æ¶‹æµ¾æ¶€æ¶„æ´–æ¶ƒæµ»æµ½æµµæ¶�烜烓烑çƒ�çƒ‹ç¼¹çƒ¢çƒ—çƒ’çƒžçƒ çƒ”çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"������������������������������������������������瓴瓵甡畛畟疰ç—�疻痄痀�������疿疶疺皊盉çœ�眛çœ�çœ“çœ’çœ£çœ‘çœ•çœ™çœšçœ¢çœ§ç £ç ¬ç ¢ç µç ¯ç ¨ç ®ç «ç ¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç ©ç ³ç ªç ±ç¥”ç¥›ç¥�ç¥œç¥“ç¥’ç¥‘ç§«ç§¬ç§ ç§®ç§ç§ªç§œç§žç§�窆窉窅窋窌窊�����窇竘ç¬�笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�ç´Œç½œç½¡ç½žç½ ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳èŒè�„茙è�‘茥è�–茿è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��èŒ–èŒ¤èŒ èŒ·èŒ¯èŒ©è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄è¡è¡µè¡¶è¡²è¢€è¡±è¡¿è¡¯è¢ƒè¡¾è¡´è¡¼ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨’è±‡è±—è±»è²¤è²£èµ¶èµ¸è¶µè¶·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¶¶è»‘è»“è¿¾è¿µé€‚è¿¿è¿»é€„è¿¼è¿¶éƒ–éƒ éƒ™éƒšéƒ£éƒŸéƒ¥éƒ˜éƒ›éƒ—éƒœéƒ¤é…�é…Žé…�������釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•�����å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫å‰å‰¬å‰®å‹–å‹“åŒåŽœå•µå•¶å”¼å•�å•�唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈å”å”»å•€å•‹åœŠåœ‡åŸ»å ”åŸ¢åŸ¶åŸœåŸ´å €åŸåŸ½å ˆåŸ¸å ‹åŸ³åŸ�å ‡åŸ®åŸ£åŸ²åŸ¥åŸ¬åŸ¡å ŽåŸ¼å �埧å �å ŒåŸ±åŸ©åŸ°å �å „å¥œå© å©˜å©•å©§å©žå¨¸å¨µå©å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜å²å®å¯�寀屙崞崋å´�å´šå´ å´Œå´¨å´���\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"������������������������������������������������崦崥å´�崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷������惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽæŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�掮�����æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�æ¢œæ¡æ¡®æ¢®æ¢«æ¥–桯梣梬梩桵桴梲æ¢�æ¡·æ¢’æ¡¼æ¡«æ¡²æ¢ªæ¢€æ¡±æ¡¾æ¢›æ¢–æ¢‹æ¢ æ¢‰æ¢¤æ¡¸æ¡»æ¢‘æ¢Œæ¢Šæ¡½æ¬¶æ¬³æ¬·æ¬¸æ®‘æ®�æ®�æ®Žæ®Œæ°ªæ·€æ¶«æ¶´æ¶³æ¹´æ¶¬æ·©æ·¢æ¶·æ·¶æ·”æ¸€æ·ˆæ· æ·Ÿæ·–æ¶¾æ·¥æ·œæ·�æ·›æ·´æ·Šæ¶½æ·æ·°æ¶ºæ·•æ·‚æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎��\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"������������������������������������������������牾牻牼牿çŒ�猗猇猑猘猊�������猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋������痌痑ç—�çš�皉盓眹眯çœçœ±çœ²çœ´çœ³çœ½çœ¥çœ»çœµç¡ˆç¡’硉ç¡�ç¡Šç¡Œç ¦ç¡…ç¡������祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵笻笴笥笰笢笤笳笘笪ç¬�笱笫ç¬ç¬¯ç¬²ç¬¸ç¬šç¬£ç²”粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„脟脬脞脡脕脧è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶è™™ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"������������������������������������������������虖蚿蚷蛂è›�蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘�����軞è»�è»œè»—è» è»¡é€¤é€‹é€‘é€œé€Œé€¡éƒ¯éƒªéƒ°éƒ´éƒ²éƒ³éƒ”éƒ«éƒ¬éƒ©é…–é…˜é…šé…“é…•é‡¬é‡´é‡±é‡³é‡¸é‡¤é‡¹é‡ªé‡«é‡·é‡¨é‡®é•ºé–†é–ˆé™¼é™é™«é™±é™¯éš¿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥å–啷噅喢喓喈å–�å–µå–�å–£å–’å–¤å•½å–Œå–¦å•¿å–•å–¡å–ŽåœŒå ©å ·å ™å žå §å £å ¨åŸµå¡ˆå ¥å œå ›å ³å ¿å ¶å ®å ¹å ¸å å ¬å »å¥¡åª¯åª”åªŸå©ºåª¢åªžå©¸åª¦ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜åª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻��\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�æ¹³æ¸œæ¸³æ¹‹æ¹€æ¹‘æ¸»æ¸ƒæ¸®æ¹žæ¹¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¹œæ¹¡æ¸±æ¸¨æ¹ æ¹±æ¹«æ¸¹æ¸¢æ¸°æ¹“æ¹¥æ¸§æ¹¸æ¹¤æ¹·æ¹•æ¹¹æ¹’æ¹¦æ¸µæ¸¶æ¹šç„ ç„žç„¯ï¿½ï¿½ï¿½ï¿½ï¿½çƒ»ç„®ç„±ç„£ç„¥ç„¢ç„²ç„Ÿç„¨ç„ºç„›ç‰‹ç‰šçŠˆçŠ‰çŠ†çŠ…çŠ‹çŒ’çŒ‹çŒ°çŒ¢çŒ±çŒ³çŒ§çŒ²çŒçŒ¦çŒ£çŒµçŒŒç�®ç�¬ç�°ç�«ç�–ç�šç�¡ç�ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ 硤硥硜ç¡ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤çŠç‡ç„çˆçŒçŽç€ç˜ç…粢粞粨粡絘絯絣絓絖絧絪çµ�çµçµœçµ«çµ’絔絩絑絟��\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çµŽç¼¾ç¼¿ç½¥ç½¦ç¾¢ç¾ ç¾¡ç¿—è�‘�������è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è�������è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“莚è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩é€é€´é€¯é„†é„¬é„„郿郼鄈郹郻é„�鄀��\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é„‡é„…é„ƒé…¡é…¤é…Ÿé…¢é… éˆ�鈊�������鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾������隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊�����傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�å¡™å¡¥å¡›å ½å¡£å¡±å£¼å«‡å«„å«‹åªºåª¸åª±åªµåª°åª¿å«ˆåª»å«†åª·å«€å«Šåª´åª¶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�å¹‹å»…å»Œå»†å»‹å»‡å½€å¾¯å¾æƒ·æ…‰æ…Šæ„«æ……愶愲愮慆愯æ…�æ„©æ…€æˆ é…¨æˆ£æˆ¥æˆ¤æ�…æ�±ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"������������������������������������������������æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•�������æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓������暆暌暕æš�æš‹æšŠæš™æš”æ™¸æœ æ¥¦æ¥Ÿæ¤¸æ¥Žæ¥¢æ¥±æ¤¿æ¥…æ¥ªæ¤¹æ¥‚æ¥—æ¥™æ¥ºæ¥ˆæ¥‰ï¿½ï¿½ï¿½ï¿½ï¿½æ¤µæ¥¬æ¤³æ¤½æ¥¥æ£°æ¥¸æ¤´æ¥©æ¥€æ¥¯æ¥„æ¥¶æ¥˜æ¥�楴楌椻楋椷楜æ¥�æ¥‘æ¤²æ¥’æ¤¯æ¥»æ¤¼æ†æ…æƒæ‚æˆæ�殛毻毼毹毷毸溛滖滈æº�æ»€æºŸæº“æº”æº æº±æº¹æ»†æ»’æº½æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�æ»Šæº—æº®æº£ç…‡ç…”ç…’ç…£ç… ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�ç…“ç…„ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎��\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"������������������������������������������������瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹�������畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶ç—痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�§ç�”ç�™ç�çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛ç¨�窣窢窞竫ç¦ç¤çç´ç©ç²ç¥ç³ç±ç°ç¡ç¸ç¶ç£ç²²ç²´ç²¯ç¶ˆç¶†ç¶€ç¶�絿綅絺綎絻綃絼綌綔綄絽綒ç½ç½«ç½§ç½¨ç½¬ç¾¦ç¾¥ç¾§ç¿›ç¿œè€¡è…¤è… 腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�葟葰è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"������������������������������������������������葨葾葄è�«è‘ 葔葮è‘�蜋蜄�������蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�è¦…è¦›è§Ÿè§¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è§¤è§¡è§ è§¢è§œè§¦è©¶èª†è©¿è©¡è¨¿è©·èª‚èª„è©µèªƒèª�詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�è¶’è·°è· è·¬è·±è·®è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆é‰é‰¬é‰�é‰ é‰§é‰¯éˆ¶é‰¡é‰°éˆ±é‰”é‰£é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �é Žé¢¬é£¶é£¹é¦¯é¦²é¦°é¦µéªéª«é›é³ªé³é³§éº€é»½åƒ¦åƒ”僗僨僳僛僪åƒ�僤��\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åƒ“åƒ¬åƒ°åƒ¯åƒ£åƒ å‡˜åŠ€åŠ�勩�������勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴������墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚å«å««å«³å«¢å« 嫛嫬�����嫞å«�嫙嫨嫟å·å¯ 寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�æ‘´æ‘¶æ‘²æ‘³æ‘½æ‘µæ‘¦æ’¦æ‘Žæ’‚æ‘žæ‘œæ‘‹æ‘“æ‘ æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…æœ„æœ¢æ¦±æ¦¶æ§‰æ¦ æ§Žæ¦–æ¦°æ¦¬æ¦¼æ¦‘æ¦™æ¦Žæ¦§æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"������������������������������������������������榪榡榞槙榗æ¦�æ§‚æ¦µæ¦¥æ§†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æŠæ�æ‹æ®žæ®Ÿæ® æ¯ƒæ¯„æ¯¾æ»Žæ»µæ»±æ¼ƒæ¼¥æ»¸æ¼·æ»»æ¼®æ¼‰æ½Žæ¼™æ¼šæ¼§æ¼˜æ¼»æ¼’ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ»æ¼Šæ¼¶æ½³æ»¹æ»®æ¼æ½€æ¼°æ¼¼æ¼µæ»«æ¼‡æ¼Žæ½ƒæ¼…滽滶漹漜滼漺漟æ¼�漞漈�����漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ 碬碢碤禘禊禋禖禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩��\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"������������������������������������������������綡緉罳翢翣翥翞耤è��è�œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�������è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�è’ è“—è“”è“’è“›è’°è’‘è™¡èœ³èœ£èœ¨ï¿½ï¿½ï¿½ï¿½ï¿½è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ 蜲蜪èœèœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�é„£é„œé„ é„¢é„Ÿé„�é„šé„¤é„¡é„›é…ºé…²é…¹é…³éŠ¥éŠ¤é‰¶éŠ›é‰ºéŠ éŠ”éŠªéŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩éŠ���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"������������������������������������������������銋éˆéšžéš¡é›¿é�˜é�½é�ºé�¾éžƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éž€éž‚é�»éž„éž�é�¿éŸŽéŸ�é –é¢é¢®é¤‚餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧������鬾鬿é é¡éŸé³±é³²é³µéº§åƒ¿å„ƒå„°åƒ¸å„†å„‡åƒ¶åƒ¾å„‹å„Œåƒ½å„ŠåŠ‹åŠŒå‹±å‹¯å™ˆï¿½ï¿½ï¿½ï¿½ï¿½å™‚å™Œå˜µå™�噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�å¢±å¢ å¢£å¢¯å¢¬å¢¥å¢¡å£¿å«¿å«´å«½å«·å«¶å¬ƒå«¸å¬‚å«¹å¬�嬇嬅å¬�å±§å¶™å¶—å¶Ÿå¶’å¶¢å¶“å¶•å¶ å¶œå¶¡å¶šå¶žå¹©å¹�å¹ å¹œç·³å»›å»žå»¡å½‰å¾²æ†‹æ†ƒæ…¹æ†±æ†°æ†¢æ†‰æ†›æ†“æ†¯æ†æ†Ÿæ†’憪憡æ†�æ…¦æ†³æˆæ‘®æ‘°æ’–æ’ æ’…æ’—æ’œæ’�æ’‹æ’Šæ’Œæ’£æ’Ÿæ‘¨æ’±æ’˜æ•¶æ•ºæ•¹æ•»æ–²æ–³æšµæš°æš©æš²æš·æšªæš¯æ¨€æ¨†æ¨—æ§¥æ§¸æ¨•æ§±æ§¤æ¨ æ§¿æ§¬æ§¢æ¨›æ¨���\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻æ¨�槼槫樉樄樘樥æ¨�æ§¶æ¨¦æ¨‡æ§´æ¨–æ‘æ®¥æ®£æ®¢æ®¦æ°�氀毿氂æ½�漦潾������澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫潽�����潧æ¾�æ½“æ¾‹æ½©æ½¿æ¾•æ½£æ½·æ½ªæ½»ç†²ç†¯ç†›ç†°ç† ç†šç†©ç†µç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�ç£Œç£‘ç£Žç£”ç£ˆç£ƒç£„ç£‰ç¦šç¦¡ç¦ ç¦œç¦¢ç¦›æ¶ç¨¹çª²çª´çª³ç®·ç¯‹ç®¾ç®¬ç¯Žç®¯ç®¹ç¯Šç®µç³…糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰ç¾ç¿ç¿«ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"������������������������������������������������翪翬翦翨è�¤è�§è†£è†Ÿè†žè†•�������膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�è”®è”‚è“½è”žè“¶è”±è”¦è“§è“¨è“°ï¿½ï¿½ï¿½ï¿½ï¿½è“¯è“¹è”˜è” è”°è”‹è”™è”¯è™¢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣è§è§°è§¬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�è³§è¶ è¶œè¶¡è¶›è¸ è¸£è¸¥è¸¤è¸®è¸•è¸›è¸–è¸‘è¸™è¸¦è¸§è¸”è¸’è¸˜è¸“è¸œè¸—è¸šè¼¬è¼¤è¼˜è¼šè¼ è¼£è¼–è¼—é�³é�°é�¯é�§é�«é„¯é„«é„©ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"������������������������������������������������鄪鄲鄦鄮醅醆醊é†�醂醄�������醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�é‹•é‹‰é‹ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é‹žé‹§é‹‘é‹“éŠµé‹¡éŒ¥é‹†éŠ´é•¼é–¬é–«é–®é–°éš¤éš¢é›“éœ…éœˆéœ‚é�šéžŠéžŽéžˆéŸ�éŸ�ï¿½ï¿½ï¿½ï¿½ï¿½é žé �é ¦é ©é ¨é é ›é §é¢²é¤ˆé£ºé¤‘é¤”é¤–é¤—é¤•é§œé§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱é†éƒé§é´é±é¦é¶éµé°é¨é¤é¬é³¼é³ºé³½é³¿é³·é´‡é´€é³¹é³»é´ˆé´…鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ 噮噳噦噣å™å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�å¬–å¬¨å¬šå¬ å¬žå¯¯å¶¬å¶±å¶©å¶§å¶µå¶°å¶®å¶ªå¶¨å¶²å¶å¶¯å¶´å¹§å¹¨å¹¦å¹¯å»©å»§å»¦å»¨å»¥å½‹ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"������������������������������������������������徼徻æ†�憨憖懅憴懆æ‡�懌�������憺憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽������暻暺曌朣樴橦橉橧樲橨樾æ©�æ©æ©¶æ©›æ©‘樨橚樻樿æ©�橪橤æ©�æ©�æ©”ï¿½ï¿½ï¿½ï¿½ï¿½æ©¯æ©©æ© æ¨¼æ©žæ©–æ©•æ©�æ©Žæ©†æ•æ”æ–æ®§æ®ªæ®«æ¯ˆæ¯‡æ°„æ°ƒæ°†æ¾æ¿‹æ¾£æ¿‡æ¾¼æ¿Žæ¿ˆæ½žæ¿„澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ 璔璒璕璡甋疀瘯ç˜ç˜±ç˜½ç˜³ç˜¼ç˜µç˜²ç˜°çš»ç›¦çžšçž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢ç£ç£Ÿç£ 禤穄穈穇窶窸窵��\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"������������������������������������������������窱窷篞篣篧ç¯�篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗ç³�ç³‘ç¸’ç¸¡ç¸—ç¸Œç¸Ÿç¸ ç¸“ç¸Žç¸œç¸•ç¸šç¸¢ç¸‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·ï¿½ï¿½ï¿½ï¿½ï¿½è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�è•¢è•„è•‘è•‡è•£è”¾è•›è•±è•Žè•®è•µè••è•§è• è–Œè•¦è•�蕔蕥蕬虣虥虤螤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰è¤è¤®è¤§è¤±è¤¢è¤©è¤£è¤¯è¤¬è¤Ÿè§±è« 諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"������������������������������������������������邆郺鄳鄵鄶醓é†�醑é†�é†��������錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒéŒŽéŒ�é‹‹éŒ�鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒�����éœ�éž™éž—éž”éŸ°éŸ¸é µé ¯é ²é¤¤é¤Ÿé¤§é¤©é¦žé§®é§¬é§¥é§¤é§°é§£é§ªé§©é§§éª¹éª¿éª´éª»é«¶é«ºé«¹é«·é¬³é®€é®…é®‡é¼é¾é»é®‚鮓鮒é®�éºé®•é½é®ˆé´¥é´—é´ é´žé´”é´©é´�鴘鴢é´�鴙鴟麈麆麇麮éºé»•é»–é»ºé¼’é¼½å„¦å„¥å„¢å„¤å„ å„©å‹´åš“åšŒåš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒å¬å¬¥å¬²å¬£å¬¬å¬§å¬¦å¬¯å¬®å»å¯±å¯²å¶·å¹¬å¹ªå¾¾æ‡ƒæ†µæ†¼æ‡§æ‡ 懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª���\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"������������������������������������������������檖æª�æª¥æª‰æªŸæª›æª¡æªžæª‡æª“ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æªŽæª•æªƒæª¨æª¤æª‘æ©¿æª¦æªšæª…æªŒæª’æ›æ®æ°‰æ¿Œæ¾©æ¿´æ¿”æ¿£æ¿œæ¿æ¿§æ¿¦æ¿žæ¿²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�ç’ªç’璱璥璯ç”�甑甒ç”������疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨ç¸ç¸¼ç¹‚縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�è–§è–•è– è–‹è–£è•»è–¤è–šè–žè•·è•¼è–‰è–¡è•ºè•¸è•—è–Žè––è–†è–�è–™è–�è–�薢薂薈薅蕹��\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"������������������������������������������������蕶薘è–�薟虨螾螪èžèŸ…螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒������褷襂è¦è¦¯è¦®è§²è§³è¬žè¬˜è¬–謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰�����豲豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�é† éŽ¡éŽƒéŽ¯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��é�‘é� é�éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§é�Žé�™é—‡é—€é—‰é—ƒé—…é–·éš®éš°éš¬éœ éœŸéœ˜éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯é¤é¤±é¤°é¦˜é¦£é¦¡é¨‚駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼éˆé®šé®¨é®žé®›é®¦é®¡é®¥é®¤é®†ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é®¢é® é®¯é´³éµ�鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵é´éºŠéº‰éº�éº°é»ˆé»šé»»é»¿é¼¤é¼£é¼¢é½”é¾ å„±å„������儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀å¹å¹®æ‡˜æ‡Ÿæ‡æ‡®æ‡±æ‡ªæ‡°æ‡«æ‡–懩擿攄�����擽擸æ”�æ”ƒæ“¼æ–”æ—›æ›šæ››æ›˜æ«…æª¹æª½æ«¡æ«†æªºæª¶æª·æ«‡æª´æªæžæ¯‰æ°‹ç€‡ç€Œç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺礌礓礔礉ç¤�礒礑ç¦ç¦¬ç©Ÿç°œç°©ç°™ç° ç°Ÿç°ç°�簦簨簢簥簰繜ç¹�ç¹–ç¹£ç¹˜ç¹¢ç¹Ÿç¹‘ç¹ ç¹—ç¹“ç¾µç¾³ç¿·ç¿¸è�µè‡‘臒è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓èŸèŸ˜èŸ£èŸ—蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉������謪謧謣謳謰謵è‡è¬¯è¬¼è¬¾è¬±è¬¥è¬·è¬¦è¬¶è¬®è¬¤è¬»è¬½è¬ºè±‚è±µè²™è²˜è²—è³¾ï¿½ï¿½ï¿½ï¿½ï¿½è´„è´‚è´€è¹œè¹¢è¹ è¹—è¹–è¹žè¹¥è¹§è¹›è¹šè¹¡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀éŽ�鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵éŠéŒé‹é¯‡é¯†é¯ƒé®¿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋��\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎�������麌黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫åšåš¦åš§åšªåš¬å£šå£�壛������夒嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞æ—�æ›žæ«§æ« æ«Œæ«‘æ«™æ«‹æ«Ÿæ«œï¿½ï¿½ï¿½ï¿½ï¿½æ«�æ««æ«�æ«�æ«žæ æ®°æ°Œç€™ç€§ç€ ç€–ç€«ç€¡ç€¢ç€£ç€©ç€—ç€¤ç€œçˆŒçˆŠçˆ‡çˆ‚çˆ…çŠ¥çŠ¦çŠ¤çŠ£çŠ¡ç“‹ç“…ç’·ç“ƒç”–ç™ çŸ‰çŸŠçŸ„çŸ±ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕舋艤艡艣藫藱è—è—™è—¡è—¨è—šè——è—¬è—²è—¸è—˜è—Ÿè—£è—œè—‘è—°è—¦è—¯è—žè—¢è €èŸºè ƒèŸ¶èŸ·è ‰è Œè ‹è †èŸ¼è ˆèŸ¿è Šè ‚è¥¢è¥šè¥›è¥—è¥¡è¥œè¥˜è¥�襙覈覷��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"������������������������������������������������覶觶è�èˆèŠè€è“è–è”è‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è•è‘è‚è’è—豃豷豶貚贆贇贉趬趪è¶è¶«è¹è¹¸è¹³è¹ªè¹¯è¹»è»‚轒轑è½�������è½�轓辴酀鄿醰é†é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žï¿½ï¿½ï¿½ï¿½ï¿½é�€é�’鎥é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�é¨¤é¨›é¨¢é¨ é¨§é¨£é¨žé¨œé¨”é«‚é¬‹é¬Šé¬Žé¬Œé¬·é¯ªé¯«é¯ é¯žé¯¤é¯¦é¯¢é¯°é¯”é¯—é¯¬é¯œé¯™é¯¥é¯•é¯¡é¯šéµ·é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼é¼é½€é½�é½�齖齗齘匷嚲嚵嚳壣å…巆巇廮廯忀å¿�懹攗攖攕攓旟曨曣曤��\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"������������������������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵�������瀯瀷瀴瀱ç�‚瀸瀿瀺瀹瀪ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›çŸŒçŸŽï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çŸ�çŸ�矲礥礣礧礨礤礩禲穮穬ç©ç«·ç±‰ç±ˆç±Šç±‡ç±…糮繻繾çº�纀羺翿�����è�¹è‡›è‡™è‰¨è‰©è˜¢è—¿è˜�è—¾è˜›è˜€è—¶è˜„è˜‰è˜…è˜Œè—½è ™è �è ‘è —è “è –è¥£è¥¦è¦¹è§·è èªè�è¨è£è¥è§è趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�¼é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌饋饓騲騴騱騬騪騶騩騮騸é¨é«‡é«Šé«†é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀��\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"������������������������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶��������鶒鶘é¶�é¶›é¶ é¶”é¶œé¶ªé¶—é¶¡é¶šé¶¢é¶¨é¶žé¶£é¶¿é¶©é¶–é¶¦é¶§éº™éº›éºšé»¥é»¤é»§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é»¦é¼°é¼®é½›é½ é½žé½�齙龑儺儹劘劗囃嚽嚾åˆå‡å·‹å·�廱懽攛欂櫼欃�����櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�ç¤ç¤±ç¤¯ç±”籓糲纊纇纈纋纆çº�ç½�羻耰è‡�è˜˜è˜ªè˜¦è˜Ÿè˜£è˜œè˜™è˜§è˜®è˜¡è˜ è˜©è˜žè˜¥è ©è �è ›è è ¤è œè «è¡Šè¥è¥©è¥®è¥«è§ºè¹è¸è…èºè»è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺騿é«�鬕鬗鬘鬖鬺é’é°«é°�鰜鰬鰣鰨鰩鰤鰡鶷��\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"������������������������������������������������鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻�������鶵鷎鶹鶺鶬鷈鶱é¶é·Œé¶³é·�鶲鹺麜黫黮é»é¼›é¼˜é¼šé¼±é½Žé½¥é½¤é¾’亹������囆囅囋奱å‹åŒå·•å·‘å»²æ”¡æ” æ”¦æ”¢æ¬‹æ¬ˆæ¬‰æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ï¿½ï¿½ï¿½ï¿½ï¿½ç“•瓙瓗ç™çšç¤µç¦´ç©°ç©±ç±—籜籙籛籚糴糱纑ç½�ç¾‡è‡žè‰«è˜´è˜µè˜³è˜¬è˜²è˜¶è ¬è ¨è ¦è ªè ¥è¥±è¦¿è¦¾è§»è¾è®„讂讆讅è¿è´•躕躔躚躒èº�èº–èº—è½ è½¢é…‡é‘Œé‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊驉驒é©�é«�鬙鬫鬻é–é•鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙��\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"������������������������������������������������壨壧奲å�å·˜è ¯å½�æˆ�戃戄�������攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�çŽƒç™°çŸ”ç±§ç±¦çº•è‰¬è˜ºè™€è˜¹è˜¼è˜±è˜»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è˜¾è °è ²è ®è ³è¥¶è¥´è¥³è§¾è®Œè®Žè®‹è®ˆè±…è´™èº˜è½¤è½£é†¼é‘¢é‘•é‘�é‘—é‘žéŸ„éŸ…ï¿½ï¿½ï¿½ï¿½ï¿½é €é©–é©™é¬žé¬Ÿé¬ é±’é±˜é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨é·é»‚é»�黲黳鼆鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�åŽå±æ”æ›æ›®æ¬“ç�Ÿç�¡ç��ç� 爣瓛瓥矕礸禷禶籪纗羉è‰è™ƒè ¸è ·è µè¡‹è®”è®•èºžèºŸèº èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•é™é±£é±§é±¦é±¢é±žé± 鸂鷾鸇鸃鸆鸅鸀é¸�é¸‰é·¿é·½é¸„éº é¼žé½†é½´é½µé½¶å›”æ”®æ–¸ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"������������������������������������������������欘欙欗欚ç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç±©ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘鑯鑱������鑳é�‰é¡²é¥Ÿé±¨é±®é±é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²ï¿½ï¿½ï¿½ï¿½ï¿½èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© 鬮鱴鱳鱱鱵鸔鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•鸗齈戇欞爧虌躨钂钀é’�驩驨鸙虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªçˆ©éº¤é½¾é½‰é¾˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[223] = \"������������������������������������������������î€��������î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½ï¿½ï¿½ï¿½ï¿½ï¿½î€¾î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚��\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"������������������������������������������������îƒ��������îƒ�îƒ�îƒ�îƒ�îƒžîƒŸï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹ï¿½ï¿½ï¿½ï¿½ï¿½îƒºîƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„�î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„î…�î…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…��\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"������������������������������������������������î†��������î†�î†�î†�������î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†î†®î†¯î†°î†±î†²î†³î†´î†µï¿½ï¿½ï¿½ï¿½ï¿½î†¶î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡�î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�������������������������������������������������������î‰�î‰�î‰�î‰�������î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±ï¿½ï¿½ï¿½ï¿½ï¿½î‰²î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ�îŠ�îŠ�îŠ�îŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�������������������������������������������������������îŒ�îŒ�îŒ�îŒ�������îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒï¿½ï¿½ï¿½ï¿½ï¿½îŒ®îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµîŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£îŽ¤îŽ¥îŽ¦îŽ§îŽ¨îŽ©îŽªîŽ«ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"������������������������������������������������îŽîŽ®îŽ¯îŽ°îŽ±îŽ²îŽ³îŽ´îŽµï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îŽ¶îŽ·îŽ¸îŽ¹îŽºîŽ»îŽ¼îŽ½îŽ¾îŽ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��������î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©ï¿½ï¿½ï¿½ï¿½ï¿½î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�î‘žî‘Ÿî‘ î‘¡î‘¢î‘£î‘¤î‘¥î‘¦î‘§ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"������������������������������������������������î‘�������î’�������î’�î’Žî’�î’�î’�î’žî’Ÿî’ î’¡î’¢î’£î’¤î’¥ï¿½ï¿½ï¿½ï¿½ï¿½î’¦î’§î’¨î’©î’ªî’«î’¬î’î“�î“�î“�î“�î“�î“žî“Ÿî“ î“¡î“¢î“£î“¤î“¥î“¦î“§î“¨î“©î“ªî“«î“¬î“î”�î”�î”�î”�î”�î”žî”Ÿî” î”¡î”¢î”£ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"������������������������������������������������î”�������î•�������î•�î•�î•�î•�î•žî•Ÿî• î•¡ï¿½ï¿½ï¿½ï¿½ï¿½î•¢î•£î•¤î•¥î•¦î•§î•¨î•©î•ªî•«î•¬î•î–�î–�î–Žî–�î–�î–�î–žî–Ÿî– î–¡î–¢î–£î–¤î–¥î–¦î–§î–¨î–©î–ªî–«î–¬î–î—�î—�î—Žî—�î—�î—���\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î— î—¡î—¢î—£î—¤î—¥î—¦î—§î—¨î—©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î—ªî—«î—¬î—î˜�������î˜�î˜�î˜�î˜�ï¿½ï¿½ï¿½ï¿½ï¿½î˜žî˜Ÿî˜ î˜¡î˜¢î˜£î˜¤î˜¥î˜¦î˜§î˜¨î˜©î˜ªî˜«î˜¬î˜î˜®î˜¯î˜°î˜±î˜²î˜³î˜´î˜µî˜¶î˜·î˜¸î˜¹î˜ºî˜»î˜¼î˜½î˜¾î˜¿î™€î™�î™�î™�î™�î™�î™žî™Ÿî™ î™¡î™¢î™£î™¤î™¥î™¦î™§î™¨î™©î™ªî™«î™¬î™î™®î™¯î™°î™±î™²î™³î™´î™µî™¶î™·î™¸î™¹î™ºî™»î™¼î™½î™¾î™¿îš€îš�îš�îš�îš���\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"������������������������������������������������îš�îšžîšŸîš îš¡îš¢îš£îš¤îš¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îš¦îš§îš¨îš©îšªîš«îš¬îšîš®îš¯îš°îš±îš²îš³îš´îšµîš¶îš·îš¸îš¹îšºîš»îš¼îš½îš¾îš¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î›€î›�î›�î›�î›������î›�î›žî›Ÿî› î›¡î›¢î›£î›¤î›¥î›¦î›§î›¨î›©î›ªî›«î›¬î›î›®î›¯î›°î›±î›²î›³î›´î›µî›¶î›·î›¸î›¹î›ºî›»î›¼î›½î›¾î›¿îœ€îœ�îœ�îœ�îœ�îœ�îœžîœŸîœ îœ¡îœ¢îœ£îœ¤îœ¥îœ¦îœ§îœ¨îœ©îœªîœ«îœ¬îœîœ®îœ¯îœ°îœ±îœ²îœ³îœ´îœµîœ¶îœ·îœ¸îœ¹îœºîœ»îœ¼îœ½îœ¾îœ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"������������������������������������������������î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�¼î�½î�¾î�¿îž€îž�îž�îž�îž������îž�îžžîžŸîž îž¡îž¢îž£îž¤îž¥îž¦îž§îž¨îž©îžªîž«îž¬îžîž®îž¯îž°îž±îž²îž³îž´îžµîž¶îž·îž¸îž¹îžºîž»îž¼îž½îž¾îž¿îŸ€îŸ�îŸ�îŸ�îŸ�îŸ�îŸžîŸŸîŸ îŸ¡îŸ¢îŸ£îŸ¤îŸ¥îŸ¦îŸ§îŸ¨îŸ©îŸªîŸ«îŸ¬îŸîŸ®îŸ¯îŸ°îŸ±îŸ²îŸ³îŸ´îŸµîŸ¶îŸ·îŸ¸îŸ¹îŸºîŸ»îŸ¼îŸ½îŸ¾îŸ¿î €î �î ‚î ƒî „î …î †î ‡î ˆî ‰î Šî ‹î Œî �î Žî �î �î ‘î ’î “ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î ”î •î –î —î ˜î ™î šî ›î œî �ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î žî Ÿî î ¡î ¢î £î ¤î ¥î ¦î §î ¨î ©î ªî «î ¬î î ®î ¯î °î ±î ²î ³î ´î µî ¶î ·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î ¸î ¹î ºî »î ¼î ½î ¾î ¿î¡€î¡�î¡�î¡�î¡������î¡�î¡žî¡Ÿî¡ î¡¡î¡¢î¡£î¡¤î¡¥î¡¦î¡§î¡¨î¡©î¡ªî¡«î¡¬î¡î¡®î¡¯î¡°î¡±î¡²î¡³î¡´î¡µî¡¶î¡·î¡¸î¡¹î¡ºî¡»î¡¼î¡½î¡¾î¡¿î¢€î¢�î¢�î¢�î¢�î¢�î¢žî¢Ÿî¢ î¢¡î¢¢î¢£î¢¤î¢¥î¢¦î¢§î¢¨î¢©î¢ªî¢«î¢¬î¢î¢®î¢¯î¢°î¢±î¢²î¢³î¢´î¢µî¢¶î¢·î¢¸î¢¹î¢ºî¢»î¢¼î¢½î¢¾î¢¿î£€î£�î£�î£���\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"������������������������������������������������î£��������î£�î£žî£Ÿî£ î£¡î£¢î££î£¤î£¥î£¦î£§î£¨î£©î£ªî£«î£¬î£î£®î£¯î£°î£±î£²î£³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î£´î£µî£¶î£·î£¸î£¹î£ºî£»î£¼î£½î£¾î£¿î¤€î¤�î¤������î¤�î¤�î¤�î¤žî¤Ÿî¤ î¤¡î¤¢î¤£î¤¤î¤¥î¤¦î¤§î¤¨î¤©î¤ªî¤«î¤¬î¤î¤®î¤¯î¤°î¤±î¤²î¤³î¤´î¤µî¤¶î¤·î¤¸î¤¹î¤ºî¤»î¤¼î¤½î¤¾î¤¿î¥€î¥�î¥�î¥�î¥�î¥�î¥žî¥Ÿî¥ î¥¡î¥¢î¥£î¥¤î¥¥î¥¦î¥§î¥¨î¥©î¥ªî¥«î¥¬î¥î¥®î¥¯î¥°î¥±î¥²î¥³î¥´î¥µî¥¶î¥·î¥¸î¥¹î¥ºî¥»î¥¼î¥½î¥¾î¥¿î¦€î¦���\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"������������������������������������������������î¦�î¦�î¦��������î¦�î¦žî¦Ÿî¦ î¦¡î¦¢î¦£î¦¤î¦¥î¦¦î¦§î¦¨î¦©î¦ªî¦«î¦¬î¦î¦®î¦¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¦°î¦±î¦²î¦³î¦´î¦µî¦¶î¦·î¦¸î¦¹î¦ºî¦»î¦¼î¦½î¦¾î¦¿î§€î§������î§�î§Žî§�î§�î§�î§žî§Ÿî§ î§¡î§¢î§£î§¤î§¥î§¦î§§î§¨î§©î§ªî§«î§¬î§î§®î§¯î§°î§±î§²î§³î§´î§µî§¶î§·î§¸î§¹î§ºî§»î§¼î§½î§¾î§¿î¨€î¨�î¨�î¨�î¨�î¨�î¨žî¨Ÿî¨ î¨¡î¨¢î¨£î¨¤î¨¥î¨¦î¨§î¨¨î¨©î¨ªî¨«î¨¬î¨î¨®î¨¯î¨°î¨±î¨²î¨³î¨´î¨µî¨¶î¨·î¨¸î¨¹î¨ºî¨»î¨¼î¨½î¨¾î¨¿î©€î©���\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"������������������������������������������������î©�î©�î©��������î©�î©žî©Ÿî© î©¡î©¢î©£î©¤î©¥î©¦î©§î©¨î©©î©ªî©«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î©¬î©î©®î©¯î©°î©±î©²î©³î©´î©µî©¶î©·î©¸î©¹î©ºî©»î©¼î©½î©¾î©¿îª€îª������îª�îª�îª�îª�îªžîªŸîª îª¡îª¢îª£îª¤îª¥îª¦îª§îª¨îª©îªªîª«îª¬îªîª®îª¯îª°îª±îª²îª³îª´îªµîª¶îª·îª¸îª¹îªºîª»îª¼îª½îª¾îª¿î«€î«�î«�î«�î«�î«�î«žî«Ÿî« î«¡î«¢î«£î«¤î«¥î«¦î«§î«¨î«©î«ªî««î«¬î«î«®î«¯î«°î«±î«²î«³î«´î«µî«¶î«·î«¸î«¹î«ºî«»î«¼î«½î«¾î«¿î¬€î¬���\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"������������������������������������������������î¬��������î¬�î¬�î¬�î¬žî¬Ÿî¬ î¬¡î¬¢î¬£î¬¤î¬¥î¬¦î¬§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¬¨î¬©î¬ªî¬«î¬¬î¬î¬®î¬¯î¬°î¬±î¬²î¬³î¬´î¬µî¬¶î¬·î¬¸î¬¹î¬ºî¬»î¬¼î¬½î¬¾î¬¿î€î������î‚îƒî„î…î†î‡îˆî‰îŠî‹îŒî�îŽî�î�î‘î’î“î”î•î–î—î˜î™îšî›îœî�îžîŸî î¡î¢î£î¤î¥î¦î§î¨î©îªî«î¬îî®î¯î°î±î²î³î´îµî¶î·î¸î¹îºî»î¼î½î¾î¿î®€î®�î®�î®�î®�î®�î®žî®Ÿî® î®¡î®¢î®£î®¤î®¥î®¦î®§î®¨î®©î®ªî®«î®¬î®î®®î®¯î®°î®±î®²î®³î®´î®µî®¶î®·î®¸î®¹î®ºî®»î®¼î®½î®¾î®¿ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"������������������������������������������������î¯��������î¯�î¯�î¯�î¯�î¯žî¯Ÿî¯ î¯¡î¯¢î¯£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¯¤î¯¥î¯¦î¯§î¯¨î¯©î¯ªî¯«î¯¬î¯î¯®î¯¯î¯°î¯±î¯²î¯³î¯´î¯µî¯¶î¯·î¯¸î¯¹î¯ºî¯»î¯¼î¯½ï¿½ï¿½ï¿½ï¿½ï¿½î¯¾î¯¿î°€î°�î°�î°Žî°�î°�î°�î°žî°Ÿî° î°¡î°¢î°£î°¤î°¥î°¦î°§î°¨î°©î°ªî°«î°¬î°î°®î°¯î°°î°±î°²î°³î°´î°µî°¶î°·î°¸î°¹î°ºî°»î°¼î°½î°¾î°¿î±€î±�î±�î±�î±�î±�î±žî±Ÿî± î±¡î±¢î±£î±¤î±¥î±¦î±§î±¨î±©î±ªî±«î±¬î±î±®î±¯î±°î±±î±²î±³î±´î±µî±¶î±·î±¸î±¹î±ºî±»ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"������������������������������������������������î²��������î²�î²�î²�î²�î²žî²Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î² î²¡î²¢î²£î²¤î²¥î²¦î²§î²¨î²©î²ªî²«î²¬î²î²®î²¯î²°î²±î²²î²³î²´î²µî²¶î²·î²¸î²¹ï¿½ï¿½ï¿½ï¿½ï¿½î²ºî²»î²¼î²½î²¾î²¿î³€î³�î³�î³�î³�î³�î³žî³Ÿî³ î³¡î³¢î³£î³¤î³¥î³¦î³§î³¨î³©î³ªî³«î³¬î³î³®î³¯î³°î³±î³²î³³î³´î³µî³¶î³·î³¸î³¹î³ºî³»î³¼î³½î³¾î³¿î´€î´�î´�î´Žî´�î´�î´�î´žî´Ÿî´ î´¡î´¢î´£î´¤î´¥î´¦î´§î´¨î´©î´ªî´«î´¬î´î´®î´¯î´°î´±î´²î´³î´´î´µî´¶î´·ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"������������������������������������������������îµ��������îµ�îµ�îµ�������îµ�îµžîµŸîµ îµ¡îµ¢îµ£îµ¤îµ¥îµ¦îµ§îµ¨îµ©îµªîµ«îµ¬îµîµ®îµ¯îµ°îµ±îµ²îµ³îµ´îµµï¿½ï¿½ï¿½ï¿½ï¿½îµ¶îµ·îµ¸îµ¹îµºîµ»îµ¼îµ½îµ¾îµ¿î¶€î¶�î¶�î¶Žî¶�î¶�î¶�î¶žî¶Ÿî¶ î¶¡î¶¢î¶£î¶¤î¶¥î¶¦î¶§î¶¨î¶©î¶ªî¶«î¶¬î¶î¶®î¶¯î¶°î¶±î¶²î¶³î¶´î¶µî¶¶î¶·î¶¸î¶¹î¶ºî¶»î¶¼î¶½î¶¾î¶¿î·€î·�î·�î·Žî·�î·�î·�î·žî·Ÿî· î·¡î·¢î·£î·¤î·¥î·¦î·§î·¨î·©î·ªî·«î·¬î·î·®î·¯î·°î·±î·²î·³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�������������������������������������������������������î¸�î¸�î¸�î¸�������î¸�î¸žî¸Ÿî¸ î¸¡î¸¢î¸£î¸¤î¸¥î¸¦î¸§î¸¨î¸©î¸ªî¸«î¸¬î¸î¸®î¸¯î¸°î¸±ï¿½ï¿½ï¿½ï¿½ï¿½î¸²î¸³î¸´î¸µî¸¶î¸·î¸¸î¸¹î¸ºî¸»î¸¼î¸½î¸¾î¸¿î¹€î¹�î¹�î¹�î¹�î¹�î¹žî¹Ÿî¹ î¹¡î¹¢î¹£î¹¤î¹¥î¹¦î¹§î¹¨î¹©î¹ªî¹«î¹¬î¹î¹®î¹¯î¹°î¹±î¹²î¹³î¹´î¹µî¹¶î¹·î¹¸î¹¹î¹ºî¹»î¹¼î¹½î¹¾î¹¿îº€îº�îº�îº�îº�îº�îºžîºŸîº îº¡îº¢îº£îº¤îº¥îº¦îº§îº¨îº©îºªîº«îº¬îºîº®îº¯ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�������������������������������������������������������î»�î»�î»�î»�������î»�î»žî»Ÿî» î»¡î»¢î»£î»¤î»¥î»¦î»§î»¨î»©î»ªî»«î»¬î»ï¿½ï¿½ï¿½ï¿½ï¿½î»®î»¯î»°î»±î»²î»³î»´î»µî»¶î»·î»¸î»¹î»ºî»»î»¼î»½î»¾î»¿î¼€î¼�î¼�î¼�î¼�î¼�î¼žî¼Ÿî¼ î¼¡î¼¢î¼£î¼¤î¼¥î¼¦î¼§î¼¨î¼©î¼ªî¼«î¼¬î¼î¼®î¼¯î¼°î¼±î¼²î¼³î¼´î¼µî¼¶î¼·î¼¸î¼¹î¼ºî¼»î¼¼î¼½î¼¾î¼¿î½€î½�î½�î½�î½�î½�î½žî½Ÿî½ î½¡î½¢î½£î½¤î½¥î½¦î½§î½¨î½©î½ªî½«ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"������������������������������������������������î½î½®î½¯î½°î½±î½²î½³î½´î½µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î½¶î½·î½¸î½¹î½ºî½»î½¼î½½î½¾î½¿î¾€î¾�î¾�î¾�������î¾�î¾�î¾žî¾Ÿî¾ î¾¡î¾¢î¾£î¾¤î¾¥î¾¦î¾§î¾¨î¾©ï¿½ï¿½ï¿½ï¿½ï¿½î¾ªî¾«î¾¬î¾î¾®î¾¯î¾°î¾±î¾²î¾³î¾´î¾µî¾¶î¾·î¾¸î¾¹î¾ºî¾»î¾¼î¾½î¾¾î¾¿î¿€î¿�î¿�î¿�î¿�î¿�î¿žî¿Ÿî¿ î¿¡î¿¢î¿£î¿¤î¿¥î¿¦î¿§î¿¨î¿©î¿ªî¿«î¿¬î¿î¿®î¿¯î¿°î¿±î¿²î¿³î¿´î¿µî¿¶î¿·î¿¸î¿¹î¿ºî¿»î¿¼î¿½î¿¾î¿¿ï€€ï€�ï€�ï€�ï€�ï€�ï€žï€Ÿï€ ï€¡ï€¢ï€£ï€¤ï€¥ï€¦ï€§ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"������������������������������������������������ï€ï€®ï€¯ï€°ï€±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï€²ï€³ï€´ï€µï€¶ï€·ï€¸ï€¹ï€ºï€»ï€¼ï€½ï€¾ï€¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï¿½ï¿½ï¿½ï¿½ï¿½ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï‚€ï‚�ï‚�ï‚�ï‚�ï‚�ï‚žï‚Ÿï‚ ï‚¡ï‚¢ï‚£ï‚¤ï‚¥ï‚¦ï‚§ï‚¨ï‚©ï‚ªï‚«ï‚¬ï‚ïƒ�ïƒ�ïƒ�ïƒ�ïƒ�ïƒžïƒŸïƒ ïƒ¡ïƒ¢ïƒ£ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"������������������������������������������������ïƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ïƒ®ïƒ¯ïƒ°ïƒ±ïƒ²ïƒ³ïƒ´ïƒµïƒ¶ïƒ·ïƒ¸ïƒ¹ïƒºïƒ»ïƒ¼ïƒ½ïƒ¾ïƒ¿ï„€ï„�������ï„�ï„�ï„�ï„�ï„žï„Ÿï„ ï„¡ï¿½ï¿½ï¿½ï¿½ï¿½ï„¢ï„£ï„¤ï„¥ï„¦ï„§ï„¨ï„©ï„ªï„«ï„¬ï„ï…�ï…�ï…Žï…�ï…�ï…�ï…žï…Ÿï… ï…¡ï…¢ï…£ï…¤ï…¥ï…¦ï…§ï…¨ï…©ï…ªï…«ï…¬ï…ï†�ï†�ï†�ï†�ï†���\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï† ï†¡ï†¢ï†£ï†¤ï†¥ï†¦ï†§ï†¨ï†©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï†ªï†«ï†¬ï†ï†®ï†¯ï†°ï†±ï†²ï†³ï†´ï†µï†¶ï†·ï†¸ï†¹ï†ºï†»ï†¼ï†½ï†¾ï†¿ï‡€ï‡�������ï‡�ï‡�ï‡�ï‡�ï¿½ï¿½ï¿½ï¿½ï¿½ï‡žï‡Ÿï‡ ï‡¡ï‡¢ï‡£ï‡¤ï‡¥ï‡¦ï‡§ï‡¨ï‡©ï‡ªï‡«ï‡¬ï‡ï‡®ï‡¯ï‡°ï‡±ï‡²ï‡³ï‡´ï‡µï‡¶ï‡·ï‡¸ï‡¹ï‡ºï‡»ï‡¼ï‡½ï‡¾ï‡¿ïˆ€ïˆ�ïˆ�ïˆ�ïˆ�ïˆ�ïˆžïˆŸïˆ ïˆ¡ïˆ¢ïˆ£ïˆ¤ïˆ¥ïˆ¦ïˆ§ïˆ¨ïˆ©ïˆªïˆ«ïˆ¬ïˆïˆ®ïˆ¯ïˆ°ïˆ±ïˆ²ïˆ³ïˆ´ïˆµïˆ¶ïˆ·ïˆ¸ïˆ¹ïˆºïˆ»ïˆ¼ïˆ½ïˆ¾ïˆ¿ï‰€ï‰�ï‰�ï‰�ï‰���\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"������������������������������������������������ï‰�ï‰žï‰Ÿï‰ ï‰¡ï‰¢ï‰£ï‰¤ï‰¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï‰¦ï‰§ï‰¨ï‰©ï‰ªï‰«ï‰¬ï‰ï‰®ï‰¯ï‰°ï‰±ï‰²ï‰³ï‰´ï‰µï‰¶ï‰·ï‰¸ï‰¹ï‰ºï‰»ï‰¼ï‰½ï‰¾ï‰¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ïŠ€ïŠ�ïŠ�ïŠ�ïŠ������ïŠ�ïŠžïŠŸïŠ ïŠ¡ïŠ¢ïŠ£ïŠ¤ïŠ¥ïŠ¦ïŠ§ïŠ¨ïŠ©ïŠªïŠ«ïŠ¬ïŠïŠ®ïŠ¯ïŠ°ïŠ±ïŠ²ïŠ³ïŠ´ïŠµïŠ¶ïŠ·ïŠ¸ïŠ¹ïŠºïŠ»ïŠ¼ïŠ½ïŠ¾ïŠ¿ï‹€ï‹�ï‹�ï‹�ï‹�ï‹�ï‹žï‹Ÿï‹ ï‹¡ï‹¢ï‹£ï‹¤ï‹¥ï‹¦ï‹§ï‹¨ï‹©ï‹ªï‹«ï‹¬ï‹ï‹®ï‹¯ï‹°ï‹±ï‹²ï‹³ï‹´ï‹µï‹¶ï‹·ï‹¸ï‹¹ï‹ºï‹»ï‹¼ï‹½ï‹¾ï‹¿ïŒ€ïŒ�ïŒ�ïŒ�ïŒ���\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"������������������������������������������������ïŒ�ïŒžïŒŸïŒ ïŒ¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ïŒ¢ïŒ£ïŒ¤ïŒ¥ïŒ¦ïŒ§ïŒ¨ïŒ©ïŒªïŒ«ïŒ¬ïŒïŒ®ïŒ¯ïŒ°ïŒ±ïŒ²ïŒ³ïŒ´ïŒµïŒ¶ïŒ·ïŒ¸ïŒ¹ïŒºïŒ»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ïŒ¼ïŒ½ïŒ¾ïŒ¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•�����ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ïŽ€ïŽ�ïŽ�ïŽ�ïŽ�ïŽ�ïŽžïŽŸïŽ ïŽ¡ïŽ¢ïŽ£ïŽ¤ïŽ¥ïŽ¦ïŽ§ïŽ¨ïŽ©ïŽªïŽ«ïŽ¬ïŽïŽ®ïŽ¯ïŽ°ïŽ±ïŽ²ïŽ³ïŽ´ïŽµïŽ¶ïŽ·ïŽ¸ïŽ¹ïŽºïŽ»ïŽ¼ïŽ½ïŽ¾ïŽ¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“��\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"������������������������������������������������ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï���������ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘�����ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï‘€ï‘�ï‘�ï‘�ï‘�ï‘�ï‘žï‘Ÿï‘ ï‘¡ï‘¢ï‘£ï‘¤ï‘¥ï‘¦ï‘§ï‘¨ï‘©ï‘ªï‘«ï‘¬ï‘ï’�ï’�ï’Žï’���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"������������������������������������������������ï’��������ï’�ï’žï’Ÿï’ ï’¡ï’¢ï’£ï’¤ï’¥ï’¦ï’§ï’¨ï’©ï’ªï’«ï’¬ï’������ï“�ï“������ï“�ï“�ï“�ï“žï“Ÿï“ ï“¡ï“¢ï“£ï“¤ï“¥ï“¦ï“§ï“¨ï“©ï“ªï“«ï“¬ï“ï”�ï”�ï”�ï”�ï”�ï”žï”Ÿï” ï”¡ï”¢ï”£ï”¤ï”¥ï”¦ï”§ï”¨ï”©ï”ªï”«ï”¬ï”ï•���\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"������������������������������������������������ï•�ï•�ï•��������ï•�ï•žï•Ÿï• ï•¡ï•¢ï•£ï•¤ï•¥ï•¦ï•§ï•¨ï•©ï•ªï•«ï•¬ï•������ï–������ï–�ï–Žï–�ï–�ï–�ï–žï–Ÿï– ï–¡ï–¢ï–£ï–¤ï–¥ï–¦ï–§ï–¨ï–©ï–ªï–«ï–¬ï–ï—�ï—�ï—Žï—�ï—�ï—�ï—žï—Ÿï— ï—¡ï—¢ï—£ï—¤ï—¥ï—¦ï—§ï—¨ï—©ï—ªï—«ï—¬ï—ï˜���\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20002] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�����������������������������������������������ï£�ï£�ï£�ï£�ï£�ï£žï£Ÿï£ ï£¡ï£¢ï££ï£¤ï£¥ï£¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï£§\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"������������������������������������������������ ,ã€�。․•;:?ï¼��������︰…‥ï¹�﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴ï¹�()︵︶{ï½�︷������︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙�����﹚﹛﹜ï¹�﹞‘’“â€�ã€�〞′‵#&*※§〃○â—�△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊ï¹�ï¹Žï¹‹ï¹Œï¹Ÿï¹ ï¹¡ï¼‹ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓→â†�↖↗↙↘∥∣ï¼�ï¼¼ï¿½ï¹¨ï¼„ï¿¥ã€’ï¿ ï¿¡ï¼…ï¼ â„ƒâ„‰ï¹©ï¹ªï¹«ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„゜兙兛兞å…�兡兣��\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"������������������������������������������������嗧瓩糎â–�▂▃▄▅▆▇�������█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘â•╮╰╯â•�������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾã‚�ゞ�〄々〆〇ー[]✽ã�������ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ï¼�ï¼‘ï¼’ï¼“ï¼”ï¼•ï¼–ï¼—ï¼˜ï¼™â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ã€¡ã€¢ã€£ã€¤ã€¥ã€¦ã€§ã€¨ã€©ï¿½å�„�ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï½�bcdefghijklï½�nï½�ï½�qrstuvwxyzΑΒΓΔΕΖΗΘΙΚ��\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"������������������������������������������������ΛΜÎ�ΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯â‘ ②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをんァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼ��\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä¸¶ä¸¿ï¿½äº…ï¿½äº ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å†‚å†–å†«ï¿½ï¿½ï¿½ï¿½å‹¹ï¿½ï¿½åŒ¸ï¿½ï¿½å�©ï¿½åŽ¶ï¿½ï¿½ï¿½ï¿½ï¿½å¤‚ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å®€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å·›ï¿½ï¿½ï¿½ï¿½å¹ºå¹¿å»´ï¿½ï¿½ï¿½å½�å½¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ”´ï¿½ï¿½ï¿½ï¿½æ— ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç–’ç™¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¾µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"��������������������������������������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌������黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫åšåš¦åš§åšªåš¬å£šå£�壛夒�����嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞æ—�æ›žæ«§æ« æ«Œæ«‘æ«™æ«‹æ«Ÿæ«œæ«�æ««æ«�æ«�æ«žæ æ®°æ°Œç€™ç€§ç€ ç€–ç€«ç€¡ç€¢ç€£ç€©ç€—ç€¤ç€œçˆŒçˆŠçˆ‡çˆ‚çˆ…çŠ¥çŠ¦çŠ¤çŠ£çŠ¡ç“‹ç“…ç’·ç“ƒç”–ç™ çŸ‰çŸŠçŸ„çŸ±ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕舋艤艡艣藫藱è—藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢��\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è €èŸºè ƒèŸ¶èŸ·è ‰è Œè ‹è †èŸ¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è ˆèŸ¿è Šè ‚è¥¢è¥šè¥›è¥—è¥¡è¥œè¥˜è¥�襙覈覷覶觶è�èˆèŠè€è“è–è”è‹è•������è‘è‚è’è—豃豷豶貚贆贇贉趬趪è¶è¶«è¹è¹¸è¹³è¹ªè¹¯è¹»è»‚轒轑è½�è½������轓辴酀鄿醰é†é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žé�€é�’鎥é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�é¨¤é¨›é¨¢é¨ é¨§é¨£é¨žé¨œé¨”é«‚é¬‹é¬Šé¬Žé¬Œé¬·é¯ªé¯«é¯ é¯žé¯¤é¯¦é¯¢é¯°é¯”é¯—é¯¬é¯œé¯™é¯¥é¯•é¯¡é¯šéµ·é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼é¼é½€é½���\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"������������������������������������������������é½�齖齗齘匷嚲嚵嚳壣å…�������巆巇廮廯忀å¿�懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯������瀷瀴瀱ç�‚瀸瀿瀺瀹瀪ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›çŸŒçŸŽçŸ������çŸ�矲礥礣礧礨礤礩禲穮穬ç©ç«·ç±‰ç±ˆç±Šç±‡ç±…糮繻繾çº�纀羺翿è�¹è‡›è‡™è‰¨è‰©è˜¢è—¿è˜�è—¾è˜›è˜€è—¶è˜„è˜‰è˜…è˜Œè—½è ™è �è ‘è —è “è –è¥£è¥¦è¦¹è§·è èªè�è¨è£è¥è§è趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�¼é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌��\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"������������������������������������������������饋饓騲騴騱騬騪騶騩騮�������騸é¨é«‡é«Šé«†é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶�鶒������鶘é¶�é¶›é¶ é¶”é¶œé¶ªé¶—é¶¡é¶šé¶¢é¶¨é¶žé¶£é¶¿é¶©é¶–é¶¦é¶§éº™éº›éºšé»¥é»¤é»§é»¦ï¿½ï¿½ï¿½ï¿½ï¿½é¼°é¼®é½›é½ é½žé½�齙龑儺儹劘劗囃嚽嚾åˆå‡å·‹å·�廱懽攛欂櫼欃櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�ç¤ç¤±ç¤¯ç±”籓糲纊纇纈纋纆çº�ç½�羻耰è‡�è˜˜è˜ªè˜¦è˜Ÿè˜£è˜œè˜™è˜§è˜®è˜¡è˜ è˜©è˜žè˜¥è ©è �è ›è è ¤è œè «è¡Šè¥è¥©è¥®è¥«è§ºè¹è¸è…èºè»è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–��\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"������������������������������������������������騹騽驆驄驂é©�騺騿é«�鬕�������鬗鬘鬖鬺é’é°«é°�鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵������鷎鶹鶺鶬鷈鶱é¶é·Œé¶³é·�鶲鹺麜黫黮é»é¼›é¼˜é¼šé¼±é½Žé½¥é½¤é¾’亹囆�����囅囋奱å‹åŒå·•å·‘å»²æ”¡æ” æ”¦æ”¢æ¬‹æ¬ˆæ¬‰æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ç“•瓙瓗ç™çšç¤µç¦´ç©°ç©±ç±—籜籙籛籚糴糱纑ç½�ç¾‡è‡žè‰«è˜´è˜µè˜³è˜¬è˜²è˜¶è ¬è ¨è ¦è ªè ¥è¥±è¦¿è¦¾è§»è¾è®„讂讆讅è¿è´•躕躔躚躒èº�èº–èº—è½ è½¢é…‡é‘Œé‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊驉驒é©�é«�鬙鬫鬻é–é•鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒��\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"������������������������������������������������鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘�������鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲å�å·˜è ¯å½�æˆ�戃戄攩������攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�çŽƒç™°çŸ”ç±§ç±¦çº•è‰¬è˜ºè™€è˜¹è˜¼è˜±è˜»è˜¾ï¿½ï¿½ï¿½ï¿½ï¿½è °è ²è ®è ³è¥¶è¥´è¥³è§¾è®Œè®Žè®‹è®ˆè±…è´™èº˜è½¤è½£é†¼é‘¢é‘•é‘�é‘—é‘žéŸ„éŸ…é €é©–é©™é¬žé¬Ÿé¬ é±’é±˜é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨é·é»‚é»�黲黳鼆鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�åŽå±æ”æ›æ›®æ¬“ç�Ÿç�¡ç��ç� 爣瓛瓥矕礸禷禶籪纗羉è‰è™ƒè ¸è ·è µè¡‹è®”è®•èºžèºŸèº èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•é™é±£é±§ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é±¦é±¢é±žé± é¸‚é·¾é¸‡é¸ƒé¸†é¸…ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¸€é¸�é¸‰é·¿é·½é¸„éº é¼žé½†é½´é½µé½¶å›”æ”®æ–¸æ¬˜æ¬™æ¬—æ¬šç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘鑯鑱鑳�����é�‰é¡²é¥Ÿé±¨é±®é±é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© 鬮鱴鱳鱱鱵鸔鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•鸗齈戇欞爧虌躨钂钀é’�驩驨鸙虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªçˆ©éº¤é½¾é½‰é¾˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"��������������������������������������������������������î€��������î€�î€�î€�������î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µï¿½ï¿½ï¿½ï¿½ï¿½î€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚��\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"�������������������������������������������������������îƒ�îƒ�îƒ�îƒ�������îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±ï¿½ï¿½ï¿½ï¿½ï¿½îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºîƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„�î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„î…�î…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…��\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"�������������������������������������������������������î†�î†�î†�î†�������î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†ï¿½ï¿½ï¿½ï¿½ï¿½î†®î†¯î†°î†±î†²î†³î†´î†µî†¶î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡�î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"������������������������������������������������îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³îˆ´îˆµï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îˆ¶îˆ·îˆ¸îˆ¹îˆºîˆ»îˆ¼îˆ½îˆ¾îˆ¿î‰€î‰�î‰�î‰�������î‰�î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©ï¿½ï¿½ï¿½ï¿½ï¿½î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ�îŠ�îŠ�îŠ�îŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"������������������������������������������������î‹î‹®î‹¯î‹°î‹±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î‹²î‹³î‹´î‹µî‹¶î‹·î‹¸î‹¹î‹ºî‹»î‹¼î‹½î‹¾î‹¿îŒ€îŒ�������îŒ�îŒ�îŒ�îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥ï¿½ï¿½ï¿½ï¿½ï¿½îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒîŒ®îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµîŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"������������������������������������������������îŽï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îŽ®îŽ¯îŽ°îŽ±îŽ²îŽ³îŽ´îŽµîŽ¶îŽ·îŽ¸îŽ¹îŽºîŽ»îŽ¼îŽ½îŽ¾îŽ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡ï¿½ï¿½ï¿½ï¿½ï¿½î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î�������������������������������������������������������������������¬¦��㈱№℡������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙ä¸�七乃ä¹�äº†äºŒäººå„¿å…¥å…«å‡ åˆ€åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å�å‘å“寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰�丑ä¸�ä¸�ä¸ä¸°ä¸¹ä¹‹å°¹äºˆäº‘井互五亢ä»�什仃仆仇ä»�今介仄元å…�å…§å…兮公冗凶��\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"������������������������������������������������分切刈勻勾勿化匹å�ˆå�‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�…å�žåŽ„å�‹å�Šå��壬天夫太å¤å”å°‘å°¤å°ºå±¯å·´å¹»å»¿å¼”å¼•å¿ƒæˆˆæˆ¶æ‰‹æ‰Žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ”¯æ–‡æ–—æ–¤æ–¹æ—¥æ›°æœˆæœ¨æ¬ æ¢æ¹æ¯‹æ¯”毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ï¿½ï¿½ï¿½ï¿½ï¿½ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�ä¹Žä»¥ä»˜ä»”ä»•ä»–ä»—ä»£ä»¤ä»™ä»žå……å…„å†‰å†Šå†¬å‡¹å‡ºå‡¸åˆŠåŠ åŠŸåŒ…åŒ†åŒ—åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�å�»å››å›šå¤–央失奴奶å•它尼巨巧左市布平幼å¼�å¼˜å¼—å¿…æˆŠæ‰“æ‰”æ‰’æ‰‘æ–¥æ—¦æœ®æœ¬æœªæœ«æœæ£æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�å†°åˆ—ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åˆ‘åˆ’åˆŽåˆ–åŠ£åŒˆåŒ¡åŒ å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’å› ï¿½ï¿½ï¿½ï¿½ï¿½å›žå›�圳地在åœåœ¬åœ¯åœ©å¤™å¤šå¤·å¤¸å¦„奸妃好她如å¦�å—å˜å®‡å®ˆå®…安寺尖屹州帆并年å¼�弛忙忖戎戌æˆ�æˆ�æ‰£æ‰›æ‰˜æ”¶æ—©æ—¨æ—¬æ—æ›²æ›³æœ‰æœ½æœ´æœ±æœµæ¬¡æ¤æ»æ°–æ±�æ±—æ±™æ±Ÿæ± æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�佑伽伺伸佃佔似但��\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä½£ä½œä½ ä¼¯ä½Žä¼¶ä½™ä½�佈佚�������兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�å�žå�¾å�¦å‘Žå�§å‘†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘�����å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å�åœåšå›å®Œå®‹å®�尬局å±�å°¿å°¾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�å¿±å¿«å¿¸å¿ªæˆ’æˆ‘æŠ„æŠ—æŠ–æŠ€æ‰¶æŠ‰æ‰æŠŠæ‰¼æ‰¾æ‰¹æ‰³æŠ’æ‰¯æŠ˜æ‰®æŠ•æŠ“æŠ‘æŠ†æ”¹æ”»æ”¸æ—±æ›´æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� æ�“æ�—æ¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘��\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"������������������������������������������������沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ 狄狂�������玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見������角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅åŸå¤å£å®—定官宜宙宛尚��\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�å¿ å¿½å¿µå¿¿æ€�������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜�昕昊昇æœ�朋æ�枋枕æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ¦æ§æ¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�æ²®æ³—æ³…æ³±æ²¿æ²»æ³¡æ³›æ³Šæ²¬æ³¯æ³œæ³–æ³ ç‚•ç‚Žç‚’ç‚Šç‚™çˆ¬çˆçˆ¸ç‰ˆç‰§ç‰©ç‹€ç‹Žç‹™ç‹—ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直��\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"������������������������������������������������知矽社祀ç¥�秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙èŠèŠ½èŠŸèŠ¹èŠ±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŠ¬èŠ¥èŠ¯èŠ¸èŠ£èŠ°èŠ¾èŠ·è™Žè™±åˆ�表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨é�’é�žäºŸäºäº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�ä¿„ä¿‚ä¿šä¿Žä¿žä¾·å…—å†’å†‘å† å‰Žå‰ƒå‰Šå‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�å“„å“ˆå’¯å’«å’±å’»å’©å’§å’¿å›¿åž‚åž‹åž åž£åž¢åŸŽåž®åž“å¥•å¥‘å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�å§»å©å®£å®¦å®¤å®¢å®¥å°�屎å±�å±�屋峙峒巷å¸�å¸¥å¸Ÿå¹½åº åº¦å»ºå¼ˆå¼å½¥å¾ˆï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"������������������������������������������������待徊律徇後徉怒æ€�æ€ æ€¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ€Žæ€¨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�æ‹œæŒ–æŒ‰æ‹¼æ‹æŒ�æ‹®æ‹½æŒ‡æ‹±æ‹·æ‹¯æ‹¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‹¾æ‹´æŒ‘æŒ‚æ”¿æ•…æ–«æ–½æ—¢æ˜¥æ˜æ˜ 昧是星昨昱昤曷柿染柱柔æŸ�柬架�����枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�æŸ’æªæ®ƒæ®†æ®µæ¯’毗氟泉洋洲洪æµ�津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯ç‚ç‚¸ç‚®ç‚¤çˆ°ç‰²ç‰¯ç‰´ç‹©ç‹ ç‹¡çŽ·ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�ç›¹ç›¸çœ‰çœ‹ç›¾ç›¼çœ‡çŸœç ‚ç ”ç Œç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸��\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"������������������������������������������������美羿è€�è€�耑耶胖胥胚胃�������胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔������苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�è§”è¨ˆè¨‚è¨ƒè²žè² èµ´èµ³è¶´è»�軌述迦�����迢迪迥è¿è¿«è¿¤è¿¨éƒŠéƒŽéƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸéŸ³é �風飛食首香乘亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修å€å€ªä¿¾å€«å€‰å…¼å†¤å†¥å†¢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩å“員唉哮哪哦唧唇哽å”�åœƒåœ„åŸ‚åŸ”åŸ‹åŸƒå ‰å¤�å¥—å¥˜å¥šå¨‘å¨˜å¨œå¨Ÿå¨›å¨“å§¬å¨ å¨£å¨©å¨¥å¨Œå¨‰ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"������������������������������������������������å«å±˜å®°å®³å®¶å®´å®®å®µå®¹å®¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å°„屑展å±�å³å³½å³»å³ªå³¨å³°å³¶å´�å³´å·®å¸å¸«åº«åºåº§å¼±å¾’徑å¾�æ�™æ�£æ�¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��æ�•æ�æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºï¿½ï¿½ï¿½ï¿½ï¿½æ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�æ›¸æœ”æœ•æœ—æ ¡æ ¸æ¡ˆæ¡†æ¡“æ ¹æ¡‚æ¡”æ ©æ¢³æ —æ¡Œæ¡‘æ ½æŸ´æ¡�æ¡€æ ¼æ¡ƒæ ªæ¡…æ “æ ˜æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�ç›Žçœ©çœŸçœ çœ¨çŸ©ç °ç §ç ¸ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"������������������������������������������������ç �ç ´ç ·ç ¥ç ç ç Ÿç ²ç¥•ç¥�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¥ ç¥Ÿç¥–ç¥žç¥�ç¥—ç¥šç§¤ç§£ç§§ç§Ÿç§¦ç§©ç§˜çª„çªˆç«™ç¬†ç¬‘ç²‰ç´¡ç´—ç´‹ç´Šç´ ç´¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç´”ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耄耘耕耙耗耽耿胱脂胰脅èƒï¿½ï¿½ï¿½ï¿½ï¿½èƒ´è„†èƒ¸èƒ³è„ˆèƒ½è„Šèƒ¼èƒ¯è‡è‡¬èˆ€èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙閃院陣陡陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"������������������������������������������������å�´å�·å��å€�å�¯å�兜冕凰剪�������副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯������啤唸售啜唬啣唳å•�å•—åœˆåœ‹åœ‰åŸŸå …å Šå †åŸ åŸ¤åŸºå ‚å µåŸ·åŸ¹å¤ å¥¢å¨¶ï¿½ï¿½ï¿½ï¿½ï¿½å©�婉婦婪婀娼婢婚婆婊å°å¯‡å¯…å¯„å¯‚å®¿å¯†å°‰å°ˆå°‡å± å±œå±�å´‡å´†å´Žå´›å´–å´¢å´‘å´©å´”å´™å´¤å´§å´—å·¢å¸¸å¸¶å¸³å¸·åº·åº¸åº¶åºµåº¾å¼µå¼·å½—å½¬å½©å½«å¾—å¾™å¾žå¾˜å¾¡å¾ å¾œæ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…æ‚»æ‚µæƒœæ‚¼æƒ˜æƒ•æƒ†æƒŸæ‚¸æƒšæƒ‡æˆšæˆ›æ‰ˆæŽ æŽ§æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"������������������������������������������������旋旌旎æ™�晚晤晨晦晞曹�������勗望æ¢�æ¢¯æ¢¢æ¢“æ¢µæ¡¿æ¡¶æ¢±æ¢§æ¢—æ¢°æ¢ƒæ£„æ¢æ¢†æ¢…梔æ¢�梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒç�†ç�¾ç��ç“ ç“¶ç“·ç”œç”¢ç•¥ç•¦ç•¢ç•°ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票ç¥ç§»çª’çª•ç¬ ç¬¨ç¬›ç¬¬ç¬¦ç¬™ç¬žç¬®ç²’ç²—ç²•çµ†çµƒçµ±ç´®ç´¹ç´¼çµ€ç´°ç´³çµ„ç´¯çµ‚ç´²ç´±ç¼½ç¾žç¾šç¿Œç¿Žç¿’è€œè�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŽ‰èŽ è�·è�»è�¼èŽ†èŽ§è™•å½ªè›‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許è¨è¨Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨›è¨¢è±‰è±šè²©è²¬è²«è²¨è²ªè²§èµ§èµ¦è¶¾è¶ºè»›è»Ÿé€™é€�通逗連速é€�é€�é€•é€žï¿½ï¿½ï¿½ï¿½ï¿½é€ é€�逢逖逛途部éƒéƒ½é…—野釵釦釣釧é‡é‡©é–‰é™ªé™µé™³é™¸é™°é™´é™¶é™·é™¬é›€é›ªé›©ç« ç«Ÿé ‚é ƒéšé³¥é¹µé¹¿éº¥éº»å‚¢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�å ¯å ªå ´å ¤å °å ±å ¡å �å å£¹å£ºå¥ å©·åªšå©¿åª’åª›åª§å³å±å¯’富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊��\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"������������������������������������������������å»�廂廄弼å½å¾©å¾ªå¾¨æƒ‘æƒ¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‚²æ‚¶æƒ æ„œæ„£æƒºæ„•æƒ°æƒ»æƒ´æ…¨æƒ±æ„Žæƒ¶æ„‰æ„€æ„’æˆŸæ‰‰æŽ£æŽŒæ��æ�€æ�©æ�‰æ�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��æ�’æ�£æ��æ�¡æ�–æ�æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶�����景暑智晾晷曾替期æœ�æ£ºæ£•æ£ æ£˜æ£—æ¤…æ£Ÿæ£µæ£®æ£§æ£¹æ£’æ£²æ££æ£‹æ£�æ¤�æ¤’æ¤Žæ£‰æ£šæ¥®æ£»æ¬¾æ¬ºæ¬½æ®˜æ®–æ®¼æ¯¯æ°®æ°¯æ°¬æ¸¯æ¸¸æ¹”æ¸¡æ¸²æ¹§æ¹Šæ¸ æ¸¥æ¸£æ¸›æ¹›æ¹˜æ¸¤æ¹–æ¹®æ¸æ¸¦æ¹¯æ¸´æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— 登發皖皓皴盜ç��çŸç¡�硬硯��\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"������������������������������������������������ç¨�稈程稅稀窘窗窖童竣�������ç‰ç–ç†ç�ç’ç”ç�ç‹ç�ç‘粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔������翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯ï¿½ï¿½ï¿½ï¿½ï¿½è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›è›”蛛蛤è›�蛞街è£�è£‚è¢±è¦ƒè¦–è¨»è© è©•è©žè¨¼è©�詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�é›…é›„é›†é›‡é›¯é›²éŸŒé …é †é ˆé£§é£ªï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"������������������������������������������������飯飩飲é£é¦®é¦é»ƒé»�黑亂�������å‚債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌å¡å¡Šå¡¢å¡’塋�����奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�æœƒæ¦”æ¥æ¥šæ¥·æ¥ 楔極椰概楊楨楫楞楓楹榆æ¥�æ¥£æ¥›æ‡æ²æ¯€æ®¿æ¯“毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"������������������������������������������������煞煆煨煖爺牒猷ç�…猿猾�������瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œï¿½ï¿½ï¿½ï¿½ï¿½ç¨šç¨ ç¨”ç¨Ÿç¨žçªŸçª ç·ç¯€ç ç®ç§ç²±ç²³ç²µç¶“絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„腱腰腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�è£¡è£Šè£•è£’è¦œè§£è©«è©²è©³è©¦è©©è©°èª‡è©¼è©£èª è©±èª…è©è©¢è©®è©¬è©¹è©»è¨¾è©¨è±¢è²Šè²‰è³Šè³‡è³ˆè³„貲賃賂賅跡跟跨路跳跺跪��\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"������������������������������������������������跤跦躲較載軾輊辟農é�‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶ï¿½ï¿½ï¿½ï¿½ï¿½é �é ‘é “é Šé ’é Œé£¼é£´é£½é£¾é¦³é¦±é¦´é«¡é³©éº‚é¼Žé¼“é¼ åƒ§åƒ®åƒ¥åƒ–åƒåƒšåƒ•åƒ�僑僱僎僩兢凳劃劂匱åŽå—¾å˜€å˜›å˜—嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣åµå¯žå¯§å¯¡å¯¥å¯¦å¯¨å¯¢å¯¤å¯Ÿå°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘摻敲斡��\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"������������������������������������������������旗旖暢暨æš�榜榨榕æ§�榮�������槓構榛榷榻榫榴æ§�æ§�æ¦æ§Œæ¦¦æ§ƒæ¦£æ‰æŒæ°³æ¼³æ¼”æ»¾æ¼“æ»´æ¼©æ¼¾æ¼ æ¼¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¼�漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒�����爾犒犖ç�„ç��瑤瑣瑪瑰ç‘甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦�種稱窪窩ç«ç«¯ç®¡ç®•箋çµç®—ç®�ç®”ç®�ç®¸ç®‡ç®„ç²¹ç²½ç²¾ç¶»ç¶°ç¶œç¶½ç¶¾ç¶ ç·Šç¶´ç¶²ç¶±ç¶ºç¶¢ç¶¿ç¶µç¶¸ç¶ç·’ç·‡ç¶¬ç½°ç¿ ç¿¡ç¿Ÿè�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"������������������������������������������������誦誌語誣èª�誡誓誤說誥�������誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ¬éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£ï¿½ï¿½ï¿½ï¿½ï¿½é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…éŸ¶é —é ˜é¢¯é¢±é¤ƒé¤…é¤Œé¤‰é§�骯骰髦é�é‚鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦å¥å¬‰å«»å¬‹å«µå¬Œå¬ˆå¯®å¯¬å¯©å¯«å±¤å±¥å¶�嶔幢幟幡廢廚廟å»�å»£å» å½ˆå½±å¾·å¾µæ…¶æ…§æ…®æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�撰��\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ’¥æ’“æ’•æ’©æ’’æ’®æ’æ’«æ’šæ’¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ’™æ’¢æ’³æ•µæ•·æ•¸æš®æš«æš´æš±æ¨£æ¨Ÿæ§¨æ¨�æ¨žæ¨™æ§½æ¨¡æ¨“æ¨Šæ§³æ¨‚æ¨…æ§æ¨‘æ�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æŽæ®¤æ¯…æ¯†æ¼¿æ½¼æ¾„æ½‘æ½¦æ½”æ¾†æ½æ½›æ½¸æ½®æ¾Žæ½ºæ½°æ½¤æ¾—æ½˜æ»•æ½¯æ½ æ½Ÿç†Ÿï¿½ï¿½ï¿½ï¿½ï¿½ç†¬ç†±ç†¨ç‰–çŠ›ç�Žç�—ç‘©ç’‹ç’ƒç‘¾ç’€ç•¿ç˜ ç˜©ç˜Ÿç˜¤ç˜¦ç˜¡ç˜¢çššçšºç›¤çžŽçž‡çžŒçž‘çž‹ç£‹ç£…ç¢ºç£Šç¢¾ç£•ç¢¼ç£�稿稼穀稽稷稻窯窮ç®ç®±ç¯„箴篆篇ç¯�ç® ç¯Œç³Šç· ç·´ç·¯ç·»ç·˜ç·¬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�è† è†šè†˜è”—è”½è”šè“®è”¬è”蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調��\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"������������������������������������������������誰論è«�èª¶èª¹è«›è±Œè±Žè±¬è³ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è³žè³¦è³¤è³¬è³è³¢è³£è³œè³ªè³¡èµè¶Ÿè¶£è¸«è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟������輩輦輪輜輞輥é�©é�®é�¨é�é�·é„°é„鄧鄱醇醉醋醃鋅銻銷鋪鋤é‹�銳�����銼鋒鋇鋰銲é–閱霄霆震霉é� éž�éž‹éž�é ¡é «é œé¢³é¤Šé¤“é¤’é¤˜é§�é§�駟駛駑駕駒駙骷髮髯鬧é…é„é·é¯é´†é´‰é´ƒéº©éº¾é»Žå¢¨é½’儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴å¸å¯°å°Žå½Šæ†²æ†‘憩憊æ‡�憶憾懊懈戰擅æ“�擋撻撼據擄擇擂æ“�撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¨µæ©Ÿæ©ˆæ™æ·æ°…濂澱澡濃�������澤æ¿�æ¾§æ¾³æ¿€æ¾¹æ¾¶æ¾¦æ¾ æ¾´ç†¾ç‡‰ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç’Ÿç’žç“¢ç”Œç”�ç˜´ç˜¸ç˜ºç›§ç›¥çž çžžçžŸçž¥ç£¨ç£šç£¬ç£§ç¦¦ç©�穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉è•蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷è«è«³è«¶è«¼è±«è±è²“賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’éŒ éŒ¶é‹¸éŒ³éŒ¯éŒ¢é‹¼éŒ«éŒ„éŒšéŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é ¸é »é ·é é ¹é ¤é¤�館餞餛�������餡餚é§é§¢é§±éª¸éª¼é«»é«é¬¨é®‘鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵������嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤åºå°·å±¨å¶¼å¶ºå¶½å¶¸å¹«å½Œå¾½æ‡‰æ‡‚æ‡‡ï¿½ï¿½ï¿½ï¿½ï¿½æ‡¦æ‡‹æˆ²æˆ´æ“Žæ“Šæ“˜æ“ æ“°æ“¦æ“¬æ“±æ“¢æ“æ–‚斃曙曖檀檔檄檢檜櫛檣橾檗æª�æª æœæ®®æ¯šæ°ˆæ¿˜æ¿±æ¿Ÿæ¿ 濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥ç‡ç‡¬ç‡´ç‡ 爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬瞧çžçŸ¯ç£·ç£ºç£´ç£¯ç¤�禧禪穗窿簇ç°�ç¯¾ç¯·ç°Œç¯ ç³ ç³œç³žç³¢ç³Ÿç³™ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‡‚è‡€è†¿è†½è‡‰è†¾è‡¨èˆ‰è‰±è–ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è–„è•¾è–œè–‘è–”è–¯è–›è–‡è–¨è–Šè–¦è™§èŸ€èŸ‘èž³èŸ’èŸ†èž«èž»èžºèŸˆèŸ‹è¤»è¤¶è¥„è¤¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¤½è¦¬è¬Žè¬—è¬™è¬›è¬Šè¬ è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”é—Šé—‹é—Œé—ˆé—†éš±éš¸é›–éœœéœžéž éŸ“é¡†é¢¶é¤µé¨�駿鮮鮫鮪é®é´»é´¿éº‹é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�æ‡£æˆ³æ“´æ“²æ“¾æ”†æ“ºæ“»æ“·æ–·æ›œæœ¦æª³æª¬æ«ƒæª»æª¸æ«‚æª®æª¯æŸæ¸æ®¯ç€‰ç€‹æ¿¾ç€†æ¿ºç€‘ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•ç™–ç™˜ç™’çž½çž¿çž»çž¼ç¤Žç¦®ç©¡ç©¢ç© ç«„ç«…ç°«ç°§ç°ªç°žç°£ç°¡ç³§ç¹”ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"������������������������������������������������繕繞繚繡繒繙罈翹翻è�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�¶è‡�è‡�舊è—�è–©è—�è—�è—‰è–°è–ºè–¹èŸ¯èŸ¬èŸ²èŸ è¦†è¦²è§´è¬¨è¬¹è¬¬è¬«è±�贅蹙������蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖é—�闕離雜雙雛雞霤鞣鞦éžéŸ¹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é�éŽé�鯊鯉鯽鯈鯀鵑éµ�éµ é» é¼•é¼¬å„³åš¥åš¨å£žå£Ÿå£¢å¯µé¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹ç¹¹ç¹©ç¹ªç¹³ç¾…羶羹羸臘藩è—�è—ªè—•è—¤è—¥è—·èŸ»è …è �èŸ¹èŸ¾è¥ è¥Ÿè¥–è¥žè�èœè˜è‰èšï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"������������������������������������������������èŽè�è†è™è´ˆè´Šè¹¼è¹²èº‡è¹¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¹¬è¹ºè¹´è½”轎è¾é‚Šé‚‹é†±é†®é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤å€åƒå½å¯¶å·‰æ‡¸æ‡ºæ”˜æ””攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬礫竇競籌籃ç±�ç³¯ç³°è¾®ç¹½ç¹¼çº‚ç½Œè€€è‡šè‰¦è—»è—¹è˜‘è—ºè˜†è˜‹è˜‡è˜Šè ”è •è¥¤è¦ºè§¸è°è¬è¦è¯èŸè«è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"������������������������������������������������蘗è˜è˜šè £è ¢è ¡è Ÿè¥ªè¥¬è¦½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è´è·è½è´“躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅������驃驀騾é«�é”é‘é°é°¥é¶¯é¶´é·‚鶸éº�黯鼙齜齦齧儼儻囈囊囉å¿å·”巒�����彎懿攤權æ¡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽霾韃éŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�ç“šç«Šç±¤ç±£ç±¥çº“çº–çº”è‡¢è˜¸è˜¿è ±è®Šé‚�é‚�é‘£é‘ é‘¤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�ç¾ˆè ¶è ¹è¡¢è®“è®’è®–è‰·è´›é‡€é‘ªé�‚é�ˆé�„韆顰驟鬢é˜é±Ÿé·¹é·ºé¹¼é¹½é¼‡é½·ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"������������������������������������������������齲廳欖ç�£ç±¬ç±®è »è§€èº¡é‡��������鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ������ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯабвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ�⇧↸↹��䅚ク刂�冈�������������\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[221] = \"������������������������������������������������乂乜凵匚厂万丌乇äº�囗�������屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼������仨仜仩仡ä»�仚刌刉匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰������氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿å–尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�æ‰œæ‰žæ‰¤æ‰¡æ‰¦æ‰¢æ‰™æ‰ æ‰šæ‰¥æ”·æ—¯æ—®æœ¾æœ¹æœ¸æœ»æœºæœ¿æœ¼æœ³æ°˜æ±†æ±’æ±œæ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�è¥¾é‚™é‚—é‚˜é‚›é‚”é˜¢é˜¤é˜ é˜£ä½–ä¼»ä½¢ä½‰ä½“ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"������������������������������������������������佤伾佧佒佟ä½�佘ä¼ä¼³ä¼¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä½¡å†�冹刜刞刡åŠåŠ®åŒ‰å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜å�½å‘�å‘�å�¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’å¤†å¥€å¦¦å¦˜å¦ å¦—å¦Žå¦¢å¦�å¦�妧妡宎宒尨�����尪å²�å²�å²ˆå²‹å²‰å²’å²Šå²†å²“å²•å· å¸Šå¸Žåº‹åº‰åºŒåºˆåº�å¼…å¼�彸彶忒忑å¿�å¿å¿¨å¿®å¿³å¿¡å¿¤å¿£å¿ºå¿¯å¿·å¿»æ€€å¿´æˆºæŠƒæŠŒæŠŽæŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�æ±±æ±¯æ±©æ²šæ±æ²‡æ²•沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�芅芎芑芓��\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŠŠèŠƒèŠ„è±¸è¿‰è¾¿é‚Ÿé‚¡é‚¥é‚žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é‚§é‚ é˜°é˜¨é˜¯é˜ä¸³ä¾˜ä½¼ä¾…佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑�����咂咈呫呺呾呥呬呴呦å’�å‘¯å‘¡å‘ å’˜å‘£å‘§å‘¤å›·å›¹å�¯å�²å�å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇å¢å¥å®“å®•å±„å±‡å²®å²¤å² å²µå²¯å²¨å²¬å²Ÿå²£å²å²¢å²ªå²§å²�å²¥å²¶å²°å²¦å¸—å¸”å¸™å¼¨å¼¢å¼£å¼¤å½”å¾‚å½¾å½½å¿žå¿¥æ€æ€¦æ€™æ€²æ€‹æ€´æ€Šæ€—怳怚怞怬怢æ€�æ€�æ€®æ€“æ€‘æ€Œæ€‰æ€œæˆ”æˆ½æŠæŠ´æ‹‘æŠ¾æŠªæŠ¶æ‹ŠæŠ®æŠ³æŠ¯æŠ»æŠ©æŠ°ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃������æ�½æž�æ�¸æ�¹æž”æ¬¥æ®€æ¾æ¯žæ°�æ²“æ³¬æ³«æ³®æ³™æ²¶æ³”æ²æ³§æ²·æ³�泂沺泃泆æ³ï¿½ï¿½ï¿½ï¿½ï¿½æ³²æ³’æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡çŽçŽ¦çŽ¢çŽ çŽ¬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵è‚èˆ èŠ è‹€èŠ«èŠšèŠ˜èŠ›èŠµèŠ§èŠ®èŠ¼èŠžèŠºèŠ´èŠ¨èŠ¡èŠ©è‹‚èŠ¤è‹ƒèŠ¶èŠ¢è™°è™¯è™è™®è±–è¿’è¿‹è¿“è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅��\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"������������������������������������������������俓侲俉俋ä¿�俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’å’¥å“�哃èŒ�å’·å’®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å“–å’¶å“…å“†å’ å‘°å’¼å’¢å’¾å‘²å“žå’°åžµåžžåžŸåž¤åžŒåž—åž�垛垔垘åž�垙垥垚�����垕壴å¤�奓姡姞姮娀姱å§�å§ºå§½å§¼å§¶å§¤å§²å§·å§›å§©å§³å§µå§ å§¾å§´å§å®¨å±Œå³�峘峌峗峋峛峞峚峉峇峊峖峓峔å³�å³ˆå³†å³Žå³Ÿå³¸å·¹å¸¡å¸¢å¸£å¸ å¸¤åº°åº¤åº¢åº›åº£åº¥å¼‡å¼®å½–å¾†æ€·æ€¹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲柈��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵æŸ�æž³æŸ·æŸ¶æŸ®æŸ£æŸ‚æž¹æŸŽæŸ§æŸ°æž²æŸ¼æŸ†æŸæŸŒæž®æŸ¦æŸ›æŸºæŸ‰æŸŠæŸƒæŸªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æŸ‹æ¬¨æ®‚æ®„æ®¶æ¯–æ¯˜æ¯ æ° æ°¡æ´¨æ´´æ´æ´Ÿæ´¼æ´¿æ´’洊泚洳洄洙洺洚洑洀�����æ´�浂æ´�洘洷洃æ´�æµ€æ´‡æ´ æ´¬æ´ˆæ´¢æ´‰æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„çœˆçœƒçœ„çœ…çœŠç›·ç›»ç›ºçŸ§çŸ¨ç †ç ‘ç ’ç …ç �ç �ç Žç ‰ç ƒç “ç¥Šç¥Œç¥‹ç¥…ç¥„ç§•ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�è€”è€·èƒ˜èƒ‡èƒ èƒ‘èƒˆèƒ‚èƒ�胅��\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"������������������������������������������������胣胙胜胊胕胉èƒ�胗胦èƒ�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‡¿èˆ¡èŠ”è‹™è‹¾è‹¹èŒ‡è‹¨èŒ€è‹•èŒºè‹«è‹–è‹´è‹¬è‹¡è‹²è‹µèŒŒè‹»è‹¶è‹°è‹ªè‹¤è‹ è‹ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‹³è‹è™·è™´è™¼è™³è¡�è¡Žè¡§è¡ªè¡©è§“è¨„è¨‡èµ²è¿£è¿¡è¿®è¿ éƒ±é‚½é‚¿éƒ•éƒ…é‚¾éƒ‡ï¿½ï¿½ï¿½ï¿½ï¿½éƒ‹éƒˆé‡”é‡“é™”é™�é™‘é™“é™Šé™Žå€žå€…å€‡å€“å€¢å€°å€›ä¿µä¿´å€³å€·å€¬ä¿¶ä¿·å€—å€œå€ å€§å€µå€¯å€±å€Žå…šå†”å†“å‡Šå‡„å‡…å‡ˆå‡Žå‰¡å‰šå‰’å‰žå‰Ÿå‰•å‰¢å‹�åŒŽåŽžå”¦å“¢å”—å”’å“§å“³å“¤å”šå“¿å”„å”ˆå“«å”‘å”…å“±å”Šå“»å“·å“¸å“ å”Žå”ƒå”‹åœ�åœ‚åŸŒå ²åŸ•åŸ’åžºåŸ†åž½åž¼åž¸åž¶åž¿åŸ‡åŸ�åž¹åŸ�夎奊娙娖å¨å¨®å¨•å¨�娗娊娞娳å¬å®§å®å®¬å°ƒå±–屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ����\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"������������������������������������������������æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃�������悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”������æ�™æŒæ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„æ—‚æ™Šæ™Ÿæ™‡æ™‘æœ’æœ“æ Ÿæ šæ¡‰æ ²ï¿½ï¿½ï¿½ï¿½ï¿½æ ³æ »æ¡‹æ¡�æ –æ ±æ œæ µæ «æ æ ¯æ¡Žæ¡„æ ´æ �æ ’æ ”æ ¦æ ¨æ ®æ¡�æ ºæ ¥æ æ¬¬æ¬¯æ¬æ¬±æ¬´æè‚‚殈毦毤毨毣毢毧氥浺浣浤浶æ´�æµ¡æ¶’æµ˜æµ¢æµæµ¯æ¶‘æ¶�æ·¯æµ¿æ¶†æµžæµ§æµ æ¶—æµ°æµ¼æµŸæ¶‚æ¶˜æ´¯æµ¨æ¶‹æµ¾æ¶€æ¶„æ´–æ¶ƒæµ»æµ½æµµæ¶�烜烓烑çƒ�çƒ‹ç¼¹çƒ¢çƒ—çƒ’çƒžçƒ çƒ”çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"������������������������������������������������瓴瓵甡畛畟疰ç—�疻痄痀�������疿疶疺皊盉çœ�眛çœ�çœ“çœ’çœ£çœ‘çœ•çœ™çœšçœ¢çœ§ç £ç ¬ç ¢ç µç ¯ç ¨ç ®ç «ç ¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç ©ç ³ç ªç ±ç¥”ç¥›ç¥�ç¥œç¥“ç¥’ç¥‘ç§«ç§¬ç§ ç§®ç§ç§ªç§œç§žç§�窆窉窅窋窌窊�����窇竘ç¬�笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�ç´Œç½œç½¡ç½žç½ ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳èŒè�„茙è�‘茥è�–茿è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��èŒ–èŒ¤èŒ èŒ·èŒ¯èŒ©è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄è¡è¡µè¡¶è¡²è¢€è¡±è¡¿è¡¯è¢ƒè¡¾è¡´è¡¼ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨’è±‡è±—è±»è²¤è²£èµ¶èµ¸è¶µè¶·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¶¶è»‘è»“è¿¾è¿µé€‚è¿¿è¿»é€„è¿¼è¿¶éƒ–éƒ éƒ™éƒšéƒ£éƒŸéƒ¥éƒ˜éƒ›éƒ—éƒœéƒ¤é…�é…Žé…�������釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•�����å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫å‰å‰¬å‰®å‹–å‹“åŒåŽœå•µå•¶å”¼å•�å•�唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈å”å”»å•€å•‹åœŠåœ‡åŸ»å ”åŸ¢åŸ¶åŸœåŸ´å €åŸåŸ½å ˆåŸ¸å ‹åŸ³åŸ�å ‡åŸ®åŸ£åŸ²åŸ¥åŸ¬åŸ¡å ŽåŸ¼å �埧å �å ŒåŸ±åŸ©åŸ°å �å „å¥œå© å©˜å©•å©§å©žå¨¸å¨µå©å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜å²å®å¯�寀屙崞崋å´�å´šå´ å´Œå´¨å´���\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"������������������������������������������������崦崥å´�崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷������惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽæŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�掮�����æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�æ¢œæ¡æ¡®æ¢®æ¢«æ¥–桯梣梬梩桵桴梲æ¢�æ¡·æ¢’æ¡¼æ¡«æ¡²æ¢ªæ¢€æ¡±æ¡¾æ¢›æ¢–æ¢‹æ¢ æ¢‰æ¢¤æ¡¸æ¡»æ¢‘æ¢Œæ¢Šæ¡½æ¬¶æ¬³æ¬·æ¬¸æ®‘æ®�æ®�æ®Žæ®Œæ°ªæ·€æ¶«æ¶´æ¶³æ¹´æ¶¬æ·©æ·¢æ¶·æ·¶æ·”æ¸€æ·ˆæ· æ·Ÿæ·–æ¶¾æ·¥æ·œæ·�æ·›æ·´æ·Šæ¶½æ·æ·°æ¶ºæ·•æ·‚æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎��\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"������������������������������������������������牾牻牼牿çŒ�猗猇猑猘猊�������猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋������痌痑ç—�çš�皉盓眹眯çœçœ±çœ²çœ´çœ³çœ½çœ¥çœ»çœµç¡ˆç¡’硉ç¡�ç¡Šç¡Œç ¦ç¡…ç¡������祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵笻笴笥笰笢笤笳笘笪ç¬�笱笫ç¬ç¬¯ç¬²ç¬¸ç¬šç¬£ç²”粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„脟脬脞脡脕脧è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶è™™ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"������������������������������������������������虖蚿蚷蛂è›�蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘�����軞è»�è»œè»—è» è»¡é€¤é€‹é€‘é€œé€Œé€¡éƒ¯éƒªéƒ°éƒ´éƒ²éƒ³éƒ”éƒ«éƒ¬éƒ©é…–é…˜é…šé…“é…•é‡¬é‡´é‡±é‡³é‡¸é‡¤é‡¹é‡ªé‡«é‡·é‡¨é‡®é•ºé–†é–ˆé™¼é™é™«é™±é™¯éš¿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥å–啷噅喢喓喈å–�å–µå–�å–£å–’å–¤å•½å–Œå–¦å•¿å–•å–¡å–ŽåœŒå ©å ·å ™å žå §å £å ¨åŸµå¡ˆå ¥å œå ›å ³å ¿å ¶å ®å ¹å ¸å å ¬å »å¥¡åª¯åª”åªŸå©ºåª¢åªžå©¸åª¦ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜åª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻��\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�æ¹³æ¸œæ¸³æ¹‹æ¹€æ¹‘æ¸»æ¸ƒæ¸®æ¹žæ¹¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¹œæ¹¡æ¸±æ¸¨æ¹ æ¹±æ¹«æ¸¹æ¸¢æ¸°æ¹“æ¹¥æ¸§æ¹¸æ¹¤æ¹·æ¹•æ¹¹æ¹’æ¹¦æ¸µæ¸¶æ¹šç„ ç„žç„¯ï¿½ï¿½ï¿½ï¿½ï¿½çƒ»ç„®ç„±ç„£ç„¥ç„¢ç„²ç„Ÿç„¨ç„ºç„›ç‰‹ç‰šçŠˆçŠ‰çŠ†çŠ…çŠ‹çŒ’çŒ‹çŒ°çŒ¢çŒ±çŒ³çŒ§çŒ²çŒçŒ¦çŒ£çŒµçŒŒç�®ç�¬ç�°ç�«ç�–ç�šç�¡ç�ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ 硤硥硜ç¡ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤çŠç‡ç„çˆçŒçŽç€ç˜ç…粢粞粨粡絘絯絣絓絖絧絪çµ�çµçµœçµ«çµ’絔絩絑絟��\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çµŽç¼¾ç¼¿ç½¥ç½¦ç¾¢ç¾ ç¾¡ç¿—è�‘�������è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è�������è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“莚è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩é€é€´é€¯é„†é„¬é„„郿郼鄈郹郻é„�鄀��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é„‡é„…é„ƒé…¡é…¤é…Ÿé…¢é… éˆ�鈊�������鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾������隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊�����傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�å¡™å¡¥å¡›å ½å¡£å¡±å£¼å«‡å«„å«‹åªºåª¸åª±åªµåª°åª¿å«ˆåª»å«†åª·å«€å«Šåª´åª¶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�å¹‹å»…å»Œå»†å»‹å»‡å½€å¾¯å¾æƒ·æ…‰æ…Šæ„«æ……愶愲愮慆愯æ…�æ„©æ…€æˆ é…¨æˆ£æˆ¥æˆ¤æ�…æ�±ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"������������������������������������������������æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•�������æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓������暆暌暕æš�æš‹æšŠæš™æš”æ™¸æœ æ¥¦æ¥Ÿæ¤¸æ¥Žæ¥¢æ¥±æ¤¿æ¥…æ¥ªæ¤¹æ¥‚æ¥—æ¥™æ¥ºæ¥ˆæ¥‰ï¿½ï¿½ï¿½ï¿½ï¿½æ¤µæ¥¬æ¤³æ¤½æ¥¥æ£°æ¥¸æ¤´æ¥©æ¥€æ¥¯æ¥„æ¥¶æ¥˜æ¥�楴楌椻楋椷楜æ¥�æ¥‘æ¤²æ¥’æ¤¯æ¥»æ¤¼æ†æ…æƒæ‚æˆæ�殛毻毼毹毷毸溛滖滈æº�æ»€æºŸæº“æº”æº æº±æº¹æ»†æ»’æº½æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�æ»Šæº—æº®æº£ç…‡ç…”ç…’ç…£ç… ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�ç…“ç…„ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎��\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"������������������������������������������������瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹�������畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶ç—痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�§ç�”ç�™ç�çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛ç¨�窣窢窞竫ç¦ç¤çç´ç©ç²ç¥ç³ç±ç°ç¡ç¸ç¶ç£ç²²ç²´ç²¯ç¶ˆç¶†ç¶€ç¶�絿綅絺綎絻綃絼綌綔綄絽綒ç½ç½«ç½§ç½¨ç½¬ç¾¦ç¾¥ç¾§ç¿›ç¿œè€¡è…¤è… 腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�葟葰è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"������������������������������������������������葨葾葄è�«è‘ 葔葮è‘�蜋蜄�������蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�è¦…è¦›è§Ÿè§¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è§¤è§¡è§ è§¢è§œè§¦è©¶èª†è©¿è©¡è¨¿è©·èª‚èª„è©µèªƒèª�詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�è¶’è·°è· è·¬è·±è·®è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆é‰é‰¬é‰�é‰ é‰§é‰¯éˆ¶é‰¡é‰°éˆ±é‰”é‰£é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �é Žé¢¬é£¶é£¹é¦¯é¦²é¦°é¦µéªéª«é›é³ªé³é³§éº€é»½åƒ¦åƒ”僗僨僳僛僪åƒ�僤��\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åƒ“åƒ¬åƒ°åƒ¯åƒ£åƒ å‡˜åŠ€åŠ�勩�������勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴������墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚å«å««å«³å«¢å« 嫛嫬�����嫞å«�嫙嫨嫟å·å¯ 寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�æ‘´æ‘¶æ‘²æ‘³æ‘½æ‘µæ‘¦æ’¦æ‘Žæ’‚æ‘žæ‘œæ‘‹æ‘“æ‘ æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…æœ„æœ¢æ¦±æ¦¶æ§‰æ¦ æ§Žæ¦–æ¦°æ¦¬æ¦¼æ¦‘æ¦™æ¦Žæ¦§æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓��\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"������������������������������������������������榪榡榞槙榗æ¦�æ§‚æ¦µæ¦¥æ§†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æŠæ�æ‹æ®žæ®Ÿæ® æ¯ƒæ¯„æ¯¾æ»Žæ»µæ»±æ¼ƒæ¼¥æ»¸æ¼·æ»»æ¼®æ¼‰æ½Žæ¼™æ¼šæ¼§æ¼˜æ¼»æ¼’ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ»æ¼Šæ¼¶æ½³æ»¹æ»®æ¼æ½€æ¼°æ¼¼æ¼µæ»«æ¼‡æ¼Žæ½ƒæ¼…滽滶漹漜滼漺漟æ¼�漞漈�����漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ 碬碢碤禘禊禋禖禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩��\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"������������������������������������������������綡緉罳翢翣翥翞耤è��è�œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�������è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�è’ è“—è“”è“’è“›è’°è’‘è™¡èœ³èœ£èœ¨ï¿½ï¿½ï¿½ï¿½ï¿½è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ 蜲蜪èœèœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�é„£é„œé„ é„¢é„Ÿé„�é„šé„¤é„¡é„›é…ºé…²é…¹é…³éŠ¥éŠ¤é‰¶éŠ›é‰ºéŠ éŠ”éŠªéŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩éŠ���\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"������������������������������������������������銋éˆéšžéš¡é›¿é�˜é�½é�ºé�¾éžƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éž€éž‚é�»éž„éž�é�¿éŸŽéŸ�é –é¢é¢®é¤‚餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧������鬾鬿é é¡éŸé³±é³²é³µéº§åƒ¿å„ƒå„°åƒ¸å„†å„‡åƒ¶åƒ¾å„‹å„Œåƒ½å„ŠåŠ‹åŠŒå‹±å‹¯å™ˆï¿½ï¿½ï¿½ï¿½ï¿½å™‚å™Œå˜µå™�噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�å¢±å¢ å¢£å¢¯å¢¬å¢¥å¢¡å£¿å«¿å«´å«½å«·å«¶å¬ƒå«¸å¬‚å«¹å¬�嬇嬅å¬�å±§å¶™å¶—å¶Ÿå¶’å¶¢å¶“å¶•å¶ å¶œå¶¡å¶šå¶žå¹©å¹�å¹ å¹œç·³å»›å»žå»¡å½‰å¾²æ†‹æ†ƒæ…¹æ†±æ†°æ†¢æ†‰æ†›æ†“æ†¯æ†æ†Ÿæ†’憪憡æ†�æ…¦æ†³æˆæ‘®æ‘°æ’–æ’ æ’…æ’—æ’œæ’�æ’‹æ’Šæ’Œæ’£æ’Ÿæ‘¨æ’±æ’˜æ•¶æ•ºæ•¹æ•»æ–²æ–³æšµæš°æš©æš²æš·æšªæš¯æ¨€æ¨†æ¨—æ§¥æ§¸æ¨•æ§±æ§¤æ¨ æ§¿æ§¬æ§¢æ¨›æ¨���\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻æ¨�槼槫樉樄樘樥æ¨�æ§¶æ¨¦æ¨‡æ§´æ¨–æ‘æ®¥æ®£æ®¢æ®¦æ°�氀毿氂æ½�漦潾������澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫潽�����潧æ¾�æ½“æ¾‹æ½©æ½¿æ¾•æ½£æ½·æ½ªæ½»ç†²ç†¯ç†›ç†°ç† ç†šç†©ç†µç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�ç£Œç£‘ç£Žç£”ç£ˆç£ƒç£„ç£‰ç¦šç¦¡ç¦ ç¦œç¦¢ç¦›æ¶ç¨¹çª²çª´çª³ç®·ç¯‹ç®¾ç®¬ç¯Žç®¯ç®¹ç¯Šç®µç³…糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰ç¾ç¿ç¿«ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"������������������������������������������������翪翬翦翨è�¤è�§è†£è†Ÿè†žè†•�������膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�è”®è”‚è“½è”žè“¶è”±è”¦è“§è“¨è“°ï¿½ï¿½ï¿½ï¿½ï¿½è“¯è“¹è”˜è” è”°è”‹è”™è”¯è™¢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣è§è§°è§¬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�è³§è¶ è¶œè¶¡è¶›è¸ è¸£è¸¥è¸¤è¸®è¸•è¸›è¸–è¸‘è¸™è¸¦è¸§è¸”è¸’è¸˜è¸“è¸œè¸—è¸šè¼¬è¼¤è¼˜è¼šè¼ è¼£è¼–è¼—é�³é�°é�¯é�§é�«é„¯é„«é„©ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"������������������������������������������������鄪鄲鄦鄮醅醆醊é†�醂醄�������醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�é‹•é‹‰é‹ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é‹žé‹§é‹‘é‹“éŠµé‹¡éŒ¥é‹†éŠ´é•¼é–¬é–«é–®é–°éš¤éš¢é›“éœ…éœˆéœ‚é�šéžŠéžŽéžˆéŸ�éŸ�ï¿½ï¿½ï¿½ï¿½ï¿½é žé �é ¦é ©é ¨é é ›é §é¢²é¤ˆé£ºé¤‘é¤”é¤–é¤—é¤•é§œé§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱é†éƒé§é´é±é¦é¶éµé°é¨é¤é¬é³¼é³ºé³½é³¿é³·é´‡é´€é³¹é³»é´ˆé´…鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ 噮噳噦噣å™å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�å¬–å¬¨å¬šå¬ å¬žå¯¯å¶¬å¶±å¶©å¶§å¶µå¶°å¶®å¶ªå¶¨å¶²å¶å¶¯å¶´å¹§å¹¨å¹¦å¹¯å»©å»§å»¦å»¨å»¥å½‹ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"������������������������������������������������徼徻æ†�憨憖懅憴懆æ‡�懌�������憺憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽������暻暺曌朣樴橦橉橧樲橨樾æ©�æ©æ©¶æ©›æ©‘樨橚樻樿æ©�橪橤æ©�æ©�æ©”ï¿½ï¿½ï¿½ï¿½ï¿½æ©¯æ©©æ© æ¨¼æ©žæ©–æ©•æ©�æ©Žæ©†æ•æ”æ–æ®§æ®ªæ®«æ¯ˆæ¯‡æ°„æ°ƒæ°†æ¾æ¿‹æ¾£æ¿‡æ¾¼æ¿Žæ¿ˆæ½žæ¿„澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ 璔璒璕璡甋疀瘯ç˜ç˜±ç˜½ç˜³ç˜¼ç˜µç˜²ç˜°çš»ç›¦çžšçž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢ç£ç£Ÿç£ 禤穄穈穇窶窸窵��\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"������������������������������������������������窱窷篞篣篧ç¯�篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗ç³�ç³‘ç¸’ç¸¡ç¸—ç¸Œç¸Ÿç¸ ç¸“ç¸Žç¸œç¸•ç¸šç¸¢ç¸‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·ï¿½ï¿½ï¿½ï¿½ï¿½è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�è•¢è•„è•‘è•‡è•£è”¾è•›è•±è•Žè•®è•µè••è•§è• è–Œè•¦è•�蕔蕥蕬虣虥虤螤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰è¤è¤®è¤§è¤±è¤¢è¤©è¤£è¤¯è¤¬è¤Ÿè§±è« 諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"������������������������������������������������邆郺鄳鄵鄶醓é†�醑é†�é†��������錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒéŒŽéŒ�é‹‹éŒ�鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒�����éœ�éž™éž—éž”éŸ°éŸ¸é µé ¯é ²é¤¤é¤Ÿé¤§é¤©é¦žé§®é§¬é§¥é§¤é§°é§£é§ªé§©é§§éª¹éª¿éª´éª»é«¶é«ºé«¹é«·é¬³é®€é®…é®‡é¼é¾é»é®‚鮓鮒é®�éºé®•é½é®ˆé´¥é´—é´ é´žé´”é´©é´�鴘鴢é´�鴙鴟麈麆麇麮éºé»•é»–é»ºé¼’é¼½å„¦å„¥å„¢å„¤å„ å„©å‹´åš“åšŒåš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒å¬å¬¥å¬²å¬£å¬¬å¬§å¬¦å¬¯å¬®å»å¯±å¯²å¶·å¹¬å¹ªå¾¾æ‡ƒæ†µæ†¼æ‡§æ‡ 懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"������������������������������������������������檖æª�æª¥æª‰æªŸæª›æª¡æªžæª‡æª“ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æªŽæª•æªƒæª¨æª¤æª‘æ©¿æª¦æªšæª…æªŒæª’æ›æ®æ°‰æ¿Œæ¾©æ¿´æ¿”æ¿£æ¿œæ¿æ¿§æ¿¦æ¿žæ¿²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�ç’ªç’璱璥璯ç”�甑甒ç”������疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨ç¸ç¸¼ç¹‚縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�è–§è–•è– è–‹è–£è•»è–¤è–šè–žè•·è•¼è–‰è–¡è•ºè•¸è•—è–Žè––è–†è–�è–™è–�è–�薢薂薈薅蕹��\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"������������������������������������������������蕶薘è–�薟虨螾螪èžèŸ…螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒������褷襂è¦è¦¯è¦®è§²è§³è¬žè¬˜è¬–謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰�����豲豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�é† éŽ¡éŽƒéŽ¯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��é�‘é� é�éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§é�Žé�™é—‡é—€é—‰é—ƒé—…é–·éš®éš°éš¬éœ éœŸéœ˜éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯é¤é¤±é¤°é¦˜é¦£é¦¡é¨‚駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼éˆé®šé®¨é®žé®›é®¦é®¡é®¥é®¤é®†ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é®¢é® é®¯é´³éµ�鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵é´éºŠéº‰éº�éº°é»ˆé»šé»»é»¿é¼¤é¼£é¼¢é½”é¾ å„±å„������儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀å¹å¹®æ‡˜æ‡Ÿæ‡æ‡®æ‡±æ‡ªæ‡°æ‡«æ‡–懩擿攄�����擽擸æ”�æ”ƒæ“¼æ–”æ—›æ›šæ››æ›˜æ«…æª¹æª½æ«¡æ«†æªºæª¶æª·æ«‡æª´æªæžæ¯‰æ°‹ç€‡ç€Œç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺礌礓礔礉ç¤�礒礑ç¦ç¦¬ç©Ÿç°œç°©ç°™ç° ç°Ÿç°ç°�簦簨簢簥簰繜ç¹�ç¹–ç¹£ç¹˜ç¹¢ç¹Ÿç¹‘ç¹ ç¹—ç¹“ç¾µç¾³ç¿·ç¿¸è�µè‡‘臒è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓èŸèŸ˜èŸ£èŸ—蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉������謪謧謣謳謰謵è‡è¬¯è¬¼è¬¾è¬±è¬¥è¬·è¬¦è¬¶è¬®è¬¤è¬»è¬½è¬ºè±‚è±µè²™è²˜è²—è³¾ï¿½ï¿½ï¿½ï¿½ï¿½è´„è´‚è´€è¹œè¹¢è¹ è¹—è¹–è¹žè¹¥è¹§è¹›è¹šè¹¡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀éŽ�鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵éŠéŒé‹é¯‡é¯†é¯ƒé®¿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋��\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20003] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�����������������������������������������������������������������������������������������������������ï¢ï¢®ï¢¯ï¢°ï¢±ï¢²ï¢³ï¢´ï¢µï¿½ï¿½ï¿½ï¢¶ï¢·ï¢¸ï¢¹\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"���������������������������������������������������������������� ã€�。,․•:;?ï¼���‵′¨˄‾_ヽヾã‚�ゞ〃〄々〆〇ー–—ï¼�\∼∥∣…‥‘’“â€�()〔〕[]{ï½�〈〉《》「ã€�『ã€�ã€�】+ï¼�±×�÷ï¼�â‰ ï¼œï¼žâ‰¦â‰§âˆžâˆ´â™‚â™€ã‚œï¿½ï¿½â„ƒï¿¥ï¼„ï¿ ï¿¡ï¼…ï¼ƒï¼†âœ½ï¼ Â§â˜†â˜…â—‹â—�◎◇◆□■△▲▽▼※〒→â†�↑↓������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"�������������������������������������������������������������������������������ï¼�123456789�������ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz����ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん��������������\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミ�ムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î‘ΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�����������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмн�опрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[135] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä¸¶ä¸¿ï¿½äº…ï¿½äº ï¿½ï¿½ï¿½ï¿½å†‚å†–å†«ï¿½ï¿½ï¿½ï¿½å‹¹ï¿½ï¿½åŒ¸ï¿½ï¿½å�©ï¿½åŽ¶ï¿½ï¿½ï¿½ï¿½ï¿½å¤‚ï¿½ï¿½ï¿½ï¿½å®€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å·›ï¿½ï¿½ï¿½ï¿½å¹ºå¹¿å»´ï¿½ï¿½ï¿½å½�å½¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ”´ï¿½ï¿½ï¿½ï¿½æ— ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç–’ç™¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¾µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[137] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩�å�„�����˟ˊˇˋ˙ㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩������⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽�����â–�▂▃▄▅▆▇█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘â•╮╰╯�â•�╞╪╡◢◣◥◤╱╲╳��������������������ï¹�﹂﹃﹄︻︼�︲︳�︴ï¹�︵︶︷︸︹︺︽︾︿﹀��*"㊣℅��﹉﹊ï¹�﹎﹋﹌﹡√≒≡∩∪⊥∠∟⊿ã�’ã�‘∫∮⊕⊙↖↗↙↘∵��℉ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„﹒���ã€�〞���⇧↸↹兙兛兞å…�兡兣嗧瓩糎�������\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ï¿¢ï¿¤ï¿½ï¿½ãˆ±â„–â„¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������一乙ä¸�七乃ä¹�äº†äºŒäººå„¿å…¥å…«å‡ åˆ€åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å�å‘å“寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰��丑ä¸�ä¸�ä¸ä¸°ä¸¹ä¹‹å°¹äºˆäº‘井互五亢ä»�什仃仆仇ä»�今介仄元å…�å…§å…兮公冗凶分切刈勻勾勿化匹å�ˆå�‡å�…å�žåŽ„å�‹å�Šå��壬天夫太å¤å”å°‘å°¤å°ºå±¯å·´å¹»å»¿å¼”å¼•å¿ƒæˆˆæˆ¶æ‰‹æ‰Žæ”¯æ–‡æ–—æ–¤æ–¹æ—¥æ›°æœˆæœ¨æ¬ æ¢æ¹æ¯‹æ¯”毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�ä¹Žä»¥ä»˜ä»”ä»•ä»–ä»—ä»£ä»¤ä»™ä»žå……å…„å†‰å†Šå†¬å‡¹å‡ºå‡¸åˆŠåŠ åŠŸåŒ…åŒ†ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������北åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�å�»å››å›šå¤–央失奴奶å•它尼巨巧左市布平幼å¼�å¼˜å¼—å¿…æˆŠæ‰“æ‰”æ‰’æ‰‘æ–¥æ—¦æœ®æœ¬æœªæœ«æœæ£ï¿½æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�å†°åˆ—åˆ‘åˆ’åˆŽåˆ–åŠ£åŒˆåŒ¡åŒ å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’å› å›žå›�圳地在åœåœ¬åœ¯åœ©å¤™å¤šå¤·å¤¸å¦„奸妃好她如å¦�å—å˜å®‡å®ˆå®…安寺尖屹州帆并���\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������年å¼�弛忙忖戎戌æˆ�æˆ�æ‰£æ‰›æ‰˜æ”¶æ—©æ—¨æ—¬æ—æ›²æ›³æœ‰æœ½æœ´æœ±æœµæ¬¡æ¤æ»æ°–æ±�æ±—æ±™æ±Ÿæ± æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒï¿½èˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�ä½‘ä¼½ä¼ºä¼¸ä½ƒä½”ä¼¼ä½†ä½£ä½œä½ ä¼¯ä½Žä¼¶ä½™ä½�佈佚兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�å�žå�¾å�¦å‘Žå�§å‘†å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å�åœåšå›å®Œå®‹å®�尬局å±����\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������尿尾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�å¿±å¿«å¿¸å¿ªæˆ’æˆ‘æŠ„æŠ—æŠ–æŠ€æ‰¶æŠ‰æ‰æŠŠæ‰¼æ‰¾æ‰¹æ‰³æŠ’æ‰¯æŠ˜æ‰®æŠ•æŠ“æŠ‘æŠ†æ”¹æ”»æ”¸æ—±æ›´æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†ï¿½æ� æ�“æ�—æ¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ 狄狂玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑���\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œï¿½å¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅åŸå¤å£å®—定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�å¿ å¿½å¿µå¿¿æ€�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜����\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������昕昊昇æœ�朋æ�枋枕æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ¦æ§æ¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�æ²®æ³—æ³…æ³±æ²¿æ²»æ³¡æ³›æ³Šæ²¬æ³¯æ³œï¿½æ³–æ³ ç‚•ç‚Žç‚’ç‚Šç‚™çˆ¬çˆçˆ¸ç‰ˆç‰§ç‰©ç‹€ç‹Žç‹™ç‹—ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直知矽社祀ç¥�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙èŠèŠ½èŠŸèŠ¹èŠ±èŠ¬èŠ¥èŠ¯èŠ¸èŠ£èŠ°èŠ¾èŠ·è™Žè™±åˆ�表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨é�’é�žäºŸäºäº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�俄係俚俎俞���\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä¾·å…—å†’å†‘å† å‰Žå‰ƒå‰Šå‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�å“„å“ˆå’¯å’«å’±å’»å’©å’§å’¿å›¿åž‚åž‹åž åž£åž¢åŸŽåž®åž“å¥•å¥‘å¥�奎å¥�姜姘姿姣姨娃�姥姪姚姦å¨�å§»å©å®£å®¦å®¤å®¢å®¥å°�屎å±�å±�屋峙峒巷å¸�å¸¥å¸Ÿå¹½åº åº¦å»ºå¼ˆå¼å½¥å¾ˆå¾…徊律徇後徉怒æ€�æ€ æ€¥æ€Žæ€¨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�æ‹œæŒ–æŒ‰æ‹¼æ‹æŒ�æ‹®æ‹½æŒ‡æ‹±æ‹·æ‹¯æ‹¬æ‹¾æ‹´æŒ‘æŒ‚æ”¿æ•…æ–«æ–½æ—¢æ˜¥æ˜æ˜ 昧是星昨昱昤曷柿染柱柔æŸ�柬架枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�æŸ’æªæ®ƒæ®†æ®µæ¯’毗氟泉洋洲洪æµ�津洌���\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯ç‚ç‚¸ç‚®ç‚¤çˆ°ç‰²ç‰¯ç‰´ç‹©ç‹ ç‹¡çŽ·ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�ç›¹ç›¸çœ‰ï¿½çœ‹ç›¾ç›¼çœ‡çŸœç ‚ç ”ç Œç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸美羿耄è€�è€�耑耶胖胥胚胃胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�è§”è¨ˆè¨‚è¨ƒè²žè² èµ´èµ³è¶´è»�軌述迦迢迪迥è¿è¿«è¿¤è¿¨éƒŠéƒŽéƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸéŸ³é �風飛食首香乘���\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修å€å€ªä¿¾å€«å€‰å…¼å†¤å†¥å†¢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩å“員�唉哮哪哦唧唇哽å”�åœƒåœ„åŸ‚åŸ”åŸ‹åŸƒå ‰å¤�å¥—å¥˜å¥šå¨‘å¨˜å¨œå¨Ÿå¨›å¨“å§¬å¨ å¨£å¨©å¨¥å¨Œå¨‰å«å±˜å®°å®³å®¶å®´å®®å®µå®¹å®¸å°„屑展å±�å³å³½å³»å³ªå³¨å³°å³¶å´�å³´å·®å¸å¸«åº«åºåº§å¼±å¾’徑å¾�æ�™æ�£æ�¥æ��æ�•æ�æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºæ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�æ›¸æœ”æœ•æœ—æ ¡æ ¸æ¡ˆæ¡†æ¡“æ ¹æ¡‚ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¡”æ ©æ¢³æ —æ¡Œæ¡‘æ ½æŸ´æ¡�æ¡€æ ¼æ¡ƒæ ªæ¡…æ “æ ˜æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�ç�‰ï¿½ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�ç›Žçœ©çœŸçœ çœ¨çŸ©ç °ç §ç ¸ç �ç ´ç ·ç ¥ç ç ç Ÿç ²ç¥•ç¥�ç¥ ç¥Ÿç¥–ç¥žç¥�ç¥—ç¥šç§¤ç§£ç§§ç§Ÿç§¦ç§©ç§˜çª„çªˆç«™ç¬†ç¬‘ç²‰ç´¡ç´—ç´‹ç´Šç´ ç´¢ç´”ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耘耕耙耗耽耿胱脂胰脅èƒèƒ´è„†èƒ¸èƒ³è„ˆèƒ½è„Šèƒ¼èƒ¯è‡è‡¬èˆ€èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗���\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙�閃院陣陡陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µå�´å�·å��å€�å�¯å�兜冕凰剪副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯啤唸售啜唬啣唳å•�å•—åœˆåœ‹åœ‰åŸŸå …å Šå †åŸ åŸ¤åŸºå ‚å µåŸ·åŸ¹å¤ å¥¢å¨¶å©�婉婦婪婀娼婢婚婆婊å°å¯‡å¯…å¯„å¯‚å®¿å¯†å°‰å°ˆå°‡å± å±œå±�崇崆崎崛崖崢崑崩崔���\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å´™å´¤å´§å´—å·¢å¸¸å¸¶å¸³å¸·åº·åº¸åº¶åºµåº¾å¼µå¼·å½—å½¬å½©å½«å¾—å¾™å¾žå¾˜å¾¡å¾ å¾œæ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…æ‚»æ‚µæƒœæ‚¼æƒ˜æƒ•æƒ†æƒŸæ‚¸æƒšæƒ‡æˆšæˆ›æ‰ˆæŽ æŽ§æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©ï¿½æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—�旋旌旎æ™�晚晤晨晦晞曹勗望æ¢�æ¢¯æ¢¢æ¢“æ¢µæ¡¿æ¡¶æ¢±æ¢§æ¢—æ¢°æ¢ƒæ£„æ¢æ¢†æ¢…梔æ¢�梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"����������������������������������������������������������������ç�†ç�¾ç��ç“ ç“¶ç“·ç”œç”¢ç•¥ç•¦ç•¢ç•°ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票ç¥ç§»çª’çª•ç¬ ç¬¨ç¬›ç¬¬ç¬¦ç¬™ç¬žç¬®ç²’ç²—ç²•çµ†çµƒçµ±ç´®ç´¹ç´¼çµ€ç´°ç´³çµ„ç´¯çµ‚ç´²ç´±ç¼½ï¿½ç¾žç¾šç¿Œç¿Žç¿’è€œè�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“èŽ‰èŽ è�·è�»è�¼èŽ†èŽ§è™•å½ªè›‡è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許è¨è¨Ÿè¨›è¨¢è±‰è±šè²©è²¬è²«è²¨è²ªè²§èµ§èµ¦è¶¾è¶ºè»›è»Ÿé€™é€�通逗連速é€�é€�é€•é€žé€ é€�逢逖逛途部éƒéƒ½é…—野釵釦釣釧é‡é‡©é–‰é™ªé™µé™³é™¸é™°é™´é™¶é™·é™¬é›€é›ªé›©ç« 竟���\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é ‚é ƒéšé³¥é¹µé¹¿éº¥éº»å‚¢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�å ¯å ªå ´å ¤å °å ±å ¡ï¿½å �å å£¹å£ºå¥ å©·åªšå©¿åª’åª›åª§å³å±å¯’富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊å»�廂廄弼å½å¾©å¾ªå¾¨æƒ‘æƒ¡æ‚²æ‚¶æƒ æ„œæ„£æƒºæ„•æƒ°æƒ»æƒ´æ…¨æƒ±æ„Žæƒ¶æ„‰æ„€æ„’æˆŸæ‰‰æŽ£æŽŒæ��æ�€æ�©æ�‰æ�†æ��æ�’æ�£æ��æ�¡æ�–æ�æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶景暑智晾晷曾替期æœ�æ£ºæ£•æ£ æ£˜æ£—æ¤…æ£Ÿæ£µæ£®æ£§æ£¹æ£’æ£²æ££æ£‹æ£�æ¤�椒椎棉棚楮棻���\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¬¾æ¬ºæ¬½æ®˜æ®–æ®¼æ¯¯æ°®æ°¯æ°¬æ¸¯æ¸¸æ¹”æ¸¡æ¸²æ¹§æ¹Šæ¸ æ¸¥æ¸£æ¸›æ¹›æ¹˜æ¸¤æ¹–æ¹®æ¸æ¸¦æ¹¯æ¸´æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ï¿½ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— 登發皖皓皴盜ç��çŸç¡�硬硯ç¨�稈程稅稀窘窗窖童竣ç‰ç–ç†ç�ç’ç”ç�ç‹ç�ç‘粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›è›”蛛蛤è›�蛞街è£�裂袱覃視���\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨»è© è©•è©žè¨¼è©�詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ��鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�é›…é›„é›†é›‡é›¯é›²éŸŒé …é †é ˆé£§é£ªé£¯é£©é£²é£é¦®é¦é»ƒé»�黑亂å‚債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌å¡å¡Šå¡¢å¡’塋奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄���\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�æœƒæ¦”æ¥æ¥šæ¥·æ¥ 楔極椰概楊楨楫楞楓楹榆æ¥�æ¥£æ¥›æ‡æ²æ¯€æ®¿æ¯“毽溢溯�滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷ç�…猿猾瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œç¨šç¨ ç¨”ç¨Ÿç¨žçªŸçª ç·ç¯€ç ç®ç§ç²±ç²³ç²µç¶“絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„���\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�è£¡è£Šè£•è£’è¦œè§£è©«è©²è©³è©¦è©©è©°èª‡ï¿½è©¼è©£èª è©±èª…è©è©¢è©®è©¬è©¹è©»è¨¾è©¨è±¢è²Šè²‰è³Šè³‡è³ˆè³„貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農é�‹é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶é �é ‘é “é Šé ’é Œé£¼é£´é£½é£¾é¦³é¦±é¦´é«¡é³©éº‚é¼Žé¼“é¼ åƒ§åƒ®åƒ¥åƒ–åƒåƒšåƒ•åƒ�僑僱僎僩兢���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"����������������������������������������������������������������凳劃劂匱åŽå—¾å˜€å˜›å˜—嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣åµå¯žå¯§å¯¡å¯¥å¯¦å¯¨å¯¢å¯¤å¯Ÿå°�屢嶄嶇幛幣幕幗幔�廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘摻敲斡旗旖暢暨æš�榜榨榕æ§�榮槓構榛榷榻榫榴æ§�æ§�æ¦æ§Œæ¦¦æ§ƒæ¦£æ‰æŒæ°³æ¼³æ¼”æ»¾æ¼“æ»´æ¼©æ¼¾æ¼ æ¼¬æ¼�漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒爾犒犖ç�„ç��瑤瑣瑪瑰ç‘甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦����\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������種稱窪窩ç«ç«¯ç®¡ç®•箋çµç®—ç®�ç®”ç®�ç®¸ç®‡ç®„ç²¹ç²½ç²¾ç¶»ç¶°ç¶œç¶½ç¶¾ç¶ ç·Šç¶´ç¶²ç¶±ç¶ºç¶¢ç¶¿ç¶µç¶¸ç¶ç·’ç·‡ç¶¬ç½°ç¿ ç¿¡ç¿Ÿè�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄�蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣èª�誡誓誤說誥誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žé�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…éŸ¶é —é ˜é¢¯é¢±é¤ƒé¤…é¤Œé¤‰é§�骯骰髦é�é‚鳴鳶鳳麼鼻齊億儀���\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦å¥å¬‰å«»å¬‹å«µå¬Œå¬ˆå¯®å¯¬å¯©å¯«å±¤å±¥å¶�嶔幢幟幡廢廚廟å»�å»£å» å½ˆå½±ï¿½å¾·å¾µæ…¶æ…§æ…®æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�æ’°æ’¥æ’“æ’•æ’©æ’’æ’®æ’æ’«æ’šæ’¬æ’™æ’¢æ’³æ•µæ•·æ•¸æš®æš«æš´æš±æ¨£æ¨Ÿæ§¨æ¨�æ¨žæ¨™æ§½æ¨¡æ¨“æ¨Šæ§³æ¨‚æ¨…æ§æ¨‘æ�æŽæ®¤æ¯…æ¯†æ¼¿æ½¼æ¾„æ½‘æ½¦æ½”æ¾†æ½æ½›æ½¸æ½®æ¾Žæ½ºæ½°æ½¤æ¾—æ½˜æ»•æ½¯æ½ æ½Ÿç†Ÿç†¬ç†±ç†¨ç‰–çŠ›ç�Žç�—ç‘©ç’‹ç’ƒç‘¾ç’€ç•¿ç˜ ç˜©ç˜Ÿç˜¤ç˜¦ç˜¡ç˜¢çššçšºç›¤çžŽçž‡çžŒçž‘çž‹ç£‹ç£…ç¢ºç£Šç¢¾ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"����������������������������������������������������������������磕碼ç£�稿稼穀稽稷稻窯窮ç®ç®±ç¯„箴篆篇ç¯�ç® ç¯Œç³Šç· ç·´ç·¯ç·»ç·˜ç·¬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�è† è†šè†˜è”—è”½è”šè“®è”¬è”蔓蔑蔣蔡蔔蓬蔥蓿蔆�螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論è«�èª¶èª¹è«›è±Œè±Žè±¬è³ è³žè³¦è³¤è³¬è³è³¢è³£è³œè³ªè³¡èµè¶Ÿè¶£è¸«è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟輩輦輪輜輞輥é�©é�®é�¨é�é�·é„°é„鄧鄱醇醉醋醃鋅銻銷鋪銬鋤é‹�銳銼鋒鋇鋰銲é–閱霄霆震霉é� éž�éž‹éž�é ¡é «é œé¢³é¤Šé¤“é¤’é¤˜é§�é§�駟駛駑駕駒駙骷���\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"����������������������������������������������������������������髮髯鬧é…é„é·é¯é´†é´‰é´ƒéº©éº¾é»Žå¢¨é½’儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴å¸å¯°å°Žå½Šæ†²æ†‘憩憊æ‡�憶憾懊懈戰擅æ“��擋撻撼據擄擇擂æ“�æ’¿æ“’æ“”æ’¾æ•´æ›†æ›‰æš¹æ›„æ›‡æš¸æ¨½æ¨¸æ¨ºæ©™æ©«æ©˜æ¨¹æ©„æ©¢æ©¡æ©‹æ©‡æ¨µæ©Ÿæ©ˆæ™æ·æ°…濂澱澡濃澤æ¿�æ¾§æ¾³æ¿€æ¾¹æ¾¶æ¾¦æ¾ æ¾´ç†¾ç‡‰ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ç’Ÿç’žç“¢ç”Œç”�ç˜´ç˜¸ç˜ºç›§ç›¥çž çžžçžŸçž¥ç£¨ç£šç£¬ç£§ç¦¦ç©�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊���\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������蕙蕈蕨蕩蕃蕉è•蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷è«è«³è«¶è«¼è±«è±è²“賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’éŒ ï¿½éŒ¶é‹¸éŒ³éŒ¯éŒ¢é‹¼éŒ«éŒ„éŒšéŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °é ¸é »é ·é é ¹é ¤é¤�館餞餛餡餚é§é§¢é§±éª¸éª¼é«»é«é¬¨é®‘鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤åºå°·å±¨å¶¼å¶ºå¶½å¶¸å¹«å½Œå¾½æ‡‰æ‡‚æ‡‡æ‡¦æ‡‹æˆ²æˆ´æ“Žæ“Šæ“˜æ“ æ“°æ“¦æ“¬æ“±æ“¢æ“æ–‚斃曙曖檀檔檄檢檜櫛檣橾檗æª�æª æœæ®®æ¯šï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ°ˆæ¿˜æ¿±æ¿Ÿæ¿ æ¿›æ¿¤æ¿«æ¿¯æ¾€æ¿¬æ¿¡æ¿©æ¿•æ¿®æ¿°ç‡§ç‡Ÿç‡®ç‡¦ç‡¥ç‡ç‡¬ç‡´ç‡ 爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬瞧çžçŸ¯ç£·ç£ºç£´ç£¯ç¤�禧禪穗窿簇ç°�ç¯¾ç¯·ç°Œç¯ ç³ ç³œç³žç³¢ï¿½ç³Ÿç³™ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºè‡‚è‡€è†¿è†½è‡‰è†¾è‡¨èˆ‰è‰±è–ªè–„è•¾è–œè–‘è–”è–¯è–›è–‡è–¨è–Šè™§èŸ€èŸ‘èž³èŸ’èŸ†èž«èž»èžºèŸˆèŸ‹è¤»è¤¶è¥„è¤¸è¤½è¦¬è¬Žè¬—è¬™è¬›è¬Šè¬ è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”闊闋闌闈闆隱���\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš¸é›–éœœéœžéž éŸ“é¡†é¢¶é¤µé¨�駿鮮鮫鮪é®é´»é´¿éº‹é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�æ‡£æˆ³æ“´æ“²æ“¾æ”†æ“ºæ“»æ“·æ–·æ›œæœ¦æª³æª¬æ«ƒæª»æª¸æ«‚æª®æª¯æŸæ¸æ®¯ç€‰ç€‹æ¿¾ç€†æ¿ºç€‘ç€�燻�燼燾燸ç�·ç�µç’§ç’¿ç”•ç™–ç™˜ç™’çž½çž¿çž»çž¼ç¤Žç¦®ç©¡ç©¢ç© ç«„ç«…ç°«ç°§ç°ªç°žç°£ç°¡ç³§ç¹”ç¹•ç¹žç¹šç¹¡ç¹’ç¹™ç½ˆç¿¹ç¿»è�·è�¶è‡�è‡�舊è—�è–©è—�è—�è—‰è–°è–ºè–¹è–¦èŸ¯èŸ¬èŸ²èŸ è¦†è¦²è§´è¬¨è¬¹è¬¬è¬«è±�贅蹙蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖é—�闕離雜雙雛雞霤鞣鞦éžéŸ¹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é�éŽé�鯊���\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������鯉鯽鯈鯀鵑éµ�éµ é» é¼•é¼¬å„³åš¥å£žå£Ÿå£¢å¯µé¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹ï¿½ç¹¹ç¹©ç¹ªç¾…繳羶羹羸臘藩è—�è—ªè—•è—¤è—¥è—·èŸ»è …è �èŸ¹èŸ¾è¥ è¥Ÿè¥–è¥žè�èœè˜è‰èšèŽè�è†è™è´ˆè´Šè¹¼è¹²èº‡è¹¶è¹¬è¹ºè¹´è½”轎è¾é‚Šé‚‹é†±é†®é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤å€åƒå½å¯¶å·‰æ‡¸æ‡ºæ”˜æ””攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬���\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"����������������������������������������������������������������礫竇競籌籃ç±�ç³¯ç³°è¾®ç¹½ç¹¼çº‚ç½Œè€€è‡šè‰¦è—»è—¹è˜‘è—ºè˜†è˜‹è˜‡è˜Šè ”è •è¥¤è¦ºè§¸è°è¬è¦è¯èŸè«è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟�齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼蘗è˜è˜šè £è ¢è ¡è Ÿè¥ªè¥¬è¦½è´è·è½è´“躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅驃驀騾é«�é”é‘é°é°¥é¶¯é¶´é·‚鶸éº�黯鼙齜齦齧儼儻囈囊囉å¿å·”巒彎懿攤權æ¡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽���\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������霾韃éŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�ç“šç«Šç±¤ç±£ç±¥çº“çº–çº”è‡¢è˜¸è˜¿è ±è®Šé‚�é‚�é‘£é‘ é‘¤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬�ç�žç™±ç™²çŸ—ç½�ç¾ˆè ¶è ¹è¡¢è®“è®’è®–è‰·è´›é‡€é‘ªé�‚é�ˆé�„韆顰驟鬢é˜é±Ÿé·¹é·ºé¹¼é¹½é¼‡é½·é½²å»³æ¬–ç�£ç±¬ç±®è »è§€èº¡é‡�鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇äº�囗兀屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼仨仜仩仡ä»�仚刌匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰�氕�氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓刉åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿å–尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�æ‰œæ‰žæ‰¤æ‰¡æ‰¦æ‰¢æ‰™æ‰ æ‰šæ‰¥æ—¯æ—®æœ¾æœ¹æœ¸æœ»æœºæœ¿æœ¼æœ³æ°˜æ±†æ±’æ±œæ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�è¥¾é‚™é‚—é‚˜é‚›é‚”é˜¢é˜¤é˜ é˜£ä½–ä¼»ä½¢ä½‰ä½“ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������佤伾佧佒佟ä½�佘ä¼ä¼³ä¼¿ä½¡å†�冹刜刞刡åŠåŠ®åŒ‰å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜å�½å‘�å‘�å�¨å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’å¤†å¥€å¦¦å¦˜å¦ å¦—å¦Žå¦¢å¦�å¦�妧妡宎宒尨尪�å²�å²�å²ˆå²‹å²‰å²’å²Šå²†å²“å²•å· å¸Šå¸Žåº‹åº‰åºŒåºˆåº�å¼…å¼�彸彶忒忑å¿�å¿å¿¨å¿®å¿³å¿¡å¿¤å¿£å¿ºå¿¯å¿·å¿»æ€€å¿´æˆºæŠƒæŠŒæŠŽæŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴攷旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�æ±±æ±¯æ±©æ²šæ±æ²‡æ²•沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�芅芎芑���\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŠ“èŠŠèŠƒèŠ„è±¸è¿‰è¾¿é‚Ÿé‚¡é‚¥é‚žé‚§é‚ é˜°é˜¨é˜¯é˜ä¸³ä¾˜ä½¼ä¾…佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑�咂咈呫呺呾呥呬呴呦å’�å‘¯å‘¡å‘ å’˜å‘£å‘§å‘¤å›·å›¹å�¯å�²å�å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇å¢å¥å®“å®•å±„å±‡å²®å²¤å² å²µå²¯å²¨å²¬å²Ÿå²£å²å²¢å²ªå²§å²�å²¥å²¶å²°å²¦å¸—å¸”å¸™å¼¨å¼¢å¼£å¼¤å½”å¾‚å½¾å½½å¿žå¿¥æ€æ€¦æ€™æ€²æ€‹æ€´æ€Šæ€—怳怚怞怬怢æ€�æ€�æ€®æ€“æ€‘æ€Œæ€‰æ€œæˆ”æˆ½æŠæŠ´æ‹‘æŠ¾æŠªæŠ¶æ‹ŠæŠ®æŠ³æŠ¯æŠ»æŠ©ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"����������������������������������������������������������������抰抸攽斨斻昉旼昄昒昈旻昃昋æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃æ�½æž�æ�¸æ�¹æž”æ¬¥æ®€æ¾æ¯žæ°�æ²“æ³¬æ³«æ³®æ³™æ²¶æ³”æ²æ³§æ²·æ³�泂沺泃泆æ³ï¿½æ³²æ³’æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡çŽçŽ¦çŽ¢çŽ çŽ¬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵è‚èˆ èŠ è‹€èŠ«èŠšèŠ˜èŠ›èŠµèŠ§èŠ®èŠ¼èŠžèŠºèŠ´èŠ¨èŠ¡èŠ©è‹‚èŠ¤è‹ƒèŠ¶èŠ¢è™°è™¯è™è™®è±–è¿’è¿‹è¿“è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿����\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������俅俓侲俉俋ä¿�俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’å’¥å“�哃èŒ�å’·å’®å“–å’¶å“…å“†å’ å‘°å’¼å’¢å’¾å‘²å“žå’°åžµåžžåžŸåž¤åžŒåž—åž�垛垔垘åž�垙垥垚�垕壴å¤�奓姡姞姮娀姱å§�å§ºå§½å§¼å§¶å§¤å§²å§·å§›å§©å§³å§µå§ å§¾å§´å§å®¨å±Œå³�峘峌峗峋峛峞峚峉峇峊峖峓峔å³�å³ˆå³†å³Žå³Ÿå³¸å·¹å¸¡å¸¢å¸£å¸ å¸¤åº°åº¤åº¢åº›åº£åº¥å¼‡å¼®å½–å¾†æ€·æ€¹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲���\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������柈枺柜枻柸柘柀枷柅柫柤柟枵æŸ�æž³æŸ·æŸ¶æŸ®æŸ£æŸ‚æž¹æŸŽæŸ§æŸ°æž²æŸ¼æŸ†æŸæŸŒæž®æŸ¦æŸ›æŸºæŸ‰æŸŠæŸƒæŸªæŸ‹æ¬¨æ®‚æ®„æ®¶æ¯–æ¯˜æ¯ æ° æ°¡æ´¨æ´´æ´æ´Ÿæ´¼æ´¿æ´’洊泚洳洄洙洺洚洑洀�æ´�浂æ´�洘洷洃æ´�æµ€æ´‡æ´ æ´¬æ´ˆæ´¢æ´‰æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„çœˆçœƒçœ„çœ…çœŠç›·ç›»ç›ºçŸ§çŸ¨ç †ç ‘ç ’ç …ç �ç �ç Žç ‰ç ƒç “ç¥Šç¥Œç¥‹ç¥…ç¥„ç§•ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�è€”è€·èƒ˜èƒ‡èƒ èƒ‘èƒˆèƒ‚èƒ����\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������胅胣胙胜胊胕胉èƒ�胗胦èƒ�è‡¿èˆ¡èŠ”è‹™è‹¾è‹¹èŒ‡è‹¨èŒ€è‹•èŒºè‹«è‹–è‹´è‹¬è‹¡è‹²è‹µèŒŒè‹»è‹¶è‹°è‹ªè‹¤è‹ è‹ºè‹³è‹è™·è™´è™¼è™³è¡�è¡Žè¡§è¡ªè¡©è§“è¨„è¨‡èµ²è¿£è¿¡è¿®è¿ éƒ±é‚½é‚¿éƒ•éƒ…é‚¾éƒ‡ï¿½éƒ‹éƒˆé‡”é‡“é™”é™�é™‘é™“é™Šé™Žå€žå€…å€‡å€“å€¢å€°å€›ä¿µä¿´å€³å€·å€¬ä¿¶ä¿·å€—å€œå€ å€§å€µå€¯å€±å€Žå…šå†”å†“å‡Šå‡„å‡…å‡ˆå‡Žå‰¡å‰šå‰’å‰žå‰Ÿå‰•å‰¢å‹�åŒŽåŽžå”¦å“¢å”—å”’å“§å“³å“¤å”šå“¿å”„å”ˆå“«å”‘å”…å“±å”Šå“»å“·å“¸å“ å”Žå”ƒå”‹åœ�åœ‚åŸŒå ²åŸ•åŸ’åžºåŸ†åž½åž¼åž¸åž¶åž¿åŸ‡åŸ�åž¹åŸ�夎奊娙娖å¨å¨®å¨•å¨�娗娊娞娳å¬å®§å®å®¬å°ƒå±–屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧���\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������æ��æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”æ�™æŒæ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„æ—‚æ™Šæ™Ÿæ™‡æ™‘æœ’æœ“æ Ÿæ šæ¡‰æ ²ï¿½æ ³æ »æ¡‹æ¡�æ –æ ±æ œæ µæ «æ æ ¯æ¡Žæ¡„æ ´æ �æ ’æ ”æ ¦æ ¨æ ®æ¡�æ ºæ ¥æ æ¬¬æ¬¯æ¬æ¬±æ¬´æè‚‚殈毦毤毨毣毢毧氥浺浣浤浶æ´�æµ¡æ¶’æµ˜æµ¢æµæµ¯æ¶‘æ¶�æ·¯æµ¿æ¶†æµžæµ§æµ æ¶—æµ°æµ¼æµŸæ¶‚æ¶˜æ´¯æµ¨æ¶‹æµ¾æ¶€æ¶„æ´–æ¶ƒæµ»æµ½æµµæ¶�烜烓烑çƒ�çƒ‹ç¼¹çƒ¢çƒ—çƒ’çƒžçƒ çƒ”çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������瓟瓴瓵甡畛畟疰ç—�疻痄痀疿疶疺皊盉çœ�眛çœ�çœ“çœ’çœ£çœ‘çœ•çœ™çœšçœ¢çœ§ç £ç ¬ç ¢ç µç ¯ç ¨ç ®ç «ç ¡ç ©ç ³ç ªç ±ç¥”ç¥›ç¥�ç¥œç¥“ç¥’ç¥‘ç§«ç§¬ç§ ç§®ç§ç§ªç§œç§žç§�窆窉窅窋窌窊�窇竘ç¬�笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�ç´Œç½œç½¡ç½žç½ ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳èŒè�„茙è�‘茥è�–茿è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��èŒ–èŒ¤èŒ èŒ·èŒ¯èŒ©è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄è¡è¡µè¡¶è¡²è¢€è¡±è¡¿è¡¯è¢ƒè¡¾è¡´ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¡¼è¨’è±‡è±—è±»è²¤è²£èµ¶èµ¸è¶µè¶·è¶¶è»‘è»“è¿¾è¿µé€‚è¿¿è¿»é€„è¿¼è¿¶éƒ–éƒ éƒ™éƒšéƒ£éƒŸéƒ¥éƒ˜éƒ›éƒ—éƒœéƒ¤é…�é…Žé…�釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•�å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫å‰å‰¬å‰®å‹–å‹“åŒåŽœå•µå•¶å”¼å•�å•�唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈å”å”»å•€å•‹åœŠåœ‡åŸ»å ”åŸ¢åŸ¶åŸœåŸ´å €åŸåŸ½å ˆåŸ¸å ‹åŸ³åŸ�å ‡åŸ®åŸ£åŸ²åŸ¥åŸ¬åŸ¡å ŽåŸ¼å �埧å �å ŒåŸ±åŸ©åŸ°å �å „å¥œå© å©˜å©•å©§å©žå¨¸å¨µå©å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜å²å®å¯�寀屙崞崋å´�å´šå´ å´Œå´¨ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������������������������������������å´�崦崥å´�崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽæŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�掮�æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�æ¢œæ¡æ¡®æ¢®æ¢«æ¥–桯梣梬梩桵桴梲æ¢�æ¡·æ¢’æ¡¼æ¡«æ¡²æ¢ªæ¢€æ¡±æ¡¾æ¢›æ¢–æ¢‹æ¢ æ¢‰æ¢¤æ¡¸æ¡»æ¢‘æ¢Œæ¢Šæ¡½æ¬¶æ¬³æ¬·æ¬¸æ®‘æ®�æ®�æ®Žæ®Œæ°ªæ·€æ¶«æ¶´æ¶³æ¹´æ¶¬æ·©æ·¢æ¶·æ·¶æ·”æ¸€æ·ˆæ· æ·Ÿæ·–æ¶¾æ·¥æ·œæ·�æ·›æ·´æ·Šæ¶½æ·æ·°æ¶ºæ·•æ·‚æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂���\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������焎牾牻牼牿çŒ�猗猇猑猘猊猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋痌痑ç—�çš�皉盓眹眯çœçœ±çœ²çœ´çœ³çœ½çœ¥çœ»çœµç¡ˆç¡’硉ç¡�ç¡Šç¡Œç ¦ç¡…ç¡��祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵ç‡ç¬´ç¬¥ç¬°ç¬¢ç¬¤ç¬³ç¬˜ç¬ªç¬�笱笫ç¬ç¬¯ç¬²ç¬¸ç¬šç¬£ç²”粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„脟脬脞脡脕脧è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������莚虙虖蚿蚷蛂è›�蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·��軘軞è»�è»œè»—è» è»¡é€¤é€‹é€‘é€œé€Œé€¡éƒ¯éƒªéƒ°éƒ´éƒ²éƒ³éƒ”éƒ«éƒ¬éƒ©é…–é…˜é…šé…“é…•é‡¬é‡´é‡±é‡³é‡¸é‡¤é‡¹é‡ªé‡«é‡·é‡¨é‡®é•ºé–†é–ˆé™¼é™é™«é™±é™¯éš¿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥å–啷噅喢喓喈å–�å–µå–�å–£å–’å–¤å•½å–Œå–¦å•¿å–•å–¡å–ŽåœŒå ©å ·å ™å žå §å £å ¨åŸµå¡ˆå ¥å œå ›å ³å ¿å ¶å ®å ¹å ¸å å ¬å »å¥¡åª¯åª”åªŸå©ºåª¢åªžï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜åª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹�惌惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇���\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�æ¹³æ¸œæ¸³æ¹‹æ¹€æ¹‘æ¸»æ¸ƒæ¸®æ¹žæ¹¨æ¹œæ¹¡æ¸±æ¸¨æ¹ æ¹±æ¹«æ¸¹æ¸¢æ¸°æ¹“æ¹¥æ¸§æ¹¸æ¹¤æ¹·æ¹•æ¹¹æ¹’æ¹¦æ¸µæ¸¶æ¹šç„ ç„žï¿½ç„¯çƒ»ç„®ç„±ç„£ç„¥ç„¢ç„²ç„Ÿç„¨ç„ºç„›ç‰‹ç‰šçŠˆçŠ‰çŠ†çŠ…çŠ‹çŒ’çŒ‹çŒ°çŒ¢çŒ±çŒ³çŒ§çŒ²çŒçŒ¦çŒ£çŒµçŒŒç�®ç�¬ç�°ç�«ç�–ç�šç�¡ç�ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ 硤硥硜ç¡ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤çŠç¬»ç„çˆçŒçŽç€ç˜ç…粢粞粨粡絘絯絣絓絖絧絪çµ�çµçµœçµ«çµ’絔絩���\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çµ‘çµŸçµŽç¼¾ç¼¿ç½¥ç½¦ç¾¢ç¾ ç¾¡ç¿—è�‘è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰ï¿½è��è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩é€é€´é€¯é„†é„¬é„„郿郼鄈郹郻é„����\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é„€é„‡é„…é„ƒé…¡é…¤é…Ÿé…¢é… éˆ�鈊鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊�傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�å¡™å¡¥å¡›å ½å¡£å¡±å£¼å«‡å«„å«‹åªºåª¸åª±åªµåª°åª¿å«ˆåª»å«†åª·å«€å«Šåª´åª¶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�å¹‹å»…å»Œå»†å»‹å»‡å½€å¾¯å¾æƒ·æ…‰æ…Šæ„«æ……愶愲愮慆愯æ…�æ„©æ…€æˆ é…¨æˆ£æˆ¥æˆ¤æ�…���\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������æ�±æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓暆暌暕æš�æš‹æšŠæš™æš”æ™¸æœ æ¥¦æ¥Ÿæ¤¸æ¥Žæ¥¢æ¥±æ¤¿æ¥…æ¥ªæ¤¹æ¥‚æ¥—æ¥™æ¥ºæ¥ˆæ¥‰ï¿½æ¤µæ¥¬æ¤³æ¤½æ¥¥æ£°æ¥¸æ¤´æ¥©æ¥€æ¥¯æ¥„æ¥¶æ¥˜æ¥�楴楌椻楋椷楜æ¥�æ¥‘æ¤²æ¥’æ¤¯æ¥»æ¤¼æ†æ…æƒæ‚æˆæ�æ®›ï¨�毻毼毹毷毸溛滖滈æº�æ»€æºŸæº“æº”æº æº±æº¹æ»†æ»’æº½æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�æ»Šæº—æº®æº£ç…‡ç…”ç…’ç…£ç… ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�ç…“ç…„ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘����\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������ç‘�瑎瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶ç—痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ç�§ç�”ç�™ç�çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑�稘稙稒稗稕稢稓稛ç¨�窣窢窞竫ç¦ç¤çç´ç©ç²ç¥ç³ç±ç°ç¡ç¸ç¶ç£ç²²ç²´ç²¯ç¶ˆç¶†ç¶€ç¶�絿綅絺綎絻綃絼綌綔綄絽綒ç½ç½«ç½§ç½¨ç½¬ç¾¦ç¾¥ç¾§ç¿›ç¿œè€¡è…¤è… 腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�葟葰è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������è�¶è�³è‘¨è‘¾è‘„è�«è‘ 葔葮è‘�蜋蜄蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�è¦…è¦›è§Ÿè§¥è§¤è§¡è§ è§¢è§œè§¦è©¶èª†è©¿è©¡è¨¿è©·èª‚èª„è©µèªƒèª�詴詺谼豋豊豥豤豦�貆貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�è¶’è·°è· è·¬è·±è·®è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆é‰é‰¬é‰�é‰ é‰§é‰¯éˆ¶é‰¡é‰°éˆ±é‰”é‰£é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �é Žé¢¬é£¶é£¹é¦¯é¦²é¦°é¦µéªéª«é›é³ªé³é³§éº€é»½åƒ¦åƒ”僗僨僳僛僪���\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������åƒ�åƒ¤åƒ“åƒ¬åƒ°åƒ¯åƒ£åƒ å‡˜åŠ€åŠ�勩勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚å«å««å«³å«¢å« 嫛�嫬嫞å«�嫙嫨嫟å·å¯ 寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�æ‘´æ‘¶æ‘²æ‘³æ‘½æ‘µæ‘¦æ’¦æ‘Žæ’‚æ‘žæ‘œæ‘‹æ‘“æ‘ æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…æœ„æœ¢æ¦±æ¦¶æ§‰æ¦ æ§Žæ¦–æ¦°æ¦¬æ¦¼æ¦‘æ¦™æ¦Žæ¦§æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§����\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������榳榓榪榡榞槙榗æ¦�æ§‚æ¦µæ¦¥æ§†æŠæ�æ‹æ®žæ®Ÿæ® æ¯ƒæ¯„æ¯¾æ»Žæ»µæ»±æ¼ƒæ¼¥æ»¸æ¼·æ»»æ¼®æ¼‰æ½Žæ¼™æ¼šæ¼§æ¼˜æ¼»æ¼’æ»æ¼Šæ¼¶æ½³æ»¹æ»®æ¼æ½€æ¼°æ¼¼æ¼µæ»«æ¼‡æ¼Žæ½ƒæ¼…滽滶漹漜滼漺漟æ¼�漞�漈漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ 碬碢碤禘禊禋禖禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦���\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������綮綩綡緉罳翢翣翥翞耤è��è�œè†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�è’ è“—è“”è“’è“›è’°è’‘è™¡èœ³èœ£ï¿½èœ¨è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ 蜲蜪èœèœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�é„£é„œé„ é„¢é„Ÿé„�é„šé„¤é„¡é„›é…ºé…²é…¹é…³éŠ¥éŠ¤é‰¶éŠ›é‰ºéŠ éŠ”éŠªéŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇���\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"����������������������������������������������������������������銩éŠ�銋éˆéšžéš¡é›¿é�˜é�½é�ºé�¾éžƒéž€éž‚é�»éž„éž�é�¿éŸŽéŸ�é –é¢é¢®é¤‚餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧鬾鬿é é¡éŸé³±é³²é³µéº§åƒ¿å„ƒå„°åƒ¸å„†å„‡åƒ¶åƒ¾å„‹å„Œåƒ½å„ŠåŠ‹åŠŒå‹±å‹¯ï¿½å™ˆå™‚å™Œå˜µå™�噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�å¢±å¢ å¢£å¢¯å¢¬å¢¥å¢¡å£¿å«¿å«´å«½å«·å«¶å¬ƒå«¸å¬‚å«¹å¬�嬇嬅å¬�å±§å¶™å¶—å¶Ÿå¶’å¶¢å¶“å¶•å¶ å¶œå¶¡å¶šå¶žå¹©å¹�å¹ å¹œç·³å»›å»žå»¡å½‰å¾²æ†‹æ†ƒæ…¹æ†±æ†°æ†¢æ†‰æ†›æ†“æ†¯æ†æ†Ÿæ†’憪憡æ†�æ…¦æ†³æˆæ‘®æ‘°æ’–æ’ æ’…æ’—æ’œæ’�æ’‹æ’Šæ’Œæ’£æ’Ÿæ‘¨æ’±æ’˜æ•¶æ•ºæ•¹æ•»æ–²æ–³æšµæš°æš©æš²æš·æšªæš¯æ¨€æ¨†æ¨—æ§¥æ§¸æ¨•æ§±æ§¤æ¨ æ§¿æ§¬æ§¢ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������樛æ¨�槾樧槲槮樔槷槧橀樈槦槻æ¨�槼槫樉樄樘樥æ¨�æ§¶æ¨¦æ¨‡æ§´æ¨–æ‘æ®¥æ®£æ®¢æ®¦æ°�氀毿氂æ½�漦潾澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫�潽潧æ¾�æ½“æ¾‹æ½©æ½¿æ¾•æ½£æ½·æ½ªæ½»ç†²ç†¯ç†›ç†°ç† ç†šç†©ç†µç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�ç£Œç£‘ç£Žç£”ç£ˆç£ƒç£„ç£‰ç¦šç¦¡ç¦ ç¦œç¦¢ç¦›æ¶ç¨¹çª²çª´çª³ç®·ç¯‹ç®¾ç®¬ç¯Žç®¯ç®¹ç¯Šç®µç³…糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰ç¾ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������ç¿ç¿«ç¿ªç¿¬ç¿¦ç¿¨è�¤è�§è†£è†Ÿè†žè†•膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�è”®è”‚è“½è”žè“¶è”±è”¦è“§è“¨ï¿½è“°è“¯è“¹è”˜è” è”°è”‹è”™è”¯è™¢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣è§è§°è§¬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�è³§è¶ è¶œè¶¡è¶›è¸ è¸£è¸¥è¸¤è¸®è¸•è¸›è¸–è¸‘è¸™è¸¦è¸§è¸”è¸’è¸˜è¸“è¸œè¸—è¸šè¼¬è¼¤è¼˜è¼šè¼ è¼£è¼–è¼—é�³é�°é�¯é�§é�«é„¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������鄫鄩鄪鄲鄦鄮醅醆醊é†�醂醄醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�é‹•é‹‰é‹ é‹žé‹§é‹‘é‹“éŠµé‹¡é‹†éŠ´é•¼é–¬é–«é–®é–°éš¤éš¢é›“éœ…éœˆéœ‚é�šéžŠéžŽéžˆéŸ�éŸ�ï¿½é žé �é ¦é ©é ¨é é ›é §é¢²é¤ˆé£ºé¤‘é¤”é¤–é¤—é¤•é§œé§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱é†éƒé§é´é±é¦é¶éµé°é¨é¤é¬é³¼é³ºé³½é³¿é³·é´‡é´€é³¹é³»é´ˆé´…鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ 噮噳噦噣å™å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�å¬–å¬¨å¬šå¬ å¬žå¯¯å¶¬å¶±å¶©å¶§å¶µå¶°å¶®å¶ªå¶¨å¶²å¶å¶¯å¶´å¹§å¹¨å¹¦å¹¯å»©å»§å»¦å»¨å»¥ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������彋徼æ†�憨憖懅憴懆æ‡�懌憺憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽暻暺曌朣樴橦橉橧樲橨樾æ©�æ©æ©¶æ©›æ©‘樨橚樻樿æ©�橪橤æ©�æ©�æ©”æ©¯ï¿½æ©©æ© æ¨¼æ©žæ©–æ©•æ©�æ©Žæ©†æ•æ”æ–æ®§æ®ªæ®«æ¯ˆæ¯‡æ°„æ°ƒæ°†æ¾æ¿‹æ¾£æ¿‡æ¾¼æ¿Žæ¿ˆæ½žæ¿„澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ 璔璒璕璡甋疀瘯ç˜ç˜±ç˜½ç˜³ç˜¼ç˜µç˜²ç˜°çš»ç›¦çžšçž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢ç£ç£Ÿç£ 禤穄穈穇窶窸窵���\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������窱窷篞篣篧ç¯�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗ç³�ç³‘ç¸’ç¸¡ç¸—ç¸Œç¸Ÿç¸ ç¸“ç¸Žç¸œç¸•ç¸šç¸¢ç¸‹ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·è†§ï¿½è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�è•¢è•„è•‘è•‡è•£è”¾è•›è•±è•Žè•®è•µè••è•§è• è–Œè•¦è•�蕔蕥蕬虣虥虤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰è¤è¤®è¤§è¤±è¤¢è¤©è¤£è¤¯è¤¬è¤Ÿè§±è« 諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»é‚†ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������郺鄳鄵鄶醓é†�醑é†�é†�錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒéŒŽéŒ�é‹‹éŒ�鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒éœ�ï¿½éž™éž—éž”éŸ°éŸ¸é µé ¯é ²é¤¤é¤Ÿé¤§é¤©é¦žé§®é§¬é§¥é§¤é§°é§£é§ªé§©é§§éª¹éª¿éª´éª»é«¶é«ºé«¹é«·é¬³é®€é®…é®‡é¼é¾é»é®‚鮓鮒é®�éºé®•é½é®ˆé´¥é´—é´ é´žé´”é´©é´�鴘鴢é´�鴙鴟麈麆麇麮éºé»•é»–é»ºé¼’é¼½å„¦å„¥å„¢å„¤å„ å„©å‹´åš“åšŒåš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒å¬å¬¥å¬²å¬£å¬¬å¬§å¬¦å¬¯å¬®å»å¯±å¯²å¶·å¹¬å¹ªå¾¾å¾»æ‡ƒæ†µæ†¼æ‡§æ‡ 懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������æª�檖æª�æª¥æª‰æªŸæª›æª¡æªžæª‡æª“æªŽæª•æªƒæª¨æª¤æª‘æ©¿æª¦æªšæª…æªŒæª’æ›æ®æ°‰æ¿Œæ¾©æ¿´æ¿”æ¿£æ¿œæ¿æ¿§æ¿¦æ¿žæ¿²æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�ç’ªç’璱璥璯ç”�甑甒ç”��疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨ç¸ç¸¼ç¹‚縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�è–§è–•è– è–‹è–£è•»è–¤è–šè–žè•·è•¼è–‰è–¡è•ºè•¸è•—è–Žè––è–†è–�è–™è–�è–�薢薂薈薅蕹���\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"����������������������������������������������������������������蕶薘è–�薟虨螾螪èžèŸ…螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒褷襂è¦è¦¯è¦®è§²è§³è¬žè¬˜è¬–謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰豲�豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�é† éŽ¡éŽƒéŽ¯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��é�‘é� é�éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§éŽ€é�Žé�™é—‡é—€é—‰é—ƒé—…é–·éš®éš°éš¬éœ éœŸéœ˜éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯é¤é¤±é¤°é¦˜é¦£é¦¡é¨‚駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼éˆé®šé®¨é®žé®›é®¦é®¡é®¥é®¤ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é®†é®¢é® é®¯é´³éµ�鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵é´éºŠéº‰éº�éº°é»ˆé»šé»»é»¿é¼¤é¼£é¼¢é½”é¾ å„±å„儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀å¹å¹®æ‡˜æ‡Ÿæ‡æ‡®æ‡±æ‡ªæ‡°æ‡«æ‡–懩擿攄�擽擸æ”�æ”ƒæ“¼æ–”æ—›æ›šæ››æ›˜æ«…æª¹æª½æ«¡æ«†æªºæª¶æª·æ«‡æª´æªæžæ¯‰æ°‹ç€‡ç€Œç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺磿礌礓礔礉ç¤�礒礑ç¦ç¦¬ç©Ÿç°œç°©ç°™ç° ç°Ÿç°ç°�簦簨簢簥簰繜ç¹�ç¹–ç¹£ç¹˜ç¹¢ç¹Ÿç¹‘ç¹ ç¹—ç¹“ç¾µç¾³ç¿·ç¿¸è�µè‡‘臒è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅���\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓èŸèŸ˜èŸ£èž¤èŸ—蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉謪謧謣謳謰謵è‡è¬¯è¬¼è¬¾è¬±è¬¥è¬·è¬¦è¬¶è¬®è¬¤è¬»è¬½è¬ºè±‚è±µè²™è²˜ï¿½è²—è³¾è´„è´‚è´€è¹œè¹¢è¹ è¹—è¹–è¹žè¹¥è¹§è¹›è¹šè¹¡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟éŽ�鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵éŠéŒé‹é¯‡é¯†é¯ƒé®¿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ����\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫åšåš¦åš§åšªåš¬å£šå£�壛夒嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞æ—�æ›žæ«§æ« æ«Œæ«‘æ«™æ«‹ï¿½æ«Ÿæ«œæ«�æ««æ«�æ«�æ«žæ æ®°æ°Œç€™ç€§ç€ ç€–ç€«ç€¡ç€¢ç€£ç€©ç€—ç€¤ç€œç€ªçˆŒçˆŠçˆ‡çˆ‚çˆ…çŠ¥çŠ¦çŠ¤çŠ£çŠ¡ç“‹ç“…ç’·ç“ƒç”–ç™ çŸ‰çŸŠçŸ„çŸ±ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕艤艡艣藫藱è—è—™è—¡è—¨è—šè——è—¬è—²è—¸è—˜è—Ÿè—£è—œè—‘è—°è—¦è—¯è—žè—¢è €èŸºè ƒèŸ¶èŸ·è ‰è Œè ‹è †èŸ¼è ˆèŸ¿è Šè ‚è¥¢è¥šè¥›è¥—è¥¡è¥œè¥˜è¥����\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������襙覈覷覶觶è�èˆèŠè€è“è–è”è‹è•è‘è‚è’è—豃豷豶貚贆贇贉趬趪è¶è¶«è¹è¹¸è¹³è¹ªè¹¯è¹»è»‚轒轑è½�è½�轓辴酀鄿醰é†é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•�é�„é�Žé�€é�’é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�é¨¤é¨›é¨¢é¨ é¨§é¨£é¨žé¨œé¨”é«‚é¬‹é¬Šé¬Žé¬Œé¬·é¯ªé¯«é¯ é¯žé¯¤é¯¦é¯¢é¯°é¯”é¯—é¯¬é¯œé¯™é¯¥é¯•é¯¡é¯šéµ·é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼é¼é½€é½�é½�齖齗齘匷嚲嚵嚳壣å…巆巇廮廯忀å¿�懹攗攖攕攓旟曨���\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱ç�‚瀸瀿瀺瀹ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›çŸŒçŸŽçŸ�çŸ�矲礥礣礧礨礤礩禲穮穬ç©ç«·ç±‰ç±ˆç±Šç±‡ç±…糮繻繾çº�纀羺翿�è�¹è‡›è‡™èˆ‹è‰¨è‰©è˜¢è—¿è˜�è—¾è˜›è˜€è—¶è˜„è˜‰è˜…è˜Œè—½è ™è �è ‘è —è “è –è¥£è¥¦è¦¹è§·è èªè�è¨è£è¥è§è趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌饋饓騲騴騱騬騪騶騩騮騸é¨é«‡é«Šé«†é¬�鬒鬑鰋鰈鯷鰅鰒鯸���\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶�鶒鶘é¶�é¶›é¶ é¶”é¶œé¶ªé¶—é¶¡é¶šé¶¢é¶¨é¶žé¶£é¶¿é¶©é¶–é¶¦é¶§éº™éº›éºšé»¥é»¤é»§é»¦é¼°é¼®é½›é½ é½žé½�齙龑儺儹劘劗囃嚽嚾åˆå‡å·‹å·�廱懽攛欂櫼欃�櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�ç¤ç¤±ç¤¯ç±”籓糲纊纇纈纋纆çº�ç½�羻耰è‡�è˜˜è˜ªè˜¦è˜Ÿè˜£è˜œè˜™è˜§è˜®è˜¡è˜ è˜©è˜žè˜¥è ©è �è ›è è ¤è œè «è¡Šè¥è¥©è¥®è¥«è§ºè¹è¸è…èºè»è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�¼é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺騿é«�鬕鬗鬘鬖鬺é’é°«é°�鰜鰬鰣鰨鰩鰤���\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������鰡鶷鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱é¶é·Œé¶³é·�鶲鹺麜黫黮é»é¼›é¼˜é¼šé¼±é½Žé½¥é½¤é¾’亹囆囅囋奱å‹åŒå·•å·‘å»²æ”¡æ” æ”¦æ”¢æ¬‹æ¬ˆæ¬‰æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ï¿½ç“˜ç“•瓙瓗ç™çšç¤µç¦´ç©°ç©±ç±—籜籙籛籚糴糱纑ç½�ç¾‡è‡žè‰«è˜´è˜µè˜³è˜¬è˜²è˜¶è ¬è ¨è ¦è ªè ¥è¥±è¦¿è¦¾è§»è¾è®„讂讆讅è¿è´•躕躔躚躒èº�èº–èº—è½ è½¢é…‡é‘Œé‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊驉驒é©�é«�鬙鬫鬻é–é•鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢���\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"����������������������������������������������������������������儽劙壨壧奲å�å·˜è ¯å½�æˆ�戃戄攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�çŽƒç™°çŸ”ç±§ç±¦çº•è‰¬è˜ºè™€è˜¹è˜¼è˜±è˜»è˜¾è °è ²è ®è ³è¥¶è¥´è¥³è§¾è®Œè®Žè®‹è®ˆè±…è´™èº˜è½¤è½£é†¼é‘¢é‘•é‘�é‘—é‘žéŸ„ï¿½éŸ…é €é©–é©™é¬žé¬Ÿé¬ é±’é±˜é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨é·é»‚é»�黲黳鼆鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�åŽå±æ”æ›æ›®æ¬“ç�Ÿç�¡ç��ç� 爣瓛瓥矕礸禷禶籪纗羉è‰è™ƒè ¸è ·è µè¡‹è®”è®•èºžèºŸèº èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•é™é±£é±§é±¦é±¢é±žé± 鸂鷾鸇鸃鸆鸅鸀é¸�é¸‰é·¿é·½é¸„éº é¼žé½†é½´é½µé½¶å›”ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������攮斸欘欙欗欚ç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘鑯鑱鑳é�‰é¡²é¥Ÿé±¨é±®é±é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼ï¿½è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© 鱴鱳鱱鱵鸔鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•鸗齈戇欞爧虌躨钂钀é’�驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªéº¤é½¾é½‰é¾˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������î‰�î‰�î‰�î‰�î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²ï¿½î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ�îŠ�îŠ�îŠ�îŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������îŒ�îŒ�îŒ�îŒ�îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒîŒ®ï¿½îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµîŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£îŽ¤îŽ¥îŽ¦îŽ§îŽ¨îŽ©îŽªîŽ«ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"����������������������������������������������������������������îŽîŽ®îŽ¯îŽ°îŽ±îŽ²îŽ³îŽ´îŽµîŽ¶îŽ·îŽ¸îŽ¹îŽºîŽ»îŽ¼îŽ½îŽ¾îŽ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªï¿½î�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�î‘žî‘Ÿî‘ î‘¡î‘¢î‘£î‘¤î‘¥î‘¦î‘§ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������î‘î’�î’�î’Žî’�î’�î’�î’žî’Ÿî’ î’¡î’¢î’£î’¤î’¥î’¦ï¿½î’§î’¨î’©î’ªî’«î’¬î’î“�î“�î“�î“�î“�î“žî“Ÿî“ î“¡î“¢î“£î“¤î“¥î“¦î“§î“¨î“©î“ªî“«î“¬î“î”�î”�î”�î”�î”�î”žî”Ÿî” î”¡î”¢î”£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������î”î•�î•�î•�î•�î•�î•žî•Ÿî• î•¡î•¢ï¿½î•£î•¤î•¥î•¦î•§î•¨î•©î•ªî•«î•¬î•î–�î–�î–Žî–�î–�î–�î–žî–Ÿî– î–¡î–¢î–£î–¤î–¥î–¦î–§î–¨î–©î–ªî–«î–¬î–î—�î—�î—Žî—�î—�î—����\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î— î—¡î—¢î—£î—¤î—¥î—¦î—§î—¨î—©î—ªî—«î—¬î—î˜�î˜�î˜�î˜�î˜�î˜žï¿½î˜Ÿî˜ î˜¡î˜¢î˜£î˜¤î˜¥î˜¦î˜§î˜¨î˜©î˜ªî˜«î˜¬î˜î˜®î˜¯î˜°î˜±î˜²î˜³î˜´î˜µî˜¶î˜·î˜¸î˜¹î˜ºî˜»î˜¼î˜½î˜¾î˜¿î™€î™�î™�î™�î™�î™�î™žî™Ÿî™ î™¡î™¢î™£î™¤î™¥î™¦î™§î™¨î™©î™ªî™«î™¬î™î™®î™¯î™°î™±î™²î™³î™´î™µî™¶î™·î™¸î™¹î™ºî™»î™¼î™½î™¾î™¿îš€îš�îš�îš�îš����\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������îš�îšžîšŸîš îš¡îš¢îš£îš¤îš¥îš¦îš§îš¨îš©îšªîš«îš¬îšîš®îš¯îš°îš±îš²îš³îš´îšµîš¶îš·îš¸îš¹îšºîš»îš¼îš½îš¾îš¿î›€î›�î›�î›�î›��î›�î›žî›Ÿî› î›¡î›¢î›£î›¤î›¥î›¦î›§î›¨î›©î›ªî›«î›¬î›î›®î›¯î›°î›±î›²î›³î›´î›µî›¶î›·î›¸î›¹î›ºî›»î›¼î›½î›¾î›¿îœ€îœ�îœ�îœ�îœ�îœ�îœžîœŸîœ îœ¡îœ¢îœ£îœ¤îœ¥îœ¦îœ§îœ¨îœ©îœªîœ«îœ¬îœîœ®îœ¯îœ°îœ±îœ²îœ³îœ´îœµîœ¶îœ·îœ¸îœ¹îœºîœ»îœ¼îœ½îœ¾îœ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—���\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îž€îž�îž�îž�îž��îž�îžžîžŸîž îž¡îž¢îž£îž¤îž¥îž¦îž§îž¨îž©îžªîž«îž¬îžîž®îž¯îž°îž±îž²îž³îž´îžµîž¶îž·îž¸îž¹îžºîž»îž¼îž½îž¾îž¿îŸ€îŸ�îŸ�îŸ�îŸ�îŸ�îŸžîŸŸîŸ îŸ¡îŸ¢îŸ£îŸ¤îŸ¥îŸ¦îŸ§îŸ¨îŸ©îŸªîŸ«îŸ¬îŸîŸ®îŸ¯îŸ°îŸ±îŸ²îŸ³îŸ´îŸµîŸ¶îŸ·îŸ¸îŸ¹îŸºîŸ»îŸ¼îŸ½îŸ¾îŸ¿î €î �î ‚î ƒî „î …î †î ‡î ˆî ‰î Šî ‹î Œî �î Žî �î �î ‘î ’î “ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î ”î •î –î —î ˜î ™î šî ›î œî �î žî Ÿî î ¡î ¢î £î ¤î ¥î ¦î §î ¨î ©î ªî «î ¬î î ®î ¯î °î ±î ²î ³î ´î µî ¶î ·î ¸î ¹î ºî »î ¼î ½î ¾î ¿î¡€î¡�î¡�î¡�î¡��î¡�î¡žî¡Ÿî¡ î¡¡î¡¢î¡£î¡¤î¡¥î¡¦î¡§î¡¨î¡©î¡ªî¡«î¡¬î¡î¡®î¡¯î¡°î¡±î¡²î¡³î¡´î¡µî¡¶î¡·î¡¸î¡¹î¡ºî¡»î¡¼î¡½î¡¾î¡¿î¢€î¢�î¢�î¢�î¢�î¢�î¢žî¢Ÿî¢ î¢¡î¢¢î¢£î¢¤î¢¥î¢¦î¢§î¢¨î¢©î¢ªî¢«î¢¬î¢î¢®î¢¯î¢°î¢±î¢²î¢³î¢´î¢µî¢¶î¢·î¢¸î¢¹î¢ºî¢»î¢¼î¢½î¢¾î¢¿î£€î£�î£�î£����\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"����������������������������������������������������������������î£�î£�î£žî£Ÿî£ î£¡î£¢î££î£¤î£¥î£¦î£§î£¨î£©î£ªî£«î£¬î£î£®î£¯î£°î£±î£²î£³î£´î£µî£¶î£·î£¸î£¹î£ºî£»î£¼î£½î£¾î£¿î¤€î¤�î¤��î¤�î¤�î¤�î¤žî¤Ÿî¤ î¤¡î¤¢î¤£î¤¤î¤¥î¤¦î¤§î¤¨î¤©î¤ªî¤«î¤¬î¤î¤®î¤¯î¤°î¤±î¤²î¤³î¤´î¤µî¤¶î¤·î¤¸î¤¹î¤ºî¤»î¤¼î¤½î¤¾î¤¿î¥€î¥�î¥�î¥�î¥�î¥�î¥žî¥Ÿî¥ î¥¡î¥¢î¥£î¥¤î¥¥î¥¦î¥§î¥¨î¥©î¥ªî¥«î¥¬î¥î¥®î¥¯î¥°î¥±î¥²î¥³î¥´î¥µî¥¶î¥·î¥¸î¥¹î¥ºî¥»î¥¼î¥½î¥¾î¥¿î¦€î¦����\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������î¦�î¦�î¦�î¦�î¦žî¦Ÿî¦ î¦¡î¦¢î¦£î¦¤î¦¥î¦¦î¦§î¦¨î¦©î¦ªî¦«î¦¬î¦î¦®î¦¯î¦°î¦±î¦²î¦³î¦´î¦µî¦¶î¦·î¦¸î¦¹î¦ºî¦»î¦¼î¦½î¦¾î¦¿î§€î§��î§�î§Žî§�î§�î§�î§žî§Ÿî§ î§¡î§¢î§£î§¤î§¥î§¦î§§î§¨î§©î§ªî§«î§¬î§î§®î§¯î§°î§±î§²î§³î§´î§µî§¶î§·î§¸î§¹î§ºî§»î§¼î§½î§¾î§¿î¨€î¨�î¨�î¨�î¨�î¨�î¨žî¨Ÿî¨ î¨¡î¨¢î¨£î¨¤î¨¥î¨¦î¨§î¨¨î¨©î¨ªî¨«î¨¬î¨î¨®î¨¯î¨°î¨±î¨²î¨³î¨´î¨µî¨¶î¨·î¨¸î¨¹î¨ºî¨»î¨¼î¨½î¨¾î¨¿î©€î©����\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������î©�î©�î©�î©�î©žî©Ÿî© î©¡î©¢î©£î©¤î©¥î©¦î©§î©¨î©©î©ªî©«î©¬î©î©®î©¯î©°î©±î©²î©³î©´î©µî©¶î©·î©¸î©¹î©ºî©»î©¼î©½î©¾î©¿îª€îª��îª�îª�îª�îª�îªžîªŸîª îª¡îª¢îª£îª¤îª¥îª¦îª§îª¨îª©îªªîª«îª¬îªîª®îª¯îª°îª±îª²îª³îª´îªµîª¶îª·îª¸îª¹îªºîª»îª¼îª½îª¾îª¿î«€î«�î«�î«�î«�î«�î«žî«Ÿî« î«¡î«¢î«£î«¤î«¥î«¦î«§î«¨î«©î«ªî««î«¬î«î«®î«¯î«°î«±î«²î«³î«´î«µî«¶î«·î«¸î«¹î«ºî«»î«¼î«½î«¾î«¿î¬€î¬����\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������î¬�î¬�î¬�î¬�î¬žî¬Ÿî¬ î¬¡î¬¢î¬£î¬¤î¬¥î¬¦î¬§î¬¨î¬©î¬ªî¬«î¬¬î¬î¬®î¬¯î¬°î¬±î¬²î¬³î¬´î¬µî¬¶î¬·î¬¸î¬¹î¬ºî¬»î¬¼î¬½î¬¾î¬¿î€î�î‚�îƒî„î…î†î‡îˆî‰îŠî‹îŒî�îŽî�î�î‘î’î“î”î•î–î—î˜î™îšî›îœî�îžîŸî î¡î¢î£î¤î¥î¦î§î¨î©îªî«î¬îî®î¯î°î±î²î³î´îµî¶î·î¸î¹îºî»î¼î½î¾î¿î®€î®�î®�î®�î®�î®�î®žî®Ÿî® î®¡î®¢î®£î®¤î®¥î®¦î®§î®¨î®©î®ªî®«î®¬î®î®®î®¯î®°î®±î®²î®³î®´î®µî®¶î®·î®¸î®¹î®ºî®»î®¼î®½î®¾î®¿ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������î¯�î¯�î¯�î¯�î¯�î¯žî¯Ÿî¯ î¯¡î¯¢î¯£î¯¤î¯¥î¯¦î¯§î¯¨î¯©î¯ªî¯«î¯¬î¯î¯®î¯¯î¯°î¯±î¯²î¯³î¯´î¯µî¯¶î¯·î¯¸î¯¹î¯ºî¯»î¯¼î¯½î¯¾ï¿½î¯¿î°€î°�î°�î°Žî°�î°�î°�î°žî°Ÿî° î°¡î°¢î°£î°¤î°¥î°¦î°§î°¨î°©î°ªî°«î°¬î°î°®î°¯î°°î°±î°²î°³î°´î°µî°¶î°·î°¸î°¹î°ºî°»î°¼î°½î°¾î°¿î±€î±�î±�î±�î±�î±�î±žî±Ÿî± î±¡î±¢î±£î±¤î±¥î±¦î±§î±¨î±©î±ªî±«î±¬î±î±®î±¯î±°î±±î±²î±³î±´î±µî±¶î±·î±¸î±¹î±ºî±»ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������î²�î²�î²�î²�î²�î²žî²Ÿî² î²¡î²¢î²£î²¤î²¥î²¦î²§î²¨î²©î²ªî²«î²¬î²î²®î²¯î²°î²±î²²î²³î²´î²µî²¶î²·î²¸î²¹î²ºï¿½î²»î²¼î²½î²¾î²¿î³€î³�î³�î³�î³�î³�î³žî³Ÿî³ î³¡î³¢î³£î³¤î³¥î³¦î³§î³¨î³©î³ªî³«î³¬î³î³®î³¯î³°î³±î³²î³³î³´î³µî³¶î³·î³¸î³¹î³ºî³»î³¼î³½î³¾î³¿î´€î´�î´�î´Žî´�î´�î´�î´žî´Ÿî´ î´¡î´¢î´£î´¤î´¥î´¦î´§î´¨î´©î´ªî´«î´¬î´î´®î´¯î´°î´±î´²î´³î´´î´µî´¶î´·ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������îµ�îµ�îµ�îµ�îµ�îµžîµŸîµ îµ¡îµ¢îµ£îµ¤îµ¥îµ¦îµ§îµ¨îµ©îµªîµ«îµ¬îµîµ®îµ¯îµ°îµ±îµ²îµ³îµ´îµµîµ¶ï¿½îµ·îµ¸îµ¹îµºîµ»îµ¼îµ½îµ¾îµ¿î¶€î¶�î¶�î¶Žî¶�î¶�î¶�î¶žî¶Ÿî¶ î¶¡î¶¢î¶£î¶¤î¶¥î¶¦î¶§î¶¨î¶©î¶ªî¶«î¶¬î¶î¶®î¶¯î¶°î¶±î¶²î¶³î¶´î¶µî¶¶î¶·î¶¸î¶¹î¶ºî¶»î¶¼î¶½î¶¾î¶¿î·€î·�î·�î·Žî·�î·�î·�î·žî·Ÿî· î·¡î·¢î·£î·¤î·¥î·¦î·§î·¨î·©î·ªî·«î·¬î·î·®î·¯î·°î·±î·²î·³ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������î¸�î¸�î¸�î¸�î¸�î¸žî¸Ÿî¸ î¸¡î¸¢î¸£î¸¤î¸¥î¸¦î¸§î¸¨î¸©î¸ªî¸«î¸¬î¸î¸®î¸¯î¸°î¸±î¸²ï¿½î¸³î¸´î¸µî¸¶î¸·î¸¸î¸¹î¸ºî¸»î¸¼î¸½î¸¾î¸¿î¹€î¹�î¹�î¹�î¹�î¹�î¹žî¹Ÿî¹ î¹¡î¹¢î¹£î¹¤î¹¥î¹¦î¹§î¹¨î¹©î¹ªî¹«î¹¬î¹î¹®î¹¯î¹°î¹±î¹²î¹³î¹´î¹µî¹¶î¹·î¹¸î¹¹î¹ºî¹»î¹¼î¹½î¹¾î¹¿îº€îº�îº�îº�îº�îº�îºžîºŸîº îº¡îº¢îº£îº¤îº¥îº¦îº§îº¨îº©îºªîº«îº¬îºîº®îº¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������î»�î»�î»�î»�î»�î»žî»Ÿî» î»¡î»¢î»£î»¤î»¥î»¦î»§î»¨î»©î»ªî»«î»¬î»î»®ï¿½î»¯î»°î»±î»²î»³î»´î»µî»¶î»·î»¸î»¹î»ºî»»î»¼î»½î»¾î»¿î¼€î¼�î¼�î¼�î¼�î¼�î¼žî¼Ÿî¼ î¼¡î¼¢î¼£î¼¤î¼¥î¼¦î¼§î¼¨î¼©î¼ªî¼«î¼¬î¼î¼®î¼¯î¼°î¼±î¼²î¼³î¼´î¼µî¼¶î¼·î¼¸î¼¹î¼ºî¼»î¼¼î¼½î¼¾î¼¿î½€î½�î½�î½�î½�î½�î½žî½Ÿî½ î½¡î½¢î½£î½¤î½¥î½¦î½§î½¨î½©î½ªî½«ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������î½î½®î½¯î½°î½±î½²î½³î½´î½µî½¶î½·î½¸î½¹î½ºî½»î½¼î½½î½¾î½¿î¾€î¾�î¾�î¾�î¾�î¾�î¾žî¾Ÿî¾ î¾¡î¾¢î¾£î¾¤î¾¥î¾¦î¾§î¾¨î¾©î¾ªï¿½î¾«î¾¬î¾î¾®î¾¯î¾°î¾±î¾²î¾³î¾´î¾µî¾¶î¾·î¾¸î¾¹î¾ºî¾»î¾¼î¾½î¾¾î¾¿î¿€î¿�î¿�î¿�î¿�î¿�î¿žî¿Ÿî¿ î¿¡î¿¢î¿£î¿¤î¿¥î¿¦î¿§î¿¨î¿©î¿ªî¿«î¿¬î¿î¿®î¿¯î¿°î¿±î¿²î¿³î¿´î¿µî¿¶î¿·î¿¸î¿¹î¿ºî¿»î¿¼î¿½î¿¾î¿¿ï€€ï€�ï€�ï€�ï€�ï€�ï€žï€Ÿï€ ï€¡ï€¢ï€£ï€¤ï€¥ï€¦ï€§ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������ï€ï€®ï€¯ï€°ï€±ï€²ï€³ï€´ï€µï€¶ï€·ï€¸ï€¹ï€ºï€»ï€¼ï€½ï€¾ï€¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï¿½ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï‚€ï‚�ï‚�ï‚�ï‚�ï‚�ï‚žï‚Ÿï‚ ï‚¡ï‚¢ï‚£ï‚¤ï‚¥ï‚¦ï‚§ï‚¨ï‚©ï‚ªï‚«ï‚¬ï‚ïƒ�ïƒ�ïƒ�ïƒ�ïƒ�ïƒžïƒŸïƒ ïƒ¡ïƒ¢ïƒ£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������ïƒïƒ®ïƒ¯ïƒ°ïƒ±ïƒ²ïƒ³ïƒ´ïƒµïƒ¶ïƒ·ïƒ¸ïƒ¹ïƒºïƒ»ïƒ¼ïƒ½ïƒ¾ïƒ¿ï„€ï„�ï„�ï„�ï„�ï„�ï„žï„Ÿï„ ï„¡ï„¢ï¿½ï„£ï„¤ï„¥ï„¦ï„§ï„¨ï„©ï„ªï„«ï„¬ï„ï…�ï…�ï…Žï…�ï…�ï…�ï…žï…Ÿï… ï…¡ï…¢ï…£ï…¤ï…¥ï…¦ï…§ï…¨ï…©ï…ªï…«ï…¬ï…ï†�ï†�ï†�ï†�ï†����\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï† ï†¡ï†¢ï†£ï†¤ï†¥ï†¦ï†§ï†¨ï†©ï†ªï†«ï†¬ï†ï†®ï†¯ï†°ï†±ï†²ï†³ï†´ï†µï†¶ï†·ï†¸ï†¹ï†ºï†»ï†¼ï†½ï†¾ï†¿ï‡€ï‡�ï‡�ï‡�ï‡�ï‡�ï‡žï¿½ï‡Ÿï‡ ï‡¡ï‡¢ï‡£ï‡¤ï‡¥ï‡¦ï‡§ï‡¨ï‡©ï‡ªï‡«ï‡¬ï‡ï‡®ï‡¯ï‡°ï‡±ï‡²ï‡³ï‡´ï‡µï‡¶ï‡·ï‡¸ï‡¹ï‡ºï‡»ï‡¼ï‡½ï‡¾ï‡¿ïˆ€ïˆ�ïˆ�ïˆ�ïˆ�ïˆ�ïˆžïˆŸïˆ ïˆ¡ïˆ¢ïˆ£ïˆ¤ïˆ¥ïˆ¦ïˆ§ïˆ¨ïˆ©ïˆªïˆ«ïˆ¬ïˆïˆ®ïˆ¯ïˆ°ïˆ±ïˆ²ïˆ³ïˆ´ïˆµïˆ¶ïˆ·ïˆ¸ïˆ¹ïˆºïˆ»ïˆ¼ïˆ½ïˆ¾ïˆ¿ï‰€ï‰�ï‰�ï‰�ï‰����\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������ï‰�ï‰žï‰Ÿï‰ ï‰¡ï‰¢ï‰£ï‰¤ï‰¥ï‰¦ï‰§ï‰¨ï‰©ï‰ªï‰«ï‰¬ï‰ï‰®ï‰¯ï‰°ï‰±ï‰²ï‰³ï‰´ï‰µï‰¶ï‰·ï‰¸ï‰¹ï‰ºï‰»ï‰¼ï‰½ï‰¾ï‰¿ïŠ€ïŠ�ïŠ�ïŠ�ïŠ��ïŠ�ïŠžïŠŸïŠ ïŠ¡ïŠ¢ïŠ£ïŠ¤ïŠ¥ïŠ¦ïŠ§ïŠ¨ïŠ©ïŠªïŠ«ïŠ¬ïŠïŠ®ïŠ¯ïŠ°ïŠ±ïŠ²ïŠ³ïŠ´ïŠµïŠ¶ïŠ·ïŠ¸ïŠ¹ïŠºïŠ»ïŠ¼ïŠ½ïŠ¾ïŠ¿ï‹€ï‹�ï‹�ï‹�ï‹�ï‹�ï‹žï‹Ÿï‹ ï‹¡ï‹¢ï‹£ï‹¤ï‹¥ï‹¦ï‹§ï‹¨ï‹©ï‹ªï‹«ï‹¬ï‹ï‹®ï‹¯ï‹°ï‹±ï‹²ï‹³ï‹´ï‹µï‹¶ï‹·ï‹¸ï‹¹ï‹ºï‹»ï‹¼ï‹½ï‹¾ï‹¿ïŒ€ïŒ�ïŒ�ïŒ�ïŒ����\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[249] = \"����������������������������������������������������������������î€�î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾ï¿½î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚���\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"����������������������������������������������������������������îƒ�îƒ�îƒ�îƒ�îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºï¿½îƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„�î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„î…�î…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������î†�î†�î†�î†�î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†î†®î†¯î†°î†±î†²î†³î†´î†µî†¶ï¿½î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡�î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20004] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€ï¢�ï¢�ï¢�ï¢�ï¢žï¢Ÿï¢ ï¢¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¢¢\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������万丌ä¸�冇与丘�丮丳么�乒乓�亄�äº�亓��������仈��仜仨仩���仚�伔伀伕伈仱优伬��伓�������ä¼�仴�������伂ä¼ï¿½ï¿½ï¿½ä¼¿ï¿½ä¼³ï¿½ï¿½ä½–佢佉体佤佡佧佒ä½�佇ä½�伾佣侅侀佴侄佷佌侚�����������������������������������一ä¸�七丈三上下ä¸�ä¸�丑且丕世丙丞丟並���丫ä¸ä¸°ä¸±ä¸²ï¿½ä¸¶ï¿½ä¸¸ä¸¹ä¸»ï¿½ä¸¿ä¹‚乃久之ä¹�乎ä¹�乖乘�乙乜ä¹�ä¹žä¹Ÿä¹©ä¹³ä¹¾äº‚ï¿½äº…äº†äºˆäº‹ï¿½äºŒäºŽäº‘äº’äº”äº•äº™ï¿½äº›äºžäºŸï¿½äº äº¡äº¢äº¤äº¥äº¦äº¨äº«äº¬äºäº®äº³äº¶äº¹ï¿½äººä»€ä»�仃仄仆仇今�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"���������������������������������佹ä¾�ä¾�侞侇侒侕�佫佬侘佼侉佰侜�����������俬�侺����俙ä¿�俓侲俉俋ä¿�ä¿œä¾»ä¾³ä¿‡ï¿½ä¿–ä¾¹ï¿½ï¿½ï¿½å€“å€¢å€žå€‡å€°å€›ä¿´å€³å€·ä¿·å€—å€ å€§å€µå€¯å€±ï¿½å€”ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å€Žï¿½å�¯å�ºå�¤å�°å�†å�¡å�žå� å�‹å��å�›å�Šå��å�¢å€•�����������������������������������介ä»�仂仉仔仕他仗付仙ä»�仞仡仟代令以仰仲仳仵件价任份仿ä¼�伉伊伋ä¼�伎ä¼�ä¼�ä¼‘ä¼™ä¼¯ä¼°ä½ ä¼´ä¼¶ä¼¸ä¼ºä¼»ä¼¼ä¼½ä½ƒä½†ä½ˆä½�低ä½�ä½�佑佔何佗余佘佚佛作佞佟佺佽佩佪佯佳併佶佸佻佾使侃來侈例ä¾�ä¾�侑侔侖侗供ä¾�侷俔俅侮侯侵�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"���������������������������������å�å�“�å�€ï¿½ï¿½ï¿½ï¿½å�£ï¿½ï¿½ï¿½å�®ï¿½å�³ï¿½å�…å�Ÿå�©å�Œå�·ï¿½å‚£å‚‹å‚‚�傌傢傛傃傕å‚�å�¨å‚œï¿½å‚‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‚¸ï¿½å‚½å‚»å‚ºåƒˆï¿½å‚¿åƒ†å‚®åƒ„傯傰åƒ�傱僋�僣������僬åƒ�僤僓僛僪僔僿儃儰僸僽僶儅����儊儜儑�儚儓�������������������������������������侶便係促俄俊俎ä¿�ä¿�俑俗俘俚俛ä¿�ä¿Ÿä¿ ä¿žï¿½ä¿¡ä¿®ä¿¶å€€å€…å€Œå€¬ä¿¯ä¿±ä¿³ä¿µä¿¸ä¿ºä¿¾å€‰å€‹å€�倆å€�們倒倖倘候倚倜�借倡倣值倥倦倨倩倪倫å€å�ˆå�Žå�²å��å�ƒå�‡å�‰å��å�•å�šå�œå�¥å�ªå�´å�µå�¶å‚Žå‚”傖傀傅å‚�å‚‘å‚’å�«å‚˜å‚™å‚šå‚žï¿½å‚¬å‚傲傳傴債傷�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å„©å„ å„¦å„¥å„¡å„¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å„±å„儴儵��儹儺儸儽��兙党兛兞å…�兟�����������冔冘������������冼��冾����凅���å‡����凔凘�����������刌刉刓åˆ�刜刞刡�����������������������������������傾僂僅僇僉僊åƒ�僱僎僦僨僩僑僕僖僚å�½åƒ¥åƒ§åƒåƒ®ï¿½åƒµåƒ¹åƒ»åƒ¾å„€å„‚億儆儈儉�儌僰儋儇å„�儒儔儕儗儘儤償優儲儳儷儻儼兡儿兀å…�元兄充兆先光兇克兌å…�兔兒兕兗兜兢兣入內全兩��八公å…兮共兵其具典兼冀�冂冉冊å†��\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������刱�剆��剎剌����剚剒剟剕剫å‰å‰¬å‰·å‰ºå‰»å‰¼åŠ€åŠ�劋��劗劘劙劦勀��������勛���勴�匆��匋匑�匢����匰匴匷匼匽å�Œï¿½ï¿½å�¹ï¿½å�¼ï¿½ï¿½åŽ’åŽ—åŽ–ï¿½ï¿½åŽžåŽœåŽ¤ï¿½åŽ¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å†�å†“å†‘å†’å†•ï¿½å†–å†—å†žå† å†¢å†¤å†¥å†ªï¿½å†«å†¬å†°ï¿½å†±å†¶å†·ï¿½å†½ï¿½å‡„å‡†å‡ˆï¿½å‡Šå‡‹å‡Œå‡����凜å‡�ï¿½å‡ å‡¡ï¿½å‡±å‡³å‡°ï¿½å‡µå‡¶å‡¸å‡¹ï¿½å‡ºå‡½ï¿½åˆ€åˆ�刃分切刈刊刎刑划刖列刨åˆ�刪判別�利å‰�刮到刲刳刵制刷券�刺剋剃剄則剉削刻å‰�剜剞�\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������å�¼ï¿½ï¿½ï¿½ï¿½å�†å�‹ï¿½å�‡ï¿½ï¿½ï¿½ï¿½å�±å‘Žå�§ï¿½ï¿½å‘…�呔å�¬å�¨å�°å�·å�˜å�½ï¿½å�œå�¥å’‡å‘¿å’�å’‘å’–å‘¸å’•å’šå‘¾å‘¥å‘¬å‘´ï¿½å‘ å‘ºå‘¤ï¿½ï¿½ï¿½ï¿½å‘¯ï¿½å‘¡ï¿½ï¿½å’¶å“…ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å’¦å’ªå“Žå’å’®å“–å’©å’¾å’ å‘°å’¼å“�哃哞哸��唑唅唦唇唔哪唷哢唗唒哧哳����������������������������������剡剔剖�剛å‰�剩剪剮副割剴創剸剽剿劂劃劄劇劈劉劊劌åŠ�åŠ‘åŠ“åŠ–ï¿½ï¿½åŠ›åŠŸåŠ åŠ£åŠ©åŠªåŠ«åŠ¬åŠï¿½åŠ»åŠ¾åŠ¼å‹�勃�勇勉å‹�勒動勖勘務å‹�勞�募勢勣勤勦勩勰勳勱勵勷勸�勹勺勻勿�包匈匊åŒ�åŒ�åŒ�勾匕化北匙�匚匜åŒ�åŒŸåŒ åŒ¡åŒ£ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"���������������������������������唚哫�唋�唃唊��啡啃啊啪啦啤å•�å”唴啵啶唌唲啥啎啑啢唶唵����啕唸唬�唻�������唹�唰啒啅������啿�喡喣喳喲喱喨喥喒噅喢�啽喌�喵啷嗡嗨嗦嗄嗩喿å—�嗕嗢嗖嗈嗲嗌å—�å–�嗧��嗋嗊å—�����������������������������������匪匯匱åŒï¿½ï¿½ï¿½åŒ¸åŒ¹åŒ¾åŒ¿å�€ï¿½å��å�ƒå»¾å�…å�‡å�ˆå�‰å�Šå�‘å�’å�“å�”å�—å�šå��å�œå�žå� å�¡å�£å�¦ï¿½å�©å�¬ï¿½å�¯å�°å�±å�²ï¿½å�µå�·å�¸ï¿½å�»å�®å�³ï¿½å�¿ï¿½åŽ‚åŽ„åŽŽï¿½åŽ”åŽ˜åŽ™åŽšåŽ�原�厥�åŽï¿½åŽ²ï¿½ï¿½åŽ¶åŽ¹åŽ»ï¿½å�ƒï¿½ï¿½å�ˆå�‰å�Šå�‹å��å�”å�–å�—�å�›å�Ÿå�¡å�¢ï¿½å�£å�¤ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"���������������������������������嗀嗥嗯�����������嘌嘓嗼嗺å˜�嘟å˜�嘀嘛嘜å˜�嘄嘧嘕噘噚噀嘳嘽噆嘾嘸嘺噈噂å™�å™Šå˜ªå˜®å™—ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å™™å™¹å™žå™°å™ å™£å™å™®å™³åšŽåš�嚓嚌åš�嚆嚄嚃嚂噾���åš����嚕嚘嚜嚗�������嚦嚧嚪嚫åšåšµï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�¥å�¦å�¨å�©å�ªå�«å�¬å�å�®å�±å�¯å�°å�²å�³å�µï¿½å�¸å��å�ƒå�„å�ˆå�‰å�Šå�Œå��å�Žå��å��å�‘�å�’å�›å��å�žå�Ÿå� å�¦å�©å’�å�ªå�«å�å�®å‘ˆå�³å�µå�¶å�¸å�¹å‘Šå�»å�¼å�¾å‘€å‘‚呃呆咂呢呦呧周咒�呱呫味呵呶呷呻呼命咀咄咆咈和咎�咋å’�咡�咢咥咧咨咫咬咯咱咳咷�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������囃嚽嚾囆囋��囌�囔å›�囡��囟囧�囥��������åœ�åœŠåœŒåœ”åœšåœ›ï¿½åœžåœ ï¿½åœ£ï¿½åœ®ï¿½ï¿½åœ´ï¿½ï¿½åœªï¿½ï¿½ï¿½å��å�‹ï¿½å�’�����å�…圾����������å�½å�´å�¶åž€å�²å�±åžƒå�©å�¯å�¨å�¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åžµåž˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å’¸å’ºå’½å“€å“�哂哄哆哇哈哉咻咿員哥唎哦哩å“哮哲哺哼哽哿å”�唆唈唉å”�哤哨唄å”�售唯唱唳唾å•�啣啄商å•�啟啖啗啜啞唪唼å•�啻啼å–�喀喂喃善�喇喈喉喊å–�喓喋喑喘喙喚喜å–�唧喧喻喪喬單啾嗃嗅嗎嗇嗑嗓嗔嗚嗛嗜嗟嗣嗤喔�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"���������������������������������垮垔åž�åž—ï¿½åž¥åž™åžŸåžŒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åž•ï¿½ï¿½ï¿½ï¿½åž¸åŸŒåž¶åž¿åŸ•åŸ”åŸ†åž½åž¼ï¿½åŸ‡ï¿½ï¿½ï¿½åž¹åžºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åŸ¥åŸ¬åŸ£åŸ²åŸ®åŸ½åŸ¼åŸ»å ”å ˆåŸ¢åŸœåŸ³ï¿½åŸ§å €å ŒåŸ±å ŽåŸ©åŸ°å �å „å ‹å ‰å �ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ©å ·å ¥å £å å ¬å �å ¨å ›å ®å ¿ï¿½å ¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å–Ÿå–¤å–«å–嗆嗉嗒嗿�嘆嘈嘉å˜�å˜��嘒嘖嘗噓嗹嘂嘎嘔嗷嗽嗾嘬嘩嗶嘰嘯嘲嘴嘵嘶�嘹嘻嘿噉噌�噎噢�噤器噩噪噫噬噯噲噴噶噥噦噸噱嚀嚅嚇åš�嚙嚚嚲囅嚥嚬嚮嚳嚴嚨嚶嚼囀å›�囂嚷囉囊囈囑囓å�»å›—å›žå›šå››å›ªå› å›¤å›°å›«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ³ï¿½ï¿½å¡¥å¡å¡¨å¡£å¡�å¡™å¡‰å¡¯å¡•ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ½ï¿½ï¿½ï¿½å¢†å¡»å¢”å¢�墇塶墘墑墂墈塽塴墋塺��墎����������墥��������墡�墣墯墬墱�������壆墽壂�壔壒�����������������������������������囷囹固囿圃圄圈圉國�圇圂囮åœ�園圓圖團圜�土在圩圬åœåœ¯åœ°åœ»å�€å�»ï¿½å�‡å�Šå��å�Žå��å��å�‘�å�Œå�¡å�¤å�¦å�å�µå�·å�¼åž‚å�ªå�«å�°å�³åž‹åž“åž�åž åž¢åž£åžžåž¤åž›åžšåŸƒåŸ‹åŸŽåŸ’åŸ‚åŸ�åŸŸåŸ ï¿½åŸåŸ¶åŸ·åŸ¹åŸºå ‚å …å †å ŠåŸ¤åŸ´åŸµåŸ¸ï¿½å ™å žå ¡å å ¤å ªå ¯å ±å ²ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"��������������������������������������壢å£�壛�������壨壧��壴�壾�夃夌å¤�å¤Žå¤’å¤—ï¿½ï¿½ï¿½ï¿½å¤¼å¥…å¥Šï¿½å¥œï¿½ï¿½ï¿½å¥«ï¿½ï¿½å¥°ï¿½å¥²å¥¿ï¿½å¥»å¥¾å¥¹å¦…å¦€å¥¼ï¿½ï¿½ï¿½å¦§å¦˜å¦ å¦¦å¦¡ï¿½å¦�妎妢å¦������������妵妺å§�姎妽姈妱姃�妶妴姌å§�ï¿½å¦¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ´å µå §å °ï¿½å¡�塊塋塌塑塔墓塚塗塘塞填塢å¡�塤塒塎塓塵塹塼塾塿墀å¢�境墅墉墊�塈å¢�墜å¢�å¢žå¢Ÿå¢¨å¢©å¢®å¢ºå¢³å¢ å¢«å¢¦å¢¾å£�壅壇壈壎壑壓壕壖壘壙壞壟壚�壤壩圳士壬壯壹壺�壽壼��夆�夂å¤�ï¿½å¤”ï¿½å¤•å¤–å¤™å¤šå¤œå¤ å¤¢å¤¤å¤¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å§€å¦³å§ ï¿½ï¿½ï¿½å§²ï¿½å§©å§³å§µå§ºå§½å¨€å§¶å§´ï¿½å§›ï¿½å§˜å§¡å¨–å¨�娗娳����å¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¨Šï¿½ï¿½å¨•å© å©˜å©€å©§å¨¸å©�媎�婰�娹�娾婃��婂�婑å©������婟婥婬婒婛�婩婇��婈婌婓婤婗�������媃媄���������������������������������������大å¤å¤©å¤ªå¤«å¤¬å¤®å¤±å¤¯å¤·å¤¸å¤¾å¥„奇奈奉奎å¥�å¥�å¥‘å¥”å¥•å¥“å¥—å¥šï¿½å¥˜å¥ å¥¡å¥¢å¥§å¥©å¥ªï¿½å¥å¥®å¥€å¥³å¥´å¥¶å¥¸å¥½å¦�如妃妄妊妒å¦�妓妖妗妙å¦�妣妤妥妨妯妹妻妾姆姊始å§�å§�姑姒姓妲妮委姚姜å§�姞�姣姤姥姨姦姪姬姅姻娃姿å¨�娉姮姱�\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"�����������������������������������婿媌媜婻媦åª�媞婸�媓���媋���åª�媮娷媔婼媥媬媗�嫇媱嫈媻媰嫀嫊�嫆��åª�媹��媷媴媶��嫮嫥嫕å«å«›å«³å«¢å«¬ï¿½ï¿½å¬žï¿½å«¨ï¿½ï¿½å«¿å«´å«½å«·å«¶ï¿½å¬…嫸�嫻�嫵����å¬�嬔嬓å¬�å¬ ï¿½ï¿½å¬šï¿½å¬¡ï¿½ï¿½ï¿½å¬¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¨Œå¨‘å¨˜å¨›å¨œå¨Ÿå¨ å¨£å¨¥å¨©å¨“å¨¼ï¿½å¨¶å©�婆婉婊婕婚婢�婦婪å©å¨µå©�婞婷婺媒媚媛媟媢媧媊媕�媳媵媸媼媽媾媿å«�å«‚å«„å«‰å«‹å«Œåª²åªºå«–å«—å« å«¡å«£å«¦å«©å«ªå«˜å«šå«œå««ï¿½åª¯å¬ˆå¬‰å¬‹å¬Œå¬ƒå¬–å¬—å¬™å¬›å¬´å¬ªå¬¤å¬å¬²å¬¾å¬°å¬¸å€å…åŒå¦žå�å‘å”å•å–�\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"���������������������������������嬦嬮�嬯���嬬嬥嬧�嬽嬿�����åƒï¿½ï¿½åˆå‡å‹ï¿½å�åŽï¿½ï¿½å“����å¢å¬å±˜å®å²ï¿½å·ï¿½å»ï¿½ï¿½ï¿½å®’宎����宨�å®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¯‘寪å¯�寋寊������寯寲寱����尃�尌�尒å°��尳尷屇��屄����������������������������������å—å˜åšå›åœå�åŸå£å¤å¥å©å«å°å±å³å¸åºï¿½å¿åµå®€å®�它宄�宅宇守安宋完å®�宓宕宗官宙定宛宜客宣室宥宦宬宮宰害宴宵家宸容�寀宿å¯�寂�寄寅密寇寧富å¯�å¯’å¯“å¯”å¯–å¯˜å¯Žå¯žå¯Ÿå¯¡å¯¢å¯¤å¯¥å¯¦å¯¨å¯ å¯™å¯©å¯«å¯¬å¯®å¯°å¯µå¯¶å®§å¯¸å¯ºå°��\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"���������������������������������屌�屖屔�屙屜�屪�屴�屾���岓����å²�å²�å²ˆå²‹å²‰å²’å²Šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å²¥ï¿½å²¶ï¿½ï¿½å²®å²¤å² å²å²ªå²§å²¬å²Ÿå²¦å²¯å²�å³�峘峌峛峞峚峖峗峎�峉峇峊�����峟���å³��峪�峿峮峱峷�峰��崀��å´�峬崞崋å´�崤����������������������������������射�將專尉尊尋å°�導�å°�少�尖尚�尟尕尢尤尨尪就尰�尬�尸尹尺尻尼尾尿局å±�居屆屈�屋å±�屎å±�屑展å±�å±�å± å±¢å±£å±¤å±¥å±§å±¨å±©å±¬å±ï¿½å±®å±¯å²³å±±å±¹å±ºå±¼å²Œå²�岑岔�岡岢岨岩岫岱岵岷岸岣峒峙峋峨å³ï¿½å³¶å³»å³½å³“峴峹��\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å´¥å´ å´Œå´¨å´��崆å´�崰崒崣崟������崮��崷嵃��嵕崳崺崴崵嵑åµ�崽�嵙嵂����嵧嵢嵨�����嵱嵣嵥嵲嵞�嶀嵽嶆嵺��嵷嶊嶉嶈嵹���嵿嵼嶜嶟��嶢å¶�嶓嶕嶡嶚�������������嶵����������������������������������崇崎�崑崔崖崙崗崛崢崩崚崧崦嵇崿嵋嵫嵊嵌崶嵎åµ�喦崱嵩å¶�åµ¬åµ¯åµ¾å¶‚å¶„å¶‡å¶’å¶”å¶¸å¶ å¶žå¶§å¶™å¶·å¶ºå¶¼å¶½å·‰å·‹å·�巒巘巔巖嶗巛å·�州巡巢�工左巧巨巫差�己巳已巴�巷巽�巾�市布帆�帑帕希帖帗帘帙帚帛帔å¸�帡帟帥師�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"���������������������������������嶰嶮嶪嶨嶬嶱å¶å¶©å¶´ï¿½ï¿½å·€ï¿½å·ƒï¿½ï¿½ï¿½ï¿½å·†å·‡ï¿½ï¿½å·�ï¿½å·•å·‘ï¿½å·Ÿå· ï¿½å·°ï¿½ï¿½å·¹ï¿½å¸Šå¸¢å¸£å¸ å¸¤ï¿½ï¿½å¸©å¸¾å¸´ï¿½å¹�幎�幙幓幩å¹�å¹ ï¿½å¹§å¹¨å¹¦ï¿½å¹µï¿½åº‚ï¿½åº‰åºŒåºˆï¿½ï¿½ï¿½ï¿½åº°åº¤åº¢åº›åº£åº¨åº®åºªï¿½ï¿½åº¹åº²åº±ï¿½ï¿½ï¿½ï¿½å»„ï¿½ï¿½å»…å»†å»‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¸å¸¨å¸³å¸¶å¸·å¸¸å¸½å¹ƒå¹„幅幀幋幌幔幕幗幘幟幡幢幣幪幫幬å¹å¹¯å¹°å¹›å¹²å¹³å¹´å¹¶å¹¸å¹¹ï¿½å¹ºå¹»å¹¼å¹½å¹¾ï¿½å¹¿åº€åº„庇床庋åº�åº•åº–åº—åºšåºœåº åº¥åº¦åº§åº«åºåº³åºµåº¶åº·åº¸åº¾åº¬åº´å»�廂廌廑廈廉廊廋�廓廖廚廕å»�å»›å»Ÿå» å»¡å»¢å»£å»¨å»©å»¬å»±å»³é¾���\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å»—å»Žå»œå»”å»’å»™å»˜ï¿½ï¿½ç·³å»žï¿½å»§å»¦å»¥ï¿½ï¿½å»®å»¯ï¿½å»²è ¯ï¿½å¼‚ï¿½å¼…ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¼šå¼���弮弳弶�彃彆彉彋�å½�彔�����彯虨彴�彸彶�彾彽�徛徖�徟�徫��徦徥��徲�徻徾�徿忀å¿������忔忕忷忨忞忥����������������������������������廴延廷�建���廿å¼�弄弇弈弊�弋�å¼�弒�弓弔引弗弛弟弢弣弦弧弩弤弨å¼å¼±å¼°å¼µå½„強弸弼彀彈彊彌彎弘å½�彖彗彘彙å½���彡形彤彥彧彩彪彫彬å½å½°å½±ï¿½ï¿½å½³å½·å½¹å½¼å½¿å¾€å¾�徂待徇很徉徊律後å¾�å¾‘å¾’å¾—å¾˜å¾™å¾œå¾žå¾ å¾¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ€€ï¿½ï¿½ï¿½å¿£å¿ºå¿¯å¿³æ€œï¿½æ€æ€²æ€‹æ€´æ€Šæ€šæ€žæ€¬æ€¢æ€�怌怮怓怷怹�怉����æ�€æ�Ÿæ�¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�”æ�²æ�žæ�…æ�“æ�›ï¿½ï¿½ï¿½ï¿½æ‚Žï¿½ï¿½æ‚•悗悢悈悀悇悊æ‚�悆æ�¿æ‚¨æƒ¦æƒˆæƒ”悺æƒ�æƒ�惤惌惢悷惉悹�æƒ�������惊�������������������������������������徨復循徬å¾å¾®å¾¯å¾µå¾·å¾¹å¾¼å¾½ï¿½å¿ƒå¿…忉忌å¿�忒忖志忘å¿�å¿‘å¿™å¿�å¿ å¿¡å¿ªå¿«å¿å¿®å¿µå¿±å¿¸å¿¤å¿»å¿½å¿¿æ€�怎æ€�怒怕怖怗怙怛æ€�æ€ æ€¡æ€¥æ€¦æ€§æ€¨æ€©æ€ªæ€«æ€¯ï¿½æ€µï¿½æ€³æ€”æ��æ�‚æ�ƒæ�†æ�‡æ�Œæ��æ��æ�•æ�™æ�šæ��æ�¢æ�£æ�¤æ�¥æ�§æ�¨æ�©æ�ªæ�«æ�æ�¯æ�°æ‚ƒæ�‰æ‚„悅悌�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"������������������������������������悿�����愘���惼惾惷愖愅惵�愓愃æ„�愣��愋惿���æ„�æ„„ï¿½ï¿½ï¿½ï¿½æ……æ„¶æ„²æ…‰æ„©æ„¨æ„¯æ„®ï¿½ï¿½ï¿½æ…¦ï¿½æ…”æ…ºæ…›æ…²æ…’æ…±æ…¬æ†€æ…žï¿½æ…–ï¿½ï¿½æ†‹æ†ƒæ…¹ï¿½ï¿½æ†±æ†°æ†ªæ†¡æ†æ†Ÿæ†¢æ†‰æ†›æ†“��憌��憳��������������������������������������������æ‚�悒悔悖悚悉悛æ‚�ï¿½æ‚Ÿæ‚ æ‚£ï¿½æ‚�悱�悲悴悵悶悸悻悼悽悾惄情惆惇惎惑惓惕惘惙惚惛惜æƒ�æƒŸæƒ æƒ¡æ‚°æƒ‹æƒ°æƒ±æƒ²æƒ³æƒ´æƒ¶æƒ¸æƒ¹æƒºæƒ»æ„€æ„�愆愈愉愊æ„�愎æ„�愒愔愕愚愛愜感æ…�愧�愫愬愴愷慎愾愿�慄慆慇慈慊態慌æ…�慓慕慘�æ…��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"������������������������������������憺憿懅憴æ‡�æ†µæ†¼ï¿½ï¿½ï¿½æ‡–ï¿½ï¿½ï¿½æ‡§æ‡ æ‡¤æ‡¨æ‡žæ‡˜ï¿½æ‡æ‡®æ‡±æ‡ªæ‡°æ‡«ï¿½æ‡©æ‡»æ‡¹ï¿½ï¿½æˆƒæˆ„ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æˆ é…¨ï¿½ï¿½ï¿½æˆ«æˆ§æˆï¿½ï¿½ï¿½ï¿½æˆºæ‰‚扔扜扞�扡���扚�扺抈�扲����扽扴æŠ�抌抎æŠ�æŠ‡æ‰»ï¿½æŠ¸ï¿½æŠæ‹ŽæŠ®æŠ¿æŠ´æŠ¾æŠªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ…šæ…Ÿæ…¢æ…£ï¿½æ…§æ…¨æ…«æ…®æ…°æ…³æ…´æ…µæ…¶æ…·æ…¼æ…¾ï¿½æ†‚æ…¥æ†Šæ†�憑憔憚憎æ†�憤憧憨憩憬憫憮憯憲æ†�憶憸憾懃懆懂懇懈應懊懋懌æ‡��憒憖��懟懣懥懦懲懿懵懶懷懸懺懼懽懾戀æˆ�戇�戈戊戌æˆ�戎æˆ�我戒戔戕或戚戛戟戢戥戡戣戩截戳�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�������������������������������������抰抩挋拵挎挃拫拹æŒ�挌拸拶挀拲æŒ�挕���挓�����挔�æ�–挬æ�…æ�ƒæ�¤æŒ©æ��æ�˜æ�”æŒæ�€æ�����挴æ�‚�æ�‡æŒ¸ï¿½ï¿½ï¿½ï¿½æ�—æ�µæŽœæŽ®æŽ°æ�¼æŽ¤æŒ»æŽ±ï¿½ï¿½ï¿½ï¿½ï¿½æŽŸï¿½ï¿½æŽ�æ�¥æŽ‚æŽæŽ�掗æ�ºæ�¯æŽ™ï¿½ï¿½æŽ…���æ�Žæ�¥æ�¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æˆ®æˆ°æˆ²æˆ´æˆ¤æˆ¶æˆ¾æˆ¿æ‰€æˆ½æ‰�扃�扆扇扈扉扊�手æ‰�扎扑扒打æ‰�æ‰˜æ‰›æ‰ æ‰¢æ‰¦æ‰£æ‰æ‰®æ‰¯æ‰±æ‰³æ‰¶æ‰¹æŠµæ‰¼æ‰¾æ‰¿æŠ€æŠƒæŠ„抆抉把抑抒抓抔投抖抗折抨披抬抱抶抹押抽拂拄拆拇�拈拉拊拋拌æ‹�æ‹�æ‹�æ‹‘æ‹’æ‹“æ‹”ï¿½æ‹–æ‹—æ‹˜æ‹™æ‹šæ‹›æ‹œæ‰¤æ‹®æ‹æ‹¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"���������������������������������æ��æ�¯æ�ƒæ�³æ�Šæ�¶æ�‡æ�™ï¿½æ�µæ‘¡æ�Ÿæ�¹æ�•æ�˜æ�±æ��æ�¾æ�‰æ�¤æ�³æ‘ƒæ�Ÿï¿½ï¿½ï¿½æ�Žæ�•æ�¹æ�·æ�£æ�Œæ�°æ‘�æ�¯æ�šæ‘€æ�žæ�§æ�‹æ�¿æ�«ï¿½ï¿½æ�¡æ�›ï¿½ï¿½ï¿½ï¿½æ‘�摲摵摦撦摎撂摞摜摔æ‘��摋摻摓æ‘�æ‘¿æ‘®æ‘°æ‘«ï¿½ï¿½ï¿½ï¿½æ‘¬ï¿½ï¿½ï¿½æ‘·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ’¢æ’³æ’Ÿæ’–æ’ æ’—æ’œæ’�撋����������������������������������拱拯拳拴拷拽拾拿æŒ�挂指挈按æŒ�挑挖拼挨挪挫振挶挹挺挼挽挾æ�„æ�†æ�‰æ�‹æ�Œæ��æ�šæ���æ�•挲æ�Žæ�§æ�¨æ�©æ�«ï¿½æ�æ�®æ�²æ�±ï¿½æ�¶æ�·ï¿½æ�»æ�½æŽ€æŽƒæŽ‡æŽˆæŽ‰æŽŠæŽŒæŽ�掎æŽ�æŽ’æŽ–æŽ˜æŽ›æŽ æŽ¡æŽ¢æŽ£æŽ¥æŽ§æŽ¨æŽ©æŽªæŽ¬æŽ¯æŽ„æŽžæŽ”æŽ«æ�€æ�„æ�†æ�‰æ���æ��æ�’æ�–æ�šæ�›ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"���������������������������������撊撌撣�������撘�����摨��撽撿�擃�擖æ“�擉���擩擤擨��擰�æ”�攎攆擽擸攇�擿æ”�æ”�攉攌æ”�ï¿½ï¿½æ”—æ”•æ”“ï¿½æ”›æ”¡æ” æ”¦ï¿½ï¿½ï¿½ï¿½æ”�攮��攳攽æ•�敃��敊敆��敓敧敪敤敜敯��敳�敹敿斀������������������������������������æ�œæ� æ�½æ�¡æ�£æ�©æ�ªæ�æ�®æ�²æ�´æŽ½æŽ¾æ�…æ�—æ�°æ�«æ�†ï¿½æ��æ��æ�’æ�“æ�”æ�–æ�—æ�œæ� æ�¢æ�¥æ�¦æ�¨æ�ªæ�¬æ�æ�´æ�µæ�¶æ���æ�Šæ�˜æ‘˜æ‘Ÿæ‘ æ‘§æ‘©æ‘æ‘¯æ‘³æ‘¶æ‘¸æ‘¹æ‘ºæ‘‘摒摛撅摴摽撩撇撈æ’�撒撓撕撙撚æ’�æ’žæ’¤æ’¥æ’«æ’æ’®æ’°æ’²æ’¬æ“«æ’±æ’»æ’¼æ’¾æ“�擂擄擅擇擊擋æ“�擎æ“��\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ–„ï¿½æ–’æ–”æ––ï¿½æ–žæ– æ–ªæ–²æ–³æ–¶ï¿½æ–»ï¿½ï¿½æ—���旓旗�旚旞�旯旮�旳旲�æ˜�昑炚�旼昄昒æ˜�æ˜ˆæ—»æ˜Šæ˜‹ï¿½ï¿½ï¿½æ˜ºæ˜³æ˜«ï¿½ï¿½ï¿½ï¿½æ˜¤ï¿½æ˜¹ï¿½æ˜¡æ˜²æ˜œæ˜¦æ˜¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ™’æ™…æ™Šæ™Ÿæ™‡ï¿½ï¿½ï¿½ï¿½ï¿½æ™¥æ™™æ™œæ™¢ï¿½ï¿½ï¿½ï¿½ï¿½æ™¼æ™¾æ™»æš€æ™ªæ™±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ“’æ“”æ“—æ“˜æ“šæ“·æ”™æ“ ï¿½æ“¢æ“£æ“¦æ“¬æ“¯æ“±ï¿½æ“æ“²æ“´æ“ºæ“»æ“¾æ”€æ”„攔攖攘攜æ”��攢攣攤攪攫攬攩�支攲�攴收攷攸改攻放政故效敉敘教æ•�救敕敖敗敔�æ•�敞敢散敦敻敬敲整敵敷數敺æ–�斂斃��文斌æ–�斑斕�斗料斛斜æ–�斟斡斢斤�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"������������������������������������������暊�����暆暌暕æš�æš”æ™¸æš‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æšŸæš¡æš ï¿½ï¿½ï¿½ï¿½ï¿½æš¯ï¿½ï¿½æš°æš©æš²ï¿½ï¿½æ›Œï¿½ï¿½ï¿½æšºï¿½æš¸æš»æ›Šæ›„æ›†ï¿½æš½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ›–æ›’æ›˜ï¿½ï¿½ï¿½æ›£æ›¤ï¿½ï¿½æ›æ›®æ›«æ›¶æœ�朄�����������朒������������������������������������斥斧斨斬斯斮新斷�斸�方於施斿旎æ—�旂旃旄旅旆æ—�æ—‹æ—Œæ—�旖旒�旛旟æ—�ï¿½æ— æ—¢æ—¡æ—¥æ—¦æ—¨æ—©æ—¬æ—æ—°æ—±æ—´æ—ºæ˜Œæ˜‚昆昃明æ˜�易昔昀昉昕æ˜�æ˜Ÿæ˜ æ˜¥æ˜§æ˜¨æ˜æ˜¯æ˜±æ˜´æ˜µæ˜¶æ™�時晃晉晌æ™�晚晛æ™�晞晡晤晨晦�普景晰�晴晶晷智晬暄�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æœ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æœ£ï¿½ï¿½ï¿½æœ¾æœ¹æœ¸æœ»æœºæœ¿æœ¼æœ³æ�™æ�…æ��æ�šï¿½ï¿½ï¿½æ�‹ï¿½ï¿½ï¿½æ�ˆæ�¹æž�æ�ºæž”�æ�·æž“æž…æ�¬æžŽæž’æ�»æž†æž„æ�´ï¿½ï¿½ï¿½æŸï¿½ï¿½ï¿½æ�¸ï¿½ï¿½æŸ‰ï¿½ï¿½ï¿½ï¿½æž��柲柈柸柃柀柅柫柋柤æŸ�柶柣柂柧���柺�柊�����������������������������������暇æš�暑暖暗暘æš�暢暈暉暫�暮暱暴暵暹暨曉暾曀曈曇æ›�曙曚曛曜æ›�ï¿½æ› æ›¦æ›¨æ›©æ›¬æ˜‡æ›°æ›²æ›³æ›´æ›·æ›¸æ›¹æ›¼æ›¾æ›¿æœ€æœƒæœ…å‹—æœˆæœ‰æœ‹æœ�朔æœ�朓æœ�朕朗望�æœ�æœŸæœ¢æœ¦æœ§ï¿½æœ¨æœªæœ«æœ¬æœæœ®æœ±æœ´æœµæœ½æ�†ï¿½æ�‡æ�‰æ�Œæ�Žæ���æ��æ�‘æ�“æ�–æ�•æ�œæ�žæ�Ÿï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������枺柦枮柛��柆桋æ¡�æ µæ «æ æ ¯æ ´æ �æ ˜æ ’æ ”ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ ®ï¿½æ “æ Ÿæ šæ¡‰æ œï¿½æ¢ æ¢‰æ¢¤æ¡¸æ¢‘æ¢Œæ¢Šæ¢’æ¡¼æ¢–ï¿½ï¿½ï¿½æ¡»æ¢€æ¢ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¢¨æ¢¡æ¢‚æ¢‡æ¡æ¢®æ¢«æ¥–梣梬梩桵桱桾梛棳棡椇棌椈楰梴椑棯棆椔棸棽棵棇����������������������������������æ� æ�—æ�ªæ�柿æ�¯æ�°æ�±æ�²æ�³æ�¶æ�µæ��æ�¼æ�¾æ�¿æž‰æž�枕林枙枚果æž��枇枋枌枘枯枲枳枵架枷枸柎枻æŸ�柄æŸ�æŸ�柑柒染柔柘柙柚柜æŸ�æŸžæŸŸæŸ¢æŸ¥æŸ¬æŸ¯æŸ®æŸ°æŸ±æŸ³æŸ´æŸµæž°æž¹æŸ·æ —æ ¡æ ©æ ªæ ¸æ ±æ ¹æ »æ ¼æ ½æ¡€æ¡�桂桃桅框案桌桎æ¡�æ¡‘æ¡“æ¡”ï¿½æ –æ ²æ ³æ¡„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"���������������������������������椋椌椗棑椆椄棜椪棪æ¤�棷棤棶�����������椊�椕�棴棔�����棎棩������椯楑������������楺楈楉椵楬椳楥椴楀楄楶���楌楋����楟楎楱楪楂楴椲楒楻椼���榵�������������������������������������桫桴桹桶桷桿梃æ¢�梅梆æ¢�梓梔梗�梜æ¢�æ¢Ÿæ¢¢æ¢§ï¿½æ¢æ¢¯æ¢±æ¢°æ¢²æ¢³æ¢µæ¡®æ¢�桯棄棉棋æ£�æ£’æ£•æ£–æ£—æ£˜æ£šæ£Ÿæ£ æ££æ£§æ£«æ£¬æ£®æ£°æ¥¦æ£²æ£¹æ£ºï¿½æ£»æ£¼ï¿½æ¤…æ¤�椎椒æ£�棓棱棨æ¤�椓椷椰椹椽椿楅楊楓楔櫛楗楙楘楚楞æ¥�æ¥ æ¦†æ¥¢æ¥£æ¥«æ¥æ¥¯æ¥®æ¥µæ¥·æ¥¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ§‚ï¿½æ¦³æ¦žæ§™æ¦¶æ§‰æ¦ æ¦°æ¦¬æ¦‘æ¦™æ¦�榩榗���������榽槔榹æ¦��榣榯榿槄�����æ§��æ¨�æ§¾æ¨§æ§²æ§®æ¨”æ¨€æ¨†æ§¸ï¿½æ§¤æ¨ æ§¬æ§æ§¢æ¨�ï¿½æ¨˜æ§¶ï¿½æ¨–æ¨‡æ§¼ï¿½ï¿½ï¿½æ§¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ§»ï¿½æ§·æ©€æ¨„æ§´ï¿½ï¿½ï¿½ï¿½ï¿½æ©žï¿½ï¿½ï¿½ï¿½æ©©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¤¸æ¥›æ¥¨æ¥©æ¥¸æ¦”æ¦•æ¦–ï¿½æ¦›æ¦œæ¦¦æ¦§æ¦¨æ¦«æ¦æ¦®æ¦±æ¦´æ¦»æ¦¾æ§��槊構槌æ§�æ§Žæ§�槓榎榤榥榷榼樑槃槧槨�概槳�槽槿æ¨�樂樊樓樕標樛樞樟模樣槥樅æ¨�樗槱樲樸樵樹樽樾橄橈橋æ©�橙橛機橡橧橫樨檸橢樺æ©�檖橘檀檉檄æª�æª”æªœæªŸï¿½æª ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������燊橯橇����橖樴橦橉橨æ©�æ©æ©¶æ©‘橚樻樿橪橤���檛檡檞檇檓檎檕檃檨檑檚橿��æª�檥æª�æ©¾æª—ï¿½æª½æªæ«¡æ«†ï¿½ï¿½æ«…æª¹æª´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ« æ«Œæ«‘æ«™ï¿½æ«‹æ«¥æ«�櫫櫧����櫰櫸櫨櫹����欂櫼��欋欈欉æ¬�欑�����������������������������������檢檣檬檮檯檳檻櫂櫃�櫓櫚櫜æ«�æ«žæ«Ÿæ«±æ«ªæ«¬æ«ºæ«³ï¿½æ¬„æ«»æ¬Šï¿½æ¬’æ¬–æ¬ƒæŸ©æ¬ æ¬¡æ¬£æ¬¬æ¬²æ¬¾æ¬·æ¬¹æ¬ºæ¬½æ¬¿æƒæ†æ‡æ•æ‰æŒæŽæ�æ”æ¬»æ™æ›ï¿½æŸæ æ¡æžæ¢æ£æ¤æ¥æ¦æªæ§æ²æ·æ¸ï¿½æ¹æ»æ¿æ®€æ®‚殃殄殆殉殊æ®�殖殘殕殛殞殤殫殢殪殮殯殲�殳�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¬˜æ¬—æ¬šæ¬™æ¬¥æ¬¨ï¿½æ¬¯æ¬æ¬±æ¬´æ¬¶æ¬³æ¬¸æ¬¼ï¿½æ�ï¿½æ‚æˆæŠæ�æ‹ï¿½ï¿½æœæï¿½æ¾è‚‚殈殑æ®�æ®”æ®—æ®™æ®Ÿæ® æ®¥æ®£æ®¦æ®§æ®æ®°æ®¶ï¿½æ¯ƒæ¯„毈毇毉毊毌æ¯��毚�毞�毦毤毨毣毰毲��毻毼毽毾æ°�氀毿氆氕氘氖氙氚æ°�æ° æ°Ÿæ°¥æ°§æ°¨æ°¦æ°ªæ°«ï¿½ï¿½æ°°æ°¬æ°®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ®µæ®·æ®ºæ®¼æ®½æ®¿æ¯€æ¯…æ¯†ï¿½æ¯�毋æ¯�毒毓�比毖毗毘�毛�毧毫毬毯毳氂氅毸毹氄氈æ°��æ°�æ°�æ°‘æ°“æ°¯æ°”æ°›æ°£æ°¤æ°³æµ æ°´ï¿½æ°¸æ°¾æ±�汀求汎汗污汛汜æ±�æ±Ÿæ± ï¿½æ±�汔汕汞汨汪汰汲汴汶�決汾æ²�沂沄沃沈沉沌æ²�æ²�沒沔沖�沙沚沛沆沓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"���������������������������������氶�汃氿�氻���汆�������汌汒æ±�æ±™æ±�汊汋����汥�����æ²�沎�汽汸汫沋æ²�æ²˜æ±±æ±¯æ²‡æ²•æ²œæ±¦æ±³ï¿½æ³§æ²·æ³æ³œæ³’泵��æ³����泀æ³�æ³‡æ²°ï¿½ï¿½ï¿½ï¿½æ³©æ²ºæ³ƒæ³¬æ²¶æ²æ´¢æ´���浂���洬洉æ´�ï¿½ï¿½ï¿½æ´‡æ´ƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ±©æ±æ²…沬沫沮沱河沸油治沼沽沾沿泂泄æ³�æ³…æ³”æ³†æ³‰æ³Šæ³Œæ³“æ³•æ³—æ³šæ³™æ³›æ³ æ³¡æ³¢æ³£æ³¥æ³¨æ³«æ³¯æ³®æ³°æ³±æ³²æ³³ï¿½æ²´æ³�æ³–æ³�洄洊洋洌洎洒洗洛洟洞津洧汧洪洫洮洲洱洳洵洶洸活洼洽派洿æµ�洙洚洹浙浚浣浦浩浪浮浴海浸浹浼涇消涉�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ´¨æ´´æ´æ´©æ´ºæ´‘æ´€æ´����浀�æ´��浻����洖�����涄�æ¶�浽涮�涃涀�����浵����浺浤浶æ´�æµ˜æµ¬æµ¢æµæµ¯æ¶�涊淯浿涆浞浧涗浰浟������������淗涺淕æ·�ï¿½ï¿½æ·‚æ·²ï¿½æ¶«æ¶³æ¹´æ¶¬æ·¢æ·¶æ·”æ¸€æ·ˆæ· ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¶Œæ¶“æ¶”æ¶•ï¿½æ¶˜æµ¡ï¿½æµ¥æ¶‚æ¶…æ¶’æ¶‘æ¶¯æ¶²æ¶µæ¶¸æ¶¼æ¶¿æ·…æ·†æ·‡æ·‹æ·‘æ·–æ·˜æ·™æ·šæ·�淡淤淦淨淪淫淬淮淰深淟混清淹淺添涎涪涴淀淄淒淞�淩淜渙渚減æ¸�æ¸ æ¸¡æ¸£æ¸¤æ¸¥æ¸¦æ¸¬æ¸æ¸¯æ¸°æ¸´æ¸¸æ¸ºæ¸¾æ¹ƒæ¹„湅湊æ¹�湎湖湘湛æ¹�湧湫湮湯湲湱渟渢湑湓湔�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¶¾æ·¥æ·›æ·´æ·Šæ¶½æ·æ·Œæ·�æ·�ï¿½ï¿½æ·‰æ·£æ·“æ·³æ·µæ·¼ï¿½æ¹¸ï¿½ï¿½ï¿½æ¹’ï¿½ï¿½æ¹¡æ¸±æ¸¨æ¹ æ¸¹æ¹Ÿï¿½ï¿½æ¹šï¿½æ¹¦ï¿½ï¿½ï¿½æ¸§ï¿½æ¸¶ï¿½æ¹•æº™ï¿½ï¿½ï¿½æ¹·ï¿½ï¿½æ¹†æ¹‡æ¹‰æ¸¼æ¸½æ¸²æ¹¥æ¹¢æ¸«æ¸¿æ¹�湳渜渳湣湋湀渻渃渮湞湨����湹湤�溎溣�溳����溗æ»��������������������������������������湜�湩æº�準溛溜æº�æºŸæº æº¢æº¤æº¥æº§æº¦æºªæº«æº¯æº±æº²æº¶æº·æººæº¼æº½æ»�滂滃滄滅滋滌滎滑滓滔滕æº�溘滇滘滫滮滯滲�滴滬滸�滾滿æ¼�漂漆æ¼�æº‰æ¼“æ¼”æ¼˜æ¼™æ¼ æ¼¢æ¼£æ¼ªæ¼«æ¼¬æ¼æ¼°æ¼±æ¼²æ¼³æ¼¸æ¼¾æ¼¿ï¿½æ»·æ»¹æ¼ˆæ¼‰æ¼Žæ¼šæ¼¦æ¼©æ¼¯æ¼µæ¼¶æ¼Šæ¼•æ½�潑潔潘潛�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"���������������������������������æº��滊溿溒�滖滈滀溓溔溹滆滒�溞滉溰æ»�æ»�溴溾滜������漞����滵滱���æ¼�ï¿½ï¿½ï¿½ï¿½æ¼Ÿï¿½æ½©ï¿½ï¿½æ¼€æ¼œï¿½ï¿½ï¿½æ¼ºæ»½ï¿½ï¿½æ¼¹æ½»æ»¼æ¼ƒæ¼¥æ¼·æ»»æ¼®æ½Žæ¼§æ¼»æ¼’æ»æ¼¼æ½³æ¼‡æ½ƒæ¼…潽�潗澔澓澅潚澖潶潬潕潲潒æ½�ï¿½æ½£æ½¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ½Ÿæ½¢ï¿½æ½¤æ½¦æ½æ½®æ½°æ½¼ï¿½æ½¸æ½ºæ¾€æ¾„澆澇澈澉澌澎æ½�æ½�æ½žæ½ æ½€æ¿†æ½¯æ½¾æ¾�澂澒溈澡�澣澤澮澳澹激æ¿�ï¿½æ¿ƒæ¾ æ¾¥æ¾¦æ¾§æ¾¨æ¾°æ¾´æ¾±æ¿‡æ¾¶æ¾¼æ¿˜æ¿”æ¿•æ¿ˆæ¿Šæ¿›æ¿Ÿæ¿ æ¿¡æ¿¤æ¿«æ¿¬æ¿®æ¿¯æ¿°æ¿±ç€‰æ¿©æ¿žæ¿ºæ¿¼æ¿¾ç€†ç€�瀑ç€�瀕ç� 瀚瀛ç€�ç€Ÿç€ ç€¨ç€˜ç€¡ç€£ç€¼ç€‹ç€��\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������æ¾�ï¿½æ¾‹ï¿½æ½ªæ½“æ¾•ï¿½ï¿½æ¾—ï¿½ï¿½ï¿½ï¿½æ½§ï¿½ï¿½ï¿½ï¿½æ¾æ¿‹æ¿Žæ¿„澽澞濂瀄濌澩澬æ¿�澢澫æ¿�æ¾²æ¾¿æ¾ºæ¾ªæ¾¯ï¿½æ¿¨ï¿½ï¿½ï¿½ï¿½æ¿·ï¿½æ¿¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¿²ï¿½ï¿½ï¿½ï¿½æ¿´æ¿œæ¿æ¿£æ¿§æ¿¦ï¿½ç€€æ¿»ï¿½ï¿½ï¿½ç€Šï¿½ï¿½ï¿½ç€‡ç€Œç€…瀔瀎濿�瀙瀖��瀫瀢瀩�瀤瀗����������������������������������瀧瀦�瀲瀾瀰瀵瀹瀺ç�Œç�ƒç�‰ï¿½ç�‘ç�˜ç��ç�£ç�©ç�žç�¤ç‚¸ç�«ç�°ç�¶ç�¸ç�ºç�¼ç�½ï¿½ç‚Šç‚Žç‚’炕炙炘炤炫炬ç‚炮炯炰炱炳炷��烈烋çƒ���烘烜çƒ�ï¿½çƒ¹çƒºçƒ½ç„Œç„™ç„šç„œç„¡ç„¦ç„°ç„¶ç„žç„ ï¿½ï¿½ç…‡ç…‰ï¿½ç…Œç…Žç…®ç…’ç†™ç…–ç…œç…žç…¢ç…¤ç…¥ç…¦ç…§ç…©ç…¨ï¿½ç…¬ç…½ç†€ç†„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������瀯瀷瀴瀱ç�‚瀸瀿ç�€ç€³ï¿½ç€»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�…ç�„ç�Šç�ˆï¿½ç�†ï¿½ï¿½ç�—��ç�’ç�›ï¿½ï¿½ï¿½ï¿½ç�šç�¡ç�Ÿç�¦ç�¥ç�¨ç�ªï¿½ï¿½ç�±ï¿½ç�´ï¿½ï¿½ï¿½ç‚”炅�������炑���炓炖炃���炄炆炟炾���炡���炩�炵炴�烅�烚�烞�烎烒����������������������������������熅熇熊ç†�ç†’ç†›ç†Ÿç†”ç†¨ç†¬ç†¯ç†±ç† ç†²ç†¸ï¿½ç†¹ç†¾ç‡€ç‡‚ç‡�ç‡–ç‡™ç‡ƒç‡„ç‡ˆç‡Žç‡’ç‡”ç‡•ç‡Ÿç‡ ç‡¥ç‡¦ç‡§ç‡¬ç‡ç‡»ç‡®ç‡¹ç‡¼ç‡¿ç‡¾çˆ†çˆ‡çˆ�爓çˆ�爛爚çˆ�爟焮焯�爨烤爪çˆï¿½çˆ¬çˆ°ç‚ºçˆµï¿½çˆ¶çˆ¹çˆºçˆ¸çˆ»çˆ½çˆ¾ï¿½çˆ¿ï¿½ç‰‚ç‰�牆�片版牋牌牒�牖牘牓牙�牛ç‰�牟牡�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çƒ‡çƒ¡ï¿½ï¿½ï¿½çƒ¢çƒ—çƒ ï¿½ï¿½çƒ��烓烑缹烊烙����烶��烳焆�焋��焂烼烸��焀�烿����焉焊ç„�çƒ·ç„—çƒ´çƒ¯çƒ°ï¿½ç„„ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç„±ç„£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç„Ÿï¿½ç„¢ï¿½ï¿½ï¿½ï¿½ç… ç…�ç…���煓��煋����������������������������������牢牣牧牴物牮牯牲牶牷特牽牿犀�犉çŠ�犒犖犢犧犨牳犬犯犴狀狂狃狄ç‹�狎ç‹�ç‹—ç‹™ç‹¡ï¿½ç‹ ç‹©ç‹´ç‹¸ç‹¹ç‹¼ç‹½ç‹»ç‹ºç‹·çŒ‹çŒ�猖猗猙猛猜çŒ�猞猊猘猢猥猩��猴猶猷�猱猺猻猾猿ç�ƒç�„ç�…ç��ç��ç�’ç�—ç�˜ç�§ç�¨ç�ªç�¬ç� ç�®ç�²ç�¯ç�³ç�·ç�µç�¸ç�ºç�»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"���������������������������������煘���煪煄���煲��煸���煚ç…�煃煟煔煙煆煣ç†�熉熂煻��爃������熆�����熡��熥��熧�������熼ç†�熪熳熤熞熜熰熚�����燅熿燉燜燘ç‡�燋ç‡���燇�燚���������熽����������������������������������çŽ�ç�°çŽ€çŽ„çŽ‡çŽ…çŽˆï¿½çŽ‰çŽ‹çŽŽçŽ•çŽ”çŽ–çŽŸçŽ çŽ¢çŽ¦çŽ¨çŽ©çŽ«çŽ²çŽ³çŽ·ç�‚ç�‡ç�ˆï¿½çŽ»ç�€ç�Šç��ç�Œç޼ç�žç�“ç� ç�™ç�–ç�¥ç�£ç�©ç�ªç�ç�§ç�®ç�½ç�¾ç�ƒç�…ç�†ç�‡ç�‰ç�¶ï¿½ç�Šï¿½ç�–ç�šç�›ç�¢ç�¤ç�¥ç�¦ç�¨ç�ªç�ç�®ç�¯ç�³ç�´ç�¶ç�µç�«ç�¬çޤç�²ç‘‹ç‘•瑙瑚瑛瑜瑞瑟�瑀ç‘��瑑瑗瑣瑤瑩�\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"������������������������������������燨�����燢�燤燱���燡燴��燸燽������çˆ����爌爊爂���������爔����爙��爞���爢�爣��爩������牄牉��ç‰�ç‰šç‰žç‰ ç‰ªç‰¬ç‰°ç‰¸ï¿½ç‰¼ç‰¾ç‰»ï¿½çŠ�犄犈犆犅��犌犑����������������������������������瑪瑰瑲�瑯瑱瑳�璀璃璋瑽瑾ç’�璆�璈璡璇ç’�ç’œç’£ç’˜ç’žç’Ÿç’ ç’§ç’¨ç’¯ç’°ç’ªç’«ç’½ç’²ç’¸ç’µç“Šç“�ç“”ç“›ç’¿ç“šï¿½ç“€ç“˜ç’¥ç“œç“žç“ ç“¢ç“£ç“¤ï¿½ç“¦ç“®ç“´ç“¶ç“·ç“»ç”ƒç”„ç”‡ç“¿ç”Œç”��甑甓甕甗甔甖瓩甘甚甜��生甡產甥甦�用甪甫甬甯�田由甲申�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"���������������������������������çŠ�犎犕犓犗���犘犚犛��çŠ�犞犥犦犤犣犡�犩犪�犮犰犵�犺狅犿犽狆�狖狋狘狉狜狒狔狚狌狑狊狤狨狫�狟狪狦狣猀狾狶狳���猌�猓猇猑猒猈狿çŒ�猣猵猰猳猧猲çŒçŒ¦ï¿½ï¿½ï¿½ï¿½ï¿½çŒ¼ç�‚ç�€ç�Šï¿½ï¿½ç�Žç�‘ç�Œï¿½ï¿½ç�žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç”·ç”¸ç”½ç”¾ç•€ç•‹ç•Œç•Žç•�町�甿畇畔畚畛畜ç•�留畟畢畤略畦番畫畬畯異�畷畹畽當畸畿疆疇疊�疋�ç–�ç–�疑�疒疔�疕疚ç–�疢疣疤疥疫疧疲疳�疵疸疹疼疽疾疿病症痂痊痌ç—�痒痔痕痗痘痛痞痣痡痢痯痰痲痴痺痼痾痿瘀ç˜��\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"���������������������������������ç�Ÿç��ç�›ç�¡ç�¢ç�©ç�¦ç�¥ç�«ï¿½ç�¶ç�½ç�¼ç�¾ç�¿çŽ‚çŽƒçŽ†ï¿½ï¿½çŽ’ï¿½çŽ—çŽ“ï¿½ï¿½çŽ¥ï¿½çŽ¬ï¿½çŽ¡çŽï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�†ï¿½çŽ¹ï¿½çŽ´ç�ƒç�‹ï¿½ï¿½ï¿½ï¿½ï¿½çŽ¿çŽ¸çŽ¾çŽ¶ç�…�ç�›ç�”�ç�šï¿½ï¿½ï¿½ç�¨ï¿½ç�«ç�’����ç�œç�˜ï¿½ç���ç�¸ç�µç�„ç��ç�€ç���ç�‹ï¿½ç�¼ï¿½ï¿½ç�¿ç�ºç�ˆï¿½ç�´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç˜‰ç˜‹ç˜�ç˜�ç˜�ç˜�ç˜“ç˜•ç˜–ç˜žç˜Ÿç˜ ç˜¡ç˜¢ç˜¤ç˜¥ç˜¦ç˜§ï¿½ç˜¨ç˜°ç˜³ç˜´ç˜µï¿½ç˜¼ç™‚ç™ƒç™†ç™‡ç™‰ç™–ç˜ºï¿½ç™˜ç™™ç™œç™¤ç™¡ç™¢ç™¥ï¿½ç™ï¿½ç™©ç™¬ç™®ï¿½ç™°ç™±ç™²ç–™ç™¶ç™¸ç™»ç™¼ï¿½ç™½ç™¾çš‚的皆皇皈�皎皓皖皙皜皚皤�皦çšçšªçš«ï¿½çš®çš´ï¿½çš¸çšºçš½ï¿½çš¿ç›‚盃盅盆盈益�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"������������������������������������������������瑎ç� �������ç�©ç�ºç�°ç�¡ç�±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç‘„瑊ç�¿ç‘’�瑂瑔�ç‘��ç‘������瑆��������瑹瑢瑵�����ç‘������瑮瑧����������瑼璉璊璅�������������������������������������ç›�盎盒盔盛盜ç›�盞盟�盡監盤盥盧盦ç›ç›©ç›ªç›¬ï¿½ç›®ç›²ç›´ç›¸ç›¼ç›¾çœ�çœ„çœ‡çœˆçœ‰çœŠçœ‹ç›»ç›°ç›±çœšçœ›çœŸçœ çœ¢çœ¥ï¿½çœ©çœ™çœ¯çœµçœ´çœ¶çœ·çœ¸çœºçœ¼çœ¾ï¿½çœ¹ç�¨ç�‡ç�†ç�Šç��ç�šç�›ç�œç�žç�ªç�¡ç�¢ç�£ç�¦ç�«ç� ç�Ÿç�¥ç�¹ç�¿çž€ï¿½ç�¯çž‹çž�çžŽçž‘çžžçž çžªçž¥çž§çž¬çž³ï¿½çžï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������瑿������璕�璚璗����������ç’���璱璩璦ç“������璻�瓋璺瓅����������瓖瓗����ç“�瓟瓡瓥瓨瓬瓵�瓾瓽甀甂�甈甋ç”�ç”’ç”��ç”�����甩ç”甮甹���畈���畣������������������������������������瞰瞶瞻瞽瞿矇çŸ�矓矗矙瞢矚çœçŸ›çŸœçŸžï¿½çŸ¢çŸ£çŸ¥çŸ§çŸ©çŸçŸ®çŸ°çŸ¯çŸ±ï¿½çŸ³ï¿½çŸ¼ç †çŸ»ç ‚ç ‰ç Œç �ç ‘ç ’ç ç ¢ç £ç ¥æ–«ç ¦ç ´ç ²ç ç §ç ®ç °ç¡ƒç ”ç¡Žç¡œç¡�硤硨硫硬ç¡ç¡¯ç¡®ç¢†ç¢Œç¢Žç¡¼ç¢—�碇碔碑碓硾碡碪碞ç¢ç¢Ÿç¢£ç¢§ç¢©ç¢¬ï¿½ç¢°ç¢ºç¢¼ç¢¾ç£�磅磊�磋ç£��\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������畾�疀��疌疘疶疰ç—�疻痄痀ç—�ç—Žç—�ç—‹ç—‘ç—¦ç—�ç—Ÿç—¤ç— ç—™ç—§ç—šï¿½ç—µç—½ç˜ƒç—±ç—·ç—¹ç—¸ç—»ç˜‘ç˜Šç˜ˆç˜Œç˜™ç˜œç˜£ç˜©ï¿½ç˜¯ç˜ï¿½ç˜½ç˜²ç˜¸ç™Œç™ˆï¿½ç™’ç™�ç™“ç™ ç™Ÿç™ªï¿½ç™µç™¹ç™¿çš���皊皋çš���皒���çš�皞皛皯皰皵皻皾盄�盉�����������������������������������磔磕磉磑磛磟磚磧磨磬磯磲磺磽ç¤�磷磻礎磈礙礬礧磴�礦礪礫礱��示礽社祀ç¥�祅祇祈祉礿祕祊ç¥�ç¥�祓祔祖祗祚祛祜ç¥�ç¥žç¥Ÿç¥ ç¥«ç¥²ç¥¥ç¥§ç¥¨ç¥ï¿½ç¥¼ç¥ºç¥¿ï¿½ç¦�禋ç¦�禎ç¦�ç¦˜ç¦Šç¦”ç¦–ç¦•ç¦¡ï¿½ç¦¦ç¦ ç¦«ç¦§ç¦ªç¦¨ç¦®ç¦°ç¦±ç¦³ç¦´ï¿½ç¦¸ç¦¹ç¦ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"���������������������������������盓�����盚��������盯盵盳�眃眅盹�������çœ�眧çœ�眓眒眣眨眕眑眲眳眽���眱��ç�„ç�…ç�Žç�‹ç�Œï¿½ï¿½ç��ç�™ï¿½ï¿½ï¿½ç�•ç�’ç�¬ç�–ç�©ç�§ç�”çž�ç�¼çž…çž‚ç�®ï¿½çž„ç�½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çž‰çž‡ï¿½çž�瞌瞟瞙瞚çž�瞡瞜瞛����������������������������������离禽�禾禿秀ç§�秈秉�秋ç§�ç§‘ç§•ç§’ï¿½ç§˜ç§ªç§Ÿç§ ï¿½ç§¤ç§¦ç§§ç§©ç§«ç§ç§¬ç§·ç§¸ç§»ç¨€ç¨‚稅稈程稌ç¨�ç¨Šç¨”ç¨—ç¨™ç¨šç¨›ç¨œç¨Ÿç¨ ï¿½ç¨¹ç¨®ç¨±ç¨·ç¨»ç¨¼ç¨½ç¨¿ç©€ç©„ç©†ï¿½ç©‹ç©Œç©�ç©Žç©—ç©œç©¡ç©Ÿç©¢ç© ç©¨ç©©ç©«ç©ç©°ï¿½ç©´ç©µç©¶ç©¸ç©¹çª�空�穿窀窄窅窆窈窋窊窒窕�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"���������������������������������瞕��瞵瞫瞴����矂瞼瞺�矉矊�矌矎çŸ�çŸ�çŸ”çŸ•çŸ˜ï¿½ï¿½çŸ ï¿½ï¿½ï¿½çŸ¬ï¿½çŸ²ï¿½ï¿½çŸ¸ï¿½çŸ¹çŸ½ï¿½ï¿½çŸºçŸ·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç …ç �ç �ç Žï¿½ç ƒï¿½ç “ç ±ç ³ï¿½ï¿½ç ·ç ¬ç µç ¯ç Ÿç ¨ç ¸ç �ç ¡ï¿½ç «ï¿½ï¿½ï¿½ï¿½ç¡�������������硅硈硉ç¡�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çª–çªžçª—çª˜çªŸçª çª¨çª©çªªçª¬çª®ï¿½çª³çªµçª¶çª¸çª£çªºçª¾ï¿½ç«�ç«„ç«…ç«‡ï¿½ç«Šï¿½ç«‹ç«‘ç«™ï¿½ï¿½ç«Ÿç« ç«£ç«¥ç«¦ï¿½ç«ç«¯ç«¶ï¿½ç«¹ç«ºç«½ç«¿ç¬„笈笊ç¬�ç¬‘ç¬™ç¬›ç¬žç¬¤ç¬ ç¬¥ç¬¦ç¬¨ï¿½ç¬ªç¬«ç¬¬ç¬®ç¬†ç¬Žç¬±ç¬³ç…ç†ç‡ç‰çŠç‹çŒç�çŽç�ç�ç‘ç’�ç”ç–ç ç¤ç¥ç¦ç§ç©ç®ç²ç´çµï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¡Šç¡Œç¡¢ï¿½ç¡ ç¡¥ç¡±ç¡ªç¡°ç¡©ï¿½ï¿½ç¢�碚碄碕碅碘碉���硻碖��硹�硿碙���碥�碳碲碴碨碫碤�碢����ç£�碻ç£�ç£Œç£Žï¿½ç£ƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç£ ç£¡ï¿½ï¿½ï¿½ç£ç£�磩磥磪磞磣磳礂磼��磹�礄�礅�������礌礓礔礉ç¤������������������������������������ç±ç®‹ç®Žç®‚ç®�箇箔箕算箛ç®�ç® ç®¡ç®�ç®���箘箜箊箬ç®ç®¯ç®±ç®´ç®¸ç®¾ç¯€ç¯�範篆篇築篋篘篔篙篚ç¯�ç¯ ç¯¡ç¯¤ç°‘ç¯§ç¯¨ç¯©ç¯¦ç¯ªç¯²ç¯³ï¿½ç¯´ç¯·ç°€ç°†ç°‡ç°‹ç°�ç°Œç°�ç¯Œç¯¾ç°ƒï¿½ç°œç°Ÿç°žç° ç°¡ç°£ç°¥ç°¦ç°§ç°¨ç°ªç°«ç°·ç°¸ï¿½ç°»ç°½ç°¾ç°¿ï¿½ç±ƒç±Šç±Œç±��ç±�籔籓籀�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"���������������������������������礛礜�礞�礥礣礨礩��礯��ç¤ç¤µï¿½ï¿½ç¤¸ç¤¹ï¿½ç¥‚��祄�祌祋��祒祑��祤���祩祪祣祡�����祴祳禂祹��������禓禗ç¦�����禈�禒�禛�禚禜�禤�ç¦ç¦¬ï¿½ï¿½ç¦²ï¿½ï¿½ï¿½ç¦·ç¦¶æ¶ï¿½ç§…��ç§�ç§–ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç±™ç±šç±›ç±œç±Ÿç± ç±¤ç±¥ï¿½ç±§ç±©ç±«ç±®ç±¬ç±¯ç±²ç¯°ç±³ï¿½ç±¹ç²‰ç²’ç²•ç²—ç²˜ç²Ÿç²¢ç²µç²¥ï¿½ï¿½ç²±ç²²ç²¹ç²³ç²ºç²¼ç²¾ç³ˆç³Šï¿½ç³•ï¿½ç³–ç³—ç³œç³�ç³žç³Ÿç³ ï¿½ç³™ç³§ï¿½ç³¯ç³²ç³´ï¿½ç³±ç³¶ç³Žç³¸ç³»ç³¾ç´€ç´‚ç´„ç´…ç´†ç´‡ç´ˆç´‰ç´Šç´‹ç´µç´–ç´�ç´�ç´žç´½ç´�ç´�ç´“ç´”ç´—ç´˜ç´™ç´šç´›ç´œç´ ç´¡ç´¢ç´«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"���������������������������������秎ç§�秮秜��秣��秺秶�稃���稄���ç¨�稘稞稒�稑�稦稓���稫穊稰稯������穇穔�穈穘穚穛����穧��穮穬�穱����穾�窉窌��çª�窔çª���窙���窢窫窴窲窯�窱窷竀窿���������������������������������������紩紬紮累細紲紳紹紺紼紾紿絀終絃組絆紱絅çµ�çµ�絕絛絜�絞絡絢給絨絪絮絰統絲絳絖絹絺絿ç¶�綈�綆綌ç¶�ç¶�ç¶‘ç¶“ç¶ƒç¶œç¶ ç¶¢ç¶¦ï¿½ç¶¬ç¶ç¶®ç¶°ç¶²ç¶±ï¿½ç¶´ç¶µç¶¸ç¶¹ç¶ºç¶»ç¶½ç·…緌緎綾緇緊緋綣綯緒緘ç·�ç¶¿ç·žç· ç·£ï¿½ç·¦ï¿½ç·¨ç·©ç·¬ç·¯ç·´ç·»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"������������������������������������竘��竤���竫�竮��������竷�����ç¬�笓笅��笉笵笻笴笰笢笘ç¬�ç¬ç¬¯ç¬²ï¿½ç¬šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¬£ç˜ï¿½ï¿½ç€ï¿½ç„çˆï¿½ï¿½ç·çç³ï¿½ç£ï¿½ï¿½ï¿½ï¿½ç¶ç°ç¡ï¿½ï¿½ç®¤ï¿½ï¿½ç®ˆç®‘箖箌箅箙箄�������������������������������������������縕緗緙緡�緲ç¸�緹縈縉縊縋ç¸�縗縛ç¸�縟縣縑ç¹�ç¸žç¸ ç¸¢ç¸«ç¸±ç¸²ç¸³ç¸µç¸¶ç¸·ç¸¹ç¸»ç¸½ç¸¾ç¹„ç¹…ç¹†ç¹‡ç¸ç¸°ç¸´ç¹ˆç¹”繕繙繚ç¹�繞繢繡繒繩繪繫ç¹ï¿½ç¹¯ç¹³ç¹¹è¾®ç¹»ç¹¼çº�纂繽繾纆纇纈纘續çº�纖çº�纊纑纓纔纛纚纜�缶缸缺缾�罃�罄罅�罋罌�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"���������������������������������箷篎�箹�篛篕篥篞篣篹�篜篟篢����簉ç°�篸篽簅篿篻簎簂��簊��篱簩簙ç°ç°�簢������簰��簳簼簹簬��籉籈籅�籇�籗���籣籦���籵籽籺籸��ç²��粄粑粊�粅ç²������粣���������������������������������������ç½�ç½�ç½��网罔罕罘罛ç½�罟罡罣�罩罪ç½ç½®ç½°ç½¨ç½²ç½³ç½«ç½¶ç½µç½·ç½¹ç¾ƒç½½ç½¿ç¾…羆羇羈�羊羌美羑羔羖羜羚ç¾�羞羢群羨義羯羲羵羶羸羹羼羽翀ç¿�ç¿…ç¿Šç¿Œç¿Žç¿’ç¿”ç¿•ç¿›ç¿Ÿç¿ ç¿¡ç¿£ç¿¥ç¿¦ç¿©ç¿«ç¿¬ç¿®ç¿¯ç¿°ç¿³ç¿¹ç¿±ç¿»ç¿¼ç¿½ç¿¾ç¿¿è€€ï¿½è€�考耄者耆�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"���������������������������������粔粨粞��粯������粽粻粿�����糌糅��糒糔�糑糢��糬糪���糰�糷��ç´�紃��紕紑紎紟紒�絊紨���紸紶çµ�絇�������絑絒絔���絩絘絯絣絓絧絫çµï¿½ï¿½çµ½ç¶„��綒���綀綅綎����������������������������������耇耋�而è€�耎è€�耑�耒耔耕耗耘耙耜�耞耡耤耦耨�耰�耳耶�耽耿è�ƒè�†è�Šè�’è�–è�˜è�šè�žè�¯è�°è�²è�³è�µè�¶è�·è�½è�¾ï¿½è�¿è‚„肅肆肇��肉肋肌肓肖肘肚肛è‚�股肢肥�肩肫肯肱育肴肸肺胃胄背胗胔èƒ�胎èƒ�胖胙胚胛èƒ�èƒžï¿½èƒ èƒèƒ¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"���������������������������������絻絼綔綡�綧綷緂綪ç·�ç·€ç¶�緄��綩��緆綖綼綟����������緟緮�線緷緛緪緧縃緺緶緱緰綞���縤ç¸�ï¿½ç¸’ç¸¡ç¸Œç¸“ç¸Žç¸œç¸šç¸–ç¸®ç¸¸ç¸ªç¹‰ç¹€ç¹ƒç¸©ç¸¿ç¸¼ç¹‚é¡ˆç¸ºï¿½ç¸¯ï¿½ï¿½ï¿½ï¿½ç¹œç¹–ç¹£ç¹˜ç¹Ÿç¹‘ç¹ ï¿½ç¹“ï¿½ï¿½ç¹—ç¹¶ç¹µç¹¸ç¹°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èƒ¡èƒ¥èƒ¸èƒ¼èƒ½èƒ¾è„‚ï¿½è„…ï¿½èƒ±è„ˆè„Šï¿½è„˜è„›è„žè„¤è„£æœ˜è„©è„¥è„«è„¬è„¯è„¹è„¾è…†è…Šè…‹è…Žè…�è…‘è…“è…”è…•è…¥è…¦è…´è…«è…®è…¯è…°è…±è…¸è…¹è… è…¿è†€è†‚è†‹è†��腳膈膊膕膚膛膜è†�è† è†©è†°è†³è†ºè†´è†½è†»è†¾è†¿è‡€è‡‚è‡„è‡†è‡‰è‡Šè‡�臘臙臑臚è‡�è‡Ÿè‡ èƒ¤è‡£è‡¥è‡§è‡¨ï¿½è‡ªè‡¬è‡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¹·ç¹ºç¹²ç¹´ï¿½çº€ï¿½ï¿½çº‹çº•çº—ï¿½çº™ï¿½ç¼½ç¼¿ï¿½ç½ˆç½Šï¿½ç½œç½žç½ ç½¦ç½§ç½¬ï¿½ç½»ç½¼ç½ºç½¾ç¾‰ç¾‹ç¾�ï¿½ï¿½ï¿½ç¾’ç¾•ç¾›ç¾ ç¾¡ç¾¥ç¾§ç¾¦ç¾¬ç¾°ç¾ç¾±ï¿½ç¾³ï¿½ç¾·ï¿½ç¾ºç¾»ç¾¿ç¾¾ç¿ƒç¿‚��翋ç¿�ç¿�翑翇ç¿��翗翜�翢���ç¿ç¿ªç¿¨ï¿½ï¿½ç¿´ç¿²è€�耖耟�耪耬耴��耵耷�����������������������������������臲�至致�臺臻�臼臾èˆ�舀舂舄舅與興舉舊舋�舌èˆ�èˆ�舒�舖舛舜舞èˆ�ï¿½èˆŸèˆ èˆ¡èˆªèˆ¬èˆ«ï¿½èˆ·èˆµèˆ¶èˆ¹èˆ¸èˆ²èˆ³èˆ´è‰‡è‰‹è‰„è‰–è‰—è‰Žè‰˜è‰™è‰¤è‰Ÿè‰¨è‰è‰¦è‰«ï¿½è‰®è‰¯è‰±ï¿½è‰²è‰´è‰·ï¿½è‰¸è‰½è‰¾èŠƒèŠ„èŠŠèŠ‹èŠ�芎芑芒芙èŠ�芟芡芣芤芧芨芥芩�芫�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"���������������������������������耾耹��è�‡è�ˆï¿½ï¿½ï¿½ï¿½è�‘è����������è��������è�¬è�±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�¸è�¹ï¿½ï¿½è‚Šè‚�è‚•è‚™è‚�肒肜��è‚�肮肪肣肵��胘胇胑胈胂èƒ�胅胣胜胊胕胉�胳�胺胲胰胴胹胵è„�胻脀�脆è„�脰脙脖è„脟脡脕�脢�����������������������������������芬èŠèŠ®èŠ¯èŠ°èŠ±èŠ³èŠ·èŠ¸èŠ¹èŠ»èŠ¼èŠ½ï¿½èŠ¾è‹‘èŒ†è‹’è‹“è‹”è‹•è‹—è‹™è‹›è‹œè‹žèŒ�苣苡若苦苧苫英苴苹苻�苾茀èŒ�茂范茄茈茅苃�茉茗è�”茜茢茦茨茫èŒèŒ¯èŒ±èŒ²èŒ´èŒµèŒ¶èŒ·èŒ¸èŒ¹è�€è�ƒè�„è�Šè�¸è�‡è�‰è��è��è��è�‘è�’�è�„莛è�³è�·è�»è�¼è�½ï¿½èŽŠèŽŽèŽ’èŽ“èŽ–èŽ˜èŽžï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������腃腌腒è…�腇脽è…���脺���腤腷腜腩腛腢腲朡腞腶腧腺腄������膉膆膃膇è†�膌膣膟膘膞膢����膱膦膮膹膵膫膨膬膲膷����臌臃臅臇è‡�臒è‡�è‡—è‡•ï¿½è‡›è‡žè‡¢è‡¡ï¿½è‡¦è‡©è‡®è‡·è‡¸è‡¿ï¿½ï¿½èˆ‘èˆ•èˆ”ï¿½èˆ¢èˆ¯èˆ¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŽ èŽ¢èŽ§èŽ†èŽ¨èŽ©èŽªèŽ«è�ŸèŽ‰èŽ½è�€è��è�…è�‡è�‰è�Šè�‘�è�–è�”è�˜è� è�œè�©å ‡è�¯è�°è�±è�²è�´è�¶è�¹è�¼è�½è��è�ƒè�†è�Šè�‹è�Œè��è�Žé›ˆè�¡è�Œè�©è��è�‡è�¼è�¬è�±è�µè�¸è�¹è�½è‘†è‘‰è‘�著�葚葛葡董葦葩葫葬è‘葯�葳葵葷葸葺葽蒂葑葹è’��蒔蒙蒜蒡蒞蒟蒨�蒲蒸蒹�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"���������������������������������舺舿舼舽�艉艀艂艅��è‰�艓艒è‰�艑艕艚艜艛�艣艡�艩艬�艵�艼芀èŠ�èŠ�èŠ…èŠ“èŠ”èŠ è‹€ï¿½è‹‚èŠ¶ï¿½ï¿½ï¿½ï¿½ï¿½èŠšèŠ˜èŠ›èŠžèŠºèŠ´è‹³ï¿½ï¿½ï¿½è‹ªï¿½ï¿½ï¿½ï¿½è‹¯è‹¨èŒºè‹–è‹¬è‹²è‹µèŒŒè‹¶ï¿½è‹ ï¿½è‹ºèŒ¬ï¿½ï¿½è�ŒèŒ³èŒ™èŒ¥è�–茿è��è�‚è�ŽèŒ›èŒªèŒ§è�ˆï¿½ï¿½è�‹èŒžï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è’ºè’¼è’¿è“€è“�蓂蓄蓆蓉蓊蓋蓌è“��蓑蔀è“�蓓�蔌蒯蒱蓧蓫蓬蓮蓰�蓴蔻蓺薌蓼蔆蔇蓿蔂蔑蔒蔓蔕蔗蔚蔞蔟蔡蔣è”�蔥蔦蔔蓽蔽蔬蕺蔾蕃蕉蕊蕎蕕蕖蕘蕙è•�蕞蕡蕢蕨蕩蕪è•薀薯蕆蕈�蕤è–�蕷蕸蕾è–�薢薄薅薇薈薉薊薑薔薖�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"���������������������������������è�¿èŒ¼èŒ–èŒ¤èŒ èŒ©è�…茻èŽ��è�¶èŽ°ï¿½èŽ£èŽ�è�ºèޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽƒèŽŒèŽ����莗莇莦���淽��莋è�¾èŽ¥è��è�£è�¸è�¨è�’è�§è�¤ï¿½è�†è�ˆï¿½è�£èŽ¿è��è�¥è�¿è�‹è�Žè�»èŽšï¿½ï¿½ï¿½ï¿½è�•è�ºè�µè�‰è��è�žè�‚è�³ï¿½ï¿½è�®ï¿½ï¿½ï¿½ï¿½ï¿½è�„����è�¬è�›è�“��������������������������������������薙薛å½è–œè–¦è–¨è–©è–ªè–¤ï¿½è–�薰薳薹薺薽薿藄藇藉藎è—�è—�è—��藕�藚藜è—�藟藤藩藥藪藷藹藺�藻藾藿蘄蘅蘆蘇蘊��蘋蘀蘚蘞蘢蘩è˜ï¿½è™€è˜§è˜¸è˜¿è˜¼ï¿½è™†è˜‘è™�虎è™�虓虔處虛虜虞號虡虢虥虣虧虩�虫虱虯虹虺蚓蚔蚕蚊蚋蚌蚣�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‘®ï¿½ï¿½è‘„è‘ ï¿½è‘‹è�¯è‘‚è�葟葰葎葌葒�蓱�è�¿è‘–è‘¶è’�è’�葥葀蒆葧è�°è‘™è‘´è‘��葞è�·è�ºè�´è‘ƒè�²è‘…è�™ï¿½ï¿½è�«ï¿½ï¿½ï¿½ï¿½è‘‡è�¶è�³è�»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è“…蒗蒤蓎蒬蒮蒫蒴蒪蒚è’�蒧蒻蒢蓇蒛蒩蓖蒘蒶è“�è’ ï¿½ï¿½ï¿½ï¿½è“’ï¿½è’°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èš¤èš§èš©èšªèš¨èš¯èš°èš±èš³èš¶ï¿½è›„è›€è›†è›‡è›‰è›‘è›‹è›™è››è›Ÿè›£è›¤è›©è›ºè›è›¾ï¿½èœ‚蜃蜇蜈蜋蜓蛸蛹蛻蜀蜉èœ�蜊蜎蜘蜚蜜蜡蜣蜩蜥蜺è�ƒèœ´èœžè�€èž‚蜢蜮è�Žè�“è�•è�—è�˜è�™è��è�Ÿè� è��è�¥è�¦è�®ï¿½è�¶èœ·ï¿½èœ»è�Œè�¨è�¡è�£è�¤è�´è�¸èž�螓螞螘螟螢螣�螃螄螫��\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������蔤è”�蔩蔎蔉è”�蔊蔧蔜蓻蔫蔈蔪��������蔋蔙�����蓲蓷蓳蓪蓩蔖蓾蔨è”�è”®è“¶è”±è“¨è•µè“¯è“¹è”˜è” è”°è•…è•«è•�è•“è•€è•�è•„è•‡è•£è•›è•±è•®ï¿½ï¿½ï¿½ï¿½è•§è• è•¦ï¿½ï¿½è•¬ï¿½ï¿½è•”ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è•¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èžºèž»èž½èž¿èŸ„èŸŠèž¬èžèž®èž¯èž³èŸ€èŸ†èŸˆèŸ‹èŸ£èŸªèŸ’ï¿½èŸ èŸ¬èŸ²èŸèŸ¹èŸ»èŸ¾èŸ³èŸ¶è ƒèŸ¿è �è …è †è �è •è –è ›è œè Ÿè ¡è ¢è £è ¨è ¹è ±è ²è ¶è »ï¿½è¡€ï¿½è¡�衄����衊�行è¡�衎術衒衕衖街衙衚è¡�衛衡衢�衣表衫衰衲衷�衵衽衾衿è¢�袈袋è¢�袒袖袗�袚�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è–Ÿè–ƒè–§è–•è– è–‹è–£è•»è–šè–žè•¼è–¡è•—è–Žè–†è–�è–�薂薵藋藈藅薱薶藒蘤���薸薾薷��������薴藆藀藃藂���藫藱è—藙藡藨�藗藬藸藘藣藑�藯藞���������藰è˜�蘛藲藶蘉蘌��藽�����蘘蘪蘦蘟����������������������������������袞�袤袪被è¡ï¿½ï¿½è¢·è¢±è£�裂裊裎裀�裒裔裕裘裙補è£�裟褎裨裯裰裱裳裴裸裼裹製裾複褊褌褉褂褪è¤�褓褘褙褡褚褥褧褫褰褲褦褵褶褻�襄襋è¥��襖襚襌襜襞襛è¥�è¥ è¥Ÿè¥¦è¥ªè¥�襤褸襫è¥è¥¯è¥´è¥²è¥¼è¥¶è£Œè¥¾è¥¿è¦�覃覆�覈��見�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è˜£è˜œè˜™è˜®è˜¡è˜ è˜¥ï¿½ï¿½ï¿½è˜—è˜¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è˜´è˜µï¿½è˜³è˜¬ï¿½ï¿½è˜²ï¿½è˜ºè˜¹è˜±è˜»è˜¾è™ƒè™‡è™ˆè™Œè™‹è™’è™™è™–ï¿½è™¤è™ªè™°è™è™®ï¿½è™³ï¿½ï¿½è™»è™·è™´èš¢èš–èš�蚑蚞蚜蚇蚗蚆蚚蚅蚥�èš�èš�蚎蚙蚡��蚵�蛃蚾��蚽蚿蚷蛂è›�蛅蚺蛈蚹蚸蛌蚴蚻蚼蛔����������������������������������è¦�覓視覘覜覡覦�親覬覯覲覷�覺覽覿�觀��角觔觖觚è§�觕解觥觩觫è§è§±è§³è§´è§¸è§¶è§¼è§¿ï¿½è¨€è¨‚訃訇計訊討è¨�訓訕訖託記訌è¨�訑訒訛è¨�訟訣訥訪許è¨ï¿½è¨¢è¨´è¨¶è¨ºè¨¼è¨»è¨¾è©�詆詈�詎è©�è©’è©”è©•è©–è©˜è©›è©žè© è©¡è©¢è©£ï¿½è©¦è©©è©«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"���������������������������������蛘蛢蛦蛓蛚蛪è›�è›�蛨蛫蛜蛬蛗蜄蛷蜌蛖蛵è��蜆èœ�蛶蜅�触�蜳蜿蜨è�«èœ™èœ›èœ¬è��蜾è�†èœ 蜲��蜪èœèœ¼èœ’蜱蜵è�‚蜦蜧蜸蜤蜰蜑�è�»è�–è�·èŸ¡è�³è�”è�›è�’è�šè�‘è�žè�è�ªè�¢ï¿½ï¿½ï¿½è��è�¯è�¬è�ºè�œèž›èž�螗螒螈èž�èž–è�¹èž‡èž…èž�èž‘èž�螔螜螚�螉����������������������������������詬è©è©®è©°è©±è©²è©³è©¼è©¿èª†èª„誅誇詵詹誌èª�ï¿½èª‘èª“èª•èª˜èªšèªžèª èª¡èª£èª¤èª¥èª¦èª¨èªªèª°èª²èª¶èª¹èª¼èª¾èª¿è«‚è«„è«‡è«‰è«‹è«�è«�諒諑論諗�諛è«�è«žè«Ÿè« è«¤è«¦è«§è««è«è«®è«±è«³è«·è«¸è«ºè«µè«¼è«¾è¬€è¬�謂諜諡諴諶謄謅謆謇�謊謎è¬�謔謗謙謚講è¬�ï¿½è¬ è¬��\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èž¶èž¸èŸžï¿½ï¿½èž¾èžªèŸ…èž°èŸ‘èž¹èžµèž¼èŸ‰èŸƒèŸ‚èŸŒèž·ï¿½ï¿½èž´èŸ§èŸ¦èŸ¢èŸ¯èŸ«èŸ¥èŸŸèŸ¤èŸ”èŸœèŸ“èŸ˜ï¿½ï¿½ï¿½ï¿½èŸ—èŸ™èŸ´èŸ¨ï¿½è €èŸºèŸ·è ‰è Œè ‹èŸ¼è ˆï¿½ï¿½ï¿½è ”è ™è �è ‘è —è “è ©è �è è ¤è «è ¬ï¿½è ¦è ªè ¥è °è ®è ³ï¿½è ¸è ·è µè ¼è ¾è ½è ¿è¡ƒè¡ˆè¡‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¡§è¡ªè¡©è¢‚ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¬–è¬¦è¬¨è¬«è¬¬è¬³è¬¹è¬¾è��è‰ï¿½èŽè�è’è”è–è˜è™èšï¿½èœè¦èŸè«è¬è¯è°è´è·è¸è½è®€è¾ï¿½è®Šè®Œè®Žè®‹è®’讖讓讙讚�讜讞讟�谷谿è±���豆豈豋豌豉豇豎è±��豔è±�豕豚è±�象豢豨豪豫豬è±è±³è±µï¿½è±¸è±¹è±ºè²‚貆貅貉貊貌è²�貓貔��è²�貞�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"���������������������������������衶袀衱衹衯袃衴������袉袕袨袢袑袡袟袘袧袙袛袬袌袺裗袹袸袶袼袽袲��袾���裖裋裡è£�裞裛裚���裷裧裲裺裮裶裻è¤��褅褔褋�褗褆褖褑褕褒褞è¤è¤®è¤±è¤¢è¤©è¤£è¤Ÿè¤³è¤¼è¤¾è¥’è¤·è¥‚è¤½ï¿½ï¿½ï¿½ï¿½è¥“è¥†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è² è²¡è²¢è²¤è²§è²¨è²ªè²©è²«è²¬è²¯è²²è²³è²´è²¶è²¸è²·è²ºè²»è²¼è²½è²¿è³€è³�貰賂賃賄賅資賈賊�賑賒賓賕賙賚賜è³�è³žï¿½è³ è³¡è³¢è³£è³¤è³¦è³ªè³¬è³Ÿè³è³´è³µè³®è³ºè³»è³¼è³½è³¾è³¸è´„贅贈贊贇è´�è´�è´�贓贔贖�贗贛贉赤赦赧赫èµèµ¬ï¿½èµ°èµ³èµ´èµ¶èµ·è¶�趄超越趕�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������è¥�襢襗襡襘��襣�襩襮襬襱�襳襹襺�覂覅�����覕覛è¦�覟覢覤覣è¦è¦®ï¿½è¦¶è§“è§™è§›è§Ÿè§¤è§¡è§ è§¢è§œè§¨ï¿½ï¿½è§°è§¬è§²è§·è§ºè§»è§¾ï¿½è¨„è¨°è¨§è¨¬è¨žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è©�訹詙詀詗詄詅詑��詊���è©�詨��詶訿詷誂詻誃������������������������������������趙趣�趨趯�足趵趾è·�趺趹跂跋跅跌跎è·�è·‘è·•è·–è·šè·›è·�跗跫跟跡跣跨跪跬路跱跳跽踉踊跼è¸�è¸�踔踖è¸�踞踢踣踧踘踡踟踦踰踴踵踶�踽è¹�蹂蹄踱蹀è¹�蹇蹈蹉蹊èº�蹌蹕蹔蹙蹟蹣蹤蹜è¹�è¹ è¹¯è¹²è¹´è¹¶è¹ºè¹¡è¹¢è¹¬è¹èº•èº�躄躅躇躉�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������詴���誫誙誋誒誖èª��諃�誽�諆誸諓諔諕誻諀諅����諘�誺諿����諢諲諰諈諻�謞謘謑謋謢謒謕è¬����謜謓謈謪謧謣謰謵è‡è¬¯è¬¼è¬±è¬¥è¬·ï¿½ï¿½ï¿½è¬½ï¿½è¬¤ï¿½ï¿½è—è�èˆèŠè†è€è“è‹è•è‘è èªè�è¨è§ï¿½è¥è£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èºŠèº‹è¹‹èº�躑躒躓躔躚躡躩躪�蹚身躬�躲軀��躺車軋軌è»�è»�軒軔軛軟軨軫軸軹軷軼軺軾較輅輈載輀輇輊輒輓輔輕輗�輛輜è¼�è¼Ÿè¼¦è¼©è¼ªè¼žè¼ è¼¥ï¿½è¼¯è¼³è¼¸è¼¹è¼»ï¿½è¼®è¼´è¼¶è¼¾è¼¿è½‚è½„è½…è½€è½†è½‡è½•è½‰è½�轎è½�轒轖轘轞轟轡轢轤��\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������è¹è…èºè»ï¿½ï¿½è®„讂讆��è¿ï¿½ï¿½è®…���讔讕讘谹谻谼谽谾�豃豅豊è±���豗豜豟豥豤豦豰豲豱豯豷豶�豻豽è²�貀貄è²�貑貒�貕貙貘貗貚貜�貣�����貵貹��貾�賌賗賧��賥賨��賳賰��賹���贆�����������������������������������辛辜辟�辣�辦辨è¾è¾¯ï¿½è¾°è¾±è¾²ï¿½è¾µè¿‚è¿„è¿…è¿‹è¿�迎近迓返迕迢迤迥迦迨迪迫è¿è¿®è¿°è¿´è¿·è¿¸ï¿½è¿½è¿ºé€€é€�适逃逅逆逋逌é€�é€�é€�逑途逕逖逗這通逛é€�é€žé€Ÿé€ é€¡é€¢é€£é€é€®é€±é€²é€µé€¶é€¸ï¿½é€¼é�‡é��é�‚é�„逾é�Šé�‹é��é�Žé��é��é�‘é�’é�“é�”é�•é�˜ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������贕贙赨赩赮����赲赸��赻�����趀��趑趌趎è¶�è¶�è¶“è¶’ï¿½ï¿½ï¿½ï¿½ï¿½è¶–ï¿½è¶Ÿè¶ è¶œè¶¡ï¿½ï¿½è¶›ï¿½è¶¥è¶§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¶¬è¶ªè¶è¶«è¶®ï¿½ï¿½è¶²è¶´è¶·è¶¼è¶¿è·˜è·“è·�è·‡è·œè·™è·ˆè·†ï¿½è·´è·¤è·°è· è·ºè·®è·�跩跦跢跧跲踂跿è¸�踃踇踆踅����������������������������������é�™é�›é�œé�žé� �é�£é�¢é��é�¨é�©é�é�®é�¯é�²é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¿é‚€é‚�邂還邅邇邃邈邊é‚�é‚�è¿»é‚‘é‚›é‚—é‚™é‚•é‚¢ï¿½é‚£é‚¡é‚¦ï¿½é‚ªé‚ é‚¯é‚±é‚²é‚´é‚³é‚µé‚¶é‚¸é‚°é‚½éƒ�郅郇郊邾郃��郕郛郎郡郢郤郙郜郟部éƒéƒ´éƒµéƒ¯éƒ½éƒ¿é„‚鄒鄄鄔鄉鄗鄖鄙鄘�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è·¾ï¿½ï¿½ï¿½è¸€ï¿½è¸šï¿½è¸œè¸ è¸«è¸¥è¸¤è¸®è¸•è¸›è¸‘è¸™è¸©è¸’è¸“ï¿½ï¿½è¸³è¸¾è¸¸è¸¹è¹…è¸¼ï¿½è¹“ï¿½è¹Žè¹�è¹—è¹–è¹žè¹¥è¹§è¹›è¹©è¹¦ï¿½ï¿½è¹¼è¹¸è¹³è¹ªè¹»èº†èºˆèº‚èºŽèº–èº—èº˜èºžèºŸèº èº�躥躤躣�躦躨��������躽軂����軉軑軓軘軞è»�è»œï¿½ï¿½è» ï¿½è»´è»©è»¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é„¢é„žé„ é„œé„§é„«é„鄰鄱鄴鄶鄲鄹鄿鄺酇酃酆酈éƒ�酉酊酋酌é…�酎酒酖酗酢酥酣酤酡酩酪酬酲酵酷酸酴酹酺醃醅醆醇醉醊醋é†�é†�醒醓醜醞醡醢�醪醫醬醮醯醴醲醵醺醽é†�醼釀é‡�釂�醱釆采釋釉里é‡�野é‡�é‡�鋅金釗釘釜é‡�釣釧�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"���������������������������������軻軦軮軥軵軧軶軱軬�輆軿è¼�輂輋è¼�è¼�輑����輤輘輚輣輖輬輵輲輷���轃���轈轑轔è½�轓轗轚轙轛è½�è½ è½£ï¿½ï¿½è¾´ï¿½ï¿½ï¿½è¾¿è¿‰è¿†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¿’è¿–ï¿½ï¿½ï¿½ï¿½è¿£ï¿½ï¿½è¿ è¿¡ï¿½è¿¼è¿¾è¿µè¿¿é€„é€¤é€œï¿½ï¿½é€´é€¯ï¿½ï¿½ï¿½ï¿½é€¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é‡¬é‡¦é‡é‡µéˆ‡éˆ€éˆ��éˆ�鈒鈔鈕鈞鈴鈸鈺�鈿鉅鉉é‰�鉗鉛鉞�鉤鉋鉶鉸鉦銀銃銅銎éŠ�銑銓銖銘銛銜銚銳銶銷�銼鋈鋌é‹�鋒鋟鋘鋤鋩鋪鋙銲鋸鋼錄éŒ�éŒ•éŒ˜éŒ™éŒšéŒ éŒ¢éŒ¦éŒ¨éŒ«éŒ®éŒ¯éŒžéŒ¡é�Šé�‹é�›é�ªï¿½é�¬é�µé�¼é�¾é�‡é��é�”é� é�¤é�¥é�é�°éŽ”éŽ‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������逽����������é�«ï¿½é�³é�°é‚†ï¿½é�¾ï¿½ï¿½ï¿½é‚‹é‚�é‚˜é‚”ï¿½é‚Ÿé‚¥é‚žé‚§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éƒ±é‚¿ï¿½ï¿½ï¿½éƒˆéƒ–éƒ ï¿½éƒšéƒ£éƒ¥éƒ˜éƒ—ï¿½ï¿½ï¿½éƒªéƒ°éƒ²éƒ³éƒ”éƒ«ï¿½é„†é„¬éƒ¾ï¿½é„ƒéƒºéƒ¼é„ˆéƒ¹éƒ»é„�鄀鄇鄅�é„�é„�é„�鄑鄋鄎鄣鄟é„�����������������������������������鎖鎗鎚鎛鎞鎡鎌鎧鎬鎰鎮鎊é�ƒé�ˆé�‘é�–é�—é�˜é�œé�¡é��é�¢é�žé�¤é�Ÿé��é�¦é�¨é�ƒé�µé�“é�¹é�˜é�™é�«é�®é�²é�µé�¶é�¸é�©é�ºé�»é‘„é‘Šé‘Œé‘‘é‘’é‘¤é‘•ï¿½é‘ é‘¢é‘£é‘ªé‘°é‘¯é‘²é‘µé‘·é‘±é‘¼é‘½é‘¾é‘¿éŒ³é•·ï¿½é–€é–‚é–ƒé–†é–‰é–ˆé–‹é–Žé–�閑閒間閔閘閟閡閤閣閥閨閩閫閬é–閱閶�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"���������������������������������鄚鄤鄡鄛鄨�鄯鄩鄪鄦鄮�鄳鄵鄸�鄻鄾酀é…�é……é…„é…�é…�ï¿½é…˜é…šé…“ï¿½ï¿½ï¿½ï¿½é… ï¿½é…Ÿï¿½é…®é…¯ï¿½é…³ï¿½ï¿½é†€ï¿½ï¿½é†‘ï¿½é†£é†šé†›é†™é†Ÿï¿½ï¿½ï¿½é†�醨醥醧�醰é†ï¿½é†·é†³ï¿½é†¹ï¿½é†¾é‡ƒé‡…釔釕釙釢������釴釱釳釩釸釤釹釫釷釮�釪�����������������������������������閹閻閼閽閾闃闇闈闉闊闋闌é—�é—�ï¿½é—“é—”é—•é—–é—’é—œé—šé— é—¡é—žé—¢é—¤é—¥é—†é˜œï¿½é˜žé˜¡é˜¤é˜¨é˜¬é˜®é˜¯é˜±é˜²é˜ªé˜»é˜¼é˜¿é™€é™‚é™„é™‹é™�陌é™�陔陘陛é™�陞陟陡院陣除陪陬陰陲陳陴陵陶陷陸陼陽�éš�隄隅隆隈隉隊隋階隔隕�隗隘隙際障�隤隧�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"���������������������������������釨éˆ�鈌釿鈑釽鈆��鈂����鈗��鈤鈣鈉éˆ�鈊鈥鈃鈚鈦鈄鈜鈅鈖����鉚鈶����鉈鉒鈰鈷鈽é‰�鈳鉥鉊鈹鉆鉑鉀鈾é‰é‰¬é‰ 鉧鉯鉡���鉰鉣鉎鉌�鈲鈱�鉖����é‰�鉔銕�鉾��鉽éŠ�銆����éˆï¿½éŠ™éŠ‚ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš©éšªéš®éš°éš±éš³éš´éš¨éš¶éš¸ï¿½éš¹éš»éš¼é›€é›�雄雅集雇雉雋雌é›�雎雊雒雕嶲雖雘雙雛雜é›�雞離難�雨雩雪雯雰雱雲零雷雹電需�霅霄霈霉霆震éœ�霎éœ�霑霓霖霜霞霢霤霧霰霪�露�霸霹霮霽霥霾é�„é�‚é�†é�ˆé�‰éœ¨é�’é�–é�šé�›é�œï¿½é�žé� �\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éŠ¨éŠ¥é‰¼éŠ¤é‰»é‰ºéŠ éŠ”éŠªéŠ¦éŠ«é‰¹éŠ—é‰¿éŠ£é‹®ï¿½éŠˆéŠ§éŠ‹ï¿½ï¿½ï¿½éŠŒéŠ‡ï¿½é‹‡é‹°é‹—é‹�鋯鋂鋨鋊é‹�鋓鋉���銡��鋆鋕���鋡��鋧�鋎�鋑é‹�é‹ƒé‹„é‹€éŠ»é‹±éŠ¬ï¿½é‹ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éŒ§éŒˆéŒŸéŒ†éŒ�é�ºéŒ¶éŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒéŒŽéŒ�鋋�é�’�����������������������������������é�¡ï¿½é�¢é�¦ï¿½é�¨ï¿½é�©é�³é�´éž…é�¶é�·é�¸éž€ï¿½éž�éž�éž‹éž—éž˜éž™éžžéžšï¿½éž éž¦éž«éž¬éžéž®ï¿½éž¶ï¿½éž¹ï¿½éŸ�韃韆��韋éŸ�韓韌韎éŸ��韔éŸ�韘韙韜韞���éŸï¿½éŸ±ï¿½éŸ³éŸ¶éŸ»éŸ¿éŸºé €ï¿½é �é ‚é ƒé …é ‡é †é ˆé Œé �é �é ‘é ’é ·é “é Šé �é Žé –é —é ˜é žé ¡é ¤ï¿½é ²é ¦ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"������������������������������������鋺錴�������������錉鋿��鋻錔錖錩錪錂錀鋹éŒ��鋾��錥錋��錤�������鋷��錵���é�¹é���é�•�é�±é�™ï¿½ï¿½é�’���é�§ï¿½é�—����鎃鎯é�–é�˜é�œé�¶é�‰é�šé��é�‘éŽ�é�ŒéŽ‚ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¡‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é «é ï¿½é °ï¿½ï¿½é ¸é ¹é »é¡†ï¿½ï¿½é¡Œé¡�é¡��顓願顙顛類顜顢顥�顧顫顯顰顱顴�風é¢é¢¯é¢¶é¢¸é¢¿é¢ºé¢»é¢¼é£„飆飀颽�飛�食�飢飣�飧飩飪飫é£é£²é£¯é£´é£¼é£½é£¾é£¶é¤‚餃餅餈餉養餌é¤�餖餗餒餓餔餕餘餛餚餡餞餤餟餧館餬餮餱餲餳��\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�������������������������������������鎙��é�žï¿½ï¿½ï¿½ï¿½é�Žï¿½ï¿½ï¿½éŽ¤éŽ£ï¿½éŽ•éŽ±éŽŸï¿½éŽˆï¿½ï¿½ï¿½ï¿½ï¿½éŽ¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éŽ‘ï¿½éŽ�鎵鎒鎷鎘éŽ�鎎鎪鎢鎳鎦鎀�����é�„é�•��������é�£é�”����鎥é�®ï¿½ï¿½ï¿½ï¿½é�‡é��é�‚é�šé�¬é�Œé�™éŽ©é�Šé��é�Žï¿½ï¿½ï¿½ï¿½é�§é�€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¤¼é¤½é¥�饅饈饉饋饌饎é¥�饑饒饔饕饗饜饟饞�首馘馗�香馥馨é¦�馡馣�馬é¦é¦®é¦³é¦´é¦±é¦¹é§�駃é§�駑駒駕駘駙駛駋駜é§�駟駪駉駢駬é§é§®é§±ï¿½é§°é§¸é§¿ï¿½é¨�騅騂騃�騑騎騋é¨�é¨–é¨„é¨™é©„é¨ é¨£é¨¤é¨§é¨«é¨°é¨¶é¨µé¨¸é¨·é¨®é¨¾é©€é©�驂驃驅驈��\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"���������������������������������é�½é�–é�‰ï¿½ï¿½ï¿½ï¿½é�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�‘�é�Œï¿½é�ºï¿½ï¿½é�¸ï¿½é�¿ï¿½é�¶ï¿½ï¿½é�‹é�»é� é��é�”é�¾é�•é��é�¨é��é�€é�·é�‡é�Žé�¼ï¿½ï¿½é�¿é�³ï¿½é�±ï¿½ï¿½é�½ï¿½é‘€ï¿½é�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�¬é‘ˆé‘†ï¿½é‘‰é‘…é‘�鑋鑇鑗�é‘����������鑨��鑫鑩��鑮é‘鑸�����������������������������������驊驔é©�驖驕驌驗驒驚�驙驛驟驢驤驥驩驪駗骨�éªéª¯éª±éª°éª·éª¸éª¼ï¿½é«€éª¾é«�髆髑髒體髖髓�高�髟髡�髣髦髧髫é«é«®ï¿½é«³ï¿½é«»é«¹é¬†é¬ˆé¬…鬋é¬�é¬�鬒鬑鬘�鬙鬚鬟鬣鬢鬎鬥鬨鬧鬩�鬮�鬯鬱�鬲�鬵鬷鬻�鬼é�é‚éƒé„éŠé…�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������鑴鑶��钂钀é’����钃�镺镻镼�镽���é–�é–Œï¿½ï¿½ï¿½é–œé–žï¿½ï¿½ï¿½é–®ï¿½ï¿½ï¿½ï¿½ï¿½é–ºé–¿é–µé—€é—…é–·ï¿½é—‘é—›é—Ÿï¿½é—£ï¿½ï¿½é˜¢é˜ é˜°ï¿½ï¿½ï¿½ï¿½é˜¹é˜½é˜ºé™ƒé™�陑陓陊��陎����é™é™«ï¿½ï¿½ï¿½éš‡é™¾éšƒéš€ï¿½ï¿½ï¿½ï¿½é™±éš’隓隑隞�������������������������������������é���éˆé�éŽé‘é”�é˜ï¿½éšé¨é¯é®€é´ï¿½é®’é®�鮓鮞鮪鮆鮑鯗鮮鮫鯀鯉é¯�鯊鯖鯢鯧鯫鯤鯨鯽��鰈é°���鰓鰥鰜鰣é°é°²é°·é°»é±„é±‰é±”é±˜é±Ÿé± é±£é±—é±Žé±–é±¨é±·é±¸éºé³¥é³¦é³©é³§é³²é³³é³´é³¶é´„鴟鴆鴇鴈鴉鴃�鴛鴞鴣鴦鴨鴒é´�鴻鴿鴽鵀鵂�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������隡隢���隬����隿雂雃�雓雔��雗雚巂雟�雡�雥���雸雺雽雿��霂�������霙��霟霣�霬霦霩霫霯���霺霵霿�é�ƒé�‡ï¿½é�‹ï¿½ï¿½ï¿½é�ªé�¬é�°é�®ï¿½é�²é�½é�ºé�¾éžƒé�¼éž‚é�»éž„éž�é�¿ï¿½éžŠéžŽéžˆéž”鞡鞜�����������������������������������鵜éµ�éµ‘éµ éµ“éµ¡éµ’éµªéµ°éµ²é¶‰éµ©éµ¬ï¿½ï¿½é¶–é¶˜é¶šé¶©é¶¯é¶±é¶´é¶µé¶ºé¶¿é¶Šé·‡é¶¬é¶¹é¶»é¶¼é·�鷂�鷃鷗鷓鷕鷖鷙鷥鷩鷲鷹鷺鷦鷯鷴鷸鸇鸑鷽鸕鸚鸞鷟鸛é¸��鹵鹹鹼鹽鹺�鹿麂�麀麃麇麈麋麌�麑麒麓�麗麚麛éº��麟�麤�麥��麰麴��\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������鞨鞣鞤鞪鞳鞷鞻鞿韄韅韇韉éŸ�éŸ•ï¿½éŸ—éŸŸéŸ¡éŸ£éŸ¥éŸ°ï¿½ï¿½ï¿½éŸ¹éŸ½éŸ¾ï¿½ï¿½é „ï¿½ï¿½ï¿½ï¿½é §é ›é ©é �é ¨é é œé µé ¯ï¿½ï¿½é¡ƒé¡�顄顊�顅é¡�顑顒顎é¡�é¡—é¡ ï¿½é¡£é¡Ÿé¡¤é¡ªé¡©ï¿½ï¿½é¡²é¡³é¢¬ï¿½é¢®é¢±é¢²é¢³ï¿½ï¿½ï¿½é¢¾é£�飂���飉飋飌���飥��飹����������������������������������麻麼麾�黃黈黌�é»�é»�黎é»��黑黔默黛黜點é»�é» é»¥é»§é»¨é»¯é»´é»®é»¶é»·ï¿½é»¹é»»é»¼ï¿½é»½é»¿ï¿½ï¿½é¼‡ï¿½é¼‰ï¿½é¼Žé¼�é¼�é¼’ï¿½é¼“é¼•ï¿½é¼–é¼™é¼›é¼šï¿½é¼ é¼¢é¼«é¼¬é¼¯ï¿½é¼·ï¿½é¼»é¼½é¼¾é½���齊齋齎é½�ï¿½é½’é½”é½•é½—é½Ÿé½¡é½ é½¦é½§ï¿½é½¬é½ªé½®é½²é½¶é½·é½£é¾��龔�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�������������������������������������餀飺�餇���餑餥���餯é¤é¤°é¤«é¤ªé¤µé¤¾é¤¿é¤ºï¿½ï¿½ï¿½ï¿½é¥‡é¥ƒé¥™ï¿½é¥–饘��饛����馜��馧��馦���馯馲馰馵馻馺駂馽駇�����駌�é§�é§�é§“é§”é§Žé§–é§¥é§¤é§£é§©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é§ºé§´é§·é§¹é§¶é§»é§½é§¾é§¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¾•ï¿½é¾œï¿½é¾ é¾¢ï¿½ã„…ã„†ã„‡ã„ˆã„‰ã„Šã„‹ã„Œã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩˊˇˋ˙�ï¼�"#$%&‵()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"���������������������������������騉é¨�騊騇����騆�騚騕騥é¨�騛騢騞騜騲騴騱騬騪騩é¨ï¿½é¨¿ï¿½é¨¹é¨½é©†é¨ºï¿½é©Žé©“é©�é©‰ï¿½é©žé© ï¿½é©¦é©§ï¿½é©¨é©«éª¹éª¿éª´é«�髂髇髊é«�é«�髕���髜��髬髲�髯�髺髶�髾髽é¬�é«¼é¬ƒé¬„ï¿½ï¿½ï¿½é¬Šé¬Œé¬•é¬—é¬–é¬žé¬ é¬¤é¬«é¬³é¬ºé¬¾é¬¿é†éŒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¼¼ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½�∼�。︵︶ï¹�﹂î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"���������������������������������é‹ï¿½ï¿½ï¿½ï¿½é’é–��é é¡ï¿½ï¿½ï¿½é¤é§é·é±é¦é¶éµï¿½é®•鮈��é½ï¿½ï¿½é®…鮇é¼é¾é»é®‚鮚é®é®¨é®›é®¦é®¡é®¥é®¤é®¯ï¿½ï¿½é®¹ï¿½ï¿½é®½é¯‡é¯†é¯ƒé®¿é®µé®¸é¯ˆé¯“ï¿½ï¿½ï¿½ï¿½ï¿½é¯•ï¿½ï¿½ï¿½é¯ªé¯ é¯žé¯›é¯¦é¯°é¯”é¯¬ï¿½é¯šé°—ï¿½é°‹é¯·é°…é°’é¯¸é±€é°Žï¿½é°‡é°‰ï¿½é°¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚��\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������鰫é°�鰬鰨鰩鱆鱈鰿鰱鰾鰴鰹鰳é±�鰼���鱙�é±�鱊é±�鱋鱕��鱧鱦鱢鱞��é±ï¿½ï¿½é±®é±´é±³é±±ï¿½ï¿½ï¿½é±¹é±ºï¿½ï¿½é³ªé³é³±é³µé³¼ï¿½ï¿½ï¿½é³ºé³½é³¿é³·é´€é³¹é³»é´…ï¿½ï¿½ï¿½çž—ï¿½ï¿½é´•é´¥é´—é´ é´”é´©é´˜é´¢é´�é´³éµ�鵧鴶鴮鴯鴱鴸������鴰����������������������������������î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚îƒ�îƒ�îƒ�îƒ�îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"���������������������������������鵅鵃鴾鴷éµ�鵊鵛鵋鵙鵖鵌鵗鵔鵟�鵘�����鵷é¶�鶄鶈鵱鶀鵸鶆鶋鶌�鵿鵽鵫鵴鵵鶅鵳鵻鶂鵯鵹鶟鶙鶤é¶�é¶’é¶�é¶›é¶ é¶”é¶œé¶ªé¶—é¶¡é¶¢é¶¨é¶žé¶£ï¿½é¶§é¶·é¶¶é·Šé·�鶾鷅鷎鷈é¶ï¿½é·Œé·�é·��鷛鷒鷞鷚鷋é·�鷜鷑鷘鷵鷻鷷鷣鷫鷬é·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºîƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„�î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„î…��\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"���������������������������������鷤鷶鷡鷮鷰鷢鸂鷾鸃鸆鸅鸀é¸�鸉鷿鸄�鸋é¸�é¸�é¸�é¸”é¸’é¸“é¸—é¸™ï¿½ï¿½ï¿½éº†éºŠéº‰ï¿½ï¿½ï¿½éºŽéº”éº™ï¿½éºœï¿½éº éº¡ï¿½éº§éºéº©éº®ï¿½ï¿½éºµéº¶ï¿½éº·ï¿½é»€é»‚�黓黕黖黚黟黤黫é»é»°é»²é»³é»µï¿½é¼�鼀鼆鼊鼘鼜鼤鼣鼥鼪鼩鼨é¼é¼°é¼®é¼±é¼µé¼´é¼³é¼²é¼¸é¼¶é½€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î…†î…‡î…ˆî…‰î…Šî…‹î…Œî…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…î†�î†�î†�î†�î†�î†žî†Ÿî† î†¡î†¢î†£ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"���������������������������������齂齃齇齉齌é½�齖齘齛齞é½�齜齥齤齫齱齰齯齴齵齸齻齺齹齾�龒��龤��������������������������������������������������������������������������������������������������î†î†®î†¯î†°î†±î†²î†³î†´î†µî†¶î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡�î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ��\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³îˆ´îˆµîˆ¶îˆ·îˆ¸îˆ¹îˆºîˆ»îˆ¼îˆ½îˆ¾îˆ¿î‰€î‰�î‰�î‰�î‰�î‰��\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ�îŠ�îŠ�îŠ�îŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯î‹°î‹±î‹²î‹³î‹´î‹µî‹¶î‹·î‹¸î‹¹î‹ºî‹»î‹¼î‹½î‹¾î‹¿îŒ€îŒ�îŒ�îŒ�îŒ��\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20005] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������ï¢�\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[141] = \"������������������������������������������������ ,ã€�。․•;:?ï¼��������︰…‥ï¹�﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴ï¹�()︵︶{ï½�︷������︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙������������������﹚﹛﹜ï¹�﹞‘’“â€�ã€�〞′‵#&*※§〃○â—�△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊ï¹�ï¹Žï¹‹ï¹Œï¹Ÿï¹ ï¹¡ï¼‹ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓â†�→↖↗↙↘∥∣ï¼�ï¼¼ï¿½ï¹¨ï¿½ï¼„ï¿¥ã€’ï¿ ï¿¡ï¼…ï¼ â„ƒâ„‰ï¹©ï¹ªï¹«ã�•���\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"������������������������������������������������㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„゜兙�������兛兞å…�兡兣嗧瓩糎â–�▂▃▄▅▆▇█â–�â–Žâ–�▌▋▊▉┼┴┬������┤├▔─│▕┌â”�└┘â•╮╰╯â•�╞╪╡◢◣◥◤╱╲╳ï¼�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¼‘ï¼’ï¼“ï¼”ï¼•ï¼–ï¼—ï¼˜ï¼™â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ã€¡ã€¢ã€£ã€¤ã€¥ã€¦ã€§ã€¨ã€©ï¿½å�„�ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï½�bcdefghijklï½�nï½�ï½�qrstuvwxyzΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟ�ΠΡΣΤΥΦΧΨΩαβγδ���\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"������������������������������������������������εζηθικλμνξ�������οπÏ�στυφχψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔ������ㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋ���������������������������������������������������������������������������������一乙ä¸�七乃ä¹�äº†äºŒäººå„¿å…¥å…«å‡ åˆ€åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃�勺å�ƒå�‰å�£åœŸå£«å¤•大女å�å‘å“寸���\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"������������������������������������������������å°�尢尸山å·�工己已巳巾�������干廾弋弓æ‰�丑ä¸�ä¸�ä¸ä¸°ä¸¹ä¹‹å°¹äºˆäº‘井互五亢ä»�什仃仆仇ä»�今������介仄元å…�å…§å…兮公冗凶分切刈勻勾勿化匹å�ˆå�‡å�…å�žåŽ„å�‹å�Šå��������������������壬天夫太å¤å”å°‘å°¤å°ºå±¯å·´å¹»å»¿å¼”å¼•å¿ƒæˆˆæˆ¶æ‰‹æ‰Žæ”¯æ–‡æ–—æ–¤æ–¹æ—¥æ›°æœˆæœ¨æ¬ æ¢æ¹æ¯‹æ¯”毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�ä¹Žä»¥ä»˜ä»”ä»•ä»–ä»—ä»£ä»¤ä»™ä»žå……å…„å†‰å†Šå†¬å‡¹å‡ºå‡¸åˆŠåŠ åŠŸåŒ…åŒ†åŒ—åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µï¿½å�«å�¦å�ªå�²å�±å�°å�¥å�å�»å››å›šå¤–央���\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"������������������������������������������������失奴奶å•它尼巨巧左市�������布平幼å¼�å¼˜å¼—å¿…æˆŠæ‰“æ‰”æ‰’æ‰‘æ–¥æ—¦æœ®æœ¬æœªæœ«æœæ£æ¯�æ°‘æ°�æ°¸æ±�汀������氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立������������������丞丟乒乓乩亙交亦亥仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�å†°åˆ—åˆ‘åˆ’åˆŽåˆ–åŠ£åŒˆåŒ¡åŒ å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’å› å›žå›�圳地在åœåœ¬åœ¯åœ©å¤™å¤šå¤·å¤¸å¦„奸妃好她如å¦�å—å˜å®‡å®ˆå®…安寺尖屹州帆并年å¼�弛忙忖�戎戌æˆ�æˆ�æ‰£æ‰›æ‰˜æ”¶æ—©æ—¨æ—¬æ—æ›²ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ›³æœ‰æœ½æœ´æœ±æœµæ¬¡æ¤æ»æ°–�������æ±�æ±—æ±™æ±Ÿæ± æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳������è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗������������������佞伴佛何估ä½�ä½‘ä¼½ä¼ºä¼¸ä½ƒä½”ä¼¼ä½†ä½£ä½œä½ ä¼¯ä½Žä¼¶ä½™ä½�佈佚兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�å�žå�¾å�¦å‘Žå�§å‘†å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥�å�åœåšå›å®Œå®‹å®�尬局å±�å°¿å°¾å²����\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"������������������������������������������������岑岔岌巫希åº�庇床廷弄�������弟彤形彷役忘忌志å¿�å¿±å¿«å¿¸å¿ªæˆ’æˆ‘æŠ„æŠ—æŠ–æŠ€æ‰¶æŠ‰æ‰æŠŠæ‰¼æ‰¾æ‰¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‰³æŠ’æ‰¯æŠ˜æ‰®æŠ•æŠ“æŠ‘æŠ†æ”¹æ”»æ”¸æ—±æ›´æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� æ�“������������������æ�—æ¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ 狄狂玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖�乳事些亞享京佯ä¾�ä¾�佳使佬供���\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"������������������������������������������������例來侃佰併侈佩佻侖佾�������ä¾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘������å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周������������������咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅åŸå¤å£å®—定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�å¿ å¿½å¿µå¿¿æ€�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉�拌拄抿拂抹拒招披拓拔拋拈抨���\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"������������������������������������������������抽押æ‹�拙拇æ‹�抵拚抱拘�������拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜�昕昊昇æœ�朋æ�枋枕æ�±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ¦æ§æ¿æ°“氛泣注������������������泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�æ²®æ³—æ³…æ³±æ²¿æ²»æ³¡æ³›æ³Šæ²¬æ³¯æ³œæ³–æ³ ç‚•ç‚Žç‚’ç‚Šç‚™çˆ¬çˆçˆ¸ç‰ˆç‰§ç‰©ç‹€ç‹Žç‹™ç‹—ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直知矽社祀ç¥�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙èŠèŠ½èŠŸèŠ¹èŠ±èŠ¬èŠ¥èŠ¯ï¿½èŠ¸èŠ£èŠ°èŠ¾èŠ·è™Žè™±åˆ�表軋迎返近���\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"������������������������������������������������邵邸邱邶采金長門阜陀�������阿阻附陂隹雨é�’é�žäºŸäºäº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮������ä¿�ä¿„ä¿‚ä¿šä¿Žä¿žä¾·å…—å†’å†‘å† å‰Žå‰ƒå‰Šå‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�å“„å“ˆå’¯å’«å’±å’»å’©å’§å’¿å›¿åž‚åž‹åž åž£åž¢åŸŽåž®åž“å¥•å¥‘å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�å§»å©å®£å®¦å®¤å®¢å®¥å°�屎å±�å±�屋峙峒巷å¸�å¸¥å¸Ÿå¹½åº åº¦å»ºå¼ˆå¼å½¥å¾ˆå¾…徊律徇後徉怒æ€�æ€ æ€¥æ€Žæ€¨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�æ‹œï¿½æŒ–æŒ‰æ‹¼æ‹æŒ�拮拽指拱拷拯括拾���\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"������������������������������������������������拴挑挂政故斫施既春æ˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ˜ 昧是星昨昱昤曷柿染柱柔æŸ�柬架枯柵柩柯柄柑枴柚查枸æŸ�������柞柳枰柙柢æŸ�æŸ’æªæ®ƒæ®†æ®µæ¯’毗氟泉洋洲洪æµ�津洌洱洞洗活洽������������������派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯ç‚ç‚¸ç‚®ç‚¤çˆ°ç‰²ç‰¯ç‰´ç‹©ç‹ ç‹¡çŽ·ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�ç›¹ç›¸çœ‰çœ‹ç›¾ç›¼çœ‡çŸœç ‚ç ”ç Œç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸美羿耄è€�è€�耑耶胖胥�胚胃胄背胡胛胎胞胤èƒ�致舢苧���\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"������������������������������������������������范茅苣苛苦茄若茂茉苒�������苗英èŒ�苜苔苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�è§”è¨ˆè¨‚è¨ƒè²žè² èµ´èµ³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¶´è»�軌述迦迢迪迥è¿è¿«è¿¤è¿¨éƒŠéƒŽéƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éŸ‹éŸéŸ³é �風飛食首香乘亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修å€å€ªä¿¾å€«å€‰å…¼å†¤å†¥å†¢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩å“員唉哮哪哦唧唇哽å”�åœƒåœ„åŸ‚åŸ”åŸ‹åŸƒå ‰å¤�å¥—å¥˜å¥šå¨‘å¨˜å¨œå¨Ÿå¨›å¨“ï¿½å§¬å¨ å¨£å¨©å¨¥å¨Œå¨‰å«å±˜å®°å®³å®¶å®´ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"������������������������������������������������宮宵容宸射屑展å±�å³å³½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å³»å³ªå³¨å³°å³¶å´�å³´å·®å¸å¸«åº«åºåº§å¼±å¾’徑å¾�æ�™æ�£æ�¥æ��æ�•æ�æ�©æ�¯æ‚„������悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºæ��挽挪挫挨æ��������������������æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�æ›¸æœ”æœ•æœ—æ ¡æ ¸æ¡ˆæ¡†æ¡“æ ¹æ¡‚æ¡”æ ©æ¢³æ —æ¡Œæ¡‘æ ½æŸ´æ¡�æ¡€æ ¼æ¡ƒæ ªæ¡…æ “æ ˜æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾�病症疲疳疽疼疹痂疸皋皰益ç›����\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç›Žçœ©çœŸçœ çœ¨çŸ©ç °ç §ç ¸ç �ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç ´ç ·ç ¥ç ç ç Ÿç ²ç¥•ç¥�ç¥ ç¥Ÿç¥–ç¥žç¥�ç¥—ç¥šç§¤ç§£ç§§ç§Ÿç§¦ç§©ç§˜çª„çªˆç«™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¬†ç¬‘ç²‰ç´¡ç´—ç´‹ç´Šç´ ç´¢ç´”ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耘耕耙������������������耗耽耿胱脂胰脅èƒèƒ´è„†èƒ¸èƒ³è„ˆèƒ½è„Šèƒ¼èƒ¯è‡è‡¬èˆ€èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌�釘é‡�釗釜釙閃院陣陡陛é™�除陘���\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"������������������������������������������������陞隻飢馬骨高鬥鬲鬼乾�������å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µå�´å�·å��å€�å�¯å�兜冕凰剪副勒務������勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯啤唸售������������������啜唬啣唳å•�å•—åœˆåœ‹åœ‰åŸŸå …å Šå †åŸ åŸ¤åŸºå ‚å µåŸ·åŸ¹å¤ å¥¢å¨¶å©�婉婦婪婀娼婢婚婆婊å°å¯‡å¯…å¯„å¯‚å®¿å¯†å°‰å°ˆå°‡å± å±œå±�å´‡å´†å´Žå´›å´–å´¢å´‘å´©å´”å´™å´¤å´§å´—å·¢å¸¸å¸¶å¸³å¸·åº·åº¸åº¶åºµåº¾å¼µå¼·å½—å½¬å½©å½«å¾—å¾™å¾žå¾˜å¾¡å¾ å¾œæ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…æ‚»æ‚µæƒœæ‚¼æƒ˜æƒ•ï¿½æƒ†æƒŸæ‚¸æƒšæƒ‡æˆšæˆ›æ‰ˆæŽ æŽ§æ�²æŽ–探���\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"������������������������������������������������接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛������斬æ—�旋旌旎æ™�晚晤晨晦晞曹勗望æ¢�æ¢¯æ¢¢æ¢“æ¢µæ¡¿æ¡¶æ¢±æ¢§æ¢—æ¢°æ¢ƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ£„æ¢æ¢†æ¢…梔æ¢�梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒç�†ç�¾ç��ç“ ç“¶ç“·ç”œç”¢ç•¥ç•¦ç•¢ç•°ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺�硫硃硎祥票ç¥ç§»çª’çª•ç¬ ç¬¨ç¬›ç¬¬ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"������������������������������������������������符笙笞笮粒粗粕絆絃統�������紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜è�Šè�†è„¯è„–脣脫脩脰������脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“èŽ‰èŽ è�·è�»è�¼èŽ†èŽ§è™•å½ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è›‡è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許è¨è¨Ÿè¨›è¨¢è±‰è±šè²©è²¬è²«è²¨è²ªè²§èµ§èµ¦è¶¾è¶ºè»›è»Ÿé€™é€�通逗連速é€�é€�é€•é€žé€ é€�逢逖逛途部éƒéƒ½é…—野釵釦釣釧é‡é‡©é–‰é™ªé™µé™³é™¸é™°é™´é™¶é™·é™¬é›€é›ªé›©ç« ç«Ÿé ‚é ƒéšé³¥é¹µé¹¿éº¥éº»å‚¢å‚�傅備傑�傀傖傘傚最凱割剴創剩勞å‹�勛���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"������������������������������������������������å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂�������喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�å ¯å ªå ´å ¤å °å ±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ¡å �å å£¹å£ºå¥ å©·åªšå©¿åª’åª›åª§å³å±å¯’富寓å¯�尊尋就嵌åµ�崴嵇巽������������������幅帽幀幃幾廊å»�廂廄弼å½å¾©å¾ªå¾¨æƒ‘æƒ¡æ‚²æ‚¶æƒ æ„œæ„£æƒºæ„•æƒ°æƒ»æƒ´æ…¨æƒ±æ„Žæƒ¶æ„‰æ„€æ„’æˆŸæ‰‰æŽ£æŽŒæ��æ�€æ�©æ�‰æ�†æ��æ�’æ�£æ��æ�¡æ�–æ�æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶景暑智晾晷曾替期æœ�æ£ºæ£•æ£ æ£˜æ£—æ¤…æ£Ÿæ£µæ£®æ£§æ£¹æ£’æ£²æ££æ£‹æ£�æ¤�椒椎棉棚�楮棻款欺欽殘殖殼毯氮氯氬港���\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¸¸æ¹”æ¸¡æ¸²æ¹§æ¹Šæ¸ æ¸¥æ¸£æ¸›ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¹›æ¹˜æ¸¤æ¹–æ¹®æ¸æ¸¦æ¹¯æ¸´æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚������焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— 登發皖皓皴盜ç��çŸç¡�硬硯ç¨�稈程稅稀窘窗窖童竣ç‰ç–ç†ç�ç’ç”ç�ç‹ç�ç‘粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡ï¿½è�”è�Ÿè™›è›Ÿè›™è›è›”蛛蛤è›�蛞街è£����\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è£‚è¢±è¦ƒè¦–è¨»è© è©•è©žè¨¼è©��������詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�跎������è·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕������������������鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�é›…é›„é›†é›‡é›¯é›²éŸŒé …é †é ˆé£§é£ªé£¯é£©é£²é£é¦®é¦é»ƒé»�黑亂å‚債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌å¡å¡Šå¡¢å¡’塋�奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌���\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"������������������������������������������������幹廉廈弒彙徬微愚æ„�慈�������感想愛惹æ„�愈慎慌慄æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�æ�½æ�¬æ��������æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�æœƒæ¦”æ¥æ¥šæ¥·æ¥ 楔極������������������椰概楊楨楫楞楓楹榆æ¥�æ¥£æ¥›æ‡æ²æ¯€æ®¿æ¯“毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷ç�…猿猾瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žï¿½ç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¦½ç¨œç¨šç¨ ç¨”ç¨Ÿç¨žçªŸçª ç·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¯€ç ç®ç§ç²±ç²³ç²µç¶“絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„腱腰������腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘������������������葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�è£¡è£Šè£•è£’è¦œè§£è©«è©²è©³è©¦è©©è©°èª‡è©¼è©£èª è©±èª…è©è©¢è©®è©¬è©¹è©»è¨¾è©¨è±¢è²Šè²‰è³Šè³‡è³ˆè³„貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農é�‹é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗�鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉é‰�鉅鈹���\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"������������������������������������������������鈿鉚閘隘隔隕é›�雋雉雊�������雷電雹零é�–é�´é�¶é �é ‘é “é Šé ’é Œé£¼é£´é£½é£¾é¦³é¦±é¦´é«¡é³©éº‚é¼Žé¼“é¼ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åƒ§åƒ®åƒ¥åƒ–åƒåƒšåƒ•åƒ�僑僱僎僩兢凳劃劂匱åŽå—¾å˜€å˜›å˜—嗽嘔嘆嘉������������������å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣åµå¯žå¯§å¯¡å¯¥å¯¦å¯¨å¯¢å¯¤å¯Ÿå°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘摻敲斡旗旖暢暨æš�榜榨榕æ§�榮槓構榛榷榻榫榴�æ§�æ§�æ¦æ§Œæ¦¦æ§ƒæ¦£æ‰æŒæ°³æ¼³æ¼”滾���\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¼“æ»´æ¼©æ¼¾æ¼ æ¼¬æ¼�漂漢滿�������滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒爾犒犖ç�„������ç��瑤瑣瑪瑰ç‘甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎������������������ç¦�ç¦�種稱窪窩ç«ç«¯ç®¡ç®•箋çµç®—ç®�ç®”ç®�ç®¸ç®‡ç®„ç²¹ç²½ç²¾ç¶»ç¶°ç¶œç¶½ç¶¾ç¶ ç·Šç¶´ç¶²ç¶±ç¶ºç¶¢ç¶¿ç¶µç¶¸ç¶ç·’ç·‡ç¶¬ç½°ç¿ ç¿¡ç¿Ÿè�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯誦誌�語誣èª�誡誓誤說誥誨誘誑誚誧���\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"������������������������������������������������豪è²�貌賓賑賒赫趙趕跼�������輔輒輕輓辣é� é�˜é�œé�£é�™é�žé�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ€éŠ…éŠ˜éŠ–ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…éŸ¶é —é ˜é¢¯é¢±é¤ƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¤…é¤Œé¤‰é§�骯骰髦é�é‚鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦å¥å¬‰å«»å¬‹å«µå¬Œå¬ˆå¯®å¯¬å¯©å¯«å±¤å±¥å¶�嶔幢幟幡廢廚廟å»�å»£å» å½ˆå½±å¾·å¾µæ…¶æ…§æ…®æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚�憤憔憮戮摩摯摹撞撲撈æ’�撰撥���\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ’“æ’•æ’©æ’’æ’®æ’æ’«æ’šæ’¬æ’™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ’¢æ’³æ•µæ•·æ•¸æš®æš«æš´æš±æ¨£æ¨Ÿæ§¨æ¨�æ¨žæ¨™æ§½æ¨¡æ¨“æ¨Šæ§³æ¨‚æ¨…æ§æ¨‘æ�æŽï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ®¤æ¯…æ¯†æ¼¿æ½¼æ¾„æ½‘æ½¦æ½”æ¾†æ½æ½›æ½¸æ½®æ¾Žæ½ºæ½°æ½¤æ¾—æ½˜æ»•æ½¯æ½ æ½Ÿç†Ÿç†¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç†±ç†¨ç‰–çŠ›ç�Žç�—ç‘©ç’‹ç’ƒç‘¾ç’€ç•¿ç˜ ç˜©ç˜Ÿç˜¤ç˜¦ç˜¡ç˜¢çššçšºç›¤çžŽçž‡çžŒçž‘çž‹ç£‹ç£…ç¢ºç£Šç¢¾ç£•ç¢¼ç£�稿稼穀稽稷稻窯窮ç®ç®±ç¯„箴篆篇ç¯�ç® ç¯Œç³Šç· ç·´ç·¯ç·»ç·˜ç·¬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�è† è†šè†˜è”—è”½è”šè“®è”¬è”蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶ï¿½è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒���\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"������������������������������������������������褓褕褊誼諒談諄誕請諸�������課諉諂調誰論è«�èª¶èª¹è«›è±Œè±Žè±¬è³ è³žè³¦è³¤è³¬è³è³¢è³£è³œè³ªè³¡èµè¶Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¶£è¸«è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟輩輦輪輜輞輥é�©é�®é�¨é�é�·é„°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é„鄧鄱醇醉醋醃鋅銻銷鋪銬鋤é‹�銳銼鋒鋇鋰銲é–閱霄霆震霉é� éž�éž‹éž�é ¡é «é œé¢³é¤Šé¤“é¤’é¤˜é§�é§�駟駛駑駕駒駙骷髮髯鬧é…é„é·é¯é´†é´‰é´ƒéº©éº¾é»Žå¢¨é½’儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴å¸å¯°å°Žå½Šï¿½æ†²æ†‘憩憊æ‡�憶憾懊懈戰擅æ“�擋���\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"������������������������������������������������撻撼據擄擇擂æ“�æ’¿æ“’æ“”ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ’¾æ•´æ›†æ›‰æš¹æ›„æ›‡æš¸æ¨½æ¨¸æ¨ºæ©™æ©«æ©˜æ¨¹æ©„æ©¢æ©¡æ©‹æ©‡æ¨µæ©Ÿæ©ˆæ™æ·æ°…������濂澱澡濃澤æ¿�æ¾§æ¾³æ¿€æ¾¹æ¾¶æ¾¦æ¾ æ¾´ç†¾ç‡‰ç‡�燒燈燕熹燎燙燜燃燄������������������ç�¨ç’œç’£ç’˜ç’Ÿç’žç“¢ç”Œç”�ç˜´ç˜¸ç˜ºç›§ç›¥çž çžžçžŸçž¥ç£¨ç£šç£¬ç£§ç¦¦ç©�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉è•蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷è«è«³ï¿½è«¶è«¼è±«è±è²“賴蹄踱踴蹂踹踵輻���\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"������������������������������������������������輯輸輳辨辦é�µé�´é�¸é�²é�¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�ºé„´é†’éŒ éŒ¶é‹¸éŒ³éŒ¯éŒ¢é‹¼éŒ«éŒ„éŒšéŒ�錦錡錕錮錙閻隧隨險雕霎霑������霖éœ�霓éœ�é�›é�œé�¦éž˜é °é ¸é »é ·é é ¹é ¤é¤�館餞餛餡餚é§é§¢é§±éª¸éª¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é«»é«é¬¨é®‘鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤åºå°·å±¨å¶¼å¶ºå¶½å¶¸å¹«å½Œå¾½æ‡‰æ‡‚æ‡‡æ‡¦æ‡‹æˆ²æˆ´æ“Žæ“Šæ“˜æ“ æ“°æ“¦æ“¬æ“±æ“¢æ“æ–‚斃曙曖檀檔檄檢檜櫛檣橾檗æª�æª æœæ®®æ¯šæ°ˆæ¿˜æ¿±æ¿Ÿæ¿ 濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥�ç‡ç‡¬ç‡´ç‡ 爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"������������������������������������������������療癌盪瞳瞪瞰瞬瞧çžçŸ¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç£·ç£ºç£´ç£¯ç¤�禧禪穗窿簇ç°�ç¯¾ç¯·ç°Œç¯ ç³ ç³œç³žç³¢ç³Ÿç³™ç³�縮績繆縷������縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºè‡‚è‡€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è†¿è†½è‡‰è†¾è‡¨èˆ‰è‰±è–ªè–„è•¾è–œè–‘è–”è–¯è–›è–‡è–¨è–Šè™§èŸ€èŸ‘èž³èŸ’èŸ†èž«èž»èžºèŸˆèŸ‹è¤»è¤¶è¥„è¤¸è¤½è¦¬è¬Žè¬—è¬™è¬›è¬Šè¬ è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”é—Šé—‹é—Œé—ˆé—†éš±éš¸é›–éœœéœžéž éŸ“ï¿½é¡†é¢¶é¤µé¨�駿鮮鮫鮪é®é´»é´¿éº‹é»����\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"������������������������������������������������點黜é»�黛鼾齋å�¢åš•嚮壙�������壘嬸å½�æ‡£æˆ³æ“´æ“²æ“¾æ”†æ“ºæ“»æ“·æ–·æ›œæœ¦æª³æª¬æ«ƒæª»æª¸æ«‚æª®æª¯æŸæ¸æ®¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç€‰ç€‹æ¿¾ç€†æ¿ºç€‘ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•ç™–ç™˜ç™’çž½çž¿çž»çž¼ç¤Žç¦®ç©¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç©¢ç© ç«„ç«…ç°«ç°§ç°ªç°žç°£ç°¡ç³§ç¹”ç¹•ç¹žç¹šç¹¡ç¹’ç¹™ç½ˆç¿¹ç¿»è�·è�¶è‡�è‡�舊è—�è–©è—�è—�è—‰è–°è–ºè–¹è–¦èŸ¯èŸ¬èŸ²èŸ è¦†è¦²è§´è¬¨è¬¹è¬¬è¬«è±�贅蹙蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖é—�闕離雜雙雛雞霤鞣鞦éžéŸ¹é¡�é¡�題顎顓颺餾餿餽餮�馥騎é«�鬃鬆é�éŽé�鯊鯉鯽鯈鯀���\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"������������������������������������������������鵑éµ�éµ é» é¼•é¼¬å„³åš¥å£žå£Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å£¢å¯µé¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘������犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹ç¹¹ç¹©ç¹ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¾…繳羶羹羸臘藩è—�è—ªè—•è—¤è—¥è—·èŸ»è …è �èŸ¹èŸ¾è¥ è¥Ÿè¥–è¥žè�èœè˜è‰èšèŽè�è†è™è´ˆè´Šè¹¼è¹²èº‡è¹¶è¹¬è¹ºè¹´è½”轎è¾é‚Šé‚‹é†±é†®é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤�å€åƒå½å¯¶å·‰æ‡¸æ‡ºæ”˜æ””攙曦朧櫬���\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"������������������������������������������������瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪�������礬礫竇競籌籃ç±�ç³¯ç³°è¾®ç¹½ç¹¼çº‚ç½Œè€€è‡šè‰¦è—»è—¹è˜‘è—ºè˜†è˜‹è˜‡è˜Šè ”ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è •è¥¤è¦ºè§¸è°è¬è¦è¯èŸè«è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑������������������馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼蘗è˜è˜šè £è ¢è ¡è Ÿè¥ªè¥¬è¦½è´è·è½è´“躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅驃驀騾é«�é”é‘é°é°¥é¶¯é¶´é·‚鶸éº�黯鼙齜齦齧儼�儻囈囊囉å¿å·”巒彎懿攤權æ¡ç�‘���\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"������������������������������������������������ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽霾韃éŸ�顫饕驕é©�髒鬚鱉������鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�ç“šç«Šç±¤ç±£ç±¥çº“çº–çº”è‡¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è˜¸è˜¿è ±è®Šé‚�é‚�é‘£é‘ é‘¤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�ç¾ˆè ¶è ¹è¡¢è®“è®’è®–è‰·è´›é‡€é‘ªé�‚é�ˆé�„韆顰驟鬢é˜é±Ÿé·¹é·ºé¹¼é¹½é¼‡é½·é½²å»³æ¬–ç�£ç±¬ç±®è »è§€èº¡é‡�鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱�鸛鸞籲乂乜凵匚厂万丌乇äº�囗���\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"������������������������������������������������兀屮彳ä¸�冇与丮亓仂仉�������仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼仨仜仩仡ä»�仚刌匜å�Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰�氕氶汃氿氻犮犰玊禸肊������������������阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓刉åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿å–尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�æ‰œæ‰žæ‰¤æ‰¡æ‰¦æ‰¢æ‰™æ‰ æ‰šæ‰¥æ—¯æ—®æœ¾æœ¹æœ¸æœ»æœºæœ¿æœ¼æœ³æ°˜æ±†æ±’æ±œæ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€ï¿½è‰½è‰¿è™�è¥¾é‚™é‚—é‚˜é‚›é‚”é˜¢é˜¤é˜ é˜£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"������������������������������������������������佖伻佢佉体佤伾佧佒佟�������ä½�佘ä¼ä¼³ä¼¿ä½¡å†�冹刜刞刡åŠåŠ®åŒ‰å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�˜å�½å‘�å‘�å�¨å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’å¤†å¥€å¦¦å¦˜å¦ å¦—å¦Žå¦¢å¦�å¦�������������������妧妡宎宒尨尪å²�å²�å²ˆå²‹å²‰å²’å²Šå²†å²“å²•å· å¸Šå¸Žåº‹åº‰åºŒåºˆåº�å¼…å¼�彸彶忒忑å¿�å¿å¿¨å¿®å¿³å¿¡å¿¤å¿£å¿ºå¿¯å¿·å¿»æ€€å¿´æˆºæŠƒæŠŒæŠŽæŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴攷旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�æ±±æ±¯æ±©æ²šæ±æ²‡æ²•沜汦汳汥汻�沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗���\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"������������������������������������������������玓玔玒町甹疔疕çš�礽耴�������肕肙è‚�肒肜èŠ�èŠ�èŠ…èŠŽèŠ‘èŠ“èŠŠèŠƒèŠ„è±¸è¿‰è¾¿é‚Ÿé‚¡é‚¥é‚žé‚§é‚ é˜°é˜¨é˜¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é˜ä¸³ä¾˜ä½¼ä¾…佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�侜侔侞侒侂������������������侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑咂咈呫呺呾呥呬呴呦å’�å‘¯å‘¡å‘ å’˜å‘£å‘§å‘¤å›·å›¹å�¯å�²å�å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇å¢å¥å®“å®•å±„å±‡å²®å²¤å² å²µå²¯å²¨å²¬å²Ÿå²£å²å²¢å²ªå²§å²�岥岶岰岦�帗帔帙弨弢弣弤彔徂彾彽忞忥���\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ€æ€¦æ€™æ€²æ€‹æ€´æ€Šæ€—怳怚�������怞怬怢æ€�æ€�æ€®æ€“æ€‘æ€Œæ€‰æ€œæˆ”æˆ½æŠæŠ´æ‹‘æŠ¾æŠªæŠ¶æ‹ŠæŠ®æŠ³æŠ¯æŠ»æŠ©æŠ°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æŠ¸æ”½æ–¨æ–»æ˜‰æ—¼æ˜„æ˜’æ˜ˆæ—»æ˜ƒæ˜‹æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃æ�½æž�æ�¸æ�¹æž”æ¬¥æ®€æ¾æ¯žæ°�æ²“æ³¬æ³«æ³®æ³™æ²¶æ³”æ²æ³§æ²·æ³�æ³‚æ²ºæ³ƒæ³†æ³æ³²æ³’æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡çŽçŽ¦çŽ¢çŽ çŽ¬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹�矻矺矷祂礿秅穸穻竻籵糽耵è‚����\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"������������������������������������������������肮肣肸肵è‚èˆ èŠ è‹€èŠ«èŠšï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŠ˜èŠ›èŠµèŠ§èŠ®èŠ¼èŠžèŠºèŠ´èŠ¨èŠ¡èŠ©è‹‚èŠ¤è‹ƒèŠ¶èŠ¢è™°è™¯è™è™®è±–è¿’è¿‹è¿“è¿�������迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅俓侲俉俋ä¿�俔俜俙侻侳俛������������������俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’å’¥å“�哃èŒ�å’·å’®å“–å’¶å“…å“†å’ å‘°å’¼å’¢å’¾å‘²å“žå’°åžµåžžåžŸåž¤åžŒåž—åž�垛垔垘åž�垙垥垚垕壴å¤�奓姡姞姮娀姱å§�å§ºå§½å§¼å§¶å§¤å§²å§·å§›å§©å§³å§µå§ å§¾å§´å§å®¨å±Œå³�峘峌峗峋峛峞峚峉峇峊峖峓峔å³�å³ˆå³†å³Žå³Ÿå³¸ï¿½å·¹å¸¡å¸¢å¸£å¸ å¸¤åº°åº¤åº¢åº›åº£åº¥å¼‡ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"������������������������������������������������弮彖徆怷怹æ�”æ�²æ�žæ�…æ�“�������æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶������挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�������������������æœ�æŸ�柲柈枺柜枻柸柘柀枷柅柫柤柟枵æŸ�æž³æŸ·æŸ¶æŸ®æŸ£æŸ‚æž¹æŸŽæŸ§æŸ°æž²æŸ¼æŸ†æŸæŸŒæž®æŸ¦æŸ›æŸºæŸ‰æŸŠæŸƒæŸªæŸ‹æ¬¨æ®‚æ®„æ®¶æ¯–æ¯˜æ¯ æ° æ°¡æ´¨æ´´æ´æ´Ÿæ´¼æ´¿æ´’洊泚洳洄洙洺洚洑洀æ´�浂æ´�洘洷洃æ´�æµ€æ´‡æ´ æ´¬æ´ˆæ´¢æ´‰æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊�狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹���\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"������������������������������������������������玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çŽ¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„çœˆçœƒçœ„çœ…çœŠç›·ç›»ç›ºçŸ§çŸ¨ç †ç ‘ç ’ç …ç �ç �ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç Žç ‰ç ƒç “ç¥Šç¥Œç¥‹ç¥…ç¥„ç§•ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃������������������紈ç´�罘羑ç¾�羾耇耎è€�è€”è€·èƒ˜èƒ‡èƒ èƒ‘èƒˆèƒ‚èƒ�胅胣胙胜胊胕胉èƒ�胗胦èƒ�è‡¿èˆ¡èŠ”è‹™è‹¾è‹¹èŒ‡è‹¨èŒ€è‹•èŒºè‹«è‹–è‹´è‹¬è‹¡è‹²è‹µèŒŒè‹»è‹¶è‹°è‹ªè‹¤è‹ è‹ºè‹³è‹è™·è™´è™¼è™³è¡�è¡Žè¡§è¡ªè¡©è§“è¨„è¨‡èµ²è¿£è¿¡è¿®è¿ éƒ±é‚½é‚¿éƒ•éƒ…é‚¾éƒ‡éƒ‹éƒˆé‡”é‡“é™”é™�é™‘é™“é™Šé™Žå€žå€…å€‡å€“å€¢å€°å€›ï¿½ä¿µä¿´å€³å€·å€¬ä¿¶ä¿·å€—å€œå€ å€§å€µå€¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"������������������������������������������������倱倎党冔冓凊凄凅凈凎�������剡剚剒剞剟剕剢å‹�åŒŽåŽžå”¦å“¢å”—å”’å“§å“³å“¤å”šå“¿å”„å”ˆå“«å”‘å”…å“±å”Šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å“»å“·å“¸å“ å”Žå”ƒå”‹åœ�åœ‚åŸŒå ²åŸ•åŸ’åžºåŸ†åž½åž¼åž¸åž¶åž¿åŸ‡åŸ�åž¹åŸ�夎奊������������������娙娖å¨å¨®å¨•å¨�娗娊娞娳å¬å®§å®å®¬å°ƒå±–屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ��æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”æ�™æŒæ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„æ—‚æ™Šæ™Ÿæ™‡æ™‘æœ’æœ“æ Ÿæ šæ¡‰æ ²æ ³æ »ï¿½æ¡‹æ¡�æ –æ ±æ œæ µæ «æ æ ¯æ¡Žæ¡„æ ´æ ����\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ ’æ ”æ ¦æ ¨æ ®æ¡�æ ºæ ¥æ æ¬¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¬¯æ¬æ¬±æ¬´æè‚‚殈毦毤毨毣毢毧氥浺浣浤浶æ´�æµ¡æ¶’æµ˜æµ¢æµæµ¯æ¶‘������æ¶�æ·¯æµ¿æ¶†æµžæµ§æµ æ¶—æµ°æµ¼æµŸæ¶‚æ¶˜æ´¯æµ¨æ¶‹æµ¾æ¶€æ¶„æ´–æ¶ƒæµ»æµ½æµµæ¶�烜������������������烓烑çƒ�çƒ‹ç¼¹çƒ¢çƒ—çƒ’çƒžçƒ çƒ”çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿç“´ç“µç”¡ç•›ç•Ÿç–°ç—�疻痄痀疿疶疺皊盉çœ�眛çœ�çœ“çœ’çœ£çœ‘çœ•çœ™çœšçœ¢çœ§ç £ç ¬ç ¢ç µç ¯ç ¨ç ®ç «ç ¡ç ©ç ³ç ªç ±ç¥”ç¥›ç¥�ç¥œç¥“ç¥’ç¥‘ç§«ç§¬ï¿½ç§ ç§®ç§ç§ªç§œç§žç§�窆窉窅窋窌窊���\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"������������������������������������������������窇竘ç¬�笄笓笅ç¬�笈笊笎�������笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�ç´Œç½œç½¡ç½žç½ ç½�罛������羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳èŒè�„茙è�‘茥è�–茿������������������è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��èŒ–èŒ¤èŒ èŒ·èŒ¯èŒ©è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄è¡è¡µè¡¶è¡²è¢€è¡±è¡¿è¡¯è¢ƒè¡¾è¡´è¡¼è¨’è±‡è±—è±»è²¤è²£èµ¶èµ¸è¶µè¶·è¶¶è»‘è»“è¿¾è¿µé€‚è¿¿è¿»é€„è¿¼è¿¶éƒ–éƒ éƒ™éƒšéƒ£éƒŸéƒ¥éƒ˜éƒ›éƒ—éƒœéƒ¤é…��酎é…�釕釢釚陜陟隼飣髟鬯乿å�°ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"������������������������������������������������å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå���������å��å�›å�Šå�¢å€•å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫å‰å‰¬å‰®å‹–å‹“åŒåŽœï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å•µå•¶å”¼å•�å•�唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈å”å”»å•€å•‹åœŠåœ‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åŸ»å ”åŸ¢åŸ¶åŸœåŸ´å €åŸåŸ½å ˆåŸ¸å ‹åŸ³åŸ�å ‡åŸ®åŸ£åŸ²åŸ¥åŸ¬åŸ¡å ŽåŸ¼å �埧å �å ŒåŸ±åŸ©åŸ°å �å „å¥œå© å©˜å©•å©§å©žå¨¸å¨µå©å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜å²å®å¯�寀屙崞崋å´�å´šå´ å´Œå´¨å´�崦崥å´�崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖�徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ����\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"������������������������������������������������惈悱惛悷惊悿惃æƒ�惀挲�������æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽæŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�掮æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…������æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�æ¢œæ¡æ¡®æ¢®æ¢«æ¥–桯梣梬梩������������������桵桴梲æ¢�æ¡·æ¢’æ¡¼æ¡«æ¡²æ¢ªæ¢€æ¡±æ¡¾æ¢›æ¢–æ¢‹æ¢ æ¢‰æ¢¤æ¡¸æ¡»æ¢‘æ¢Œæ¢Šæ¡½æ¬¶æ¬³æ¬·æ¬¸æ®‘æ®�æ®�æ®Žæ®Œæ°ªæ·€æ¶«æ¶´æ¶³æ¹´æ¶¬æ·©æ·¢æ¶·æ·¶æ·”æ¸€æ·ˆæ· æ·Ÿæ·–æ¶¾æ·¥æ·œæ·�æ·›æ·´æ·Šæ¶½æ·æ·°æ¶ºæ·•æ·‚æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎牾牻牼牿�çŒ�猗猇猑猘猊猈狿çŒ�猞玈ç�¶ç�¸ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"������������������������������������������������ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋痌痑ç—�çš�皉盓眹眯çœçœ±çœ²çœ´çœ³çœ½çœ¥çœ»çœµï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¡ˆç¡’硉ç¡�ç¡Šç¡Œç ¦ç¡…ç¡�祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵ç‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¬´ç¬¥ç¬°ç¬¢ç¬¤ç¬³ç¬˜ç¬ªç¬�笱笫ç¬ç¬¯ç¬²ç¬¸ç¬šç¬£ç²”粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„脟脬脞脡脕脧è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾ï¿½èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶èŽšè™™è™–ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"������������������������������������������������蚿蚷蛂è›�蛅蚺蚰蛈蚹蚳�������蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌������袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘軞������������������è»�è»œè»—è» è»¡é€¤é€‹é€‘é€œé€Œé€¡éƒ¯éƒªéƒ°éƒ´éƒ²éƒ³éƒ”éƒ«éƒ¬éƒ©é…–é…˜é…šé…“é…•é‡¬é‡´é‡±é‡³é‡¸é‡¤é‡¹é‡ªé‡«é‡·é‡¨é‡®é•ºé–†é–ˆé™¼é™é™«é™±é™¯éš¿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥å–啷噅喢喓喈å–�å–µå–�å–£å–’å–¤å•½å–Œå–¦å•¿å–•å–¡å–ŽåœŒå ©å ·å ™ï¿½å žå §å £å ¨åŸµå¡ˆå ¥å œå ›å ³å ¿å ¶å ®ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ¹å ¸å å ¬å »å¥¡åª¯åª”åªŸå©ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åª¢åªžå©¸åª¦å©¼åª¥åª¬åª•åª®å¨·åª„åªŠåª—åªƒåª‹åª©å©»å©½åªŒåªœåª�媓åª�寪å¯�寋������寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸������������������崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱�æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈���\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"������������������������������������������������楰梴椑棯棆椔棸æ£�棽棼�������棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽������毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�æ¹³æ¸œæ¸³æ¹‹æ¹€æ¹‘æ¸»æ¸ƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¸®æ¹žæ¹¨æ¹œæ¹¡æ¸±æ¸¨æ¹ æ¹±æ¹«æ¸¹æ¸¢æ¸°æ¹“æ¹¥æ¸§æ¹¸æ¹¤æ¹·æ¹•æ¹¹æ¹’æ¹¦æ¸µæ¸¶æ¹šç„ ç„žç„¯çƒ»ç„®ç„±ç„£ç„¥ç„¢ç„²ç„Ÿç„¨ç„ºç„›ç‰‹ç‰šçŠˆçŠ‰çŠ†çŠ…çŠ‹çŒ’çŒ‹çŒ°çŒ¢çŒ±çŒ³çŒ§çŒ²çŒçŒ¦çŒ£çŒµçŒŒç�®ç�¬ç�°ç�«ç�–ç�šç�¡ç�ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ï¿½ç�ŒçŸžçŸ¬ç¡ 硤硥硜ç¡ç¡±ç¡ªç¡®ç¡°ç¡©ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"������������������������������������������������硨硞硢祴祳祲祰稂稊稃�������稌稄窙竦竤çŠç¬»ç„çˆçŒçŽç€ç˜ç…粢粞粨粡絘絯絣絓絖絧絪çµ�������çµçµœçµ«çµ’çµ”çµ©çµ‘çµŸçµŽç¼¾ç¼¿ç½¥ç½¦ç¾¢ç¾ ç¾¡ç¿—è�‘è��è��胾胔腃腊腒è…�������������������腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è��è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘�覗è§�觚觛詎è©�訹詙詀詗詘詄詅���\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"������������������������������������������������詒詈詑詊詌è©�豟è²�貀貺�������貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥������軵軧軨軶軫軱軬軴軩é€é€´é€¯é„†é„¬é„„郿郼鄈郹郻é„�é„€é„‡é„…é„ƒé…¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é…¤é…Ÿé…¢é… éˆ�鈊鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔�塓塨塤å¡�å¡�塉塯塕塎å¡�塙塥塛���\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ½å¡£å¡±å£¼å«‡å«„å«‹åªºåª¸åª±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åªµåª°åª¿å«ˆåª»å«†åª·å«€å«Šåª´åª¶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞������嵨嵧嵢巰å¹�幎幊å¹�å¹‹å»…å»Œå»†å»‹å»‡å½€å¾¯å¾æƒ·æ…‰æ…Šæ„«æ……愶愲愮慆������������������愯æ…�æ„©æ…€æˆ é…¨æˆ£æˆ¥æˆ¤æ�…æ�±æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓暆暌暕æš�æš‹æšŠæš™æš”æ™¸æœ æ¥¦æ¥Ÿæ¤¸æ¥Žæ¥¢æ¥±æ¤¿æ¥…æ¥ªæ¤¹æ¥‚æ¥—æ¥™æ¥ºæ¥ˆæ¥‰æ¤µæ¥¬æ¤³æ¤½æ¥¥æ£°æ¥¸æ¤´æ¥©æ¥€æ¥¯æ¥„æ¥¶æ¥˜æ¥�楴楌椻楋椷楜æ¥�æ¥‘æ¤²æ¥’ï¿½æ¤¯æ¥»æ¤¼æ†æ…æƒæ‚æˆæ�æ®›ï¨�毻毼���\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"������������������������������������������������毹毷毸溛滖滈æº�æ»€æºŸæº“ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æº”æº æº±æº¹æ»†æ»’æº½æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡������溿溳æ»�æ»Šæº—æº®æº£ç…‡ç…”ç…’ç…£ç… ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�������������������煓煄ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶ç—痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ç�§ç�”ç�™ç�çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛ç¨�窣�窢窞竫ç¦ç¤çç´ç©ç²ç¥ç³ç±ç°ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"������������������������������������������������ç¡ç¸ç¶ç£ç²²ç²´ç²¯ç¶ˆç¶†ç¶€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¶�絿綅絺綎絻綃絼綌綔綄絽綒ç½ç½«ç½§ç½¨ç½¬ç¾¦ç¾¥ç¾§ç¿›ç¿œè€¡è…¤è… ������腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�������������������葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�葟葰è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³è‘¨è‘¾è‘„è�«è‘ 葔葮è‘�蜋蜄蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�è¦…è¦›è§Ÿè§¥è§¤è§¡è§ è§¢è§œè§¦è©¶èª†è©¿è©¡è¨¿è©·èª‚èª„è©µèªƒèª�詴詺谼�豋豊豥豤豦貆貄貅賌赨赩趑趌���\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"������������������������������������������������趎è¶�è¶�è¶“è¶”è¶�è¶’è·°è· è·¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è·±è·®è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿é�„é�‰é€½é„�é„�������é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆é‰é‰¬é‰�é‰ é‰§é‰¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éˆ¶é‰¡é‰°éˆ±é‰”é‰£é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �é Žé¢¬é£¶é£¹é¦¯é¦²é¦°é¦µéªéª«é›é³ªé³é³§éº€é»½åƒ¦åƒ”僗僨僳僛僪åƒ�åƒ¤åƒ“åƒ¬åƒ°åƒ¯åƒ£åƒ å‡˜åŠ€åŠ�勩勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴墋塺墇墑墎�塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪���\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"������������������������������������������������嫚å«å««å«³å«¢å« 嫛嫬嫞å«��������嫙嫨嫟å·å¯ 寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘������廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺������������������慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�æ‘´æ‘¶æ‘²æ‘³æ‘½æ‘µæ‘¦æ’¦æ‘Žæ’‚æ‘žæ‘œæ‘‹æ‘“æ‘ æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…æœ„æœ¢æ¦±æ¦¶æ§‰æ¦ æ§Žæ¦–æ¦°æ¦¬æ¦¼æ¦‘æ¦™æ¦Žæ¦§æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓榪榡榞槙榗æ¦�æ§‚æ¦µæ¦¥æ§†æŠæ�æ‹æ®žæ®Ÿæ® æ¯ƒæ¯„æ¯¾æ»Žæ»µæ»±æ¼ƒæ¼¥æ»¸æ¼·ï¿½æ»»æ¼®æ¼‰æ½Žæ¼™æ¼šæ¼§æ¼˜æ¼»æ¼’æ»æ¼Šæ¼¶ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ½³æ»¹æ»®æ¼æ½€æ¼°æ¼¼æ¼µæ»«æ¼‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¼Žæ½ƒæ¼…滽滶漹漜滼漺漟æ¼�漞漈漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄������牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊������������������瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ 碬碢碤禘禊禋禖禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤è��è�œè†‰ï¿½è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"������������������������������������������������蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚�������蒱è“�è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�è’ è“—è“”è“’è“›è’°è’‘è™¡èœ³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èœ£èœ¨è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ 蜲蜪èœèœ¼èœ’蜺蜱蜵è�‚蜦蜧������������������蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�é„£é„œé„ é„¢é„Ÿé„�é„šé„¤é„¡é„›é…ºé…²é…¹é…³éŠ¥éŠ¤é‰¶éŠ›é‰ºéŠ éŠ”éŠªéŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧�鉾銇銩éŠ�銋éˆéšžéš¡é›¿é�˜é�½é�ºé�¾ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"������������������������������������������������鞃鞀鞂é�»éž„éž�é�¿éŸŽéŸ�é –ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¢é¢®é¤‚餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧鬾鬿é é¡éŸé³±é³²é³µéº§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åƒ¿å„ƒå„°åƒ¸å„†å„‡åƒ¶åƒ¾å„‹å„Œåƒ½å„ŠåŠ‹åŠŒå‹±å‹¯å™ˆå™‚å™Œå˜µå™�噊噉噆噘噚������������������噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�å¢±å¢ å¢£å¢¯å¢¬å¢¥å¢¡å£¿å«¿å«´å«½å«·å«¶å¬ƒå«¸å¬‚å«¹å¬�嬇嬅å¬�å±§å¶™å¶—å¶Ÿå¶’å¶¢å¶“å¶•å¶ å¶œå¶¡å¶šå¶žå¹©å¹�å¹ å¹œç·³å»›å»žå»¡å½‰å¾²æ†‹æ†ƒæ…¹æ†±æ†°æ†¢æ†‰æ†›æ†“æ†¯æ†æ†Ÿæ†’憪憡æ†�æ…¦æ†³æˆæ‘®æ‘°æ’–æ’ æ’…æ’—æ’œæ’�撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰�暩暲暷暪暯樀樆樗槥槸樕槱槤���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¨ æ§¿æ§¬æ§¢æ¨›æ¨�槾樧槲槮�������樔槷槧橀樈槦槻æ¨�槼槫樉樄樘樥æ¨�æ§¶æ¨¦æ¨‡æ§´æ¨–æ‘æ®¥æ®£æ®¢æ®¦æ°�������氀毿氂æ½�漦潾澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔������������������澓æ½�漀潡潫潽潧æ¾�æ½“æ¾‹æ½©æ½¿æ¾•æ½£æ½·æ½ªæ½»ç†²ç†¯ç†›ç†°ç† ç†šç†©ç†µç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�ç£Œç£‘ç£Žç£”ç£ˆç£ƒç£„ç£‰ç¦šç¦¡ç¦ ç¦œç¦¢ç¦›æ¶ç¨¹çª²çª´ï¿½çª³ç®·ç¯‹ç®¾ç®¬ç¯Žç®¯ç®¹ç¯Šç®µç³…糈糌���\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"������������������������������������������������糋緷緛緪緧緗緡縃緺緦�������緶緱緰緮緟罶羬羰ç¾ç¿ç¿«ç¿ªç¿¬ç¿¦ç¿¨è�¤è�§è†£è†Ÿè†žè†•膢膙膗舖è‰�������艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕������������������蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�è”®è”‚è“½è”žè“¶è”±è”¦è“§è“¨è“°è“¯è“¹è”˜è” è”°è”‹è”™è”¯è™¢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣è§è§°è§¬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙�谾è±�è²�賥賟賙賨賚è³�è³§è¶ è¶œè¶¡ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¶›è¸ è¸£è¸¥è¸¤è¸®è¸•è¸›è¸–è¸‘ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¸™è¸¦è¸§è¸”è¸’è¸˜è¸“è¸œè¸—è¸šè¼¬è¼¤è¼˜è¼šè¼ è¼£è¼–è¼—é�³é�°é�¯é�§é�«é„¯é„«é„©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é„ªé„²é„¦é„®é†…醆醊é†�醂醄醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯������������������鋂鋨鋊鋈鋎鋦é‹�é‹•é‹‰é‹ é‹žé‹§é‹‘é‹“éŠµé‹¡é‹†éŠ´é•¼é–¬é–«é–®é–°éš¤éš¢é›“éœ…éœˆéœ‚é�šéžŠéžŽéžˆéŸ�éŸ�é žé �é ¦é ©é ¨é é ›é §é¢²é¤ˆé£ºé¤‘é¤”é¤–é¤—é¤•é§œé§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱é†éƒé§é´é±é¦é¶éµé°é¨é¤é¬é³¼é³ºé³½é³¿é³·é´‡é´€é³¹é³»é´ˆé´…鴄麃黓é¼�é¼�儜�儓儗儚儑凞匴å�¡å™°å™ 噮噳噦噣���\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"������������������������������������������������å™å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�å¬–å¬¨å¬šå¬ å¬žå¯¯å¶¬å¶±å¶©å¶§å¶µå¶°å¶®å¶ªå¶¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¶²å¶å¶¯å¶´å¹§å¹¨å¹¦å¹¯å»©å»§å»¦å»¨å»¥å½‹å¾¼æ†�憨憖懅憴懆æ‡�懌憺憿憸������������������憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽暻暺曌朣樴橦橉橧樲橨樾æ©�æ©æ©¶æ©›æ©‘樨橚樻樿æ©�橪橤æ©�æ©�æ©”æ©¯æ©©æ© æ¨¼æ©žæ©–æ©•æ©�æ©Žæ©†æ•æ”æ–æ®§æ®ªæ®«æ¯ˆæ¯‡æ°„æ°ƒæ°†æ¾æ¿‹æ¾£æ¿‡æ¾¼æ¿Žæ¿ˆæ½žæ¿„澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲�澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡����\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"������������������������������������������������熽燘熼燆燚燛çŠ�犞ç�©ç�¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ 璔璒璕璡甋疀瘯ç˜ç˜±ç˜½ç˜³ç˜¼ç˜µç˜²ç˜°çš»ç›¦çžšï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢ç£ç£Ÿç£ 禤穄穈穇窶������������������窸窵窱窷篞篣篧ç¯�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗ç³�ç³‘ç¸’ç¸¡ç¸—ç¸Œç¸Ÿç¸ ç¸“ç¸Žç¸œç¸•ç¸šç¸¢ç¸‹ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�è•¢è•„è•‘è•‡è•£è”¾è•›è•±è•Žè•®è•µè••è•§è• è–Œè•¦è•�蕔�蕥蕬虣虥虤螛èž�螗螓螒螈èž�螖���\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"������������������������������������������������螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔�������螜螚螉褞褦褰è¤è¤®è¤§è¤±è¤¢è¤©è¤£è¤¯è¤¬è¤Ÿè§±è« 諢諲諴諵è«�謔諤諟������諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶������������������踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»é‚†éƒºé„³é„µé„¶é†“é†�醑é†�é†�錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒéŒŽéŒ�é‹‹éŒ�鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒éœ�éž™éž—éž”éŸ°éŸ¸é µé ¯é ²é¤¤é¤Ÿé¤§é¤©é¦žé§®é§¬é§¥é§¤é§°ï¿½é§£é§ªé§©é§§éª¹éª¿éª´éª»é«¶é«ºé«¹é«·é¬³ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"������������������������������������������������鮀鮅鮇é¼é¾é»é®‚鮓鮒é®��������éºé®•é½é®ˆé´¥é´—é´ é´žé´”é´©é´�鴘鴢é´�鴙鴟麈麆麇麮éºé»•é»–é»ºé¼’é¼½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å„¦å„¥å„¢å„¤å„ å„©å‹´åš“åšŒåš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒å¬å¬¥å¬²å¬£å¬¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¬§å¬¦å¬¯å¬®å»å¯±å¯²å¶·å¹¬å¹ªå¾¾å¾»æ‡ƒæ†µæ†¼æ‡§æ‡ 懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª�檖æª�æª¥æª‰æªŸæª›æª¡æªžæª‡æª“æªŽæª•æªƒæª¨æª¤æª‘æ©¿æª¦æªšæª…æªŒæª’æ›æ®æ°‰æ¿Œæ¾©æ¿´æ¿”æ¿£æ¿œæ¿æ¿§æ¿¦æ¿žæ¿²æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�ç’ªç’璱璥璯ç”�甑甒ç”�疄癃癈�癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰���\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"������������������������������������������������磳磽礂磻磼磲礅磹磾礄�������禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸������篽簆篰篱ç°�簊糨ç¸ç¸¼ç¹‚縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿������������������罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�è–§è–•è– è–‹è–£è•»è–¤è–šè–žè•·è•¼è–‰è–¡è•ºè•¸è•—è–Žè––è–†è–�è–™è–�è–�薢薂薈薅蕹蕶薘è–�薟虨螾螪èžèŸ…螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒褷襂è¦è¦¯è¦®è§²è§³è¬žè¬˜è¬–謑謅謋謢è¬��謒謕謇è¬�謈謆謜謓謚è±�豰豲豱���\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"������������������������������������������������豯貕貔賹赯蹎è¹�蹓è¹�蹌�������蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�é† éŽ¡éŽƒéŽ¯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��������é�‘é� é�éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§éŽ€é�Žé�™é—‡é—€é—‰é—ƒé—…ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é–·éš®éš°éš¬éœ éœŸéœ˜éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯é¤é¤±é¤°é¦˜é¦£é¦¡é¨‚駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼éˆé®šé®¨é®žé®›é®¦é®¡é®¥é®¤é®†é®¢é® 鮯鴳éµ�鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵é´éºŠéº‰éº�éº°é»ˆé»šé»»é»¿é¼¤é¼£é¼¢é½”é¾ å„±ï¿½å„儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀���\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"������������������������������������������������å¹å¹®æ‡˜æ‡Ÿæ‡æ‡®æ‡±æ‡ªæ‡°æ‡«ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‡–懩擿攄擽擸æ”�æ”ƒæ“¼æ–”æ—›æ›šæ››æ›˜æ«…æª¹æª½æ«¡æ«†æªºæª¶æª·æ«‡æª´æªæžï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¯‰æ°‹ç€‡ç€Œç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�������������������璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺磿礌礓礔礉ç¤�礒礑ç¦ç¦¬ç©Ÿç°œç°©ç°™ç° ç°Ÿç°ç°�簦簨簢簥簰繜ç¹�ç¹–ç¹£ç¹˜ç¹¢ç¹Ÿç¹‘ç¹ ç¹—ç¹“ç¾µç¾³ç¿·ç¿¸è�µè‡‘臒è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓�èŸèŸ˜èŸ£èž¤èŸ—蟙è �蟴蟨èŸ�襓襋è¥����\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"������������������������������������������������襌襆è¥�襑襉謪謧謣謳謰�������謵è‡è¬¯è¬¼è¬¾è¬±è¬¥è¬·è¬¦è¬¶è¬®è¬¤è¬»è¬½è¬ºè±‚è±µè²™è²˜è²—è³¾è´„è´‚è´€è¹œè¹¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¹ è¹—è¹–è¹žè¹¥è¹§è¹›è¹šè¹¡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵������������������鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟éŽ�鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵éŠéŒé‹é¯‡é¯†é¯ƒé®¿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋鵙鵖鵌�鵗鵒鵔鵟鵘鵚麎麌黟é¼�鼀鼖鼥���\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"������������������������������������������������鼫鼪鼩鼨齌齕儴儵劖勷�������厴嚫åšåš¦åš§åšªåš¬å£šå£�壛夒嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞������æ—�æ›žæ«§æ« æ«Œæ«‘æ«™æ«‹æ«Ÿæ«œæ«�æ««æ«�æ«�æ«žæ æ®°æ°Œç€™ç€§ç€ ç€–ç€«ç€¡ç€¢ç€£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç€©ç€—ç€¤ç€œç€ªçˆŒçˆŠçˆ‡çˆ‚çˆ…çŠ¥çŠ¦çŠ¤çŠ£çŠ¡ç“‹ç“…ç’·ç“ƒç”–ç™ çŸ‰çŸŠçŸ„çŸ±ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕艤艡艣藫藱è—è—™è—¡è—¨è—šè——è—¬è—²è—¸è—˜è—Ÿè—£è—œè—‘è—°è—¦è—¯è—žè—¢è €èŸºè ƒèŸ¶èŸ·è ‰è Œè ‹è †èŸ¼è ˆèŸ¿è Šï¿½è ‚è¥¢è¥šè¥›è¥—è¥¡è¥œè¥˜è¥�襙覈覷覶���\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"������������������������������������������������觶è�èˆèŠè€è“è–è”è‹è•�������è‘è‚è’è—豃豷豶貚贆贇贉趬趪è¶è¶«è¹è¹¸è¹³è¹ªè¹¯è¹»è»‚轒轑è½�è½�������轓辴酀鄿醰é†é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žé�€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�’é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�é¨¤é¨›é¨¢é¨ é¨§é¨£é¨žé¨œé¨”é«‚é¬‹é¬Šé¬Žé¬Œé¬·é¯ªé¯«é¯ é¯žé¯¤é¯¦é¯¢é¯°é¯”é¯—é¯¬é¯œé¯™é¯¥é¯•é¯¡é¯šéµ·é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼é¼é½€ï¿½é½�é½�齖齗齘匷嚲嚵嚳壣å…巆巇���\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"������������������������������������������������廮廯忀å¿�懹攗攖攕攓旟�������曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱ç�‚瀸瀿瀺瀹ç�€ç€»ç€³ç��������爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›çŸŒçŸŽçŸ�çŸ�矲礥礣礧礨礤礩禲穮穬ç©ç«·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç±‰ç±ˆç±Šç±‡ç±…糮繻繾çº�纀羺翿è�¹è‡›è‡™èˆ‹è‰¨è‰©è˜¢è—¿è˜�è—¾è˜›è˜€è—¶è˜„è˜‰è˜…è˜Œè—½è ™è �è ‘è —è “è –è¥£è¥¦è¦¹è§·è èªè�è¨è£è¥è§è趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®ï¿½éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎���\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"������������������������������������������������饙饌饋饓騲騴騱騬騪騶�������騩騮騸é¨é«‡é«Šé«†é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤������é¶�鶒鶘é¶�é¶›é¶ é¶”é¶œé¶ªé¶—é¶¡é¶šé¶¢é¶¨é¶žé¶£é¶¿é¶©é¶–é¶¦é¶§éº™éº›éºšé»¥é»¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é»§é»¦é¼°é¼®é½›é½ é½žé½�齙龑儺儹劘劗囃嚽嚾åˆå‡å·‹å·�廱懽攛欂櫼欃櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�ç¤ç¤±ç¤¯ç±”籓糲纊纇纈纋纆çº�ç½�羻耰è‡�è˜˜è˜ªè˜¦è˜Ÿè˜£è˜œè˜™è˜§è˜®è˜¡è˜ è˜©è˜žè˜¥è ©è �è ›è è ¤è œè «è¡Šè¥è¥©è¥®è¥«è§ºè¹è¸è…èºè»è´�贔趯躎躌轞轛�è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�¼é�°é�¹ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"������������������������������������������������é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺騿é«�鬕鬗鬘鬖鬺é’é°«é°�鰜������鰬鰣鰨鰩鰤鰡鶷鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱é¶é·Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¶³é·�鶲鹺麜黫黮é»é¼›é¼˜é¼šé¼±é½Žé½¥é½¤é¾’亹囆囅囋奱å‹åŒå·•å·‘å»²æ”¡æ” æ”¦æ”¢æ¬‹æ¬ˆæ¬‰æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ç“•瓙瓗ç™çšç¤µç¦´ç©°ç©±ç±—籜籙籛籚糴糱纑ç½�ç¾‡è‡žè‰«è˜´è˜µè˜³è˜¬è˜²è˜¶è ¬è ¨è ¦è ªè ¥è¥±è¦¿è¦¾è§»è¾è®„讂讆讅è¿è´•躕躔躚躒èº�èº–èº—è½ è½¢é…‡é‘Œé‘��鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋���\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"������������������������������������������������饔饛驎驓驔驌é©�驈驊驉�������驒é©�é«�鬙鬫鬻é–é•鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋������é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲å�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å·˜è ¯å½�æˆ�戃戄攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�çŽƒç™°çŸ”ç±§ç±¦çº•è‰¬è˜ºè™€è˜¹è˜¼è˜±è˜»è˜¾è °è ²è ®è ³è¥¶è¥´è¥³è§¾è®Œè®Žè®‹è®ˆè±…è´™èº˜è½¤è½£é†¼é‘¢é‘•é‘�é‘—é‘žéŸ„éŸ…é €é©–é©™é¬žé¬Ÿé¬ é±’é±˜é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨é·é»‚é»�黲黳鼆�鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�åŽï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å±æ”æ›æ›®æ¬“ç�Ÿç�¡ç��ç� 爣�������瓛瓥矕礸禷禶籪纗羉è‰è™ƒè ¸è ·è µè¡‹è®”è®•èºžèºŸèº èº�醾醽釂鑫鑨������鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•é™é±£é±§é±¦é±¢é±žé± 鸂鷾鸇鸃鸆鸅鸀é¸�é¸‰é·¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é·½é¸„éº é¼žé½†é½´é½µé½¶å›”æ”®æ–¸æ¬˜æ¬™æ¬—æ¬šç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘鑯鑱鑳é�‰é¡²é¥Ÿé±¨é±®é±é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© 鱴鱳鱱鱵鸔鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œï¿½èº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•���\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"������������������������������������������������鸗齈戇欞爧虌躨钂钀é’��������驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªéº¤é½¾é½‰é¾˜î€€î€�������î€�î€�î€�î€�î€žî€Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚��î‚����\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"������������������������������������������������î‚�î‚��������î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚������îƒ�������������������îƒ�îƒ�îƒ�îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºîƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„�î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„����\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"������������������������������������������������î…��������î…�î…Žî…�î…�î…�î…žî…Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…������������������î†�î†�î†�î†�î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†î†®î†¯î†°î†±î†²î†³î†´î†µî†¶î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡��î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"������������������������������������������������î‡î‡®î‡¯î‡°î‡±î‡²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�������îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³îˆ´îˆµîˆ¶îˆ·îˆ¸îˆ¹îˆºîˆ»îˆ¼îˆ½îˆ¾îˆ¿î‰€î‰�î‰�î‰�î‰�î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ��îŠ�îŠ�îŠ����\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"������������������������������������������������îŠ�îŠžîŠŸï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�������������������î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯î‹°î‹±î‹²î‹³î‹´î‹µî‹¶î‹·î‹¸î‹¹î‹ºî‹»î‹¼î‹½î‹¾î‹¿îŒ€îŒ�îŒ�îŒ�îŒ�îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒîŒ®îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµï¿½îŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚���\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"������������������������������������������������î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£îŽ¤îŽ¥îŽ¦îŽ§îŽ¨îŽ©îŽªîŽ«îŽ¬îŽîŽ®îŽ¯îŽ°îŽ±îŽ²îŽ³îŽ´îŽµîŽ¶îŽ·îŽ¸îŽ¹îŽºîŽ»îŽ¼îŽ½îŽ¾îŽ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢ï¿½î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"������������������������������������������������î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“������î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�������������������î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�î‘žî‘Ÿî‘ î‘¡î‘¢î‘£î‘¤î‘¥î‘¦î‘§î‘¨î‘©î‘ªî‘«î‘¬î‘î’�î’�î’Žî’��î’����\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"������������������������������������������������î’�î’žî’Ÿî’ î’¡î’¢î’£î’¤î’¥î’¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î’§î’¨î’©î’ªî’«î’¬î’������î“�î“�î“�î“�������������������î“�î“žî“Ÿî“ î“¡î“¢î“£î“¤î“¥î“¦î“§î“¨î“©î“ªî“«î“¬î“î”�î”�î”�î”�î”�î”žî”Ÿî” î”¡î”¢î”£î”¤î”¥î”¦î”§î”¨î”©î”ªî”«î”¬î”�î•����\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"������������������������������������������������î•�î•�î•��������î•�î•žî•Ÿî• î•¡î•¢î•£î•¤î•¥î•¦î•§î•¨î•©î•ªî•«î•¬î•������î–�������������������î–�î–Žî–�î–�î–�î–žî–Ÿî– î–¡î–¢î–£î–¤î–¥î–¦î–§î–¨î–©î–ªî–«î–¬î–î—�î—�î—Žî—�î—�î—�î—žî—Ÿî— î—¡î—¢î—£î—¤î—¥î—¦î—§î—¨î—©ï¿½î—ªî—«î—¬î—���\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�������������������������������������������������������î˜�î˜�î˜�î˜�������î˜�î˜žî˜Ÿî˜ î˜¡î˜¢î˜£î˜¤î˜¥î˜¦î˜§î˜¨î˜©î˜ªî˜«î˜¬î˜î˜®î˜¯î˜°î˜±î˜²î˜³î˜´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î˜µî˜¶î˜·î˜¸î˜¹î˜ºî˜»î˜¼î˜½î˜¾î˜¿î™€î™�î™�î™�î™�î™�î™žî™Ÿî™ î™¡î™¢î™£î™¤î™¥î™¦î™§î™¨î™©î™ªî™«î™¬î™î™®î™¯î™°î™±î™²î™³î™´î™µî™¶î™·î™¸î™¹î™ºî™»î™¼î™½î™¾î™¿îš€îš�îš�îš�îš��îš�îšžîšŸîš îš¡îš¢îš£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"������������������������������������������������îšï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îš®îš¯îš°îš±îš²îš³îš´îšµîš¶îš·îš¸îš¹îšºîš»îš¼îš½îš¾îš¿î›€î›�������î›�î›�î›�î›�î›žî›Ÿî› î›¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î›¢î›£î›¤î›¥î›¦î›§î›¨î›©î›ªî›«î›¬î›î›®î›¯î›°î›±î›²î›³î›´î›µî›¶î›·î›¸î›¹î›ºî›»î›¼î›½î›¾î›¿îœ€îœ�îœ�îœ�îœ�îœ�îœžîœŸîœ îœ¡îœ¢îœ£îœ¤îœ¥îœ¦îœ§îœ¨îœ©îœªîœ«îœ¬îœîœ®îœ¯îœ°îœ±îœ²îœ³îœ´îœµîœ¶îœ·îœ¸îœ¹îœºîœ»îœ¼îœ½îœ¾îœ¿î�€î��î�‚î�ƒï¿½î�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î�����\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"������������������������������������������������î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îž€îž�îž�������������������îž�îž�îž�îžžîžŸîž îž¡îž¢îž£îž¤îž¥îž¦îž§îž¨îž©îžªîž«îž¬îžîž®îž¯îž°îž±îž²îž³îž´îžµîž¶îž·îž¸îž¹îžºîž»îž¼îž½îž¾îž¿îŸ€îŸ�îŸ�îŸ�îŸ�îŸ�îŸžîŸŸîŸ îŸ¡îŸ¢îŸ£îŸ¤îŸ¥îŸ¦îŸ§îŸ¨îŸ©îŸªîŸ«îŸ¬îŸîŸ®îŸ¯îŸ°ï¿½îŸ±îŸ²îŸ³îŸ´îŸµîŸ¶îŸ·îŸ¸îŸ¹îŸºîŸ»îŸ¼îŸ½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îŸ¾îŸ¿î €î �î ‚î ƒî „î …î †î ‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î ˆî ‰î Šî ‹î Œî �î Žî �î �î ‘î ’î “î ”î •î –î —î ˜î ™î šî ›î œî �î žî Ÿî î ¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î ¢î £î ¤î ¥î ¦î §î ¨î ©î ªî «î ¬î î ®î ¯î °î ±î ²î ³î ´î µî ¶î ·î ¸î ¹î ºî »ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î ¼î ½î ¾î ¿î¡€î¡�î¡�î¡�î¡�î¡�î¡žî¡Ÿî¡ î¡¡î¡¢î¡£î¡¤î¡¥î¡¦î¡§î¡¨î¡©î¡ªî¡«î¡¬î¡î¡®î¡¯î¡°î¡±î¡²î¡³î¡´î¡µî¡¶î¡·î¡¸î¡¹î¡ºî¡»î¡¼î¡½î¡¾î¡¿î¢€î¢�î¢�î¢�î¢�î¢�ï¿½î¢žî¢Ÿî¢ î¢¡î¢¢î¢£î¢¤î¢¥î¢¦î¢§î¢¨î¢©î¢ªï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"������������������������������������������������î¢î¢®î¢¯î¢°î¢±î¢²î¢³î¢´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¢µî¢¶î¢·î¢¸î¢¹î¢ºî¢»î¢¼î¢½î¢¾î¢¿î£€î£�î£�������î£�î£�î£�î£žî£Ÿî£ î£¡î£¢î££î£¤î£¥î£¦î£§î£¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î£©î£ªî£«î£¬î£î£®î£¯î£°î£±î£²î£³î£´î£µî£¶î£·î£¸î£¹î£ºî£»î£¼î£½î£¾î£¿î¤€î¤�î¤�î¤�î¤�î¤�î¤žî¤Ÿî¤ î¤¡î¤¢î¤£î¤¤î¤¥î¤¦î¤§î¤¨î¤©î¤ªî¤«î¤¬î¤î¤®î¤¯î¤°î¤±î¤²î¤³î¤´î¤µî¤¶î¤·î¤¸î¤¹î¤ºî¤»î¤¼î¤½î¤¾î¤¿î¥€î¥��î¥�î¥�î¥����\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"������������������������������������������������î¥�î¥žî¥Ÿî¥ î¥¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¥¢î¥£î¥¤î¥¥î¥¦î¥§î¥¨î¥©î¥ªî¥«î¥¬î¥î¥®î¥¯î¥°î¥±î¥²î¥³î¥´î¥µî¥¶î¥·î¥¸î¥¹î¥ºî¥»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¥¼î¥½î¥¾î¥¿î¦€î¦�î¦�î¦�î¦�������������������î¦�î¦žî¦Ÿî¦ î¦¡î¦¢î¦£î¦¤î¦¥î¦¦î¦§î¦¨î¦©î¦ªî¦«î¦¬î¦î¦®î¦¯î¦°î¦±î¦²î¦³î¦´î¦µî¦¶î¦·î¦¸î¦¹î¦ºî¦»î¦¼î¦½î¦¾î¦¿î§€î§�î§�î§Žî§�î§�î§�î§žî§Ÿî§ î§¡î§¢î§£î§¤î§¥î§¦î§§î§¨î§©î§ªî§«î§¬î§î§®î§¯î§°î§±î§²î§³î§´î§µî§¶î§·ï¿½î§¸î§¹î§ºî§»î§¼î§½î§¾î§¿î¨€î¨����\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"������������������������������������������������î¨��������î¨�î¨�î¨�î¨žî¨Ÿî¨ î¨¡î¨¢î¨£î¨¤î¨¥î¨¦î¨§î¨¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¨©î¨ªî¨«î¨¬î¨î¨®î¨¯î¨°î¨±î¨²î¨³î¨´î¨µî¨¶î¨·î¨¸î¨¹î¨ºî¨»î¨¼î¨½î¨¾î¨¿î©€î©�������������������î©�î©�î©�î©�î©žî©Ÿî© î©¡î©¢î©£î©¤î©¥î©¦î©§î©¨î©©î©ªî©«î©¬î©î©®î©¯î©°î©±î©²î©³î©´î©µî©¶î©·î©¸î©¹î©ºî©»î©¼î©½î©¾î©¿îª€îª�îª�îª�îª�îª�îªžîªŸîª îª¡îª¢îª£îª¤ï¿½îª¥îª¦îª§îª¨îª©îªªîª«îª¬îªîª®îª¯îª°îª±ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�������������������������������������������������������î«�î«�î«�î«�������î«�î«žî«Ÿî« î«¡î«¢î«£î«¤î«¥î«¦î«§î«¨î«©î«ªî««î«¬î«î«®î«¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î«°î«±î«²î«³î«´î«µî«¶î«·î«¸î«¹î«ºî«»î«¼î«½î«¾î«¿î¬€î¬�î¬�î¬�î¬�î¬�î¬žî¬Ÿî¬ î¬¡î¬¢î¬£î¬¤î¬¥î¬¦î¬§î¬¨î¬©î¬ªî¬«î¬¬î¬î¬®î¬¯î¬°î¬±î¬²î¬³î¬´î¬µî¬¶î¬·î¬¸î¬¹î¬ºî¬»î¬¼î¬½î¬¾î¬¿î€î�î‚îƒî„î…î†î‡îˆî‰îŠî‹îŒî�îŽî�î�î‘�î’î“î”î•î–î—î˜î™îšî›îœî�îžï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"������������������������������������������������îŸî î¡î¢î£î¤î¥î¦î§î¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î©îªî«î¬îî®î¯î°î±î²î³î´îµî¶î·î¸î¹îºî»î¼î½î¾î¿î®€î®�������î®�î®�î®�������������������î®�î®žî®Ÿî® î®¡î®¢î®£î®¤î®¥î®¦î®§î®¨î®©î®ªî®«î®¬î®î®®î®¯î®°î®±î®²î®³î®´î®µî®¶î®·î®¸î®¹î®ºî®»î®¼î®½î®¾î®¿î¯€î¯�î¯�î¯�î¯�î¯�î¯žî¯Ÿî¯ î¯¡î¯¢î¯£î¯¤î¯¥î¯¦î¯§î¯¨î¯©î¯ªî¯«î¯¬î¯î¯®î¯¯î¯°î¯±î¯²î¯³î¯´î¯µî¯¶î¯·î¯¸î¯¹î¯ºî¯»î¯¼î¯½î¯¾ï¿½î¯¿î°€î°����\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"������������������������������������������������î°�î°Žî°�î°��������î°�î°žî°Ÿî° î°¡î°¢î°£î°¤î°¥î°¦î°§î°¨î°©î°ªî°«î°¬î°î°®î°¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î°°î°±î°²î°³î°´î°µî°¶î°·î°¸î°¹î°ºî°»î°¼î°½î°¾î°¿î±€î±�������������������î±�î±�î±�î±�î±žî±Ÿî± î±¡î±¢î±£î±¤î±¥î±¦î±§î±¨î±©î±ªî±«î±¬î±î±®î±¯î±°î±±î±²î±³î±´î±µî±¶î±·î±¸î±¹î±ºî±»î±¼î±½î±¾î±¿î²€î²�î²�î²�î²�î²�î²žî²Ÿî² î²¡î²¢î²£î²¤î²¥î²¦î²§î²¨î²©î²ªî²«ï¿½î²¬î²î²®î²¯î²°î²±î²²î²³î²´î²µî²¶î²·î²¸ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"������������������������������������������������î³��������î³�î³�î³�������î³�î³žî³Ÿî³ î³¡î³¢î³£î³¤î³¥î³¦î³§î³¨î³©î³ªî³«î³¬î³î³®î³¯î³°î³±î³²î³³î³´î³µî³¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î³·î³¸î³¹î³ºî³»î³¼î³½î³¾î³¿î´€î´�î´�î´Žî´�î´�î´�î´žî´Ÿî´ î´¡î´¢î´£î´¤î´¥î´¦î´§î´¨î´©î´ªî´«î´¬î´î´®î´¯î´°î´±î´²î´³î´´î´µî´¶î´·î´¸î´¹î´ºî´»î´¼î´½î´¾î´¿îµ€îµ�îµ�îµ�îµ��îµ�îµžîµŸîµ îµ¡îµ¢îµ£îµ¤îµ¥ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"������������������������������������������������îµîµ®îµ¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îµ°îµ±îµ²îµ³îµ´îµµîµ¶îµ·îµ¸îµ¹îµºîµ»îµ¼îµ½îµ¾îµ¿î¶€î¶�������î¶�î¶Žî¶�î¶�î¶�î¶žî¶Ÿî¶ î¶¡î¶¢î¶£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¶¤î¶¥î¶¦î¶§î¶¨î¶©î¶ªî¶«î¶¬î¶î¶®î¶¯î¶°î¶±î¶²î¶³î¶´î¶µî¶¶î¶·î¶¸î¶¹î¶ºî¶»î¶¼î¶½î¶¾î¶¿î·€î·�î·�î·Žî·�î·�î·�î·žî·Ÿî· î·¡î·¢î·£î·¤î·¥î·¦î·§î·¨î·©î·ªî·«î·¬î·î·®î·¯î·°î·±î·²î·³î·´î·µî·¶î··î·¸î·¹î·ºî·»î·¼î·½î·¾î·¿î¸€î¸��î¸�î¸�î¸����\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�������������������������������������������������������î¸�î¸žî¸Ÿî¸ î¸¡î¸¢î¸£î¸¤î¸¥î¸¦î¸§î¸¨î¸©î¸ªî¸«î¸¬î¸î¸®î¸¯î¸°î¸±î¸²î¸³î¸´î¸µî¸¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¸·î¸¸î¸¹î¸ºî¸»î¸¼î¸½î¸¾î¸¿î¹€î¹�î¹�î¹�î¹�������������������î¹�î¹žî¹Ÿî¹ î¹¡î¹¢î¹£î¹¤î¹¥î¹¦î¹§î¹¨î¹©î¹ªî¹«î¹¬î¹î¹®î¹¯î¹°î¹±î¹²î¹³î¹´î¹µî¹¶î¹·î¹¸î¹¹î¹ºî¹»î¹¼î¹½î¹¾î¹¿îº€îº�îº�îº�îº�îº�îºžîºŸîº îº¡îº¢îº£îº¤îº¥îº¦îº§îº¨îº©îºªîº«îº¬îºîº®îº¯îº°îº±îº²ï¿½îº³îº´îºµîº¶îº·îº¸îº¹îººîº»îº¼îº½îº¾îº¿ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"������������������������������������������������î»��������î»�î»�î»�î»�î»žî»Ÿî» î»¡î»¢î»£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î»¤î»¥î»¦î»§î»¨î»©î»ªî»«î»¬î»î»®î»¯î»°î»±î»²î»³î»´î»µî»¶î»·î»¸î»¹î»ºî»»î»¼î»½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î»¾î»¿î¼€î¼�î¼�î¼�î¼�î¼�î¼žî¼Ÿî¼ î¼¡î¼¢î¼£î¼¤î¼¥î¼¦î¼§î¼¨î¼©î¼ªî¼«î¼¬î¼î¼®î¼¯î¼°î¼±î¼²î¼³î¼´î¼µî¼¶î¼·î¼¸î¼¹î¼ºî¼»î¼¼î¼½î¼¾î¼¿î½€î½�î½�î½�î½�î½�î½žî½Ÿï¿½î½ î½¡î½¢î½£î½¤î½¥î½¦î½§î½¨î½©î½ªî½«î½¬ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"������������������������������������������������î½î½®î½¯î½°î½±î½²î½³î½´î½µî½¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î½·î½¸î½¹î½ºî½»î½¼î½½î½¾î½¿î¾€î¾�î¾�î¾�î¾�������î¾�î¾žî¾Ÿî¾ î¾¡î¾¢î¾£î¾¤î¾¥î¾¦î¾§î¾¨î¾©î¾ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¾«î¾¬î¾î¾®î¾¯î¾°î¾±î¾²î¾³î¾´î¾µî¾¶î¾·î¾¸î¾¹î¾ºî¾»î¾¼î¾½î¾¾î¾¿î¿€î¿�î¿�î¿�î¿�î¿�î¿žî¿Ÿî¿ î¿¡î¿¢î¿£î¿¤î¿¥î¿¦î¿§î¿¨î¿©î¿ªî¿«î¿¬î¿î¿®î¿¯î¿°î¿±î¿²î¿³î¿´î¿µî¿¶î¿·î¿¸î¿¹î¿ºî¿»î¿¼î¿½î¿¾î¿¿ï€€ï€��ï€�ï€�ï€����\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"������������������������������������������������ï€�ï€žï€Ÿï€ ï€¡ï€¢ï€£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï€¤ï€¥ï€¦ï€§ï€¨ï€©ï€ªï€«ï€¬ï€ï€®ï€¯ï€°ï€±ï€²ï€³ï€´ï€µï€¶ï€·ï€¸ï€¹ï€ºï€»ï€¼ï€½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï€¾ï€¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—������������������ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï‚€ï‚�ï‚�ï‚�ï‚�ï‚�ï‚žï‚Ÿï‚ ï‚¡ï‚¢ï‚£ï‚¤ï‚¥ï‚¦ï‚§ï‚¨ï‚©ï‚ªï‚«ï‚¬ï‚�ïƒ����\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"������������������������������������������������ïƒ�ïƒ�ïƒ��������ïƒ�ïƒžïƒŸïƒ ïƒ¡ïƒ¢ïƒ£ïƒ¤ïƒ¥ïƒ¦ïƒ§ïƒ¨ïƒ©ïƒªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ïƒ«ïƒ¬ïƒïƒ®ïƒ¯ïƒ°ïƒ±ïƒ²ïƒ³ïƒ´ïƒµïƒ¶ïƒ·ïƒ¸ïƒ¹ïƒºïƒ»ïƒ¼ïƒ½ïƒ¾ïƒ¿ï„€ï„�������������������ï„�ï„�ï„�ï„�ï„žï„Ÿï„ ï„¡ï„¢ï„£ï„¤ï„¥ï„¦ï„§ï„¨ï„©ï„ªï„«ï„¬ï„ï…�ï…�ï…Žï…�ï…�ï…�ï…žï…Ÿï… ï…¡ï…¢ï…£ï…¤ï…¥ï…¦ï¿½ï…§ï…¨ï…©ï…ªï…«ï…¬ï…���\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�������������������������������������������������������ï†�ï†�ï†�ï†�������ï†�ï†žï†Ÿï† ï†¡ï†¢ï†£ï†¤ï†¥ï†¦ï†§ï†¨ï†©ï†ªï†«ï†¬ï†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[249] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������ï‡�ï‡�ï‡�ï‡�ï‡�ï‡žï‡Ÿï‡ ï‡¡ï‡¢ï‡£ï‡¤ï‡¥ï‡¦ï‡§ï‡¨ï‡©ï‡ªï‡«ï‡¬ï‡ï‡®ï‡¯ï‡°ï‡±ï‡²ï‡³ï‡´ï‡µï‡¶ï‡·ï‡¸ï‡¹ï‡ºï‡»ï‡¼ï¿½ï‡½ï‡¾ï‡¿ïˆ€ïˆ����\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"������������������������������������������������ïˆ�ïˆ�ïˆ��������ïˆ�ïˆžïˆŸïˆ ïˆ¡ïˆ¢ïˆ£ïˆ¤ïˆ¥ïˆ¦ïˆ§ïˆ¨ïˆ©ïˆªïˆ«ïˆ¬ïˆï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ïˆ®ïˆ¯ïˆ°ïˆ±ïˆ²ïˆ³ïˆ´ïˆµïˆ¶ïˆ·ïˆ¸ïˆ¹ïˆºïˆ»ïˆ¼ïˆ½ïˆ¾ïˆ¿ï‰€ï‰�������������������ï‰�ï‰�ï‰�ï‰�ï‰žï‰Ÿï‰ ï‰¡ï‰¢ï‰£ï‰¤ï‰¥ï‰¦ï‰§ï‰¨ï‰©ï‰ªï‰«ï‰¬ï‰ï‰®ï‰¯ï‰°ï‰±ï‰²ï‰³ï‰´ï‰µï‰¶ï‰·ï‰¸ï‰¹ï‰ºï‰»ï‰¼ï‰½ï‰¾ï‰¿ïŠ€ïŠ�ïŠ�ïŠ�ïŠ�ïŠ�ïŠžïŠŸïŠ ïŠ¡ïŠ¢ïŠ£ïŠ¤ïŠ¥ïŠ¦ïŠ§ïŠ¨ïŠ©ï¿½ïŠªïŠ«ïŠ¬ïŠïŠ®ïŠ¯ïŠ°ïŠ±ïŠ²ïŠ³ïŠ´ïŠµïŠ¶ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�������������������������������������������������������ï‹�ï‹�ï‹�ï‹�������ï‹�ï‹žï‹Ÿï‹ ï‹¡ï‹¢ï‹£ï‹¤ï‹¥ï‹¦ï‹§ï‹¨ï‹©ï‹ªï‹«ï‹¬ï‹ï‹®ï‹¯ï‹°ï‹±ï‹²ï‹³ï‹´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï‹µï‹¶ï‹·ï‹¸ï‹¹ï‹ºï‹»ï‹¼ï‹½ï‹¾ï‹¿ïŒ€ïŒ�ïŒ�ïŒ�ïŒ�ïŒ�ïŒžïŒŸïŒ ïŒ¡ïŒ¢ïŒ£ïŒ¤ïŒ¥ïŒ¦ïŒ§ïŒ¨ïŒ©ïŒªïŒ«ïŒ¬ïŒïŒ®ïŒ¯ïŒ°ïŒ±ïŒ²ïŒ³ïŒ´ïŒµïŒ¶ïŒ·ïŒ¸ïŒ¹ïŒºïŒ»ïŒ¼ïŒ½ïŒ¾ïŒ¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–�ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"������������������������������������������������ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20105] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¤%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾∇��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20106] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?§ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ^_`abcdefghijklmnopqrstuvwxyzäöüß��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20107] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¤%&'()*+,-./0123456789:;<=>?ÉABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÅÜ_éabcdefghijklmnopqrstuvwxyzäöåü��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20108] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"§$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ^_`abcdefghijklmnopqrstuvwxyzæøå|��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20261] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ï£�]_abcdefghijklmnopqrstuvwxyzï£ |€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ¡¢£$Â¥#§¤«°±²³×µ¶·÷»¼½¾¿���������������ï£ï£®ï£¯ï£°ï£±ï£²ï£³ï£´ï£µï£¶ï£·ï£¸ï£¹ï£ºï£»â„¦Ã†Ã�ªĦIJĿÅ�ØŒºÞŦŊʼnĸæđðħıijŀłøœßþŧŋ\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[193] = \"��������������������������������`��������������������������������À���È���Ì�����Ò�����Ù�Ẁ�Ỳ�������à ���è���ì�����ò�����ù�áº��ỳ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"��������������������������������´��������������������������������Ã��Ć�É�Ǵ�Ã��ḰĹḾŃÓṔ�ŔŚ�Ú�Ẃ�Ã�Ź������á�ć�é�ǵ�Ã�ḱĺḿńóṕ�ŕś�ú�ẃ�ýź�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"��������������������������������^��������������������������������Â�Ĉ�Ê�ĜĤÎĴ����Ô���Ŝ�Û�Ŵ�Ŷáº�������â�ĉ�ê�Ä�ĥîĵ����ô���Å��û�ŵ�ŷẑ�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"��������������������������������~��������������������������������Ã���Ẽ���Ĩ����ÑÕ�����ŨṼ��Ỹ�������ã���ẽ���ĩ����ñõ�����ũṽ��ỹ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"��������������������������������¯��������������������������������Ā���Ē�Ḡ�Ī�����Ō�����Ū�����������Ä����ē�ḡ�ī�����Å������ū�����������������������������������������������������������������������������������������������������������Ǣ���������������ǣ��������������\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"��������������������������������˘��������������������������������Ă���Ĕ�Ğ�Ĭ�����Ŏ�����Ŭ�����������ă���ĕ�ğ�Ä�����Å������Å������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ë™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½á¸‚ÄŠá¸ŠÄ–á¸žÄ á¸¢Ä°ï¿½ï¿½ï¿½á¹€á¹„ï¿½á¹–ï¿½á¹˜á¹ á¹ªï¿½ï¿½áº†áºŠáºŽÅ»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½á¸ƒÄ‹á¸‹Ä—á¸ŸÄ¡á¸£ï¿½ï¿½ï¿½ï¿½á¹�ṅ�ṗ�ṙṡṫ��ẇẋáº�ż�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"��������������������������������¨��������������������������������Ä���Ë��ḦÃ������Ö�����Ü�ẄẌŸ�������ä���ë��ḧï�����ö����ẗü�ẅáº�ÿ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"��������������������������������˚��������������������������������Å�������������������Ů�����������å�������������������ů�ẘ�ẙ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"��������������������������������¸����������������������������������Çá¸���ĢḨ��ĶĻ�Ņ���ŖŞŢ��������������çḑ��ģḩ��ķļ�ņ���ŗşţ�������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[205] = \"��������������������������������Ë�����������������������������������������������Å������Ű�������������������������ő�����ű������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"��������������������������������˛��������������������������������Ą���Ę���Į�����Ǫ�����Ų�����������ą���ę���į�����ǫ�����ų������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"��������������������������������ˇ��������������������������������Ç��ČĎĚ�Ǧ�Ç��ǨĽ�ŇǑ��ŘŠŤǓ����Ž������ǎ�Ä�Ä�ě�ǧ�Ç�ǰǩľ�ňǒ��řšťǔ����ž�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20269] = (function(){ var d = \"\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]�_�abcdefghijklmnopqrstuvwxyz{|}�€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ��� ¡¢£$Â¥#§¤‘“«â†�↑→↓°±²³×µ¶·÷’â€�»¼½¿�`´^~¯̆̈�̧̨̲̊̋̌―¹®©™♩��⅛⅜â…�⅞ΩÆÃ�Ħ�IJĿÅ�ØŒºÞŦŊʼnĸæđðħıijŀłøœßþŧ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20273] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  â{à áãåçñÄ.<(+!&éêëèÃîïì~Ü$*);^-/Â[ÀÃ�ÃÅÇÑö,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#§'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µßstuvwxyz¡¿Ã�Ã�Þ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHIÂô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\\\ÒÓÕ0123456789³Û]Ùڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20277] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áã}çñ#.<(+!&éêëèÃîïìߤÅ*);^-/ÂÄÀÃ�Ã$ÇÑø,%_>?¦ÉÊËÈÃ�ÃŽÃ�ÃŒ`:ÆØ'=\\\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿Ã�Ã�Þ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHIÂôöòóõåJKLMNOPQR¹û~ùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20278] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  â{à áã}çñ§.<(+!&`êëèÃîïìߤÅ*);^-/Â#ÀÃ�Ã$ÇÑö,%_>?ø\\\\ÊËÈÃ�ÃŽÃ�Ìé:ÄÖ'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿Ã�Ã�Þ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHIÂô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20280] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âä{áãå\\\\ñ°.<(+!&]êë}Ãîï~ßé$*);^-/ÂÄÀÃ�ÃÅÇÑò,%_>?øÉÊËÈÃ�ÃŽÃ�Ìù:£§'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤µìstuvwxyz¡¿Ã�Ã�Þ®¢#¥·©@¶¼½¾¬|¯¨´×à ABCDEFGHIÂôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20284] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåç¦[.<(+|&éêëèÃîïìß]$*);¬-/ÂÄÀÃ�ÃÅÇ#ñ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:Ñ@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¨stuvwxyz¡¿Ã�Ã�Þ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20285] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñ$.<(+|&éêëèÃîïìß!£*);¬-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¯stuvwxyz¡¿Ã�Ã�Þ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20290] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a 。「」、・ヲァィゥ£.<(+|&ェォャï½ï½®ï½¯ï¿½ï½°ï¿½!Â¥*);¬-/abcdefgh�,%_>?[ijklmnop`:#@'=\\\"]アイウエオカキクケコqサシスセソタï¾�ツテトナニヌネノr�ハヒフ~‾ï¾�ホï¾�ï¾�ムメモヤユsヨラリル^¢\\\\tuvwxyzレロワï¾�゙゚{ABCDEFGHI������}JKLMNOPQR������$�STUVWXYZ������0123456789�����Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20297] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âä@áãå\\\\ñ°.<(+!&{êë}Ãîïìß§$*);^-/ÂÄÀÃ�ÃÅÇÑù,%_>?øÉÊËÈÃ�ÃŽÃ�̵:£à '=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤`¨stuvwxyz¡¿Ã�Ã�Þ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHIÂôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20420] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  ﹼﹽـﺀïº�ﺂﺃ¢.<(+|&ﺄﺅ��ﺋïº�ﺎïº�ﺑ!$*);¬-/ﺓﺕﺗﺙﺛïº�ﺟﺡ¦,%_>?ﺣﺥﺧﺩﺫïºïº¯ï£¶ïº³ØŒ:#@'=\\\"abcdefghiﺷﺻﺿﻃﻇjklmnopqrﻉﻊﻋﻌï»�ﻎï»�÷stuvwxyzï»�ﻑﻓﻕﻗﻙﻛï»�ﻵﻶﻷﻸ��ﻻﻼﻟﻡﻣﻥﻧﻩ؛ABCDEFGHIÂï»«ï¿½ï»¬ï¿½ï»ØŸJKLMNOPQRﻯﻰﻱﻲﻳ٠× STUVWXYZ١٢�٣٤٥0123456789�٦٧٨٩Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20423] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜÎ�ΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩ��|,%_>?�ΆΈΉ ΊΌΎÎ�`:£§'=\\\"ÄabcdefghiαβγδεζÖjklmnopqrηθικλμܨstuvwxyzνξοπÏ�σ�άÎήϊίόÏ�ϋώςτυφχψ¸ABCDEFGHIÂωâà äê´JKLMNOPQR±éèëîï°�STUVWXYZ½öôûùü0123456789ÿçÇ��Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20424] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a ×�בגדהוזחט¢.<(+|&יךכל×�×ž×Ÿ× ×¡!$*);¬-/עףפץצקרש¦,%_>?�ת�� ���‗`:#@'=\\\"�abcdefghi«»���±°jklmnopqr���¸�¤µ~stuvwxyz�����®^£¥•©§¶¼½¾[]‾¨´×{ABCDEFGHIÂ�����}JKLMNOPQR¹�����\\\\÷STUVWXYZ²�����0123456789³����Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20833] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a ï¿½ï¾ ï¾¡ï¾¢ï¾£ï¾¤ï¾¥ï¾¦ï¾§Â¢.<(+|&�ᄄᄅᆰᆱᆲï¾ï¾®ï¾¯!$*);¬-/ᄚᄆᄇᄈᄡᄉᄊᄋ¦,%_>?[�ᄌᄍᄎᄏᄐᄑᄒ`:#@'=\\\"]abcdefghiᅡᅢᅣᅤᅥᅦ�jklmnopqrᅧᅨᅩï¿�ᅫï¿�‾~stuvwxyzᅭᅮᅯᅰᅱᅲ^�\\\\�������ᅳᅴᅵ���{ABCDEFGHI������}JKLMNOPQR������₩�STUVWXYZ������0123456789�����Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20838] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  à¸�ขฃคฅฆง[¢.<(+|&�จฉชซฌà¸�ฎ]!$*);¬-/à¸�à¸�ฑฒณดต^¦,%_>?฿๎ถทธนบปผ`:#@'=\\\"à¹�abcdefghià¸�พฟภมย๚jklmnopqrรฤลฦวศ๛~stuvwxyzษสหฬà¸à¸®à¹�๑๒๓๔๕๖๗๘๙ฯะัาำิ{ABCDEFGHI�ีึืุู}JKLMNOPQRฺเà¹�โใไ\\\\�STUVWXYZๅๆ็่้๊0123456789๋์à¹���Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20866] = (function(){ var d = \"ЪЪ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌â”�└┘├┤┬┴┼▀▄█▌â–�░▒▓⌠■∙√≈≤≥ ⌡°²·÷â•�║╒ё╓╔╕╖╗╘╙╚╛╜â•�╞╟╠╡Ð�╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопÑ�Ñ€Ñ�тужвьызшÑ�щчъЮÐ�БЦДЕФГХИЙКЛМÐ�ОПЯРСТУЖВЬЫЗШÐЩЧЪ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20871] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñÞ.<(+!&éêëèÃîïì߯$*);Ö-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�Ìð:#Ã�'=\\\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]¤µöstuvwxyz¡¿@Ã�[®¢£¥·©§¶¼½¾¬|¯¨\\\\×þABCDEFGHIÂô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20880] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃÐ�ЄЅІЇЈЉ|,%_>?ЊЋЌÂÐŽÐ�юаб`:#@'=\\\"цabcdefghiдефгхийjklmnopqrклмнопÑ�~stuvwxyzÑ€Ñ�тужвьызшÑ�щчъЮÐ�БЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRÐ�ОПЯРС\\\\¤STUVWXYZТУЖВЬЫ0123456789ЗШÐЩЧŸ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20905] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà á�ċ{ñÇ.<(+!&éêëèÃîïìßĞİ*);^-/ÂÄÀÃ��Ċ[Ñş,%_>?�ÉÊËÈÃ�ÃŽÃ�Ìı:ÖŞ'=ܢabcdefghiħĉÅ�Å�|°jklmnopqrÄ¥Ä�ĵ¸�¤µöstuvwxyzĦĈŜŬ�@˙£ż}ݧ]·½$ĤĜĴ¨´×çABCDEFGHIÂô~òóġğJKLMNOPQR`û\\\\ùú�ü÷STUVWXYZ²Ô#Ã’Ã“Ä 0123456789³Û\\\"Ùڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20924] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�\\n\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„…\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäà áãåçñÃ�.<(+|&éêëèÃîïìß!$*);^-/ÂÄÀÃ�ÃÅÇÑŠ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæžÆ€µ~stuvwxyz¡¿Ã�[Þ®¢£¥·©§¶Œœ�¬š¯]Ž×{ABCDEFGHIÂôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20932] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ��Â�Â�‘’“”•–—˜™š›œÂ�žŸ����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[142] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������。「」、・ヲァィゥェォャï½ï½®ï½¯ï½°ï½±ï½²ï½³ï½´ï½µï½¶ï½·ï½¸ï½¹ï½ºï½»ï½¼ï½½ï½¾ï½¿ï¾€ï¾�ツテトナニヌネノハヒフï¾�ホï¾�ï¾�ムメモヤユヨラリルレロワï¾�゙゚��������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。,.・:;?ï¼�゛゜´`¨^ ̄_ヽヾã‚�ゞ〃ä»�々〆〇ー―â€�ï¼�\〜‖|…‥‘’“â€�()〔〕[]{ï½�〈〉《》「ã€�『ã€�ã€�】+−±×÷ï¼�â‰ ï¼œï¼žâ‰¦â‰§âˆžâˆ´â™‚â™€Â°â€²â€³â„ƒï¿¥ï¼„Â¢Â£ï¼…ï¼ƒï¼†ï¼Šï¼ Â§â˜†â˜…â—‹â—�◎◇�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������˘ˇ¸˙Ë�¯˛˚�΄΅��������¡¦¿��������������������������������������ºª©®™¤������������������������������������������������◆□■△▲▽▼※〒→â†�↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽âˆ�∵∫∬�������ʼn♯â™â™ªâ€ ‡¶����◯�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�123456789�������ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz�����\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�������������������������������������������������������������������������������������������������ΆΈΉΊΪ�Ό�ΎΫ�Î�����άÎήίϊÎ�όςÏ�ϋΰώ������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω���������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"������������������������������������������������������������������ЂЃЄЅІЇЈЉЊЋЌЎÐ������������������������������������ђѓєѕіїјљњћќўџ����������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂���������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"���������������������������������ÆÄ��Ħ�IJ�Å�Ŀ�ŊØŒ�ŦÞ����������������æđðħıijĸłŀʼnŋøœßŧþ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"���������������������������������Ã�ÀÄÂĂÇ�Ä€Ä„Ã…ÃƒÄ†ÄˆÄŒÃ‡ÄŠÄŽÃ‰ÃˆÃ‹ÃŠÄšÄ–Ä’Ä˜ï¿½ÄœÄžÄ¢Ä Ä¤Ã�ÃŒÃ�ÃŽÇ�İĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑÅ�ŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÃ�ŸŶŹŽŻ����������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"���������������������������������áà äâăǎÄ�ąåãćĉÄ�çċÄ�éèëêěėēęǵÄ�ğ�ġĥÃìïîÇ��īįĩĵķĺľļńňņñóòöôǒőÅ�õŕřŗśÅ�šşťţúùüûÅǔűūųůũǘǜǚǖŵýÿŷźžż����������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[173] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬â‘â‘®â‘¯â‘°â‘±â‘²â‘³â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ã�‰ãŒ”㌢ã��㌘㌧㌃㌶ã�‘ã�—ãŒ�㌦㌣㌫ã�ŠãŒ»ãŽœãŽ�㎞㎎ãŽ�ã�„㎡��������ã�»ã€žã€Ÿâ„–ã��℡㊤㊥㊦㊧㊨㈱㈲㈹ã�¾ã�½ã�¼ï¿½ï¿½ï¿½âˆ®âˆ‘���∟⊿������\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[176] = \"���������������������������������丂丄丅丌丒丟丣两丨丫丮丯丰丵乀ä¹�乄乇乑乚乜乣乨乩乴乵乹乿äº�亖亗äº�亯亹仃ä»�ä»šä»›ä» ä»¡ä»¢ä»¨ä»¯ä»±ä»³ä»µä»½ä»¾ä»¿ä¼€ä¼‚ä¼ƒä¼ˆä¼‹ä¼Œä¼’ä¼•ä¼–ä¼—ä¼™ä¼®ä¼±ä½ ä¼³ä¼µä¼·ä¼¹ä¼»ä¼¾ä½€ä½‚ä½ˆä½‰ä½‹ä½Œä½’ä½”ä½–ä½˜ä½Ÿä½£ä½ªä½¬ä½®ä½±ä½·ä½¸ä½¹ä½ºä½½ä½¾ä¾�侂侄����������������������������������亜唖娃阿哀愛挨姶逢葵茜ç©�悪æ�¡æ¸¥æ—葦芦鯵梓圧斡扱宛å§�虻飴絢綾鮎或粟袷安庵按暗案闇éž�æ��以伊ä½�ä¾�å�‰å›²å¤·å§”å¨�尉惟æ„�慰易椅為ç•�ç•°ç§»ç¶ç·¯èƒƒè�Žè¡£è¬‚é�•é�ºåŒ»äº•亥域育éƒ�磯一壱溢逸稲茨芋鰯å…�å�°å’½å“¡å› 姻引飲淫胤è”�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"���������������������������������侅侉侊侌侎ä¾�侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀ä¿�俅俆俈俉俋俌ä¿�ä¿�ä¿’ä¿œä¿ ä¿¢ä¿°ä¿²ä¿¼ä¿½ä¿¿å€€å€�倄倇倊倌倎å€�倓倗倘倛倜å€�倞倢倧倮倰倲倳倵å�€å��å�‚å�…å�†å�Šå�Œå�Žå�‘å�’å�“å�—å�™å�Ÿå� å�¢å�£å�¦å�§å�ªå�å�°å�±å€»å‚�傃傄傆傊傎å‚�å‚�ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é™¢é™°éš éŸ»å�‹å�³å®‡çƒ�羽迂雨å�¯éµœçªºä¸‘碓臼渦嘘唄æ¬�蔚鰻姥厩浦瓜é–�噂云é�‹é›²è��餌å�¡å–¶å¬°å½±æ˜ æ›³æ „æ°¸æ³³æ´©ç‘›ç›ˆç©Žé ´è‹±è¡›è© é‹æ¶²ç–«ç›Šé§…悦è¬�越閲榎åŽå††åœ’å °å¥„å®´å»¶æ€¨æŽ©æ�´æ²¿æ¼”炎焔煙燕猿ç¸�艶苑薗é� 鉛鴛塩於汚甥凹央奥往応�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‚’å‚“å‚”å‚–å‚›å‚œå‚žå‚Ÿå‚ å‚¡å‚¢å‚ªå‚¯å‚°å‚¹å‚ºå‚½åƒ€åƒƒåƒ„åƒ‡åƒŒåƒŽåƒ�僓僔僘僜åƒ�僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌å„�儎僲å„�儗儙儛儜å„�儞儣儧儨儬å„儯儱儳儴儵儸儹兂兊å…�兓兕兗兘兟兤兦兾冃冄冋冎冘å†�冡冣å†å†¸å†ºå†¼å†¾å†¿å‡‚����������������������������������押旺横欧殴王ç¿�襖鴬鴎黄岡沖è�»å„„屋憶臆桶牡乙俺å�¸æ�©æ¸©ç©�éŸ³ä¸‹åŒ–ä»®ä½•ä¼½ä¾¡ä½³åŠ å�¯å˜‰å¤�å«�å®¶å¯¡ç§‘æš‡æžœæž¶æŒæ²³ç�«ç�‚ç¦�禾稼箇花苛茄è�·è�¯è�“è�¦èª²å˜©è²¨è¿¦é�ŽéœžèšŠä¿„峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔æ�¢æ‡�戒æ‹�改�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"���������������������������������凈å‡�凑凒凓凕凘凞凢凥凮凲凳凴凷åˆ�åˆ‚åˆ…åˆ’åˆ“åˆ•åˆ–åˆ˜åˆ¢åˆ¨åˆ±åˆ²åˆµåˆ¼å‰…å‰‰å‰•å‰—å‰˜å‰šå‰œå‰Ÿå‰ å‰¡å‰¦å‰®å‰·å‰¸å‰¹åŠ€åŠ‚åŠ…åŠŠåŠŒåŠ“åŠ•åŠ–åŠ—åŠ˜åŠšåŠœåŠ¤åŠ¥åŠ¦åŠ§åŠ¯åŠ°åŠ¶åŠ·åŠ¸åŠºåŠ»åŠ½å‹€å‹„å‹†å‹ˆå‹Œå‹�勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋����������������������������������é�晦械海ç�°ç•Œçš†çµµèŠ¥èŸ¹é–‹éšŽè²�凱劾外咳害崖慨概涯ç¢�蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇å�„å»“æ‹¡æ’¹æ ¼æ ¸æ®»ç�²ç¢ºç©«è¦šè§’赫較éƒé–£éš”é�©å¦å²³æ¥½é¡�é¡ŽæŽ›ç¬ æ¨«æ©¿æ¢¶é°�潟割å–�æ�°æ‹¬æ´»æ¸‡æ»‘è‘›è¤�轄且鰹å�¶æ¤›æ¨ºéž„æ ªå…œç«ƒè’²é‡œéŽŒå™›é´¨æ ¢èŒ…è�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"���������������������������������匌匑匓匘匛匜匞匟匥匧匨匩匫匬åŒåŒ°åŒ²åŒµåŒ¼åŒ½åŒ¾å�‚å�Œå�‹å�™å�›å�¡å�£å�¥å�¬å�å�²å�¹å�¾åŽƒåŽ‡åŽˆåŽŽåŽ“åŽ”åŽ™åŽ�厡厤厪厫厯厲厴厵厷厸厺厽å�€å�…å��å�’å�“å�•å�šå��å�žå� å�¦å�§å�µå�‚å�“å�šå�¡å�§å�¨å�ªå�¯å�±å�´å�µå‘ƒå‘„呇å‘�å‘�呞呢呤呦呧呩呫å‘å‘®å‘´å‘¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç²¥åˆˆè‹…ç“¦ä¹¾ä¾ƒå† å¯’åˆŠå‹˜å‹§å·»å–šå ªå§¦å®Œå®˜å¯›å¹²å¹¹æ‚£æ„Ÿæ…£æ†¾æ�›æ•¢æŸ‘æ¡“æ£ºæ¬¾æ“æ±—漢澗潅環甘監看竿管簡緩缶翰è‚�艦莞観諌貫還鑑間閑関陥韓館舘丸å�«å²¸å·ŒçŽ©ç™Œçœ¼å²©ç¿«è´‹é›�é ‘é¡”é¡˜ä¼�伎å�±å–œå™¨åŸºå¥‡å¬‰å¯„å²�希幾忌æ�®æœºæ——既期棋棄�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"���������������������������������å’�咃咅咈咉å’�咑咕咖咜咟咡咦咧咩咪å’咮咱咷咹咺咻咿哆哊å“�å“Žå“ å“ªå“¬å“¯å“¶å“¼å“¾å“¿å”€å”�唅唈唉唌å”�唎唕唪唫唲唵唶唻唼唽å•�啇啉啊å•�å•�å•‘å•˜å•šå•›å•žå• å•¡å•¤å•¦å•¿å–�喂喆喈喎å–�喑喒喓喔喗喣喤å–喲喿å—�嗃嗆嗉嗋嗌嗎嗑嗒����������������������������������機帰毅気汽畿祈å£ç¨€ç´€å¾½è¦�記貴起軌è¼�飢騎鬼亀å�½å„€å¦“å®œæˆ¯æŠ€æ“¬æ¬ºçŠ ç–‘ç¥‡ç¾©èŸ»èª¼è°æŽ¬è�Šéž å�‰å�ƒå–«æ¡”æ©˜è©°ç §æ�µé»�å�´å®¢è„šè™�逆丘久仇休å�Šå�¸å®®å¼“急救朽求汲泣ç�¸ç�ƒç©¶çª®ç¬ˆç´šç³¾çµ¦æ—§ç‰›åŽ»å±…å·¨æ‹’æ‹ æŒ™æ¸ è™šè¨±è·�鋸æ¼�禦éšäº¨äº«äº¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"���������������������������������嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊å˜�嘎å˜�å˜�嘑嘒嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀å™�噃噄噆噉噋å™�å™�å™”å™žå™ å™¡å™¢å™£å™¦å™©å™å™¯å™±å™²å™µåš„嚅嚈嚋嚌嚕嚙嚚åš�嚞嚟嚦嚧嚨嚩嚫嚬åšåš±åš³åš·åš¾å›…囉囊囋å›�å›�囌å›�囙囜å›�囟囡囤囥囦囧囨囱囫å›ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä¾›ä¾ 僑兇競共凶å�”匡å�¿å�«å–¬å¢ƒå³¡å¼·å½Šæ€¯æ��æ�挟教橋æ³�ç‹‚ç‹çŸ¯èƒ¸è„…興蕎郷é�¡éŸ¿é¥—驚仰å‡�å°æš�æ¥å±€æ›²æ¥µçމæ¡�ç²�僅勤å�‡å·¾éŒ¦æ–¤æ¬£æ¬½ç�´ç¦�禽ç‹ç·Šèйè�Œè¡¿è¥Ÿè¬¹è¿‘金å�ŸéŠ€ä¹�倶å�¥åŒºç‹—玖矩苦躯駆駈駒具愚虞喰空å�¶å¯“é�‡éš…串櫛釧屑屈�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"���������������������������������囶囷åœ�圂圇圊圌圑圕圚圛åœ�åœ åœ¢åœ£åœ¤åœ¥åœ©åœªåœ¬åœ®åœ¯åœ³åœ´åœ½åœ¾åœ¿å�…å�†å�Œå��å�’å�¢å�¥å�§å�¨å�«å�å�®å�¯å�°å�±å�³å�´å�µå�·å�¹å�ºå�»å�¼å�¾åž�垃垌垔垗垙垚垜åž�垞垟垡垕垧垨垩垬垸垽埇埈埌åŸ�埕åŸ�埞埤埦埧埩åŸåŸ°åŸµåŸ¶åŸ¸åŸ½åŸ¾åŸ¿å ƒå „å ˆå ‰åŸ¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æŽ˜çªŸæ²“é�´è½¡çªªç†Šéšˆç²‚æ —ç¹°æ¡‘é�¬å‹²å�›è–«è¨“群è»�郡å�¦è¢ˆç¥�係傾刑兄啓åœç�ªåž‹å¥‘形径æ�µæ…¶æ…§æ†©æŽ²æ�ºæ•¬æ™¯æ¡‚渓畦稽系経継繋罫茎è�Šè›�計詣è¦è»½é šé¶�芸迎鯨劇戟撃激隙æ¡�å‚‘æ¬ æ±ºæ½”ç©´çµ�血訣月件倹倦å�¥å…¼åˆ¸å‰£å–§åœ�å …å«Œå»ºæ†²æ‡¸æ‹³æ�²ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å Œå �å ›å žå Ÿå å ¦å §å å ²å ¹å ¿å¡‰å¡Œå¡�å¡�å¡�塕塟塡塤塧塨塸塼塿墀å¢�墇墈墉墊墌å¢�å¢�å¢�墔墖å¢�å¢ å¢¡å¢¢å¢¦å¢©å¢±å¢²å£„å¢¼å£‚å£ˆå£�壎å£�壒壔壖壚å£�壡壢壩壳夅夆夋夌夒夓夔è™�å¤�夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛å¥�奞奟奡奣奫å¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¤œæ¨©ç‰½çŠ¬çŒ®ç ”ç¡¯çµ¹çœŒè‚©è¦‹è¬™è³¢è»’é�£é�µé™ºé¡•験鹸元原厳幻弦減æº�玄ç�¾çµƒèˆ·è¨€è«ºé™�乎個å�¤å‘¼å›ºå§‘å¤å·±åº«å¼§æˆ¸æ•…枯湖ç‹�糊袴股胡è�°è™Žèª‡è·¨éˆ·é›‡é¡§é¼“五互ä¼�å�ˆå‘‰å�¾å¨¯å¾Œå¾¡æ‚Ÿæ¢§æªŽç‘šç¢�語誤è·é†�乞鯉交佼侯候倖光公功効勾厚å�£å�‘�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"���������������������������������奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧å¦å¦®å¦¯å¦°å¦³å¦·å¦ºå¦¼å§�姃姄姈姊å§�å§’å§�姞姟姣姤姧姮姯姱姲姴姷娀娄娌å¨�娎娒娓娞娣娤娧娨娪å¨å¨°å©„婅婇婈婌å©�婕婞婣婥婧å©å©·å©ºå©»å©¾åª‹åª�åª“åª–åª™åªœåªžåªŸåª åª¢åª§åª¬åª±åª²åª³åªµåª¸åªºåª»åª¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�Žå–‰å�‘垢好å”å�å®�工巧巷幸広庚康弘æ�’慌抗拘控攻昂晃更æ�æ ¡æ¢—æ§‹æ±Ÿæ´ªæµ©æ¸¯æº�ç”²çš‡ç¡¬ç¨¿ç³ ç´…ç´˜çµžç¶±è€•è€ƒè‚¯è‚±è…”è†�航è�’è¡Œè¡¡è¬›è²¢è³¼éƒŠé…µé‰±ç ¿é‹¼é–¤é™�é …é¦™é«˜é´»å‰›åŠ«å�·å�ˆå£•æ‹·æ¿ è±ªè½Ÿéº¹å…‹åˆ»å‘Šå›½ç©€é…·éµ é»’ç�„漉腰甑忽惚骨狛込�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"���������������������������������嫄嫆嫈å«�å«šå«œå« å«¥å«ªå«®å«µå«¶å«½å¬€å¬�嬈嬗嬴嬙嬛å¬�嬡嬥å¬å¬¸å�å‹åŒå’å–åžå¨å®å¯å¼å½å¾å¿å®�宄宆宊宎å®�宑宓宔宖宨宩宬å®å®¯å®±å®²å®·å®ºå®¼å¯€å¯�å¯�å¯�å¯–å¯—å¯˜å¯™å¯šå¯ å¯¯å¯±å¯´å¯½å°Œå°—å°žå°Ÿå°£å°¦å°©å°«å°¬å°®å°°å°²å°µå°¶å±™å±šå±œå±¢å±£å±§å±¨å±©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¤é ƒä»Šå›°å�¤å¢¾å©šæ�¨æ‡‡æ˜�æ˜†æ ¹æ¢±æ··ç—•ç´ºè‰®é‚些ä½�å�‰å”†åµ¯å·¦å·®æŸ»æ²™ç‘³ç ‚è©�鎖裟å��座挫債催å†�最哉塞妻宰彩æ‰�æŽ¡æ ½æ³æ¸ˆç�½é‡‡çŠ€ç •ç ¦ç¥æ–Žç´°è�œè£�載際剤在æ��罪財冴å�‚é˜ªå ºæ¦Šè‚´å’²å´ŽåŸ¼ç¢•é·ºä½œå‰Šå’‹æ�¾æ˜¨æœ”柵窄ç–索錯桜é®ç¬¹åŒ™å†Šåˆ·ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"���������������������������������å±å±°å±´å±µå±ºå±»å±¼å±½å²‡å²ˆå²Šå²�å²’å²�å²Ÿå² å²¢å²£å²¦å²ªå²²å²´å²µå²ºå³‰å³‹å³’å³�峗峮峱峲峴å´�å´†å´�å´’å´«å´£å´¤å´¦å´§å´±å´´å´¹å´½å´¿åµ‚åµƒåµ†åµˆåµ•åµ‘åµ™åµŠåµŸåµ åµ¡åµ¢åµ¤åµªåµåµ°åµ¹åµºåµ¾åµ¿å¶�å¶ƒå¶ˆå¶Šå¶’å¶“å¶”å¶•å¶™å¶›å¶Ÿå¶ å¶§å¶«å¶°å¶´å¶¸å¶¹å·ƒå·‡å·‹å·�å·Žå·˜å·™å· å·¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¯Ÿæ‹¶æ’®æ“¦æœæ®ºè–©é›‘çš�鯖æ�ŒéŒ†é®«çš¿æ™’三傘å�‚山惨撒散桟燦ç�Šç”£ç®—纂蚕讃賛酸é¤�斬暫残仕仔伺使刺å�¸å�²å—£å››å£«å§‹å§‰å§¿å�å±�市師志æ€�æŒ‡æ”¯åœæ–¯æ–½æ—¨æž�æ¢æ»æ°�ç�…祉ç§�糸紙紫肢脂至視詞詩試誌諮資賜雌飼æ¯äº‹ä¼¼ä¾�å…�å—寺慈æŒ�時�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"���������������������������������巩巸巹帀帇å¸�å¸’å¸”å¸•å¸˜å¸Ÿå¸ å¸®å¸¨å¸²å¸µå¸¾å¹‹å¹�幉幑幖幘幛幜幞幨幪幫幬å¹å¹®å¹°åº€åº‹åºŽåº¢åº¤åº¥åº¨åºªåº¬åº±åº³åº½åº¾åº¿å»†å»Œå»‹å»Žå»‘廒廔廕廜廞廥廫异弆弇弈弎弙弜å¼�弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇å½�å½�å½”å½˜å½›å½ å½£å½¤å½§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¬¡æ»‹æ²»çˆ¾ç’½ç—”ç£�示而耳自蒔辞æ±�鹿å¼�è˜é´«ç«ºè»¸å®�雫七å�±åŸ·å¤±å«‰å®¤æ‚‰æ¹¿æ¼†ç–¾è³ªå®Ÿè”€ç¯ å�²æŸ´èŠ�屡蕊縞舎写射æ�¨èµ¦æ–œç…®ç¤¾ç´—者è¬�車é�®è›‡é‚ªå€Ÿå‹ºå°ºæ�“ç�¼çˆµé…Œé‡ˆéŒ«è‹¥å¯‚弱惹主å�–守手朱殊狩ç� 種腫趣酒首儒å�—呪寿授樹綬需囚å�Žå‘¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"���������������������������������彯彲彴彵彸彺彽彾徉å¾�å¾�徖徜å¾�徢徧徫徤徬徯徰徱徸忄忇忈忉忋å¿�忑忒忓忔忞忡忢忨忩忪忬å¿å¿®å¿¯å¿²å¿³å¿¶å¿ºå¿¼æ€‡æ€Šæ€�æ€“æ€”æ€—æ€˜æ€šæ€Ÿæ€¤æ€æ€³æ€µæ�€æ�‡æ�ˆæ�‰æ�Œæ�‘æ�”æ�–æ�—æ��æ�¡æ�§æ�±æ�¾æ�¿æ‚‚悆悈悊悎悑悓悕悘æ‚�悞悢悤悥您悰悱悷����������������������������������宗就州修æ„�拾洲秀秋終ç¹�ç¿’è‡èˆŸè’�衆襲è®�蹴輯週酋酬集醜什ä½�å……å��従戎柔æ±�渋ç�£ç¸¦é‡�銃å�”夙宿淑ç¥�縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡é�µé†‡é †å‡¦åˆ�所暑曙渚庶緒署書薯藷諸助å�™å¥³åº�å¾�æ�•鋤除傷償�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"���������������������������������悻悾惂惄惈惉惊惋惎æƒ�惔惕惙惛æƒ�惞惢惥惲惵惸惼惽愂愇愊愌æ„�愑愒愓愔愖愗愙愜愞愢愪愫愰愱愵愶愷愹æ…�æ……æ…†æ…‰æ…žæ… æ…¬æ…²æ…¸æ…»æ…¼æ…¿æ†€æ†�憃憄憋æ†�憒憓憗憘憜æ†�æ†Ÿæ† æ†¥æ†¨æ†ªæ†æ†¸æ†¹æ†¼æ‡€æ‡�懂懎æ‡�懕懜æ‡�懞懟懡懢懧懩懥����������������������������������å‹�åŒ å�‡å�¬å“¨å•†å”±å˜—奨妾娼宵将å°�å°‘å°šåº„åºŠå» å½°æ‰¿æŠ„æ‹›æŽŒæ�·æ˜‡æ˜Œæ˜æ™¶æ�¾æ¢¢æ¨Ÿæ¨µæ²¼æ¶ˆæ¸‰æ¹˜ç„¼ç„¦ç…§ç—‡çœ�ç¡�ç¤�ç¥¥ç§°ç« ç¬‘ç²§ç´¹è‚–è�–蒋蕉è¡�裳訟証詔詳象賞醤鉦é�¾é�˜éšœéž˜ä¸Šä¸ˆä¸žä¹—å†—å‰°åŸŽå ´å£Œå¬¢å¸¸æƒ…æ“¾æ�¡æ�–浄状畳穣蒸è²é†¸éŒ 嘱埴飾�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‡¬æ‡æ‡¯æˆ�æˆƒæˆ„æˆ‡æˆ“æˆ•æˆœæˆ æˆ¢æˆ£æˆ§æˆ©æˆ«æˆ¹æˆ½æ‰‚æ‰ƒæ‰„æ‰†æ‰Œæ‰�æ‰‘æ‰’æ‰”æ‰–æ‰šæ‰œæ‰¤æ‰æ‰¯æ‰³æ‰ºæ‰½æŠ�抎æŠ�æŠ�抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋æŒ�æŒ�æŒ“æŒ–æŒ˜æŒ©æŒªæŒæŒµæŒ¶æŒ¹æŒ¼æ��æ�‚æ�ƒæ�„æ�†æ�Šæ�‹æ�Žæ�’æ�“æ�”æ�˜æ�›æ�¥æ�¦æ�¬æ�æ�±æ�´æ�µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‹æ¤�æ®–ç‡ç¹”è�·è‰²è§¦é£Ÿè�•è¾±å°»ä¼¸ä¿¡ä¾µå”‡å¨ å¯�審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進é‡�震人ä»�刃塵壬尋甚尽腎訊迅陣é�笥è«�é ˆé…¢å›³åŽ¨é€—å�¹åž‚帥推水炊ç�¡ç²‹ç¿ è¡°é�‚é…”éŒ�錘éš�瑞髄崇嵩数枢趨雛æ�®æ�‰æ¤™è�…é —é›€è£¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"���������������������������������æ�¸æ�¼æ�½æ�¿æŽ‚掄掇掊æŽ�æŽ”æŽ•æŽ™æŽšæŽžæŽ¤æŽ¦æŽæŽ®æŽ¯æŽ½æ��æ�…æ�ˆæ�Žæ�‘æ�“æ�”æ�•æ�œæ� æ�¥æ�ªæ�¬æ�²æ�³æ�µæ�¸æ�¹æ�‰æ�Šæ��æ�’æ�”æ�˜æ�žæ� æ�¢æ�¤æ�¥æ�©æ�ªæ�¯æ�°æ�µæ�½æ�¿æ‘‹æ‘�摑摒摓摔摚摛摜æ‘�æ‘Ÿæ‘ æ‘¡æ‘£æ‘æ‘³æ‘´æ‘»æ‘½æ’…æ’‡æ’�æ’�撑撘撙撛æ’�撟撡撣撦撨撬撳撽撾撿����������������������������������澄摺寸世瀬ç•�是凄制勢姓å¾�性æˆ�æ”¿æ•´æ˜Ÿæ™´æ£²æ –æ£æ¸…牲生盛精è�–å£°è£½è¥¿èª èª“è«‹é€�醒é�’é�™æ–‰ç¨Žè„†éš»å¸æƒœæˆšæ–¥æ˜”æž�石ç©�ç±�績脊責赤跡蹟碩切拙接摂折è¨çªƒç¯€èª¬é›ªçµ¶èˆŒè�‰ä»™å…ˆå�ƒå� 宣専尖å·�æˆ¦æ‰‡æ’°æ “æ ´æ³‰æµ…æ´—æŸ“æ½œç…Žç…½æ—‹ç©¿ç®ç·šï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"���������������������������������擄擉擊擋擌擎æ“�æ“‘æ“•æ“—æ“¤æ“¥æ“©æ“ªæ“æ“°æ“µæ“·æ“»æ“¿æ”�攄攈攉攊æ”�攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉æ•�æ•’æ•”æ•Ÿæ• æ•§æ•«æ•ºæ•½æ–�æ–…æ–Šæ–’æ–•æ–˜æ–�æ– æ–£æ–¦æ–®æ–²æ–³æ–´æ–¿æ—‚æ—ˆæ—‰æ—Žæ—�旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉æ˜�昑昒昕昖æ˜�����������������������������������繊羨腺舛船薦詮賎践é�¸é�·éŠéŠ‘é–ƒé®®å‰�善漸然全禅繕膳糎噌塑岨措曾曽楚狙ç–�ç–Žç¤Žç¥–ç§Ÿç²—ç´ çµ„è˜‡è¨´é˜»é�¡é¼ 僧創å�Œå�¢å€‰å–ªå£®å¥�爽宋層åŒ�惣想æ�œæŽƒæŒ¿æŽ»æ“�早曹巣æ§�槽漕燥争痩相窓糟ç·�ç¶œè�¡è�‰è�˜è‘¬è’¼è—»è£…èµ°é€�é�鎗霜騒åƒ�増憎�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ˜žæ˜¡æ˜¢æ˜£æ˜¤æ˜¦æ˜©æ˜ªæ˜«æ˜¬æ˜®æ˜°æ˜±æ˜³æ˜¹æ˜·æ™€æ™…æ™†æ™Šæ™Œæ™‘æ™Žæ™—æ™˜æ™™æ™›æ™œæ™ æ™¡æ›»æ™ªæ™«æ™¬æ™¾æ™³æ™µæ™¿æ™·æ™¸æ™¹æ™»æš€æ™¼æš‹æšŒæš�æš�æš’æš™æššæš›æšœæšŸæš æš¤æšæš±æš²æšµæš»æš¿æ›€æ›‚曃曈曌曎æ›�æ›”æ››æ›Ÿæ›¨æ›«æ›¬æ›®æ›ºæœ…æœ‡æœŽæœ“æœ™æœœæœ æœ¢æœ³æœ¾æ�…æ�‡æ�ˆæ�Œæ�”æ�•æ��ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‡“è”µè´ˆé€ ä¿ƒå�´å‰‡å�³æ�¯æ�‰æ�Ÿæ¸¬è¶³é€Ÿä¿—属賊æ—�ç¶šå�’袖其æ�ƒå˜å«å°Šæ��æ�‘é�œä»–å¤šå¤ªæ±°è©‘å”¾å •å¦¥æƒ°æ‰“æŸ�èˆµæ¥•é™€é§„é¨¨ä½“å †å¯¾è€�å²±å¸¯å¾…æ€ æ…‹æˆ´æ›¿æ³°æ»žèƒŽè…¿è‹”è¢‹è²¸é€€é€®éšŠé»›é¯›ä»£å�°å¤§ç¬¬é†�題鷹æ»�瀧å�“啄宅托択拓沢濯ç�¢è¨—é�¸æ¿�諾茸凧蛸å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"���������������������������������æ�¦æ�¬æ�®æ�´æ�¶æ�»æž�构枎æž�æž‘æž“æž–æž˜æž™æž›æž°æž±æž²æžµæž»æž¼æž½æŸ¹æŸ€æŸ‚æŸƒæŸ…æŸˆæŸ‰æŸ’æŸ—æŸ™æŸœæŸ¡æŸ¦æŸ°æŸ²æŸ¶æŸ·æ¡’æ ”æ ™æ �æ Ÿæ ¨æ §æ ¬æ æ ¯æ °æ ±æ ³æ »æ ¿æ¡„桅桊桌桕桗桘桛桫桮桯桰桱桲桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌æ£�����������������������������������å�©ä½†é�”辰奪脱巽竪辿棚谷狸鱈樽誰丹å�˜å˜†å�¦æ‹…æŽ¢æ—¦æŽæ·¡æ¹›ç‚çŸç«¯ç®ªç¶»è€½èƒ†è›‹èª•é�›å›£å£‡å¼¾æ–暖檀段男談値知地弛æ�¥æ™ºæ± 痴稚置致蜘é�…馳築畜竹ç‘è“„é€�秩窒茶嫡ç�€ä¸ä»²å®™å¿ 抽昼柱注虫衷註酎鋳é§�樗瀦猪苧著貯ä¸�兆凋喋寵�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"���������������������������������æ£�棑棓棖棙棜æ£�æ£¥æ£¨æ£ªæ£«æ£¬æ£æ£°æ£±æ£µæ£¶æ£»æ£¼æ£½æ¤†æ¤‰æ¤Šæ¤�椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀æ¦�æ¦’æ¦–æ¦˜æ¦¡æ¦¥æ¦¦æ¦¨æ¦«æ¦æ¦¯æ¦·æ¦¸æ¦ºæ¦¼æ§…槈槑槖槗槢槥槮槯槱槳槵槾樀æ¨�樃æ¨�樑樕樚æ¨�æ¨ æ¨¤æ¨¨æ¨°æ¨²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¸–å¸³åº�弔張彫徴懲挑暢æœ�潮牒町眺è�´è„¹è…¸è�¶èª¿è«œè¶…è·³éŠšé•·é ‚é³¥å‹…æ�—直朕沈ç��è³ƒéŽ®é™³æ´¥å¢œæ¤Žæ§Œè¿½éŽšç—›é€šå¡šæ ‚æŽ´æ§»ä½ƒæ¼¬æŸ˜è¾»è”¦ç¶´é�”椿潰å�ªå£·å¬¬ç´¬çˆªå�Šé‡£é¶´äºä½Žå�œå�µå‰ƒè²žå‘ˆå ¤å®šå¸�底åºå»·å¼Ÿæ‚ŒæŠµæŒºæ��æ¢¯æ±€ç¢‡ç¦Žç¨‹ç· è‰‡è¨‚è«¦è¹„é€“ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"���������������������������������樴樷樻樾樿橅橆橉橊橎æ©�橑橒橕橖橛橤橧橪橱橳橾æª�檃檆檇檉檋檑檛æª�檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌æ«�櫔櫕櫖櫜æ«�櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉æ¬�æ¬�æ¬‘æ¬—æ¬›æ¬žæ¬¤æ¬¨æ¬«æ¬¬æ¬¯æ¬µæ¬¶æ¬»æ¬¿æ†æŠæ�æ’æ–æ˜æ�æ æ§æ«æ®æ°æµæ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é‚¸é„釘鼎泥摘擢敵滴的笛é�©é�‘溺哲徹撤è½�è¿é‰„典填天展店添çº�甜貼転顛点ä¼�殿澱田電兎å��å µå¡—å¦¬å± å¾’æ–—æ�œæ¸¡ç™»è�Ÿè³é€”都é��ç ¥ç ºåŠªåº¦åœŸå¥´æ€’å€’å…šå†¬å‡�刀å”�塔塘套宕島嶋悼投æ�æ�±æ¡ƒæ¢¼æ£Ÿç›—淘湯涛ç�¯ç‡ˆå½“痘祷ç‰ç”ç’糖統到�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¾æ®‚æ®…æ®—æ®›æ®Ÿæ® æ®¢æ®£æ®¨æ®©æ®¬æ®æ®®æ®°æ®¸æ®¹æ®½æ®¾æ¯ƒæ¯„毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉æ°�æ°Žæ°�氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋æ±�æ±�æ±’æ±”æ±™æ±›æ±œæ±«æ±æ±¯æ±´æ±¶æ±¸æ±¹æ±»æ²…沆沇沉沔沕沗沘沜沟沰沲沴泂泆æ³�æ³�æ³�泑泒泔泖����������������������������������董蕩藤討謄豆è¸�逃é€�é�™é™¶é 騰闘åƒ�å‹•å�Œå ‚導憧撞洞瞳童胴è�„é�“éŠ…å³ é´‡åŒ¿å¾—å¾³æ¶œç‰¹ç�£ç¦¿ç¯¤æ¯’ç‹¬èªæ ƒæ©¡å‡¸çª�椴届鳶苫寅酉瀞噸屯惇敦沌豚é��é “å‘‘æ›‡éˆ�奈那内ä¹�凪薙謎ç�˜æ�ºé�‹æ¥¢é¦´ç¸„ç•·å�—æ¥ è»Ÿé›£æ±�二尼å¼�迩匂賑肉虹廿日乳入�\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ³šæ³œæ³ æ³§æ³©æ³«æ³¬æ³®æ³²æ³´æ´„æ´‡æ´Šæ´Žæ´�洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎æ·�æ·–æ·›æ·�æ·Ÿæ· æ·¢æ·¥æ·©æ·¯æ·°æ·´æ·¶æ·¼æ¸€æ¸„æ¸žæ¸¢æ¸§æ¸²æ¸¶æ¸¹æ¸»æ¸¼æ¹„æ¹…æ¹ˆæ¹‰æ¹‹æ¹�湑湒湓湔湗湜æ¹�湞����������������������������������如尿韮任妊å¿�èª�濡禰祢寧葱猫熱年念æ�»æ’šç‡ƒç²˜ä¹ƒå»¼ä¹‹åŸœå𢿂©æ¿ƒç´�能脳膿農覗蚤巴把æ’覇æ�·æ³¢æ´¾ç�¶ç ´å©†ç½µèŠé¦¬ä¿³å»ƒæ‹�排敗æ�¯ç›ƒç‰ŒèƒŒè‚ºè¼©é…�å€�åŸ¹åª’æ¢…æ¥³ç…¤ç‹½è²·å£²è³ é™ªé€™è�¿ç§¤çŸ§è�©ä¼¯å‰¥å�šæ‹�æŸ�泊白箔粕舶薄迫æ›�æ¼ çˆ†ç¸›èŽ«é§�麦�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"���������������������������������湢湣湨湳湻湽æº�æº“æº™æº æº§æºæº®æº±æº³æº»æº¿æ»€æ»�滃滇滈滊æ»�滎æ»�æ»«æ»æ»®æ»¹æ»»æ»½æ¼„漈漊漌æ¼�æ¼–æ¼˜æ¼šæ¼›æ¼¦æ¼©æ¼ªæ¼¯æ¼°æ¼³æ¼¶æ¼»æ¼¼æ¼æ½�潑潒潓潗潙潚æ½�潞潡潢潨潬潽潾澃澇澈澋澌æ¾�æ¾�æ¾’æ¾“æ¾”æ¾–æ¾šæ¾Ÿæ¾ æ¾¥æ¾¦æ¾§æ¾¨æ¾®æ¾¯æ¾°æ¾µæ¾¶æ¾¼æ¿…æ¿‡æ¿ˆæ¿Šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‡½ç®±ç¡²ç®¸è‚‡çˆæ«¨å¹¡è‚Œç•‘ç• å…«é‰¢æºŒç™ºé†—é«ªä¼�罰抜ç�閥鳩噺塙蛤隼伴判å�Šå��å�›å¸†æ�¬æ–‘æ�¿æ°¾æ±Žç‰ˆçНç�ç•”ç¹�èˆ¬è—©è²©ç¯„é‡†ç…©é ’é£¯æŒ½æ™©ç•ªç›¤ç£�蕃蛮匪å�‘å�¦å¦ƒåº‡å½¼æ‚²æ‰‰æ‰¹æŠ«æ–�比泌疲皮碑秘緋罷肥被誹費é�¿é�žé£›æ¨‹ç°¸å‚™å°¾å¾®æž‡æ¯˜ç�µçœ‰ç¾Žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"���������������������������������濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇ç€�ç€—ç€ ç€£ç€¯ç€´ç€·ç€¹ç€¼ç�ƒç�„ç�ˆç�‰ç�Šç�‹ç�”ç�•ç��ç�žç�Žç�¤ç�¥ç�¬ç�®ç�µç�¶ç�¾ç‚�炅炆炔炕炖炗炘炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃焄焅焆焇焋焌ç„�ç„žç„ ç„«ç„焯焰焱焸ç…�煅煆煇煊煋ç…�ç…’ç…—ç…šç…œç…žç… ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¼»æŸŠç¨—åŒ¹ç–‹é«å½¦è†�è�±è‚˜å¼¼å¿…ç•¢ç†é€¼æ¡§å§«åª›ç´�百謬俵彪標氷漂瓢票表評豹廟æ��病秒苗錨鋲蒜è›é°å“�å½¬æ–Œæµœç€•è²§è³“é »æ•�ç“¶ä¸�ä»˜åŸ å¤«å©¦å¯Œå†¨å¸ƒåºœæ€–æ‰¶æ•·æ–§æ™®æµ®çˆ¶ç¬¦è…�膚芙èœè² 賦赴阜附侮撫æ¦èˆžè‘¡è•ªéƒ¨å°�楓風葺蕗ä¼�副復幅æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç…¨ç…¹ç†€ç†…ç†‡ç†Œç†’ç†šç†›ç† ç†¢ç†¯ç†°ç†²ç†³ç†ºç†¿ç‡€ç‡�燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚çˆ�爟爤爫爯爴爸爹ç‰�牂牃牅牎ç‰�ç‰�ç‰“ç‰•ç‰–ç‰šç‰œç‰žç‰ ç‰£ç‰¨ç‰«ç‰®ç‰¯ç‰±ç‰·ç‰¸ç‰»ç‰¼ç‰¿çŠ„çŠ‰çŠ�犎犓犛犨çŠçŠ®çŠ±çŠ´çŠ¾ç‹�狇狉狌狕狖狘狟狥狳狴狺狻����������������������������������ç¦�腹複覆淵弗払沸ä»�物鮒分å�»å™´å¢³æ†¤æ‰®ç„šå¥®ç²‰ç³žç´›é›°æ–‡è�žä¸™ä½µå…µå¡€å¹£å¹³å¼ŠæŸ„並蔽閉陛米é �僻å£�癖碧別瞥蔑箆å��変片篇編辺返é��便勉娩å¼�éžä¿�舗鋪圃æ�•æ©ç”«è£œè¼”穂募墓慕戊暮æ¯�ç°¿è�©å€£ä¿¸åŒ…å‘†å ±å¥‰å®�峰峯崩庖抱æ�§æ”¾æ–¹æœ‹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"���������������������������������狾猂猄猅猇猋çŒ�猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽ç�ƒç��ç��ç�’ç�–ç�˜ç��ç�žç�Ÿç� ç�¦ç�§ç�©ç�«ç�¬ç�®ç�¯ç�±ç�·ç�¹ç�¼çŽ€çŽ�玃玅玆玎çŽ�çŽ“çŽ•çŽ—çŽ˜çŽœçŽžçŽŸçŽ çŽ¢çŽ¥çŽ¦çŽªçŽ«çŽçŽµçŽ·çŽ¹çŽ¼çŽ½çŽ¿ç�…ç�†ç�‰ç�‹ç�Œç��ç�’ç�“ç�–ç�™ç��ç�¡ç�£ç�¦ç�§ç�©ç�´ç�µç�·ç�¹ç�ºç�»ç�½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ³•æ³¡çƒ¹ç ²ç¸«èƒžèŠ³è�Œè“¬èœ‚褒訪豊邦鋒飽鳳鵬ä¹�亡å‚�剖å�Šå¦¨å¸½å¿˜å¿™æˆ¿æš´æœ›æŸ�棒冒紡肪膨謀貌貿鉾防å� é ¬åŒ—åƒ•å�œå¢¨æ’²æœ´ç‰§ç�¦ç©†é‡¦å‹ƒæ²¡æ®†å €å¹Œå¥”本翻凡盆摩磨é”麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒æ¡�亦俣å�ˆæŠ¹æœ«æ²«è¿„ä¾ç¹éº¿ä¸‡æ…¢æº€ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"���������������������������������ç�¿ç�€ç��ç�„ç�‡ç�Šç�‘ç�šç�›ç�¤ç�¦ç�¨ç�©ç�ªç�«ç�¬ç�ç�®ç�¯ç�°ç�±ç�¹ç‘€ç‘ƒç‘„瑆瑇瑋ç‘�ç‘‘ç‘’ç‘—ç‘�瑢瑦瑧瑨瑫ç‘瑮瑱瑲璀ç’�璅璆璇璉ç’�ç’�ç’‘ç’’ç’˜ç’™ç’šç’œç’Ÿç’ ç’¡ç’£ç’¦ç’¨ç’©ç’ªç’«ç’®ç’¯ç’±ç’²ç’µç’¹ç’»ç’¿ç“ˆç“‰ç“Œç“�瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆����������������������������������漫蔓味未é…巳箕岬密蜜湊蓑稔脈妙ç²�æ°‘çœ å‹™å¤¢ç„¡ç‰ŸçŸ›éœ§éµ¡æ¤‹å©¿å¨˜å†¥å��命明盟迷銘鳴姪ç‰�æ»…å…�棉綿緬é�¢éººæ‘¸æ¨¡èŒ‚å¦„åŸæ¯›çŒ›ç›²ç¶²è€—蒙儲木黙目æ�¢å‹¿é¤…尤戻籾貰å•�æ‚¶ç´‹é–€åŒ�也冶夜爺耶野弥矢厄役約薬訳èº�é�–柳薮鑓愉愈油癒�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç”’ç”–ç”—ç” ç”¡ç”¤ç”§ç”©ç”ªç”¯ç”¶ç”¹ç”½ç”¾ç”¿ç•€ç•ƒç•‡ç•ˆç•Žç•�畒畗畞畟畡畯畱畹畺畻畼畽畾ç–�ç–…ç–�疒疓疕疙疜疢疤疴疺疿痀ç—�痄痆痌痎ç—�ç——ç—œç—Ÿç— ç—¡ç—¤ç—§ç—¬ç—®ç—¯ç—±ç—¹ç˜€ç˜‚ç˜ƒç˜„ç˜‡ç˜ˆç˜Šç˜Œç˜�瘒瘓瘕瘖瘙瘛瘜ç˜�瘞瘣瘥瘦瘩ç˜ç˜²ç˜³ç˜µç˜¸ç˜¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è«è¼¸å”¯ä½‘優勇å�‹å®¥å¹½æ‚ 憂æ�–有柚湧涌猶猷由ç¥�裕誘é�Šé‚‘郵雄èž�夕予余与誉輿é �å‚幼妖容庸æ�šæ�ºæ“�曜楊様洋溶熔用窯羊耀葉蓉è¦�謡踊é�¥é™½é¤Šæ…¾æŠ‘欲沃浴翌翼淀羅螺裸æ�¥èŽ±é ¼é›·æ´›çµ¡è�½é…ªä¹±å�µåµ�欄濫è—�è˜è¦§åˆ©å��å±¥æ�Žæ¢¨ç�†ç’ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"���������������������������������瘺瘼癊癀ç™�癃癄癅癉癋癕癙癟癤癥ç™ç™®ç™¯ç™±ç™´çš�皅皌çš�皕皛皜çš�çšŸçš çš¢çš£çš¤çš¥çš¦çš§çš¨çšªçšçš½ç›�ç›…ç›‰ç›‹ç›Œç›Žç›”ç›™ç› ç›¦ç›¨ç›¬ç›°ç›±ç›¶ç›¹ç›¼çœ€çœ†çœŠçœŽçœ’çœ”çœ•çœ—çœ™çœšçœœçœ¢çœ¨çœçœ®çœ¯çœ´çœµçœ¶çœ¹çœ½çœ¾ç�‚ç�…ç�†ç�Šç��ç�Žç��ç�’ç�–ç�—ç�œç�žç�Ÿç� ç�¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç—¢è£�è£¡é‡Œé›¢é™¸å¾‹çŽ‡ç«‹è‘ŽæŽ ç•¥åŠ‰æµ�溜ç�‰ç•™ç¡«ç²’隆竜é¾�侶慮旅虜了亮僚両凌寮料æ¢�涼猟療çžç¨œç³§è‰¯è«’é�¼é‡�é™µé ˜åŠ›ç·‘å€«åŽ˜æž—æ·‹ç‡�ç�³è‡¨è¼ªéš£é±—éºŸç‘ å¡�涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦æ´åˆ—劣烈裂廉æ�‹æ†�漣煉簾練è�¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"���������������������������������ç�¤ç�§ç�ªç�¬ç�°ç�²ç�³ç�´ç�ºç�½çž€çž„瞌çž�çž”çž•çž–çžšçžŸçž¢çž§çžªçž®çž¯çž±çžµçž¾çŸƒçŸ‰çŸ‘çŸ’çŸ•çŸ™çŸžçŸŸçŸ çŸ¤çŸ¦çŸªçŸ¬çŸ°çŸ±çŸ´çŸ¸çŸ»ç …ç †ç ‰ç �ç Žç ‘ç �ç ¡ç ¢ç £ç ç ®ç °ç µç ·ç¡ƒç¡„ç¡‡ç¡ˆç¡Œç¡Žç¡’ç¡œç¡žç¡ ç¡¡ç¡£ç¡¤ç¡¨ç¡ªç¡®ç¡ºç¡¾ç¢Šç¢�碔碘碡ç¢�碞碟碤碨碬ç¢ç¢°ç¢±ç¢²ç¢³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è“®é€£éŒ¬å‘‚靿«“炉賂路露労å©�廊弄朗楼榔浪æ¼�牢狼ç¯è€�è�¾è�‹éƒŽå…麓禄肋録論å€å’Œè©±æªè³„è„‡æƒ‘æž é·²äº™äº˜é°�è©«è—�蕨椀湾碗腕��������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¢»ç¢½ç¢¿ç£‡ç£ˆç£‰ç£Œç£Žç£’ç£“ç£•ç£–ç£¤ç£›ç£Ÿç£ ç£¡ç£¦ç£ªç£²ç£³ç¤€ç£¶ç£·ç£ºç£»ç£¿ç¤†ç¤Œç¤�ç¤šç¤œç¤žç¤Ÿç¤ ç¤¥ç¤§ç¤©ç¤ç¤±ç¤´ç¤µç¤»ç¤½ç¤¿ç¥„祅祆祊祋ç¥�祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊ç§�秔秖秚ç§�秞����������������������������������弌ä¸�丕个丱丶丼丿乂乖乘亂亅豫亊舒å¼�äºŽäºžäºŸäº äº¢äº°äº³äº¶ä»Žä»�仄仆仂仗仞ä»ä»Ÿä»·ä¼‰ä½šä¼°ä½›ä½�佗佇佶侈ä¾�侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚ä¿�俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆å�ƒå�‡æœƒå�•å��å�ˆå�šå�–å�¬å�¸å‚€å‚šå‚…傴傲�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç§ ç§¢ç§¥ç§ªç§«ç§ç§±ç§¸ç§¼ç¨‚稃稇稉稊稌稑稕稛稞稡稧稫ç¨ç¨¯ç¨°ç¨´ç¨µç¨¸ç¨¹ç¨ºç©„穅穇穈穌穕穖穙穜ç©�ç©Ÿç© ç©¥ç©§ç©ªç©ç©µç©¸ç©¾çª€çª‚窅窆窊窋çª�çª‘çª”çªžçª çª£çª¬çª³çªµçª¹çª»çª¼ç«†ç«‰ç«Œç«Žç«‘ç«›ç«¨ç«©ç««ç«¬ç«±ç«´ç«»ç«½ç«¾ç¬‡ç¬”ç¬Ÿç¬£ç¬§ç¬©ç¬ªç¬«ç¬ç¬®ç¬¯ç¬°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åƒ‰åƒŠå‚³åƒ‚僖僞僥åƒåƒ£åƒ®åƒ¹åƒµå„‰å„�儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉å†�å†‘å†“å†•å†–å†¤å†¦å†¢å†©å†ªå†«å†³å†±å†²å†°å†µå†½å‡…å‡‰å‡›å‡ è™•å‡©å‡å‡°å‡µå‡¾åˆ„刋刔刎刧刪刮刳刹å‰�剄剋剌剞剔剪剴剩剳剿剽åŠ�劔劒剱劈劑辨�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"���������������������������������笱笴笽笿ç€ç�ç‡çŽç•ç ç¤ç¦ç©çªçç¯ç²ç³ç·ç®„箉箎ç®�ç®‘ç®–ç®›ç®žç® ç®¥ç®¬ç®¯ç®°ç®²ç®µç®¶ç®ºç®»ç®¼ç®½ç¯‚ç¯…ç¯ˆç¯Šç¯”ç¯–ç¯—ç¯™ç¯šç¯›ç¯¨ç¯ªç¯²ç¯´ç¯µç¯¸ç¯¹ç¯ºç¯¼ç¯¾ç°�簂簃簄簆簉簋簌簎ç°�ç°™ç°›ç° ç°¥ç°¦ç°¨ç°¬ç°±ç°³ç°´ç°¶ç°¹ç°ºç±†ç±Šç±•ç±‘ç±’ç±“ç±™ç±šç±›ç±œç±�籞����������������������������������辧劬åŠåŠ¼åŠµå‹�å‹�勗勞勣勦é£å‹ 勳勵勸勹匆匈甸åŒ�åŒ�åŒ�匕匚匣匯匱匳匸å�€å�†å�…丗å�‰å��凖å�žå�©å�®å¤˜å�»å�·åŽ‚åŽ–åŽ åŽ¦åŽ¥åŽ®åŽ°åŽ¶å�ƒç°’é›™å�Ÿæ›¼ç‡®å�®å�¨å�å�ºå��å�½å‘€å�¬å�å�¼å�®å�¶å�©å��呎å’�呵咎呟呱呷呰咒呻咀呶咄å’�咆哇咢咸咥咬哄哈咨�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"���������������������������������籡籣籧籩ç±ç±®ç±°ç±²ç±¹ç±¼ç±½ç²†ç²‡ç²�ç²”ç²žç² ç²¦ç²°ç²¶ç²·ç²ºç²»ç²¼ç²¿ç³„ç³‡ç³ˆç³‰ç³�ç³�糓糔糕糗糙糚ç³�糦糩糫糵紃紇紈紉ç´�ç´‘ç´’ç´“ç´–ç´�紞紣紦紪ç´ç´±ç´¼ç´½ç´¾çµ€çµ�絇絈çµ�絑絓絗絙絚絜çµ�絥絧絪絰絸絺絻絿ç¶�綂綃綅綆綈綋綌ç¶�ç¶‘ç¶–ç¶—ç¶�����������������������������������咫哂咤咾咼哘哥哦å”�唔哽哮å“哺哢唹啀啣啌售啜啅啖啗唸唳å•�喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎å™�ç‡Ÿå˜´å˜¶å˜²å˜¸å™«å™¤å˜¯å™¬å™ªåš†åš€åšŠåš åš”åš�嚥嚮嚶嚴囂嚼å›�囃囀囈囎囑囓囗囮囹圀囿圄圉�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"���������������������������������綞綦綧綪綳綶綷綹緂緃緄緅緆緌ç·�緎緗緙縀緢緥緦緪緫ç·ç·±ç·µç·¶ç·¹ç·ºç¸ˆç¸�縑縕縗縜ç¸�ç¸ ç¸§ç¸¨ç¸¬ç¸ç¸¯ç¸³ç¸¶ç¸¿ç¹„繅繇繎ç¹�繒繘繟繡繢繥繫繮繯繳繸繾çº�纆纇纊çº�纑纕纘纚çº�纞缼缻缽缾缿罃罄罇ç½�罒罓罛罜ç½�罡罣罤罥罦ç½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åœˆåœ‹åœ�圓團圖嗇圜圦圷圸å�Žåœ»å�€å��å�©åŸ€åžˆå�¡å�¿åž‰åž“åž åž³åž¤åžªåž°åŸƒåŸ†åŸ”åŸ’åŸ“å ŠåŸ–åŸ£å ‹å ™å �å¡²å ¡å¡¢å¡‹å¡°æ¯€å¡’å ½å¡¹å¢…å¢¹å¢Ÿå¢«å¢ºå£žå¢»å¢¸å¢®å£…å£“å£‘å£—å£™å£˜å£¥å£œå£¤å£Ÿå£¯å£ºå£¹å£»å£¼å£½å¤‚å¤Šå¤�夛梦夥夬å¤å¤²å¤¸å¤¾ç«’奕å¥�å¥Žå¥šå¥˜å¥¢å¥ å¥§å¥¬å¥©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"���������������������������������罱罽罾罿羀羋ç¾�ç¾�ç¾�羑羖羗羜羡羢羦羪ç¾ç¾´ç¾¼ç¾¿ç¿€ç¿ƒç¿ˆç¿Žç¿�翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊è€�耎è€�耑耓耔耖è€�è€žè€Ÿè€ è€¤è€¦è€¬è€®è€°è€´è€µè€·è€¹è€ºè€¼è€¾è�€è�„è� è�¤è�¦è�è�±è�µè‚�肈肎肜肞肦肧肫肸肹胈èƒ�èƒ�èƒ’èƒ”èƒ•èƒ—èƒ˜èƒ èƒèƒ®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¥¸å¦�å¦�佞侫妣妲姆姨姜å¦�姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲å«�嬪嬶嬾åƒå…å€å‘å•åšå›å¥å©å°å³åµå¸æ–ˆåºå®€å®ƒå®¦å®¸å¯ƒå¯‡å¯‰å¯”å¯�寤實寢寞寥寫寰寶寳尅將專å°�å°“å° å°¢å°¨å°¸å°¹å±�屆屎屓�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èƒ°èƒ²èƒ³èƒ¶èƒ¹èƒºèƒ¾è„ƒè„‹è„–è„—è„˜è„œè„žè„ è„¤è„§è„¬è„°è„µè„ºè„¼è……è…‡è…Šè…Œè…’è…—è… è…¡è…§è…¨è…©è…腯腷è†�è†�膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎è‡�臕臗臛è‡�臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃èˆ�舓舔舙舚èˆ�舡舢舨舲舴舺艃艄艅艆����������������������������������å±�å±�å±å±¬å±®ä¹¢å±¶å±¹å²Œå²‘岔妛岫岻岶岼岷峅岾峇峙峩峽峺å³å¶Œå³ªå´‹å´•崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢å¶�嶬嶮嶽å¶�嶷嶼巉å·�å·“å·’å·–å·›å·«å·²å·µå¸‹å¸šå¸™å¸‘å¸›å¸¶å¸·å¹„å¹ƒå¹€å¹Žå¹—å¹”å¹Ÿå¹¢å¹¤å¹‡å¹µå¹¶å¹ºéº¼å¹¿åº å»�廂廈å»�å»��\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"���������������������������������艋艎è‰�è‰‘è‰–è‰œè‰ è‰£è‰§è‰è‰´è‰»è‰½è‰¿èŠ€èŠ�èŠƒèŠ„èŠ‡èŠ‰èŠŠèŠŽèŠ‘èŠ”èŠ–èŠ˜èŠšèŠ›èŠ èŠ¡èŠ£èŠ¤èŠ§èŠ¨èŠ©èŠªèŠ®èŠ°èŠ²èŠ´èŠ·èŠºèŠ¼èŠ¾èŠ¿è‹†è‹�è‹•è‹šè‹ è‹¢è‹¤è‹¨è‹ªè‹è‹¯è‹¶è‹·è‹½è‹¾èŒ€èŒ�茇茈茊茋è�”茛èŒ�茞茟茡茢茬èŒèŒ®èŒ°èŒ³èŒ·èŒºèŒ¼èŒ½è�‚è�ƒè�„è�‡è��è�Žè�‘è�•è�–è�—è�°è�¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å»–廣å»�廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉å½�彜弋弑弖弩å¼å¼¸å½�彈彌彎弯彑彖彗彙彡å½å½³å½·å¾ƒå¾‚å½¿å¾Šå¾ˆå¾‘å¾‡å¾žå¾™å¾˜å¾ å¾¨å¾å¾¼å¿–忻忤忸忱å¿�悳忿怡æ� 怙æ€�怩怎怱怛怕怫怦æ€�怺æ�šæ��æ�ªæ�·æ�Ÿæ�Šæ�†æ��æ�£æ�ƒæ�¤æ�‚æ�¬æ�«æ�™æ‚�æ‚�惧悃悚�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"���������������������������������è�½è�¿èŽ€èŽ‚èŽ„èŽ†èŽ�莒莔莕莘莙莛莜èŽ�莦莧莩莬莾莿è�€è�‡è�‰è��è��è�‘è�”è��è�“è�¨è�ªè�¶è�¸è�¹è�¼è��è�†è�Šè��è�‘è�•è�™èŽè�¯è�¹è‘…葇葈葊è‘�è‘�è‘‘è‘’è‘–è‘˜è‘™è‘šè‘œè‘ è‘¤è‘¥è‘§è‘ªè‘°è‘³è‘´è‘¶è‘¸è‘¼è‘½è’�蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌è“�è““ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‚„æ‚›æ‚–æ‚—æ‚’æ‚§æ‚‹æƒ¡æ‚¸æƒ æƒ“æ‚´å¿°æ‚½æƒ†æ‚µæƒ˜æ…�愕愆惶惷愀惴惺愃愡惻惱æ„�愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟æ…�慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹æ‡�懦懣懶懺懴懿懽懼懾戀戈戉æˆ�戌戔戛�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"���������������������������������蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎è”�蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆è•�è•�蕑蕒蕓蕖蕙蕜è•�è•žè•Ÿè• è•¡è•¢è•¤è•«è•¯è•¹è•ºè•»è•½è•¿è–�薅薆薉薋薌è–�è–“è–˜è–�è–Ÿè– è–¢è–¥è–§è–´è–¶è–·è–¸è–¼è–½è–¾è–¿è—‚è—‡è—Šè—‹è—Žè–è—˜è—šè—Ÿè— è—¦è—¨è—藳藶藼����������������������������������戞戡截戮戰戲戳æ‰�æ‰Žæ‰žæ‰£æ‰›æ‰ æ‰¨æ‰¼æŠ‚æŠ‰æ‰¾æŠ’æŠ“æŠ–æ‹”æŠƒæŠ”æ‹—æ‹‘æŠ»æ‹�拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵æ��挾æ��æ�œæ��掖掎掀掫æ�¶æŽ£æŽ�掉掟掵æ�«æ�©æŽ¾æ�©æ�€æ�†æ�£æ�‰æ�’æ�¶æ�„æ�–æ�´æ�†æ�“æ�¦æ�¶æ”�æ�—æ�¨æ��摧摯摶摎攪撕撓撥撩撈撼�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"���������������������������������藿蘀蘄蘅è˜�蘎è˜�蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙è™�è™ è™¡è™¢è™£è™¤è™©è™¬è™¯è™µè™¶è™·è™ºèš�蚑蚖蚘蚚蚜蚡蚦蚧蚨èšèš±èš³èš´èšµèš·èš¸èš¹èš¿è›€è›�è›ƒè›…è›‘è›’è›•è›—è›šè›œè› è›£è›¥è›§èšˆè›ºè›¼è›½èœ„èœ…èœ‡èœ‹èœŽèœ�èœ�èœ“èœ”èœ™èœžèœŸèœ¡èœ£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ“šæ“’æ“…æ“‡æ’»æ“˜æ“‚æ“±æ“§èˆ‰æ“ æ“¡æŠ¬æ“£æ“¯æ”¬æ“¶æ“´æ“²æ“ºæ”€æ“½æ”˜æ”œæ”…æ”¤æ”£æ”«æ”´æ”µæ”·æ”¶æ”¸ç•‹æ•ˆæ•–æ••æ•�敘敞æ•�敲數斂斃變斛斟斫斷旃旆æ—�æ—„æ—Œæ—’æ—›æ—™æ— æ—¡æ—±æ�²æ˜Šæ˜ƒæ—»æ�³æ˜µæ˜¶æ˜´æ˜œæ™�晄晉æ™�晞æ™�晤晧晨晟晢晰暃暈暎暉暄暘æš�æ›�暹曉暾暼�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"���������������������������������蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾è�€è�ƒè�…è��è�˜è��è�¡è�¤è�¥è�¯è�±è�²è�»èžƒèž„螅螆螇螈螉螋螌èž�èž“èž•èž—èž˜èž™èžžèž èž£èž§èž¬èžèž®èž±èžµèž¾èž¿èŸ�蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫èŸèŸ±èŸ³èŸ¸èŸºèŸ¿è �è ƒè †è ‰è Šè ‹è �è ™è ’è “è ”è ˜è šè ›è œè žè Ÿè ¨è è ®è °è ²è µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ›„æš¸æ›–æ›šæ› æ˜¿æ›¦æ›©æ›°æ›µæ›·æœ�朖朞朦朧霸朮朿朶æ��朸朷æ�†æ�žæ� æ�™æ�£æ�¤æž‰æ�°æž©æ�¼æ�ªæžŒæž‹æž¦æž¡æž…枷柯枴柬枳柩枸柤柞æŸ�æŸ¢æŸ®æž¹æŸŽæŸ†æŸ§æªœæ žæ¡†æ ©æ¡€æ¡�æ ²æ¡Žæ¢³æ «æ¡™æ¡£æ¡·æ¡¿æ¢Ÿæ¢�æ¢æ¢”æ¢�æ¢›æ¢ƒæª®æ¢¹æ¡´æ¢µæ¢ æ¢ºæ¤�æ¢�桾æ¤�棊椈棘椢椦棡椌æ£��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è ºè ¼è¡�è¡ƒè¡…è¡ˆè¡‰è¡Šè¡‹è¡Žè¡‘è¡•è¡–è¡˜è¡šè¡œè¡Ÿè¡ è¡¤è¡©è¡±è¡¹è¡»è¢€è¢˜è¢šè¢›è¢œè¢Ÿè¢ è¢¨è¢ªè¢ºè¢½è¢¾è£€è£Šè£‹è£Œè£�裎裑裒裓裛裞裧裯裰裱裵裷è¤�褆è¤�褎è¤�è¤•è¤–è¤˜è¤™è¤šè¤œè¤ è¤¦è¤§è¤¨è¤°è¤±è¤²è¤µè¤¹è¤ºè¤¾è¥€è¥‚è¥…è¥†è¥‰è¥�è¥’è¥—è¥šè¥›è¥œè¥¡è¥¢è¥£è¥«è¥®è¥°è¥³è¥µè¥ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ£”æ£§æ£•æ¤¶æ¤’æ¤„æ£—æ££æ¤¥æ£¹æ£ æ£¯æ¤¨æ¤ªæ¤šæ¤£æ¤¡æ£†æ¥¹æ¥·æ¥œæ¥¸æ¥«æ¥”æ¥¾æ¥®æ¤¹æ¥´æ¤½æ¥™æ¤°æ¥¡æ¥žæ¥�æ¦�楪榲榮æ§�榿æ§�槓榾槎寨槊æ§�æ¦»æ§ƒæ¦§æ¨®æ¦‘æ¦ æ¦œæ¦•æ¦´æ§žæ§¨æ¨‚æ¨›æ§¿æ¬Šæ§¹æ§²æ§§æ¨…æ¦±æ¨žæ§æ¨”槫樊樒æ«�樣樓橄樌橲樶橸橇橢橙橦橈樸樢æª�æª�æª æª„æª¢æª£ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"���������������������������������襻襼襽覉è¦�è¦�è¦”è¦•è¦›è¦œè¦Ÿè¦ è¦¥è¦°è¦´è¦µè¦¶è¦·è¦¼è§”è§•è§–è§—è§˜è§¥è§©è§«è§è§±è§³è§¶è§¹è§½è§¿è¨„訅訇è¨�è¨‘è¨’è¨”è¨•è¨žè¨ è¨¢è¨¤è¨¦è¨«è¨¬è¨¯è¨µè¨·è¨½è¨¾è©€è©ƒè©…è©‡è©‰è©�詎詓詖詗詘詜è©�詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋èª�èª�èª’èª–èª—èª™èªŸèª§èª©èª®èª¯èª³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æª—è˜—æª»æ«ƒæ«‚æª¸æª³æª¬æ«žæ«‘æ«Ÿæªªæ«šæ«ªæ«»æ¬…è˜–æ«ºæ¬’æ¬–é¬±æ¬Ÿæ¬¸æ¬·ç›œæ¬¹é£®æ‡æƒæ‰æ�æ™æ”æ›æŸæ¡æ¸æ¹æ¿æ®€æ®„殃æ®�殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂æ²�沚æ²�沛汾汨汳沒æ²�泄泱泓沽泗泅æ³�沮沱沾�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"���������������������������������誶誷誻誾諃諆諈諉諊諑諓諔諕諗è«�諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊è¬è¬°è¬·è¬¼è‚èƒè„è…è†èˆè’è“è”è™è�èžè£èè¶è¸è¹è¼è¾è®�讄讅讋è®�è®�讔讕讜讞讟谸谹谽谾豅豇豉豋è±�豑豓豔豗豘豛è±�豙豣豤豦豨豩è±è±³è±µè±¶è±»è±¾è²†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ²ºæ³›æ³¯æ³™æ³ªæ´Ÿè¡�æ´¶æ´«æ´½æ´¸æ´™æ´µæ´³æ´’æ´Œæµ£æ¶“æµ¤æµšæµ¹æµ™æ¶Žæ¶•æ¿¤æ¶…æ·¹æ¸•æ¸Šæ¶µæ·‡æ·¦æ¶¸æ·†æ·¬æ·žæ·Œæ·¨æ·’æ·…æ·ºæ·™æ·¤æ·•æ·ªæ·®æ¸æ¹®æ¸®æ¸™æ¹²æ¹Ÿæ¸¾æ¸£æ¹«æ¸«æ¹¶æ¹�渟湃渺湎渤滿æ¸�游溂溪溘滉溷滓溽溯滄溲滔滕æº�溥滂溟æ½�漑ç�Œæ»¬æ»¸æ»¾æ¼¿æ»²æ¼±æ»¯æ¼²æ»Œï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"���������������������������������貇貋è²�貒貓貙貛貜貤貹貺賅賆賉賋è³�賖賕賙è³�賡賨賬賯賰賲賵賷賸賾賿è´�贃贉贒贗贛赥赩赬赮赿趂趄趈è¶�è¶�è¶‘è¶•è¶žè¶Ÿè¶ è¶¦è¶«è¶¬è¶¯è¶²è¶µè¶·è¶¹è¶»è·€è·…è·†è·‡è·ˆè·Šè·Žè·‘è·”è·•è·—è·™è·¤è·¥è·§è·¬è·°è¶¼è·±è·²è·´è·½è¸�è¸„è¸…è¸†è¸‹è¸‘è¸”è¸–è¸ è¸¡è¸¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¼¾æ¼“æ»·æ¾†æ½ºæ½¸æ¾�æ¾€æ½¯æ½›æ¿³æ½æ¾‚潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑ç€�ç€�濾瀛瀚潴ç€�瀘瀟瀰瀾瀲ç�‘ç�£ç‚™ç‚’炯烱炬炸炳炮烟烋çƒ�烙焉烽焜焙煥煕熈煦煢煌煖煬ç†�ç‡»ç†„ç†•ç†¨ç†¬ç‡—ç†¹ç†¾ç‡’ç‡‰ç‡”ç‡Žç‡ ç‡¬ç‡§ç‡µç‡¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"���������������������������������踣踦踧踱踳踶踷踸踹踽蹀è¹�蹋è¹�蹎è¹�蹔蹛蹜è¹�蹞蹡蹢蹩蹬è¹è¹¯è¹°è¹±è¹¹è¹ºè¹»èº‚躃躉èº�躒躕躚躛èº�躞躢躧躩èºèº®èº³èºµèººèº»è»€è»�軃軄軇è»�軑軔軜軨軮軰軱軷軹軺è»è¼€è¼‚輇輈è¼�è¼�è¼–è¼—è¼˜è¼žè¼ è¼¡è¼£è¼¥è¼§è¼¨è¼¬è¼è¼®è¼´è¼µè¼¶è¼·è¼ºè½€è½�����������������������������������燹燿çˆ�çˆ�爛爨çˆçˆ¬çˆ°çˆ²çˆ»çˆ¼çˆ¿ç‰€ç‰†ç‰‹ç‰˜ç‰´ç‰¾çŠ‚çŠ�çŠ‡çŠ’çŠ–çŠ¢çŠ§çŠ¹çŠ²ç‹ƒç‹†ç‹„ç‹Žç‹’ç‹¢ç‹ ç‹¡ç‹¹ç‹·å€�猗猊猜猖çŒ�猴猯猩猥猾ç�Žç��默ç�—ç�ªç�¨ç�°ç�¸ç�µç�»ç�ºç�ˆç޳ç�ŽçŽ»ç�€ç�¥ç�®ç�žç’¢ç�…瑯ç�¥ç�¸ç�²ç�ºç‘•ç�¿ç‘Ÿç‘™ç‘�瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊ç“�ç“”ç�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"���������������������������������轃轇è½�轑轒轓轔轕轘è½�轞轥è¾�è¾ è¾¡è¾¤è¾¥è¾¦è¾µè¾¶è¾¸è¾¾è¿€è¿�迆迊迋è¿�è¿�è¿’è¿“è¿•è¿ è¿£è¿¤è¿¨è¿®è¿±è¿µè¿¶è¿»è¿¾é€‚é€„é€ˆé€Œé€˜é€›é€¨é€©é€¯é€ªé€¬é€é€³é€´é€·é€¿é�ƒé�„é�Œé�›é��é�¢é�¦é�§é�¬é�°é�´é�¹é‚…邈邋邌邎é‚�é‚•é‚—é‚˜é‚™é‚›é‚ é‚¡é‚¢é‚¥é‚°é‚²é‚³é‚´é‚¶é‚½éƒŒé‚¾éƒƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç“ ç“£ç“§ç“©ç“®ç“²ç“°ç“±ç“¸ç“·ç”„ç”ƒç”…ç”Œç”Žç”�甕甓甞甦甬甼畄ç•�畊畉畛畆畚畩畤畧畫ç•畸當疆疇畴疊疉疂疔疚ç–�疥疣痂疳痃疵疽疸疼疱ç—�痊痒痙痣痞痾痿痼ç˜�痰痺痲痳瘋ç˜�ç˜‰ç˜Ÿç˜§ç˜ ç˜¡ç˜¢ç˜¤ç˜´ç˜°ç˜»ç™‡ç™ˆç™†ç™œç™˜ç™¡ç™¢ç™¨ç™©ç™ªç™§ç™¬ç™°ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"���������������������������������郄郅郇郈郕郗郘郙郜éƒ�郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈é„�é„�é„”é„–é„—é„˜é„šé„œé„žé„ é„¥é„¢é„£é„§é„©é„®é„¯é„±é„´é„¶é„·é„¹é„ºé„¼é„½é…ƒé…‡é…ˆé…�酓酗酙酚酛酡酤酧é…酴酹酺酻é†�醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬é†é†®é†°é†±é†²é†³é†¶é†»é†¼é†½é†¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç™²ç™¶ç™¸ç™¼çš€çšƒçšˆçš‹çšŽçš–皓皙皚皰皴皸皹皺盂ç›�盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸ç�‡ç�šç�¨ç�«ç�›ç�¥ç�¿ç�¾ç�¹çžŽçž‹çž‘çž çžžçž°çž¶çž¹çž¿çž¼çž½çž»çŸ‡çŸ�çŸ—çŸšçŸœçŸ£çŸ®çŸ¼ç Œç ’ç¤¦ç 礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"���������������������������������釂釃釅釓釔釗釙釚釞釤釥釩釪釬é‡é‡®é‡¯é‡°é‡±é‡·é‡¹é‡»é‡½éˆ€éˆ�鈄鈅鈆鈇鈉鈊鈌éˆ�鈒鈓鈖鈘鈜éˆ�鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊é‰�鉎é‰�鉑鉘鉙鉜é‰�é‰ é‰¡é‰¥é‰§é‰¨é‰©é‰®é‰¯é‰°é‰µé‰¶é‰·é‰¸é‰¹é‰»é‰¼é‰½é‰¿éŠˆéŠ‰éŠŠéŠ�éŠŽéŠ’éŠ—ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç£§ç£šç£½ç£´ç¤‡ç¤’ç¤‘ç¤™ç¤¬ç¤«ç¥€ç¥ ç¥—ç¥Ÿç¥šç¥•ç¥“ç¥ºç¥¿ç¦Šç¦�禧齋禪禮禳禹禺秉秕秧秬秡秣稈ç¨�ç¨˜ç¨™ç¨ ç¨Ÿç¦€ç¨±ç¨»ç¨¾ç¨·ç©ƒç©—ç©‰ç©¡ç©¢ç©©é¾�穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊ç«�ç«�竕竓站竚ç«�竡竢竦ç«ç«°ç¬‚ç¬�笊笆笳笘笙笞笵笨笶ç��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éŠ™éŠŸéŠ éŠ¤éŠ¥éŠ§éŠ¨éŠ«éŠ¯éŠ²éŠ¶éŠ¸éŠºéŠ»éŠ¼éŠ½éŠ¿é‹€é‹�鋂鋃鋅鋆鋇鋈鋋鋌é‹�鋎é‹�鋓鋕鋗鋘鋙鋜é‹�é‹Ÿé‹ é‹¡é‹£é‹¥é‹§é‹¨é‹¬é‹®é‹°é‹¹é‹»é‹¿éŒ€éŒ‚éŒˆéŒ�錑錔錕錜éŒ�錞錟錡錤錥錧錩錪錳錴錶錷é�‡é�ˆé�‰é��é�‘é�’é�•é�—é�˜é�šé�žé�¤é�¥é�§é�©é�ªé�é�¯é�°é�±é�³é�´é�¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çºç¬„ç�笋çŒç…çµç¥ç´ç§ç°ç±ç¬ç®ç®�箘箟ç®�箜箚箋箒ç®�ç�箙篋ç¯�篌ç¯�箴篆ç¯�ç¯©ç°‘ç°”ç¯¦ç¯¥ç± ç°€ç°‡ç°“ç¯³ç¯·ç°—ç°�篶簣簧簪簟簷簫簽籌籃籔ç±�ç±€ç±�籘籟籤籖籥籬籵粃ç²�粤ç²ç²¢ç²«ç²¡ç²¨ç²³ç²²ç²±ç²®ç²¹ç²½ç³€ç³…糂糘糒糜糢鬻糯糲糴糶糺紆�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"���������������������������������é�ºé�½é�¿éŽ€éŽ�鎂鎈鎊鎋éŽ�éŽ�鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩é��é�„é�…é�†é�‡é�‰é�Šé�‹é�Œé��é�“é�™é�œé�žé�Ÿé�¢é�¦é�§é�¹é�·é�¸é�ºé�»é�½é��é�‚é�„é�ˆé�‰é��é�Žé��é�•é�–é�—é�Ÿé�®é�¯é�±é�²é�³é�´é�»é�¿é�½é‘ƒé‘…鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫é‘鑮鑯鑱鑲钄钃镸镹����������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮çµ�絣經綉絛ç¶�絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘ç·�緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧ç¹�繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒çº�纓纔纖纎纛纜缸缺�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"���������������������������������镾閄閈閌é–�é–Žé–�閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋é—�闑闒闓闙闚é—�é—žé—Ÿé— é—¤é—¦é˜�阞阢阤阥阦阬阱阳阷阸阹阺阼阽é™�陒陔陖陗陘陡陮陴陻陼陾陿éš�隂隃隄隉隑隖隚éš�隟隤隥隦隩隮隯隳隺雊雒嶲雘雚é›�雞雟雩雯雱雺霂����������������������������������罅罌ç½�罎ç½�ç½‘ç½•ç½”ç½˜ç½Ÿç½ ç½¨ç½©ç½§ç½¸ç¾‚ç¾†ç¾ƒç¾ˆç¾‡ç¾Œç¾”ç¾žç¾�羚羣羯羲羹羮羶羸è±ç¿…翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻è�Šè�†è�’è�˜è�šè�Ÿè�¢è�¨è�³è�²è�°è�¶è�¹è�½è�¿è‚„肆肅肛肓肚è‚å†�肬胛胥胙èƒ�胄胚胖脉胯胱脛脩脣脯腋�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"���������������������������������霃霅霉霚霛éœ�霡霢霣霨霱霳é��é�ƒé�Šé�Žé��é�•é�—é�˜é�šé�›é�£é�§é�ªé�®é�³é�¶é�·é�¸é�»é�½é�¿éž€éž‰éž•鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿éŸ�韄韅韇韉韊韌éŸ�韎éŸ�韑韔韗韘韙éŸ�éŸžéŸ éŸ›éŸ¡éŸ¤éŸ¯éŸ±éŸ´éŸ·éŸ¸éŸºé ‡é Šé ™é �é Žé ”é –é œé žé é £é ¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš‹è…†è„¾è…“è…‘èƒ¼è…±è…®è…¥è…¦è…´è†ƒè†ˆè†Šè†€è†‚è† è†•è†¤è†£è…Ÿè†“è†©è†°è†µè†¾è†¸è†½è‡€è‡‚è†ºè‡‰è‡�è‡‘è‡™è‡˜è‡ˆè‡šè‡Ÿè‡ è‡§è‡ºè‡»è‡¾èˆ�舂舅與舊èˆ�èˆ�舖舩舫舸舳艀艙艘è‰�艚艟艤艢艨艪艫舮艱艷艸艾èŠ�芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é «é ®é ¯é °é ²é ³é µé ¥é ¾é¡„é¡‡é¡Šé¡‘é¡’é¡“é¡–é¡—é¡™é¡šé¡¢é¡£é¡¥é¡¦é¡ªé¡¬é¢«é¢é¢®é¢°é¢´é¢·é¢¸é¢ºé¢»é¢¿é£‚飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱餲餳餴餵餹餺餻餼饀é¥�饆饇饈é¥�é¥Žé¥”é¥˜é¥™é¥›é¥œé¥žé¥Ÿé¥ é¦›é¦�馟馦馰馱馲馵����������������������������������茵茴茖茲茱è�€èŒ¹è��è�…茯茫茗茘莅莚莪莟莢莖茣莎莇莊è�¼è޵è�³è�µèŽ èŽ‰èŽ¨è�´è�“è�«è�Žè�½è�ƒè�˜è�‹è��è�·è�‡è� è�²è��è�¢è� 莽è�¸è”†è�»è‘è�ªè�¼è•šè’„è‘·è‘«è’葮蒂葩葆è�¬è‘¯è‘¹è�µè“Šè‘¢è’¹è’¿è’Ÿè“™è“�蒻蓚è“�è“�蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"���������������������������������馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌é¨�é¨‘é¨–é¨žé¨ é¨¢é¨£é¨¤é¨§é¨é¨®é¨³é¨µé¨¶é¨¸é©‡é©�驄驊驋驌驎驑驔驖é©�骪骬骮骯骲骴骵骶骹骻骾骿é«�髃髆髈髎é«�é«’é«•é«–é«—é«›é«œé« é«¤é«¥é«§é«©é«¬é«²é«³é«µé«¹é«ºé«½é«¿é¬€é¬�鬂鬃����������������������������������è•�蘂蕋蕕薀薤薈薑薊薨è•薔薛藪薇薜蕷蕾è–�藉薺è—�è–¹è—�è—•è—�藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿è™�ä¹•è™”è™Ÿè™§è™±èš“èš£èš©èšªèš‹èšŒèš¶èš¯è›„è›†èš°è›‰è £èš«è›”è›žè›©è›¬è›Ÿè››è›¯èœ’èœ†èœˆèœ€èœƒè›»èœ‘èœ‰èœ�蛹蜊蜴蜿蜷蜻蜥蜩蜚è� è�Ÿè�¸è�Œè�Žè�´è�—è�¨è�®è�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"���������������������������������鬄鬅鬈鬉鬋鬌é¬�鬎é¬�é¬’é¬–é¬™é¬›é¬œé¬ é¬¦é¬«é¬é¬³é¬´é¬µé¬·é¬¹é¬ºé¬½éˆé‹éŒé•é–é—é›éžé¡é£é¥é¦é¨éªé«é¬éé®é³éµé·é¸é¹é¿é®€é®„鮅鮆鮇鮉鮊鮋é®�é®�é®�鮔鮚é®�鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿é¯�鯇鯈鯎é¯�鯗鯘é¯�鯟鯥鯧鯪鯫鯯鯳鯷鯸����������������������������������è�“è�£è�ªè …螢螟螂螯蟋螽蟀èŸ�é›–èž«èŸ„èž³èŸ‡èŸ†èž»èŸ¯èŸ²èŸ è �è �èŸ¾èŸ¶èŸ·è ŽèŸ’è ‘è –è •è ¢è ¡è ±è ¶è ¹è §è »è¡„è¡‚è¡’è¡™è¡žè¡¢è¡«è¢�衾袞衵衽袵衲袂袗袒袮袙袢è¢�袤袰袿袱裃裄裔裘裙è£�裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫è¥�襄褻褶褸襌è¤�è¥ è¥žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"���������������������������������鯹鯺鯽鯿鰀鰂鰋é°�鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦鰧鰨鰩鰪鰱鰵鰶鰷鰽é±�鱃鱄鱅鱉鱊鱎é±�é±�鱓鱔鱖鱘鱛é±�鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜é´�鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻����������������������������������襦襤è¥è¥ªè¥¯è¥´è¥·è¥¾è¦ƒè¦ˆè¦Šè¦“覘覡覩覦覬覯覲覺覽覿觀觚觜è§�觧觴觸訃訖è¨�訌訛è¨�訥訶è©�詛詒詆詈詼è©è©¬è©¢èª…誂誄誨誡誑誥誦誚誣諄è«�è«‚è«šè««è«³è«§è«¤è«±è¬”è« è«¢è«·è«žè«›è¬Œè¬‡è¬šè«¡è¬–è¬�è¬—è¬ è¬³éž«è¬¦è¬«è¬¾è¬¨è�èŒè�èŽè‰è–è›èšè«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"���������������������������������鵼鵾鶃鶄鶆鶊é¶�é¶Žé¶’é¶“é¶•é¶–é¶—é¶˜é¶¡é¶ªé¶¬é¶®é¶±é¶µé¶¹é¶¼é¶¿é·ƒé·‡é·‰é·Šé·”é·•é·–é·—é·šé·žé·Ÿé· é·¥é·§é·©é·«é·®é·°é·³é·´é·¾é¸Šé¸‚é¸‡é¸Žé¸�鸑鸒鸕鸖鸙鸜é¸�鹺鹻鹼麀麂麃麄麅麇麎éº�麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬é»é»®é»°é»±é»²é»µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½èŸè¬è¯è´è½è®€è®Œè®Žè®’讓讖讙讚谺è±�谿豈豌豎è±�豕豢豬豸豺貂貉貅貊è²�貎貔豼貘æˆ�è²è²ªè²½è²²è²³è²®è²¶è³ˆè³�賤賣賚賽賺賻贄贅贊贇è´�è´�è´�齎贓è³�贔贖赧èµèµ±èµ³è¶�趙跂趾趺è·�跚跖跌跛跋跪跫跟跣跼踈踉跿è¸�踞è¸�踟蹂踵踰踴蹊�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"���������������������������������黸黿鼂鼃鼉é¼�é¼�鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿é½�齃齄齅齆齇齓齕齖齗齘齚é½�齞齨齩é½é½®é½¯é½°é½±é½³é½µé½ºé½½é¾�é¾�龑龒龔龖龗龞龡龢龣龥�������������������������������������������������������������蹇蹉蹌è¹�è¹ˆè¹™è¹¤è¹ è¸ªè¹£è¹•è¹¶è¹²è¹¼èº�躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣è¾è¾¯è¾·è¿šè¿¥è¿¢è¿ªè¿¯é‚‡è¿´é€…迹迺逑逕逡é€�逞逖逋逧逶逵逹迸�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é��é��é�‘é�’逎é�‰é€¾é�–é�˜é�žé�¨é�¯é�¶éš¨é�²é‚‚é�½é‚�邀邊邉é‚�邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀é‡�釉釋é‡�釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋é‰�銜銖銓銛鉚é‹�銹銷鋩éŒ�鋺é�„錮�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻é�œé� é�¼é�®é�–鎰鎬éŽéŽ”éŽ¹é�–é�—é�¨é�¥é�˜é�ƒé��é��é�ˆé�¤é�šé�”é�“é�ƒé�‡é��é�¶é�«é�µé�¡é�ºé‘�é‘’é‘„é‘›é‘ é‘¢é‘žé‘ªéˆ©é‘°é‘µé‘·é‘½é‘šé‘¼é‘¾é’�é‘¿é–‚é–‡é–Šé–”é––é–˜é–™é– é–¨é–§é–閼閻閹閾闊濶闃é—�闌闕闔闖關闡闥闢阡阨阮阯陂陌é™�陋陷陜陞�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é™�陟陦陲陬éš�隘隕隗險隧隱隲隰隴隶隸隹雎雋雉é›�è¥�雜éœ�雕雹霄霆霈霓霎霑éœ�霖霙霤霪霰霹霽霾é�„é�†é�ˆé�‚é�‰é�œé� é�¤é�¦é�¨å‹’é�«é�±é�¹éž…é�¼éž�é�ºéž†éž‹éž�éž�鞜鞨鞦鞣鞳鞴韃韆韈韋韜éŸé½�韲竟韶韵é �é Œé ¸é ¤é ¡é ·é ½é¡†é¡�顋顫顯顰�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡é¤�é¤žé¤¤é¤ é¤¬é¤®é¤½é¤¾é¥‚é¥‰é¥…é¥�饋饑饒饌饕馗馘馥é¦é¦®é¦¼é§Ÿé§›é§�駘駑é§é§®é§±é§²é§»é§¸é¨�é¨�騅駢騙騫騷驅驂驀驃騾驕é©�驛驗驟驢驥驤驩驫驪éªéª°éª¼é«€é«�髑髓體髞髟髢髣髦髯髫髮髴髱髷�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲é„éƒé�é�éŽé‘é˜é´é®“é®ƒé®‘é®–é®—é®Ÿé® é®¨é®´é¯€é¯Šé®¹é¯†é¯�é¯‘é¯’é¯£é¯¢é¯¤é¯”é¯¡é°ºé¯²é¯±é¯°é°•é°”é°‰é°“é°Œé°†é°ˆé°’é°Šé°„é°®é°›é°¥é°¤é°¡é°°é±‡é°²é±†é°¾é±šé± é±§é±¶é±¸é³§é³¬é³°é´‰é´ˆé³«é´ƒé´†é´ªé´¦é¶¯é´£é´Ÿéµ„é´•é´’éµ�鴿鴾鵆鵈�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"���������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ����������'"���炻仼僴凬匇匤﨎咊å�™ï¨�ï¨�å¢žå¯¬å³µåµ“ï¨‘å¾·æ‚…æ„ æ•Žï¿½æ™¥ï¨’ï¤©æ �﨓﨔橫櫢淸淲瀨凞猪ç”�皂皞益礰礼神祥福竧靖ï¨�ç¶ ç·–ï¨žè�¢ï¨Ÿè–°ï¨ ï¨¡è ‡ï¨¢è¿è³´èµ¶ï¨£ï¨¤ï¨¥éƒžï¨¦é„•﨧﨨閒隆����������������������������������éµ�鵞鵤鵑éµ�鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄é·�鶻鶸鶺鷆é·�鷂鷙鷓鷸鷦é·é·¯é·½é¸šé¸›é¸žé¹µé¹¹é¹½éº�麈麋麌麒麕麑éº�麥麩麸麪éºé�¡é»Œé»Žé»�é»�黔黜點é»�é» é»¥é»¨é»¯é»´é»¶é»·é»¹é»»é»¼é»½é¼‡é¼ˆçš·é¼•é¼¡é¼¬é¼¾é½Šé½’é½”é½£é½Ÿé½ é½¡é½¦é½§é½¬é½ªé½·é½²é½¶é¾•é¾œé¾ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"���������������������������������﨩霻�é�‘飯飼館馞髙é²ï¨é»‘������������������������������������������������������é��ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ¯æ§‡é�™ç‘¤å‡œç†™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"���������������������������������îŽîŽ®îŽ¯îŽ°îŽ±îŽ²îŽ³îŽ´îŽµîŽ¶îŽ·îŽ¸îŽ¹îŽºîŽ»îŽ¼îŽ½îŽ¾îŽ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î€€î€�î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî���\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"���������������������������������î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�î‘žî‘Ÿî‘ î‘¡î‘¢î‘£î‘¤î‘¥î‘¦î‘§ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"���������������������������������î‘î’�î’�î’Žî’�î’�î’�î’žî’Ÿî’ î’¡î’¢î’£î’¤î’¥î’¦î’§î’¨î’©î’ªî’«î’¬î’î“�����������������������������������îƒ�îƒ�îƒ�îƒ�îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºîƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„��\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"���������������������������������î“�î“�î“�î“�î“žî“Ÿî“ î“¡î“¢î“£î“¤î“¥î“¦î“§î“¨î“©î“ªî“«î“¬î“î”�î”�î”�î”�î”�î”žî”Ÿî” î”¡î”¢î”£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î„šî„›î„œî„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„î…�î…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"���������������������������������î”î•�î•�î•�î•�î•�î•žî•Ÿî• î•¡î•¢î•£î•¤î•¥î•¦î•§î•¨î•©î•ªî•«î•¬î•î–�����������������������������������î†�î†�î†�î†�î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†î†®î†¯î†°î†±î†²î†³î†´î†µî†¶î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡��\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"���������������������������������î–�î–Žî–�î–�î–�î–žî–Ÿî– î–¡î–¢î–£î–¤î–¥î–¦î–§î–¨î–©î–ªî–«î–¬î–î—�î—�î—Žî—�î—�î—�����������������������������������î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î— î—¡î—¢î—£î—¤î—¥î—¦î—§î—¨î—©î—ªî—«î—¬î—î˜�î˜�î˜�î˜�î˜�î˜žî˜Ÿî˜ î˜¡î˜¢î˜£î˜¤î˜¥î˜¦î˜§î˜¨î˜©î˜ªî˜«î˜¬î˜î˜®î˜¯î˜°î˜±î˜²î˜³î˜´î˜µî˜¶î˜·î˜¸î˜¹î˜ºî˜»î˜¼î˜½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îˆ´îˆµîˆ¶îˆ·îˆ¸îˆ¹îˆºîˆ»îˆ¼îˆ½îˆ¾îˆ¿î‰€î‰�î‰�î‰�î‰�î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ�îŠ�îŠ�îŠ��\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"���������������������������������î™�î™�î™�î™�î™�î™žî™Ÿî™ î™¡î™¢î™£î™¤î™¥î™¦î™§î™¨î™©î™ªî™«î™¬î™î™®î™¯î™°î™±î™²î™³î™´î™µî™¶î™·î™¸î™¹î™ºî™»î™¼î™½î™¾î™¿îš€îš�îš�îš�îš�����������������������������������îŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"���������������������������������îš�îšžîšŸîš îš¡îš¢îš£îš¤îš¥îš¦îš§îš¨îš©îšªîš«îš¬îšîš®îš¯îš°îš±îš²îš³îš´îšµîš¶îš·îš¸îš¹îšºîš»îš¼îš½îš¾îš¿î›€î›�î›�î›�î›�î›�î›žî›Ÿî› î›¡î›¢î›£î›¤î›¥î›¦î›§î›¨î›©î›ªî›«î›¬î›î›®î›¯î›°î›±î›²î›³î›´î›µî›¶î›·î›¸î›¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î‹°î‹±î‹²î‹³î‹´î‹µî‹¶î‹·î‹¸î‹¹î‹ºî‹»î‹¼î‹½î‹¾î‹¿îŒ€îŒ�îŒ�îŒ�îŒ�îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒîŒ®îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµîŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî���\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"���������������������������������îœ�îœ�îœ�îœ�îœ�îœžîœŸîœ îœ¡îœ¢îœ£îœ¤îœ¥îœ¦îœ§îœ¨îœ©îœªîœ«îœ¬îœîœ®îœ¯îœ°îœ±îœ²îœ³îœ´îœµîœ¶îœ·îœ¸îœ¹îœºîœ»îœ¼îœ½îœ¾îœ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—����������������������������������î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£îŽ¤îŽ¥îŽ¦îŽ§îŽ¨îŽ©îŽªîŽ«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€ï£�ï£žï£Ÿï£ ï£¡ï£¢ï££ï£¤ï£¥ï£¦ï£§ï£¨ï£©ï£ªï£«ï£¬ï£ï£®ï£¯ï£°ï£±ï£²ï£³ï£´ï£µï£¶ï£·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï£¸ï£¹ï£ºï£»ï£¼ï£½ï£¾ï£¿\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。・ˉˇ¨〃々―~�…‘’“â€�〔〕〈〉《》「ã€�『ã€�〖〗ã€�】±×÷∶∧∨∑âˆ�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽âˆ�â‰ â‰®â‰¯â‰¤â‰¥âˆžâˆµâˆ´â™‚â™€Â°â€²â€³â„ƒï¼„Â¤ï¿ ï¿¡â€°Â§â„–â˜†â˜…â—‹â—�◎◇◆□■△▲※→â†�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌â’�â’Žâ’�â’�⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�â’‚â’ƒâ’„â’…â’†â’‡â‘ â‘¡â‘¢â‘£â‘¤â‘¥â‘¦â‘§â‘¨â‘©ï¿½ï¿½ãˆ ãˆ¡ãˆ¢ãˆ£ãˆ¤ãˆ¥ãˆ¦ãˆ§ãˆ¨ãˆ©ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©â…ªâ…«ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#¥%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¼¼ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω���������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ä�áǎà ēéěèīÃÇ�ìÅ�óǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������─â”�│┃┄┅┆┇┈┉┊┋┌â”�┎â”�â”�┑┒┓└┕┖┗┘┙┚┛├â”�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬â”┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀â•�╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾ç¢�爱隘éž�æ°¨å®‰ä¿ºæŒ‰æš—å²¸èƒºæ¡ˆè‚®æ˜‚ç›Žå‡¹æ•–ç†¬ç¿±è¢„å‚²å¥¥æ‡Šæ¾³èŠæ�Œæ‰’å�å�§ç¬†å…«ç–¤å·´æ‹”è·‹é�¶æŠŠè€™å��霸罢爸白æŸ�百摆佰败拜稗斑ç�æ�¬æ‰³èˆ¬é¢�æ�¿ç‰ˆæ‰®æ‹Œä¼´ç“£å�ŠåŠžç»Šé‚¦å¸®æ¢†æ¦œè†€ç»‘æ£’ç£…èšŒé•‘å‚�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹ä¿�å ¡é¥±å®�抱报暴豹é²�爆æ�¯ç¢‘悲å�‘北辈背è´�é’¡å€�ç‹ˆå¤‡æƒ«ç„™è¢«å¥”è‹¯æœ¬ç¬¨å´©ç»·ç”æ³µè¹¦è¿¸é€¼é¼»æ¯”鄙笔彼碧蓖蔽毕毙毖å¸�åº‡ç—¹é—æ•�弊必辟å£�臂é�¿é™›éžè¾¹ç¼–è´¬æ‰�便å�˜å�žè¾¨è¾©è¾«é��æ ‡å½ªè†˜è¡¨é³–æ†‹åˆ«ç˜ªå½¬æ–Œæ¿’æ»¨å®¾æ‘ˆå…µå†°æŸ„ä¸™ç§‰é¥¼ç‚³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻è� æ’æ‹¨é’µæ³¢å�šå‹ƒæ��铂箔伯帛舶脖膊渤泊驳æ�•å�œå“ºè¡¥åŸ ä¸�布æ¥ç°¿éƒ¨æ€–擦猜è£�æ��æ‰�è´¢ç�¬è¸©é‡‡å½©è�œè”¡é¤�å�‚èš•æ®‹æƒæƒ¨ç�¿è‹�舱仓沧è—�æ“�糙槽曹è�‰åŽ•ç–ä¾§å†Œæµ‹å±‚è¹æ�’å�‰èŒ¬èŒ¶æŸ¥ç¢´æ�½å¯Ÿå²”差诧拆柴豺æ�€æŽºè�‰é¦‹è°—ç¼ é“²äº§é˜�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������场å°�常长å�¿è‚ 厂敞畅唱倡超抄钞æœ�嘲潮巢å�µç‚’车扯撤掣彻澈郴臣辰尘晨忱沉陈è¶�衬撑称城橙æˆ�呈乘程惩澄诚承逞骋秤å�ƒç—´æŒ�åŒ™æ± è¿Ÿå¼›é©°è€»é½¿ä¾ˆå°ºèµ¤ç¿…æ–¥ç‚½å……å†²è™«å´‡å® æŠ½é…¬ç•´è¸Œç¨ æ„�ç¹ä»‡ç»¸çž…丑è‡åˆ�出橱厨躇锄é›�æ»�除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗æ��触处æ�£å·�ç©¿æ¤½ä¼ èˆ¹å–˜ä¸²ç–®çª—å¹¢åºŠé—¯åˆ›å�¹ç‚Šæ�¶é”¤åž‚æ˜¥æ¤¿é†‡å”‡æ·³çº¯è ¢æˆ³ç»°ç–µèŒ¨ç£�雌辞慈瓷è¯�æ¤åˆºèµ�次è�ªè‘±å›±åŒ†ä»Žä¸›å‡‘粗醋簇促蹿篡窜摧崔催脆ç˜�ç²¹æ·¬ç¿ æ�‘å˜å¯¸ç£‹æ’®æ�“措挫错æ�è¾¾ç”瘩打大呆æ¹å‚£æˆ´å¸¦æ®†ä»£è´·è¢‹å¾…逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ€ è€½æ‹…ä¸¹å�•郸掸胆旦氮但惮淡诞弹蛋当挡党è�¡æ¡£åˆ€æ�£è¹ˆå€’岛祷导到稻悼é�“盗德得的蹬ç�¯ç™»ç‰çžªå‡³é‚“å ¤ä½Žæ»´è¿ªæ•Œç¬›ç‹„æ¶¤ç¿Ÿå«¡æŠµåº•åœ°è’‚ç¬¬å¸�å¼Ÿé€’ç¼”é¢ æŽ‚æ»‡ç¢˜ç‚¹å…¸é�›åž«ç”µä½ƒç”¸åº—æƒ¦å¥ æ·€æ®¿ç¢‰å�¼é›•凋åˆ�掉å�Šé’“调跌爹碟è�¶è¿è°�å� �\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ä¸�盯å�®é’‰é¡¶é¼Žé”å®šè®¢ä¸¢ä¸œå†¬è‘£æ‡‚åŠ¨æ ‹ä¾—æ�«å†»æ´žå…œæŠ–斗陡豆逗痘都ç�£æ¯’çŠŠç‹¬è¯»å µç�¹èµŒæ�œé•€è‚šåº¦æ¸¡å¦’端çŸé”»æ®µæ–ç¼Žå †å…‘é˜Ÿå¯¹å¢©å�¨è¹²æ•¦é¡¿å›¤é’�盾é��掇哆多夺垛躲朵跺舵å‰�æƒ°å •è›¾å³¨é¹…ä¿„é¢�讹娥æ�¶åŽ„æ‰¼é��鄂饿æ�©è€Œå„¿è€³å°”饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰å�‘罚ç�ä¼�ä¹�阀法ç��藩帆番翻樊矾钒ç¹�凡烦å��è¿”èŒƒè´©çŠ¯é¥æ³›å�ŠèŠ³æ–¹è‚ªæˆ¿é˜²å¦¨ä»¿è®¿çººæ”¾è�²é�žå•¡é£žè‚¥åŒªè¯½å� 肺废沸费芬酚å�©æ°›åˆ†çº·å�Ÿç„šæ±¾ç²‰å¥‹ä»½å¿¿æ„¤ç²ªä¸°å°�枫蜂峰锋风疯烽逢冯ç¼�讽奉凤佛å�¦å¤«æ•·è‚¤åµæ‰¶æ‹‚è¾�幅氟符ä¼�俘æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪ç¦�袱弗甫抚辅俯釜斧脯腑府è…�赴副覆赋å¤�傅付阜父腹负富讣附妇缚å’�噶嘎该改概钙盖溉干甘æ�†æŸ‘ç«¿è‚�赶感秆敢赣冈刚钢缸肛纲岗港æ� 篙皋高è†�羔糕æ�žé•�ç¨¿å‘Šå“¥æŒæ��戈鸽胳疙割é�©è‘›æ ¼è›¤é˜�隔铬个å�„ç»™æ ¹è·Ÿè€•æ›´åºšç¾¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功æ�龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构è´å¤Ÿè¾œè�‡å’•ç®�ä¼°æ²½å¤å§‘鼓å�¤è›Šéª¨è°·è‚¡æ•…顾固雇刮瓜å‰�寡挂褂乖æ‹�æ€ªæ£ºå…³å®˜å† è§‚ç®¡é¦†ç½�惯ç�Œè´¯å…‰å¹¿é€›ç‘°è§„åœç¡…归龟闺轨鬼诡癸桂柜跪贵刽辊滚æ£�é”…éƒå›½æžœè£¹è¿‡å“ˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éª¸å©æµ·æ°¦äº¥å®³éª‡é…£æ†¨é‚¯éŸ©å�«æ¶µå¯’函喊罕翰撼æ��旱憾æ‚�焊汗汉夯æ�航壕嚎豪毫éƒ�好耗å�·æµ©å‘µå–�è�·è��æ ¸ç¦¾å’Œä½•å�ˆç›’貉阂河涸赫è¤�é¹¤è´ºå˜¿é»‘ç—•å¾ˆç‹ æ�¨å“¼äº¨æ¨ªè¡¡æ�’轰哄烘虹鸿洪å®�弘红喉侯猴å�¼åŽšå€™å�Žå‘¼ä¹Žå¿½ç‘šå£¶è‘«èƒ¡è�´ç‹�糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗å�ŽçŒ¾æ»‘画划化è¯�æ§�徊怀淮å��欢环桓还缓æ�¢æ‚£å”¤ç—ªè±¢ç„•涣宦幻è�’慌黄磺è�—簧皇凰惶煌晃幌æ��è°Žç�°æŒ¥è¾‰å¾½æ�¢è›”回æ¯�悔慧å�‰æƒ 晦贿秽会烩汇讳诲绘è�¤æ˜�å©šé‚æµ‘æ··è±�活伙ç�«èŽ·æˆ–æƒ‘éœ�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉å�‰æž�棘辑ç±�集å�Šæ€¥ç–¾æ±²å�³å«‰çº§æŒ¤å‡ 脊己蓟技冀å£ä¼Žç¥å‰‚æ‚¸æµŽå¯„å¯‚è®¡è®°æ—¢å¿Œé™…å¦“ç»§çºªå˜‰æž·å¤¹ä½³å®¶åŠ è�šé¢Šè´¾ç”²é’¾å�‡ç¨¼ä»·æž¶é©¾å«�æ¼ç›‘å�šå°–笺间煎兼肩艰奸缄茧检柬碱硷拣æ�¡ç®€ä¿å‰ªå‡�è��槛鉴践贱è§�é”®ç®ä»¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�¥èˆ°å‰‘饯æ¸�æº…æ¶§å»ºåƒµå§œå°†æµ†æ±Ÿç–†è’‹æ¡¨å¥–è®²åŒ é…±é™�蕉椒ç¤�焦胶交郊浇骄娇嚼æ�…铰矫侥脚狡角饺缴绞剿教酵轿较å�«çª–æ�接皆秸街阶截劫节桔æ�°æ�·ç�«ç«æ´�结解å§�æˆ’è—‰èŠ¥ç•Œå€Ÿä»‹ç–¥è¯«å±Šå·¾ç‹æ–¤é‡‘今津襟紧锦仅谨进é�³æ™‹ç¦�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲è�†å…¢èŒŽç�›æ™¶é²¸äº¬æƒŠç²¾ç²³ç»�äº•è¦æ™¯é¢ˆé�™å¢ƒæ•¬é•œå¾„ç—‰é�–竟竞净炯窘æ�ªç©¶çº 玖éŸä¹…ç�¸ä¹�é…’åŽ©æ•‘æ—§è‡¼èˆ…å’Žå°±ç–šéž æ‹˜ç‹™ç–½å±…é©¹è�Šå±€å’€çŸ©ä¸¾æ²®è�šæ‹’æ�®å·¨å…·è·�踞锯俱å�¥æƒ§ç‚¬å‰§æ��鹃娟倦眷å�·ç»¢æ’…攫抉掘倔爵觉决诀ç»�å�‡è�Œé’§å†›å�›å³»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡éª�喀咖å�¡å’¯å¼€æ�©æ¥·å‡¯æ…¨åˆŠå ªå‹˜å�Žç �çœ‹åº·æ…·ç³ æ‰›æŠ—äº¢ç‚•è€ƒæ‹·çƒ¤é� å�·è‹›æŸ¯æ£µç£•颗科壳咳å�¯æ¸´å…‹åˆ»å®¢è¯¾è‚¯å•ƒåž¦æ�³å�‘å�空æ��å”æŽ§æŠ å�£æ‰£å¯‡æž¯å“窟苦酷库裤夸垮挎跨胯å�—ç·ä¾©å¿«å®½æ¬¾åŒ¡ç�狂框矿眶旷况äº�盔岿窥葵奎é�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃å�¤æ˜†æ�†å›°æ‹¬æ‰©å»“阔垃拉喇蜡腊辣啦莱æ�¥èµ–è“�婪æ �拦篮阑兰澜谰æ�½è§ˆæ‡’缆烂滥ç�…榔狼廊郎朗浪æ�žåŠ³ç‰¢è€�佬姥酪烙æ¶�å‹’ä¹�é›·é•蕾磊累儡垒擂肋类泪棱楞冷厘梨çŠ�黎篱狸离漓ç�†æ�Žé‡Œé²¤ç¤¼èމè�”å��æ —ä¸½åŽ‰åŠ±ç ¾åŽ†åˆ©å‚ˆä¾‹ä¿��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩è�”莲连镰廉怜涟帘敛脸链æ�‹ç‚¼ç»ƒç²®å‡‰æ¢�粱良两辆é‡�晾亮谅撩è�Šåƒšç–—燎寥辽潦了撂镣廖料列裂烈劣猎ç�³æž—磷霖临邻鳞淋凛èµ�å��拎玲è�±é›¶é¾„铃伶羚凌ç�µé™µå²é¢†å�¦ä»¤æºœç�‰æ¦´ç¡«é¦�留刘瘤æµ�柳å…é¾™è�‹å’™ç¬¼çª¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄æ�‚篓æ¼�陋芦å�¢é¢…åº�炉掳å�¤è™�é²�麓碌露路赂鹿潞禄录陆戮驴å�•é“�ä¾£æ—…å±¥å±¡ç¼•è™‘æ°¯å¾‹çŽ‡æ»¤ç»¿å³¦æŒ›åªæ»¦å�µä¹±æŽ 略抡轮伦仑沦纶论è��螺罗逻锣箩骡裸è�½æ´›éª†ç»œå¦ˆéº»çŽ›ç �蚂马骂嘛å�—埋买麦å�–迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆å�¯èŒ‚冒帽貌贸么玫枚梅酶霉煤没眉媒é•�æ¯�美昧å¯�妹媚门闷们è�Œè’™æª¬ç›Ÿé”°çŒ›æ¢¦åŸçœ¯é†šé�¡ç³œè¿·è°œå¼¥ç±³ç§˜è§…æ³Œèœœå¯†å¹‚æ£‰çœ ç»µå†•å…�勉娩缅é�¢è‹—æ��çž„è—�秒渺庙妙蔑ç�民抿皿æ•�悯闽明螟鸣é“å��命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‘¹è˜‘æ¨¡è†œç£¨æ‘©é”æŠ¹æœ«èŽ«å¢¨é»˜æ²«æ¼ å¯žé™Œè°‹ç‰ŸæŸ�拇牡亩姆æ¯�墓暮幕募慕木目ç�¦ç‰§ç©†æ‹¿å“ªå‘�é’ é‚£å¨œçº³æ°–ä¹ƒå¥¶è€�奈å�—ç”·éš¾å›ŠæŒ è„‘æ�¼é—¹æ·–å‘¢é¦�å†…å«©èƒ½å¦®éœ“å€ªæ³¥å°¼æ‹Ÿä½ åŒ¿è…»é€†æººè”«æ‹ˆå¹´ç¢¾æ’µæ�»å¿µå¨˜é…¿é¸Ÿå°¿æ��è�‚å½å•®é•Šé•�æ¶…æ‚¨æŸ ç‹žå‡�å®��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛æ‰é’®çº½è„“浓农弄奴努怒女暖è™�疟挪懦糯诺哦欧鸥殴藕呕å�¶æ²¤å•ªè¶´çˆ¬å¸•怕ç�¶æ‹�排牌徘湃派攀潘盘ç£�盼畔判å�›ä¹“庞æ—�耪胖抛咆刨炮è¢�跑泡呸胚培裴赔陪é…�ä½©æ²›å–·ç›†ç °æŠ¨çƒ¹æ¾Žå½è“¬æ£šç¡¼ç¯·è†¨æœ‹é¹�æ�§ç¢°å�¯ç ’霹批披劈ç�µæ¯—�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻å±�è¬ç¯‡å��片骗飘漂瓢票撇瞥拼频贫å“�è�˜ä¹’å�ªè‹¹è��å¹³å‡ç“¶è¯„å±�å�¡æ³¼é¢‡å©†ç ´é„迫粕剖扑铺仆莆葡è�©è’²åŸ”朴圃普浦谱æ›�ç€‘æœŸæ¬ºæ –æˆšå¦»ä¸ƒå‡„æ¼†æŸ’æ²�其棋奇æ§ç•¦å´Žè„�é½�旗祈ç¥�骑起岂乞ä¼�å�¯å¥‘ç Œå™¨æ°”è¿„å¼ƒæ±½æ³£è®«æŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�°æ´½ç‰µæ‰¦é’Žé“…å�ƒè¿�ç¾ä»Ÿè°¦ä¹¾é»”钱钳å‰�潜é�£æµ…è°´å ‘åµŒæ¬ æ‰æžªå‘›è…”羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘å³ä¿�çª�切茄且怯窃钦侵亲秦ç�´å‹¤èŠ¹æ“’ç¦½å¯�æ²�é�’轻氢倾å�¿æ¸…擎晴氰情顷请庆ç�¼ç©·ç§‹ä¸˜é‚±ç�ƒæ±‚å›šé…‹æ³…è¶‹åŒºè›†æ›²èº¯å±ˆé©±æ¸ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�–娶龋趣去圈颧æ�ƒé†›æ³‰å…¨ç—Šæ‹³çŠ¬åˆ¸åŠ�缺炔瘸å�´é¹Šæ¦·ç¡®é›€è£™ç¾¤ç„¶ç‡ƒå†‰æŸ“瓤壤攘嚷让饶扰绕惹çƒå£¬ä»�人å¿�韧任认刃妊纫扔ä»�日戎茸蓉è�£èž�熔溶容绒冗æ�‰æŸ”è‚‰èŒ¹è •å„’åºå¦‚辱乳æ±�入褥软阮蕊瑞é”�闰润若弱撒洒è�¨è…®é³ƒå¡žèµ›ä¸‰å���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧æ�”éªšæ‰«å«‚ç‘Ÿè‰²æ¶©æ£®åƒ§èŽŽç ‚æ�€åˆ¹æ²™çº±å‚»å•¥ç…žç›æ™’ç�Šè‹«æ�‰å±±åˆ 煽衫闪陕擅赡膳善汕扇缮墒伤商èµ�晌上尚裳梢æ�Žç¨�烧èŠ�勺韶少哨邵ç»�奢赊蛇舌èˆ�èµ¦æ‘„å°„æ…‘æ¶‰ç¤¾è®¾ç ·ç”³å‘»ä¼¸èº«æ·±å¨ ç»…ç¥žæ²ˆå®¡å©¶ç”šè‚¾æ…Žæ¸—å£°ç”Ÿç”¥ç‰²å�‡ç»³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çœ�盛剩胜圣师失狮施湿诗尸虱å��石拾时什食蚀实识å�²çŸ¢ä½¿å±Žé©¶å§‹å¼�示士世柿事æ‹èª“é€�势是嗜噬适仕ä¾�释饰æ°�市æ�ƒå®¤è§†è¯•收手首守寿授售å�—瘦兽蔬枢梳殊抒输å�”舒淑ç–�书赎å°ç†Ÿè–¯æš‘曙署蜀é»�é¼ å±žæœ¯è¿°æ ‘æ�Ÿæˆ�竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�•刷è€�æ‘”è¡°ç”©å¸…æ “æ‹´éœœå�Œçˆ½è°�æ°´ç�¡ç¨Žå�®çž¬é¡ºèˆœè¯´ç¡•朔çƒ�斯撕嘶æ€�ç§�å�¸ä¸�æ»è‚†å¯ºå—£å››ä¼ºä¼¼é¥²å·³æ�¾è€¸æ€‚颂é€�宋讼诵æ�œè‰˜æ“žå—½è‹�é…¥ä¿—ç´ é€Ÿç²Ÿåƒ³å¡‘æº¯å®¿è¯‰è‚ƒé…¸è’œç®—è™½éš‹éš�绥髓碎å²�ç©—é�‚éš§ç¥Ÿå™æ�Ÿç¬‹è“‘æ¢å”†ç¼©ç��ç´¢é”�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�挞蹋è¸�胎苔抬å�°æ³°é…žå¤ªæ€�æ±°å��摊贪瘫滩å�›æª€ç—°æ½è°è°ˆå�¦æ¯¯è¢’碳探å�¹ç‚汤塘æ�ªå ‚æ£ è†›å”�糖倘躺淌趟烫æŽ�涛滔绦è�„桃逃淘陶讨套特藤腾疼誊梯剔踢锑æ��题蹄啼体替åš�惕涕剃屉天添填田甜æ�¬èˆ”腆挑æ�¡è¿¢çœºè·³è´´é“�帖厅å�¬çƒƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷å�œäºåºæŒºè‰‡é€šæ¡�酮瞳å�Œé“œå½¤ç«¥æ¡¶æ�…ç’统痛å�·æŠ•头é€�凸秃çª�å›¾å¾’é€”æ¶‚å± åœŸå��å…”æ¹�团推颓腿蜕褪退å�žå±¯è‡€æ‹–托脱鸵陀驮驼æ¤å¦¥æ‹“唾挖哇蛙洼娃瓦袜æªå¤–豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄å¨��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å·�å¾®å�±éŸ¦è¿�桅围唯惟为æ½�维苇è�Žå§”伟伪尾纬未蔚味ç•�胃喂é�ä½�æ¸è°“尉慰å�«ç˜Ÿæ¸©èšŠæ–‡é—»çº¹å�»ç¨³ç´Šé—®å—¡ç¿�ç“®æŒ�蜗涡çª�我斡å�§æ�¡æ²ƒå·«å‘œé’¨ä¹Œæ±¡è¯¬å±‹æ— 芜梧å�¾å�´æ¯‹æ¦äº”æ�‚å�ˆèˆžä¼�ä¾®å�žæˆŠé›¾æ™¤ç‰©å‹¿åŠ¡æ‚Ÿè¯¯æ˜”ç†™æž�西硒矽晰嘻å�¸é”¡ç‰ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀æ�¯å¸Œæ‚‰è†�夕惜熄烯溪æ±�犀檄è¢å¸ä¹ 媳喜铣洗系隙æˆ�ç»†çžŽè™¾åŒ£éœžè¾–æš‡å³¡ä¾ ç‹ä¸‹åަå¤�å�“掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷é™�线相厢镶香箱襄湘乡翔祥详想å“�享项巷橡åƒ�å�‘象è�§ç¡�霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å°�å�æ ¡è‚–å•¸ç¬‘æ•ˆæ¥”äº›æ‡è�Žéž‹å��挟æ�ºé‚ªæ–œèƒ�è°�写械å�¸èŸ¹æ‡ˆæ³„泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸æ��性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须å¾�许蓄酗å�™æ—åº�畜æ�¤çµ®å©¿ç»ªç»è½©å–§å®£æ‚¬æ—‹çŽ„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚é�´è–›å¦ç©´é›ªè¡€å‹‹ç†�循旬询寻驯巡殉汛è®è®¯é€Šè¿…压押鸦é¸å‘€ä¸«èŠ½ç‰™èšœå´–è¡™æ¶¯é›…å“‘äºšè®¶ç„‰å’½é˜‰çƒŸæ·¹ç›�ä¸¥ç ”èœ’å²©å»¶è¨€é¢œé˜Žç‚Žæ²¿å¥„æŽ©çœ¼è¡�æ¼”è‰³å °ç‡•åŽŒç šé›�å”�彦焰宴谚验殃央鸯秧æ�¨æ‰¬ä½¯ç–¡ç¾Šæ´‹é˜³æ°§ä»°ç—’å…»æ ·æ¼¾é‚€è…°å¦–ç‘¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧é�¥çª‘谣姚咬舀è�¯è¦�耀椰噎耶爷野冶也页掖业å�¶æ›³è…‹å¤œæ¶²ä¸€å£¹åŒ»æ�–铱ä¾�伊衣é¢�夷é�—移仪胰疑沂宜姨å½�椅èš�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔æ„�毅忆义益溢诣议谊译异翼翌绎茵è�«å› 殷音阴姻å�Ÿé“¶æ·«å¯…饮尹引éš��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�°è‹±æ¨±å©´é¹°åº”缨莹è�¤è�¥è�§è�‡è¿Žèµ¢ç›ˆå½±é¢–ç¡¬æ˜ å“Ÿæ‹¥ä½£è‡ƒç—ˆåº¸é›�踊蛹å’�泳涌永æ�¿å‹‡ç”¨å¹½ä¼˜æ‚ 忧尤由邮铀犹油游酉有å�‹å�³ä½‘釉诱å�ˆå¹¼è¿‚淤于盂榆虞愚舆余俞逾鱼愉æ¸�渔隅予娱雨与屿禹宇è¯ç¾½çŽ‰åŸŸèŠ‹éƒ�å��é�‡å–»å³ªå¾¡æ„ˆæ¬²ç‹±è‚²èª‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫é©é¸³æ¸Šå†¤å…ƒåž£è¢�原æ�´è¾•å›å‘˜åœ†çŒ¿æº�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨å…�è¿�è•´é…�晕韵å•åŒ�ç ¸æ�‚æ ½å“‰ç�¾å®°è½½å†�在咱攒暂赞赃è„�葬é�糟凿藻枣早澡蚤èº�å™ªé€ çš‚ç�¶ç‡¥è´£æ‹©åˆ™æ³½è´¼æ€Žå¢žæ†Žæ›¾èµ 扎喳渣æœè½§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é“¡é—¸çœ¨æ …æ¦¨å’‹ä¹�炸诈摘斋宅窄债寨瞻毡詹粘沾ç›�æ–©è¾—å´å±•è˜¸æ ˆå� æˆ˜ç«™æ¹›ç»½æ¨Ÿç« å½°æ¼³å¼ æŽŒæ¶¨æ�–丈å¸�è´¦ä»—èƒ€ç˜´éšœæ‹›æ˜æ‰¾æ²¼èµµç…§ç½©å…†è‚‡å�¬é�®æŠ˜å“²è›°è¾™è€…锗蔗这浙ç��æ–ŸçœŸç”„ç §è‡»è´žé’ˆä¾¦æž•ç–¹è¯Šéœ‡æŒ¯é•‡é˜µè’¸æŒ£ç��å¾�ç‹°äº‰æ€”æ•´æ‹¯æ£æ”¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑è¯�èŠ�æž�支å�±èœ˜çŸ¥è‚¢è„‚æ±�之织è�Œç›´æ¤�殖执值侄å�€æŒ‡æ¢è¶¾å�ªæ—¨çº¸å¿—挚掷至致置帜峙制智秩稚质炙痔滞治窒ä¸ç›…å¿ é’Ÿè¡·ç»ˆç§�è‚¿é‡�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤ç� æ ªè››æœ±çŒªè¯¸è¯›é€�竹烛煮拄瞩嘱主著柱助蛀贮铸ç‘�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ä½�注ç¥�é©»æŠ“çˆªæ‹½ä¸“ç –è½¬æ’°èµšç¯†æ¡©åº„è£…å¦†æ’žå£®çŠ¶æ¤Žé”¥è¿½èµ˜å� 缀谆准æ�‰æ‹™å�“桌ç�¢èŒ�酌啄ç�€ç�¼æµŠå…¹å’¨èµ„姿滋淄åœç´«ä»”籽滓å�自æ¸�å—鬃棕踪宗综总纵邹走å¥�æ��ç§Ÿè¶³å�’æ—�祖诅阻组钻纂嘴醉最罪尊é�µæ˜¨å·¦ä½�柞å�šä½œå��座������\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������äº�丌兀ä¸�廿å�…丕亘丞鬲å¬å™©ä¸¨ç¦ºä¸¿åŒ•乇å¤çˆ»å�®æ°�囟胤馗毓ç�¾é¼—丶亟é¼�乜乩亓芈å›å•¬å˜�仄åŽ�åŽ�厣厥厮é�¥èµ�匚å�µåŒ¦åŒ®åŒ¾èµœå�¦å�£åˆ‚刈刎åˆåˆ³åˆ¿å‰€å‰Œå‰žå‰¡å‰œè’¯å‰½åŠ‚åŠ�åŠ�劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚ä½��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃ä¾�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩å�Œä¿³å€¬å€�倮å€ä¿¾å€œå€Œå€¥å€¨å�¾å�ƒå�•å�ˆå�Žå�¬å�»å‚¥å‚§å‚©å‚ºåƒ–儆åƒåƒ¬åƒ¦åƒ®å„‡å„‹ä»�æ°½ä½˜ä½¥ä¿Žé¾ æ±†ç±´å…®å·½é»‰é¦˜å†�夔勹åŒ�訇åŒ�å‡«å¤™å…•äº å…–äº³è¡®è¢¤äºµè„”è£’ç¦€å¬´è ƒç¾¸å†«å†±å†½å†¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‡‡å†–å†¢å†¥è® è®¦è®§è®ªè®´è®µè®·è¯‚è¯ƒè¯‹è¯�è¯Žè¯’è¯“è¯”è¯–è¯˜è¯™è¯œè¯Ÿè¯ è¯¤è¯¨è¯©è¯®è¯°è¯³è¯¶è¯¹è¯¼è¯¿è°€è°‚è°„è°‡è°Œè°�谑谒谔谕谖谙谛谘è°�è°Ÿè° è°¡è°¥è°§è°ªè°«è°®è°¯è°²è°³è°µè°¶å�©å�ºé˜�阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈éš�éš—éš°é‚—é‚›é‚�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰éƒ�郅邾éƒ�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆åˆ�奂劢劬åŠåŠ¾å“¿å‹�å‹–å‹°å�Ÿç‡®çŸ�廴凵凼鬯厶å¼�畚巯å�Œåž©åž¡å¡¾å¢¼å£…壑圩圬圪圳圹圮圯å�œåœ»å�‚å�©åž…å�«åž†å�¼å�»å�¨å�å�¶å�³åžåž¤åžŒåž²åŸ�åž§åž´åž“åž åŸ•åŸ˜åŸšåŸ™åŸ’åž¸åŸ´åŸ¯åŸ¸åŸ¤åŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ‹å �埽åŸå €å žå ™å¡„å 塥塬å¢�墉墚墀馨鼙懿艹艽艿èŠ�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌è‹�芩芴芡芪芟苄苎芤苡茉苷苤èŒ�èŒ‡è‹œè‹´è‹’è‹˜èŒŒè‹»è‹“èŒ‘èŒšèŒ†èŒ”èŒ•è‹ è‹•èŒœè�‘è�›è�œèŒˆèŽ’èŒ¼èŒ´èŒ±èŽ›è�žèŒ¯è��è�‡è�ƒè�Ÿè�€èŒ—è� èŒèŒºèŒ³è�¦è�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�¨èŒ›è�©è�¬è�ªè�è�®èްè�¸èŽ³èŽ´èŽ èŽªèŽ“èŽœèŽ…è�¼èŽ¶èŽ©è�½èޏè�»èŽ˜èŽžèŽ¨èŽºèŽ¼è��è��è�¥è�˜å ‡è�˜è�‹è��è�½è�–è�œè�¸è�‘è�†è�”è�Ÿè��è�ƒè�¸è�¹è�ªè�…è�€è�¦è�°è�¡è‘œè‘‘葚葙葳蒇蒈葺蒉葸è�¼è‘†è‘©è‘¶è’Œè’Žè�±è‘è“�è“�è“�è“¦è’½è““è“Šè’¿è’ºè“ è’¡è’¹è’´è’—è“¥è“£è”Œç”�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇è–�蕹薮薜薅薹薷薰藓è—�藜藿蘧蘅蘩蘖蘼廾弈夼å¥�耷奕奚奘åŒ�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹æ�‹æ�ƒæŽæ�¶æ�±æ�ºæŽŽæŽ´æ�掬掊æ�©æŽ®æŽ¼æ�²æ�¸æ� æ�¿æ�„æ�žæ�Žæ‘’æ�†æŽ¾æ‘…æ‘�æ�‹æ�›æ� æ�Œæ�¦æ�¡æ‘žæ’„æ‘æ’–�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀æ“�擗擤擢攉攥攮弋忒甙弑å�Ÿå�±å�½å�©å�¨å�»å�’å�–å�†å‘‹å‘’呓呔呖呃å�¡å‘—å‘™å�£å�²å’‚咔呷呱呤咚咛咄呶呦å’�å“�å’哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤å“�å“�å“žå”›å“§å” å“½å””å“³å”¢å”£å”�唑唧唪啧å–�喵啉å•å•�啕唿å•�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈å–�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦å—�嗄嗯嗥嗲嗳嗌å—�嗨嗵嗤辔嘞嘈嘌å˜�嘤嘣嗾嘀嘧å˜å™˜å˜¹å™—嘬å™�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗å›�囡囵囫囹囿圄圊圉圜å¸�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺å²�å²�岖岈岘岙岑岚岜岵岢岽岬岫岱岣å³�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯åµ�嵫嵋嵊嵩嵴嶂嶙å¶�豳嶷巅彳彷徂徇徉後徕徙徜徨å¾å¾µå¾¼è¡¢å½¡çŠçŠ°çŠ´çŠ·çŠ¸ç‹ƒç‹�狎ç‹�狒狨狯狩狲狴狷çŒ�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞çŒ�猕猢猹猥猬猸猱ç��ç��ç�—ç� ç�¬ç�¯ç�¾èˆ›å¤¥é£§å¤¤å¤‚饣饧饨饩饪饫饬饴饷饽馀馄馇馊é¦�é¦�é¦‘é¦“é¦”é¦•åº€åº‘åº‹åº–åº¥åº åº¹åºµåº¾åº³èµ“å»’å»‘å»›å»¨å»ªè†ºå¿„å¿‰å¿–å¿�怃忮怄忡忤忾怅怆忪å¿å¿¸æ€™æ€µæ€¦æ€›æ€�æ€�怩怫怊怿怡æ�¸æ�¹æ�»æ�ºæ�‚�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�ªæ�½æ‚–æ‚šæ‚æ‚�悃悒悌悛惬悻悱æƒ�æƒ˜æƒ†æƒšæ‚´æ„ æ„¦æ„•æ„£æƒ´æ„€æ„Žæ„«æ…Šæ…µæ†¬æ†”æ†§æ†·æ‡”æ‡µå¿�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌é˜�é˜�阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅æ²�沔沌汨汩汴汶沆沩æ³�æ³”æ²æ³·æ³¸æ³±æ³—æ²²æ³ æ³–æ³ºæ³«æ³®æ²±æ³“æ³¯æ³¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫æµ�洮洵洚æµ�æµ’æµ”æ´³æ¶‘æµ¯æ¶žæ¶ æµžæ¶“æ¶”æµœæµ æµ¼æµ£æ¸šæ·‡æ·…æ·žæ¸Žæ¶¿æ· æ¸‘æ·¦æ·�æ·™æ¸–æ¶«æ¸Œæ¶®æ¸«æ¹®æ¹Žæ¹«æº²æ¹Ÿæº†æ¹“æ¹”æ¸²æ¸¥æ¹„æ»Ÿæº±æº˜æ» æ¼æ»¢æº¥æº§æº½æº»æº·æ»—溴æ»�æº�滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉æ¾�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¿‰æ¾§æ¾¹æ¾¶æ¿‚æ¿¡æ¿®æ¿žæ¿ æ¿¯ç€šç€£ç€›ç€¹ç€µç��ç�žå®€å®„宕宓宥宸甯骞æ�´å¯¤å¯®è¤°å¯°è¹‡è¬‡è¾¶è¿“迕迥迮迤迩迦迳迨逅逄逋逦逑é€�逖逡逵逶é€é€¯é�„é�‘é�’é��é�¨é�˜é�¢é�›æš¹é�´é�½é‚‚邈邃邋å½�彗彖彘尻咫å±�å±™å±å±£å±¦ç¾¼å¼ªå¼©å¼è‰´å¼¼é¬»å±®å¦�妃å¦�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆å§�å¨ˆå§£å§˜å§¹å¨Œå¨‰å¨²å¨´å¨‘å¨£å¨“å©€å©§å©Šå©•å¨¼å©¢å©µèƒ¬åªªåª›å©·å©ºåª¾å««åª²å«’å«”åª¸å« å«£å«±å«–å«¦å«˜å«œå¬‰å¬—å¬–å¬²å¬·å€å°•å°œåšå¥å³å‘å“å¢é©µé©·é©¸é©ºé©¿é©½éª€éª�骅骈骊éª�骒骓骖骘骛骜éª�éªŸéª éª¢éª£éª¥éª§çºŸçº¡çº£çº¥çº¨çº©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çºçº°çº¾ç»€ç»�绂绉绋绌ç»�ç»”ç»—ç»›ç» ç»¡ç»¨ç»«ç»®ç»¯ç»±ç»²ç¼�绶绺绻绾ç¼�缂缃缇缈缋缌ç¼�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬ç¼ç¼¯ç¼°ç¼±ç¼²ç¼³ç¼µå¹ºç•¿å·›ç”¾é‚•玎玑玮玢玟ç��ç�‚ç�‘玷玳ç�€ç�‰ç�ˆç�¥ç�™é¡¼ç�Šç�©ç�§ç�žçŽºç�²ç��ç�ªç‘›ç�¦ç�¥ç�¨ç�°ç�®ç�¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�›ç�šç‘�瑜瑗瑕瑙瑷ç‘瑾璜璎璀ç’�璇璋璞璨璩ç’�璧瓒璺韪韫韬æ�Œæ�“æ�žæ�ˆæ�©æž¥æž‡æ�ªæ�³æž˜æž§æ�µæž¨æžžæžæž‹æ�·æ�¼æŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æžµæŸšæž³æŸ�æ €æŸƒæž¸æŸ¢æ ŽæŸ�æŸ½æ ²æ ³æ¡ æ¡¡æ¡Žæ¡¢æ¡„æ¡¤æ¢ƒæ �桕桦æ¡�æ¡§æ¡€æ ¾æ¡Šæ¡‰æ ©æ¢µæ¢�æ¡´æ¡·æ¢“æ¡«æ£‚æ¥®æ£¼æ¤Ÿæ¤ æ£¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋æ¤�楗棣æ¤�æ¥±æ¤¹æ¥ æ¥‚æ¥�æ¦„æ¥«æ¦€æ¦˜æ¥¸æ¤´æ§Œæ¦‡æ¦ˆæ§Žæ¦‰æ¥¦æ¥£æ¥¹æ¦›æ¦§æ¦»æ¦«æ¦æ§”榱æ§�æ§Šæ§Ÿæ¦•æ§ æ¦�æ§¿æ¨¯æ§æ¨—æ¨˜æ©¥æ§²æ©„æ¨¾æª æ©�橛樵檎橹樽樨橘橼檑æª�檩檗檫猷ç�’æ®�殂殇殄殒殓æ®�殚殛殡殪轫è½è½±è½²è½³è½µè½¶è½¸è½·è½¹è½ºè½¼è½¾è¾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è¾�辎è¾�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿ç”�甑甓攴旮旯旰昊昙æ�²æ˜ƒæ˜•昀炅曷æ˜�昴昱昶昵耆晟晔æ™�æ™�晖晡晗晷暄暌暧æš�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇èµ�赕赙觇觊觋觌觎è§�è§�觑牮犟ç‰�牦牯牾牿犄犋çŠ�çŠ�犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�¿æ“˜è€„毪毳毽毵毹氅氇氆æ°�氕氘氙氚氡氩氤氪氲攵敕敫ç‰�牒牖爰虢刖肟肜肓肼朊肽肱肫è‚肴肷胧胨胩胪胛胂胄胙èƒ�胗æœ�èƒ�胫胱胴èƒè„�è„Žèƒ²èƒ¼æœ•è„’è±šè„¶è„žè„¬è„˜è„²è…ˆè…Œè…“è…´è…™è…šè…±è… è…©è…¼è…½è…è…§å¡�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è‡�è†¦æ¬¤æ¬·æ¬¹æƒæ†æ™é£‘飒飓飕飙飚殳彀毂觳æ–�齑斓於旆旄旃旌旎旒旖炀炜炖ç‚�炻烀炷炫炱烨烊ç„�ç„“ç„–ç„¯ç„±ç…³ç…œç…¨ç……ç…²ç…Šç…¸ç…ºç†˜ç†³ç†µç†¨ç† ç‡ ç‡”ç‡§ç‡¹çˆ�爨ç�¬ç„˜ç…¦ç†¹æˆ¾æˆ½æ‰ƒæ‰ˆæ‰‰ç¤»ç¥€ç¥†ç¥‰ç¥›ç¥œç¥“ç¥šç¥¢ç¥—ç¥ ç¥¯ç¥§ç¥ºç¦…ç¦Šç¦šç¦§ç¦³å¿‘å¿��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼æ��æ�šæ�§æ��æ�™æ�£æ‚«æ„†æ„�æ…�憩æ†�懋懑戆肀è�¿æ²“æ³¶æ·¼çŸ¶çŸ¸ç €ç ‰ç —ç ˜ç ‘æ–«ç ç œç �ç ¹ç ºç »ç Ÿç ¼ç ¥ç ¬ç £ç ©ç¡Žç¡ç¡–ç¡—ç ¦ç¡�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄çœ�盹眇眈眚眢眙çœçœ¦çœµçœ¸ç��ç�‘ç�‡ç�ƒç�šç�¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�¢ç�¥ç�¿çž�ç�½çž€çžŒçž‘çžŸçž çž°çžµçž½ç”ºç•€ç•Žç•‹ç•ˆç•›ç•²ç•¹ç–ƒç½˜ç½¡ç½Ÿè©ˆç½¨ç½´ç½±ç½¹ç¾�ç½¾ç›�ç›¥è ²é’…é’†é’‡é’‹é’Šé’Œé’�é’�é’�钔钗钕钚钛钜钣钤钫钪é’钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌é“�铎é“�é“‘é“’é“•é“–é“—é“™é“˜é“›é“žé“Ÿé“ é“¢é“¤é“¥é“§é“¨é“ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊é”�锎é”�锒锓锔锕锖锘锛é”�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎é•�镒镓镔镖镗镘镙镛镞镟é•�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕ç§ç§£ç§«ç¨†åµ‡ç¨ƒç¨‚稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑é»�é¦¥ç©°çšˆçšŽçš“çš™çš¤ç“žç“ ç”¬é¸ é¸¢é¸¨é¸©é¸ªé¸«é¸¬é¸²é¸±é¸¶é¸¸é¸·é¸¹é¸ºé¸¾é¹�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱é¹é¹³ç–’ç–”ç––ç– ç–�疬疣疳疴疸痄疱疰痃痂痖ç—�痣痨痦痤痫痧瘃痱痼痿ç˜�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç˜›ç˜¼ç˜¢ç˜ ç™€ç˜ç˜°ç˜¿ç˜µç™ƒç˜¾ç˜³ç™�ç™žç™”ç™œç™–ç™«ç™¯ç¿Šç«¦ç©¸ç©¹çª€çª†çªˆçª•çª¦çª çª¬çª¨çªçª³è¡¤è¡©è¡²è¡½è¡¿è¢‚袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶è¥�è¥¦è¥»ç–‹èƒ¥çš²çš´çŸœè€’è€”è€–è€œè€ è€¢è€¥è€¦è€§è€©è€¨è€±è€‹è€µè�ƒè�†è��è�’è�©è�±è¦ƒé¡¸é¢€é¢ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌é¢�é¢�颔颚颛颞颟颡颢颥颦è™�虔虬虮虿虺虼虻蚨èš�蚋蚬èš�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉è›�蚴蛩蛱蛲è›è›³è›�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊èœ�蜉蜣蜻蜞蜥蜮蜚蜾è�ˆèœ´èœ±èœ©èœ·èœ¿èž‚蜢è�½è�¾è�»è� è�°è�Œè�®èž‹è�“è�£è�¼è�¤è�™è�¥èž“螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅èžèž—èžƒèž«èŸ¥èž¬èžµèž³èŸ‹èŸ“èž½èŸ‘èŸ€èŸŠèŸ›èŸªèŸ èŸ®è –è “èŸ¾è Šè ›è ¡è ¹è ¼ç¼¶ç½‚ç½„ç½…èˆ�竺竽笈笃笄笕笊笫ç¬�ç‡ç¬¸ç¬ªç¬™ç¬®ç¬±ç¬ 笥笤笳笾笞ç˜çšç…çµçŒç�ç ç®ç»ç¢ç²ç±ç®�箦箧箸箬ç®�箨箅箪箜箢箫箴篑ç¯�篌ç¯�篚篥篦篪簌篾篼ç°�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸ç±�籀臾èˆ�舂舄臬衄舡舢舣èˆèˆ¯èˆ¨èˆ«èˆ¸èˆ»èˆ³èˆ´èˆ¾è‰„艉艋è‰�艚艟艨衾袅袈裘裟襞ç¾�羟羧羯羰羲籼敉粑ç²�粜粞粢粲粼粽ç³�糇糌ç³�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧èµè±‡è±‰é…Šé…�é…Žé…�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅é†�é†�醑醢醣醪é†é†®é†¯é†µé†´é†ºè±•鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎è·�跛跆跬跷跸跣跹跻跤踉跽踔è¸�踟踬踮踣踯踺蹀踹踵踽踱蹉è¹�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅èº�躔èº�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦é�“雩雳雯霆éœ�霈éœ�霎霪éœéœ°éœ¾é¾€é¾ƒé¾…龆龇龈龉龊龌黾鼋é¼�éš¹éš¼éš½é›Žé›’çž¿é› éŠŽéŠ®é‹ˆéŒ¾é�ªé�ŠéŽ�é�¾é‘«é±¿é²‚鲅鲆鲇鲈稣鲋鲎é²�é²‘é²’é²”é²•é²šé²›é²žé²Ÿé² é²¡é²¢é²£é²¥é²¦é²§é²¨é²©é²«é²é²®é²°é²±é²²é²³é²´é²µé²¶é²·é²ºé²»é²¼é²½é³„鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌é³�鳎é³�é³�鳓鳔鳕鳗鳘鳙鳜é³�鳟鳢é�¼éž…鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼é«�髀髅髂髋髌髑é…éƒé‡é‰éˆé�é‘飨é¤�餮饕饔髟髡髦髯髫髻é«é«¹é¬ˆé¬�鬓鬟鬣麽麾縻麂麇麈麋麒é�–éº�麟黛黜é»�é» é»Ÿé»¢é»©é»§é»¥é»ªé»¯é¼¢é¼¬é¼¯é¼¹é¼·é¼½é¼¾é½„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20949] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。·‥…¨〃Â―∥\∼‘’“â€�〔〕〈〉《》「ã€�『ã€�ã€�ã€‘Â±Ã—Ã·â‰ â‰¤â‰¥âˆžâˆ´Â°â€²â€³â„ƒâ„«ï¿ ï¿¡ï¿¥â™‚â™€âˆ âŠ¥âŒ’âˆ‚âˆ‡â‰¡â‰’Â§â€»â˜†â˜…â—‹â—�◎◇◆□■△▲▽▼→â†�↑↓↔〓≪≫√∽âˆ�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘Ë�˚˙¸˛¡¿Ë�∮∑âˆ�¤℉‰â—�◀▷▶♤♠♡♥♧♣⊙◈▣â—�◑▒▤▥▨▧▦▩♨â˜�☎☜☞¶†‡↕↗↙↖↘â™â™©â™ªâ™¬ã‰¿ãˆœâ„–ã�‡â„¢ã�‚ã�˜â„¡â‚¬Â®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#$%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¿¦ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀã…�ㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌã…�ã…Žã…�ã…�ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜã…�ã…žã…Ÿã… ã…¡ã…¢ã…£ã…¤ã…¥ã…¦ã…§ã…¨ã…©ã…ªã…«ã…¬ã…ㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀã†�ㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌã†�ㆎ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ï¿½ï¿½ï¿½ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂┒┑┚┙┖┕┎â”�┞┟┡┢┦┧┩┪â”┮┱┲┵┶┹┺┽┾╀â•�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘ã�„㎣㎤㎥㎦㎙㎚㎛㎜ãŽ�㎞㎟㎠㎡㎢ã�ŠãŽ�㎎ãŽ�ã��㎈㎉ã�ˆãŽ§ãŽ¨ãŽ°ãŽ±ãŽ²ãŽ³ãŽ´ãŽµãŽ¶ãŽ·ãŽ¸ãŽ¹ãŽ€ãŽ�㎂㎃㎄㎺㎻㎼㎽㎾㎿ãŽ�㎑㎒㎓㎔Ωã�€ã��㎊㎋㎌ã�–ã�…ãŽãŽ®ãŽ¯ã�›ãŽ©ãŽªãŽ«ãŽ¬ã��ã��ã�“ã�ƒã�‰ã�œã�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆÃ�ªĦ�IJ�ĿÅ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬ã‰ã‰®ã‰¯ã‰°ã‰±ã‰²ã‰³ã‰´ã‰µã‰¶ã‰·ã‰¸ã‰¹ã‰ºã‰»â“�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜâ“�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬â‘⑮½⅓⅔¼¾⅛⅜â…�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀ãˆ�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌ãˆ�㈎ãˆ�ãˆ�㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜â’�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬â’⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂¹²³â�´â�¿â‚�₂₃₄�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������가ê°�간갇갈갉갊ê°�갑값갓갔강갖갗같갚갛개ê°�ê° ê°¤ê°¬ê°ê°¯ê°°ê°±ê°¸ê°¹ê°¼ê±€ê±‹ê±�걔걘걜거걱건걷걸걺검ê²�것겄겅겆겉겊겋게ê²�겔겜ê²�ê²Ÿê² ê²¡ê²¨ê²©ê²ªê²¬ê²¯ê²°ê²¸ê²¹ê²»ê²¼ê²½ê³�ê³„ê³ˆê³Œê³•ê³—ê³ ê³¡ê³¤ê³§ê³¨ê³ªê³¬ê³¯ê³°ê³±ê³³ê³µê³¶ê³¼ê³½ê´€ê´„ê´†ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌ê´�ê´�ê´‘ê´˜ê´œê´ ê´©ê´¬ê´ê´´ê´µê´¸ê´¼êµ„굅굇굉êµ�굔굘굡굣구êµêµ°êµ³êµ´êµµêµ¶êµ»êµ¼êµ½êµ¿ê¶�궂궈궉권ê¶�ê¶œê¶�궤궷귀ê·�ê·„ê·ˆê·�ê·‘ê·“ê·œê· ê·¤ê·¸ê·¹ê·¼ê·¿ê¸€ê¸�금급긋ê¸�긔기긱긴긷길긺김ê¹�깃깅깆깊까ê¹�깎ê¹�깔깖깜ê¹�ê¹Ÿê¹ ê¹¡ê¹¥ê¹¨ê¹©ê¹¬ê¹°ê¹¸ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌ê»�ê»�ê»�껑께껙껜껨껫ê»ê»´ê»¸ê»¼ê¼‡ê¼ˆê¼�ê¼�꼬ê¼ê¼°ê¼²ê¼´ê¼¼ê¼½ê¼¿ê½�꽂꽃꽈꽉ê½�꽜ê½�꽤꽥꽹꾀꾄꾈ê¾�꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋ê¿�꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀ë€�뀄뀌ë€�뀔뀜ë€�뀨ë�„ë�…ë�ˆë�Šë�Œë�Žë�“ë�”ë�•ë�—ë�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë��ë�¼ë�½ë‚€ë‚„낌ë‚�ë‚�ë‚‘ë‚˜ë‚™ë‚šë‚œë‚Ÿë‚ ë‚¡ë‚¢ë‚¨ë‚©ë‚«ë‚¬ë‚낮낯낱낳내낵낸낼냄냅냇냈냉ëƒ�ëƒ‘ëƒ”ëƒ˜ëƒ ëƒ¥ë„ˆë„‰ë„‹ë„Œë„�넒넓넘넙넛넜ë„�넣네넥넨넬넴넵넷넸넹녀ë…�ë…„ë…ˆë…�ë…‘ë…”ë…•ë…˜ë…œë… ë…¸ë…¹ë…¼ë†€ë†‚ë†ˆë†‰ë†‹ë†�높놓놔놘놜놨뇌ë‡�뇔뇜ë‡��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë‡Ÿë‡¨ë‡©ë‡¬ë‡°ë‡¹ë‡»ë‡½ëˆ„ëˆ…ëˆˆëˆ‹ëˆŒëˆ”ëˆ•ëˆ—ëˆ™ëˆ ëˆ´ëˆ¼ë‰˜ë‰œë‰ ë‰¨ë‰©ë‰´ë‰µë‰¼ëŠ„ëŠ…ëŠ‰ëŠ�ëŠ‘ëŠ”ëŠ˜ëŠ™ëŠšëŠ ëŠ¡ëŠ£ëŠ¥ëŠ¦ëŠªëŠ¬ëŠ°ëŠ´ë‹ˆë‹‰ë‹Œë‹�닖님닙닛ë‹�닢다닥닦단닫달ë‹ë‹®ë‹¯ë‹³ë‹´ë‹µë‹·ë‹¸ë‹¹ë‹ºë‹»ë‹¿ëŒ€ëŒ�댄댈ëŒ�댑댓댔댕댜ë�”ë�•ë�–ë�˜ë�›ë�œë�žë�Ÿë�¤ë�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë�§ë�©ë�«ë�®ë�°ë�±ë�´ë�¸ëŽ€ëŽ�뎃뎄뎅뎌ëŽ�ëŽ”ëŽ ëŽ¡ëŽ¨ëŽ¬ë�„ë�…ë�ˆë�‹ë�Œë�Žë��ë�”ë�•ë�—ë�™ë�›ë��ë� ë�¤ë�¨ë�¼ë��ë�˜ë�œë� ë�¨ë�©ë�«ë�´ë‘�ë‘‘ë‘”ë‘˜ë‘ ë‘¡ë‘£ë‘¥ë‘¬ë’€ë’ˆë’�뒤뒨뒬뒵뒷뒹듀듄듈ë“�듕드ë“�ë“ ë“£ë“¤ë“¦ë“¬ë“듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀ë•�땃땄땅땋때ë•�ë•�땔땜ë•�ë•Ÿë• ë•¡ë– ë–¡ë–¤ë–¨ë–ªë–«ë–°ë–±ë–³ë–´ë–µë–»ë–¼ë–½ë—€ë—„ë—Œë—�ë—�ë—�뗑뗘뗬ë˜�똑똔똘똥똬똴뙈뙤뙨뚜ëš�ëš ëš¤ëš«ëš¬ëš±ë›”ë›°ë›´ë›¸ëœ€ëœ�뜅뜨뜩뜬뜯뜰뜸뜹뜻ë�„ë�ˆë�Œë�”ë�•ë� ë�¤ë�¨ë�°ë�±ë�³ë�µë�¼ë�½ëž€ëž„람ëž�ëž�ëž�랑랒랖랗�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ëž˜ëž™ëžœëž ëž¨ëž©ëž«ëž¬ëžëž´ëžµëž¸ëŸ‡ëŸ‰ëŸ¬ëŸëŸ°ëŸ´ëŸ¼ëŸ½ëŸ¿ë €ë �ë ‡ë ˆë ‰ë Œë �ë ˜ë ™ë ›ë �ë ¤ë ¥ë ¨ë ¬ë ´ë µë ·ë ¸ë ¹ë¡€ë¡„ë¡‘ë¡“ë¡œë¡�ë¡ ë¡¤ë¡¬ë¡ë¡¯ë¡±ë¡¸ë¡¼ë¢�뢨뢰뢴뢸룀ë£�룃룅료ë£�룔ë£�ë£Ÿë£¡ë£¨ë£©ë£¬ë£°ë£¸ë£¹ë£»ë£½ë¤„ë¤˜ë¤ ë¤¼ë¤½ë¥€ë¥„ë¥Œë¥�ë¥‘ë¥˜ë¥™ë¥œë¥ ë¥¨ë¥©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫ë¥ë¥´ë¥µë¥¸ë¥¼ë¦„릅릇릉릊ë¦�릎리ë¦ë¦°ë¦´ë¦¼ë¦½ë¦¿ë§�마막만많ë§�ë§�맑맒맘맙맛ë§�맞맡맣매맥맨맬맴맵맷맸맹맺먀ë¨�먈먕머먹먼멀멂멈멉멋ë©�멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄ë¬�ë¬�ë¬‘ë¬˜ë¬œë¬ ë¬©ë¬«ë¬´ë¬µë¬¶ë¬¸ë¬»ë¬¼ë¬½ë¬¾ë„ë…ë‡ë‰ë�ë�ë�ë”ë˜ë¡ë£ë¬ë®ˆë®Œë®�뮤뮨뮬뮴뮷므믄믈ë¯�믓미믹민믿밀밂밈밉밋밌ë°�ë°�밑바박밖밗반받발ë°�밞밟밤밥밧방ë°ë°°ë°±ë°´ë°¸ë±€ë±�뱃뱄뱅뱉뱌ë±�ë±�ë±�버벅번벋벌벎범법벗�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë²™ë²šë² ë²¡ë²¤ë²§ë²¨ë²°ë²±ë²³ë²´ë²µë²¼ë²½ë³€ë³„ë³�ë³�ë³�병볕볘볜보복볶본볼봄봅봇봉ë´�봔봤봬뵀뵈뵉뵌ëµ�뵘뵙뵤뵨부ë¶�분붇불붉붊ë¶�붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브ë¸�ë¸�블븜ë¸�ë¸Ÿë¹„ë¹…ë¹ˆë¹Œë¹Žë¹”ë¹•ë¹—ë¹™ë¹šë¹›ë¹ ë¹¡ë¹¤ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌ëº�ëº�ëº�뺑뺘뺙뺨ë»�ë»‘ë»”ë»—ë»˜ë» ë»£ë»¤ë»¥ë»¬ë¼�뼈뼉뼘뼙뼛뼜ë¼�ë½€ë½�뽄뽈ë½�뽑뽕뾔뾰뿅뿌ë¿�ë¿�뿔뿜뿟뿡쀼ì�‘ì�˜ì�œì� ì�¨ì�©ì‚�ì‚‘ì‚”ì‚˜ì‚ ì‚¡ì‚£ì‚¥ì‚¬ì‚삯산삳살삵삶삼삽삿샀ìƒ�샅새색샌ìƒ�샘샙샛샜ìƒ�샤�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈ì„�섕서ì„�ì„žì„Ÿì„ ì„£ì„¤ì„¦ì„§ì„¬ì„섯섰성섶세섹센셀셈셉셋셌ì…�셔셕션셜셤셥셧셨셩셰셴셸솅소ì†�솎ì†�솔솖솜ì†�ì†Ÿì†¡ì†¥ì†¨ì†©ì†¬ì†°ì†½ì‡„ì‡ˆì‡Œì‡”ì‡—ì‡˜ì‡ ì‡¤ì‡¨ì‡°ì‡±ì‡³ì‡¼ì‡½ìˆ€ìˆ„ìˆŒìˆ�ìˆ�ìˆ‘ìˆ˜ìˆ™ìˆœìˆŸìˆ ìˆ¨ìˆ©ìˆ«ìˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈ì‰�ì‰‘ì‰”ì‰˜ì‰ ì‰¥ì‰¬ì‰ì‰°ì‰´ì‰¼ì‰½ì‰¿ìŠ�슈슉ìŠ�슘슛ìŠ�스슥슨슬ìŠìŠ´ìŠµìŠ·ìŠ¹ì‹œì‹�ì‹ ì‹£ì‹¤ì‹«ì‹¬ì‹ì‹¯ì‹±ì‹¶ì‹¸ì‹¹ì‹»ì‹¼ìŒ€ìŒˆìŒ‰ìŒŒìŒ�쌓쌔쌕쌘쌜쌤쌥쌨쌩ì�…ì�¨ì�©ì�¬ì�°ì�²ì�¸ì�¹ì�¼ì�½ìŽ„ìŽˆìŽŒì�€ì�˜ì�™ì�œì�Ÿì� ì�¢ì�¨ì�©ì�ì�´ì�µì�¸ì�ˆì��ì�¤ì�¬ì�°ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì�´ì�¼ì�½ì‘ˆì‘¤ì‘¥ì‘¨ì‘¬ì‘´ì‘µì‘¹ì’€ì’”쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀ì”�씌ì”�씔씜씨씩씬씰씸씹씻씽아악안앉않알ì•�앎앓암압앗았앙ì•�ì•žì• ì•¡ì•¤ì•¨ì•°ì•±ì•³ì•´ì•µì•¼ì•½ì–€ì–„ì–‡ì–Œì–�ì–�ì–‘ì–•ì–—ì–˜ì–œì– ì–©ì–´ì–µì–¸ì–¹ì–»ì–¼ì–½ì–¾ì—„ì—…ì—†ì—‡ì—ˆì—‰ì—Šì—Œì—Žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì—�ì—‘ì—”ì—˜ì— ì—¡ì—£ì—¥ì—¬ì—엮연열엶엷염엽엾엿였ì˜�옅옆옇예옌ì˜�옘옙옛옜오옥온올ì˜ì˜®ì˜°ì˜³ì˜´ì˜µì˜·ì˜¹ì˜»ì™€ì™�완왈ì™�왑왓왔왕왜ì™�ì™ ì™¬ì™¯ì™±ì™¸ì™¹ì™¼ìš€ìšˆìš‰ìš‹ìš�요욕욘욜욤욥욧용우욱운울욹욺움ì›�웃웅워ì›�ì›�월웜ì›�ì› ì›¡ì›¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì›©ì›¬ì›°ì›¸ì›¹ì›½ìœ„ìœ…ìœˆìœŒìœ”ìœ•ìœ—ìœ™ìœ ìœ¡ìœ¤ìœ¨ìœ°ìœ±ìœ³ìœµìœ·ìœ¼ìœ½ì�€ì�„ì�Šì�Œì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�œì� ì�¨ì�«ì�´ì�µì�¸ì�¼ì�½ì�¾ìžƒìž„입잇있잉잊잎ìž�ìž‘ìž”ìž–ìž—ìž˜ìžšìž ìž¡ìž£ìž¤ìž¥ìž¦ìž¬ìžìž°ìž´ìž¼ìž½ìž¿ìŸ€ìŸ�쟈쟉쟌쟎ìŸ�쟘ìŸ�ìŸ¤ìŸ¨ìŸ¬ì €ì �ì „ì ˆì Šï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì �ì ‘ì “ì •ì –ì œì �ì ì ¤ì ¬ì ì ¯ì ±ì ¸ì ¼ì¡€ì¡ˆì¡‰ì¡Œì¡�졔조족존졸졺좀ì¢�좃종좆좇좋좌ì¢�좔ì¢�ì¢Ÿì¢¡ì¢¨ì¢¼ì¢½ì£„ì£ˆì£Œì£”ì£•ì£—ì£™ì£ ì£¡ì£¤ì£µì£¼ì£½ì¤€ì¤„ì¤…ì¤†ì¤Œì¤�ì¤�중줘줬줴ì¥�ì¥‘ì¥”ì¥˜ì¥ ì¥¡ì¥£ì¥¬ì¥°ì¥´ì¥¼ì¦ˆì¦‰ì¦Œì¦�즘즙즛ì¦�ì§€ì§�진짇질짊ì§�집짓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜ì§�ì§ ì§¢ì§¤ì§§ì§¬ì§ì§¯ì§°ì§±ì§¸ì§¹ì§¼ì¨€ì¨ˆì¨‰ì¨‹ì¨Œì¨�쨔쨘쨩쩌ì©�ì©�쩔쩜ì©�ì©Ÿì© ì©¡ì©¨ì©½ìª„ìª˜ìª¼ìª½ì«€ì«„ì«Œì«�ì«�ì«‘ì«“ì«˜ì«™ì« ì«¬ì«´ì¬ˆì¬�ì¬”ì¬˜ì¬ ì¬¡ì�ìˆì‰ìŒì�ì˜ì™ì�ì¤ì¸ì¹ì®œì®¸ì¯”쯤쯧쯩찌ì°�ì°�찔찜ì°�찡찢찧차착찬찮찰참찹찻�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì°¼ì°½ì°¾ì±„ì±…ì±ˆì±Œì±”ì±•ì±—ì±˜ì±™ì± ì±¤ì±¦ì±¨ì±°ì±µì²˜ì²™ì²œì² ì²¨ì²©ì²«ì²¬ì²ì²´ì²µì²¸ì²¼ì³„쳅쳇쳉ì³�쳔쳤쳬쳰ì´�초촉촌ì´�촘촙촛ì´�ì´¤ì´¨ì´¬ì´¹ìµœìµ ìµ¤ìµ¬ìµìµ¯ìµ±ìµ¸ì¶ˆì¶”축춘출춤춥춧충춰췄췌ì·�ì·¨ì·¬ì·°ì·¸ì·¹ì·»ì·½ì¸„ì¸ˆì¸Œì¸”ì¸™ì¸ ì¸¡ì¸¤ì¸¨ì¸°ì¸±ì¸³ì¸µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¹˜ì¹™ì¹œì¹Ÿì¹ ì¹¡ì¹¨ì¹©ì¹«ì¹ì¹´ì¹µì¹¸ì¹¼ìº„캅캇캉ìº�ìº‘ìº”ìº˜ìº ìº¡ìº£ìº¤ìº¥ìº¬ìºì»�커컥컨컫컬컴컵컷컸컹케ì¼�켄켈ì¼�ì¼‘ì¼“ì¼•ì¼œì¼ ì¼¤ì¼¬ì¼ì¼¯ì¼°ì¼±ì¼¸ì½”ì½•ì½˜ì½œì½¤ì½¥ì½§ì½©ì½°ì½±ì½´ì½¸ì¾€ì¾…ì¾Œì¾¡ì¾¨ì¾°ì¿„ì¿ ì¿¡ì¿¤ì¿¨ì¿°ì¿±ì¿³ì¿µì¿¼í€€í€„í€‘í€˜í€í€´í€µí€¸í€¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�„í�…í�‡í�‰í��í�”í�˜í� í�¬í�í�°í�´í�¼í�½í‚�키킥킨킬킴킵킷킹타íƒ�탄탈탉íƒ�탑탓탔탕태íƒ�íƒ íƒ¤íƒ¬íƒíƒ¯íƒ°íƒ±íƒ¸í„�터턱턴털턺텀í…�텃텄텅테í…�í…�텔템í…�í…Ÿí…¡í…¨í…¬í…¼í†„í†ˆí† í†¡í†¤í†¨í†°í†±í†³í†µí†ºí†¼í‡€í‡˜í‡´í‡¸íˆ‡íˆ‰íˆ�투íˆíˆ°íˆ´íˆ¼íˆ½íˆ¿í‰�퉈퉜�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀íŠ�튄튈íŠ�íŠ‘íŠ•íŠœíŠ íŠ¤íŠ¬íŠ±íŠ¸íŠ¹íŠ¼íŠ¿í‹€í‹‚í‹ˆí‹‰í‹‹í‹”í‹˜í‹œí‹¤í‹¥í‹°í‹±í‹´í‹¸íŒ€íŒ�팃팅파íŒ�팎íŒ�팔팖팜íŒ�íŒŸíŒ íŒ¡íŒ¥íŒ¨íŒ©íŒ¬íŒ°íŒ¸íŒ¹íŒ»íŒ¼íŒ½í�„í�…í�¼í�½íŽ€íŽ„íŽŒíŽ�íŽ�íŽ�íŽ‘íŽ˜íŽ™íŽœíŽ íŽ¨íŽ©íŽ«íŽíŽ´íŽ¸íŽ¼í�„í�…í�ˆí�‰í��í�˜í�¡í�£í�¬í�í�°í�´í�¼í�½í�¿í���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�ˆí��í‘€í‘„í‘œí‘ í‘¤í‘푯푸푹푼푿풀풂품풉풋í’�풔풩퓌í“�퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌í•�í•�í•‘í•˜í•™í•œí• í•¥í•¨í•©í•«í•해핵핸핼햄햅햇했행í–�향허헉헌í—�헒험헙헛í—�헤헥헨헬헴헵헷헹혀í˜�현혈í˜�í˜‘í˜“í˜”í˜•í˜œí˜ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤í˜í˜¸í˜¹í˜¼í™€í™…홈홉홋í™�홑화확환활홧황홰홱홴횃횅회íš�íš�íš”íš�íšŸíš¡íš¨íš¬íš°íš¹íš»í›„í›…í›ˆí›Œí›‘í›”í›—í›™í› í›¤í›¨í›°í›µí›¼í›½íœ€íœ„íœ‘íœ˜íœ™íœœíœ íœ¨íœ©íœ«íœíœ´íœµíœ¸íœ¼í�„í�‡í�‰í��í�‘í�”í�–í�—í�˜í�™í� í�¡í�£í�¥í�©í�¬í�°í�´í�¼í�½íž�히힉힌íž�힘힙힛íž��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳å�‡åƒ¹åŠ å�¯å‘µå“¥å˜‰å«�家暇架枷柯æŒç�‚痂稼苛茄街袈訶賈è·�軻迦駕刻å�´å�„æ�ªæ…¤æ®¼ç��脚覺角閣侃刊墾奸姦干幹懇æ�€æ�†æŸ¬æ¡¿æ¾—癎看磵稈竿簡è‚�艮艱諫間乫å–�曷渴碣ç«è‘›è¤�è�Žéž¨å‹˜å�Žå ªåµŒæ„Ÿæ†¾æˆ¡æ•¢æŸ‘橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åŒ£å²¬ç”²èƒ›é‰€é–˜å‰›å ˆå§œå²¡å´—åº·å¼ºå½Šæ…·æ±Ÿç•ºç–†ç³ çµ³ç¶±ç¾Œè…”èˆ¡è–‘è¥�講鋼é™�鱇介价個凱å¡�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客å�‘ï¤�粳羹醵倨去居巨拒æ�®æ“šæ“§æ¸ ç‚¬ç¥›è·�踞車é�½é‰…鋸乾件å�¥å·¾å»ºæ„†æ¥—腱虔蹇é�µé¨«ä¹žå‚‘æ�°æ¡€å„‰åŠ�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼éˆ�黔劫怯迲å�ˆæ†©æ�æ“Šæ ¼æª„æ¿€è†ˆè¦¡éš”å …ç‰½çŠ¬ç”„çµ¹ç¹è‚©è¦‹è´é�£éµ‘抉決潔çµ�缺訣兼慊ç®�謙鉗鎌京俓倞傾儆å‹�å‹�å�¿å�°å¢ƒåºšå¾‘慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖è¦è¼•逕é�¡é ƒé ¸é©šé¯¨ä¿‚å•“å ºå¥‘å£å±†æ‚¸æˆ’桂械�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄å�¤å�©å‘Šå‘±å›ºå§‘å¤å°»åº«æ‹·æ”·æ•…æ•²æš æž¯æ§�沽痼çš�ç�¾ç¨¿ç¾”考股è†�苦苽è�°è—�è ±è¢´èª¥ï¤ƒè¾œéŒ®é›‡é¡§é«˜é¼“å“æ–›æ›²æ¢�ç©€è°·éµ å›°å�¤å´‘昆梱æ£�滾ç�¨è¢žé¯¤æ±¨ï¤„骨供公共功å”å·¥æ��æ�拱控攻ç�™ç©ºèš£è²¢éž�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科è�“誇課跨é�Žé�‹é¡†å»“槨藿éƒï¤…å† å®˜å¯¬æ…£æ£ºæ¬¾ç�Œç�¯ç“˜ç®¡ç½�è�…觀貫關館刮æ��æ‹¬é€‚ä¾Šå…‰åŒ¡å£™å»£æ› æ´¸ç‚šç‹‚ç�–ç�胱鑛å�¦æŽ›ç½«ä¹–傀塊壞怪愧æ‹�æ§�é�å®�ç´˜è‚±è½Ÿäº¤åƒ‘å’¬å–¬å¬Œå¶ å·§æ”ªæ•Žæ ¡æ©‹ç‹¡çšŽçŸ¯çµžç¿¹è† è•Žè›Ÿè¼ƒè½ŽéƒŠé¤ƒé©•é®«ä¸˜ä¹…ä¹�仇俱具勾�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�€å�£å�¥å’Žå˜”å�µåž¢å¯‡å¶‡å»�懼拘救枸柩構æ�毆毬求æº�ç�¸ç‹—玖ç�ƒçž¿çŸ©ç©¶çµ¿è€‰è‡¼èˆ…舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局è�Šéž 鞫麴å�›çª˜ç¾¤è£™è»�éƒ¡å €å±ˆæŽ˜çªŸå®®å¼“ç©¹çª®èŠŽèº¬å€¦åˆ¸å‹¸å�·åœˆæ‹³æ�²æ¬Šæ·ƒçœ·åŽ¥ç�—蕨蹶闕机櫃潰è©è»Œé¥‹ï¤†æ™·æ¸è²´ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜å�«åœå¥Žæ�†æ§»ç�ªç¡…窺竅糾葵è¦�赳逵閨勻å�‡ç•‡ç è�Œéˆžï¤ˆæ©˜å…‹å‰‹åŠ‡æˆŸæ£˜æ¥µéš™åƒ…åŠ¤å‹¤æ‡ƒæ–¤æ ¹æ§¿ç‘¾ç‹èйè�«è¦²è¬¹è¿‘饉契今妗擒昑檎ç�´ç¦�禽芩衾衿襟金錦伋å�Šæ€¥æ‰±æ±²ç´šçµ¦äº˜å…¢çŸœè‚¯ä¼�伎其冀嗜器圻基埼夔奇妓寄å²�崎己幾忌技旗旣�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期æ�žæ£‹æ£„機欺氣汽沂淇玘ç�¦ç�ªç’‚璣畸畿ç¢�磯ç¥�祇祈祺箕紀綺羈耆è€è‚Œè¨˜è�豈起錡錤飢饑騎é¨�驥麒緊佶å�‰æ‹®æ¡”金喫儺喇奈娜懦ï¤�æ‹�拿癩ï¤�ï¤�螺裸邏那樂洛烙珞落諾酪駱亂卵暖ï¤�ç…–ï¤žï¤Ÿé›£ï¤ æ��æ�ºå�—嵐æž�æ¥ æ¹³ï¤¢ç”·ï¤£ï¤¤ï¤¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç´�臘蠟衲囊娘廊朗浪狼郎乃ï¤å…§å¥ˆæŸ°è€�冷女年撚秊念æ�¬æ‹ˆæ�»å¯§å¯—努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿ï¥�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓ï¥�漏ï¥�ï¥�陋嫩訥æ�»ç´�勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段æ¹�çŸç«¯ç°žç·žè›‹è¢’鄲é�›æ’»æ¾¾ç�ºç–¸é�”å•–å��æ†ºæ“”æ›‡æ·¡æ¹›æ½æ¾¹ç—°è�ƒè†½è•�覃談èšéŒŸæ²“ç•“ç”è¸�é��å”�å ‚å¡˜å¹¢æˆ‡æ’žæ£ ç•¶ç³–èž³é»¨ä»£åžˆå�®å¤§å°�å²±å¸¶å¾…æˆ´æ“¡çŽ³è‡ºè¢‹è²¸éšŠé»›å®…å¾·æ‚³å€’åˆ€åˆ°åœ–å µå¡—å°Žå± å³¶å¶‹åº¦å¾’æ‚¼æŒ‘æŽ‰æ�—桃�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜ç�¹ç¦±ç¨»è�„覩è³è·³è¹ˆé€ƒé€”é�“都é��陶韜毒瀆牘犢ç�¨ç�£ç¦¿ç¯¤çº›è®€å¢©æƒ‡æ•¦æ—½æš¾æ²Œç„žç‡‰è±šé “ä¹çª�ä»�冬å‡�å‹•å�Œæ†§æ�±æ¡�棟洞潼疼瞳童胴董銅兜斗æ�œæž“痘竇è�³ï¥šè±†é€—é 屯臀芚é��é�¯éˆ�å¾—å¶�橙燈登ç‰è—¤è¬„鄧騰喇懶拏癩羅�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸é‚�樂洛烙ç�žçµ¡è�½ï¥�酪駱丹亂å�µæ¬„欒瀾爛è˜é¸žå‰Œè¾£åµ�擥攬欖濫籃纜è—�è¥¤è¦½æ‹‰è‡˜è Ÿå»Šæœ—æµªç‹¼ç�…瑯螂郞來å´�å¾ è�Šå†·æŽ 略亮倆兩凉æ¢�樑粮粱糧良諒輛é‡�ä¾¶å„·å‹µå‘‚å»¬æ…®æˆ¾æ—…æ«šæ¿¾ç¤ªè—œè £é–驢驪麗黎力曆æ·ç€�礫轢é�‚æ†�戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練è�¯è“®è¼¦é€£é�Šå†½åˆ—劣洌烈裂廉斂殮濂簾ç�µä»¤ä¼¶å›¹ï¥Ÿå²ºå¶ºæ€œç޲ç¬ç¾šç¿Žè�†é€žéˆ´é›¶é�ˆé ˜é½¡ä¾‹æ¾§ç¦®é†´éš·å‹žï¥ 撈擄櫓潞瀘çˆ�ç›§è€�蘆虜路輅露é¯é·ºé¹µç¢Œç¥¿ç¶ è�‰éŒ„鹿麓論壟弄朧瀧ç“�ç± è�¾å„¡ç€¨ç‰¢ç£Šè³‚賚賴雷了僚寮廖料燎療çžè�Šè“¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¼é¬§é¾�壘å©�屢樓淚æ¼�瘻累縷蔞褸é�¤é™‹åŠ‰æ—’æŸ³æ¦´æµ�溜ç€�ç�‰ç‘ ç•™ç˜¤ç¡«è¬¬é¡žå…æˆ®é™¸ä¾–å€«å´™æ·ªç¶¸è¼ªå¾‹æ…„æ —ï¥¡éš†å‹’è‚‹å‡œå‡Œæ¥žç¨œç¶¾è�±é™µä¿šåˆ©åŽ˜å��唎履悧æ�Žæ¢¨æµ¬çŠ�狸ç�†ç’ƒï¥¢ç—¢ç±¬ç½¹ç¾¸èމè£�裡里é‡�離鯉å��æ½¾ç‡�璘藺躪隣鱗麟林淋ç�³è‡¨éœ–ç ¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç«‹ç¬ ç²’æ‘©ç‘ªç—²ç¢¼ç£¨é¦¬é”éº»å¯žå¹•æ¼ è†œèŽ«é‚ˆä¸‡å��娩巒彎慢挽晩曼滿漫ç�£çžžè�¬è”“è »è¼“é¥…é°»å”œæŠ¹æœ«æ²«èŒ‰è¥ªé�ºäº¡å¦„忘忙望網罔芒茫莽輞邙埋妹媒å¯�昧枚梅æ¯�煤罵買賣é‚�é…è„ˆè²Šé™Œé©€éº¥åŸæ°“猛盲盟è�Œå†ªè¦“å…�å†•å‹‰æ£‰æ²”çœ„çœ ç¶¿ç·¬é�¢éºµæ»…�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥å��命明æš�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮æŸ�模æ¯�毛牟牡ç‘�眸矛耗芼茅謀謨貌木æ²�牧目ç�¦ç©†é¶©æ¿æ²’夢朦蒙å�¯å¢“妙廟æ��昴æ�³æ¸ºçŒ«ç«—è‹—éŒ¨å‹™å·«æ†®æ‡‹æˆŠæ‹‡æ’«æ— æ¥™æ¦æ¯‹ç„¡ç�·ç•�繆舞茂蕪誣貿霧鵡墨默們刎å�»å•�文�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋è�žèšŠé–€é›¯å‹¿æ²•物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷é�¡é»´å²·æ‚¶æ„�憫æ•�旻旼民泯玟ç�‰ç·¡é–”密蜜è¬�å‰�å�šæ‹�æ��撲朴樸泊ç�€ç’žç®”粕縛膊舶薄迫雹é§�ä¼´å�Šå��å�›æ‹Œæ�¬æ”€æ–‘槃泮潘ç�畔瘢盤盼ç£�ç£»ç¤¬çµ†èˆ¬èŸ è¿”é ’é£¯å‹ƒæ‹”æ’¥æ¸¤æ½‘ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮éƒå€£å‚�å�Šå¦¨å°¨å¹‡å½·æˆ¿æ”¾æ–¹æ—�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防é¾�å€�俳北培徘拜排æ�¯æ¹ƒç„™ç›ƒèƒŒèƒšè£´è£µè¤™è³ 輩é…�陪伯佰帛æŸ�æ ¢ç™½ç™¾é„幡樊煩燔番磻ç¹�蕃藩飜ä¼�ç�罰閥凡帆梵氾汎泛犯範范法ç�ºåƒ»åŠˆå£�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便å�žå¼�變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳ç”�病秉ç«�è¼§é¤ é¨ˆä¿�å ¡å ±å¯¶æ™®æ¥æ´‘湺潽ç�¤ç”«è�©è£œè¤“èœè¼”ä¼�僕åŒ�å�œå®“復æœ�ç¦�腹茯蔔複覆輹輻馥鰒本乶俸奉å°�峯峰æ�§æ£’烽熢ç�«ç¸«è“¬èœ‚逢鋒鳳ä¸�付俯傅剖副å�¦å’�åŸ å¤«å©¦ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������åšåµå¯Œåºœï¥¦æ‰¶æ•·æ–§æµ®æº¥çˆ¶ç¬¦ç°¿ç¼¶è…�è…‘è†šè‰€èŠ™èŽ©è¨ƒè² è³¦è³»èµ´è¶ºéƒ¨é‡œé˜œé™„é§™é³§åŒ—åˆ†å�©å™´å¢³å¥”奮忿憤扮æ˜�汾焚盆粉糞紛芬è³�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪å�‘妃婢庇悲憊扉批æ–�枇榧比毖毗毘沸泌ç�µç—ºç ’碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂è�²èœšè£¨èª¹è¬è²»é„™é�žé£›é¼»åš¬å¬ªå½¬æ–Œæª³æ®¯æµœæ¿±ç€•ç‰�çŽè²§è³“é »æ†‘æ°·è�˜é¨�ä¹�事些仕伺似使俟僿å�²å�¸å”†å—£å››å£«å¥¢å¨‘寫寺射巳師徙æ€�æ�¨æ–œæ–¯æŸ¶æŸ»æ¢æ»æ²™æ³—渣瀉ç�…ç ‚ç¤¾ç¥€ç¥ ç§�篩紗絲肆èˆ�莎蓑蛇裟è©�詞è¬�賜赦è¾é‚ªé£¼é§Ÿéº�削數朔索�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕ç�Šç”£ç–�算蒜酸霰乷撒殺煞薩三參æ�‰æ£®æ¸—芟蔘衫æ�·æ¾�鈒颯上傷åƒ�償商喪嘗å€å°™å³ å¸¸åºŠåº å»‚æƒ³æ¡‘æ©¡æ¹˜çˆ½ç‰€ç‹€ç›¸ç¥¥ç®±ç¿”è£³è§´è©³è±¡è³žéœœå¡žç’½è³½å—‡ï¥¬ç©¡ç´¢è‰²ç‰²ç”Ÿç”¥ï¥ç¬™å¢…壻嶼åº�庶å¾�æ�•抒æ�¿æ•�æš‘æ›™æ›¸æ –æ£²çŠ€ç‘žç®çµ®ç·–署�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓é€�鋤é»�é¼ å¤•å¥å¸æƒœæ˜”晳æž�æ±�淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽ç��瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣é�¸éŠ‘é�¥é¥�é®®å�¨å±‘楔泄洩渫舌薛褻è¨èªªé›ªé½§å‰¡æš¹æ®²çº–蟾è´�é–ƒé™�æ”�涉燮葉城姓宬性惺æˆ�星晟猩ç�¹ç››çœ�ç¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�–è�²è…¥èª é†’ä¸–å‹¢æ²æ´—稅笹細說貰å�¬å˜¯å¡‘宵å°�少巢所掃æ�”æ˜æ¢³æ²¼æ¶ˆæº¯ç€Ÿç‚¤ç‡’甦ç–�ç–Žç˜™ç¬‘ç¯ ç°«ç´ ç´¹è”¬è•蘇訴é€�é�¡é‚µéŠ·éŸ¶é¨·ä¿—å±¬æ�Ÿæ¶‘粟續謖贖速å«å·½æ��è“€é�œé£¡çŽ‡å®‹æ‚šæ�¾æ·žè¨Ÿèª¦é€�é Œåˆ·ï¥°ç�‘碎鎖衰釗修å�—嗽囚垂壽嫂守岫峀帥æ„��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æˆ�手授æ�œæ”¶æ•¸æ¨¹æ®Šæ°´æ´™æ¼±ç‡§ç‹©ç�¸ç�‡ç’²ç˜¦ç�¡ç§€ç©—竪粹ç¶�綬繡羞脩茱è’�蓚藪袖誰è®�輸é�‚é‚ƒé…¬éŠ–éŠ¹éš‹éš§éš¨é›–éœ€é ˆé¦–é«“é¬šå�”塾夙å°å®¿æ·‘潚熟ç�¡ç’¹è‚…è�½å·¡å¾‡å¾ªæ�‚æ—¬æ ’æ¥¯æ©“æ®‰æ´µæ·³ç�£ç›¾çž¬ç�純脣舜è�€è“´è•£è©¢è«„é†‡éŒžé †é¦´æˆŒè¡“è¿°é‰¥å´‡å´§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟è†�è�¨æ¿•拾習褶襲丞乘僧å‹�å�‡æ‰¿æ˜‡ç¹©è …陞ä¾�匙嘶始媤尸屎å±�市弑æ�ƒæ–½æ˜¯æ™‚枾柴猜矢示翅蒔è“�視試詩諡豕豺埴寔å¼�æ�¯æ‹æ¤�殖湜熄篒è�•è˜è»¾é£Ÿé£¾ä¼¸ä¾�ä¿¡å‘»å¨ å®¸æ„¼æ–°æ™¨ç‡¼ç”³ç¥žç´³è…Žè‡£èŽ˜è–ªè—Žèœƒè¨Šèº«è¾›ï¥±è¿…å¤±å®¤å¯¦æ‚‰å¯©å°‹å¿ƒæ²��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什å��拾雙æ°�亞俄兒啞娥峨我牙芽莪蛾衙è¨�阿雅餓鴉éµ�å Šå²³å¶½å¹„æƒ¡æ„•æ�¡æ¨‚渥鄂é�”顎é°�齷安岸按æ™�案眼é›�éž�顔鮟斡è¬�軋閼唵岩巖庵暗癌è�´é—‡å£“押狎鴨仰央æ€�昻殃秧鴦厓哀埃崖愛曖涯ç¢�艾隘é�„厄扼掖液縊腋é¡��\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹æ�¶æ¤°çˆºè€¶ï¥´é‡Žå¼±ï¥µï¥¶ç´„若葯蒻藥èº�ï¥·ä½¯ï¥¸ï¥¹å£¤åƒæ�™æ�šæ”˜æ•æš˜ï¥ºæ¥Šæ¨£æ´‹ç€�煬痒ç˜�禳穰糧羊良襄諒讓釀陽量養圄御於æ¼�瘀禦語é¦éšé½¬å„„憶抑æª�臆å�ƒå °å½¦ç„‰è¨€è«ºå¼è˜–俺儼嚴奄掩淹嶪æ¥å††äºˆä½™ï¥¿ï¦€ï¦�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¦ƒæŸæ±�濾璵礖礪與艅茹輿è½�閭餘驪麗黎亦力域役易曆歷疫繹è¯ï¦�é€†é©›åš¥å §å§¸å¨Ÿå®´ï¦Žå»¶ï¦�ï¦�æ��挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉ç¡�硯秊çµç·£ï¦–縯聯è¡�軟輦蓮連鉛鍊鳶列ï¦�ï¦žæ‚…æ¶…ï¦Ÿç†±ï¦ ï¦¡é–±åŽï¦¢ï¦£ï¦¤æŸ“殮炎焰ç�°è‰¶è‹’�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵ç‡�è‘‰ï¦¨ï¦©å¡‹ï¦ªï¦«å¶¸å½±ï¦¬æ˜ æšŽæ¥¹æ¦®æ°¸æ³³æ¸¶æ½�濚瀛瀯ç…�營ç�°ï¦ç‘›ï¦®ç“”ç›ˆç©Žçº“ï¦¯ï¦°è‹±è© è¿Žï¦±é�ˆï¦²éœ™ï¦³ï¦´ä¹‚倪例刈å�¡æ›³æ±æ¿ŠçŒŠç�¿ç©¢èŠ®è—�蘂禮裔詣è½è±«ï¦·éŠ³ï¦¸éœ“é �五ä¼�俉傲å�ˆå�¾å�³å—šå¡¢å¢ºå¥§å¨›å¯¤æ‚Ÿï¦¹æ‡Šæ•–旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çƒ�熬ç�’ç½èœˆèª¤é°²é¼‡å±‹æ²ƒç�„玉鈺溫瑥瘟穩縕蘊兀壅æ“�瓮甕癰ç¿�é‚•é›�饔渦瓦窩窪臥蛙è�¸è¨›å©‰å®Œå®›æ¢¡æ¤€æµ£çŽ©ç�“ç�¬ç¢—ç·©ç¿«è„˜è…•èŽžè±Œé˜®é ‘æ›°å¾€æ—ºæž‰æ±ªçŽ‹å€å¨ƒæªçŸ®å¤–嵬å·�猥ç•�ï¦ºï¦»åƒ¥å‡¹å ¯å¤å¦–姚寥寮尿嶢拗æ�–撓擾料曜樂橈燎燿瑤ï§��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯è¦�è¬ é�™ï§ƒé‚€é¥’慾欲浴縟褥辱俑å‚冗勇埇墉容庸慂榕涌湧溶熔瑢用甬è�³èŒ¸è“‰è¸ŠéŽ”é�žï§„于佑å�¶å„ªå�ˆå�‹å�³å®‡å¯“尤愚憂旴牛玗瑀盂ç¥�禑禹紆羽芋藕虞迂é�‡éƒµé‡ªéš…é›¨é›©å‹–å½§æ—æ˜±æ ¯ç…œç¨¶éƒ�é Šäº‘ï§…æ©’æ®žæ¾�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�‹éš•雲韻蔚鬱äº�熊雄元原員圓園垣媛嫄寃怨愿æ�´æ²…洹湲æº�爰猿瑗苑è¢�è½…é� 阮院願鴛月越鉞ä½�å�‰åƒžå�±åœ�å§”å¨�尉慰æš�æ¸çˆ²ç‘‹ç·¯èƒƒè�Žè‘¦è”¿è�Ÿè¡›è¤˜è¬‚é�•韋é�乳侑儒兪劉唯喩åºå®¥å¹¼å¹½åº¾æ‚ 惟愈愉æ�„攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由ï§�ç™’ï§Žï§�ç¶è‡¾è�¸è£•誘諛è«è¸°è¹‚é�Šé€¾é�ºé…‰é‡‰é�®ï§�ï§‘å ‰ï§’æ¯“è‚‰è‚²ï§“ï§”å…�奫尹崙淪潤玧胤贇輪鈗é–�律慄栗率è�¿æˆŽç€œçµ¨èž�ï§œåž æ�©æ…‡æ®·èª¾éŠ€éš±ä¹™å�Ÿæ·«è”陰音飮æ�–泣邑å‡�應膺鷹ä¾�倚儀宜æ„�懿擬椅毅疑矣義艤è–�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è°é†«äºŒä»¥ä¼Šï§�ï§žå¤·å§¨ï§Ÿå·²å¼›å½›æ€¡ï§ ï§¡ï§¢ï§£çˆ¾ç�¥ï§¤ç•°ç—�痢移罹而耳肄苡è�‘裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人ä»�刃å�°ï§å’½å› 姻寅引å¿�湮燐璘絪茵藺蚓èª�ï§±é�é�·ï§²ï§³ä¸€ä½šä½¾å£¹æ—¥æº¢é€¸éŽ°é¦¹ä»»å£¬å¦Šå§™æ��林淋稔臨è��賃入å�„�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒ä»�剩å•芿仔刺咨姉姿å�å—åœæ�£æ…ˆæ»‹ç‚™ç…®çŽ†ç“·ç–µç£�紫者自茨蔗藉諮資雌作勺嚼斫昨ç�¼ç‚¸çˆµç¶½èŠ�é…Œé›€éµ²å±æ£§æ®˜æ½ºç›žå²‘æš«æ½›ç®´ç°ªè ¶é›œä¸ˆä»—åŒ å ´å¢»å£¯å¥¬å°‡å¸³åº„å¼µæŽŒæš²æ�–樟檣欌漿牆狀ç��ç’‹ç« ç²§è…¸è‡Ÿè‡§èŽŠè‘¬è”£è–”è—�è£�贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障å†�哉在宰æ‰�æ��æ ½æ¢“æ¸½æ»“ç�½ç¸¡è£�財載齋齎çˆç®�è«�錚佇低儲咀å§�底抵æ�µæ¥®æ¨—沮渚狙猪疽箸紵苧è�¹è‘—藷詛貯躇這邸雎齟勣å�Šå«¡å¯‚摘敵滴狄炙的ç©�笛ç±�績翟è�»è¬«è³Šèµ¤è·¡è¹Ÿè¿ªè¿¹é�©é�‘佃佺傳全典å‰�å‰ªå¡¡å¡¼å¥ å°ˆå±•å»›æ‚›æˆ°æ “æ®¿æ°ˆæ¾±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎ç� 田甸畑癲çŒç®‹ç®ç¯†çº�詮輾轉鈿銓錢é�«é›»é¡šé¡«é¤žåˆ‡æˆªæŠ˜æµ™ç™¤ç«Šç¯€çµ¶å� 岾店漸点粘霑鮎點接摺è�¶ä¸�井äºå�œå�µå‘ˆå§ƒå®šå¹€åºå»·å¾�æƒ…æŒºæ”¿æ•´æ—Œæ™¶æ™¸æŸ¾æ¥¨æª‰æ£æ±€æ·€æ·¨æ¸Ÿæ¹žç€žç‚¡çŽŽç�½ç”ºç�›ç¢‡ç¦Žç¨‹ç©½ç²¾ç¶Žè‰‡è¨‚諪貞é„é…Šé‡˜é‰¦é‹ŒéŒ éœ†é�–�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�œé ‚é¼Žåˆ¶åŠ‘å•¼å ¤å¸�弟悌æ��梯濟ç¥ç¬¬è‡�薺製諸蹄é†�除際霽題齊俎兆凋助嘲弔彫措æ“�æ—©æ™�曺曹æœ�æ¢�æ£—æ§½æ¼•æ½®ç…§ç‡¥çˆªç’ªçœºç¥–ç¥šç§Ÿç¨ çª•ç²—ç³Ÿçµ„ç¹°è‚‡è—»èš¤è©”èª¿è¶™èº�é€ é�釣阻雕鳥æ—�簇足é�ƒå˜å°Šå�’æ‹™çŒ�倧宗從悰慫棕淙ç�®ç¨®çµ‚綜縱腫�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵é�¾é�˜ä½�å��左座挫罪主ä½�ä¾�å�šå§�胄呪周嗾å¥�宙州廚æ™�æœ±æŸ±æ ªæ³¨æ´²æ¹Šæ¾�ç‚·ç� 疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄é§�竹粥俊å„�å‡†åŸˆå¯¯å³»æ™™æ¨½æµšæº–æ¿¬ç„Œç•¯ç«£è ¢é€¡é�µé›‹é§¿èŒ�ä¸ä»²è¡†é‡�å�½æ«›æ¥«æ±�葺增憎曾拯çƒ�甑症繒蒸è‰è´ˆä¹‹å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地å�€å¿—æŒ�指摯支旨智æž�æž³æ¢æ± æ²šæ¼¬çŸ¥ç ¥ç¥‰ç¥—ç´™è‚¢è„‚è‡³èŠ�芷蜘誌識贄趾é�²ç›´ç¨™ç¨·ç¹”è�·å”‡å—”塵振æ�¢æ™‰æ™‹æ¡æ¦›æ®„津溱ç��瑨璡畛疹盡眞瞋秦縉ç¸�臻蔯袗診賑軫辰進éŽé™£é™³éœ‡ä¾„å�±å§ªå«‰å¸™æ¡Žç“†ç–¾ç§©çª’膣è›è³ªè·Œè¿æ–Ÿæœ•什執潗ç·�輯�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¶é›†å¾µæ‡²æ¾„且侘借å�‰å—Ÿåµ¯å·®æ¬¡æ¤ç£‹ç®šï§¾è¹‰è»Šé�®æ�‰æ�¾ç�€çª„錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽é¤�饌刹察擦æœç´®åƒå�ƒå¡¹æ…˜æ…™æ‡ºæ–¬ç«™è®’è®–å€‰å€¡å‰µå”±å¨¼å» å½°æ„´æ•žæ˜Œæ˜¶æš¢æ§�滄漲猖瘡窓脹艙è�–è’¼å‚µåŸ°å¯€å¯¨å½©æŽ¡ç ¦ç¶µè�œè”¡é‡‡é‡µå†ŠæŸµç–�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è²¬å‡„å¦»æ‚½è™•å€œï§¿å‰”å°ºæ…½æˆšæ‹“æ“²æ–¥æ»Œç˜ è„Šè¹ é™Ÿéš»ä»Ÿå�ƒå–˜å¤©å·�擅泉淺玔穿舛薦賤è¸�é�·é‡§é—¡é˜¡éŸ†å‡¸å“²å–†å¾¹æ’¤æ¾ˆç¶´è¼Ÿè½�é�µåƒ‰å°–æ²¾æ·»ç”›çž»ç°½ç±¤è©¹è«‚å žå¦¾å¸–æ�·ç‰’ç–Šç�«è«œè²¼è¼’廳晴淸è�½è��è«‹é�‘é¯–ï¨€å‰ƒæ›¿æ¶•æ»¯ç· è«¦é€®é�žé«”åˆ�剿哨憔抄招梢�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦ç¡�ç¤�礎秒ç¨�肖艸苕è�‰è•‰è²‚超酢醋醮促囑ç‡çŸ—蜀觸寸忖æ�‘邨å�¢å¡šå¯µæ‚¤æ†�æ‘ ç¸½è�°è”¥éŠƒæ’®å‚¬å´”æœ€å¢œæŠ½æŽ¨æ¤Žæ¥¸æ¨žæ¹«çšºç§‹èŠ»è�©è«�趨追鄒酋醜éŒ�錘鎚雛騶é°�丑畜ç¥�竺ç‘築縮蓄蹙蹴軸é€�æ˜¥æ¤¿ç‘ƒå‡ºæœ®é»œå……å¿ æ²–èŸ²è¡�衷悴膵è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅å�–å�¹å˜´å¨¶å°±ç‚Šç¿ è�šè„†è‡è¶£é†‰é©Ÿé·²å�´ä»„åŽ æƒ»æ¸¬å±¤ä¾ˆå€¤å—¤å³™å¹Ÿæ�¥æ¢”治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅é£è¦ªä¸ƒæŸ’漆侵寢枕沈浸ç�›ç §é‡�é�¼èŸ„秤稱快他咤唾墮妥惰打拖朶楕舵陀馱é§�倬å�“å•„å�¼ï¨�托拓擢晫æŸ�æ¿�濯ç�¢ç�¸è¨—�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¸å‘‘嘆å�¦å½ˆæ†šæŽç�˜ç‚綻誕奪脫探眈耽貪塔æ�榻宕帑湯糖蕩兌å�°å¤ªæ€ 態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎å��土討慟桶洞痛ç’çµ±é€šå †æ§Œè…¿è¤ªé€€é ¹å�¸å¥—妬投é€�鬪æ…�特闖å�¡å©†å·´æŠŠæ’擺æ�·æ³¢æ´¾çˆ¬ç�¶ç ´ç½·èŠè·›é —判å�‚æ�¿ç‰ˆç“£è²©è¾¦éˆ‘�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八å�æ�Œä½©å”„悖敗沛浿牌狽稗覇è²�彿¾Žçƒ¹è†¨æ„Žä¾¿å��æ‰�片篇編翩é��éžé¨™è²¶å�ªå¹³æž°è��è©•å� 嬖幣廢弊斃肺蔽閉陛佈包åŒ�åŒ�咆哺圃布怖抛抱æ�•ï¨†æ³¡æµ¦ç–±ç ²èƒžè„¯è‹žè‘¡è’²è¢�褒逋鋪飽鮑幅暴æ›�瀑爆輻俵剽彪慓æ�“標漂瓢票表豹飇飄驃�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å“�稟楓諷豊風馮彼披疲皮被é�¿é™‚匹弼必泌ç�Œç•¢ç–‹ç†è‹¾é¦�ä¹�逼下何厦å¤�廈昰河瑕è�·è�¦è³€é��霞鰕壑å¸è™�謔鶴寒æ�¨æ‚�旱汗漢澣瀚罕翰閑閒é™�韓割轄函å�«å’¸å•£å–Šæª»æ¶µç·˜è‰¦éŠœé™·é¹¹å�ˆå“ˆç›’蛤閤闔陜亢伉姮嫦巷æ�’抗æ�æ¡�沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¨ˆï¨‰é …äº¥å�•咳垓奚å©å®³æ‡ˆæ¥·æµ·ç€£èŸ¹è§£è©²è«§é‚‚é§éª¸åŠ¾æ ¸å€–å¹¸æ��è�‡è¡Œäº«å�‘åš®ç�¦é„•響餉饗香噓墟虛許憲櫶ç�»è»’æ‡éšªé©—奕爀赫é�©ä¿”峴弦懸晛泫炫玄玹ç�¾çœ©ç��絃絢縣舷衒見賢鉉顯å‘ç©´è¡€é �å«Œä¿ å�”夾峽挾浹狹脅脇莢é‹�é °äº¨å…„åˆ‘åž‹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅ç��炯熒ç�©ç‘©è�Šèž¢è¡¡é€ˆé‚¢éŽ£é¦¨å…®å½—æƒ æ…§æš³è•™è¹Šé†¯éž‹ä¹Žäº’å‘¼å£•å£ºå¥½å²µå¼§æˆ¶æ‰ˆæ˜Šæ™§æ¯«æµ©æ·�æ¹–æ»¸æ¾”æ¿ æ¿©ç��ç‹�ç�¥ç‘šç“ 皓祜糊縞胡芦葫蒿虎號è�´è·è±ªéŽ¬é €é¡¥æƒ‘æˆ–é…·å©šæ˜�混渾ç�¿é‚忽惚ç¬�哄弘汞泓洪烘紅虹訌鴻化和嬅樺ç�«ç•µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç¦�禾花è�¯è©±è�貨é�´ï¨‹æ“´æ”«ç¢ºç¢»ç©«ä¸¸å–šå¥�宦幻患æ�›æ¡æ™¥æ¡“渙煥環紈還驩鰥活滑猾è±�闊凰幌徨æ��惶愰慌晃晄榥æ³�湟滉潢煌璜皇ç¯�ç°§è�’è�—é�‘éš�黃匯回廻徊æ�¢æ‚”懷晦會檜淮澮ç�°ç�ªç¹ªè†¾èŒ´è›”誨賄劃ç�²å®–æ©«é�„哮嚆å�效斅曉梟æ¶�淆�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵é©�侯候厚å�Žå�¼å–‰å—…帿後朽煦ç��逅勛勳塤壎焄ç†�燻薰訓暈薨喧暄煊è�±å�‰å–™æ¯�彙徽æ�®æš‰ç…‡è«±è¼�麾休æ�ºçƒ‹ç•¦è™§æ�¤èŽé·¸å…‡å‡¶åŒˆæ´¶èƒ¸é»‘昕欣炘痕å�ƒå±¹ç´‡è¨–æ¬ æ¬½æ†å�¸æ�°æ´½ç¿•興僖凞喜噫å›�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[21025] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃÐ�ЄЅІЇЈЉ|,%_>?ЊЋЌÂÐŽÐ�юаб`:#@'=\\\"цabcdefghiдефгхийjklmnopqrклмнопÑ�~stuvwxyzÑ€Ñ�тужвьызшÑ�щчъЮÐ�БЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRÐ�ОПЯРС\\\\§STUVWXYZТУЖВЬЫ0123456789ЗШÐЩЧŸ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[21027] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001fï£�ï£�ï£�ï£�ï£žï£Ÿï£ ï£¡\\u0000 \\u0000。「」、・ヲァィ¢.<(+|&ゥェォャï½ï½®ï½¯ï½°ï½±!$*);¬-/イウエオカキケ\\u0000,%_>?コサシスセソタï¾�ツ`:#@'\\\"\\u0000abcdefghiテトナニŽネ\\u0000jklmnopqrノハヒフï¾�ホ¯~stuvwxyzï¾�ï¾�ム[メモ^£¥ヤユヨラリルレロワï¾�]゙゚{ABCDEFG\\u0000\\u0000}JKLMNOPï£ï£®ï£¯ï£°\\u0000\\\\\\u0000STUVWX\\u0000\\u000001234567\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[21866] = (function(){ var d = \"ЪЪ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌â”�└┘├┤┬┴┼▀▄█▌â–�░▒▓⌠■∙√≈≤≥ ⌡°²·÷â•�║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡Ð�Є╣ІЇ╦╧╨╩╪Ò�Ў©юабцдефгхийклмнопÑ�Ñ€Ñ�тужвьызшÑ�щчъЮÐ�БЦДЕФГХИЙКЛМÐ�ОПЯРСТУЖВЬЫЗШÐЩЧЪ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[29001] = (function(){ var d = \"ΈΉΊΌΎ°◘○◙♂♀♪♬☼▶◀↕‼¶§£Î�↑↓→â†�Ë↔▲▼ !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäà åçêëèïîìÄÅÉæÆôöòûùΑÖÜøαØάΒáÃóúñÑβΓγΔδΕεÎΖζΗηή│ªÃ�ÂÀΘθ║╗â•�ΙΪâ”�└º¡¿─΄ãÃ╚╔ιίϊâ•�Î�ΚκΛÊλΜμÃ�Î�ν┘┌ΞξΟοόÓßÔΠõÕπΡÏ�ÚΣςσΤτΥΫυÏ�ϋΰΦφΧχΨ·ψΩωώ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[38598] = (function(){ var d = \"ïŸ�ïŸ�\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ¢£¤¥¦§¨©×«¬Â®‾°±²³´µ¶·¸¹÷»¼½¾ïž�ïžžïžŸïž ïž¡ïž¢ïž£ïž¤ïž¥ïž¦ïž§ïž¨ïž©ïžªïž«ïž¬ïžïž®ïž¯ïž°ïž±ïž²ïž³ïž´ïžµïž¶ïž·ïž¸ïž¹ïžºïž»ïž¼â€—×�בגדהוזחטיךכל×�×ž×Ÿ× ×¡×¢×£×¤×¥×¦×§×¨×©×ªïž½ïž¾ïž¿ïŸ€ïŸ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[51932] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�����������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[142] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������。「」、・ヲァィゥェォャï½ï½®ï½¯ï½°ï½±ï½²ï½³ï½´ï½µï½¶ï½·ï½¸ï½¹ï½ºï½»ï½¼ï½½ï½¾ï½¿ï¾€ï¾�ツテトナニヌネノハヒフï¾�ホï¾�ï¾�ムメモヤユヨラリルレロワï¾�゙゚��������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。,.・:;?ï¼�゛゜´`¨^ ̄_ヽヾã‚�ゞ〃ä»�々〆〇ー―â€�ï¼�\~∥|…‥‘’“â€�()〔〕[]{ï½�〈〉《》「ã€�『ã€�ã€�】+ï¼�±×÷ï¼�â‰ ï¼œï¼žâ‰¦â‰§âˆžâˆ´â™‚â™€Â°â€²â€³â„ƒï¿¥ï¼„ï¿ ï¿¡ï¼…ï¼ƒï¼†ï¼Šï¼ Â§â˜†â˜…â—‹â—�◎◇�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������◆□■△▲▽▼※〒→â†�↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽âˆ�∵∫∬�������ʼn♯â™â™ªâ€ ‡¶����◯�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�123456789�������ABCDEFGHIJKLï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz�����\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω���������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂���������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[173] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬â‘â‘®â‘¯â‘°â‘±â‘²â‘³â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ã�‰ãŒ”㌢ã��㌘㌧㌃㌶ã�‘ã�—ãŒ�㌦㌣㌫ã�ŠãŒ»ãŽœãŽ�㎞㎎ãŽ�ã�„㎡��������ã�»ã€�〟№ã��℡㊤㊥㊦㊧㊨㈱㈲㈹ã�¾ã�½ã�¼ï¿½ï¿½ï¿½âˆ®âˆ‘���∟⊿������\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜ç©�悪æ�¡æ¸¥æ—葦芦鯵梓圧斡扱宛å§�虻飴絢綾鮎或粟袷安庵按暗案闇éž�æ��以伊ä½�ä¾�å�‰å›²å¤·å§”å¨�尉惟æ„�慰易椅為ç•�ç•°ç§»ç¶ç·¯èƒƒè�Žè¡£è¬‚é�•é�ºåŒ»äº•亥域育éƒ�磯一壱溢逸稲茨芋鰯å…�å�°å’½å“¡å› 姻引飲淫胤è”�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é™¢é™°éš éŸ»å�‹å�³å®‡çƒ�羽迂雨å�¯éµœçªºä¸‘碓臼渦嘘唄æ¬�蔚鰻姥厩浦瓜é–�噂云é�‹é›²è��餌å�¡å–¶å¬°å½±æ˜ æ›³æ „æ°¸æ³³æ´©ç‘›ç›ˆç©Žé ´è‹±è¡›è© é‹æ¶²ç–«ç›Šé§…悦è¬�越閲榎åŽå††åœ’å °å¥„å®´å»¶æ€¨æŽ©æ�´æ²¿æ¼”炎焔煙燕猿ç¸�艶苑薗é� 鉛鴛塩於汚甥凹央奥往応�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������押旺横欧殴王ç¿�襖鴬鴎黄岡沖è�»å„„屋憶臆桶牡乙俺å�¸æ�©æ¸©ç©�éŸ³ä¸‹åŒ–ä»®ä½•ä¼½ä¾¡ä½³åŠ å�¯å˜‰å¤�å«�å®¶å¯¡ç§‘æš‡æžœæž¶æŒæ²³ç�«ç�‚ç¦�禾稼箇花苛茄è�·è�¯è�“è�¦èª²å˜©è²¨è¿¦é�ŽéœžèšŠä¿„峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔æ�¢æ‡�戒æ‹�改�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�晦械海ç�°ç•Œçš†çµµèŠ¥èŸ¹é–‹éšŽè²�凱劾外咳害崖慨概涯ç¢�蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇å�„å»“æ‹¡æ’¹æ ¼æ ¸æ®»ç�²ç¢ºç©«è¦šè§’赫較éƒé–£éš”é�©å¦å²³æ¥½é¡�é¡ŽæŽ›ç¬ æ¨«æ©¿æ¢¶é°�潟割å–�æ�°æ‹¬æ´»æ¸‡æ»‘è‘›è¤�轄且鰹å�¶æ¤›æ¨ºéž„æ ªå…œç«ƒè’²é‡œéŽŒå™›é´¨æ ¢èŒ…è�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç²¥åˆˆè‹…ç“¦ä¹¾ä¾ƒå† å¯’åˆŠå‹˜å‹§å·»å–šå ªå§¦å®Œå®˜å¯›å¹²å¹¹æ‚£æ„Ÿæ…£æ†¾æ�›æ•¢æŸ‘æ¡“æ£ºæ¬¾æ“æ±—漢澗潅環甘監看竿管簡緩缶翰è‚�艦莞観諌貫還鑑間閑関陥韓館舘丸å�«å²¸å·ŒçŽ©ç™Œçœ¼å²©ç¿«è´‹é›�é ‘é¡”é¡˜ä¼�伎å�±å–œå™¨åŸºå¥‡å¬‰å¯„å²�希幾忌æ�®æœºæ——既期棋棄�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������機帰毅気汽畿祈å£ç¨€ç´€å¾½è¦�記貴起軌è¼�飢騎鬼亀å�½å„€å¦“å®œæˆ¯æŠ€æ“¬æ¬ºçŠ ç–‘ç¥‡ç¾©èŸ»èª¼è°æŽ¬è�Šéž å�‰å�ƒå–«æ¡”æ©˜è©°ç §æ�µé»�å�´å®¢è„šè™�逆丘久仇休å�Šå�¸å®®å¼“急救朽求汲泣ç�¸ç�ƒç©¶çª®ç¬ˆç´šç³¾çµ¦æ—§ç‰›åŽ»å±…å·¨æ‹’æ‹ æŒ™æ¸ è™šè¨±è·�鋸æ¼�禦éšäº¨äº«äº¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ä¾›ä¾ åƒ‘å…‡ç«¶å…±å‡¶å�”匡å�¿å�«å–¬å¢ƒå³¡å¼·å½Šæ€¯æ��æ�挟教橋æ³�ç‹‚ç‹çŸ¯èƒ¸è„…興蕎郷é�¡éŸ¿é¥—驚仰å‡�å°æš�æ¥å±€æ›²æ¥µçމæ¡�ç²�僅勤å�‡å·¾éŒ¦æ–¤æ¬£æ¬½ç�´ç¦�禽ç‹ç·Šèйè�Œè¡¿è¥Ÿè¬¹è¿‘金å�ŸéŠ€ä¹�倶å�¥åŒºç‹—玖矩苦躯駆駈駒具愚虞喰空å�¶å¯“é�‡éš…串櫛釧屑屈�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������掘窟沓é�´è½¡çªªç†Šéšˆç²‚æ —ç¹°æ¡‘é�¬å‹²å�›è–«è¨“群è»�郡å�¦è¢ˆç¥�係傾刑兄啓åœç�ªåž‹å¥‘形径æ�µæ…¶æ…§æ†©æŽ²æ�ºæ•¬æ™¯æ¡‚渓畦稽系経継繋罫茎è�Šè›�計詣è¦è»½é šé¶�芸迎鯨劇戟撃激隙æ¡�å‚‘æ¬ æ±ºæ½”ç©´çµ�血訣月件倹倦å�¥å…¼åˆ¸å‰£å–§åœ�å …å«Œå»ºæ†²æ‡¸æ‹³æ�²ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¤œæ¨©ç‰½çŠ¬çŒ®ç ”ç¡¯çµ¹çœŒè‚©è¦‹è¬™è³¢è»’é�£é�µé™ºé¡•験鹸元原厳幻弦減æº�玄ç�¾çµƒèˆ·è¨€è«ºé™�乎個å�¤å‘¼å›ºå§‘å¤å·±åº«å¼§æˆ¸æ•…枯湖ç‹�糊袴股胡è�°è™Žèª‡è·¨éˆ·é›‡é¡§é¼“五互ä¼�å�ˆå‘‰å�¾å¨¯å¾Œå¾¡æ‚Ÿæ¢§æªŽç‘šç¢�語誤è·é†�乞鯉交佼侯候倖光公功効勾厚å�£å�‘�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�Žå–‰å�‘垢好å”å�å®�工巧巷幸広庚康弘æ�’慌抗拘控攻昂晃更æ�æ ¡æ¢—æ§‹æ±Ÿæ´ªæµ©æ¸¯æº�ç”²çš‡ç¡¬ç¨¿ç³ ç´…ç´˜çµžç¶±è€•è€ƒè‚¯è‚±è…”è†�航è�’è¡Œè¡¡è¬›è²¢è³¼éƒŠé…µé‰±ç ¿é‹¼é–¤é™�é …é¦™é«˜é´»å‰›åŠ«å�·å�ˆå£•æ‹·æ¿ è±ªè½Ÿéº¹å…‹åˆ»å‘Šå›½ç©€é…·éµ é»’ç�„漉腰甑忽惚骨狛込�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ¤é ƒä»Šå›°å�¤å¢¾å©šæ�¨æ‡‡æ˜�æ˜†æ ¹æ¢±æ··ç—•ç´ºè‰®é‚些ä½�å�‰å”†åµ¯å·¦å·®æŸ»æ²™ç‘³ç ‚è©�鎖裟å��座挫債催å†�最哉塞妻宰彩æ‰�æŽ¡æ ½æ³æ¸ˆç�½é‡‡çŠ€ç •ç ¦ç¥æ–Žç´°è�œè£�載際剤在æ��罪財冴å�‚é˜ªå ºæ¦Šè‚´å’²å´ŽåŸ¼ç¢•é·ºä½œå‰Šå’‹æ�¾æ˜¨æœ”柵窄ç–索錯桜é®ç¬¹åŒ™å†Šåˆ·ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¯Ÿæ‹¶æ’®æ“¦æœæ®ºè–©é›‘çš�鯖æ�ŒéŒ†é®«çš¿æ™’三傘å�‚山惨撒散桟燦ç�Šç”£ç®—纂蚕讃賛酸é¤�斬暫残仕仔伺使刺å�¸å�²å—£å››å£«å§‹å§‰å§¿å�å±�市師志æ€�æŒ‡æ”¯åœæ–¯æ–½æ—¨æž�æ¢æ»æ°�ç�…祉ç§�糸紙紫肢脂至視詞詩試誌諮資賜雌飼æ¯äº‹ä¼¼ä¾�å…�å—寺慈æŒ�時�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������次滋治爾璽痔ç£�示而耳自蒔辞æ±�鹿å¼�è˜é´«ç«ºè»¸å®�雫七å�±åŸ·å¤±å«‰å®¤æ‚‰æ¹¿æ¼†ç–¾è³ªå®Ÿè”€ç¯ å�²æŸ´èŠ�屡蕊縞舎写射æ�¨èµ¦æ–œç…®ç¤¾ç´—者è¬�車é�®è›‡é‚ªå€Ÿå‹ºå°ºæ�“ç�¼çˆµé…Œé‡ˆéŒ«è‹¥å¯‚弱惹主å�–守手朱殊狩ç� 種腫趣酒首儒å�—呪寿授樹綬需囚å�Žå‘¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������宗就州修æ„�拾洲秀秋終ç¹�ç¿’è‡èˆŸè’�衆襲è®�蹴輯週酋酬集醜什ä½�å……å��従戎柔æ±�渋ç�£ç¸¦é‡�銃å�”夙宿淑ç¥�縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡é�µé†‡é †å‡¦åˆ�所暑曙渚庶緒署書薯藷諸助å�™å¥³åº�å¾�æ�•鋤除傷償�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å‹�åŒ å�‡å�¬å“¨å•†å”±å˜—奨妾娼宵将å°�å°‘å°šåº„åºŠå» å½°æ‰¿æŠ„æ‹›æŽŒæ�·æ˜‡æ˜Œæ˜æ™¶æ�¾æ¢¢æ¨Ÿæ¨µæ²¼æ¶ˆæ¸‰æ¹˜ç„¼ç„¦ç…§ç—‡çœ�ç¡�ç¤�ç¥¥ç§°ç« ç¬‘ç²§ç´¹è‚–è�–蒋蕉è¡�裳訟証詔詳象賞醤鉦é�¾é�˜éšœéž˜ä¸Šä¸ˆä¸žä¹—å†—å‰°åŸŽå ´å£Œå¬¢å¸¸æƒ…æ“¾æ�¡æ�–浄状畳穣蒸è²é†¸éŒ 嘱埴飾�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‹æ¤�æ®–ç‡ç¹”è�·è‰²è§¦é£Ÿè�•è¾±å°»ä¼¸ä¿¡ä¾µå”‡å¨ å¯�審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進é‡�震人ä»�刃塵壬尋甚尽腎訊迅陣é�笥è«�é ˆé…¢å›³åŽ¨é€—å�¹åž‚帥推水炊ç�¡ç²‹ç¿ è¡°é�‚é…”éŒ�錘éš�瑞髄崇嵩数枢趨雛æ�®æ�‰æ¤™è�…é —é›€è£¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������澄摺寸世瀬ç•�是凄制勢姓å¾�性æˆ�æ”¿æ•´æ˜Ÿæ™´æ£²æ –æ£æ¸…牲生盛精è�–å£°è£½è¥¿èª èª“è«‹é€�醒é�’é�™æ–‰ç¨Žè„†éš»å¸æƒœæˆšæ–¥æ˜”æž�石ç©�ç±�績脊責赤跡蹟碩切拙接摂折è¨çªƒç¯€èª¬é›ªçµ¶èˆŒè�‰ä»™å…ˆå�ƒå� 宣専尖å·�æˆ¦æ‰‡æ’°æ “æ ´æ³‰æµ…æ´—æŸ“æ½œç…Žç…½æ—‹ç©¿ç®ç·šï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������繊羨腺舛船薦詮賎践é�¸é�·éŠéŠ‘é–ƒé®®å‰�善漸然全禅繕膳糎噌塑岨措曾曽楚狙ç–�ç–Žç¤Žç¥–ç§Ÿç²—ç´ çµ„è˜‡è¨´é˜»é�¡é¼ 僧創å�Œå�¢å€‰å–ªå£®å¥�爽宋層åŒ�惣想æ�œæŽƒæŒ¿æŽ»æ“�早曹巣æ§�槽漕燥争痩相窓糟ç·�ç¶œè�¡è�‰è�˜è‘¬è’¼è—»è£…èµ°é€�é�鎗霜騒åƒ�増憎�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‡“è”µè´ˆé€ ä¿ƒå�´å‰‡å�³æ�¯æ�‰æ�Ÿæ¸¬è¶³é€Ÿä¿—属賊æ—�ç¶šå�’袖其æ�ƒå˜å«å°Šæ��æ�‘é�œä»–å¤šå¤ªæ±°è©‘å”¾å •å¦¥æƒ°æ‰“æŸ�èˆµæ¥•é™€é§„é¨¨ä½“å †å¯¾è€�å²±å¸¯å¾…æ€ æ…‹æˆ´æ›¿æ³°æ»žèƒŽè…¿è‹”è¢‹è²¸é€€é€®éšŠé»›é¯›ä»£å�°å¤§ç¬¬é†�題鷹æ»�瀧å�“啄宅托択拓沢濯ç�¢è¨—é�¸æ¿�諾茸凧蛸å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�©ä½†é�”辰奪脱巽竪辿棚谷狸鱈樽誰丹å�˜å˜†å�¦æ‹…æŽ¢æ—¦æŽæ·¡æ¹›ç‚çŸç«¯ç®ªç¶»è€½èƒ†è›‹èª•é�›å›£å£‡å¼¾æ–暖檀段男談値知地弛æ�¥æ™ºæ± 痴稚置致蜘é�…馳築畜竹ç‘è“„é€�秩窒茶嫡ç�€ä¸ä»²å®™å¿ 抽昼柱注虫衷註酎鋳é§�樗瀦猪苧著貯ä¸�兆凋喋寵�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帖帳åº�弔張彫徴懲挑暢æœ�潮牒町眺è�´è„¹è…¸è�¶èª¿è«œè¶…è·³éŠšé•·é ‚é³¥å‹…æ�—直朕沈ç��è³ƒéŽ®é™³æ´¥å¢œæ¤Žæ§Œè¿½éŽšç—›é€šå¡šæ ‚æŽ´æ§»ä½ƒæ¼¬æŸ˜è¾»è”¦ç¶´é�”椿潰å�ªå£·å¬¬ç´¬çˆªå�Šé‡£é¶´äºä½Žå�œå�µå‰ƒè²žå‘ˆå ¤å®šå¸�底åºå»·å¼Ÿæ‚ŒæŠµæŒºæ��æ¢¯æ±€ç¢‡ç¦Žç¨‹ç· è‰‡è¨‚è«¦è¹„é€“ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸é„釘鼎泥摘擢敵滴的笛é�©é�‘溺哲徹撤è½�è¿é‰„典填天展店添çº�甜貼転顛点ä¼�殿澱田電兎å��å µå¡—å¦¬å± å¾’æ–—æ�œæ¸¡ç™»è�Ÿè³é€”都é��ç ¥ç ºåŠªåº¦åœŸå¥´æ€’å€’å…šå†¬å‡�刀å”�塔塘套宕島嶋悼投æ�æ�±æ¡ƒæ¢¼æ£Ÿç›—淘湯涛ç�¯ç‡ˆå½“痘祷ç‰ç”ç’糖統到�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������董蕩藤討謄豆è¸�逃é€�é�™é™¶é 騰闘åƒ�å‹•å�Œå ‚導憧撞洞瞳童胴è�„é�“éŠ…å³ é´‡åŒ¿å¾—å¾³æ¶œç‰¹ç�£ç¦¿ç¯¤æ¯’ç‹¬èªæ ƒæ©¡å‡¸çª�椴届鳶苫寅酉瀞噸屯惇敦沌豚é��é “å‘‘æ›‡éˆ�奈那内ä¹�凪薙謎ç�˜æ�ºé�‹æ¥¢é¦´ç¸„ç•·å�—æ¥ è»Ÿé›£æ±�二尼å¼�迩匂賑肉虹廿日乳入�\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������如尿韮任妊å¿�èª�濡禰祢寧葱猫熱年念æ�»æ’šç‡ƒç²˜ä¹ƒå»¼ä¹‹åŸœå𢿂©æ¿ƒç´�能脳膿農覗蚤巴把æ’覇æ�·æ³¢æ´¾ç�¶ç ´å©†ç½µèŠé¦¬ä¿³å»ƒæ‹�排敗æ�¯ç›ƒç‰ŒèƒŒè‚ºè¼©é…�å€�åŸ¹åª’æ¢…æ¥³ç…¤ç‹½è²·å£²è³ é™ªé€™è�¿ç§¤çŸ§è�©ä¼¯å‰¥å�šæ‹�æŸ�泊白箔粕舶薄迫æ›�æ¼ çˆ†ç¸›èŽ«é§�麦�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‡½ç®±ç¡²ç®¸è‚‡çˆæ«¨å¹¡è‚Œç•‘ç• å…«é‰¢æºŒç™ºé†—é«ªä¼�罰抜ç�閥鳩噺塙蛤隼伴判å�Šå��å�›å¸†æ�¬æ–‘æ�¿æ°¾æ±Žç‰ˆçНç�ç•”ç¹�èˆ¬è—©è²©ç¯„é‡†ç…©é ’é£¯æŒ½æ™©ç•ªç›¤ç£�蕃蛮匪å�‘å�¦å¦ƒåº‡å½¼æ‚²æ‰‰æ‰¹æŠ«æ–�比泌疲皮碑秘緋罷肥被誹費é�¿é�žé£›æ¨‹ç°¸å‚™å°¾å¾®æž‡æ¯˜ç�µçœ‰ç¾Žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鼻柊稗匹疋é«å½¦è†�è�±è‚˜å¼¼å¿…ç•¢ç†é€¼æ¡§å§«åª›ç´�百謬俵彪標氷漂瓢票表評豹廟æ��病秒苗錨鋲蒜è›é°å“�å½¬æ–Œæµœç€•è²§è³“é »æ•�ç“¶ä¸�ä»˜åŸ å¤«å©¦å¯Œå†¨å¸ƒåºœæ€–æ‰¶æ•·æ–§æ™®æµ®çˆ¶ç¬¦è…�膚芙èœè² 賦赴阜附侮撫æ¦èˆžè‘¡è•ªéƒ¨å°�楓風葺蕗ä¼�副復幅æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç¦�腹複覆淵弗払沸ä»�物鮒分å�»å™´å¢³æ†¤æ‰®ç„šå¥®ç²‰ç³žç´›é›°æ–‡è�žä¸™ä½µå…µå¡€å¹£å¹³å¼ŠæŸ„並蔽閉陛米é �僻å£�癖碧別瞥蔑箆å��変片篇編辺返é��便勉娩å¼�éžä¿�舗鋪圃æ�•æ©ç”«è£œè¼”穂募墓慕戊暮æ¯�ç°¿è�©å€£ä¿¸åŒ…å‘†å ±å¥‰å®�峰峯崩庖抱æ�§æ”¾æ–¹æœ‹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ³•æ³¡çƒ¹ç ²ç¸«èƒžèŠ³è�Œè“¬èœ‚褒訪豊邦鋒飽鳳鵬ä¹�亡å‚�剖å�Šå¦¨å¸½å¿˜å¿™æˆ¿æš´æœ›æŸ�棒冒紡肪膨謀貌貿鉾防å� é ¬åŒ—åƒ•å�œå¢¨æ’²æœ´ç‰§ç�¦ç©†é‡¦å‹ƒæ²¡æ®†å €å¹Œå¥”本翻凡盆摩磨é”麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒æ¡�亦俣å�ˆæŠ¹æœ«æ²«è¿„ä¾ç¹éº¿ä¸‡æ…¢æº€ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������漫蔓味未é…巳箕岬密蜜湊蓑稔脈妙ç²�æ°‘çœ å‹™å¤¢ç„¡ç‰ŸçŸ›éœ§éµ¡æ¤‹å©¿å¨˜å†¥å��命明盟迷銘鳴姪ç‰�æ»…å…�棉綿緬é�¢éººæ‘¸æ¨¡èŒ‚å¦„åŸæ¯›çŒ›ç›²ç¶²è€—蒙儲木黙目æ�¢å‹¿é¤…尤戻籾貰å•�æ‚¶ç´‹é–€åŒ�也冶夜爺耶野弥矢厄役約薬訳èº�é�–柳薮鑓愉愈油癒�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è«è¼¸å”¯ä½‘優勇å�‹å®¥å¹½æ‚ 憂æ�–有柚湧涌猶猷由ç¥�裕誘é�Šé‚‘郵雄èž�夕予余与誉輿é �å‚幼妖容庸æ�šæ�ºæ“�曜楊様洋溶熔用窯羊耀葉蓉è¦�謡踊é�¥é™½é¤Šæ…¾æŠ‘欲沃浴翌翼淀羅螺裸æ�¥èŽ±é ¼é›·æ´›çµ¡è�½é…ªä¹±å�µåµ�欄濫è—�è˜è¦§åˆ©å��å±¥æ�Žæ¢¨ç�†ç’ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢è£�è£¡é‡Œé›¢é™¸å¾‹çŽ‡ç«‹è‘ŽæŽ ç•¥åŠ‰æµ�溜ç�‰ç•™ç¡«ç²’隆竜é¾�侶慮旅虜了亮僚両凌寮料æ¢�涼猟療çžç¨œç³§è‰¯è«’é�¼é‡�é™µé ˜åŠ›ç·‘å€«åŽ˜æž—æ·‹ç‡�ç�³è‡¨è¼ªéš£é±—éºŸç‘ å¡�涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦æ´åˆ—劣烈裂廉æ�‹æ†�漣煉簾練è�¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è“®é€£éŒ¬å‘‚é¯æ«“炉賂路露労å©�廊弄朗楼榔浪æ¼�牢狼ç¯è€�è�¾è�‹éƒŽå…麓禄肋録論å€å’Œè©±æªè³„è„‡æƒ‘æž é·²äº™äº˜é°�è©«è—�蕨椀湾碗腕��������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弌ä¸�丕个丱丶丼丿乂乖乘亂亅豫亊舒å¼�äºŽäºžäºŸäº äº¢äº°äº³äº¶ä»Žä»�仄仆仂仗仞ä»ä»Ÿä»·ä¼‰ä½šä¼°ä½›ä½�佗佇佶侈ä¾�侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚ä¿�俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆å�ƒå�‡æœƒå�•å��å�ˆå�šå�–å�¬å�¸å‚€å‚šå‚…傴傲�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������僉僊傳僂僖僞僥åƒåƒ£åƒ®åƒ¹åƒµå„‰å„�儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉å†�å†‘å†“å†•å†–å†¤å†¦å†¢å†©å†ªå†«å†³å†±å†²å†°å†µå†½å‡…å‡‰å‡›å‡ è™•å‡©å‡å‡°å‡µå‡¾åˆ„刋刔刎刧刪刮刳刹å‰�剄剋剌剞剔剪剴剩剳剿剽åŠ�劔劒剱劈劑辨�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������辧劬åŠåŠ¼åŠµå‹�å‹�勗勞勣勦é£å‹ 勳勵勸勹匆匈甸åŒ�åŒ�åŒ�匕匚匣匯匱匳匸å�€å�†å�…丗å�‰å��凖å�žå�©å�®å¤˜å�»å�·åŽ‚åŽ–åŽ åŽ¦åŽ¥åŽ®åŽ°åŽ¶å�ƒç°’é›™å�Ÿæ›¼ç‡®å�®å�¨å�å�ºå��å�½å‘€å�¬å�å�¼å�®å�¶å�©å��呎å’�呵咎呟呱呷呰咒呻咀呶咄å’�咆哇咢咸咥咬哄哈咨�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫哂咤咾咼哘哥哦å”�唔哽哮å“哺哢唹啀啣啌售啜啅啖啗唸唳å•�喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎å™�ç‡Ÿå˜´å˜¶å˜²å˜¸å™«å™¤å˜¯å™¬å™ªåš†åš€åšŠåš åš”åš�嚥嚮嚶嚴囂嚼å›�囃囀囈囎囑囓囗囮囹圀囿圄圉�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������圈國åœ�圓團圖嗇圜圦圷圸å�Žåœ»å�€å��å�©åŸ€åžˆå�¡å�¿åž‰åž“åž åž³åž¤åžªåž°åŸƒåŸ†åŸ”åŸ’åŸ“å ŠåŸ–åŸ£å ‹å ™å �å¡²å ¡å¡¢å¡‹å¡°æ¯€å¡’å ½å¡¹å¢…å¢¹å¢Ÿå¢«å¢ºå£žå¢»å¢¸å¢®å£…å£“å£‘å£—å£™å£˜å£¥å£œå£¤å£Ÿå£¯å£ºå£¹å£»å£¼å£½å¤‚å¤Šå¤�夛梦夥夬å¤å¤²å¤¸å¤¾ç«’奕å¥�å¥Žå¥šå¥˜å¥¢å¥ å¥§å¥¬å¥©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������奸å¦�å¦�佞侫妣妲姆姨姜å¦�姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲å«�嬪嬶嬾åƒå…å€å‘å•åšå›å¥å©å°å³åµå¸æ–ˆåºå®€å®ƒå®¦å®¸å¯ƒå¯‡å¯‰å¯”å¯�寤實寢寞寥寫寰寶寳尅將專å°�å°“å° å°¢å°¨å°¸å°¹å±�屆屎屓�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å±�å±�å±å±¬å±®ä¹¢å±¶å±¹å²Œå²‘岔妛岫岻岶岼岷峅岾峇峙峩峽峺å³å¶Œå³ªå´‹å´•崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢å¶�嶬嶮嶽å¶�嶷嶼巉å·�å·“å·’å·–å·›å·«å·²å·µå¸‹å¸šå¸™å¸‘å¸›å¸¶å¸·å¹„å¹ƒå¹€å¹Žå¹—å¹”å¹Ÿå¹¢å¹¤å¹‡å¹µå¹¶å¹ºéº¼å¹¿åº å»�廂廈å»�å»��\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������廖廣å»�廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉å½�彜弋弑弖弩å¼å¼¸å½�彈彌彎弯彑彖彗彙彡å½å½³å½·å¾ƒå¾‚å½¿å¾Šå¾ˆå¾‘å¾‡å¾žå¾™å¾˜å¾ å¾¨å¾å¾¼å¿–忻忤忸忱å¿�悳忿怡æ� 怙æ€�怩怎怱怛怕怫怦æ€�怺æ�šæ��æ�ªæ�·æ�Ÿæ�Šæ�†æ��æ�£æ�ƒæ�¤æ�‚æ�¬æ�«æ�™æ‚�æ‚�惧悃悚�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‚„æ‚›æ‚–æ‚—æ‚’æ‚§æ‚‹æƒ¡æ‚¸æƒ æƒ“æ‚´å¿°æ‚½æƒ†æ‚µæƒ˜æ…�愕愆惶惷愀惴惺愃愡惻惱æ„�愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟æ…�慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹æ‡�懦懣懶懺懴懿懽懼懾戀戈戉æˆ�戌戔戛�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������戞戡截戮戰戲戳æ‰�æ‰Žæ‰žæ‰£æ‰›æ‰ æ‰¨æ‰¼æŠ‚æŠ‰æ‰¾æŠ’æŠ“æŠ–æ‹”æŠƒæŠ”æ‹—æ‹‘æŠ»æ‹�拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵æ��挾æ��æ�œæ��掖掎掀掫æ�¶æŽ£æŽ�掉掟掵æ�«æ�©æŽ¾æ�©æ�€æ�†æ�£æ�‰æ�’æ�¶æ�„æ�–æ�´æ�†æ�“æ�¦æ�¶æ”�æ�—æ�¨æ��摧摯摶摎攪撕撓撥撩撈撼�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ“šæ“’æ“…æ“‡æ’»æ“˜æ“‚æ“±æ“§èˆ‰æ“ æ“¡æŠ¬æ“£æ“¯æ”¬æ“¶æ“´æ“²æ“ºæ”€æ“½æ”˜æ”œæ”…æ”¤æ”£æ”«æ”´æ”µæ”·æ”¶æ”¸ç•‹æ•ˆæ•–æ••æ•�敘敞æ•�敲數斂斃變斛斟斫斷旃旆æ—�æ—„æ—Œæ—’æ—›æ—™æ— æ—¡æ—±æ�²æ˜Šæ˜ƒæ—»æ�³æ˜µæ˜¶æ˜´æ˜œæ™�晄晉æ™�晞æ™�晤晧晨晟晢晰暃暈暎暉暄暘æš�æ›�暹曉暾暼�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ›„æš¸æ›–æ›šæ› æ˜¿æ›¦æ›©æ›°æ›µæ›·æœ�朖朞朦朧霸朮朿朶æ��朸朷æ�†æ�žæ� æ�™æ�£æ�¤æž‰æ�°æž©æ�¼æ�ªæžŒæž‹æž¦æž¡æž…枷柯枴柬枳柩枸柤柞æŸ�æŸ¢æŸ®æž¹æŸŽæŸ†æŸ§æªœæ žæ¡†æ ©æ¡€æ¡�æ ²æ¡Žæ¢³æ «æ¡™æ¡£æ¡·æ¡¿æ¢Ÿæ¢�æ¢æ¢”æ¢�æ¢›æ¢ƒæª®æ¢¹æ¡´æ¢µæ¢ æ¢ºæ¤�æ¢�桾æ¤�棊椈棘椢椦棡椌æ£��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ£”æ£§æ£•æ¤¶æ¤’æ¤„æ£—æ££æ¤¥æ£¹æ£ æ£¯æ¤¨æ¤ªæ¤šæ¤£æ¤¡æ£†æ¥¹æ¥·æ¥œæ¥¸æ¥«æ¥”æ¥¾æ¥®æ¤¹æ¥´æ¤½æ¥™æ¤°æ¥¡æ¥žæ¥�æ¦�楪榲榮æ§�榿æ§�槓榾槎寨槊æ§�æ¦»æ§ƒæ¦§æ¨®æ¦‘æ¦ æ¦œæ¦•æ¦´æ§žæ§¨æ¨‚æ¨›æ§¿æ¬Šæ§¹æ§²æ§§æ¨…æ¦±æ¨žæ§æ¨”槫樊樒æ«�樣樓橄樌橲樶橸橇橢橙橦橈樸樢æª�æª�æª æª„æª¢æª£ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æª—è˜—æª»æ«ƒæ«‚æª¸æª³æª¬æ«žæ«‘æ«Ÿæªªæ«šæ«ªæ«»æ¬…è˜–æ«ºæ¬’æ¬–é¬±æ¬Ÿæ¬¸æ¬·ç›œæ¬¹é£®æ‡æƒæ‰æ�æ™æ”æ›æŸæ¡æ¸æ¹æ¿æ®€æ®„殃æ®�殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂æ²�沚æ²�沛汾汨汳沒æ²�泄泱泓沽泗泅æ³�沮沱沾�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沺泛泯泙泪洟è¡�æ´¶æ´«æ´½æ´¸æ´™æ´µæ´³æ´’æ´Œæµ£æ¶“æµ¤æµšæµ¹æµ™æ¶Žæ¶•æ¿¤æ¶…æ·¹æ¸•æ¸Šæ¶µæ·‡æ·¦æ¶¸æ·†æ·¬æ·žæ·Œæ·¨æ·’æ·…æ·ºæ·™æ·¤æ·•æ·ªæ·®æ¸æ¹®æ¸®æ¸™æ¹²æ¹Ÿæ¸¾æ¸£æ¹«æ¸«æ¹¶æ¹�渟湃渺湎渤滿æ¸�游溂溪溘滉溷滓溽溯滄溲滔滕æº�溥滂溟æ½�漑ç�Œæ»¬æ»¸æ»¾æ¼¿æ»²æ¼±æ»¯æ¼²æ»Œï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������漾漓滷澆潺潸æ¾�æ¾€æ½¯æ½›æ¿³æ½æ¾‚潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑ç€�ç€�濾瀛瀚潴ç€�瀘瀟瀰瀾瀲ç�‘ç�£ç‚™ç‚’炯烱炬炸炳炮烟烋çƒ�烙焉烽焜焙煥煕熈煦煢煌煖煬ç†�ç‡»ç†„ç†•ç†¨ç†¬ç‡—ç†¹ç†¾ç‡’ç‡‰ç‡”ç‡Žç‡ ç‡¬ç‡§ç‡µç‡¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������燹燿çˆ�çˆ�爛爨çˆçˆ¬çˆ°çˆ²çˆ»çˆ¼çˆ¿ç‰€ç‰†ç‰‹ç‰˜ç‰´ç‰¾çŠ‚çŠ�çŠ‡çŠ’çŠ–çŠ¢çŠ§çŠ¹çŠ²ç‹ƒç‹†ç‹„ç‹Žç‹’ç‹¢ç‹ ç‹¡ç‹¹ç‹·å€�猗猊猜猖çŒ�猴猯猩猥猾ç�Žç��默ç�—ç�ªç�¨ç�°ç�¸ç�µç�»ç�ºç�ˆç޳ç�ŽçŽ»ç�€ç�¥ç�®ç�žç’¢ç�…瑯ç�¥ç�¸ç�²ç�ºç‘•ç�¿ç‘Ÿç‘™ç‘�瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊ç“�ç“”ç�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç“ ç“£ç“§ç“©ç“®ç“²ç“°ç“±ç“¸ç“·ç”„ç”ƒç”…ç”Œç”Žç”�甕甓甞甦甬甼畄ç•�畊畉畛畆畚畩畤畧畫ç•畸當疆疇畴疊疉疂疔疚ç–�疥疣痂疳痃疵疽疸疼疱ç—�痊痒痙痣痞痾痿痼ç˜�痰痺痲痳瘋ç˜�ç˜‰ç˜Ÿç˜§ç˜ ç˜¡ç˜¢ç˜¤ç˜´ç˜°ç˜»ç™‡ç™ˆç™†ç™œç™˜ç™¡ç™¢ç™¨ç™©ç™ªç™§ç™¬ç™°ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂ç›�盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸ç�‡ç�šç�¨ç�«ç�›ç�¥ç�¿ç�¾ç�¹çžŽçž‹çž‘çž çžžçž°çž¶çž¹çž¿çž¼çž½çž»çŸ‡çŸ�çŸ—çŸšçŸœçŸ£çŸ®çŸ¼ç Œç ’ç¤¦ç 礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç£§ç£šç£½ç£´ç¤‡ç¤’ç¤‘ç¤™ç¤¬ç¤«ç¥€ç¥ ç¥—ç¥Ÿç¥šç¥•ç¥“ç¥ºç¥¿ç¦Šç¦�禧齋禪禮禳禹禺秉秕秧秬秡秣稈ç¨�ç¨˜ç¨™ç¨ ç¨Ÿç¦€ç¨±ç¨»ç¨¾ç¨·ç©ƒç©—ç©‰ç©¡ç©¢ç©©é¾�穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊ç«�ç«�竕竓站竚ç«�竡竢竦ç«ç«°ç¬‚ç¬�笊笆笳笘笙笞笵笨笶ç��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çºç¬„ç�笋çŒç…çµç¥ç´ç§ç°ç±ç¬ç®ç®�箘箟ç®�箜箚箋箒ç®�ç�箙篋ç¯�篌ç¯�箴篆ç¯�ç¯©ç°‘ç°”ç¯¦ç¯¥ç± ç°€ç°‡ç°“ç¯³ç¯·ç°—ç°�篶簣簧簪簟簷簫簽籌籃籔ç±�ç±€ç±�籘籟籤籖籥籬籵粃ç²�粤ç²ç²¢ç²«ç²¡ç²¨ç²³ç²²ç²±ç²®ç²¹ç²½ç³€ç³…糂糘糒糜糢鬻糯糲糴糶糺紆�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮çµ�絣經綉絛ç¶�絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘ç·�緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧ç¹�繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒çº�纓纔纖纎纛纜缸缺�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������罅罌ç½�罎ç½�ç½‘ç½•ç½”ç½˜ç½Ÿç½ ç½¨ç½©ç½§ç½¸ç¾‚ç¾†ç¾ƒç¾ˆç¾‡ç¾Œç¾”ç¾žç¾�羚羣羯羲羹羮羶羸è±ç¿…翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻è�Šè�†è�’è�˜è�šè�Ÿè�¢è�¨è�³è�²è�°è�¶è�¹è�½è�¿è‚„肆肅肛肓肚è‚å†�肬胛胥胙èƒ�胄胚胖脉胯胱脛脩脣脯腋�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éš‹è…†è„¾è…“è…‘èƒ¼è…±è…®è…¥è…¦è…´è†ƒè†ˆè†Šè†€è†‚è† è†•è†¤è†£è…Ÿè†“è†©è†°è†µè†¾è†¸è†½è‡€è‡‚è†ºè‡‰è‡�è‡‘è‡™è‡˜è‡ˆè‡šè‡Ÿè‡ è‡§è‡ºè‡»è‡¾èˆ�舂舅與舊èˆ�èˆ�舖舩舫舸舳艀艙艘è‰�艚艟艤艢艨艪艫舮艱艷艸艾èŠ�芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������茵茴茖茲茱è�€èŒ¹è��è�…茯茫茗茘莅莚莪莟莢莖茣莎莇莊è�¼è޵è�³è�µèŽ èŽ‰èŽ¨è�´è�“è�«è�Žè�½è�ƒè�˜è�‹è��è�·è�‡è� è�²è��è�¢è� 莽è�¸è”†è�»è‘è�ªè�¼è•šè’„è‘·è‘«è’葮蒂葩葆è�¬è‘¯è‘¹è�µè“Šè‘¢è’¹è’¿è’Ÿè“™è“�蒻蓚è“�è“�蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è•�蘂蕋蕕薀薤薈薑薊薨è•薔薛藪薇薜蕷蕾è–�藉薺è—�è–¹è—�è—•è—�藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿è™�ä¹•è™”è™Ÿè™§è™±èš“èš£èš©èšªèš‹èšŒèš¶èš¯è›„è›†èš°è›‰è £èš«è›”è›žè›©è›¬è›Ÿè››è›¯èœ’èœ†èœˆèœ€èœƒè›»èœ‘èœ‰èœ�蛹蜊蜴蜿蜷蜻蜥蜩蜚è� è�Ÿè�¸è�Œè�Žè�´è�—è�¨è�®è�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�“è�£è�ªè …螢螟螂螯蟋螽蟀èŸ�é›–èž«èŸ„èž³èŸ‡èŸ†èž»èŸ¯èŸ²èŸ è �è �èŸ¾èŸ¶èŸ·è ŽèŸ’è ‘è –è •è ¢è ¡è ±è ¶è ¹è §è »è¡„è¡‚è¡’è¡™è¡žè¡¢è¡«è¢�衾袞衵衽袵衲袂袗袒袮袙袢è¢�袤袰袿袱裃裄裔裘裙è£�裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫è¥�襄褻褶褸襌è¤�è¥ è¥žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������襦襤è¥è¥ªè¥¯è¥´è¥·è¥¾è¦ƒè¦ˆè¦Šè¦“覘覡覩覦覬覯覲覺覽覿觀觚觜è§�觧觴觸訃訖è¨�訌訛è¨�訥訶è©�詛詒詆詈詼è©è©¬è©¢èª…誂誄誨誡誑誥誦誚誣諄è«�è«‚è«šè««è«³è«§è«¤è«±è¬”è« è«¢è«·è«žè«›è¬Œè¬‡è¬šè«¡è¬–è¬�è¬—è¬ è¬³éž«è¬¦è¬«è¬¾è¬¨è�èŒè�èŽè‰è–è›èšè«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������èŸè¬è¯è´è½è®€è®Œè®Žè®’讓讖讙讚谺è±�谿豈豌豎è±�豕豢豬豸豺貂貉貅貊è²�貎貔豼貘æˆ�è²è²ªè²½è²²è²³è²®è²¶è³ˆè³�賤賣賚賽賺賻贄贅贊贇è´�è´�è´�齎贓è³�贔贖赧èµèµ±èµ³è¶�趙跂趾趺è·�跚跖跌跛跋跪跫跟跣跼踈踉跿è¸�踞è¸�踟蹂踵踰踴蹊�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蹇蹉蹌è¹�è¹ˆè¹™è¹¤è¹ è¸ªè¹£è¹•è¹¶è¹²è¹¼èº�躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣è¾è¾¯è¾·è¿šè¿¥è¿¢è¿ªè¿¯é‚‡è¿´é€…迹迺逑逕逡é€�逞逖逋逧逶逵逹迸�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é��é��é�‘é�’逎é�‰é€¾é�–é�˜é�žé�¨é�¯é�¶éš¨é�²é‚‚é�½é‚�邀邊邉é‚�邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀é‡�釉釋é‡�釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋é‰�銜銖銓銛鉚é‹�銹銷鋩éŒ�鋺é�„錮�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻é�œé� é�¼é�®é�–鎰鎬éŽéŽ”éŽ¹é�–é�—é�¨é�¥é�˜é�ƒé��é��é�ˆé�¤é�šé�”é�“é�ƒé�‡é��é�¶é�«é�µé�¡é�ºé‘�é‘’é‘„é‘›é‘ é‘¢é‘žé‘ªéˆ©é‘°é‘µé‘·é‘½é‘šé‘¼é‘¾é’�é‘¿é–‚é–‡é–Šé–”é––é–˜é–™é– é–¨é–§é–閼閻閹閾闊濶闃é—�闌闕闔闖關闡闥闢阡阨阮阯陂陌é™�陋陷陜陞�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é™�陟陦陲陬éš�隘隕隗險隧隱隲隰隴隶隸隹雎雋雉é›�è¥�雜éœ�雕雹霄霆霈霓霎霑éœ�霖霙霤霪霰霹霽霾é�„é�†é�ˆé�‚é�‰é�œé� é�¤é�¦é�¨å‹’é�«é�±é�¹éž…é�¼éž�é�ºéž†éž‹éž�éž�鞜鞨鞦鞣鞳鞴韃韆韈韋韜éŸé½�韲竟韶韵é �é Œé ¸é ¤é ¡é ·é ½é¡†é¡�顋顫顯顰�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡é¤�é¤žé¤¤é¤ é¤¬é¤®é¤½é¤¾é¥‚é¥‰é¥…é¥�饋饑饒饌饕馗馘馥é¦é¦®é¦¼é§Ÿé§›é§�駘駑é§é§®é§±é§²é§»é§¸é¨�é¨�騅駢騙騫騷驅驂驀驃騾驕é©�驛驗驟驢驥驤驩驫驪éªéª°éª¼é«€é«�髑髓體髞髟髢髣髦髯髫髮髴髱髷�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲é„éƒé�é�éŽé‘é˜é´é®“é®ƒé®‘é®–é®—é®Ÿé® é®¨é®´é¯€é¯Šé®¹é¯†é¯�é¯‘é¯’é¯£é¯¢é¯¤é¯”é¯¡é°ºé¯²é¯±é¯°é°•é°”é°‰é°“é°Œé°†é°ˆé°’é°Šé°„é°®é°›é°¥é°¤é°¡é°°é±‡é°²é±†é°¾é±šé± é±§é±¶é±¸é³§é³¬é³°é´‰é´ˆé³«é´ƒé´†é´ªé´¦é¶¯é´£é´Ÿéµ„é´•é´’éµ�鴿鴾鵆鵈�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������éµ�鵞鵤鵑éµ�鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄é·�鶻鶸鶺鷆é·�鷂鷙鷓鷸鷦é·é·¯é·½é¸šé¸›é¸žé¹µé¹¹é¹½éº�麈麋麌麒麕麑éº�麥麩麸麪éºé�¡é»Œé»Žé»�é»�黔黜點é»�é» é»¥é»¨é»¯é»´é»¶é»·é»¹é»»é»¼é»½é¼‡é¼ˆçš·é¼•é¼¡é¼¬é¼¾é½Šé½’é½”é½£é½Ÿé½ é½¡é½¦é½§é½¬é½ªé½·é½²é½¶é¾•é¾œé¾ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ¯æ§‡é�™ç‘¤å‡œç†™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纊褜é�ˆéŠˆè“œä¿‰ç‚»æ˜±æ£ˆé‹¹æ›»å½…ä¸¨ä»¡ä»¼ä¼€ä¼ƒä¼¹ä½–ä¾’ä¾Šä¾šä¾”ä¿�å�€å€¢ä¿¿å€žå�†å�°å�‚傔僴僘兊兤å†�冾凬刕劜劦勀勛匀匇匤å�²åŽ“åŽ²å��﨎咜咊咩哿喆å�™å�¥åž¬åŸˆåŸ‡ï¨�ï¨�增墲夋奓奛å¥�奣妤妺å–寀甯寘寬尞岦岺峵崧嵓﨑嵂åµå¶¸å¶¹å·�弡弴彧德�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"�������������������������������������������������������������������ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å¿žæ��æ‚…æ‚Šæƒžæƒ•æ„ æƒ²æ„‘æ„·æ„°æ†˜æˆ“æŠ¦æ�µæ‘ æ’�æ“Žæ•Žæ˜€æ˜•æ˜»æ˜‰æ˜®æ˜žæ˜¤æ™¥æ™—æ™™ï¨’æ™³æš™æš æš²æš¿æ›ºæœŽï¤©æ�¦æž»æ¡’柀æ �æ¡„æ£�﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬æ·�淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫ç„�焄煜煆煇凞ç‡�燾犱�\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������犾猤猪ç�·ç޽ç�‰ç�–ç�£ç�’ç�‡ç�µç�¦ç�ªç�©ç�®ç‘¢ç’‰ç’Ÿç”�畯皂皜皞皛皦益ç�†åŠ¯ç ¡ç¡Žç¡¤ç¡ºç¤°ï¨˜ï¨™ï¨šç¦”ï¨›ç¦›ç«‘ç«§ï¨œç««ç®žï¨�çµˆçµœç¶·ç¶ ç·–ç¹’ç½‡ç¾¡ï¨žèŒ�è�¢è�¿è�‡è�¶è‘ˆè’´è•“è•™è•«ï¨Ÿè–°ï¨ ï¨¡è ‡è£µè¨’è¨·è©¹èª§èª¾è«Ÿï¨¢è«¶è“è¿è³°è³´è´’赶﨣è»�﨤逸é�§éƒžï¨¦é„•鄧釚�\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������釗釞é‡é‡®é‡¤é‡¥éˆ†éˆ�鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙é‹�ï¨§é‹•é‹ é‹“éŒ¥éŒ¡é‹»ï¨¨éŒžé‹¿éŒ�錂é�°é�—鎤é�†é�žé�¸é�±é‘…鑈閒隆﨩éš�隯霳霻é�ƒé��é��é�‘é�•顗顥飯飼餧館馞驎髙髜éµé²é®�鮱鮻鰀鵰鵫ï¨é¸™é»‘��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�¦'"�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[51936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"����������������������������������������������������������������丂丄丅丆ä¸�ä¸’ä¸—ä¸Ÿä¸ ä¸¡ä¸£ä¸¦ä¸©ä¸®ä¸¯ä¸±ä¸³ä¸µä¸·ä¸¼ä¹€ä¹�乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬ä¹ä¹®ä¹¯ä¹²ä¹´ä¹µä¹¶ä¹·ä¹¸ä¹¹ä¹ºä¹»ä¹¼ä¹½ä¹¿äº€äº�亂亃亄亅亇亊�äº�亖亗亙亜äº�亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌ä»�ä»�ä»’ä»šä»›ä»œä» ä»¢ä»¦ä»§ä»©ä»ä»®ä»¯ä»±ä»´ä»¸ä»¹ä»ºä»¼ä»¾ä¼€ä¼‚伃伄伅伆伇伈伋伌伒伓伔伕伖伜ä¼�伡伣伨伩伬ä¼ä¼®ä¼±ä¼³ä¼µä¼·ä¼¹ä¼»ä¼¾ä¼¿ä½€ä½�佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫ä½ä½®ä½±ä½²ä½µä½·ä½¸ä½¹ä½ºä½½ä¾€ä¾�侂侅來侇侊侌侎ä¾�侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"����������������������������������������������������������������侤侫ä¾ä¾°ä¾±ä¾²ä¾³ä¾´ä¾¶ä¾·ä¾¸ä¾¹ä¾ºä¾»ä¾¼ä¾½ä¾¾ä¿€ä¿�係俆俇俈俉俋俌ä¿�ä¿’ä¿“ä¿”ä¿•ä¿–ä¿™ä¿›ä¿ ä¿¢ä¿¤ä¿¥ä¿§ä¿«ä¿¬ä¿°ä¿²ä¿´ä¿µä¿¶ä¿·ä¿¹ä¿»ä¿¼ä¿½ä¿¿å€€å€�倂倃倄倅倆倇倈倉倊�個倎å€�們倓倕倖倗倛å€�å€žå€ å€¢å€£å€¤å€§å€«å€¯å€°å€±å€²å€³å€´å€µå€¶å€·å€¸å€¹å€»å€½å€¿å�€å��å�‚å�„å�…å�†å�‰å�Šå�‹å��å��å�‘å�’å�“å�”å�–å�—å�˜å�™å�›å��å�žå�Ÿå� å�¡å�¢å�£å�¤å�¦å�§å�¨å�©å�ªå�«å�å�®å�¯å�°å�±å�²å�³å�´å�µå�¸å�¹å�ºå�¼å�½å‚�傂傃傄傆傇傉傊傋傌傎å‚�å‚�傑傒傓傔傕傖傗傘備傚傛傜å‚�å‚žå‚Ÿå‚ å‚¡å‚¢å‚¤å‚¦å‚ªå‚«å‚傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������傽傾傿僀åƒ�僂僃僄僅僆僇僈僉僊僋僌åƒ�僎åƒ�僑僒僓僔僕僗僘僙僛僜åƒ�åƒžåƒŸåƒ åƒ¡åƒ¢åƒ£åƒ¤åƒ¥åƒ¨åƒ©åƒªåƒ«åƒ¯åƒ°åƒ±åƒ²åƒ´åƒ¶åƒ·åƒ¸åƒ¹åƒºåƒ¼åƒ½åƒ¾åƒ¿å„€å„�儂儃億儅儈�儉儊儌å„�儎å„�å„�儑儓儔儕儖儗儘儙儚儛儜å„�å„žå„Ÿå„ å„¢å„£å„¤å„¥å„¦å„§å„¨å„©å„ªå„«å„¬å„儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎å…�å…�兒兓兗兘兙兛å…�å…žå…Ÿå… å…¡å…£å…¤å…¦å…§å…©å…ªå…¯å…²å…ºå…¾å…¿å†ƒå†„å††å†‡å†Šå†‹å†Žå†�å†�冑冓冔冘冚å†�冞冟冡冣冦冧冨冩冪å†å†®å†´å†¸å†¹å†ºå†¾å†¿å‡�凂凃凅凈凊å‡�凎å‡�凒凓凔凕凖凗�\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌åˆ�åˆ�刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎å‰�剒剓剕剗剘�剙剚剛å‰�å‰Ÿå‰ å‰¢å‰£å‰¤å‰¦å‰¨å‰«å‰¬å‰å‰®å‰°å‰±å‰³å‰´å‰µå‰¶å‰·å‰¸å‰¹å‰ºå‰»å‰¼å‰¾åŠ€åŠƒåŠ„åŠ…åŠ†åŠ‡åŠ‰åŠŠåŠ‹åŠŒåŠ�劎åŠ�劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀å‹�勂勄勅勆勈勊勌å‹�勎å‹�勑勓勔動勗務勚勛勜å‹�å‹žå‹ å‹¡å‹¢å‹£å‹¥å‹¦å‹§å‹¨å‹©å‹ªå‹«å‹¬å‹å‹®å‹¯å‹±å‹²å‹³å‹´å‹µå‹¶å‹·å‹¸å‹»å‹¼å‹½åŒ�匂匃匄匇匉匊匋匌匎�\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬åŒåŒ¯åŒ°åŒ±åŒ²åŒ³åŒ´åŒµåŒ¶åŒ·åŒ¸åŒ¼åŒ½å�€å�‚å�„å�†å�‹å�Œå��å��å�”å�˜å�™å�›å��å�¥å�¨å�ªå�¬å�å�²å�¶å�¹å�»å�¼å�½å�¾åŽ€åŽ�厃厇厈厊厎åŽ��åŽ�åŽ‘åŽ’åŽ“åŽ”åŽ–åŽ—åŽ™åŽ›åŽœåŽžåŽ åŽ¡åŽ¤åŽ§åŽªåŽ«åŽ¬åŽåŽ¯åŽ°åŽ±åŽ²åŽ³åŽ´åŽµåŽ·åŽ¸åŽ¹åŽºåŽ¼åŽ½åŽ¾å�€å�ƒå�„å�…å�†å�‡å�Žå��å��å�’å�“å�•å�šå�œå��å�žå�¡å�¢å�§å�´å�ºå�¾å�¿å�€å�‚å�…å�‡å�‹å�”å�˜å�™å�šå�œå�¢å�¤å�¥å�ªå�°å�³å�¶å�·å�ºå�½å�¿å‘�呂呄呅呇呉呌å‘�呎å‘�呑呚å‘�å‘žå‘Ÿå‘ å‘¡å‘£å‘¥å‘§å‘©å‘ªå‘«å‘¬å‘呮呯呰呴呹呺呾呿å’�咃咅咇咈咉咊å’�å’‘å’“å’—å’˜å’œå’žå’Ÿå’ å’¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å’¢å’¥å’®å’°å’²å’µå’¶å’·å’¹å’ºå’¼å’¾å“ƒå“…å“Šå“‹å“–å“˜å“›å“ å“¡å“¢å“£å“¤å“«å“¬å“¯å“°å“±å“´å“µå“¶å“·å“¸å“¹å“»å“¾å”€å”‚å”ƒå”„å”…å”ˆå”Šå”‹å”Œå”�唎唒唓唕唖唗唘唙唚唜å”�唞唟唡唥唦�唨唩唫å”唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌å•�啎å•�啑啒啓啔啗啘啙啚啛å•�å•žå•Ÿå• å•¢å•£å•¨å•©å•«å•¯å•°å•±å•²å•³å•´å•¹å•ºå•½å•¿å–…å–†å–Œå–�å–Žå–�å–’å–“å–•å––å–—å–šå–›å–žå– å–¡å–¢å–£å–¤å–¥å–¦å–¨å–©å–ªå–«å–¬å–單喯喰喲喴営喸喺喼喿嗀å—�嗂嗃嗆嗇嗈嗊嗋嗎å—�å—�å—•å——å—˜å—™å—šå—›å—žå— å—¢å—§å—©å—嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋å˜�å˜�嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜å˜�å˜ å˜¡å˜¢å˜¥å˜¦å˜¨å˜©å˜ªå˜«å˜®å˜¯å˜°å˜³å˜µå˜·å˜¸å˜ºå˜¼å˜½å˜¾å™€å™�噂噃噄噅噆噇噈噉噊噋å™�å™�噑噒噓噕噖噚噛å™�å™žå™Ÿå™ å™¡ï¿½å™£å™¥å™¦å™§å™å™®å™¯å™°å™²å™³å™´å™µå™·å™¸å™¹å™ºå™½å™¾å™¿åš€åš�嚂嚃嚄嚇嚈嚉嚊嚋嚌åš�åš�嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜åš�åšžåšŸåš åš¡åš¢åš¤åš¥åš¦åš§åš¨åš©åšªåš«åš¬åšåš®åš°åš±åš²åš³åš´åšµåš¶åš¸åš¹åšºåš»åš½åš¾åš¿å›€å›�囂囃囄囅囆囇囈囉囋囌å›�囎å›�å›�囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀åœ�圂圅圇國圌åœ�圎åœ�åœ�圑�\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛åœ�åœžåœ åœ¡åœ¢åœ¤åœ¥åœ¦åœ§åœ«åœ±åœ²åœ´åœµåœ¶åœ·åœ¸åœ¼åœ½åœ¿å��å�ƒå�„å�…å�†å�ˆå�‰å�‹å�’å�“å�”å�•å�–å�˜å�™å�¢å�£å�¥å�§å�¬å�®å�°å�±å�²å�´å�µå�¸å�¹å�ºå�½å�¾å�¿åž€ï¿½åž�垇垈垉垊åž�垎åž�åž�垑垔垕垖垗垘垙垚垜åž�垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀åŸ�埄埅埆埇埈埉埊埌åŸ�åŸ�埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿å �å ƒå „å …å ˆå ‰å Šå Œå Žå �å �å ’å “å ”å –å —å ˜å šå ›å œå �å Ÿå ¢å £å ¥å ¦å §å ¨å ©å «å ¬å å ®å ¯å ±å ²å ³å ´å ¶å ·å ¸å ¹å ºå »å ¼å ½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ¾å ¿å¡€å¡�塂塃塅塆塇塈塉塊塋塎å¡�å¡�塒塓塕塖塗塙塚塛塜å¡�å¡Ÿå¡ å¡¡å¡¢å¡£å¡¤å¡¦å¡§å¡¨å¡©å¡ªå¡å¡®å¡¯å¡°å¡±å¡²å¡³å¡´å¡µå¡¶å¡·å¡¸å¡¹å¡ºå¡»å¡¼å¡½å¡¿å¢‚墄墆墇墈墊墋墌�å¢�墎å¢�å¢�墑墔墕墖増墘墛墜å¢�å¢ å¢¡å¢¢å¢£å¢¤å¢¥å¢¦å¢§å¢ªå¢«å¢¬å¢å¢®å¢¯å¢°å¢±å¢²å¢³å¢´å¢µå¢¶å¢·å¢¸å¢¹å¢ºå¢»å¢½å¢¾å¢¿å£€å£‚壃壄壆壇壈壉壊壋壌å£�壎å£�å£�壒壓壔壖壗壘壙壚壛壜å£�å£žå£Ÿå£ å£¡å£¢å££å£¥å£¦å£§å£¨å£©å£ªå£å£¯å£±å£²å£´å£µå£·å£¸å£ºå£»å£¼å£½å£¾å£¿å¤€å¤�夃夅夆夈変夊夋夌夎å¤�夑夒夓夗夘夛å¤�å¤žå¤ å¤¡å¤¢å¤£å¤¦å¤¨å¤¬å¤°å¤²å¤³å¤µå¤¶å¤»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌å¥�å¥�奒奓奙奛奜å¥�奞奟奡奣奤奦奧奨奩奪奫奬å¥å¥®å¥¯å¥°å¥±å¥²å¥µå¥·å¥ºå¥»å¥¼å¥¾å¥¿å¦€å¦…妉妋妌妎å¦�å¦�妑妔妕妘妚妛妜å¦�å¦Ÿå¦ å¦¡å¦¢å¦¦ï¿½å¦§å¦¬å¦å¦°å¦±å¦³å¦´å¦µå¦¶å¦·å¦¸å¦ºå¦¼å¦½å¦¿å§€å§�姂姃姄姅姇姈姉姌å§�å§Žå§�å§•å§–å§™å§›å§žå§Ÿå§ å§¡å§¢å§¤å§¦å§§å§©å§ªå§«å§å§®å§¯å§°å§±å§²å§³å§´å§µå§¶å§·å§¸å§ºå§¼å§½å§¾å¨€å¨‚娊娋å¨�娎å¨�å¨�娒娔娕娖娗娙娚娛å¨�娞娡娢娤娦娧娨娪娫娬å¨å¨®å¨¯å¨°å¨³å¨µå¨·å¨¸å¨¹å¨ºå¨»å¨½å¨¾å¨¿å©�婂婃婄婅婇婈婋婌å©�婎å©�å©�婑婒婓婔婖婗婘婙婛婜å©�å©žå©Ÿå© ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬å©å©®å©¯å©°å©±å©²å©³å©¸å©¹å©»å©¼å©½å©¾åª€åª�媂媃媄媅媆媇媈媉媊媋媌åª�媎åª�åª�媑媓媔媕媖媗媘媙媜åª�åªžåªŸåª åª¡åª¢åª£åª¤åª¥åª¦åª§åª¨åª©åª«åª¬ï¿½åªåª®åª¯åª°åª±åª´åª¶åª·åª¹åªºåª»åª¼åª½åª¿å«€å«ƒå«„嫅嫆嫇嫈嫊嫋å«�嫎å«�å«�嫑嫓嫕嫗嫙嫚嫛å«�嫞嫟嫢嫤嫥嫧嫨嫪嫬å«å«®å«¯å«°å«²å«³å«´å«µå«¶å«·å«¸å«¹å«ºå«»å«¼å«½å«¾å«¿å¬€å¬�嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌å¬�嬎å¬�å¬�嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜å¬�å¬žå¬Ÿå¬ å¬¡å¬¢å¬£å¬¤å¬¥å¬¦å¬§å¬¨å¬©å¬ªå¬«å¬¬å¬å¬®å¬¯å¬°å¬±å¬³å¬µå¬¶å¬¸å¬¹å¬ºå¬»å¬¼å¬½å¬¾å¬¿å�å‚åƒå„å…å†å‡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������åˆå‰åŠå‹åŒå�åŽå�å’å–åžå å¡å§å¨å«åå®å¯å²å´å¶å·å¸å¹å»å¼å¾å¿å®‚宆宊å®�宎å®�宑宒宔宖実宧宨宩宬å®å®®å®¯å®±å®²å®·å®ºå®»å®¼å¯€å¯�寃寈寉寊寋å¯�寎å¯�ï¿½å¯‘å¯”å¯•å¯–å¯—å¯˜å¯™å¯šå¯›å¯œå¯ å¯¢å¯£å¯¦å¯§å¯©å¯ªå¯«å¯¬å¯å¯¯å¯±å¯²å¯³å¯´å¯µå¯¶å¯·å¯½å¯¾å°€å°‚尃尅將專尋尌å°�å°Žå°�å°’å°“å°—å°™å°›å°žå°Ÿå° å°¡å°£å°¦å°¨å°©å°ªå°«å°å°®å°¯å°°å°²å°³å°µå°¶å°·å±ƒå±„屆屇屌å±�屒屓屔屖屗屘屚屛屜å±�屟屢層屧屨屩屪屫屬å±å±°å±²å±³å±´å±µå±¶å±·å±¸å±»å±¼å±½å±¾å²€å²ƒå²„岅岆岇岉岊岋岎å²�岒岓岕å²�å²žå²Ÿå² å²¡å²¤å²¥å²¦å²§å²¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌å³�峎å³�å³�峑峓峔峕峖峗峘峚峛峜å³�å³žå³Ÿå³ å³¢å³£å³§å³©å³«å³¬å³®å³¯å³±å³²å³³å³´å³µå³¶å³·å³¸å³¹å³ºå³¼å³½å³¾å³¿å´€ï¿½å´�崄崅崈崉崊崋崌å´�å´�å´�崑崒崓崕崗崘崙崚崜å´�å´Ÿå´ å´¡å´¢å´£å´¥å´¨å´ªå´«å´¬å´¯å´°å´±å´²å´³å´µå´¶å´·å´¸å´¹å´ºå´»å´¼å´¿åµ€åµ�嵂嵃嵄嵅嵆嵈嵉åµ�嵎åµ�åµ�åµ‘åµ’åµ“åµ”åµ•åµ–åµ—åµ™åµšåµœåµžåµŸåµ åµ¡åµ¢åµ£åµ¤åµ¥åµ¦åµ§åµ¨åµªåµåµ®åµ°åµ±åµ²åµ³åµµåµ¶åµ·åµ¸åµ¹åµºåµ»åµ¼åµ½åµ¾åµ¿å¶€å¶�嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌å¶�å¶Žå¶�å¶�å¶‘å¶’å¶“å¶”å¶•å¶–å¶—å¶˜å¶šå¶›å¶œå¶žå¶Ÿå¶ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬å¶å¶®å¶¯å¶°å¶±å¶²å¶³å¶´å¶µå¶¶å¶¸å¶¹å¶ºå¶»å¶¼å¶½å¶¾å¶¿å·€å·�巂巃巄巆巇巈巉巊巋巌巎å·�å·�å·‘å·’å·“å·”å·•å·–å·—å·˜å·™å·šå·œå·Ÿå· å·£å·¤å·ªå·¬å·ï¿½å·°å·µå·¶å·¸å·¹å·ºå·»å·¼å·¿å¸€å¸„帇帉帊帋å¸�å¸Žå¸’å¸“å¸—å¸žå¸Ÿå¸ å¸¡å¸¢å¸£å¸¤å¸¥å¸¨å¸©å¸ªå¸«å¸¬å¸¯å¸°å¸²å¸³å¸´å¸µå¸¶å¸¹å¸ºå¸¾å¸¿å¹€å¹�幃幆幇幈幉幊幋å¹�幎å¹�å¹�幑幒幓幖幗幘幙幚幜å¹�å¹Ÿå¹ å¹£å¹¤å¹¥å¹¦å¹§å¹¨å¹©å¹ªå¹«å¹¬å¹å¹®å¹¯å¹°å¹±å¹µå¹·å¹¹å¹¾åº�庂広庅庈庉庌åº�庎庒庘庛åº�庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀å»�廂廃廄廅�\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������廆廇廈廋廌å»�廎å»�å»�廔廕廗廘廙廚廜å»�å»žå»Ÿå» å»¡å»¢å»£å»¤å»¥å»¦å»§å»©å»«å»¬å»å»®å»¯å»°å»±å»²å»³å»µå»¸å»¹å»»å»¼å»½å¼…弆弇弉弌å¼�弎å¼�弒弔弖弙弚弜å¼�弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿å½�彂彃彄彅彆彇彈彉彊彋彌å½�彎å½�å½‘å½”å½™å½šå½›å½œå½žå½Ÿå½ å½£å½¥å½§å½¨å½«å½®å½¯å½²å½´å½µå½¶å½¸å½ºå½½å½¾å½¿å¾ƒå¾†å¾�徎å¾�徑従徔徖徚徛å¾�å¾žå¾Ÿå¾ å¾¢å¾£å¾¤å¾¥å¾¦å¾§å¾©å¾«å¾¬å¾¯å¾°å¾±å¾²å¾³å¾´å¾¶å¾¸å¾¹å¾ºå¾»å¾¾å¾¿å¿€å¿�忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������怈怉怋怌æ€�æ€‘æ€“æ€—æ€˜æ€šæ€žæ€Ÿæ€¢æ€£æ€¤æ€¬æ€æ€®æ€°æ€±æ€²æ€³æ€´æ€¶æ€·æ€¸æ€¹æ€ºæ€½æ€¾æ�€æ�„æ�…æ�†æ�‡æ�ˆæ�‰æ�Šæ�Œæ�Žæ��æ�‘æ�“æ�”æ�–æ�—æ�˜æ�›æ�œæ�žæ�Ÿæ� æ�¡æ�¥æ�¦æ�®æ�±æ�²æ�´æ�µæ�·æ�¾æ‚€ï¿½æ‚�悂悅悆悇悈悊悋悎æ‚�æ‚�悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀æƒ�惂惃惄惇惈惉惌æƒ�惎æƒ�æƒ�惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌æ„�愑愒愓愔愖愗愘愙愛愜æ„�æ„žæ„¡æ„¢æ„¥æ„¨æ„©æ„ªæ„¬æ„æ„®æ„¯æ„°æ„±æ„²æ„³æ„´æ„µæ„¶æ„·æ„¸æ„¹æ„ºæ„»æ„¼æ„½æ„¾æ…€æ…�慂慃慄慅慆�\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������慇慉態æ…�æ…�æ…�æ…’æ…“æ…”æ…–æ…—æ…˜æ…™æ…šæ…›æ…œæ…žæ…Ÿæ… æ…¡æ…£æ…¤æ…¥æ…¦æ…©æ…ªæ…«æ…¬æ…æ…®æ…¯æ…±æ…²æ…³æ…´æ…¶æ…¸æ…¹æ…ºæ…»æ…¼æ…½æ…¾æ…¿æ†€æ†�憂憃憄憅憆憇憈憉憊憌æ†�æ†�æ†�æ†‘æ†’æ†“æ†•ï¿½æ†–æ†—æ†˜æ†™æ†šæ†›æ†œæ†žæ†Ÿæ† æ†¡æ†¢æ†£æ†¤æ†¥æ†¦æ†ªæ†«æ†æ†®æ†¯æ†°æ†±æ†²æ†³æ†´æ†µæ†¶æ†¸æ†¹æ†ºæ†»æ†¼æ†½æ†¿æ‡€æ‡�懃懄懅懆懇應懌æ‡�懎æ‡�æ‡�懓懕懖懗懘懙懚懛懜æ‡�æ‡žæ‡Ÿæ‡ æ‡¡æ‡¢æ‡£æ‡¤æ‡¥æ‡§æ‡¨æ‡©æ‡ªæ‡«æ‡¬æ‡æ‡®æ‡¯æ‡°æ‡±æ‡²æ‡³æ‡´æ‡¶æ‡·æ‡¸æ‡¹æ‡ºæ‡»æ‡¼æ‡½æ‡¾æˆ€æˆ�戂戃戄戅戇戉戓戔戙戜æˆ�æˆžæˆ æˆ£æˆ¦æˆ§æˆ¨æˆ©æˆ«æˆæˆ¯æˆ°æˆ±æˆ²æˆµæˆ¶æˆ¸æˆ¹æˆºæˆ»æˆ¼æ‰‚扄扅扆扊�\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������æ‰�æ‰�払扖扗扙扚扜æ‰�æ‰žæ‰Ÿæ‰ æ‰¡æ‰¢æ‰¤æ‰¥æ‰¨æ‰±æ‰²æ‰´æ‰µæ‰·æ‰¸æ‰ºæ‰»æ‰½æŠ�抂抃抅抆抇抈抋抌æŠ�抎æŠ�æŠ�抔抙抜æŠ�æŠžæŠ£æŠ¦æŠ§æŠ©æŠªæŠæŠ®æŠ¯æŠ°æŠ²æŠ³æŠ´æŠ¶æŠ·æŠ¸æŠºæŠ¾æ‹€æ‹��拃拋æ‹�æ‹‘æ‹•æ‹�æ‹žæ‹ æ‹¡æ‹¤æ‹ªæ‹«æ‹°æ‹²æ‹µæ‹¸æ‹¹æ‹ºæ‹»æŒ€æŒƒæŒ„æŒ…æŒ†æŒŠæŒ‹æŒŒæŒ�æŒ�æŒ�æŒ’æŒ“æŒ”æŒ•æŒ—æŒ˜æŒ™æŒœæŒ¦æŒ§æŒ©æŒ¬æŒæŒ®æŒ°æŒ±æŒ³æŒ´æŒµæŒ¶æŒ·æŒ¸æŒ»æŒ¼æŒ¾æŒ¿æ�€æ��æ�„æ�‡æ�ˆæ�Šæ�‘æ�’æ�“æ�”æ�–æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ� æ�¤æ�¥æ�¦æ�¨æ�ªæ�«æ�¬æ�¯æ�°æ�²æ�³æ�´æ�µæ�¸æ�¹æ�¼æ�½æ�¾æ�¿æŽ�掃掄掅掆掋æŽ�掑掓掔掕掗掙掚掛掜æŽ�掞掟採掤掦掫掯掱掲掵掶掹掻掽掿æ�€ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������æ��æ�‚æ�ƒæ�…æ�‡æ�ˆæ�Šæ�‹æ�Œæ�‘æ�“æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ�Ÿæ�¢æ�¤æ�¥æ�¦æ�§æ�¨æ�«æ�¬æ�®æ�¯æ�°æ�±æ�³æ�µæ�·æ�¹æ�ºæ�»æ�¼æ�¾æ�ƒæ�„æ�†æ�‡æ�ˆæ�‰æ�Šæ��æ�Žæ�‘æ�’æ�•æ�–æ�—æ�˜æ�™æ�šæ��æ�Ÿæ�¢æ�£æ�¤ï¿½æ�¥æ�§æ�¨æ�©æ�«æ�®æ�¯æ�°æ�±æ�²æ�³æ�µæ�¶æ�·æ�¸æ�¹æ�»æ�¼æ�¾æ‘€æ‘‚摃摉摋摌æ‘�摎æ‘�æ‘�摑摓摕摖摗摙摚摛摜æ‘�æ‘Ÿæ‘ æ‘¡æ‘¢æ‘£æ‘¤æ‘¥æ‘¦æ‘¨æ‘ªæ‘«æ‘¬æ‘®æ‘¯æ‘°æ‘±æ‘²æ‘³æ‘´æ‘µæ‘¶æ‘·æ‘»æ‘¼æ‘½æ‘¾æ‘¿æ’€æ’�撃撆撈撉撊撋撌æ’�æ’Žæ’�æ’�撓撔撗撘撚撛撜æ’�æ’Ÿæ’ æ’¡æ’¢æ’£æ’¥æ’¦æ’§æ’¨æ’ªæ’«æ’¯æ’±æ’²æ’³æ’´æ’¶æ’¹æ’»æ’½æ’¾æ’¿æ“�擃擄擆擇擈擉擊擋擌æ“�擑擓擔擕擖擙據�\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������擛擜æ“�æ“Ÿæ“ æ“¡æ“£æ“¥æ“§æ“¨æ“©æ“ªæ“«æ“¬æ“æ“®æ“¯æ“°æ“±æ“²æ“³æ“´æ“µæ“¶æ“·æ“¸æ“¹æ“ºæ“»æ“¼æ“½æ“¾æ“¿æ”�攂攃攄攅攆攇攈攊攋攌æ”�攎æ”�æ”�攑攓攔攕攖攗攙攚攛攜æ”�æ”žæ”Ÿæ” æ”¡ï¿½æ”¢æ”£æ”¤æ”¦æ”§æ”¨æ”©æ”ªæ”¬æ”æ”°æ”±æ”²æ”³æ”·æ”ºæ”¼æ”½æ•€æ•�敂敃敄敆敇敊敋æ•�敎æ•�æ•’æ•“æ•”æ•—æ•˜æ•šæ•œæ•Ÿæ• æ•¡æ•¤æ•¥æ•§æ•¨æ•©æ•ªæ•æ•®æ•¯æ•±æ•³æ•µæ•¶æ•¸æ•¹æ•ºæ•»æ•¼æ•½æ•¾æ•¿æ–€æ–�斂斃斄斅斆斈斉斊æ–�æ–Žæ–�斒斔斕斖斘斚æ–�æ–žæ– æ–¢æ–£æ–¦æ–¨æ–ªæ–¬æ–®æ–±æ–²æ–³æ–´æ–µæ–¶æ–·æ–¸æ–ºæ–»æ–¾æ–¿æ—€æ—‚æ—‡æ—ˆæ—‰æ—Šæ—�æ—�旑旓旔旕旘旙旚旛旜æ—�旞旟旡旣旤旪旫�\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿æ˜�昄昅昇昈昉昋æ˜�æ˜�昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊æ™�晎æ™�晑晘�晙晛晜æ™�æ™žæ™ æ™¢æ™£æ™¥æ™§æ™©æ™ªæ™«æ™¬æ™æ™±æ™²æ™³æ™µæ™¸æ™¹æ™»æ™¼æ™½æ™¿æš€æš�暃暅暆暈暉暊暋æš�暎æš�æš�æš’æš“æš”æš•æš˜æš™æššæš›æšœæšžæšŸæš æš¡æš¢æš£æš¤æš¥æš¦æš©æšªæš«æš¬æšæš¯æš°æš±æš²æš³æšµæš¶æš·æš¸æšºæš»æš¼æš½æš¿æ›€æ›�曂曃曄曅曆曇曈曉曊曋曌æ›�曎æ›�æ›�æ›‘æ›’æ›“æ›”æ›•æ›–æ›—æ›˜æ›šæ›žæ›Ÿæ› æ›¡æ›¢æ›£æ›¤æ›¥æ›§æ›¨æ›ªæ›«æ›¬æ›æ›®æ›¯æ›±æ›µæ›¶æ›¸æ›ºæ›»æ›½æœ�朂會�\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎æœ�æœ‘æœ’æœ“æœ–æœ˜æœ™æœšæœœæœžæœ æœ¡æœ¢æœ£æœ¤æœ¥æœ§æœ©æœ®æœ°æœ²æœ³æœ¶æœ·æœ¸æœ¹æœ»æœ¼æœ¾æœ¿æ��æ�„æ�…æ�‡æ�Šæ�‹æ��æ�’æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ��æ�¢æ�£æ�¤æ�¦æ�§æ�«æ�¬æ�®æ�±æ�´æ�¶ï¿½æ�¸æ�¹æ�ºæ�»æ�½æž€æž‚枃枅枆枈枊枌æž�枎æž�æž‘æž’æž“æž”æž–æž™æž›æžŸæž æž¡æž¤æž¦æž©æž¬æž®æž±æž²æž´æž¹æžºæž»æž¼æž½æž¾æž¿æŸ€æŸ‚æŸ…æŸ†æŸ‡æŸˆæŸ‰æŸŠæŸ‹æŸŒæŸ�æŸŽæŸ•æŸ–æŸ—æŸ›æŸŸæŸ¡æŸ£æŸ¤æŸ¦æŸ§æŸ¨æŸªæŸ«æŸæŸ®æŸ²æŸµæŸ¶æŸ·æŸ¸æŸ¹æŸºæŸ»æŸ¼æŸ¾æ �æ ‚æ ƒæ „æ †æ �æ �æ ’æ ”æ •æ ˜æ ™æ šæ ›æ œæ žæ Ÿæ æ ¢æ £æ ¤æ ¥æ ¦æ §æ ¨æ «æ ¬æ æ ®æ ¯æ °æ ±æ ´æ µæ ¶æ ºæ »æ ¿æ¡‡æ¡‹æ¡�æ¡�桒桖桗桘桙桚桛�\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������桜æ¡�æ¡žæ¡Ÿæ¡ªæ¡¬æ¡æ¡®æ¡¯æ¡°æ¡±æ¡²æ¡³æ¡µæ¡¸æ¡¹æ¡ºæ¡»æ¡¼æ¡½æ¡¾æ¡¿æ¢€æ¢‚梄梇梈梉梊梋梌æ¢�梎æ¢�梑梒梔梕梖梘梙梚梛梜æ¢�æ¢žæ¢Ÿæ¢ æ¢¡æ¢£æ¢¤æ¢¥æ¢©æ¢ªæ¢«æ¢¬æ¢®æ¢±æ¢²æ¢´æ¢¶æ¢·æ¢¸ï¿½æ¢¹æ¢ºæ¢»æ¢¼æ¢½æ¢¾æ¢¿æ£�棃棄棅棆棇棈棊棌棎æ£�æ£�棑棓棔棖棗棙棛棜æ£�æ£žæ£Ÿæ£¡æ£¢æ£¤æ£¥æ£¦æ£§æ£¨æ£©æ£ªæ£«æ£¬æ£æ£¯æ£²æ£³æ£´æ£¶æ£·æ£¸æ£»æ£½æ£¾æ£¿æ¤€æ¤‚椃椄椆椇椈椉椊椌æ¤�椑椓椔椕椖椗椘椙椚椛検æ¤�椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀æ¥�楃楄楅楆楇楈楉楊楋楌æ¥�楎æ¥�æ¥�楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¥¡æ¥¢æ¥¤æ¥¥æ¥§æ¥¨æ¥©æ¥ªæ¥¬æ¥æ¥¯æ¥°æ¥²æ¥³æ¥´æ¥µæ¥¶æ¥ºæ¥»æ¥½æ¥¾æ¥¿æ¦�榃榅榊榋榌榎æ¦�æ¦�榑榒榓榖榗榙榚æ¦�æ¦žæ¦Ÿæ¦ æ¦¡æ¦¢æ¦£æ¦¤æ¦¥æ¦¦æ¦©æ¦ªæ¦¬æ¦®æ¦¯æ¦°æ¦²æ¦³æ¦µæ¦¶æ¦¸æ¦¹æ¦ºæ¦¼æ¦½ï¿½æ¦¾æ¦¿æ§€æ§‚æ§ƒæ§„æ§…æ§†æ§‡æ§ˆæ§‰æ§‹æ§�æ§�槑槒槓槕槖槗様槙槚槜æ§�槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀æ¨�樂樃樄樅樆樇樈樉樋樌æ¨�樎æ¨�æ¨�樑樒樓樔樕樖標樚樛樜æ¨�æ¨žæ¨ æ¨¢æ¨£æ¨¤æ¨¥æ¨¦æ¨§æ¨©æ¨«æ¨¬æ¨æ¨®æ¨°æ¨²æ¨³æ¨´æ¨¶æ¨·æ¨¸æ¨¹æ¨ºæ¨»æ¨¼æ¨¿æ©€æ©�橂橃橅橆橈橉橊橋橌æ©�橎æ©�橑橒橓橔橕橖橗橚�\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������橜æ©�æ©žæ©Ÿæ© æ©¢æ©£æ©¤æ©¦æ©§æ©¨æ©©æ©ªæ©«æ©¬æ©æ©®æ©¯æ©°æ©²æ©³æ©´æ©µæ©¶æ©·æ©¸æ©ºæ©»æ©½æ©¾æ©¿æª�檂檃檅檆檇檈檉檊檋檌æª�æª�檒檓檔檕檖檘檙檚檛檜æª�æªžæªŸæª¡æª¢æª£æª¤æª¥æª¦ï¿½æª§æª¨æªªæªæª®æª¯æª°æª±æª²æª³æª´æªµæª¶æª·æª¸æª¹æªºæª»æª¼æª½æª¾æª¿æ«€æ«�櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌æ«�櫎æ«�æ«�櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜æ«�æ«žæ«Ÿæ« æ«¡æ«¢æ«£æ«¤æ«¥æ«¦æ«§æ«¨æ«©æ«ªæ««æ«¬æ«æ«®æ«¯æ«°æ«±æ«²æ«³æ«´æ«µæ«¶æ«·æ«¸æ«¹æ«ºæ«»æ«¼æ«½æ«¾æ«¿æ¬€æ¬�欂欃欄欅欆欇欈欉權欋欌æ¬�欎æ¬�æ¬�欑欒欓欔欕欖欗欘欙欚欛欜æ¬�æ¬žæ¬Ÿæ¬¥æ¬¦æ¬¨æ¬©æ¬ªæ¬«æ¬¬æ¬æ¬®ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¬¯æ¬°æ¬±æ¬³æ¬´æ¬µæ¬¶æ¬¸æ¬»æ¬¼æ¬½æ¬¿æ€æ�æ‚æ„æ…æˆæŠæ‹æ�æŽæ�æ�æ‘æ’æ“æ”æ•æ–æ—æ˜æšæ›æœæ�æžæŸæ æ¡æ¨æ©æ«æ¬ææ®æ¯æ°æ±æ²æ³æ´æµæ¶æ·æ¸æºæ½æ¾æ¿æ®€æ®…殈�殌殎æ®�æ®�殑殔殕殗殘殙殜æ®�æ®žæ®Ÿæ® æ®¢æ®£æ®¤æ®¥æ®¦æ®§æ®¨æ®©æ®«æ®¬æ®æ®®æ®¯æ®°æ®±æ®²æ®¶æ®¸æ®¹æ®ºæ®»æ®¼æ®½æ®¾æ¯€æ¯ƒæ¯„毆毇毈毉毊毌毎æ¯�毑毘毚毜æ¯�æ¯žæ¯Ÿæ¯ æ¯¢æ¯£æ¯¤æ¯¥æ¯¦æ¯§æ¯¨æ¯©æ¯¬æ¯æ¯®æ¯°æ¯±æ¯²æ¯´æ¯¶æ¯·æ¯¸æ¯ºæ¯»æ¯¼æ¯¾æ¯¿æ°€æ°�氂氃氄氈氉氊氋氌氎氒気氜æ°�æ°žæ° æ°£æ°¥æ°«æ°¬æ°æ°±æ°³æ°¶æ°·æ°¹æ°ºæ°»æ°¼æ°¾æ°¿æ±ƒæ±„汅汈汋汌æ±�汎æ±�汑汒汓汖汘�\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ±™æ±šæ±¢æ±£æ±¥æ±¦æ±§æ±«æ±¬æ±æ±®æ±¯æ±±æ±³æ±µæ±·æ±¸æ±ºæ±»æ±¼æ±¿æ²€æ²„沇沊沋æ²�沎沑沒沕沖沗沘沚沜æ²�æ²žæ² æ²¢æ²¨æ²¬æ²¯æ²°æ²´æ²µæ²¶æ²·æ²ºæ³€æ³�泂泃泆泇泈泋æ³�泎æ³�泑泒泘�泙泚泜æ³�æ³Ÿæ³¤æ³¦æ³§æ³©æ³¬æ³æ³²æ³´æ³¹æ³¿æ´€æ´‚洃洅洆洈洉洊æ´�æ´�æ´�洑洓洔洕洖洘洜æ´�æ´Ÿæ´ æ´¡æ´¢æ´£æ´¤æ´¦æ´¨æ´©æ´¬æ´æ´¯æ´°æ´´æ´¶æ´·æ´¸æ´ºæ´¿æµ€æµ‚浄浉浌æµ�浕浖浗浘浛æµ�æµŸæµ¡æµ¢æµ¤æµ¥æµ§æµ¨æµ«æµ¬æµæµ°æµ±æµ²æµ³æµµæµ¶æµ¹æµºæµ»æµ½æµ¾æµ¿æ¶€æ¶�涃涄涆涇涊涋æ¶�æ¶�æ¶�æ¶’æ¶–æ¶—æ¶˜æ¶™æ¶šæ¶œæ¶¢æ¶¥æ¶¬æ¶æ¶°æ¶±æ¶³æ¶´æ¶¶æ¶·æ¶¹æ¶ºæ¶»æ¶¼æ¶½æ¶¾æ·�淂淃淈淉淊�\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������æ·�æ·Žæ·�æ·�æ·’æ·“æ·”æ·•æ·—æ·šæ·›æ·œæ·Ÿæ·¢æ·£æ·¥æ·§æ·¨æ·©æ·ªæ·æ·¯æ·°æ·²æ·´æ·µæ·¶æ·¸æ·ºæ·½æ·¾æ·¿æ¸€æ¸�渂渃渄渆渇済渉渋æ¸�渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀æ¹�湂湅湆湇湈湉湊湋湌æ¹�æ¹�湑湒湕湗湙湚湜æ¹�æ¹žæ¹ æ¹¡æ¹¢æ¹£æ¹¤æ¹¥æ¹¦æ¹§æ¹¨æ¹©æ¹ªæ¹¬æ¹æ¹¯æ¹°æ¹±æ¹²æ¹³æ¹´æ¹µæ¹¶æ¹·æ¹¸æ¹¹æ¹ºæ¹»æ¹¼æ¹½æº€æº�溂溄溇溈溊溋溌æº�溎溑溒溓溔溕準溗溙溚溛æº�æºžæº æº¡æº£æº¤æº¦æº¨æº©æº«æº¬æºæº®æº°æº³æºµæº¸æº¹æº¼æº¾æº¿æ»€æ»ƒæ»„滅滆滈滉滊滌æ»�滎æ»�滒滖滘滙滛滜æ»�æ»£æ»§æ»ªæ»«æ»¬æ»æ»®æ»¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀æ¼�漃漄漅漇漈漊漋漌æ¼�漎æ¼�漑漒漖漗漘漙漚漛漜æ¼�漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀æ½�潂�潃潄潅潈潉潊潌潎æ½�æ½�潑潒潓潔潕潖潗潙潚潛æ½�æ½Ÿæ½ æ½¡æ½£æ½¤æ½¥æ½§æ½¨æ½©æ½ªæ½«æ½¬æ½¯æ½°æ½±æ½³æ½µæ½¶æ½·æ½¹æ½»æ½½æ½¾æ½¿æ¾€æ¾�澂澃澅澆澇澊澋æ¾�æ¾�澑澒澓澔澕澖澗澘澙澚澛æ¾�æ¾žæ¾Ÿæ¾ æ¾¢æ¾£æ¾¤æ¾¥æ¾¦æ¾¨æ¾©æ¾ªæ¾«æ¾¬æ¾æ¾®æ¾¯æ¾°æ¾±æ¾²æ¾´æ¾µæ¾·æ¾¸æ¾ºæ¾»æ¾¼æ¾½æ¾¾æ¾¿æ¿�濃濄濅濆濇濈濊濋濌æ¿�濎æ¿�æ¿�濓濔濕濖濗濘濙濚濛濜æ¿�濟濢濣濤濥�\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¿¦æ¿§æ¿¨æ¿©æ¿ªæ¿«æ¿¬æ¿æ¿°æ¿±æ¿²æ¿³æ¿´æ¿µæ¿¶æ¿·æ¿¸æ¿¹æ¿ºæ¿»æ¿¼æ¿½æ¿¾æ¿¿ç€€ç€�瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌ç€�瀎ç€�ç€�瀒瀓瀔瀕瀖瀗瀘瀙瀜ç€�ç€žç€Ÿç€ ç€¡ç€¢ç€¤ç€¥ç€¦ç€§ç€¨ç€©ç€ªï¿½ç€«ç€¬ç€ç€®ç€¯ç€°ç€±ç€²ç€³ç€´ç€¶ç€·ç€¸ç€ºç€»ç€¼ç€½ç€¾ç€¿ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆç�‰ç�Šç�‹ç��ç�Žç��ç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�šç�›ç�œç��ç�Ÿç� ç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�®ç�±ç�²ç�³ç�´ç�·ç�¹ç�ºç�»ç�½ç‚�炂炃炄炆炇炈炋炌ç‚�ç‚�ç‚�ç‚‘ç‚“ç‚—ç‚˜ç‚šç‚›ç‚žç‚Ÿç‚ ç‚¡ç‚¢ç‚£ç‚¤ç‚¥ç‚¦ç‚§ç‚¨ç‚©ç‚ªç‚°ç‚²ç‚´ç‚µç‚¶ç‚ºç‚¾ç‚¿çƒ„çƒ…çƒ†çƒ‡çƒ‰çƒ‹çƒŒçƒ�烎çƒ�çƒ�烑烒烓烔烕烖烗烚�\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������烜çƒ�çƒžçƒ çƒ¡çƒ¢çƒ£çƒ¥çƒªçƒ®çƒ°çƒ±çƒ²çƒ³çƒ´çƒµçƒ¶çƒ¸çƒºçƒ»çƒ¼çƒ¾çƒ¿ç„€ç„�焂焃焄焅焆焇焈焋焌ç„�焎ç„�焑焒焔焗焛焜ç„�ç„žç„Ÿç„ ç„¡ç„¢ç„£ç„¤ç„¥ç„§ç„¨ç„©ç„ªç„«ç„¬ç„焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀ç…�煂煃煄煆煇煈煉煋ç…�ç…�ç…�煑煒煓煔煕煖煗煘煙煚煛ç…�ç…Ÿç… ç…¡ç…¢ç…£ç…¥ç…©ç…ªç…«ç…¬ç…煯煰煱煴煵煶煷煹煻煼煾煿熀ç†�熂熃熅熆熇熈熉熋熌ç†�熎ç†�熑熒熓熕熖熗熚熛熜ç†�熞熡熢熣熤熥熦熧熩熪熫ç†ç†®ç†¯ç†°ç†±ç†²ç†´ç†¶ç†·ç†¸ç†ºç†»ç†¼ç†½ç†¾ç†¿ç‡€ç‡�燂燄燅燆燇燈燉燊燋燌ç‡�ç‡�ç‡�燑燒燓�\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜ç‡�燞營燡燢燣燤燦燨燩燪燫燬ç‡ç‡¯ç‡°ç‡±ç‡²ç‡³ç‡´ç‡µç‡¶ç‡·ç‡¸ç‡ºç‡»ç‡¼ç‡½ç‡¾ç‡¿çˆ€çˆ�爂爃爄爅爇爈爉爊爋爌çˆ�爎çˆ�çˆ�çˆ‘çˆ’çˆ“çˆ”çˆ•çˆ–çˆ—çˆ˜çˆ™çˆšï¿½çˆ›çˆœçˆžçˆŸçˆ çˆ¡çˆ¢çˆ£çˆ¤çˆ¥çˆ¦çˆ§çˆ©çˆ«çˆçˆ®çˆ¯çˆ²çˆ³çˆ´çˆºçˆ¼çˆ¾ç‰€ç‰�牂牃牄牅牆牉牊牋牎ç‰�ç‰�ç‰‘ç‰“ç‰”ç‰•ç‰—ç‰˜ç‰šç‰œç‰žç‰ ç‰£ç‰¤ç‰¥ç‰¨ç‰ªç‰«ç‰¬ç‰ç‰°ç‰±ç‰³ç‰´ç‰¶ç‰·ç‰¸ç‰»ç‰¼ç‰½çŠ‚çŠƒçŠ…çŠ†çŠ‡çŠˆçŠ‰çŠŒçŠŽçŠ�犑犓犔犕犖犗犘犙犚犛犜çŠ�çŠžçŠ çŠ¡çŠ¢çŠ£çŠ¤çŠ¥çŠ¦çŠ§çŠ¨çŠ©çŠªçŠ«çŠ®çŠ±çŠ²çŠ³çŠµçŠºçŠ»çŠ¼çŠ½çŠ¾çŠ¿ç‹€ç‹…ç‹†ç‹‡ç‹‰ç‹Šç‹‹ç‹Œç‹�狑狓狔狕狖狘狚狛�\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"����������������������������������������������������������������î“�î“�î“�î“�î“žî“Ÿî“ î“¡î“¢î“£î“¤î“¥î“¦î“§î“¨î“©î“ªî“«î“¬î“î”��î”�î”�î”�î”�î”žî”Ÿî” î”¡î”¢î”£î”¤î”¥ã€€ã€�。·ˉˇ¨〃々—~‖…‘’“â€�〔〕〈〉《》「ã€�『ã€�〖〗ã€�】±×÷∶∧∨∑âˆ�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽âˆ�â‰ â‰®â‰¯â‰¤â‰¥âˆžâˆµâˆ´â™‚â™€Â°â€²â€³â„ƒï¼„Â¤ï¿ ï¿¡â€°Â§â„–â˜†â˜…â—‹â—�◎◇◆□■△▲※→â†�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"����������������������������������������������������������������î”î•�î•�î•�î•�î•�î•žî•Ÿî• î•¡î•¢î•£î•¤ï¿½î•¥î•¦î•§î•¨î•©î•ªî•«î•¬î•î–�ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹî�¦î�§î�¨î�©î�ªî�«â’ˆâ’‰â’Šâ’‹â’Œâ’�â’Žâ’�â’�⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩î�¬î�㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩î�®î�¯â… ⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫî�°î�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������î–�î–Žî–�î–�î–�î–žî–Ÿî– î–¡î–¢î–£î–¤î–¥î–¦î–§î–¨î–©î–ªî–«î–¬î–î—��î—�î—Žî—�î—�î—�î—žî—Ÿî— î—¡î—¢î—£î—¤î—¥ï¼�"#¥%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¼¼ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"����������������������������������������������������������������î—î˜�î˜�î˜�î˜�î˜�î˜žî˜Ÿî˜ î˜¡î˜¢î˜£î˜¤ï¿½î˜¥î˜¦î˜§î˜¨î˜©î˜ªî˜«î˜¬î˜î˜®î˜¯î˜°î˜±î˜²î˜³î˜´î˜µî˜¶î˜·î˜¸î˜¹î˜ºî˜»î˜¼î˜½î˜¾î˜¿î™€î™�ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ã‚‘ã‚’ã‚“î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������������������������������������î™�î™�î™�î™�î™žî™Ÿî™ î™¡î™¢î™£î™¤î™¥î™¦î™§î™¨î™©î™ªî™«î™¬î™î™®î™¯î™°î™±î™²î™³î™´î™µî™¶î™·î™¸î™¹î™ºî™»î™¼î™½î™¾î™¿îš€îš��îš�îš�îš�îš�îšžîšŸîš îš¡îš¢îš£îš¤îš¥ã‚¡ã‚¢ã‚£ã‚¤ã‚¥ã‚¦ã‚§ã‚¨ã‚©ã‚ªã‚«ã‚¬ã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶î�½î�¾î�¿îž€îž��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������îšîš®îš¯îš°îš±îš²îš³îš´îšµîš¶îš·îš¸îš¹îšºîš»îš¼îš½îš¾îš¿î›€î›�î›�î›�î›�î›�î›žî›Ÿî› î›¡î›¢î›£î›¤ï¿½î›¥î›¦î›§î›¨î›©î›ªî›«î›¬î›î›®î›¯î›°î›±î›²î›³î›´î›µî›¶î›·î›¸î›¹î›ºî›»î›¼î›½î›¾î›¿îœ€îœ�ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχψωîž�îž�îž�︵︶︹︺︿﹀︽︾ï¹�﹂﹃﹄︻︼︷︸︱︳︴îž��\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"����������������������������������������������������������������îœ�îœ�îœ�îœ�îœžîœŸîœ îœ¡îœ¢îœ£îœ¤îœ¥îœ¦îœ§îœ¨îœ©îœªîœ«îœ¬îœîœ®îœ¯îœ°îœ±îœ²îœ³îœ´îœµîœ¶îœ·îœ¸îœ¹îœºîœ»îœ¼îœ½îœ¾îœ¿î�€î��î�‚î�ƒî�„�î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐÐ®Ð¯îž îž¡îž¢îž£îž¤îž¥îž¦îž§îž¨îž©îžªîž«îž¬îžîž®Ð°Ð±Ð²Ð³Ð´ÐµÑ‘жзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ��\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿â•�║╒╓╔╕╖╗╘╙╚╛╜â•�╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬â•╮╯╰╱╲╳â–�▂▃▄▅▆▇�█▉▊▋▌â–�â–Žâ–�▓▔▕▼▽◢◣◤◥☉⊕〒ã€�〞îŸ�Ä�áǎà ēéěèīÃÇ�ìÅ�óǒòūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩîŸ�îŸ�îŸ�îŸ�îŸžîŸŸîŸ îŸ¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎ãŽ�㎜ãŽ�㎞㎡ã�„ã�Žã�‘ã�’ã�•︰¬¦℡㈱â€�ー゛゜ヽヾ〆ã‚�ゞ﹉﹊﹋﹌ï¹�﹎ï¹�ï¹�﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜ï¹�ï¹žï¹Ÿï¹ ï¹¡ï¿½ï¹¢ï¹£ï¹¤ï¹¥ï¹¦ï¹¨ï¹©ï¹ªï¹«îŸ§îŸ¨îŸ©îŸªîŸ«îŸ¬îŸîŸ®îŸ¯îŸ°îŸ±îŸ²îŸ³ã€‡îŸ´îŸµîŸ¶îŸ·îŸ¸îŸ¹îŸºîŸ»îŸ¼îŸ½îŸ¾îŸ¿î €â”€â”�│┃┄┅┆┇┈┉┊┋┌â”�┎â”�â”�┑┒┓└┕┖┗┘┙┚┛├â”�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬â”┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀â•�╂╃╄╅╆╇╈╉╊╋î �î ‚î ƒî „î …î †î ‡î ˆî ‰î Šî ‹î Œî �î Žî ��\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������狜ç‹�狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌çŒ�çŒ�çŒ�çŒ‘çŒ’çŒ”çŒ˜çŒ™çŒšçŒŸçŒ çŒ£çŒ¤çŒ¦çŒ§çŒ¨çŒçŒ¯çŒ°çŒ²çŒ³çŒµçŒ¶çŒºçŒ»çŒ¼çŒ½ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆï¿½ç�‰ç�Šç�‹ç�Œç�Žç��ç�‘ç�“ç�”ç�•ç�–ç�˜ç�™ç�šç�›ç�œç��ç�žç�Ÿç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�«ç�®ç�°ç�±î€€î€�î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî���\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¿çŽ€çŽ�玂玃玅玆玈玊玌çŽ�çŽ�çŽ�玒玓玔玕玗玘玙玚玜çŽ�çŽžçŽ çŽ¡çŽ£çŽ¤çŽ¥çŽ¦çŽ§çŽ¨çŽªçŽ¬çŽçŽ±çŽ´çŽµçŽ¶çŽ¸çŽ¹çŽ¼çŽ½çŽ¾çŽ¿ç��ç�ƒç�„ç�…ç�†ç�‡ï¿½ç�‹ç�Œç�Žç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�šç�›ç�œç��ç�Ÿç�¡ç�¢ç�£ç�¤ç�¦ç�¨ç�ªç�«ç�¬ç�®ç�¯ç�°ç�±ç�³ç�´ç�µç�¶ç�·î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚�\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"����������������������������������������������������������������ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¾ç�¿ç�€ç��ç�‚ç�„ç�‡ç�ˆç�‹ç�Œç��ç�Žç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œç��ç�žç�Ÿç� ç�¡ç�£ç�¤ç�§ç�©ç�«ç�ç�¯ç�±ç�²ç�·ç�¸ç�¹ç�ºç�»ç�½ç�¾ç�¿ç‘€ç‘‚瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌ç‘��瑎ç‘�ç‘�瑑瑒瑓瑔瑖瑘ç‘�ç‘ ç‘¡ç‘¢ç‘£ç‘¤ç‘¥ç‘¦ç‘§ç‘¨ç‘©ç‘ªç‘«ç‘¬ç‘®ç‘¯ç‘±ç‘²ç‘³ç‘´ç‘µç‘¸ç‘¹ç‘ºî‚¼î‚½î‚¾î‚¿îƒ€îƒ�îƒ�îƒ�îƒ�îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºîƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌ç’�ç’�璑璒璓璔璕璖璗璘璙璚璛ç’�ç’Ÿç’ ç’¡ç’¢ç’£ç’¤ç’¥ç’¦ç’ªç’«ç’¬ç’璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀ç“�瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌ç“�瓎ç“�ç“�瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛ç“�瓟瓡瓥瓧瓨瓩瓪瓫瓬ç“瓰瓱瓲î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„î…�î…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…�\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀ç”�甂甃甅甆甇甈甉甊甋甌甎ç”�甒甔甕甖甗甛ç”�ç”žç” ç”¡ç”¢ç”£ç”¤ç”¦ç”§ç”ªç”®ç”´ç”¶ç”¹ç”¼ç”½ç”¿ç•�畂畃畄畆畇畉畊ç•�ç•�畑畒畓畕畖畗畘�ç•�ç•žç•Ÿç• ç•¡ç•¢ç•£ç•¤ç•§ç•¨ç•©ç•«ç•¬ç•畮畯異畱畳畵當畷畺畻畼畽畾疀ç–�疂疄疅疇î†�î†�î†�î†�î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†î†®î†¯î†°î†±î†²î†³î†´î†µî†¶î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡��\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������疈疉疊疌ç–�ç–Žç–�疓疕疘疛疜疞疢疦疧疨疩疪ç–疶疷疺疻疿痀ç—�痆痋痌痎ç—�ç—�痑痓痗痙痚痜ç—�ç—Ÿç— ç—¡ç—¥ç—©ç—¬ç—痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋ç˜�瘎ç˜�瘑瘒瘓瘔瘖瘚瘜ç˜�瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽ç™�療癄î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎ç™�ç™�癑癒癓癕癗癘癙癚癛ç™�ç™Ÿç™ ç™¡ç™¢ç™¤ç™¥ç™¦ç™§ç™¨ç™©ç™ªç™¬ç™ç™®ç™°ç™±ç™²ç™³ç™´ç™µç™¶ç™·ç™¹ç™ºç™¼ç™¿çš€çš�皃皅皉皊皌çš�çš�çš�皒皔皕皗皘皚皛�皜çš�çšžçšŸçš çš¡çš¢çš£çš¥çš¦çš§çš¨çš©çšªçš«çš¬çšçš¯çš°çš³çšµçš¶çš·çš¸çš¹çšºçš»çš¼çš½çš¾ç›€ç›�盃啊阿埃挨哎唉哀皑癌蔼矮艾ç¢�爱隘éž�æ°¨å®‰ä¿ºæŒ‰æš—å²¸èƒºæ¡ˆè‚®æ˜‚ç›Žå‡¹æ•–ç†¬ç¿±è¢„å‚²å¥¥æ‡Šæ¾³èŠæ�Œæ‰’å�å�§ç¬†å…«ç–¤å·´æ‹”è·‹é�¶æŠŠè€™å��霸罢爸白æŸ�百摆佰败拜稗斑ç�æ�¬æ‰³èˆ¬é¢�æ�¿ç‰ˆæ‰®æ‹Œä¼´ç“£å�ŠåŠžç»Šé‚¦å¸®æ¢†æ¦œè†€ç»‘æ£’ç£…èšŒé•‘å‚�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜ç›�ç›žç› ç›¡ç›¢ç›£ç›¤ç›¦ç›§ç›¨ç›©ç›ªç›«ç›¬ç›ç›°ç›³ç›µç›¶ç›·ç›ºç›»ç›½ç›¿çœ€çœ‚眃眅眆眊県眎çœ�çœ�眑眒眓眔眕眖眗眘眛眜çœ�眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿ç�‚ç�„ç�…ç�†ç�ˆç�‰ç�Šç�‹ç�Œç��ç�Žç��ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œè–„雹ä¿�å ¡é¥±å®�抱报暴豹é²�爆æ�¯ç¢‘悲å�‘北辈背è´�é’¡å€�ç‹ˆå¤‡æƒ«ç„™è¢«å¥”è‹¯æœ¬ç¬¨å´©ç»·ç”æ³µè¹¦è¿¸é€¼é¼»æ¯”鄙笔彼碧蓖蔽毕毙毖å¸�åº‡ç—¹é—æ•�弊必辟å£�臂é�¿é™›éžè¾¹ç¼–è´¬æ‰�便å�˜å�žè¾¨è¾©è¾«é��æ ‡å½ªè†˜è¡¨é³–æ†‹åˆ«ç˜ªå½¬æ–Œæ¿’æ»¨å®¾æ‘ˆå…µå†°æŸ„ä¸™ç§‰é¥¼ç‚³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������ç��ç�žç�Ÿç� ç�¤ç�§ç�©ç�ªç�ç�®ç�¯ç�°ç�±ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�ºç�»ç�¼çž�瞂瞃瞆瞇瞈瞉瞊瞋çž�çž�瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜çž�瞞瞡瞣瞤瞦瞨瞫çžçž®çž¯çž±çž²çž´çž¶çž·çž¸çž¹çžºï¿½çž¼çž¾çŸ€çŸ�矂矃矄矅矆矇矈矉矊矋矌矎çŸ�çŸ�矑矒矓矔矕矖矘矙矚çŸ�çŸžçŸŸçŸ çŸ¡çŸ¤ç—…å¹¶çŽ»è� æ’æ‹¨é’µæ³¢å�šå‹ƒæ��铂箔伯帛舶脖膊渤泊驳æ�•å�œå“ºè¡¥åŸ ä¸�布æ¥ç°¿éƒ¨æ€–擦猜è£�æ��æ‰�è´¢ç�¬è¸©é‡‡å½©è�œè”¡é¤�å�‚èš•æ®‹æƒæƒ¨ç�¿è‹�舱仓沧è—�æ“�糙槽曹è�‰åŽ•ç–ä¾§å†Œæµ‹å±‚è¹æ�’å�‰èŒ¬èŒ¶æŸ¥ç¢´æ�½å¯Ÿå²”差诧拆柴豺æ�€æŽºè�‰é¦‹è°—ç¼ é“²äº§é˜�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çŸ¦çŸ¨çŸªçŸ¯çŸ°çŸ±çŸ²çŸ´çŸµçŸ·çŸ¹çŸºçŸ»çŸ¼ç ƒç „ç …ç †ç ‡ç ˆç Šç ‹ç Žç �ç �ç “ç •ç ™ç ›ç žç ç ¡ç ¢ç ¤ç ¨ç ªç «ç ®ç ¯ç ±ç ²ç ³ç µç ¶ç ½ç ¿ç¡�硂硃硄硆硈硉硊硋ç¡�ç¡�ç¡‘ç¡“ç¡”ç¡˜ç¡™ç¡šï¿½ç¡›ç¡œç¡žç¡Ÿç¡ ç¡¡ç¡¢ç¡£ç¡¤ç¡¥ç¡¦ç¡§ç¡¨ç¡©ç¡¯ç¡°ç¡±ç¡²ç¡³ç¡´ç¡µç¡¶ç¡¸ç¡¹ç¡ºç¡»ç¡½ç¡¾ç¡¿ç¢€ç¢�碂碃场å°�常长å�¿è‚ 厂敞畅唱倡超抄钞æœ�嘲潮巢å�µç‚’车扯撤掣彻澈郴臣辰尘晨忱沉陈è¶�衬撑称城橙æˆ�呈乘程惩澄诚承逞骋秤å�ƒç—´æŒ�åŒ™æ± è¿Ÿå¼›é©°è€»é½¿ä¾ˆå°ºèµ¤ç¿…æ–¥ç‚½å……å†²è™«å´‡å® æŠ½é…¬ç•´è¸Œç¨ æ„�ç¹ä»‡ç»¸çž…丑è‡åˆ�出橱厨躇锄é›�æ»�除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋ç¢�ç¢�碒碔碕碖碙ç¢�ç¢žç¢ ç¢¢ç¢¤ç¢¦ç¢¨ç¢©ç¢ªç¢«ç¢¬ç¢ç¢®ç¢¯ç¢µç¢¶ç¢·ç¢¸ç¢ºç¢»ç¢¼ç¢½ç¢¿ç£€ç£‚磃磄磆磇磈磌ç£�磎ç£�磑磒磓磖磗磘磚磛磜ç£�ç£žç£Ÿç£ ç£¡ç£¢ç££ï¿½ç£¤ç£¥ç£¦ç£§ç£©ç£ªç£«ç£ç£®ç£¯ç£°ç£±ç£³ç£µç£¶ç£¸ç£¹ç£»ç£¼ç£½ç£¾ç£¿ç¤€ç¤‚礃礄礆礇礈礉礊礋礌础储矗æ��触处æ�£å·�ç©¿æ¤½ä¼ èˆ¹å–˜ä¸²ç–®çª—å¹¢åºŠé—¯åˆ›å�¹ç‚Šæ�¶é”¤åž‚æ˜¥æ¤¿é†‡å”‡æ·³çº¯è ¢æˆ³ç»°ç–µèŒ¨ç£�雌辞慈瓷è¯�æ¤åˆºèµ�次è�ªè‘±å›±åŒ†ä»Žä¸›å‡‘粗醋簇促蹿篡窜摧崔催脆ç˜�ç²¹æ·¬ç¿ æ�‘å˜å¯¸ç£‹æ’®æ�“措挫错æ�è¾¾ç”瘩打大呆æ¹å‚£æˆ´å¸¦æ®†ä»£è´·è¢‹å¾…逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������ç¤�礎ç¤�ç¤�礑礒礔礕礖礗礘礙礚礛礜ç¤�ç¤Ÿç¤ ç¤¡ç¤¢ç¤£ç¤¥ç¤¦ç¤§ç¤¨ç¤©ç¤ªç¤«ç¤¬ç¤ç¤®ç¤¯ç¤°ç¤±ç¤²ç¤³ç¤µç¤¶ç¤·ç¤¸ç¤¹ç¤½ç¤¿ç¥‚祃祄祅祇祊祋祌ç¥�祎ç¥�ç¥�祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌ç¦�禎ç¦�ç¦‘ç¦’æ€ è€½æ‹…ä¸¹å�•郸掸胆旦氮但惮淡诞弹蛋当挡党è�¡æ¡£åˆ€æ�£è¹ˆå€’岛祷导到稻悼é�“盗德得的蹬ç�¯ç™»ç‰çžªå‡³é‚“å ¤ä½Žæ»´è¿ªæ•Œç¬›ç‹„æ¶¤ç¿Ÿå«¡æŠµåº•åœ°è’‚ç¬¬å¸�å¼Ÿé€’ç¼”é¢ æŽ‚æ»‡ç¢˜ç‚¹å…¸é�›åž«ç”µä½ƒç”¸åº—æƒ¦å¥ æ·€æ®¿ç¢‰å�¼é›•凋åˆ�掉å�Šé’“调跌爹碟è�¶è¿è°�å� �\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜ç¦�ç¦žç¦Ÿç¦ ç¦¡ç¦¢ç¦£ç¦¤ç¦¥ç¦¦ç¦¨ç¦©ç¦ªç¦«ç¦¬ç¦ç¦®ç¦¯ç¦°ç¦±ç¦²ç¦´ç¦µç¦¶ç¦·ç¦¸ç¦¼ç¦¿ç§‚秄秅秇秈秊秌秎ç§�ç§�秓秔秖秗秙秚秛秜ç§�ç§žç§ ç§¡ç§¢ç§¥ç§¨ç§ªï¿½ç§¬ç§®ç§±ç§²ç§³ç§´ç§µç§¶ç§·ç§¹ç§ºç§¼ç§¾ç§¿ç¨�稄稅稇稈稉稊稌ç¨�ç¨�稑稒稓稕稖稘稙稛稜ä¸�盯å�®é’‰é¡¶é¼Žé”å®šè®¢ä¸¢ä¸œå†¬è‘£æ‡‚åŠ¨æ ‹ä¾—æ�«å†»æ´žå…œæŠ–斗陡豆逗痘都ç�£æ¯’çŠŠç‹¬è¯»å µç�¹èµŒæ�œé•€è‚šåº¦æ¸¡å¦’端çŸé”»æ®µæ–ç¼Žå †å…‘é˜Ÿå¯¹å¢©å�¨è¹²æ•¦é¡¿å›¤é’�盾é��掇哆多夺垛躲朵跺舵å‰�æƒ°å •è›¾å³¨é¹…ä¿„é¢�讹娥æ�¶åŽ„æ‰¼é��鄂饿æ�©è€Œå„¿è€³å°”饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������ç¨�稟稡稢稤稥稦稧稨稩稪稫稬ç¨ç¨®ç¨¯ç¨°ç¨±ç¨²ç¨´ç¨µç¨¶ç¨¸ç¨ºç¨¾ç©€ç©�穂穃穄穅穇穈穉穊穋穌ç©�穎ç©�ç©�穒穓穔穕穖穘穙穚穛穜ç©�ç©žç©Ÿç© ç©¡ç©¢ç©£ç©¤ç©¥ç©¦ç©§ç©¨ï¿½ç©©ç©ªç©«ç©¬ç©ç©®ç©¯ç©±ç©²ç©³ç©µç©»ç©¼ç©½ç©¾çª‚窅窇窉窊窋窌窎çª�çª�窓窔窙窚窛窞窡窢贰å�‘罚ç�ä¼�ä¹�阀法ç��藩帆番翻樊矾钒ç¹�凡烦å��è¿”èŒƒè´©çŠ¯é¥æ³›å�ŠèŠ³æ–¹è‚ªæˆ¿é˜²å¦¨ä»¿è®¿çººæ”¾è�²é�žå•¡é£žè‚¥åŒªè¯½å� 肺废沸费芬酚å�©æ°›åˆ†çº·å�Ÿç„šæ±¾ç²‰å¥‹ä»½å¿¿æ„¤ç²ªä¸°å°�枫蜂峰锋风疯烽逢冯ç¼�讽奉凤佛å�¦å¤«æ•·è‚¤åµæ‰¶æ‹‚è¾�幅氟符ä¼�俘æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀ç«�竂竃竄竅竆竇竈竉竊竌ç«�竎ç«�ç«�竑竒竓竔竕竗竘竚竛竜ç«�竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀ç¬�笂笅笇笉笌ç¬�笎ç¬�笒笓笖笗笘笚笜ç¬�ç¬Ÿç¬¡ç¬¢ç¬£ç¬§ç¬©ç¬æµ®æ¶ªç¦�袱弗甫抚辅俯釜斧脯腑府è…�赴副覆赋å¤�傅付阜父腹负富讣附妇缚å’�噶嘎该改概钙盖溉干甘æ�†æŸ‘ç«¿è‚�赶感秆敢赣冈刚钢缸肛纲岗港æ� 篙皋高è†�羔糕æ�žé•�ç¨¿å‘Šå“¥æŒæ��戈鸽胳疙割é�©è‘›æ ¼è›¤é˜�隔铬个å�„ç»™æ ¹è·Ÿè€•æ›´åºšç¾¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿ç€ç�ç‚çƒç„ç†çˆçŠç�çŽç“ç•ç—ç™çœçžçŸç¡ç£ç¤ç¥ç¦ç§ç¨ç©çªç«ç¬çç¯ç°ç³ç´ç¶ç¸çºç¼ç½ç¿ç®�箂箃箄箆箇箈箉箊箋箌箎ç®�ï¿½ç®‘ç®’ç®“ç®–ç®˜ç®™ç®šç®›ç®žç®Ÿç® ç®£ç®¤ç®¥ç®®ç®¯ç®°ç®²ç®³ç®µç®¶ç®·ç®¹ç®ºç®»ç®¼ç®½ç®¾ç®¿ç¯€ç¯‚ç¯ƒç¯„åŸ‚è€¿æ¢—å·¥æ”»åŠŸæ�龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构è´å¤Ÿè¾œè�‡å’•ç®�ä¼°æ²½å¤å§‘鼓å�¤è›Šéª¨è°·è‚¡æ•…顾固雇刮瓜å‰�寡挂褂乖æ‹�æ€ªæ£ºå…³å®˜å† è§‚ç®¡é¦†ç½�惯ç�Œè´¯å…‰å¹¿é€›ç‘°è§„åœç¡…归龟闺轨鬼诡癸桂柜跪贵刽辊滚æ£�é”…éƒå›½æžœè£¹è¿‡å“ˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������篅篈築篊篋ç¯�篎ç¯�ç¯�ç¯’ç¯”ç¯•ç¯–ç¯—ç¯˜ç¯›ç¯œç¯žç¯Ÿç¯ ç¯¢ç¯£ç¯¤ç¯§ç¯¨ç¯©ç¯«ç¯¬ç¯ç¯¯ç¯°ç¯²ç¯³ç¯´ç¯µç¯¶ç¯¸ç¯¹ç¯ºç¯»ç¯½ç¯¿ç°€ç°�簂簃簄簅簆簈簉簊ç°�ç°Žç°�簑簒簓簔簕簗簘簙�簚簛簜ç°�ç°žç° ç°¡ç°¢ç°£ç°¤ç°¥ç°¨ç°©ç°«ç°¬ç°ç°®ç°¯ç°°ç°±ç°²ç°³ç°´ç°µç°¶ç°·ç°¹ç°ºç°»ç°¼ç°½ç°¾ç±‚éª¸å©æµ·æ°¦äº¥å®³éª‡é…£æ†¨é‚¯éŸ©å�«æ¶µå¯’函喊罕翰撼æ��旱憾æ‚�焊汗汉夯æ�航壕嚎豪毫éƒ�好耗å�·æµ©å‘µå–�è�·è��æ ¸ç¦¾å’Œä½•å�ˆç›’貉阂河涸赫è¤�é¹¤è´ºå˜¿é»‘ç—•å¾ˆç‹ æ�¨å“¼äº¨æ¨ªè¡¡æ�’轰哄烘虹鸿洪å®�弘红喉侯猴å�¼åŽšå€™å�Žå‘¼ä¹Žå¿½ç‘šå£¶è‘«èƒ¡è�´ç‹�糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎ç±�ç±�籑籒籓籔籕籖籗籘籙籚籛籜ç±�ç±žç±Ÿç± ç±¡ç±¢ç±£ç±¤ç±¥ç±¦ç±§ç±¨ç±©ç±ªç±«ç±¬ç±ç±®ç±¯ç±°ç±±ç±²ç±µç±¶ç±·ç±¸ç±¹ç±ºç±¾ç±¿ç²€ç²�粂粃粄粅粆粇�粈粊粋粌ç²�粎ç²�ç²�ç²“ç²”ç²–ç²™ç²šç²›ç² ç²¡ç²£ç²¦ç²§ç²¨ç²©ç²«ç²¬ç²ç²¯ç²°ç²´ç²µç²¶ç²·ç²¸ç²ºç²»å¼§è™Žå”¬æŠ¤äº’沪户花哗å�ŽçŒ¾æ»‘画划化è¯�æ§�徊怀淮å��欢环桓还缓æ�¢æ‚£å”¤ç—ªè±¢ç„•涣宦幻è�’慌黄磺è�—簧皇凰惶煌晃幌æ��è°Žç�°æŒ¥è¾‰å¾½æ�¢è›”回æ¯�悔慧å�‰æƒ 晦贿秽会烩汇讳诲绘è�¤æ˜�å©šé‚æµ‘æ··è±�活伙ç�«èŽ·æˆ–æƒ‘éœ�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎ç³�ç³�糑糒糓糔糘糚糛ç³�糞糡糢糣糤糥糦糧糩糪糫糬ç³ç³®ç³°ç³±ç³²ç³³ç³´ç³µç³¶ç³·ç³¹ç³ºç³¼ç³½ç³¾ç³¿ç´€ç´�紂紃約紅紆紇紈紉紋紌ç´�ç´Žç´�ç´��紑紒紓純紕紖紗紘紙級紛紜ç´�紞紟紡紣紤紥紦紨紩紪紬ç´ç´®ç´°ç´±ç´²ç´³ç´´ç´µç´¶è‚Œé¥¥è¿¹æ¿€è®¥é¸¡å§¬ç»©ç¼‰å�‰æž�棘辑ç±�集å�Šæ€¥ç–¾æ±²å�³å«‰çº§æŒ¤å‡ 脊己蓟技冀å£ä¼Žç¥å‰‚æ‚¸æµŽå¯„å¯‚è®¡è®°æ—¢å¿Œé™…å¦“ç»§çºªå˜‰æž·å¤¹ä½³å®¶åŠ è�šé¢Šè´¾ç”²é’¾å�‡ç¨¼ä»·æž¶é©¾å«�æ¼ç›‘å�šå°–笺间煎兼肩艰奸缄茧检柬碱硷拣æ�¡ç®€ä¿å‰ªå‡�è��槛鉴践贱è§�é”®ç®ä»¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀çµ�終絃組絅絆絇絈絉絊絋経çµ�絎çµ�çµ�絑絒絓絔絕絖絗絘絙絚絛絜çµ�çµžçµŸçµ çµ¡çµ¢çµ£çµ¤çµ¥çµ¦çµ§çµ¨çµ©çµªçµ«çµ¬çµçµ¯çµ°çµ±çµ²çµ³çµ´çµµçµ¶ï¿½çµ¸çµ¹çµºçµ»çµ¼çµ½çµ¾çµ¿ç¶€ç¶�綂綃綄綅綆綇綈綉綊綋綌ç¶�ç¶Žç¶�ç¶�綑綒經綔綕綖綗綘å�¥èˆ°å‰‘饯æ¸�æº…æ¶§å»ºåƒµå§œå°†æµ†æ±Ÿç–†è’‹æ¡¨å¥–è®²åŒ é…±é™�蕉椒ç¤�焦胶交郊浇骄娇嚼æ�…铰矫侥脚狡角饺缴绞剿教酵轿较å�«çª–æ�接皆秸街阶截劫节桔æ�°æ�·ç�«ç«æ´�结解å§�æˆ’è—‰èŠ¥ç•Œå€Ÿä»‹ç–¥è¯«å±Šå·¾ç‹æ–¤é‡‘今津襟紧锦仅谨进é�³æ™‹ç¦�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������継続綛綜ç¶�ç¶žç¶Ÿç¶ ç¶¡ç¶¢ç¶£ç¶¤ç¶¥ç¶§ç¶¨ç¶©ç¶ªç¶«ç¶¬ç¶ç¶¯ç¶°ç¶±ç¶²ç¶³ç¶´ç¶µç¶¶ç¶·ç¶¸ç¶¹ç¶ºç¶»ç¶¼ç¶½ç¶¾ç¶¿ç·€ç·�緂緃緄緅緆緇緈緉緊緋緌ç·�ç·Žç·�ç·�緑緒緓緔緕緖緗緘緙�線緛緜ç·�ç·žç·Ÿç· ç·¡ç·¢ç·£ç·¤ç·¥ç·¦ç·§ç·¨ç·©ç·ªç·«ç·¬ç·ç·®ç·¯ç·°ç·±ç·²ç·³ç·´ç·µç·¶ç··ç·¸ç·¹ç·ºå°½åвè�†å…¢èŒŽç�›æ™¶é²¸äº¬æƒŠç²¾ç²³ç»�äº•è¦æ™¯é¢ˆé�™å¢ƒæ•¬é•œå¾„ç—‰é�–竟竞净炯窘æ�ªç©¶çº 玖éŸä¹…ç�¸ä¹�é…’åŽ©æ•‘æ—§è‡¼èˆ…å’Žå°±ç–šéž æ‹˜ç‹™ç–½å±…é©¹è�Šå±€å’€çŸ©ä¸¾æ²®è�šæ‹’æ�®å·¨å…·è·�踞锯俱å�¥æƒ§ç‚¬å‰§æ��鹃娟倦眷å�·ç»¢æ’…攫抉掘倔爵觉决诀ç»�å�‡è�Œé’§å†›å�›å³»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀ç¸�縂縃縄縅縆縇縈縉縊縋縌ç¸�縎ç¸�ç¸�縑縒縓縔縕縖縗縘縙縚縛縜ç¸�ç¸žç¸Ÿç¸ ç¸¡ç¸¢ç¸£ç¸¤ç¸¥ç¸¦ç¸§ç¸¨ç¸©ç¸ªç¸«ç¸¬ç¸ç¸®ç¸¯ç¸°ç¸±ç¸²ç¸³ç¸´ç¸µç¸¶ç¸·ç¸¸ç¸¹ï¿½ç¸ºç¸¼ç¸½ç¸¾ç¸¿ç¹€ç¹‚繃繄繅繆繈繉繊繋繌ç¹�繎ç¹�ç¹�繑繒繓織繕繖繗繘繙繚繛繜ç¹�俊竣浚郡éª�喀咖å�¡å’¯å¼€æ�©æ¥·å‡¯æ…¨åˆŠå ªå‹˜å�Žç �çœ‹åº·æ…·ç³ æ‰›æŠ—äº¢ç‚•è€ƒæ‹·çƒ¤é� å�·è‹›æŸ¯æ£µç£•颗科壳咳å�¯æ¸´å…‹åˆ»å®¢è¯¾è‚¯å•ƒåž¦æ�³å�‘å�空æ��å”æŽ§æŠ å�£æ‰£å¯‡æž¯å“窟苦酷库裤夸垮挎跨胯å�—ç·ä¾©å¿«å®½æ¬¾åŒ¡ç�狂框矿眶旷况äº�盔岿窥葵奎é�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¹žç¹Ÿç¹ ç¹¡ç¹¢ç¹£ç¹¤ç¹¥ç¹¦ç¹§ç¹¨ç¹©ç¹ªç¹«ç¹¬ç¹ç¹®ç¹¯ç¹°ç¹±ç¹²ç¹³ç¹´ç¹µç¹¶ç¹·ç¹¸ç¹¹ç¹ºç¹»ç¹¼ç¹½ç¹¾ç¹¿çº€çº�纃纄纅纆纇纈纉纊纋續çº�纎çº�çº�纑纒纓纔纕纖纗纘纙纚纜çº�纞�纮纴纻纼绖绤绬绹缊ç¼�缞缷缹缻缼缽缾缿罀ç½�罃罆罇罈罉罊罋罌ç½�罎ç½�罒罓馈愧溃å�¤æ˜†æ�†å›°æ‹¬æ‰©å»“阔垃拉喇蜡腊辣啦莱æ�¥èµ–è“�婪æ �拦篮阑兰澜谰æ�½è§ˆæ‡’缆烂滥ç�…榔狼廊郎朗浪æ�žåŠ³ç‰¢è€�佬姥酪烙æ¶�å‹’ä¹�é›·é•蕾磊累儡垒擂肋类泪棱楞冷厘梨çŠ�黎篱狸离漓ç�†æ�Žé‡Œé²¤ç¤¼èމè�”å��æ —ä¸½åŽ‰åŠ±ç ¾åŽ†åˆ©å‚ˆä¾‹ä¿��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������罖罙罛罜ç½�ç½žç½ ç½£ç½¤ç½¥ç½¦ç½§ç½«ç½¬ç½ç½¯ç½°ç½³ç½µç½¶ç½·ç½¸ç½ºç½»ç½¼ç½½ç½¿ç¾€ç¾‚羃羄羅羆羇羈羉羋ç¾�ç¾�ç¾�ç¾‘ç¾’ç¾“ç¾•ç¾–ç¾—ç¾˜ç¾™ç¾›ç¾œç¾ ç¾¢ç¾£ç¾¥ç¾¦ç¾¨ç¾©ç¾ªç¾«ç¾¬ç¾ç¾®ç¾±ï¿½ç¾³ç¾´ç¾µç¾¶ç¾·ç¾ºç¾»ç¾¾ç¿€ç¿‚翃翄翆翇翈翉翋ç¿�ç¿�ç¿�翑習翓翖翗翙翚翛翜ç¿�翞翢翣痢立粒沥隶力璃哩俩è�”莲连镰廉怜涟帘敛脸链æ�‹ç‚¼ç»ƒç²®å‡‰æ¢�粱良两辆é‡�晾亮谅撩è�Šåƒšç–—燎寥辽潦了撂镣廖料列裂烈劣猎ç�³æž—磷霖临邻鳞淋凛èµ�å��拎玲è�±é›¶é¾„铃伶羚凌ç�µé™µå²é¢†å�¦ä»¤æºœç�‰æ¦´ç¡«é¦�留刘瘤æµ�柳å…é¾™è�‹å’™ç¬¼çª¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬ç¿ç¿¯ç¿²ç¿´ç¿µç¿¶ç¿·ç¿¸ç¿¹ç¿ºç¿½ç¿¾ç¿¿è€‚耇耈耉耊耎è€�耑耓耚耛è€�耞耟耡耣耤耫耬è€è€®è€¯è€°è€²è€´è€¹è€ºè€¼è€¾è�€è��è�„è�…è�‡è�ˆè�‰è�Žè��è��è�‘è�“è�•è�–è�—�è�™è�›è�œè��è�žè�Ÿè� è�¡è�¢è�£è�¤è�¥è�¦è�§è�¨è�«è�¬è�è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¸è�¹è�ºè�»è�¼è�½éš†åž„拢陇楼娄æ�‚篓æ¼�陋芦å�¢é¢…åº�炉掳å�¤è™�é²�麓碌露路赂鹿潞禄录陆戮驴å�•é“�ä¾£æ—…å±¥å±¡ç¼•è™‘æ°¯å¾‹çŽ‡æ»¤ç»¿å³¦æŒ›åªæ»¦å�µä¹±æŽ 略抡轮伦仑沦纶论è��螺罗逻锣箩骡裸è�½æ´›éª†ç»œå¦ˆéº»çŽ›ç �蚂马骂嘛å�—埋买麦å�–迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������è�¾è‚�肂肅肈肊è‚�肎è‚�è‚�肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋èƒ�èƒ�èƒ‘èƒ’èƒ“èƒ”èƒ•èƒ˜èƒŸèƒ èƒ¢èƒ£èƒ¦èƒ®èƒµèƒ·èƒ¹èƒ»èƒ¾èƒ¿è„€è„�脃脄脅脇脈脋�脌脕脗脙脛脜è„�è„Ÿè„ è„¡è„¢è„£è„¤è„¥è„¦è„§è„¨è„©è„ªè„«è„脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆å�¯èŒ‚冒帽貌贸么玫枚梅酶霉煤没眉媒é•�æ¯�美昧å¯�妹媚门闷们è�Œè’™æª¬ç›Ÿé”°çŒ›æ¢¦åŸçœ¯é†šé�¡ç³œè¿·è°œå¼¥ç±³ç§˜è§…æ³Œèœœå¯†å¹‚æ£‰çœ ç»µå†•å…�勉娩缅é�¢è‹—æ��çž„è—�秒渺庙妙蔑ç�民抿皿æ•�悯闽明螟鸣é“å��命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������腀è…�腂腃腄腅腇腉è…�è…Žè…�腒腖腗腘腛腜è…�腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸è†�膃膄膅膆膇膉膋膌è†�膎è†�è†’è†“è†”è†•è†–è†—è†™è†šè†žè†Ÿè† è†¡è†¢è†¤è†¥ï¿½è†§è†©è†«è†¬è†è†®è†¯è†°è†±è†²è†´è†µè†¶è†·è†¸è†¹è†¼è†½è†¾è†¿è‡„臅臇臈臉臋è‡�臎è‡�è‡�è‡‘è‡’è‡“æ‘¹è˜‘æ¨¡è†œç£¨æ‘©é”æŠ¹æœ«èŽ«å¢¨é»˜æ²«æ¼ å¯žé™Œè°‹ç‰ŸæŸ�拇牡亩姆æ¯�墓暮幕募慕木目ç�¦ç‰§ç©†æ‹¿å“ªå‘�é’ é‚£å¨œçº³æ°–ä¹ƒå¥¶è€�奈å�—ç”·éš¾å›ŠæŒ è„‘æ�¼é—¹æ·–å‘¢é¦�å†…å«©èƒ½å¦®éœ“å€ªæ³¥å°¼æ‹Ÿä½ åŒ¿è…»é€†æººè”«æ‹ˆå¹´ç¢¾æ’µæ�»å¿µå¨˜é…¿é¸Ÿå°¿æ��è�‚å½å•®é•Šé•�æ¶…æ‚¨æŸ ç‹žå‡�å®��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜è‡�è‡žè‡Ÿè‡ è‡¡è‡¢è‡¤è‡¥è‡¦è‡¨è‡©è‡«è‡®è‡¯è‡°è‡±è‡²è‡µè‡¶è‡·è‡¸è‡¹è‡ºè‡½è‡¿èˆƒèˆ‡èˆˆèˆ‰èˆŠèˆ‹èˆŽèˆ�舑舓舕舖舗舘舙舚èˆ�èˆ èˆ¤èˆ¥èˆ¦èˆ§èˆ©èˆ®èˆ²èˆºèˆ¼èˆ½èˆ¿ï¿½è‰€è‰�艂艃艅艆艈艊艌è‰�艎è‰�艑艒艓艔艕艖艗艙艛艜è‰�è‰žè‰ è‰¡è‰¢è‰£è‰¤è‰¥è‰¦è‰§è‰©æ‹§æ³žç‰›æ‰é’®çº½è„“浓农弄奴努怒女暖è™�疟挪懦糯诺哦欧鸥殴藕呕å�¶æ²¤å•ªè¶´çˆ¬å¸•怕ç�¶æ‹�排牌徘湃派攀潘盘ç£�盼畔判å�›ä¹“庞æ—�耪胖抛咆刨炮è¢�跑泡呸胚培裴赔陪é…�ä½©æ²›å–·ç›†ç °æŠ¨çƒ¹æ¾Žå½è“¬æ£šç¡¼ç¯·è†¨æœ‹é¹�æ�§ç¢°å�¯ç ’霹批披劈ç�µæ¯—�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������艪艫艬è‰è‰±è‰µè‰¶è‰·è‰¸è‰»è‰¼èŠ€èŠ�芃芅芆芇芉芌èŠ�èŠ“èŠ”èŠ•èŠ–èŠšèŠ›èŠžèŠ èŠ¢èŠ£èŠ§èŠ²èŠµèŠ¶èŠºèŠ»èŠ¼èŠ¿è‹€è‹‚è‹ƒè‹…è‹†è‹‰è‹�苖苙苚è‹�苢苧苨苩苪苬è‹è‹®è‹°è‹²è‹³è‹µè‹¶è‹¸ï¿½è‹ºè‹¼è‹½è‹¾è‹¿èŒ€èŒŠèŒ‹èŒ�èŒ�茒茓茖茘茙èŒ�èŒžèŒŸèŒ èŒ¡èŒ¢èŒ£èŒ¤èŒ¥èŒ¦èŒ©èŒªèŒ®èŒ°èŒ²èŒ·èŒ»èŒ½å•¤è„¾ç–²çš®åŒ¹ç—žåƒ»å±�è¬ç¯‡å��片骗飘漂瓢票撇瞥拼频贫å“�è�˜ä¹’å�ªè‹¹è��å¹³å‡ç“¶è¯„å±�å�¡æ³¼é¢‡å©†ç ´é„迫粕剖扑铺仆莆葡è�©è’²åŸ”朴圃普浦谱æ›�ç€‘æœŸæ¬ºæ –æˆšå¦»ä¸ƒå‡„æ¼†æŸ’æ²�其棋奇æ§ç•¦å´Žè„�é½�旗祈ç¥�骑起岂乞ä¼�å�¯å¥‘ç Œå™¨æ°”è¿„å¼ƒæ±½æ³£è®«æŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������茾茿è��è�‚è�„è�…è�ˆè�Šè�‹è�Œè��è�Žè�“è�•è�–è�—è�˜è�™è��è�¢è�°è�±è�²è�³è�´è�µè�¶è�¹è�ºè�¾è�¿èŽ€èŽ�莂莃莄莇莈莊莋莌èŽ�èŽ�èŽ�莑莔莕莖莗莙莚èŽ�莟莡莢莣莤莥莦莧莬èŽèŽ®ï¿½èŽ¯èŽµèŽ»èŽ¾èŽ¿è�‚è�ƒè�„è�†è�ˆè�‰è�‹è��è�Žè��è�‘è�’è�“è�•è�—è�™è�šè�›è�žè�¢è�£è�¤è�¦è�§è�¨è�«è�¬è�æ�°æ´½ç‰µæ‰¦é’Žé“…å�ƒè¿�ç¾ä»Ÿè°¦ä¹¾é»”钱钳å‰�潜é�£æµ…è°´å ‘åµŒæ¬ æ‰æžªå‘›è…”羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘å³ä¿�çª�切茄且怯窃钦侵亲秦ç�´å‹¤èŠ¹æ“’ç¦½å¯�æ²�é�’轻氢倾å�¿æ¸…擎晴氰情顷请庆ç�¼ç©·ç§‹ä¸˜é‚±ç�ƒæ±‚å›šé…‹æ³…è¶‹åŒºè›†æ›²èº¯å±ˆé©±æ¸ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"����������������������������������������������������������������è�®è�¯è�³è�´è�µè�¶è�·è�ºè�»è�¼è�¾è�¿è�€è�‚è�…è�‡è�ˆè�‰è�Šè��è�’è�“è�”è�•è�–è�—è�™è�šè�›è�žè�Ÿè� è�¡è�¢è�£è�©è�ªè�«è�¬è�è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¹è�ºè�»è�¾è�¿è‘€è‘�葂葃葄葅葇葈葉�葊葋葌è‘�葎è‘�è‘�葒葓葔葕葖葘è‘�è‘žè‘Ÿè‘ è‘¢è‘¤è‘¥è‘¦è‘§è‘¨è‘ªè‘®è‘¯è‘°è‘²è‘´è‘·è‘¹è‘»è‘¼å�–娶龋趣去圈颧æ�ƒé†›æ³‰å…¨ç—Šæ‹³çŠ¬åˆ¸åŠ�缺炔瘸å�´é¹Šæ¦·ç¡®é›€è£™ç¾¤ç„¶ç‡ƒå†‰æŸ“瓤壤攘嚷让饶扰绕惹çƒå£¬ä»�人å¿�韧任认刃妊纫扔ä»�日戎茸蓉è�£èž�熔溶容绒冗æ�‰æŸ”è‚‰èŒ¹è •å„’åºå¦‚辱乳æ±�入褥软阮蕊瑞é”�闰润若弱撒洒è�¨è…®é³ƒå¡žèµ›ä¸‰å���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"����������������������������������������������������������������葽葾葿蒀è’�蒃蒄蒅蒆蒊è’�è’�è’�蒑蒒蒓蒔蒕蒖蒘蒚蒛è’�è’žè’Ÿè’ è’¢è’£è’¤è’¥è’¦è’§è’¨è’©è’ªè’«è’¬è’蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎è“�蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫è“蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀è”�蔂伞散桑嗓丧æ�”éªšæ‰«å«‚ç‘Ÿè‰²æ¶©æ£®åƒ§èŽŽç ‚æ�€åˆ¹æ²™çº±å‚»å•¥ç…žç›æ™’ç�Šè‹«æ�‰å±±åˆ 煽衫闪陕擅赡膳善汕扇缮墒伤商èµ�晌上尚裳梢æ�Žç¨�烧èŠ�勺韶少哨邵ç»�奢赊蛇舌èˆ�èµ¦æ‘„å°„æ…‘æ¶‰ç¤¾è®¾ç ·ç”³å‘»ä¼¸èº«æ·±å¨ ç»…ç¥žæ²ˆå®¡å©¶ç”šè‚¾æ…Žæ¸—å£°ç”Ÿç”¥ç‰²å�‡ç»³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋è”�蔎è”�è”�蔒蔔蔕蔖蔘蔙蔛蔜è”�è”žè” è”¢è”£è”¤è”¥è”¦è”§è”¨è”©è”ªè”蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀è•�蕂蕄蕅蕆蕇蕋蕌è•�蕎è•�è•�蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜è•�è•Ÿè• è•¡è•¢è•£è•¥è•¦è•§è•©è•ªè•«è•¬è•蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀è–�çœ�盛剩胜圣师失狮施湿诗尸虱å��石拾时什食蚀实识å�²çŸ¢ä½¿å±Žé©¶å§‹å¼�示士世柿事æ‹èª“é€�势是嗜噬适仕ä¾�释饰æ°�市æ�ƒå®¤è§†è¯•收手首守寿授售å�—瘦兽蔬枢梳殊抒输å�”舒淑ç–�书赎å°ç†Ÿè–¯æš‘曙署蜀é»�é¼ å±žæœ¯è¿°æ ‘æ�Ÿæˆ�竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌è–�è–Žè–�薑薒薓薔薕薖薗薘薙薚è–�è–žè–Ÿè– è–¡è–¢è–£è–¥è–¦è–§è–©è–«è–¬è–薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌è—�藎藑藒�藔藖藗藘藙藚藛è—�è—žè—Ÿè— è—¡è—¢è—£è—¥è—¦è—§è—¨è—ªè—«è—¬è—藮藯藰藱藲藳藴藵藶藷藸æ�•刷è€�æ‘”è¡°ç”©å¸…æ “æ‹´éœœå�Œçˆ½è°�æ°´ç�¡ç¨Žå�®çž¬é¡ºèˆœè¯´ç¡•朔çƒ�斯撕嘶æ€�ç§�å�¸ä¸�æ»è‚†å¯ºå—£å››ä¼ºä¼¼é¥²å·³æ�¾è€¸æ€‚颂é€�宋讼诵æ�œè‰˜æ“žå—½è‹�é…¥ä¿—ç´ é€Ÿç²Ÿåƒ³å¡‘æº¯å®¿è¯‰è‚ƒé…¸è’œç®—è™½éš‹éš�绥髓碎å²�ç©—é�‚éš§ç¥Ÿå™æ�Ÿç¬‹è“‘æ¢å”†ç¼©ç��ç´¢é”�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀è˜�蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌è˜�蘎è˜�è˜�蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜è˜�è˜žè˜Ÿè˜ è˜¡è˜¢è˜£è˜¤è˜¥è˜¦è˜¨è˜ªè˜«è˜¬è˜è˜®è˜¯è˜°è˜±è˜²è˜³è˜´è˜µè˜¶è˜·è˜¹è˜ºè˜»è˜½è˜¾è˜¿è™€ï¿½è™�虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜è™�è™Ÿè™ è™¡è™£è™¤è™¥è™¦è™§è™¨è™©è™ªç�挞蹋è¸�胎苔抬å�°æ³°é…žå¤ªæ€�æ±°å��摊贪瘫滩å�›æª€ç—°æ½è°è°ˆå�¦æ¯¯è¢’碳探å�¹ç‚汤塘æ�ªå ‚æ£ è†›å”�糖倘躺淌趟烫æŽ�涛滔绦è�„桃逃淘陶讨套特藤腾疼誊梯剔踢锑æ��题蹄啼体替åš�惕涕剃屉天添填田甜æ�¬èˆ”腆挑æ�¡è¿¢çœºè·³è´´é“�帖厅å�¬çƒƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������è™è™¯è™°è™²è™³è™´è™µè™¶è™·è™¸èšƒèš„蚅蚆蚇蚈蚉蚎èš�èš�èš‘èš’èš”èš–èš—èš˜èš™èššèš›èšžèšŸèš èš¡èš¢èš¥èš¦èš«èšèš®èš²èš³èš·èš¸èš¹èš»èš¼èš½èš¾èš¿è›�蛂蛃蛅蛈蛌è›�蛒蛓蛕蛖蛗蛚蛜�è›�è› è›¡è›¢è›£è›¥è›¦è›§è›¨è›ªè›«è›¬è›¯è›µè›¶è›·è›ºè›»è›¼è›½è›¿èœ�蜄蜅蜆蜋蜌蜎èœ�èœ�蜑蜔蜖汀廷å�œäºåºæŒºè‰‡é€šæ¡�酮瞳å�Œé“œå½¤ç«¥æ¡¶æ�…ç’统痛å�·æŠ•头é€�凸秃çª�å›¾å¾’é€”æ¶‚å± åœŸå��å…”æ¹�团推颓腿蜕褪退å�žå±¯è‡€æ‹–托脱鸵陀驮驼æ¤å¦¥æ‹“唾挖哇蛙洼娃瓦袜æªå¤–豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄å¨��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������蜙蜛èœ�èœŸèœ èœ¤èœ¦èœ§èœ¨èœªèœ«èœ¬èœèœ¯èœ°èœ²èœ³èœµèœ¶èœ¸èœ¹èœºèœ¼èœ½è�€è��è�‚è�ƒè�„è�…è�†è�Šè�‹è��è��è��è�‘è�’è�”è�•è�–è�˜è�šè�›è�œè��è�žè�Ÿè�¡è�¢è�¦è�§è�¨è�©è�ªè�«è�¬è�è�¯è�±è�²è�³è�µï¿½è�·è�¸è�¹è�ºè�¿èž€èž�螄螆螇螉螊螌螎èž�èž�螑螒螔螕螖螘螙螚螛螜èž�èžžèž èž¡èž¢èž£èž¤å·�å¾®å�±éŸ¦è¿�桅围唯惟为æ½�维苇è�Žå§”伟伪尾纬未蔚味ç•�胃喂é�ä½�æ¸è°“尉慰å�«ç˜Ÿæ¸©èšŠæ–‡é—»çº¹å�»ç¨³ç´Šé—®å—¡ç¿�ç“®æŒ�蜗涡çª�我斡å�§æ�¡æ²ƒå·«å‘œé’¨ä¹Œæ±¡è¯¬å±‹æ— 芜梧å�¾å�´æ¯‹æ¦äº”æ�‚å�ˆèˆžä¼�ä¾®å�žæˆŠé›¾æ™¤ç‰©å‹¿åŠ¡æ‚Ÿè¯¯æ˜”ç†™æž�西硒矽晰嘻å�¸é”¡ç‰ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿èŸ�蟂蟃蟄蟅蟇蟈蟉蟌èŸ�蟎èŸ�èŸ�蟔蟕蟖蟗蟘蟙蟚蟜èŸ�蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬èŸèŸ¯èŸ°èŸ±èŸ²èŸ³èŸ´èŸµèŸ¶èŸ·èŸ¸ï¿½èŸºèŸ»èŸ¼èŸ½èŸ¿è €è �è ‚è „è …è †è ‡è ˆè ‰è ‹è Œè �è Žè �è �è ‘è ’è ”è —è ˜è ™è šè œè �è žè Ÿè è £ç¨€æ�¯å¸Œæ‚‰è†�夕惜熄烯溪æ±�犀檄è¢å¸ä¹ 媳喜铣洗系隙æˆ�ç»†çžŽè™¾åŒ£éœžè¾–æš‡å³¡ä¾ ç‹ä¸‹åަå¤�å�“掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷é™�线相厢镶香箱襄湘乡翔祥详想å“�享项巷橡åƒ�å�‘象è�§ç¡�霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è ¤è ¥è ¦è §è ¨è ©è ªè «è ¬è è ®è ¯è °è ±è ³è ´è µè ¶è ·è ¸è ºè »è ½è ¾è ¿è¡�衂衃衆衇衈衉衊衋衎è¡�è¡�衑衒術衕衖衘衚衛衜è¡�è¡žè¡Ÿè¡ è¡¦è¡§è¡ªè¡è¡¯è¡±è¡³è¡´è¡µè¡¶è¡¸è¡¹è¡ºï¿½è¡»è¡¼è¢€è¢ƒè¢†è¢‡è¢‰è¢Šè¢Œè¢Žè¢�è¢�袑袓袔袕袗袘袙袚袛è¢�è¢žè¢Ÿè¢ è¢¡è¢£è¢¥è¢¦è¢§è¢¨è¢©è¢ªå°�å�æ ¡è‚–å•¸ç¬‘æ•ˆæ¥”äº›æ‡è�Žéž‹å��挟æ�ºé‚ªæ–œèƒ�è°�写械å�¸èŸ¹æ‡ˆæ³„泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸æ��性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须å¾�许蓄酗å�™æ—åº�畜æ�¤çµ®å©¿ç»ªç»è½©å–§å®£æ‚¬æ—‹çŽ„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌è£�è£�è£�裑裓裖裗裚裛補è£�è£žè£ è£¡è£¦è£§è£©è£ªè£«è£¬è£è£®è£¯è£²è£µè£¶è£·è£ºè£»è£½è£¿è¤€è¤�褃褄褅褆複褈�褉褋褌è¤�褎è¤�褑褔褕褖褗褘褜è¤�è¤žè¤Ÿè¤ è¤¢è¤£è¤¤è¤¦è¤§è¤¨è¤©è¤¬è¤è¤®è¤¯è¤±è¤²è¤³è¤µè¤·é€‰ç™£çœ©ç»šé�´è–›å¦ç©´é›ªè¡€å‹‹ç†�循旬询寻驯巡殉汛è®è®¯é€Šè¿…压押鸦é¸å‘€ä¸«èŠ½ç‰™èšœå´–è¡™æ¶¯é›…å“‘äºšè®¶ç„‰å’½é˜‰çƒŸæ·¹ç›�ä¸¥ç ”èœ’å²©å»¶è¨€é¢œé˜Žç‚Žæ²¿å¥„æŽ©çœ¼è¡�æ¼”è‰³å °ç‡•åŽŒç šé›�å”�彦焰宴谚验殃央鸯秧æ�¨æ‰¬ä½¯ç–¡ç¾Šæ´‹é˜³æ°§ä»°ç—’å…»æ ·æ¼¾é‚€è…°å¦–ç‘¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌è¥�襎è¥�è¥�襑襒襓襔襕襖襗襘襙襚襛襜è¥�è¥ è¥¡è¥¢è¥£è¥¤è¥¥è¥§è¥¨è¥©è¥ªè¥«è¥¬è¥è¥®è¥¯è¥°è¥±è¥²è¥³è¥´è¥µè¥¶è¥·è¥¸è¥¹è¥ºè¥¼ï¿½è¥½è¥¾è¦€è¦‚覄覅覇覈覉覊見覌è¦�覎è¦�è¦�覑覒覓覔覕視覗覘覙覚覛覜è¦�è¦žè¦Ÿè¦ è¦¡æ‘‡å°§é�¥çª‘谣姚咬舀è�¯è¦�耀椰噎耶爷野冶也页掖业å�¶æ›³è…‹å¤œæ¶²ä¸€å£¹åŒ»æ�–铱ä¾�伊衣é¢�夷é�—移仪胰疑沂宜姨å½�椅èš�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔æ„�毅忆义益溢诣议谊译异翼翌绎茵è�«å› 殷音阴姻å�Ÿé“¶æ·«å¯…饮尹引éš��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬è¦è¦®è¦¯è¦°è¦±è¦²è¦³è¦´è¦µè¦¶è¦·è¦¸è¦¹è¦ºè¦»è¦¼è¦½è¦¾è¦¿è§€è§ƒè§�觓觔觕觗觘觙觛è§�è§Ÿè§ è§¡è§¢è§¤è§§è§¨è§©è§ªè§¬è§è§®è§°è§±è§²è§´è§µè§¶è§·è§¸è§¹è§ºï¿½è§»è§¼è§½è§¾è§¿è¨�訂訃訄訅訆計訉訊訋訌è¨�討è¨�è¨�訑訒訓訔訕訖託記訙訚訛訜è¨�å�°è‹±æ¨±å©´é¹°åº”缨莹è�¤è�¥è�§è�‡è¿Žèµ¢ç›ˆå½±é¢–ç¡¬æ˜ å“Ÿæ‹¥ä½£è‡ƒç—ˆåº¸é›�踊蛹å’�泳涌永æ�¿å‹‡ç”¨å¹½ä¼˜æ‚ 忧尤由邮铀犹油游酉有å�‹å�³ä½‘釉诱å�ˆå¹¼è¿‚淤于盂榆虞愚舆余俞逾鱼愉æ¸�渔隅予娱雨与屿禹宇è¯ç¾½çŽ‰åŸŸèŠ‹éƒ�å��é�‡å–»å³ªå¾¡æ„ˆæ¬²ç‹±è‚²èª‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨žè¨Ÿè¨ è¨¡è¨¢è¨£è¨¤è¨¥è¨¦è¨§è¨¨è¨©è¨ªè¨«è¨¬è¨è¨®è¨¯è¨°è¨±è¨²è¨³è¨´è¨µè¨¶è¨·è¨¸è¨¹è¨ºè¨»è¨¼è¨½è¨¿è©€è©�詂詃詄詅詆詇詉詊詋詌è©�詎è©�è©�詑詒詓詔評詖詗詘詙詚詛詜è©�è©žï¿½è©Ÿè© è©¡è©¢è©£è©¤è©¥è©¦è©§è©¨è©©è©ªè©«è©¬è©è©®è©¯è©°è©±è©²è©³è©´è©µè©¶è©·è©¸è©ºè©»è©¼è©½è©¾è©¿èª€æµ´å¯“裕预豫é©é¸³æ¸Šå†¤å…ƒåž£è¢�原æ�´è¾•å›å‘˜åœ†çŒ¿æº�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨å…�è¿�è•´é…�晕韵å•åŒ�ç ¸æ�‚æ ½å“‰ç�¾å®°è½½å†�在咱攒暂赞赃è„�葬é�糟凿藻枣早澡蚤èº�å™ªé€ çš‚ç�¶ç‡¥è´£æ‹©åˆ™æ³½è´¼æ€Žå¢žæ†Žæ›¾èµ 扎喳渣æœè½§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������èª�誂誃誄誅誆誇誈誋誌èª�誎èª�èª�誑誒誔誕誖誗誘誙誚誛誜èª�èªžèªŸèª èª¡èª¢èª£èª¤èª¥èª¦èª§èª¨èª©èªªèª«èª¬èªèª®èª¯èª°èª±èª²èª³èª´èªµèª¶èª·èª¸èª¹èªºèª»èª¼èª½èª¾èª¿è«€è«�諂�諃諄諅諆談諈諉諊請諌è«�諎è«�è«�諑諒諓諔諕論諗諘諙諚諛諜è«�è«žè«Ÿè« è«¡è«¢è«£é“¡é—¸çœ¨æ …æ¦¨å’‹ä¹�炸诈摘斋宅窄债寨瞻毡詹粘沾ç›�æ–©è¾—å´å±•è˜¸æ ˆå� æˆ˜ç«™æ¹›ç»½æ¨Ÿç« å½°æ¼³å¼ æŽŒæ¶¨æ�–丈å¸�è´¦ä»—èƒ€ç˜´éšœæ‹›æ˜æ‰¾æ²¼èµµç…§ç½©å…†è‚‡å�¬é�®æŠ˜å“²è›°è¾™è€…锗蔗这浙ç��æ–ŸçœŸç”„ç §è‡»è´žé’ˆä¾¦æž•ç–¹è¯Šéœ‡æŒ¯é•‡é˜µè’¸æŒ£ç��å¾�ç‹°äº‰æ€”æ•´æ‹¯æ£æ”¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬è«è«®è«¯è«°è«±è«²è«³è«´è«µè«¶è«·è«¸è«¹è«ºè«»è«¼è«½è«¾è«¿è¬€è¬�謂謃謄謅謆謈謉謊謋謌è¬�謎è¬�è¬�謑謒謓謔謕謖謗謘謙謚講謜è¬�è¬žè¬Ÿè¬ è¬¡è¬¢è¬£ï¿½è¬¤è¬¥è¬§è¬¨è¬©è¬ªè¬«è¬¬è¬è¬®è¬¯è¬°è¬±è¬²è¬³è¬´è¬µè¬¶è¬·è¬¸è¬¹è¬ºè¬»è¬¼è¬½è¬¾è¬¿è€è�è‚èƒè„è…帧症郑è¯�èŠ�æž�支å�±èœ˜çŸ¥è‚¢è„‚æ±�之织è�Œç›´æ¤�殖执值侄å�€æŒ‡æ¢è¶¾å�ªæ—¨çº¸å¿—挚掷至致置帜峙制智秩稚质炙痔滞治窒ä¸ç›…å¿ é’Ÿè¡·ç»ˆç§�è‚¿é‡�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤ç� æ ªè››æœ±çŒªè¯¸è¯›é€�竹烛煮拄瞩嘱主著柱助蛀贮铸ç‘�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������è†è‡èˆè‰èŠè‹èŒè�èŽè�è�è‘è’è“è”è•è–è—è˜è™èšè›èœè�èžèŸè è¡è¢è£è¤è¥è§è¨è©èªè«èè®è¯è°è±è²è³è´èµè¶è·è¸è¹èºè»è¼è½è¾è¿è®€è®�讂讃讄讅讆�讇讈讉變讋讌è®�讎è®�è®�讑讒讓讔讕讖讗讘讙讚讛讜è®�讞讟讬讱讻诇è¯�诪谉谞ä½�注ç¥�é©»æŠ“çˆªæ‹½ä¸“ç –è½¬æ’°èµšç¯†æ¡©åº„è£…å¦†æ’žå£®çŠ¶æ¤Žé”¥è¿½èµ˜å� 缀谆准æ�‰æ‹™å�“桌ç�¢èŒ�酌啄ç�€ç�¼æµŠå…¹å’¨èµ„姿滋淄åœç´«ä»”籽滓å�自æ¸�å—鬃棕踪宗综总纵邹走å¥�æ��ç§Ÿè¶³å�’æ—�祖诅阻组钻纂嘴醉最罪尊é�µæ˜¨å·¦ä½�柞å�šä½œå��座î �î ‘î ’î “î ”ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋è±�豎è±�è±�豑豒豓豔豖豗豘豙豛豜è±�è±žè±Ÿè± è±£è±¤è±¥è±¦è±§è±¨è±©è±¬è±è±®è±¯è±°è±±è±²è±´è±µè±¶è±·è±»è±¼è±½è±¾è±¿è²€è²�貃貄貆貇�貈貋è²�貎è²�è²�貑貒貓貕貖貗貙貚貛貜è²�è²žè²Ÿè² è²¡è²¢è²£è²¤è²¥è²¦è²§è²¨è²©è²ªè²«è²¬è²äº�丌兀ä¸�廿å�…丕亘丞鬲å¬å™©ä¸¨ç¦ºä¸¿åŒ•乇å¤çˆ»å�®æ°�囟胤馗毓ç�¾é¼—丶亟é¼�乜乩亓芈å›å•¬å˜�仄åŽ�åŽ�厣厥厮é�¥èµ�匚å�µåŒ¦åŒ®åŒ¾èµœå�¦å�£åˆ‚刈刎åˆåˆ³åˆ¿å‰€å‰Œå‰žå‰¡å‰œè’¯å‰½åŠ‚åŠ�åŠ�劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚ä½��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀è³�賂賃賄賅賆資賈賉賊賋賌è³�賎è³�è³�賑賒賓賔賕賖賗賘賙賚賛賜è³�è³žè³Ÿè³ è³¡è³¢è³£è³¤è³¥è³¦è³§è³¨è³©è³ªè³«è³¬ï¿½è³è³®è³¯è³°è³±è³²è³³è³´è³µè³¶è³·è³¸è³¹è³ºè³»è³¼è³½è³¾è³¿è´€è´�贂贃贄贅贆贇贈贉贊贋贌è´�佟佗伲伽佶佴侑侉侃ä¾�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩å�Œä¿³å€¬å€�倮å€ä¿¾å€œå€Œå€¥å€¨å�¾å�ƒå�•å�ˆå�Žå�¬å�»å‚¥å‚§å‚©å‚ºåƒ–儆åƒåƒ¬åƒ¦åƒ®å„‡å„‹ä»�æ°½ä½˜ä½¥ä¿Žé¾ æ±†ç±´å…®å·½é»‰é¦˜å†�夔勹åŒ�訇åŒ�å‡«å¤™å…•äº å…–äº³è¡®è¢¤äºµè„”è£’ç¦€å¬´è ƒç¾¸å†«å†±å†½å†¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"����������������������������������������������������������������贎è´�è´�è´‘è´’è´“è´”è´•è´–è´—è´˜è´™è´šè´›è´œè´ èµ‘èµ’èµ—èµŸèµ¥èµ¨èµ©èµªèµ¬èµ®èµ¯èµ±èµ²èµ¸èµ¹èµºèµ»èµ¼èµ½èµ¾èµ¿è¶€è¶‚è¶ƒè¶†è¶‡è¶ˆè¶‰è¶Œè¶�è¶Žè¶�è¶�趒趓趕趖趗趘趙趚趛趜è¶�è¶žè¶ è¶¡ï¿½è¶¢è¶¤è¶¥è¶¦è¶§è¶¨è¶©è¶ªè¶«è¶¬è¶è¶®è¶¯è¶°è¶²è¶¶è¶·è¶¹è¶»è¶½è·€è·�跂跅跇跈跉跊è·�è·�è·’è·“è·”å‡‡å†–å†¢å†¥è® è®¦è®§è®ªè®´è®µè®·è¯‚è¯ƒè¯‹è¯�è¯Žè¯’è¯“è¯”è¯–è¯˜è¯™è¯œè¯Ÿè¯ è¯¤è¯¨è¯©è¯®è¯°è¯³è¯¶è¯¹è¯¼è¯¿è°€è°‚è°„è°‡è°Œè°�谑谒谔谕谖谙谛谘è°�è°Ÿè° è°¡è°¥è°§è°ªè°«è°®è°¯è°²è°³è°µè°¶å�©å�ºé˜�阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈éš�éš—éš°é‚—é‚›é‚�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è·•è·˜è·™è·œè· è·¡è·¢è·¥è·¦è·§è·©è·è·®è·°è·±è·²è·´è·¶è·¼è·¾è·¿è¸€è¸�踂踃踄踆踇踈踋è¸�踎è¸�è¸‘è¸’è¸“è¸•è¸–è¸—è¸˜è¸™è¸šè¸›è¸œè¸ è¸¡è¸¤è¸¥è¸¦è¸§è¸¨è¸«è¸è¸°è¸²è¸³è¸´è¸¶è¸·è¸¸è¸»è¸¼è¸¾ï¿½è¸¿è¹ƒè¹…蹆蹌è¹�蹎è¹�è¹�蹓蹔蹕蹖蹗蹘蹚蹛蹜è¹�è¹žè¹Ÿè¹ è¹¡è¹¢è¹£è¹¤è¹¥è¹§è¹¨è¹ªè¹«è¹®è¹±é‚¸é‚°éƒ�郅邾éƒ�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆åˆ�奂劢劬åŠåŠ¾å“¿å‹�å‹–å‹°å�Ÿç‡®çŸ�廴凵凼鬯厶å¼�畚巯å�Œåž©åž¡å¡¾å¢¼å£…壑圩圬圪圳圹圮圯å�œåœ»å�‚å�©åž…å�«åž†å�¼å�»å�¨å�å�¶å�³åžåž¤åžŒåž²åŸ�åž§åž´åž“åž åŸ•åŸ˜åŸšåŸ™åŸ’åž¸åŸ´åŸ¯åŸ¸åŸ¤åŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌èº�躎躑躒躓躕躖躗躘躙躚躛èº�èºŸèº èº¡èº¢èº£èº¤èº¥èº¦èº§èº¨èº©èºªèºèº®èº°èº±èº³èº´èºµèº¶èº·èº¸èº¹èº»èº¼èº½èº¾èº¿è»€è»�軂�軃軄軅軆軇軈軉車軋軌è»�è»�è»�軑軒軓軔軕軖軗軘軙軚軛軜è»�è»žè»Ÿè» è»¡è»¢è»£è»¤å ‹å �埽åŸå €å žå ™å¡„å 塥塬å¢�墉墚墀馨鼙懿艹艽艿èŠ�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌è‹�芩芴芡芪芟苄苎芤苡茉苷苤èŒ�èŒ‡è‹œè‹´è‹’è‹˜èŒŒè‹»è‹“èŒ‘èŒšèŒ†èŒ”èŒ•è‹ è‹•èŒœè�‘è�›è�œèŒˆèŽ’èŒ¼èŒ´èŒ±èŽ›è�žèŒ¯è��è�‡è�ƒè�Ÿè�€èŒ—è� èŒèŒºèŒ³è�¦è�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬è»è»®è»¯è»°è»±è»²è»³è»´è»µè»¶è»·è»¸è»¹è»ºè»»è»¼è»½è»¾è»¿è¼€è¼�輂較輄輅輆輇輈載輊輋輌è¼�輎è¼�è¼�輑輒輓輔輕輖輗輘輙輚輛輜è¼�è¼žè¼Ÿè¼ è¼¡è¼¢è¼£ï¿½è¼¤è¼¥è¼¦è¼§è¼¨è¼©è¼ªè¼«è¼¬è¼è¼®è¼¯è¼°è¼±è¼²è¼³è¼´è¼µè¼¶è¼·è¼¸è¼¹è¼ºè¼»è¼¼è¼½è¼¾è¼¿è½€è½�轂轃轄è�¨èŒ›è�©è�¬è�ªè�è�®èްè�¸èŽ³èŽ´èŽ èŽªèŽ“èŽœèŽ…è�¼èŽ¶èŽ©è�½èޏè�»èŽ˜èŽžèŽ¨èŽºèŽ¼è��è��è�¥è�˜å ‡è�˜è�‹è��è�½è�–è�œè�¸è�‘è�†è�”è�Ÿè��è�ƒè�¸è�¹è�ªè�…è�€è�¦è�°è�¡è‘œè‘‘葚葙葳蒇蒈葺蒉葸è�¼è‘†è‘©è‘¶è’Œè’Žè�±è‘è“�è“�è“�è“¦è’½è““è“Šè’¿è’ºè“ è’¡è’¹è’´è’—è“¥è“£è”Œç”�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌è½�轎è½�è½�轑轒轓轔轕轖轗轘轙轚轛轜è½�è½žè½Ÿè½ è½¡è½¢è½£è½¤è½¥è½ªè¾€è¾Œè¾’è¾�è¾ è¾¡è¾¢è¾¤è¾¥è¾¦è¾§è¾ªè¾¬è¾è¾®è¾¯è¾²è¾³è¾´è¾µè¾·è¾¸è¾ºè¾»è¾¼è¾¿è¿€è¿ƒè¿†ï¿½è¿‰è¿Šè¿‹è¿Œè¿�è¿�è¿’è¿–è¿—è¿šè¿ è¿¡è¿£è¿§è¿¬è¿¯è¿±è¿²è¿´è¿µè¿¶è¿ºè¿»è¿¼è¿¾è¿¿é€‡é€ˆé€Œé€Žé€“é€•é€˜è•–è”»è“¿è“¼è•™è•ˆè•¨è•¤è•žè•ºçž¢è•ƒè•²è•»è–¤è–¨è–‡è–�蕹薮薜薅薹薷薰藓è—�藜藿蘧蘅蘩蘖蘼廾弈夼å¥�耷奕奚奘åŒ�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹æ�‹æ�ƒæŽæ�¶æ�±æ�ºæŽŽæŽ´æ�掬掊æ�©æŽ®æŽ¼æ�²æ�¸æ� æ�¿æ�„æ�žæ�Žæ‘’æ�†æŽ¾æ‘…æ‘�æ�‹æ�›æ� æ�Œæ�¦æ�¡æ‘žæ’„æ‘æ’–�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿é�€é�ƒé�…é�†é�ˆé�‰é�Šé�‹é�Œé�Žé�”é�•é�–é�™é�šé�œé��é�žé�Ÿé� é�¡é�¤é�¦é�§é�©é�ªé�«é�¬é�¯é�°é�±é�²é�³é�¶é�·é�¸é�¹é�ºé�»é�¼é�¾é‚��還邅邆邇邉邊邌é‚�邎é‚�é‚�é‚’é‚”é‚–é‚˜é‚šé‚œé‚žé‚Ÿé‚ é‚¤é‚¥é‚§é‚¨é‚©é‚«é‚邲邷邼邽邿郀摺撷撸撙撺擀æ“�擗擤擢攉攥攮弋忒甙弑å�Ÿå�±å�½å�©å�¨å�»å�’å�–å�†å‘‹å‘’呓呔呖呃å�¡å‘—å‘™å�£å�²å’‚咔呷呱呤咚咛咄呶呦å’�å“�å’哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤å“�å“�å“žå”›å“§å” å“½å””å“³å”¢å”£å”�唑唧唪啧å–�喵啉å•å•�啕唿å•�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌éƒ�éƒ’éƒ”éƒ•éƒ–éƒ˜éƒ™éƒšéƒžéƒŸéƒ éƒ£éƒ¤éƒ¥éƒ©éƒªéƒ¬éƒ®éƒ°éƒ±éƒ²éƒ³éƒµéƒ¶éƒ·éƒ¹éƒºéƒ»éƒ¼éƒ¿é„€é„�鄃鄅鄆鄇鄈鄉鄊鄋鄌é„�鄎é„�é„�鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�é„�é„Ÿé„ é„¡é„¤é„¥é„¦é„§é„¨é„©é„ªé„«é„¬é„鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀é…�酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈å–�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦å—�嗄嗯嗥嗲嗳嗌å—�嗨嗵嗤辔嘞嘈嘌å˜�嘤嘣嗾嘀嘧å˜å™˜å˜¹å™—嘬å™�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗å›�囡囵囫囹囿圄圊圉圜å¸�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é……é…‡é…ˆé…‘é…“é…”é…•é…–é…˜é…™é…›é…œé…Ÿé… é…¦é…§é…¨é…«é…酳酺酻酼醀é†�醂醃醄醆醈醊醎é†�醓醔醕醖醗醘醙醜é†�é†žé†Ÿé† é†¡é†¤é†¥é†¦é†§é†¨é†©é†«é†¬é†°é†±é†²é†³é†¶é†·é†¸é†¹é†»ï¿½é†¼é†½é†¾é†¿é‡€é‡�釂釃釄釅釆釈釋é‡�釒釓釔釕釖釗釘釙釚釛é‡�é‡žé‡Ÿé‡ é‡¡é‡¢é‡£é‡¤é‡¥å¸·å¹„å¹”å¹›å¹žå¹¡å²Œå±ºå²�å²�岖岈岘岙岑岚岜岵岢岽岬岫岱岣å³�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯åµ�嵫嵋嵊嵩嵴嶂嶙å¶�豳嶷巅彳彷徂徇徉後徕徙徜徨å¾å¾µå¾¼è¡¢å½¡çŠçŠ°çŠ´çŠ·çŠ¸ç‹ƒç‹�狎ç‹�狒狨狯狩狲狴狷çŒ�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬é‡é‡®é‡¯é‡°é‡±é‡²é‡³é‡´é‡µé‡¶é‡·é‡¸é‡¹é‡ºé‡»é‡¼é‡½é‡¾é‡¿éˆ€éˆ�鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌éˆ�鈎éˆ�éˆ�鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜éˆ�éˆžéˆŸéˆ éˆ¡éˆ¢éˆ£éˆ¤ï¿½éˆ¥éˆ¦éˆ§éˆ¨éˆ©éˆªéˆ«éˆ¬éˆéˆ®éˆ¯éˆ°éˆ±éˆ²éˆ³éˆ´éˆµéˆ¶éˆ·éˆ¸éˆ¹éˆºéˆ»éˆ¼éˆ½éˆ¾éˆ¿é‰€é‰�鉂鉃鉄鉅狻猗猓猡猊猞çŒ�猕猢猹猥猬猸猱ç��ç��ç�—ç� ç�¬ç�¯ç�¾èˆ›å¤¥é£§å¤¤å¤‚饣饧饨饩饪饫饬饴饷饽馀馄馇馊é¦�é¦�é¦‘é¦“é¦”é¦•åº€åº‘åº‹åº–åº¥åº åº¹åºµåº¾åº³èµ“å»’å»‘å»›å»¨å»ªè†ºå¿„å¿‰å¿–å¿�怃忮怄忡忤忾怅怆忪å¿å¿¸æ€™æ€µæ€¦æ€›æ€�æ€�怩怫怊怿怡æ�¸æ�¹æ�»æ�ºæ�‚�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌é‰�鉎é‰�é‰�鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜é‰�é‰žé‰Ÿé‰ é‰¡é‰¢é‰£é‰¤é‰¥é‰¦é‰§é‰¨é‰©é‰ªé‰«é‰¬é‰é‰®é‰¯é‰°é‰±é‰²é‰³é‰µé‰¶é‰·é‰¸é‰¹é‰ºé‰»é‰¼é‰½é‰¾é‰¿éŠ€éŠ�銂銃銄銅�銆銇銈銉銊銋銌éŠ�éŠ�éŠ�銑銒銓銔銕銖銗銘銙銚銛銜éŠ�éŠžéŠŸéŠ éŠ¡éŠ¢éŠ£éŠ¤éŠ¥éŠ¦éŠ§æ�ªæ�½æ‚–æ‚šæ‚æ‚�悃悒悌悛惬悻悱æƒ�æƒ˜æƒ†æƒšæ‚´æ„ æ„¦æ„•æ„£æƒ´æ„€æ„Žæ„«æ…Šæ…µæ†¬æ†”æ†§æ†·æ‡”æ‡µå¿�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌é˜�é˜�阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅æ²�沔沌汨汩汴汶沆沩æ³�æ³”æ²æ³·æ³¸æ³±æ³—æ²²æ³ æ³–æ³ºæ³«æ³®æ²±æ³“æ³¯æ³¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������銨銩銪銫銬éŠéŠ¯éŠ°éŠ±éŠ²éŠ³éŠ´éŠµéŠ¶éŠ·éŠ¸éŠ¹éŠºéŠ»éŠ¼éŠ½éŠ¾éŠ¿é‹€é‹�鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌é‹�鋎é‹�é‹�鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜é‹�é‹žé‹Ÿé‹ é‹¡é‹¢é‹£é‹¤é‹¥é‹¦é‹§é‹¨ï¿½é‹©é‹ªé‹«é‹¬é‹é‹®é‹¯é‹°é‹±é‹²é‹³é‹´é‹µé‹¶é‹·é‹¸é‹¹é‹ºé‹»é‹¼é‹½é‹¾é‹¿éŒ€éŒ�錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫æµ�洮洵洚æµ�æµ’æµ”æ´³æ¶‘æµ¯æ¶žæ¶ æµžæ¶“æ¶”æµœæµ æµ¼æµ£æ¸šæ·‡æ·…æ·žæ¸Žæ¶¿æ· æ¸‘æ·¦æ·�æ·™æ¸–æ¶«æ¸Œæ¶®æ¸«æ¹®æ¹Žæ¹«æº²æ¹Ÿæº†æ¹“æ¹”æ¸²æ¸¥æ¹„æ»Ÿæº±æº˜æ» æ¼æ»¢æº¥æº§æº½æº»æº·æ»—溴æ»�æº�滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉æ¾�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������錊錋錌éŒ�錎éŒ�éŒ�錑錒錓錔錕錖錗錘錙錚錛錜éŒ�éŒžéŒŸéŒ éŒ¡éŒ¢éŒ£éŒ¤éŒ¥éŒ¦éŒ§éŒ¨éŒ©éŒªéŒ«éŒ¬éŒéŒ®éŒ¯éŒ°éŒ±éŒ²éŒ³éŒ´éŒµéŒ¶éŒ·éŒ¸éŒ¹éŒºéŒ»éŒ¼éŒ½éŒ¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰ï¿½é�Šé�‹é�Œé��é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�«æ¿‰æ¾§æ¾¹æ¾¶æ¿‚æ¿¡æ¿®æ¿žæ¿ æ¿¯ç€šç€£ç€›ç€¹ç€µç��ç�žå®€å®„宕宓宥宸甯骞æ�´å¯¤å¯®è¤°å¯°è¹‡è¬‡è¾¶è¿“迕迥迮迤迩迦迳迨逅逄逋逦逑é€�逖逡逵逶é€é€¯é�„é�‘é�’é��é�¨é�˜é�¢é�›æš¹é�´é�½é‚‚邈邃邋å½�彗彖彘尻咫å±�å±™å±å±£å±¦ç¾¼å¼ªå¼©å¼è‰´å¼¼é¬»å±®å¦�妃å¦�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������é�¬é�é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿éŽ€éŽ�鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌éŽ�鎎éŽ�鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜éŽ�éŽžéŽŸéŽ éŽ¡éŽ¢éŽ£éŽ¤éŽ¥éŽ¦éŽ§éŽ¨éŽ©éŽªéŽ«ï¿½éŽ¬éŽéŽ®éŽ¯éŽ°éŽ±éŽ²éŽ³éŽ´éŽµéŽ¶éŽ·éŽ¸éŽ¹éŽºéŽ»éŽ¼éŽ½éŽ¾éŽ¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�‹é�Œé��妗姊妫妞妤姒妲妯姗妾娅娆å§�å¨ˆå§£å§˜å§¹å¨Œå¨‰å¨²å¨´å¨‘å¨£å¨“å©€å©§å©Šå©•å¨¼å©¢å©µèƒ¬åªªåª›å©·å©ºåª¾å««åª²å«’å«”åª¸å« å«£å«±å«–å«¦å«˜å«œå¬‰å¬—å¬–å¬²å¬·å€å°•å°œåšå¥å³å‘å“å¢é©µé©·é©¸é©ºé©¿é©½éª€éª�骅骈骊éª�骒骓骖骘骛骜éª�éªŸéª éª¢éª£éª¥éª§çºŸçº¡çº£çº¥çº¨çº©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������é�Žé��é��é�‘é�’é�“é�”é�•é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé���é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�é�®çºçº°çº¾ç»€ç»�绂绉绋绌ç»�ç»”ç»—ç»›ç» ç»¡ç»¨ç»«ç»®ç»¯ç»±ç»²ç¼�绶绺绻绾ç¼�缂缃缇缈缋缌ç¼�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬ç¼ç¼¯ç¼°ç¼±ç¼²ç¼³ç¼µå¹ºç•¿å·›ç”¾é‚•玎玑玮玢玟ç��ç�‚ç�‘玷玳ç�€ç�‰ç�ˆç�¥ç�™é¡¼ç�Šç�©ç�§ç�žçŽºç�²ç��ç�ªç‘›ç�¦ç�¥ç�¨ç�°ç�®ç�¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¿é‘€é‘�鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌é‘�鑎é‘�é‘�鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜é‘�é‘žé‘Ÿé‘ é‘¡é‘¢é‘£é‘¤é‘¥é‘¦é‘§é‘¨é‘©é‘ªé‘¬é‘鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀é’�钂钃钄钑钖钘铇é“�é““é“”é“šé“¦é“»é”œé” ç�›ç�šç‘�瑜瑗瑕瑙瑷ç‘瑾璜璎璀ç’�璇璋璞璨璩ç’�璧瓒璺韪韫韬æ�Œæ�“æ�žæ�ˆæ�©æž¥æž‡æ�ªæ�³æž˜æž§æ�µæž¨æžžæžæž‹æ�·æ�¼æŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æžµæŸšæž³æŸ�æ €æŸƒæž¸æŸ¢æ ŽæŸ�æŸ½æ ²æ ³æ¡ æ¡¡æ¡Žæ¡¢æ¡„æ¡¤æ¢ƒæ �桕桦æ¡�æ¡§æ¡€æ ¾æ¡Šæ¡‰æ ©æ¢µæ¢�æ¡´æ¡·æ¢“æ¡«æ£‚æ¥®æ£¼æ¤Ÿæ¤ æ£¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é”§é”³é”½é•ƒé•ˆé•‹é••é•šé• é•®é•´é•µé•·é•¸é•¹é•ºé•»é•¼é•½é•¾é–€é–�閂閃閄閅閆閇閈閉閊開閌é–�é–Žé–�é–�閑閒間閔閕閖閗閘閙閚閛閜é–�é–žé–Ÿé– é–¡é–¢é–£é–¤é–¥é–¦é–§é–¨é–©é–ªï¿½é–«é–¬é–閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀é—�闂闃闄闅闆闇闈闉闊闋椤棰椋æ¤�楗棣æ¤�æ¥±æ¤¹æ¥ æ¥‚æ¥�æ¦„æ¥«æ¦€æ¦˜æ¥¸æ¤´æ§Œæ¦‡æ¦ˆæ§Žæ¦‰æ¥¦æ¥£æ¥¹æ¦›æ¦§æ¦»æ¦«æ¦æ§”榱æ§�æ§Šæ§Ÿæ¦•æ§ æ¦�æ§¿æ¨¯æ§æ¨—æ¨˜æ©¥æ§²æ©„æ¨¾æª æ©�橛樵檎橹樽樨橘橼檑æª�檩檗檫猷ç�’æ®�殂殇殄殒殓æ®�殚殛殡殪轫è½è½±è½²è½³è½µè½¶è½¸è½·è½¹è½ºè½¼è½¾è¾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������闌é—�é—Žé—�é—�闑闒闓闔闕闖闗闘闙闚闛關é—�é—žé—Ÿé— é—¡é—¢é—£é—¤é—¥é—¦é—§é—¬é—¿é˜‡é˜“é˜˜é˜›é˜žé˜ é˜£é˜¤é˜¥é˜¦é˜§é˜¨é˜©é˜«é˜¬é˜é˜¯é˜°é˜·é˜¸é˜¹é˜ºé˜¾é™�陃陊陎é™�陑陒陓陖陗�陘陙陚陜é™�é™žé™ é™£é™¥é™¦é™«é™é™®é™¯é™°é™±é™³é™¸é™¹é™ºé™»é™¼é™½é™¾é™¿éš€éš�隂隃隄隇隉隊è¾�辎è¾�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿ç”�甑甓攴旮旯旰昊昙æ�²æ˜ƒæ˜•昀炅曷æ˜�昴昱昶昵耆晟晔æ™�æ™�晖晡晗晷暄暌暧æš�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇èµ�赕赙觇觊觋觌觎è§�è§�觑牮犟ç‰�牦牯牾牿犄犋çŠ�çŠ�犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際éš�éšžéšŸéš éš¡éš¢éš£éš¤éš¥éš¦éš¨éš©éšªéš«éš¬éšéš®éš¯éš±éš²éš´éšµéš·éš¸éšºéš»éš¿é›‚雃雈雊雋é›�雑雓雔雖雗雘雙雚雛雜é›�雞雟雡離難雤雥雦雧雫�雬é›é›®é›°é›±é›²é›´é›µé›¸é›ºé›»é›¼é›½é›¿éœ‚霃霅霊霋霌éœ�霑霒霔霕霗霘霙霚霛éœ�éœŸéœ æ�¿æ“˜è€„毪毳毽毵毹氅氇氆æ°�氕氘氙氚氡氩氤氪氲攵敕敫ç‰�牒牖爰虢刖肟肜肓肼朊肽肱肫è‚肴肷胧胨胩胪胛胂胄胙èƒ�胗æœ�èƒ�胫胱胴èƒè„�è„Žèƒ²èƒ¼æœ•è„’è±šè„¶è„žè„¬è„˜è„²è…ˆè…Œè…“è…´è…™è…šè…±è… è…©è…¼è…½è…è…§å¡�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé��é�Žé��é��é�‘é�”é�•é�—é�˜é�šé�œé��é�Ÿé�£é�¤é�¦é�§é�¨é�ªé�«é�¬é�é�®é�¯é�°é�±ï¿½é�²é�µé�·é�¸é�¹é�ºé�»é�½é�¾é�¿éž€éž�鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎éž�éž�鞓鞕鞖鞗鞙鞚鞛鞜éž�è‡�è†¦æ¬¤æ¬·æ¬¹æƒæ†æ™é£‘飒飓飕飙飚殳彀毂觳æ–�齑斓於旆旄旃旌旎旒旖炀炜炖ç‚�炻烀炷炫炱烨烊ç„�ç„“ç„–ç„¯ç„±ç…³ç…œç…¨ç……ç…²ç…Šç…¸ç…ºç†˜ç†³ç†µç†¨ç† ç‡ ç‡”ç‡§ç‡¹çˆ�爨ç�¬ç„˜ç…¦ç†¹æˆ¾æˆ½æ‰ƒæ‰ˆæ‰‰ç¤»ç¥€ç¥†ç¥‰ç¥›ç¥œç¥“ç¥šç¥¢ç¥—ç¥ ç¥¯ç¥§ç¥ºç¦…ç¦Šç¦šç¦§ç¦³å¿‘å¿��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀éŸ�韂韃韄韅韆韇韈韉韊韋韌éŸ�韎éŸ�éŸ�韑韒韓韔韕韖韗韘韙韚韛韜éŸ�éŸžéŸŸéŸ éŸ¡éŸ¢éŸ£ï¿½éŸ¤éŸ¥éŸ¨éŸ®éŸ¯éŸ°éŸ±éŸ²éŸ´éŸ·éŸ¸éŸ¹éŸºéŸ»éŸ¼éŸ½éŸ¾éŸ¿é €é �é ‚é ƒé „é …é †é ‡é ˆé ‰é Šé ‹é Œé �é Žæ€¼æ��æ�šæ�§æ��æ�™æ�£æ‚«æ„†æ„�æ…�憩æ†�懋懑戆肀è�¿æ²“æ³¶æ·¼çŸ¶çŸ¸ç €ç ‰ç —ç ˜ç ‘æ–«ç ç œç �ç ¹ç ºç »ç Ÿç ¼ç ¥ç ¬ç £ç ©ç¡Žç¡ç¡–ç¡—ç ¦ç¡�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄çœ�盹眇眈眚眢眙çœçœ¦çœµçœ¸ç��ç�‘ç�‡ç�ƒç�šç�¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������é �é �é ‘é ’é “é ”é •é –é —é ˜é ™é šé ›é œé �é žé Ÿé é ¡é ¢é £é ¤é ¥é ¦é §é ¨é ©é ªé «é ¬é é ®é ¯é °é ±é ²é ³é ´é µé ¶é ·é ¸é ¹é ºé »é ¼é ½é ¾é ¿é¡€é¡�顂顃顄顅顆顇顈顉顊顋題é¡��顎é¡�é¡�顑顒顓顔顕顖顗願顙顚顛顜é¡�é¡žé¡Ÿé¡ é¡¡é¡¢é¡£é¡¤é¡¥é¡¦é¡§é¡¨é¡©é¡ªé¡«é¡¬é¡é¡®ç�¢ç�¥ç�¿çž�ç�½çž€çžŒçž‘çžŸçž çž°çžµçž½ç”ºç•€ç•Žç•‹ç•ˆç•›ç•²ç•¹ç–ƒç½˜ç½¡ç½Ÿè©ˆç½¨ç½´ç½±ç½¹ç¾�ç½¾ç›�ç›¥è ²é’…é’†é’‡é’‹é’Šé’Œé’�é’�é’�钔钗钕钚钛钜钣钤钫钪é’钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌é“�铎é“�é“‘é“’é“•é“–é“—é“™é“˜é“›é“žé“Ÿé“ é“¢é“¤é“¥é“§é“¨é“ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬é¢é¢®é¢¯é¢°é¢±é¢²é¢³é¢´é¢µé¢¶é¢·é¢¸é¢¹é¢ºé¢»é¢¼é¢½é¢¾é¢¿é£€é£�飂飃飄飅飆飇飈飉飊飋飌é£�é£�é£�飔飖飗飛飜é£�é£ é£¡é£¢é££é£¤ï¿½é£¥é£¦é£©é£ªé£«é£¬é£é£®é£¯é£°é£±é£²é£³é£´é£µé£¶é£·é£¸é£¹é£ºé£»é£¼é£½é£¾é£¿é¤€é¤�餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊é”�锎é”�锒锓锔锕锖锘锛é”�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎é•�镒镓镔镖镗镘镙镛镞镟é•�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕ç§ç§£ç§«ç¨†åµ‡ç¨ƒç¨‚稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������餈餉養餋餌餎é¤�餑餒餓餔餕餖餗餘餙餚餛餜é¤�é¤žé¤Ÿé¤ é¤¡é¤¢é¤£é¤¤é¤¥é¤¦é¤§é¤¨é¤©é¤ªé¤«é¤¬é¤é¤¯é¤°é¤±é¤²é¤³é¤´é¤µé¤¶é¤·é¤¸é¤¹é¤ºé¤»é¤¼é¤½é¤¾é¤¿é¥€é¥�饂饃饄饅饆饇饈饉�饊饋饌é¥�饎é¥�é¥�饑饒饓饖饗饘饙饚饛饜é¥�é¥žé¥Ÿé¥ é¥¡é¥¢é¥¤é¥¦é¥³é¥¸é¥¹é¥»é¥¾é¦‚é¦ƒé¦‰ç¨¹ç¨·ç©‘é»�é¦¥ç©°çšˆçšŽçš“çš™çš¤ç“žç“ ç”¬é¸ é¸¢é¸¨é¸©é¸ªé¸«é¸¬é¸²é¸±é¸¶é¸¸é¸·é¸¹é¸ºé¸¾é¹�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱é¹é¹³ç–’ç–”ç––ç– ç–�疬疣疳疴疸痄疱疰痃痂痖ç—�痣痨痦痤痫痧瘃痱痼痿ç˜�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������馌馎馚馛馜é¦�é¦žé¦Ÿé¦ é¦¡é¦¢é¦£é¦¤é¦¦é¦§é¦©é¦ªé¦«é¦¬é¦é¦®é¦¯é¦°é¦±é¦²é¦³é¦´é¦µé¦¶é¦·é¦¸é¦¹é¦ºé¦»é¦¼é¦½é¦¾é¦¿é§€é§�駂駃駄駅駆駇駈駉駊駋駌é§�é§Žé§�é§�駑駒駓駔駕駖駗駘�駙駚駛駜é§�é§žé§Ÿé§ é§¡é§¢é§£é§¤é§¥é§¦é§§é§¨é§©é§ªé§«é§¬é§é§®é§¯é§°é§±é§²é§³é§´é§µé§¶é§·é§¸é§¹ç˜›ç˜¼ç˜¢ç˜ 癀ç˜ç˜°ç˜¿ç˜µç™ƒç˜¾ç˜³ç™�ç™žç™”ç™œç™–ç™«ç™¯ç¿Šç«¦ç©¸ç©¹çª€çª†çªˆçª•çª¦çª çª¬çª¨çªçª³è¡¤è¡©è¡²è¡½è¡¿è¢‚袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶è¥�è¥¦è¥»ç–‹èƒ¥çš²çš´çŸœè€’è€”è€–è€œè€ è€¢è€¥è€¦è€§è€©è€¨è€±è€‹è€µè�ƒè�†è��è�’è�©è�±è¦ƒé¡¸é¢€é¢ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀é¨�騂騃騄騅騆騇騈騉騊騋騌é¨�騎é¨�é¨�騑騒験騔騕騖騗騘騙騚騛騜é¨�é¨žé¨Ÿé¨ é¨¡é¨¢é¨£é¨¤é¨¥é¨¦é¨§é¨¨é¨©é¨ªé¨«é¨¬é¨é¨®é¨¯é¨°é¨±é¨²é¨³é¨´é¨µé¨¶é¨·é¨¸ï¿½é¨¹é¨ºé¨»é¨¼é¨½é¨¾é¨¿é©€é©�驂驃驄驅驆驇驈驉驊驋驌é©�驎é©�é©�驑驒驓驔驕驖驗驘驙颉颌é¢�é¢�颔颚颛颞颟颡颢颥颦è™�虔虬虮虿虺虼虻蚨èš�蚋蚬èš�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉è›�蚴蛩蛱蛲è›è›³è›�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊èœ�蜉蜣蜻蜞蜥蜮蜚蜾è�ˆèœ´èœ±èœ©èœ·èœ¿èž‚蜢è�½è�¾è�»è� è�°è�Œè�®èž‹è�“è�£è�¼è�¤è�™è�¥èž“螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������驚驛驜é©�é©žé©Ÿé© é©¡é©¢é©£é©¤é©¥é©¦é©§é©¨é©©é©ªé©«é©²éªƒéª‰éª�骎骔骕骙骦骩骪骫骬éªéª®éª¯éª²éª³éª´éªµéª¹éª»éª½éª¾éª¿é«ƒé«„髆髇髈髉髊é«�髎é«�é«�髒體髕髖髗髙髚髛髜�é«�é«žé« é«¢é«£é«¤é«¥é«§é«¨é«©é«ªé«¬é«®é«°é«±é«²é«³é«´é«µé«¶é«·é«¸é«ºé«¼é«½é«¾é«¿é¬€é¬�鬂鬄鬅鬆蟆螈螅èžèž—èžƒèž«èŸ¥èž¬èžµèž³èŸ‹èŸ“èž½èŸ‘èŸ€èŸŠèŸ›èŸªèŸ èŸ®è –è “èŸ¾è Šè ›è ¡è ¹è ¼ç¼¶ç½‚ç½„ç½…èˆ�竺竽笈笃笄笕笊笫ç¬�ç‡ç¬¸ç¬ªç¬™ç¬®ç¬±ç¬ 笥笤笳笾笞ç˜çšç…çµçŒç�ç ç®ç»ç¢ç²ç±ç®�箦箧箸箬ç®�箨箅箪箜箢箫箴篑ç¯�篌ç¯�篚篥篦篪簌篾篼ç°�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌é¬�鬎é¬�鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜é¬�é¬žé¬ é¬¡é¬¢é¬¤é¬¥é¬¦é¬§é¬¨é¬©é¬ªé¬«é¬¬é¬é¬®é¬°é¬±é¬³é¬´é¬µé¬¶é¬·é¬¸é¬¹é¬ºé¬½é¬¾é¬¿é€é†éŠé‹éŒéŽé�é’é“é•é–é—é˜é™éšï¿½é›éœé�éžéŸé é¡é¢é£é¤é¥é¦é§é¨é©éªé«é¬éé®é¯é°é±é²é³é´éµé¶é·é¸é¹éºé»ç°Ÿç°ªç°¦ç°¸ç±�籀臾èˆ�舂舄臬衄舡舢舣èˆèˆ¯èˆ¨èˆ«èˆ¸èˆ»èˆ³èˆ´èˆ¾è‰„艉艋è‰�艚艟艨衾袅袈裘裟襞ç¾�羟羧羯羰羲籼敉粑ç²�粜粞粢粲粼粽ç³�糇糌ç³�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧èµè±‡è±‰é…Šé…�é…Žé…�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"����������������������������������������������������������������é¼é½é¾é¿é®€é®�鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌é®�鮎é®�é®�鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜é®�é®žé®Ÿé® é®¡é®¢é®£é®¤é®¥é®¦é®§é®¨é®©é®ªé®«é®¬é®é®®é®¯é®°é®±é®²é®³é®´é®µé®¶é®·é®¸é®¹é®ºï¿½é®»é®¼é®½é®¾é®¿é¯€é¯�鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌é¯�鯎é¯�é¯�鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅é†�é†�醑醢醣醪é†é†®é†¯é†µé†´é†ºè±•鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎è·�跛跆跬跷跸跣跹跻跤踉跽踔è¸�踟踬踮踣踯踺蹀踹踵踽踱蹉è¹�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅èº�躔èº�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"����������������������������������������������������������������鯜é¯�é¯žé¯Ÿé¯ é¯¡é¯¢é¯£é¯¤é¯¥é¯¦é¯§é¯¨é¯©é¯ªé¯«é¯¬é¯é¯®é¯¯é¯°é¯±é¯²é¯³é¯´é¯µé¯¶é¯·é¯¸é¯¹é¯ºé¯»é¯¼é¯½é¯¾é¯¿é°€é°�鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌é°�é°Žé°�é°�鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜é°�é°žé°Ÿé° é°¡é°¢é°£é°¤é°¥é°¦é°§é°¨é°©é°ªé°«é°¬é°é°®é°¯é°°é°±é°²é°³é°´é°µé°¶é°·é°¸é°¹é°ºé°»è§¥è§«è§¯è¨¾è¬¦é�“雩雳雯霆éœ�霈éœ�霎霪éœéœ°éœ¾é¾€é¾ƒé¾…龆龇龈龉龊龌黾鼋é¼�éš¹éš¼éš½é›Žé›’çž¿é› éŠŽéŠ®é‹ˆéŒ¾é�ªé�ŠéŽ�é�¾é‘«é±¿é²‚鲅鲆鲇鲈稣鲋鲎é²�é²‘é²’é²”é²•é²šé²›é²žé²Ÿé² é²¡é²¢é²£é²¥é²¦é²§é²¨é²©é²«é²é²®é²°é²±é²²é²³é²´é²µé²¶é²·é²ºé²»é²¼é²½é³„鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀é±�鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌é±�鱎é±�é±�鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜é±�é±žé±Ÿé± é±¡é±¢é±£é±¤é±¥é±¦é±§é±¨é±©é±ªé±«é±¬é±é±®é±¯é±°é±±é±²é±³é±´é±µé±¶é±·é±¸é±¹é±ºï¿½é±»é±½é±¾é²€é²ƒé²„鲉鲊鲌é²�鲓鲖鲗鲘鲙é²�鲪鲬鲯鲹鲾鲿鳀é³�é³‚é³ˆé³‰é³‘é³’é³šé³›é³ é³¡é³Œé³�鳎é³�é³�鳓鳔鳕鳗鳘鳙鳜é³�鳟鳢é�¼éž…鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼é«�髀髅髂髋髌髑é…éƒé‡é‰éˆé�é‘飨é¤�餮饕饔髟髡髦髯髫髻é«é«¹é¬ˆé¬�鬓鬟鬣麽麾縻麂麇麈麋麒é�–éº�麟黛黜é»�é» é»Ÿé»¢é»©é»§é»¥é»ªé»¯é¼¢é¼¬é¼¯é¼¹é¼·é¼½é¼¾é½„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬é³é³®é³¯é³°é³±é³²é³³é³´é³µé³¶é³·é³¸é³¹é³ºé³»é³¼é³½é³¾é³¿é´€é´�鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌é´�é´Žé´�é´�鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜é´�é´žé´Ÿé´ é´¡ï¿½é´¢é´£é´¤é´¥é´¦é´§é´¨é´©é´ªé´«é´¬é´é´®é´¯é´°é´±é´²é´³é´´é´µé´¶é´·é´¸é´¹é´ºé´»é´¼é´½é´¾é´¿éµ€éµ�鵂î‰�î‰�î‰�î‰�î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ�îŠ�îŠ�îŠ��\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌éµ�鵎éµ�éµ�鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜éµ�éµžéµŸéµ éµ¡éµ¢éµ£éµ¤éµ¥éµ¦éµ§éµ¨éµ©éµªéµ«éµ¬éµéµ®éµ¯éµ°éµ±éµ²éµ³éµ´éµµéµ¶éµ·éµ¸éµ¹éµºéµ»éµ¼éµ½éµ¾éµ¿é¶€é¶��鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌é¶�é¶Žé¶�é¶�鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜é¶�é¶žé¶Ÿé¶ é¶¡é¶¢îŠ’îŠ“îŠ”îŠ•îŠ–îŠ—îŠ˜îŠ™îŠšîŠ›îŠœîŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬é¶é¶®é¶¯é¶°é¶±é¶²é¶³é¶´é¶µé¶¶é¶·é¶¸é¶¹é¶ºé¶»é¶¼é¶½é¶¾é¶¿é·€é·�鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌é·�é·Žé·�é·�鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜é·�é·žé·Ÿé· é·¡ï¿½é·¢é·£é·¤é·¥é·¦é·§é·¨é·©é·ªé·«é·¬é·é·®é·¯é·°é·±é·²é·³é·´é·µé·¶é··é·¸é·¹é·ºé·»é·¼é·½é·¾é·¿é¸€é¸�鸂îŒ�îŒ�îŒ�îŒ�îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒîŒ®îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµîŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌é¸�鸎é¸�é¸�鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜é¸�鸞鸤鸧鸮鸰鸴鸻鸼鹀é¹�é¹�鹒鹓鹔鹖鹙é¹�é¹Ÿé¹ é¹¡é¹¢é¹¥é¹®é¹¯é¹²é¹´é¹µé¹¶é¹·é¹¸é¹¹é¹ºé¹»é¹¼é¹½éº€ï¿½éº�麃麄麅麆麉麊麌éº�麎éº�éº�éº‘éº”éº•éº–éº—éº˜éº™éºšéº›éºœéºžéº éº¡éº¢éº£éº¤éº¥éº§éº¨éº©éºªî�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£îŽ¤îŽ¥îŽ¦îŽ§îŽ¨îŽ©îŽªîŽ«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������麫麬éºéº®éº¯éº°éº±éº²éº³éºµéº¶éº·éº¹éººéº¼éº¿é»€é»�黂黃黅黆黇黈黊黋黌é»�黒黓黕黖黗黙黚點黡黣黤黦黨黫黬é»é»®é»°é»±é»²é»³é»´é»µé»¶é»·é»¸é»ºé»½é»¿é¼€é¼�鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌é¼�鼑鼒鼔鼕鼖鼘鼚鼛鼜é¼�鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫é¼é¼®é¼°é¼±îެîŽîŽ®îŽ¯îŽ°îŽ±îŽ²îŽ³îŽ´îŽµîŽ¶îŽ·îŽ¸îŽ¹îŽºîŽ»îŽ¼îŽ½îŽ¾îŽ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀é½�齂齃齅齆齇齈齉齊齋齌é½�齎é½�齒齓齔齕齖齗齘齙齚齛齜é½�é½žé½Ÿé½ é½¡é½¢é½£é½¤é½¥é½¦é½§é½¨é½©é½ªé½«é½¬é½é½®é½¯é½°é½±é½²é½³é½´é½µé½¶é½·é½¸ï¿½é½¹é½ºé½»é½¼é½½é½¾é¾�龂é¾�龎é¾�é¾�龑龒龓龔龕龖龗龘龜é¾�龞龡龢龣龤龥郎凉秊裏隣î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�î‘žî‘Ÿî‘ î‘¡î‘¢î‘£î‘¤î‘¥î‘¦î‘§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"����������������������������������������������������������������兀ï¨�﨎ï¨�ï¨‘ï¨“ï¨”ï¨˜ï¨Ÿï¨ ï¨¡ï¨£ï¨¤ï¨§ï¨¨ï¨©î •î –î —î ˜î ™î šî ›î œî �î žî Ÿî î ¡î ¢î £î ¤î ¥î ¦î §î ¨î ©î ªî «î ¬î î ®î ¯î °î ±î ²î ³î ´î µî ¶î ·î ¸î ¹î ºî »î ¼î ½î ¾î ¿î¡€î¡��î¡�î¡�î¡�î¡�î¡žî¡Ÿî¡ î¡¡î¡¢î¡£î¡¤î‘¨î‘©î‘ªî‘«î‘¬î‘î’�î’�î’Žî’�î’�î’�î’žî’Ÿî’ î’¡î’¢î’£î’¤î’¥î’¦î’§î’¨î’©î’ªî’«î’¬î’î“��\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[51949] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。·‥…¨〃Â―∥\∼‘’“â€�〔〕〈〉《》「ã€�『ã€�ã€�ã€‘Â±Ã—Ã·â‰ â‰¤â‰¥âˆžâˆ´Â°â€²â€³â„ƒâ„«ï¿ ï¿¡ï¿¥â™‚â™€âˆ âŠ¥âŒ’âˆ‚âˆ‡â‰¡â‰’Â§â€»â˜†â˜…â—‹â—�◎◇◆□■△▲▽▼→â†�↑↓↔〓≪≫√∽âˆ�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘Ë�˚˙¸˛¡¿Ë�∮∑âˆ�¤℉‰â—�◀▷▶♤♠♡♥♧♣⊙◈▣â—�◑▒▤▥▨▧▦▩♨â˜�☎☜☞¶†‡↕↗↙↖↘â™â™©â™ªâ™¬ã‰¿ãˆœâ„–ã�‡â„¢ã�‚ã�˜â„¡â‚¬Â®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#$%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¿¦ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀã…�ㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌã…�ã…Žã…�ã…�ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜã…�ã…žã…Ÿã… ã…¡ã…¢ã…£ã…¤ã…¥ã…¦ã…§ã…¨ã…©ã…ªã…«ã…¬ã…ㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀã†�ㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌã†�ㆎ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ï¿½ï¿½ï¿½ï¿½ï¿½â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î‘Î’Î“Î”Î•Î–Î—Î˜Î™ÎšÎ›ÎœÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂┒┑┚┙┖┕┎â”�┞┟┡┢┦┧┩┪â”┮┱┲┵┶┹┺┽┾╀â•�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘ã�„㎣㎤㎥㎦㎙㎚㎛㎜ãŽ�㎞㎟㎠㎡㎢ã�ŠãŽ�㎎ãŽ�ã��㎈㎉ã�ˆãŽ§ãŽ¨ãŽ°ãŽ±ãŽ²ãŽ³ãŽ´ãŽµãŽ¶ãŽ·ãŽ¸ãŽ¹ãŽ€ãŽ�㎂㎃㎄㎺㎻㎼㎽㎾㎿ãŽ�㎑㎒㎓㎔Ωã�€ã��㎊㎋㎌ã�–ã�…ãŽãŽ®ãŽ¯ã�›ãŽ©ãŽªãŽ«ãŽ¬ã��ã��ã�“ã�ƒã�‰ã�œã�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆÃ�ªĦ�IJ�ĿÅ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬ã‰ã‰®ã‰¯ã‰°ã‰±ã‰²ã‰³ã‰´ã‰µã‰¶ã‰·ã‰¸ã‰¹ã‰ºã‰»â“�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜâ“�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬â‘⑮½⅓⅔¼¾⅛⅜â…�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀ãˆ�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌ãˆ�㈎ãˆ�ãˆ�㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜â’�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬â’⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂¹²³â�´â�¿â‚�₂₃₄�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������가ê°�간갇갈갉갊ê°�갑값갓갔강갖갗같갚갛개ê°�ê° ê°¤ê°¬ê°ê°¯ê°°ê°±ê°¸ê°¹ê°¼ê±€ê±‹ê±�걔걘걜거걱건걷걸걺검ê²�것겄겅겆겉겊겋게ê²�겔겜ê²�ê²Ÿê² ê²¡ê²¨ê²©ê²ªê²¬ê²¯ê²°ê²¸ê²¹ê²»ê²¼ê²½ê³�ê³„ê³ˆê³Œê³•ê³—ê³ ê³¡ê³¤ê³§ê³¨ê³ªê³¬ê³¯ê³°ê³±ê³³ê³µê³¶ê³¼ê³½ê´€ê´„ê´†ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌ê´�ê´�ê´‘ê´˜ê´œê´ ê´©ê´¬ê´ê´´ê´µê´¸ê´¼êµ„굅굇굉êµ�굔굘굡굣구êµêµ°êµ³êµ´êµµêµ¶êµ»êµ¼êµ½êµ¿ê¶�궂궈궉권ê¶�ê¶œê¶�궤궷귀ê·�ê·„ê·ˆê·�ê·‘ê·“ê·œê· ê·¤ê·¸ê·¹ê·¼ê·¿ê¸€ê¸�금급긋ê¸�긔기긱긴긷길긺김ê¹�깃깅깆깊까ê¹�깎ê¹�깔깖깜ê¹�ê¹Ÿê¹ ê¹¡ê¹¥ê¹¨ê¹©ê¹¬ê¹°ê¹¸ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌ê»�ê»�ê»�껑께껙껜껨껫ê»ê»´ê»¸ê»¼ê¼‡ê¼ˆê¼�ê¼�꼬ê¼ê¼°ê¼²ê¼´ê¼¼ê¼½ê¼¿ê½�꽂꽃꽈꽉ê½�꽜ê½�꽤꽥꽹꾀꾄꾈ê¾�꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋ê¿�꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀ë€�뀄뀌ë€�뀔뀜ë€�뀨ë�„ë�…ë�ˆë�Šë�Œë�Žë�“ë�”ë�•ë�—ë�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë��ë�¼ë�½ë‚€ë‚„낌ë‚�ë‚�ë‚‘ë‚˜ë‚™ë‚šë‚œë‚Ÿë‚ ë‚¡ë‚¢ë‚¨ë‚©ë‚«ë‚¬ë‚낮낯낱낳내낵낸낼냄냅냇냈냉ëƒ�ëƒ‘ëƒ”ëƒ˜ëƒ ëƒ¥ë„ˆë„‰ë„‹ë„Œë„�넒넓넘넙넛넜ë„�넣네넥넨넬넴넵넷넸넹녀ë…�ë…„ë…ˆë…�ë…‘ë…”ë…•ë…˜ë…œë… ë…¸ë…¹ë…¼ë†€ë†‚ë†ˆë†‰ë†‹ë†�높놓놔놘놜놨뇌ë‡�뇔뇜ë‡��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë‡Ÿë‡¨ë‡©ë‡¬ë‡°ë‡¹ë‡»ë‡½ëˆ„ëˆ…ëˆˆëˆ‹ëˆŒëˆ”ëˆ•ëˆ—ëˆ™ëˆ ëˆ´ëˆ¼ë‰˜ë‰œë‰ ë‰¨ë‰©ë‰´ë‰µë‰¼ëŠ„ëŠ…ëŠ‰ëŠ�ëŠ‘ëŠ”ëŠ˜ëŠ™ëŠšëŠ ëŠ¡ëŠ£ëŠ¥ëŠ¦ëŠªëŠ¬ëŠ°ëŠ´ë‹ˆë‹‰ë‹Œë‹�닖님닙닛ë‹�닢다닥닦단닫달ë‹ë‹®ë‹¯ë‹³ë‹´ë‹µë‹·ë‹¸ë‹¹ë‹ºë‹»ë‹¿ëŒ€ëŒ�댄댈ëŒ�댑댓댔댕댜ë�”ë�•ë�–ë�˜ë�›ë�œë�žë�Ÿë�¤ë�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë�§ë�©ë�«ë�®ë�°ë�±ë�´ë�¸ëŽ€ëŽ�뎃뎄뎅뎌ëŽ�ëŽ”ëŽ ëŽ¡ëŽ¨ëŽ¬ë�„ë�…ë�ˆë�‹ë�Œë�Žë��ë�”ë�•ë�—ë�™ë�›ë��ë� ë�¤ë�¨ë�¼ë��ë�˜ë�œë� ë�¨ë�©ë�«ë�´ë‘�ë‘‘ë‘”ë‘˜ë‘ ë‘¡ë‘£ë‘¥ë‘¬ë’€ë’ˆë’�뒤뒨뒬뒵뒷뒹듀듄듈ë“�듕드ë“�ë“ ë“£ë“¤ë“¦ë“¬ë“듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀ë•�땃땄땅땋때ë•�ë•�땔땜ë•�ë•Ÿë• ë•¡ë– ë–¡ë–¤ë–¨ë–ªë–«ë–°ë–±ë–³ë–´ë–µë–»ë–¼ë–½ë—€ë—„ë—Œë—�ë—�ë—�뗑뗘뗬ë˜�똑똔똘똥똬똴뙈뙤뙨뚜ëš�ëš ëš¤ëš«ëš¬ëš±ë›”ë›°ë›´ë›¸ëœ€ëœ�뜅뜨뜩뜬뜯뜰뜸뜹뜻ë�„ë�ˆë�Œë�”ë�•ë� ë�¤ë�¨ë�°ë�±ë�³ë�µë�¼ë�½ëž€ëž„람ëž�ëž�ëž�랑랒랖랗�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ëž˜ëž™ëžœëž ëž¨ëž©ëž«ëž¬ëžëž´ëžµëž¸ëŸ‡ëŸ‰ëŸ¬ëŸëŸ°ëŸ´ëŸ¼ëŸ½ëŸ¿ë €ë �ë ‡ë ˆë ‰ë Œë �ë ˜ë ™ë ›ë �ë ¤ë ¥ë ¨ë ¬ë ´ë µë ·ë ¸ë ¹ë¡€ë¡„ë¡‘ë¡“ë¡œë¡�ë¡ ë¡¤ë¡¬ë¡ë¡¯ë¡±ë¡¸ë¡¼ë¢�뢨뢰뢴뢸룀ë£�룃룅료ë£�룔ë£�ë£Ÿë£¡ë£¨ë£©ë£¬ë£°ë£¸ë£¹ë£»ë£½ë¤„ë¤˜ë¤ ë¤¼ë¤½ë¥€ë¥„ë¥Œë¥�ë¥‘ë¥˜ë¥™ë¥œë¥ ë¥¨ë¥©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫ë¥ë¥´ë¥µë¥¸ë¥¼ë¦„릅릇릉릊ë¦�릎리ë¦ë¦°ë¦´ë¦¼ë¦½ë¦¿ë§�마막만많ë§�ë§�맑맒맘맙맛ë§�맞맡맣매맥맨맬맴맵맷맸맹맺먀ë¨�먈먕머먹먼멀멂멈멉멋ë©�멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄ë¬�ë¬�ë¬‘ë¬˜ë¬œë¬ ë¬©ë¬«ë¬´ë¬µë¬¶ë¬¸ë¬»ë¬¼ë¬½ë¬¾ë„ë…ë‡ë‰ë�ë�ë�ë”ë˜ë¡ë£ë¬ë®ˆë®Œë®�뮤뮨뮬뮴뮷므믄믈ë¯�믓미믹민믿밀밂밈밉밋밌ë°�ë°�밑바박밖밗반받발ë°�밞밟밤밥밧방ë°ë°°ë°±ë°´ë°¸ë±€ë±�뱃뱄뱅뱉뱌ë±�ë±�ë±�버벅번벋벌벎범법벗�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ë²™ë²šë² ë²¡ë²¤ë²§ë²¨ë²°ë²±ë²³ë²´ë²µë²¼ë²½ë³€ë³„ë³�ë³�ë³�병볕볘볜보복볶본볼봄봅봇봉ë´�봔봤봬뵀뵈뵉뵌ëµ�뵘뵙뵤뵨부ë¶�분붇불붉붊ë¶�붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브ë¸�ë¸�블븜ë¸�ë¸Ÿë¹„ë¹…ë¹ˆë¹Œë¹Žë¹”ë¹•ë¹—ë¹™ë¹šë¹›ë¹ ë¹¡ë¹¤ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌ëº�ëº�ëº�뺑뺘뺙뺨ë»�ë»‘ë»”ë»—ë»˜ë» ë»£ë»¤ë»¥ë»¬ë¼�뼈뼉뼘뼙뼛뼜ë¼�ë½€ë½�뽄뽈ë½�뽑뽕뾔뾰뿅뿌ë¿�ë¿�뿔뿜뿟뿡쀼ì�‘ì�˜ì�œì� ì�¨ì�©ì‚�ì‚‘ì‚”ì‚˜ì‚ ì‚¡ì‚£ì‚¥ì‚¬ì‚삯산삳살삵삶삼삽삿샀ìƒ�샅새색샌ìƒ�샘샙샛샜ìƒ�샤�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈ì„�섕서ì„�ì„žì„Ÿì„ ì„£ì„¤ì„¦ì„§ì„¬ì„섯섰성섶세섹센셀셈셉셋셌ì…�셔셕션셜셤셥셧셨셩셰셴셸솅소ì†�솎ì†�솔솖솜ì†�ì†Ÿì†¡ì†¥ì†¨ì†©ì†¬ì†°ì†½ì‡„ì‡ˆì‡Œì‡”ì‡—ì‡˜ì‡ ì‡¤ì‡¨ì‡°ì‡±ì‡³ì‡¼ì‡½ìˆ€ìˆ„ìˆŒìˆ�ìˆ�ìˆ‘ìˆ˜ìˆ™ìˆœìˆŸìˆ ìˆ¨ìˆ©ìˆ«ìˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈ì‰�ì‰‘ì‰”ì‰˜ì‰ ì‰¥ì‰¬ì‰ì‰°ì‰´ì‰¼ì‰½ì‰¿ìŠ�슈슉ìŠ�슘슛ìŠ�스슥슨슬ìŠìŠ´ìŠµìŠ·ìŠ¹ì‹œì‹�ì‹ ì‹£ì‹¤ì‹«ì‹¬ì‹ì‹¯ì‹±ì‹¶ì‹¸ì‹¹ì‹»ì‹¼ìŒ€ìŒˆìŒ‰ìŒŒìŒ�쌓쌔쌕쌘쌜쌤쌥쌨쌩ì�…ì�¨ì�©ì�¬ì�°ì�²ì�¸ì�¹ì�¼ì�½ìŽ„ìŽˆìŽŒì�€ì�˜ì�™ì�œì�Ÿì� ì�¢ì�¨ì�©ì�ì�´ì�µì�¸ì�ˆì��ì�¤ì�¬ì�°ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì�´ì�¼ì�½ì‘ˆì‘¤ì‘¥ì‘¨ì‘¬ì‘´ì‘µì‘¹ì’€ì’”쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀ì”�씌ì”�씔씜씨씩씬씰씸씹씻씽아악안앉않알ì•�앎앓암압앗았앙ì•�ì•žì• ì•¡ì•¤ì•¨ì•°ì•±ì•³ì•´ì•µì•¼ì•½ì–€ì–„ì–‡ì–Œì–�ì–�ì–‘ì–•ì–—ì–˜ì–œì– ì–©ì–´ì–µì–¸ì–¹ì–»ì–¼ì–½ì–¾ì—„ì—…ì—†ì—‡ì—ˆì—‰ì—Šì—Œì—Žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì—�ì—‘ì—”ì—˜ì— ì—¡ì—£ì—¥ì—¬ì—엮연열엶엷염엽엾엿였ì˜�옅옆옇예옌ì˜�옘옙옛옜오옥온올ì˜ì˜®ì˜°ì˜³ì˜´ì˜µì˜·ì˜¹ì˜»ì™€ì™�완왈ì™�왑왓왔왕왜ì™�ì™ ì™¬ì™¯ì™±ì™¸ì™¹ì™¼ìš€ìšˆìš‰ìš‹ìš�요욕욘욜욤욥욧용우욱운울욹욺움ì›�웃웅워ì›�ì›�월웜ì›�ì› ì›¡ì›¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì›©ì›¬ì›°ì›¸ì›¹ì›½ìœ„ìœ…ìœˆìœŒìœ”ìœ•ìœ—ìœ™ìœ ìœ¡ìœ¤ìœ¨ìœ°ìœ±ìœ³ìœµìœ·ìœ¼ìœ½ì�€ì�„ì�Šì�Œì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�œì� ì�¨ì�«ì�´ì�µì�¸ì�¼ì�½ì�¾ìžƒìž„입잇있잉잊잎ìž�ìž‘ìž”ìž–ìž—ìž˜ìžšìž ìž¡ìž£ìž¤ìž¥ìž¦ìž¬ìžìž°ìž´ìž¼ìž½ìž¿ìŸ€ìŸ�쟈쟉쟌쟎ìŸ�쟘ìŸ�ìŸ¤ìŸ¨ìŸ¬ì €ì �ì „ì ˆì Šï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì �ì ‘ì “ì •ì –ì œì �ì ì ¤ì ¬ì ì ¯ì ±ì ¸ì ¼ì¡€ì¡ˆì¡‰ì¡Œì¡�졔조족존졸졺좀ì¢�좃종좆좇좋좌ì¢�좔ì¢�ì¢Ÿì¢¡ì¢¨ì¢¼ì¢½ì£„ì£ˆì£Œì£”ì£•ì£—ì£™ì£ ì£¡ì£¤ì£µì£¼ì£½ì¤€ì¤„ì¤…ì¤†ì¤Œì¤�ì¤�중줘줬줴ì¥�ì¥‘ì¥”ì¥˜ì¥ ì¥¡ì¥£ì¥¬ì¥°ì¥´ì¥¼ì¦ˆì¦‰ì¦Œì¦�즘즙즛ì¦�ì§€ì§�진짇질짊ì§�집짓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜ì§�ì§ ì§¢ì§¤ì§§ì§¬ì§ì§¯ì§°ì§±ì§¸ì§¹ì§¼ì¨€ì¨ˆì¨‰ì¨‹ì¨Œì¨�쨔쨘쨩쩌ì©�ì©�쩔쩜ì©�ì©Ÿì© ì©¡ì©¨ì©½ìª„ìª˜ìª¼ìª½ì«€ì«„ì«Œì«�ì«�ì«‘ì«“ì«˜ì«™ì« ì«¬ì«´ì¬ˆì¬�ì¬”ì¬˜ì¬ ì¬¡ì�ìˆì‰ìŒì�ì˜ì™ì�ì¤ì¸ì¹ì®œì®¸ì¯”쯤쯧쯩찌ì°�ì°�찔찜ì°�찡찢찧차착찬찮찰참찹찻�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì°¼ì°½ì°¾ì±„ì±…ì±ˆì±Œì±”ì±•ì±—ì±˜ì±™ì± ì±¤ì±¦ì±¨ì±°ì±µì²˜ì²™ì²œì² ì²¨ì²©ì²«ì²¬ì²ì²´ì²µì²¸ì²¼ì³„쳅쳇쳉ì³�쳔쳤쳬쳰ì´�초촉촌ì´�촘촙촛ì´�ì´¤ì´¨ì´¬ì´¹ìµœìµ ìµ¤ìµ¬ìµìµ¯ìµ±ìµ¸ì¶ˆì¶”축춘출춤춥춧충춰췄췌ì·�ì·¨ì·¬ì·°ì·¸ì·¹ì·»ì·½ì¸„ì¸ˆì¸Œì¸”ì¸™ì¸ ì¸¡ì¸¤ì¸¨ì¸°ì¸±ì¸³ì¸µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ì¹˜ì¹™ì¹œì¹Ÿì¹ ì¹¡ì¹¨ì¹©ì¹«ì¹ì¹´ì¹µì¹¸ì¹¼ìº„캅캇캉ìº�ìº‘ìº”ìº˜ìº ìº¡ìº£ìº¤ìº¥ìº¬ìºì»�커컥컨컫컬컴컵컷컸컹케ì¼�켄켈ì¼�ì¼‘ì¼“ì¼•ì¼œì¼ ì¼¤ì¼¬ì¼ì¼¯ì¼°ì¼±ì¼¸ì½”ì½•ì½˜ì½œì½¤ì½¥ì½§ì½©ì½°ì½±ì½´ì½¸ì¾€ì¾…ì¾Œì¾¡ì¾¨ì¾°ì¿„ì¿ ì¿¡ì¿¤ì¿¨ì¿°ì¿±ì¿³ì¿µì¿¼í€€í€„í€‘í€˜í€í€´í€µí€¸í€¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�„í�…í�‡í�‰í��í�”í�˜í� í�¬í�í�°í�´í�¼í�½í‚�키킥킨킬킴킵킷킹타íƒ�탄탈탉íƒ�탑탓탔탕태íƒ�íƒ íƒ¤íƒ¬íƒíƒ¯íƒ°íƒ±íƒ¸í„�터턱턴털턺텀í…�텃텄텅테í…�í…�텔템í…�í…Ÿí…¡í…¨í…¬í…¼í†„í†ˆí† í†¡í†¤í†¨í†°í†±í†³í†µí†ºí†¼í‡€í‡˜í‡´í‡¸íˆ‡íˆ‰íˆ�투íˆíˆ°íˆ´íˆ¼íˆ½íˆ¿í‰�퉈퉜�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀íŠ�튄튈íŠ�íŠ‘íŠ•íŠœíŠ íŠ¤íŠ¬íŠ±íŠ¸íŠ¹íŠ¼íŠ¿í‹€í‹‚í‹ˆí‹‰í‹‹í‹”í‹˜í‹œí‹¤í‹¥í‹°í‹±í‹´í‹¸íŒ€íŒ�팃팅파íŒ�팎íŒ�팔팖팜íŒ�íŒŸíŒ íŒ¡íŒ¥íŒ¨íŒ©íŒ¬íŒ°íŒ¸íŒ¹íŒ»íŒ¼íŒ½í�„í�…í�¼í�½íŽ€íŽ„íŽŒíŽ�íŽ�íŽ�íŽ‘íŽ˜íŽ™íŽœíŽ íŽ¨íŽ©íŽ«íŽíŽ´íŽ¸íŽ¼í�„í�…í�ˆí�‰í��í�˜í�¡í�£í�¬í�í�°í�´í�¼í�½í�¿í���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�ˆí��í‘€í‘„í‘œí‘ í‘¤í‘푯푸푹푼푿풀풂품풉풋í’�풔풩퓌í“�퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌í•�í•�í•‘í•˜í•™í•œí• í•¥í•¨í•©í•«í•해핵핸핼햄햅햇했행í–�향허헉헌í—�헒험헙헛í—�헤헥헨헬헴헵헷헹혀í˜�현혈í˜�í˜‘í˜“í˜”í˜•í˜œí˜ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤í˜í˜¸í˜¹í˜¼í™€í™…홈홉홋í™�홑화확환활홧황홰홱홴횃횅회íš�íš�íš”íš�íšŸíš¡íš¨íš¬íš°íš¹íš»í›„í›…í›ˆí›Œí›‘í›”í›—í›™í› í›¤í›¨í›°í›µí›¼í›½íœ€íœ„íœ‘íœ˜íœ™íœœíœ íœ¨íœ©íœ«íœíœ´íœµíœ¸íœ¼í�„í�‡í�‰í��í�‘í�”í�–í�—í�˜í�™í� í�¡í�£í�¥í�©í�¬í�°í�´í�¼í�½íž�히힉힌íž�힘힙힛íž��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳å�‡åƒ¹åŠ å�¯å‘µå“¥å˜‰å«�家暇架枷柯æŒç�‚痂稼苛茄街袈訶賈è·�軻迦駕刻å�´å�„æ�ªæ…¤æ®¼ç��脚覺角閣侃刊墾奸姦干幹懇æ�€æ�†æŸ¬æ¡¿æ¾—癎看磵稈竿簡è‚�艮艱諫間乫å–�曷渴碣ç«è‘›è¤�è�Žéž¨å‹˜å�Žå ªåµŒæ„Ÿæ†¾æˆ¡æ•¢æŸ‘橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åŒ£å²¬ç”²èƒ›é‰€é–˜å‰›å ˆå§œå²¡å´—åº·å¼ºå½Šæ…·æ±Ÿç•ºç–†ç³ çµ³ç¶±ç¾Œè…”èˆ¡è–‘è¥�講鋼é™�鱇介价個凱å¡�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客å�‘ï¤�粳羹醵倨去居巨拒æ�®æ“šæ“§æ¸ ç‚¬ç¥›è·�踞車é�½é‰…鋸乾件å�¥å·¾å»ºæ„†æ¥—腱虔蹇é�µé¨«ä¹žå‚‘æ�°æ¡€å„‰åŠ�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼éˆ�黔劫怯迲å�ˆæ†©æ�æ“Šæ ¼æª„æ¿€è†ˆè¦¡éš”å …ç‰½çŠ¬ç”„çµ¹ç¹è‚©è¦‹è´é�£éµ‘抉決潔çµ�缺訣兼慊ç®�謙鉗鎌京俓倞傾儆å‹�å‹�å�¿å�°å¢ƒåºšå¾‘慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖è¦è¼•逕é�¡é ƒé ¸é©šé¯¨ä¿‚å•“å ºå¥‘å£å±†æ‚¸æˆ’桂械�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄å�¤å�©å‘Šå‘±å›ºå§‘å¤å°»åº«æ‹·æ”·æ•…æ•²æš æž¯æ§�沽痼çš�ç�¾ç¨¿ç¾”考股è†�苦苽è�°è—�è ±è¢´èª¥ï¤ƒè¾œéŒ®é›‡é¡§é«˜é¼“å“æ–›æ›²æ¢�ç©€è°·éµ å›°å�¤å´‘昆梱æ£�滾ç�¨è¢žé¯¤æ±¨ï¤„骨供公共功å”å·¥æ��æ�拱控攻ç�™ç©ºèš£è²¢éž�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科è�“誇課跨é�Žé�‹é¡†å»“槨藿éƒï¤…å† å®˜å¯¬æ…£æ£ºæ¬¾ç�Œç�¯ç“˜ç®¡ç½�è�…觀貫關館刮æ��æ‹¬é€‚ä¾Šå…‰åŒ¡å£™å»£æ› æ´¸ç‚šç‹‚ç�–ç�胱鑛å�¦æŽ›ç½«ä¹–傀塊壞怪愧æ‹�æ§�é�å®�ç´˜è‚±è½Ÿäº¤åƒ‘å’¬å–¬å¬Œå¶ å·§æ”ªæ•Žæ ¡æ©‹ç‹¡çšŽçŸ¯çµžç¿¹è† è•Žè›Ÿè¼ƒè½ŽéƒŠé¤ƒé©•é®«ä¸˜ä¹…ä¹�仇俱具勾�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�€å�£å�¥å’Žå˜”å�µåž¢å¯‡å¶‡å»�懼拘救枸柩構æ�毆毬求æº�ç�¸ç‹—玖ç�ƒçž¿çŸ©ç©¶çµ¿è€‰è‡¼èˆ…舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局è�Šéž 鞫麴å�›çª˜ç¾¤è£™è»�éƒ¡å €å±ˆæŽ˜çªŸå®®å¼“ç©¹çª®èŠŽèº¬å€¦åˆ¸å‹¸å�·åœˆæ‹³æ�²æ¬Šæ·ƒçœ·åŽ¥ç�—蕨蹶闕机櫃潰è©è»Œé¥‹ï¤†æ™·æ¸è²´ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜å�«åœå¥Žæ�†æ§»ç�ªç¡…窺竅糾葵è¦�赳逵閨勻å�‡ç•‡ç è�Œéˆžï¤ˆæ©˜å…‹å‰‹åŠ‡æˆŸæ£˜æ¥µéš™åƒ…åŠ¤å‹¤æ‡ƒæ–¤æ ¹æ§¿ç‘¾ç‹èйè�«è¦²è¬¹è¿‘饉契今妗擒昑檎ç�´ç¦�禽芩衾衿襟金錦伋å�Šæ€¥æ‰±æ±²ç´šçµ¦äº˜å…¢çŸœè‚¯ä¼�伎其冀嗜器圻基埼夔奇妓寄å²�崎己幾忌技旗旣�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期æ�žæ£‹æ£„機欺氣汽沂淇玘ç�¦ç�ªç’‚璣畸畿ç¢�磯ç¥�祇祈祺箕紀綺羈耆è€è‚Œè¨˜è�豈起錡錤飢饑騎é¨�驥麒緊佶å�‰æ‹®æ¡”金喫儺喇奈娜懦ï¤�æ‹�拿癩ï¤�ï¤�螺裸邏那樂洛烙珞落諾酪駱亂卵暖ï¤�ç…–ï¤žï¤Ÿé›£ï¤ æ��æ�ºå�—嵐æž�æ¥ æ¹³ï¤¢ç”·ï¤£ï¤¤ï¤¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç´�臘蠟衲囊娘廊朗浪狼郎乃ï¤å…§å¥ˆæŸ°è€�冷女年撚秊念æ�¬æ‹ˆæ�»å¯§å¯—努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿ï¥�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓ï¥�漏ï¥�ï¥�陋嫩訥æ�»ç´�勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段æ¹�çŸç«¯ç°žç·žè›‹è¢’鄲é�›æ’»æ¾¾ç�ºç–¸é�”å•–å��æ†ºæ“”æ›‡æ·¡æ¹›æ½æ¾¹ç—°è�ƒè†½è•�覃談èšéŒŸæ²“ç•“ç”è¸�é��å”�å ‚å¡˜å¹¢æˆ‡æ’žæ£ ç•¶ç³–èž³é»¨ä»£åžˆå�®å¤§å°�å²±å¸¶å¾…æˆ´æ“¡çŽ³è‡ºè¢‹è²¸éšŠé»›å®…å¾·æ‚³å€’åˆ€åˆ°åœ–å µå¡—å°Žå± å³¶å¶‹åº¦å¾’æ‚¼æŒ‘æŽ‰æ�—桃�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜ç�¹ç¦±ç¨»è�„覩è³è·³è¹ˆé€ƒé€”é�“都é��陶韜毒瀆牘犢ç�¨ç�£ç¦¿ç¯¤çº›è®€å¢©æƒ‡æ•¦æ—½æš¾æ²Œç„žç‡‰è±šé “ä¹çª�ä»�冬å‡�å‹•å�Œæ†§æ�±æ¡�棟洞潼疼瞳童胴董銅兜斗æ�œæž“痘竇è�³ï¥šè±†é€—é 屯臀芚é��é�¯éˆ�å¾—å¶�橙燈登ç‰è—¤è¬„鄧騰喇懶拏癩羅�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸é‚�樂洛烙ç�žçµ¡è�½ï¥�酪駱丹亂å�µæ¬„欒瀾爛è˜é¸žå‰Œè¾£åµ�擥攬欖濫籃纜è—�è¥¤è¦½æ‹‰è‡˜è Ÿå»Šæœ—æµªç‹¼ç�…瑯螂郞來å´�å¾ è�Šå†·æŽ 略亮倆兩凉æ¢�樑粮粱糧良諒輛é‡�ä¾¶å„·å‹µå‘‚å»¬æ…®æˆ¾æ—…æ«šæ¿¾ç¤ªè—œè £é–驢驪麗黎力曆æ·ç€�礫轢é�‚æ†�戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練è�¯è“®è¼¦é€£é�Šå†½åˆ—劣洌烈裂廉斂殮濂簾ç�µä»¤ä¼¶å›¹ï¥Ÿå²ºå¶ºæ€œç޲ç¬ç¾šç¿Žè�†é€žéˆ´é›¶é�ˆé ˜é½¡ä¾‹æ¾§ç¦®é†´éš·å‹žï¥ 撈擄櫓潞瀘çˆ�ç›§è€�蘆虜路輅露é¯é·ºé¹µç¢Œç¥¿ç¶ è�‰éŒ„鹿麓論壟弄朧瀧ç“�ç± è�¾å„¡ç€¨ç‰¢ç£Šè³‚賚賴雷了僚寮廖料燎療çžè�Šè“¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¼é¬§é¾�壘å©�屢樓淚æ¼�瘻累縷蔞褸é�¤é™‹åŠ‰æ—’æŸ³æ¦´æµ�溜ç€�ç�‰ç‘ ç•™ç˜¤ç¡«è¬¬é¡žå…æˆ®é™¸ä¾–å€«å´™æ·ªç¶¸è¼ªå¾‹æ…„æ —ï¥¡éš†å‹’è‚‹å‡œå‡Œæ¥žç¨œç¶¾è�±é™µä¿šåˆ©åŽ˜å��唎履悧æ�Žæ¢¨æµ¬çŠ�狸ç�†ç’ƒï¥¢ç—¢ç±¬ç½¹ç¾¸èމè£�裡里é‡�離鯉å��æ½¾ç‡�璘藺躪隣鱗麟林淋ç�³è‡¨éœ–ç ¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç«‹ç¬ ç²’æ‘©ç‘ªç—²ç¢¼ç£¨é¦¬é”éº»å¯žå¹•æ¼ è†œèŽ«é‚ˆä¸‡å��娩巒彎慢挽晩曼滿漫ç�£çžžè�¬è”“è »è¼“é¥…é°»å”œæŠ¹æœ«æ²«èŒ‰è¥ªé�ºäº¡å¦„忘忙望網罔芒茫莽輞邙埋妹媒å¯�昧枚梅æ¯�煤罵買賣é‚�é…è„ˆè²Šé™Œé©€éº¥åŸæ°“猛盲盟è�Œå†ªè¦“å…�å†•å‹‰æ£‰æ²”çœ„çœ ç¶¿ç·¬é�¢éºµæ»…�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥å��命明æš�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮æŸ�模æ¯�毛牟牡ç‘�眸矛耗芼茅謀謨貌木æ²�牧目ç�¦ç©†é¶©æ¿æ²’夢朦蒙å�¯å¢“妙廟æ��昴æ�³æ¸ºçŒ«ç«—è‹—éŒ¨å‹™å·«æ†®æ‡‹æˆŠæ‹‡æ’«æ— æ¥™æ¦æ¯‹ç„¡ç�·ç•�繆舞茂蕪誣貿霧鵡墨默們刎å�»å•�文�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋è�žèšŠé–€é›¯å‹¿æ²•物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷é�¡é»´å²·æ‚¶æ„�憫æ•�旻旼民泯玟ç�‰ç·¡é–”密蜜è¬�å‰�å�šæ‹�æ��撲朴樸泊ç�€ç’žç®”粕縛膊舶薄迫雹é§�ä¼´å�Šå��å�›æ‹Œæ�¬æ”€æ–‘槃泮潘ç�畔瘢盤盼ç£�ç£»ç¤¬çµ†èˆ¬èŸ è¿”é ’é£¯å‹ƒæ‹”æ’¥æ¸¤æ½‘ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮éƒå€£å‚�å�Šå¦¨å°¨å¹‡å½·æˆ¿æ”¾æ–¹æ—�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防é¾�å€�俳北培徘拜排æ�¯æ¹ƒç„™ç›ƒèƒŒèƒšè£´è£µè¤™è³ 輩é…�陪伯佰帛æŸ�æ ¢ç™½ç™¾é„幡樊煩燔番磻ç¹�蕃藩飜ä¼�ç�罰閥凡帆梵氾汎泛犯範范法ç�ºåƒ»åŠˆå£�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便å�žå¼�變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳ç”�病秉ç«�è¼§é¤ é¨ˆä¿�å ¡å ±å¯¶æ™®æ¥æ´‘湺潽ç�¤ç”«è�©è£œè¤“èœè¼”ä¼�僕åŒ�å�œå®“復æœ�ç¦�腹茯蔔複覆輹輻馥鰒本乶俸奉å°�峯峰æ�§æ£’烽熢ç�«ç¸«è“¬èœ‚逢鋒鳳ä¸�付俯傅剖副å�¦å’�åŸ å¤«å©¦ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������åšåµå¯Œåºœï¥¦æ‰¶æ•·æ–§æµ®æº¥çˆ¶ç¬¦ç°¿ç¼¶è…�è…‘è†šè‰€èŠ™èŽ©è¨ƒè² è³¦è³»èµ´è¶ºéƒ¨é‡œé˜œé™„é§™é³§åŒ—åˆ†å�©å™´å¢³å¥”奮忿憤扮æ˜�汾焚盆粉糞紛芬è³�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪å�‘妃婢庇悲憊扉批æ–�枇榧比毖毗毘沸泌ç�µç—ºç ’碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂è�²èœšè£¨èª¹è¬è²»é„™é�žé£›é¼»åš¬å¬ªå½¬æ–Œæª³æ®¯æµœæ¿±ç€•ç‰�çŽè²§è³“é »æ†‘æ°·è�˜é¨�ä¹�事些仕伺似使俟僿å�²å�¸å”†å—£å››å£«å¥¢å¨‘寫寺射巳師徙æ€�æ�¨æ–œæ–¯æŸ¶æŸ»æ¢æ»æ²™æ³—渣瀉ç�…ç ‚ç¤¾ç¥€ç¥ ç§�篩紗絲肆èˆ�莎蓑蛇裟è©�詞è¬�賜赦è¾é‚ªé£¼é§Ÿéº�削數朔索�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕ç�Šç”£ç–�算蒜酸霰乷撒殺煞薩三參æ�‰æ£®æ¸—芟蔘衫æ�·æ¾�鈒颯上傷åƒ�償商喪嘗å€å°™å³ å¸¸åºŠåº å»‚æƒ³æ¡‘æ©¡æ¹˜çˆ½ç‰€ç‹€ç›¸ç¥¥ç®±ç¿”è£³è§´è©³è±¡è³žéœœå¡žç’½è³½å—‡ï¥¬ç©¡ç´¢è‰²ç‰²ç”Ÿç”¥ï¥ç¬™å¢…壻嶼åº�庶å¾�æ�•抒æ�¿æ•�æš‘æ›™æ›¸æ –æ£²çŠ€ç‘žç®çµ®ç·–署�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓é€�鋤é»�é¼ å¤•å¥å¸æƒœæ˜”晳æž�æ±�淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽ç��瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣é�¸éŠ‘é�¥é¥�é®®å�¨å±‘楔泄洩渫舌薛褻è¨èªªé›ªé½§å‰¡æš¹æ®²çº–蟾è´�é–ƒé™�æ”�涉燮葉城姓宬性惺æˆ�星晟猩ç�¹ç››çœ�ç¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�–è�²è…¥èª é†’ä¸–å‹¢æ²æ´—稅笹細說貰å�¬å˜¯å¡‘宵å°�少巢所掃æ�”æ˜æ¢³æ²¼æ¶ˆæº¯ç€Ÿç‚¤ç‡’甦ç–�ç–Žç˜™ç¬‘ç¯ ç°«ç´ ç´¹è”¬è•蘇訴é€�é�¡é‚µéŠ·éŸ¶é¨·ä¿—å±¬æ�Ÿæ¶‘粟續謖贖速å«å·½æ��è“€é�œé£¡çŽ‡å®‹æ‚šæ�¾æ·žè¨Ÿèª¦é€�é Œåˆ·ï¥°ç�‘碎鎖衰釗修å�—嗽囚垂壽嫂守岫峀帥æ„��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æˆ�手授æ�œæ”¶æ•¸æ¨¹æ®Šæ°´æ´™æ¼±ç‡§ç‹©ç�¸ç�‡ç’²ç˜¦ç�¡ç§€ç©—竪粹ç¶�綬繡羞脩茱è’�蓚藪袖誰è®�輸é�‚é‚ƒé…¬éŠ–éŠ¹éš‹éš§éš¨é›–éœ€é ˆé¦–é«“é¬šå�”塾夙å°å®¿æ·‘潚熟ç�¡ç’¹è‚…è�½å·¡å¾‡å¾ªæ�‚æ—¬æ ’æ¥¯æ©“æ®‰æ´µæ·³ç�£ç›¾çž¬ç�純脣舜è�€è“´è•£è©¢è«„é†‡éŒžé †é¦´æˆŒè¡“è¿°é‰¥å´‡å´§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟è†�è�¨æ¿•拾習褶襲丞乘僧å‹�å�‡æ‰¿æ˜‡ç¹©è …陞ä¾�匙嘶始媤尸屎å±�市弑æ�ƒæ–½æ˜¯æ™‚枾柴猜矢示翅蒔è“�視試詩諡豕豺埴寔å¼�æ�¯æ‹æ¤�殖湜熄篒è�•è˜è»¾é£Ÿé£¾ä¼¸ä¾�ä¿¡å‘»å¨ å®¸æ„¼æ–°æ™¨ç‡¼ç”³ç¥žç´³è…Žè‡£èŽ˜è–ªè—Žèœƒè¨Šèº«è¾›ï¥±è¿…å¤±å®¤å¯¦æ‚‰å¯©å°‹å¿ƒæ²��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什å��拾雙æ°�亞俄兒啞娥峨我牙芽莪蛾衙è¨�阿雅餓鴉éµ�å Šå²³å¶½å¹„æƒ¡æ„•æ�¡æ¨‚渥鄂é�”顎é°�齷安岸按æ™�案眼é›�éž�顔鮟斡è¬�軋閼唵岩巖庵暗癌è�´é—‡å£“押狎鴨仰央æ€�昻殃秧鴦厓哀埃崖愛曖涯ç¢�艾隘é�„厄扼掖液縊腋é¡��\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹æ�¶æ¤°çˆºè€¶ï¥´é‡Žå¼±ï¥µï¥¶ç´„若葯蒻藥èº�ï¥·ä½¯ï¥¸ï¥¹å£¤åƒæ�™æ�šæ”˜æ•æš˜ï¥ºæ¥Šæ¨£æ´‹ç€�煬痒ç˜�禳穰糧羊良襄諒讓釀陽量養圄御於æ¼�瘀禦語é¦éšé½¬å„„憶抑æª�臆å�ƒå °å½¦ç„‰è¨€è«ºå¼è˜–俺儼嚴奄掩淹嶪æ¥å††äºˆä½™ï¥¿ï¦€ï¦�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¦ƒæŸæ±�濾璵礖礪與艅茹輿è½�閭餘驪麗黎亦力域役易曆歷疫繹è¯ï¦�é€†é©›åš¥å §å§¸å¨Ÿå®´ï¦Žå»¶ï¦�ï¦�æ��挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉ç¡�硯秊çµç·£ï¦–縯聯è¡�軟輦蓮連鉛鍊鳶列ï¦�ï¦žæ‚…æ¶…ï¦Ÿç†±ï¦ ï¦¡é–±åŽï¦¢ï¦£ï¦¤æŸ“殮炎焰ç�°è‰¶è‹’�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵ç‡�è‘‰ï¦¨ï¦©å¡‹ï¦ªï¦«å¶¸å½±ï¦¬æ˜ æšŽæ¥¹æ¦®æ°¸æ³³æ¸¶æ½�濚瀛瀯ç…�營ç�°ï¦ç‘›ï¦®ç“”ç›ˆç©Žçº“ï¦¯ï¦°è‹±è© è¿Žï¦±é�ˆï¦²éœ™ï¦³ï¦´ä¹‚倪例刈å�¡æ›³æ±æ¿ŠçŒŠç�¿ç©¢èŠ®è—�蘂禮裔詣è½è±«ï¦·éŠ³ï¦¸éœ“é �五ä¼�俉傲å�ˆå�¾å�³å—šå¡¢å¢ºå¥§å¨›å¯¤æ‚Ÿï¦¹æ‡Šæ•–旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çƒ�熬ç�’ç½èœˆèª¤é°²é¼‡å±‹æ²ƒç�„玉鈺溫瑥瘟穩縕蘊兀壅æ“�瓮甕癰ç¿�é‚•é›�饔渦瓦窩窪臥蛙è�¸è¨›å©‰å®Œå®›æ¢¡æ¤€æµ£çŽ©ç�“ç�¬ç¢—ç·©ç¿«è„˜è…•èŽžè±Œé˜®é ‘æ›°å¾€æ—ºæž‰æ±ªçŽ‹å€å¨ƒæªçŸ®å¤–嵬å·�猥ç•�ï¦ºï¦»åƒ¥å‡¹å ¯å¤å¦–姚寥寮尿嶢拗æ�–撓擾料曜樂橈燎燿瑤ï§��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯è¦�è¬ é�™ï§ƒé‚€é¥’慾欲浴縟褥辱俑å‚冗勇埇墉容庸慂榕涌湧溶熔瑢用甬è�³èŒ¸è“‰è¸ŠéŽ”é�žï§„于佑å�¶å„ªå�ˆå�‹å�³å®‡å¯“尤愚憂旴牛玗瑀盂ç¥�禑禹紆羽芋藕虞迂é�‡éƒµé‡ªéš…é›¨é›©å‹–å½§æ—æ˜±æ ¯ç…œç¨¶éƒ�é Šäº‘ï§…æ©’æ®žæ¾�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�‹éš•雲韻蔚鬱äº�熊雄元原員圓園垣媛嫄寃怨愿æ�´æ²…洹湲æº�爰猿瑗苑è¢�è½…é� 阮院願鴛月越鉞ä½�å�‰åƒžå�±åœ�å§”å¨�尉慰æš�æ¸çˆ²ç‘‹ç·¯èƒƒè�Žè‘¦è”¿è�Ÿè¡›è¤˜è¬‚é�•韋é�乳侑儒兪劉唯喩åºå®¥å¹¼å¹½åº¾æ‚ 惟愈愉æ�„攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由ï§�ç™’ï§Žï§�ç¶è‡¾è�¸è£•誘諛è«è¸°è¹‚é�Šé€¾é�ºé…‰é‡‰é�®ï§�ï§‘å ‰ï§’æ¯“è‚‰è‚²ï§“ï§”å…�奫尹崙淪潤玧胤贇輪鈗é–�律慄栗率è�¿æˆŽç€œçµ¨èž�ï§œåž æ�©æ…‡æ®·èª¾éŠ€éš±ä¹™å�Ÿæ·«è”陰音飮æ�–泣邑å‡�應膺鷹ä¾�倚儀宜æ„�懿擬椅毅疑矣義艤è–�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è°é†«äºŒä»¥ä¼Šï§�ï§žå¤·å§¨ï§Ÿå·²å¼›å½›æ€¡ï§ ï§¡ï§¢ï§£çˆ¾ç�¥ï§¤ç•°ç—�痢移罹而耳肄苡è�‘裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人ä»�刃å�°ï§å’½å› 姻寅引å¿�湮燐璘絪茵藺蚓èª�ï§±é�é�·ï§²ï§³ä¸€ä½šä½¾å£¹æ—¥æº¢é€¸éŽ°é¦¹ä»»å£¬å¦Šå§™æ��林淋稔臨è��賃入å�„�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒ä»�剩å•芿仔刺咨姉姿å�å—åœæ�£æ…ˆæ»‹ç‚™ç…®çŽ†ç“·ç–µç£�紫者自茨蔗藉諮資雌作勺嚼斫昨ç�¼ç‚¸çˆµç¶½èŠ�é…Œé›€éµ²å±æ£§æ®˜æ½ºç›žå²‘æš«æ½›ç®´ç°ªè ¶é›œä¸ˆä»—åŒ å ´å¢»å£¯å¥¬å°‡å¸³åº„å¼µæŽŒæš²æ�–樟檣欌漿牆狀ç��ç’‹ç« ç²§è…¸è‡Ÿè‡§èŽŠè‘¬è”£è–”è—�è£�贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障å†�哉在宰æ‰�æ��æ ½æ¢“æ¸½æ»“ç�½ç¸¡è£�財載齋齎çˆç®�è«�錚佇低儲咀å§�底抵æ�µæ¥®æ¨—沮渚狙猪疽箸紵苧è�¹è‘—藷詛貯躇這邸雎齟勣å�Šå«¡å¯‚摘敵滴狄炙的ç©�笛ç±�績翟è�»è¬«è³Šèµ¤è·¡è¹Ÿè¿ªè¿¹é�©é�‘佃佺傳全典å‰�å‰ªå¡¡å¡¼å¥ å°ˆå±•å»›æ‚›æˆ°æ “æ®¿æ°ˆæ¾±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎ç� 田甸畑癲çŒç®‹ç®ç¯†çº�詮輾轉鈿銓錢é�«é›»é¡šé¡«é¤žåˆ‡æˆªæŠ˜æµ™ç™¤ç«Šç¯€çµ¶å� 岾店漸点粘霑鮎點接摺è�¶ä¸�井äºå�œå�µå‘ˆå§ƒå®šå¹€åºå»·å¾�æƒ…æŒºæ”¿æ•´æ—Œæ™¶æ™¸æŸ¾æ¥¨æª‰æ£æ±€æ·€æ·¨æ¸Ÿæ¹žç€žç‚¡çŽŽç�½ç”ºç�›ç¢‡ç¦Žç¨‹ç©½ç²¾ç¶Žè‰‡è¨‚諪貞é„é…Šé‡˜é‰¦é‹ŒéŒ éœ†é�–�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�œé ‚é¼Žåˆ¶åŠ‘å•¼å ¤å¸�弟悌æ��梯濟ç¥ç¬¬è‡�薺製諸蹄é†�除際霽題齊俎兆凋助嘲弔彫措æ“�æ—©æ™�曺曹æœ�æ¢�æ£—æ§½æ¼•æ½®ç…§ç‡¥çˆªç’ªçœºç¥–ç¥šç§Ÿç¨ çª•ç²—ç³Ÿçµ„ç¹°è‚‡è—»èš¤è©”èª¿è¶™èº�é€ é�釣阻雕鳥æ—�簇足é�ƒå˜å°Šå�’æ‹™çŒ�倧宗從悰慫棕淙ç�®ç¨®çµ‚綜縱腫�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵é�¾é�˜ä½�å��左座挫罪主ä½�ä¾�å�šå§�胄呪周嗾å¥�宙州廚æ™�æœ±æŸ±æ ªæ³¨æ´²æ¹Šæ¾�ç‚·ç� 疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄é§�竹粥俊å„�å‡†åŸˆå¯¯å³»æ™™æ¨½æµšæº–æ¿¬ç„Œç•¯ç«£è ¢é€¡é�µé›‹é§¿èŒ�ä¸ä»²è¡†é‡�å�½æ«›æ¥«æ±�葺增憎曾拯çƒ�甑症繒蒸è‰è´ˆä¹‹å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地å�€å¿—æŒ�指摯支旨智æž�æž³æ¢æ± æ²šæ¼¬çŸ¥ç ¥ç¥‰ç¥—ç´™è‚¢è„‚è‡³èŠ�芷蜘誌識贄趾é�²ç›´ç¨™ç¨·ç¹”è�·å”‡å—”塵振æ�¢æ™‰æ™‹æ¡æ¦›æ®„津溱ç��瑨璡畛疹盡眞瞋秦縉ç¸�臻蔯袗診賑軫辰進éŽé™£é™³éœ‡ä¾„å�±å§ªå«‰å¸™æ¡Žç“†ç–¾ç§©çª’膣è›è³ªè·Œè¿æ–Ÿæœ•什執潗ç·�輯�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¶é›†å¾µæ‡²æ¾„且侘借å�‰å—Ÿåµ¯å·®æ¬¡æ¤ç£‹ç®šï§¾è¹‰è»Šé�®æ�‰æ�¾ç�€çª„錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽é¤�饌刹察擦æœç´®åƒå�ƒå¡¹æ…˜æ…™æ‡ºæ–¬ç«™è®’è®–å€‰å€¡å‰µå”±å¨¼å» å½°æ„´æ•žæ˜Œæ˜¶æš¢æ§�滄漲猖瘡窓脹艙è�–è’¼å‚µåŸ°å¯€å¯¨å½©æŽ¡ç ¦ç¶µè�œè”¡é‡‡é‡µå†ŠæŸµç–�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è²¬å‡„å¦»æ‚½è™•å€œï§¿å‰”å°ºæ…½æˆšæ‹“æ“²æ–¥æ»Œç˜ è„Šè¹ é™Ÿéš»ä»Ÿå�ƒå–˜å¤©å·�擅泉淺玔穿舛薦賤è¸�é�·é‡§é—¡é˜¡éŸ†å‡¸å“²å–†å¾¹æ’¤æ¾ˆç¶´è¼Ÿè½�é�µåƒ‰å°–æ²¾æ·»ç”›çž»ç°½ç±¤è©¹è«‚å žå¦¾å¸–æ�·ç‰’ç–Šç�«è«œè²¼è¼’廳晴淸è�½è��è«‹é�‘é¯–ï¨€å‰ƒæ›¿æ¶•æ»¯ç· è«¦é€®é�žé«”åˆ�剿哨憔抄招梢�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦ç¡�ç¤�礎秒ç¨�肖艸苕è�‰è•‰è²‚超酢醋醮促囑ç‡çŸ—蜀觸寸忖æ�‘邨å�¢å¡šå¯µæ‚¤æ†�æ‘ ç¸½è�°è”¥éŠƒæ’®å‚¬å´”æœ€å¢œæŠ½æŽ¨æ¤Žæ¥¸æ¨žæ¹«çšºç§‹èŠ»è�©è«�趨追鄒酋醜éŒ�錘鎚雛騶é°�丑畜ç¥�竺ç‘築縮蓄蹙蹴軸é€�æ˜¥æ¤¿ç‘ƒå‡ºæœ®é»œå……å¿ æ²–èŸ²è¡�衷悴膵è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅å�–å�¹å˜´å¨¶å°±ç‚Šç¿ è�šè„†è‡è¶£é†‰é©Ÿé·²å�´ä»„åŽ æƒ»æ¸¬å±¤ä¾ˆå€¤å—¤å³™å¹Ÿæ�¥æ¢”治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅é£è¦ªä¸ƒæŸ’漆侵寢枕沈浸ç�›ç §é‡�é�¼èŸ„秤稱快他咤唾墮妥惰打拖朶楕舵陀馱é§�倬å�“å•„å�¼ï¨�托拓擢晫æŸ�æ¿�濯ç�¢ç�¸è¨—�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¸å‘‘嘆å�¦å½ˆæ†šæŽç�˜ç‚綻誕奪脫探眈耽貪塔æ�榻宕帑湯糖蕩兌å�°å¤ªæ€ 態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎å��土討慟桶洞痛ç’çµ±é€šå †æ§Œè…¿è¤ªé€€é ¹å�¸å¥—妬投é€�鬪æ…�特闖å�¡å©†å·´æŠŠæ’擺æ�·æ³¢æ´¾çˆ¬ç�¶ç ´ç½·èŠè·›é —判å�‚æ�¿ç‰ˆç“£è²©è¾¦éˆ‘�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八å�æ�Œä½©å”„悖敗沛浿牌狽稗覇è²�彿¾Žçƒ¹è†¨æ„Žä¾¿å��æ‰�片篇編翩é��éžé¨™è²¶å�ªå¹³æž°è��è©•å� 嬖幣廢弊斃肺蔽閉陛佈包åŒ�åŒ�咆哺圃布怖抛抱æ�•ï¨†æ³¡æµ¦ç–±ç ²èƒžè„¯è‹žè‘¡è’²è¢�褒逋鋪飽鮑幅暴æ›�瀑爆輻俵剽彪慓æ�“標漂瓢票表豹飇飄驃�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å“�稟楓諷豊風馮彼披疲皮被é�¿é™‚匹弼必泌ç�Œç•¢ç–‹ç†è‹¾é¦�ä¹�逼下何厦å¤�廈昰河瑕è�·è�¦è³€é��霞鰕壑å¸è™�謔鶴寒æ�¨æ‚�旱汗漢澣瀚罕翰閑閒é™�韓割轄函å�«å’¸å•£å–Šæª»æ¶µç·˜è‰¦éŠœé™·é¹¹å�ˆå“ˆç›’蛤閤闔陜亢伉姮嫦巷æ�’抗æ�æ¡�沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¨ˆï¨‰é …äº¥å�•咳垓奚å©å®³æ‡ˆæ¥·æµ·ç€£èŸ¹è§£è©²è«§é‚‚é§éª¸åŠ¾æ ¸å€–å¹¸æ��è�‡è¡Œäº«å�‘åš®ç�¦é„•響餉饗香噓墟虛許憲櫶ç�»è»’æ‡éšªé©—奕爀赫é�©ä¿”峴弦懸晛泫炫玄玹ç�¾çœ©ç��絃絢縣舷衒見賢鉉顯å‘ç©´è¡€é �å«Œä¿ å�”夾峽挾浹狹脅脇莢é‹�é °äº¨å…„åˆ‘åž‹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅ç��炯熒ç�©ç‘©è�Šèž¢è¡¡é€ˆé‚¢éŽ£é¦¨å…®å½—æƒ æ…§æš³è•™è¹Šé†¯éž‹ä¹Žäº’å‘¼å£•å£ºå¥½å²µå¼§æˆ¶æ‰ˆæ˜Šæ™§æ¯«æµ©æ·�æ¹–æ»¸æ¾”æ¿ æ¿©ç��ç‹�ç�¥ç‘šç“ 皓祜糊縞胡芦葫蒿虎號è�´è·è±ªéŽ¬é €é¡¥æƒ‘æˆ–é…·å©šæ˜�混渾ç�¿é‚忽惚ç¬�哄弘汞泓洪烘紅虹訌鴻化和嬅樺ç�«ç•µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç¦�禾花è�¯è©±è�貨é�´ï¨‹æ“´æ”«ç¢ºç¢»ç©«ä¸¸å–šå¥�宦幻患æ�›æ¡æ™¥æ¡“渙煥環紈還驩鰥活滑猾è±�闊凰幌徨æ��惶愰慌晃晄榥æ³�湟滉潢煌璜皇ç¯�ç°§è�’è�—é�‘éš�黃匯回廻徊æ�¢æ‚”懷晦會檜淮澮ç�°ç�ªç¹ªè†¾èŒ´è›”誨賄劃ç�²å®–æ©«é�„哮嚆å�效斅曉梟æ¶�淆�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵é©�侯候厚å�Žå�¼å–‰å—…帿後朽煦ç��逅勛勳塤壎焄ç†�燻薰訓暈薨喧暄煊è�±å�‰å–™æ¯�彙徽æ�®æš‰ç…‡è«±è¼�麾休æ�ºçƒ‹ç•¦è™§æ�¤èŽé·¸å…‡å‡¶åŒˆæ´¶èƒ¸é»‘昕欣炘痕å�ƒå±¹ç´‡è¨–æ¬ æ¬½æ†å�¸æ�°æ´½ç¿•興僖凞喜噫å›�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[52936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}�€������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[126] = \"���������������������������������������������������������������������������������������������������������������������������~���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[54936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"����������������������������������������������������������������丂丄丅丆ä¸�ä¸’ä¸—ä¸Ÿä¸ ä¸¡ä¸£ä¸¦ä¸©ä¸®ä¸¯ä¸±ä¸³ä¸µä¸·ä¸¼ä¹€ä¹�乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬ä¹ä¹®ä¹¯ä¹²ä¹´ä¹µä¹¶ä¹·ä¹¸ä¹¹ä¹ºä¹»ä¹¼ä¹½ä¹¿äº€äº�亂亃亄亅亇亊�äº�亖亗亙亜äº�亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌ä»�ä»�ä»’ä»šä»›ä»œä» ä»¢ä»¦ä»§ä»©ä»ä»®ä»¯ä»±ä»´ä»¸ä»¹ä»ºä»¼ä»¾ä¼€ä¼‚伃伄伅伆伇伈伋伌伒伓伔伕伖伜ä¼�伡伣伨伩伬ä¼ä¼®ä¼±ä¼³ä¼µä¼·ä¼¹ä¼»ä¼¾ä¼¿ä½€ä½�佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫ä½ä½®ä½±ä½²ä½µä½·ä½¸ä½¹ä½ºä½½ä¾€ä¾�侂侅來侇侊侌侎ä¾�侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"����������������������������������������������������������������侤侫ä¾ä¾°ä¾±ä¾²ä¾³ä¾´ä¾¶ä¾·ä¾¸ä¾¹ä¾ºä¾»ä¾¼ä¾½ä¾¾ä¿€ä¿�係俆俇俈俉俋俌ä¿�ä¿’ä¿“ä¿”ä¿•ä¿–ä¿™ä¿›ä¿ ä¿¢ä¿¤ä¿¥ä¿§ä¿«ä¿¬ä¿°ä¿²ä¿´ä¿µä¿¶ä¿·ä¿¹ä¿»ä¿¼ä¿½ä¿¿å€€å€�倂倃倄倅倆倇倈倉倊�個倎å€�們倓倕倖倗倛å€�å€žå€ å€¢å€£å€¤å€§å€«å€¯å€°å€±å€²å€³å€´å€µå€¶å€·å€¸å€¹å€»å€½å€¿å�€å��å�‚å�„å�…å�†å�‰å�Šå�‹å��å��å�‘å�’å�“å�”å�–å�—å�˜å�™å�›å��å�žå�Ÿå� å�¡å�¢å�£å�¤å�¦å�§å�¨å�©å�ªå�«å�å�®å�¯å�°å�±å�²å�³å�´å�µå�¸å�¹å�ºå�¼å�½å‚�傂傃傄傆傇傉傊傋傌傎å‚�å‚�傑傒傓傔傕傖傗傘備傚傛傜å‚�å‚žå‚Ÿå‚ å‚¡å‚¢å‚¤å‚¦å‚ªå‚«å‚傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������傽傾傿僀åƒ�僂僃僄僅僆僇僈僉僊僋僌åƒ�僎åƒ�僑僒僓僔僕僗僘僙僛僜åƒ�åƒžåƒŸåƒ åƒ¡åƒ¢åƒ£åƒ¤åƒ¥åƒ¨åƒ©åƒªåƒ«åƒ¯åƒ°åƒ±åƒ²åƒ´åƒ¶åƒ·åƒ¸åƒ¹åƒºåƒ¼åƒ½åƒ¾åƒ¿å„€å„�儂儃億儅儈�儉儊儌å„�儎å„�å„�儑儓儔儕儖儗儘儙儚儛儜å„�å„žå„Ÿå„ å„¢å„£å„¤å„¥å„¦å„§å„¨å„©å„ªå„«å„¬å„儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎å…�å…�兒兓兗兘兙兛å…�å…žå…Ÿå… å…¡å…£å…¤å…¦å…§å…©å…ªå…¯å…²å…ºå…¾å…¿å†ƒå†„å††å†‡å†Šå†‹å†Žå†�å†�冑冓冔冘冚å†�冞冟冡冣冦冧冨冩冪å†å†®å†´å†¸å†¹å†ºå†¾å†¿å‡�凂凃凅凈凊å‡�凎å‡�凒凓凔凕凖凗�\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌åˆ�åˆ�刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎å‰�剒剓剕剗剘�剙剚剛å‰�å‰Ÿå‰ å‰¢å‰£å‰¤å‰¦å‰¨å‰«å‰¬å‰å‰®å‰°å‰±å‰³å‰´å‰µå‰¶å‰·å‰¸å‰¹å‰ºå‰»å‰¼å‰¾åŠ€åŠƒåŠ„åŠ…åŠ†åŠ‡åŠ‰åŠŠåŠ‹åŠŒåŠ�劎åŠ�劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀å‹�勂勄勅勆勈勊勌å‹�勎å‹�勑勓勔動勗務勚勛勜å‹�å‹žå‹ å‹¡å‹¢å‹£å‹¥å‹¦å‹§å‹¨å‹©å‹ªå‹«å‹¬å‹å‹®å‹¯å‹±å‹²å‹³å‹´å‹µå‹¶å‹·å‹¸å‹»å‹¼å‹½åŒ�匂匃匄匇匉匊匋匌匎�\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬åŒåŒ¯åŒ°åŒ±åŒ²åŒ³åŒ´åŒµåŒ¶åŒ·åŒ¸åŒ¼åŒ½å�€å�‚å�„å�†å�‹å�Œå��å��å�”å�˜å�™å�›å��å�¥å�¨å�ªå�¬å�å�²å�¶å�¹å�»å�¼å�½å�¾åŽ€åŽ�厃厇厈厊厎åŽ��åŽ�åŽ‘åŽ’åŽ“åŽ”åŽ–åŽ—åŽ™åŽ›åŽœåŽžåŽ åŽ¡åŽ¤åŽ§åŽªåŽ«åŽ¬åŽåŽ¯åŽ°åŽ±åŽ²åŽ³åŽ´åŽµåŽ·åŽ¸åŽ¹åŽºåŽ¼åŽ½åŽ¾å�€å�ƒå�„å�…å�†å�‡å�Žå��å��å�’å�“å�•å�šå�œå��å�žå�¡å�¢å�§å�´å�ºå�¾å�¿å�€å�‚å�…å�‡å�‹å�”å�˜å�™å�šå�œå�¢å�¤å�¥å�ªå�°å�³å�¶å�·å�ºå�½å�¿å‘�呂呄呅呇呉呌å‘�呎å‘�呑呚å‘�å‘žå‘Ÿå‘ å‘¡å‘£å‘¥å‘§å‘©å‘ªå‘«å‘¬å‘呮呯呰呴呹呺呾呿å’�咃咅咇咈咉咊å’�å’‘å’“å’—å’˜å’œå’žå’Ÿå’ å’¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å’¢å’¥å’®å’°å’²å’µå’¶å’·å’¹å’ºå’¼å’¾å“ƒå“…å“Šå“‹å“–å“˜å“›å“ å“¡å“¢å“£å“¤å“«å“¬å“¯å“°å“±å“´å“µå“¶å“·å“¸å“¹å“»å“¾å”€å”‚å”ƒå”„å”…å”ˆå”Šå”‹å”Œå”�唎唒唓唕唖唗唘唙唚唜å”�唞唟唡唥唦�唨唩唫å”唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌å•�啎å•�啑啒啓啔啗啘啙啚啛å•�å•žå•Ÿå• å•¢å•£å•¨å•©å•«å•¯å•°å•±å•²å•³å•´å•¹å•ºå•½å•¿å–…å–†å–Œå–�å–Žå–�å–’å–“å–•å––å–—å–šå–›å–žå– å–¡å–¢å–£å–¤å–¥å–¦å–¨å–©å–ªå–«å–¬å–單喯喰喲喴営喸喺喼喿嗀å—�嗂嗃嗆嗇嗈嗊嗋嗎å—�å—�å—•å——å—˜å—™å—šå—›å—žå— å—¢å—§å—©å—嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋å˜�å˜�嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜å˜�å˜ å˜¡å˜¢å˜¥å˜¦å˜¨å˜©å˜ªå˜«å˜®å˜¯å˜°å˜³å˜µå˜·å˜¸å˜ºå˜¼å˜½å˜¾å™€å™�噂噃噄噅噆噇噈噉噊噋å™�å™�噑噒噓噕噖噚噛å™�å™žå™Ÿå™ å™¡ï¿½å™£å™¥å™¦å™§å™å™®å™¯å™°å™²å™³å™´å™µå™·å™¸å™¹å™ºå™½å™¾å™¿åš€åš�嚂嚃嚄嚇嚈嚉嚊嚋嚌åš�åš�嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜åš�åšžåšŸåš åš¡åš¢åš¤åš¥åš¦åš§åš¨åš©åšªåš«åš¬åšåš®åš°åš±åš²åš³åš´åšµåš¶åš¸åš¹åšºåš»åš½åš¾åš¿å›€å›�囂囃囄囅囆囇囈囉囋囌å›�囎å›�å›�囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀åœ�圂圅圇國圌åœ�圎åœ�åœ�圑�\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛åœ�åœžåœ åœ¡åœ¢åœ¤åœ¥åœ¦åœ§åœ«åœ±åœ²åœ´åœµåœ¶åœ·åœ¸åœ¼åœ½åœ¿å��å�ƒå�„å�…å�†å�ˆå�‰å�‹å�’å�“å�”å�•å�–å�˜å�™å�¢å�£å�¥å�§å�¬å�®å�°å�±å�²å�´å�µå�¸å�¹å�ºå�½å�¾å�¿åž€ï¿½åž�垇垈垉垊åž�垎åž�åž�垑垔垕垖垗垘垙垚垜åž�垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀åŸ�埄埅埆埇埈埉埊埌åŸ�åŸ�埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿å �å ƒå „å …å ˆå ‰å Šå Œå Žå �å �å ’å “å ”å –å —å ˜å šå ›å œå �å Ÿå ¢å £å ¥å ¦å §å ¨å ©å «å ¬å å ®å ¯å ±å ²å ³å ´å ¶å ·å ¸å ¹å ºå »å ¼å ½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å ¾å ¿å¡€å¡�塂塃塅塆塇塈塉塊塋塎å¡�å¡�塒塓塕塖塗塙塚塛塜å¡�å¡Ÿå¡ å¡¡å¡¢å¡£å¡¤å¡¦å¡§å¡¨å¡©å¡ªå¡å¡®å¡¯å¡°å¡±å¡²å¡³å¡´å¡µå¡¶å¡·å¡¸å¡¹å¡ºå¡»å¡¼å¡½å¡¿å¢‚墄墆墇墈墊墋墌�å¢�墎å¢�å¢�墑墔墕墖増墘墛墜å¢�å¢ å¢¡å¢¢å¢£å¢¤å¢¥å¢¦å¢§å¢ªå¢«å¢¬å¢å¢®å¢¯å¢°å¢±å¢²å¢³å¢´å¢µå¢¶å¢·å¢¸å¢¹å¢ºå¢»å¢½å¢¾å¢¿å£€å£‚壃壄壆壇壈壉壊壋壌å£�壎å£�å£�壒壓壔壖壗壘壙壚壛壜å£�å£žå£Ÿå£ å£¡å£¢å££å£¥å£¦å£§å£¨å£©å£ªå£å£¯å£±å£²å£´å£µå£·å£¸å£ºå£»å£¼å£½å£¾å£¿å¤€å¤�夃夅夆夈変夊夋夌夎å¤�夑夒夓夗夘夛å¤�å¤žå¤ å¤¡å¤¢å¤£å¤¦å¤¨å¤¬å¤°å¤²å¤³å¤µå¤¶å¤»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌å¥�å¥�奒奓奙奛奜å¥�奞奟奡奣奤奦奧奨奩奪奫奬å¥å¥®å¥¯å¥°å¥±å¥²å¥µå¥·å¥ºå¥»å¥¼å¥¾å¥¿å¦€å¦…妉妋妌妎å¦�å¦�妑妔妕妘妚妛妜å¦�å¦Ÿå¦ å¦¡å¦¢å¦¦ï¿½å¦§å¦¬å¦å¦°å¦±å¦³å¦´å¦µå¦¶å¦·å¦¸å¦ºå¦¼å¦½å¦¿å§€å§�姂姃姄姅姇姈姉姌å§�å§Žå§�å§•å§–å§™å§›å§žå§Ÿå§ å§¡å§¢å§¤å§¦å§§å§©å§ªå§«å§å§®å§¯å§°å§±å§²å§³å§´å§µå§¶å§·å§¸å§ºå§¼å§½å§¾å¨€å¨‚娊娋å¨�娎å¨�å¨�娒娔娕娖娗娙娚娛å¨�娞娡娢娤娦娧娨娪娫娬å¨å¨®å¨¯å¨°å¨³å¨µå¨·å¨¸å¨¹å¨ºå¨»å¨½å¨¾å¨¿å©�婂婃婄婅婇婈婋婌å©�婎å©�å©�婑婒婓婔婖婗婘婙婛婜å©�å©žå©Ÿå© ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬å©å©®å©¯å©°å©±å©²å©³å©¸å©¹å©»å©¼å©½å©¾åª€åª�媂媃媄媅媆媇媈媉媊媋媌åª�媎åª�åª�媑媓媔媕媖媗媘媙媜åª�åªžåªŸåª åª¡åª¢åª£åª¤åª¥åª¦åª§åª¨åª©åª«åª¬ï¿½åªåª®åª¯åª°åª±åª´åª¶åª·åª¹åªºåª»åª¼åª½åª¿å«€å«ƒå«„嫅嫆嫇嫈嫊嫋å«�嫎å«�å«�嫑嫓嫕嫗嫙嫚嫛å«�嫞嫟嫢嫤嫥嫧嫨嫪嫬å«å«®å«¯å«°å«²å«³å«´å«µå«¶å«·å«¸å«¹å«ºå«»å«¼å«½å«¾å«¿å¬€å¬�嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌å¬�嬎å¬�å¬�嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜å¬�å¬žå¬Ÿå¬ å¬¡å¬¢å¬£å¬¤å¬¥å¬¦å¬§å¬¨å¬©å¬ªå¬«å¬¬å¬å¬®å¬¯å¬°å¬±å¬³å¬µå¬¶å¬¸å¬¹å¬ºå¬»å¬¼å¬½å¬¾å¬¿å�å‚åƒå„å…å†å‡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������åˆå‰åŠå‹åŒå�åŽå�å’å–åžå å¡å§å¨å«åå®å¯å²å´å¶å·å¸å¹å»å¼å¾å¿å®‚宆宊å®�宎å®�宑宒宔宖実宧宨宩宬å®å®®å®¯å®±å®²å®·å®ºå®»å®¼å¯€å¯�寃寈寉寊寋å¯�寎å¯�ï¿½å¯‘å¯”å¯•å¯–å¯—å¯˜å¯™å¯šå¯›å¯œå¯ å¯¢å¯£å¯¦å¯§å¯©å¯ªå¯«å¯¬å¯å¯¯å¯±å¯²å¯³å¯´å¯µå¯¶å¯·å¯½å¯¾å°€å°‚尃尅將專尋尌å°�å°Žå°�å°’å°“å°—å°™å°›å°žå°Ÿå° å°¡å°£å°¦å°¨å°©å°ªå°«å°å°®å°¯å°°å°²å°³å°µå°¶å°·å±ƒå±„屆屇屌å±�屒屓屔屖屗屘屚屛屜å±�屟屢層屧屨屩屪屫屬å±å±°å±²å±³å±´å±µå±¶å±·å±¸å±»å±¼å±½å±¾å²€å²ƒå²„岅岆岇岉岊岋岎å²�岒岓岕å²�å²žå²Ÿå² å²¡å²¤å²¥å²¦å²§å²¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌å³�峎å³�å³�峑峓峔峕峖峗峘峚峛峜å³�å³žå³Ÿå³ å³¢å³£å³§å³©å³«å³¬å³®å³¯å³±å³²å³³å³´å³µå³¶å³·å³¸å³¹å³ºå³¼å³½å³¾å³¿å´€ï¿½å´�崄崅崈崉崊崋崌å´�å´�å´�崑崒崓崕崗崘崙崚崜å´�å´Ÿå´ å´¡å´¢å´£å´¥å´¨å´ªå´«å´¬å´¯å´°å´±å´²å´³å´µå´¶å´·å´¸å´¹å´ºå´»å´¼å´¿åµ€åµ�嵂嵃嵄嵅嵆嵈嵉åµ�嵎åµ�åµ�åµ‘åµ’åµ“åµ”åµ•åµ–åµ—åµ™åµšåµœåµžåµŸåµ åµ¡åµ¢åµ£åµ¤åµ¥åµ¦åµ§åµ¨åµªåµåµ®åµ°åµ±åµ²åµ³åµµåµ¶åµ·åµ¸åµ¹åµºåµ»åµ¼åµ½åµ¾åµ¿å¶€å¶�嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌å¶�å¶Žå¶�å¶�å¶‘å¶’å¶“å¶”å¶•å¶–å¶—å¶˜å¶šå¶›å¶œå¶žå¶Ÿå¶ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬å¶å¶®å¶¯å¶°å¶±å¶²å¶³å¶´å¶µå¶¶å¶¸å¶¹å¶ºå¶»å¶¼å¶½å¶¾å¶¿å·€å·�巂巃巄巆巇巈巉巊巋巌巎å·�å·�å·‘å·’å·“å·”å·•å·–å·—å·˜å·™å·šå·œå·Ÿå· å·£å·¤å·ªå·¬å·ï¿½å·°å·µå·¶å·¸å·¹å·ºå·»å·¼å·¿å¸€å¸„帇帉帊帋å¸�å¸Žå¸’å¸“å¸—å¸žå¸Ÿå¸ å¸¡å¸¢å¸£å¸¤å¸¥å¸¨å¸©å¸ªå¸«å¸¬å¸¯å¸°å¸²å¸³å¸´å¸µå¸¶å¸¹å¸ºå¸¾å¸¿å¹€å¹�幃幆幇幈幉幊幋å¹�幎å¹�å¹�幑幒幓幖幗幘幙幚幜å¹�å¹Ÿå¹ å¹£å¹¤å¹¥å¹¦å¹§å¹¨å¹©å¹ªå¹«å¹¬å¹å¹®å¹¯å¹°å¹±å¹µå¹·å¹¹å¹¾åº�庂広庅庈庉庌åº�庎庒庘庛åº�庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀å»�廂廃廄廅�\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������廆廇廈廋廌å»�廎å»�å»�廔廕廗廘廙廚廜å»�å»žå»Ÿå» å»¡å»¢å»£å»¤å»¥å»¦å»§å»©å»«å»¬å»å»®å»¯å»°å»±å»²å»³å»µå»¸å»¹å»»å»¼å»½å¼…弆弇弉弌å¼�弎å¼�弒弔弖弙弚弜å¼�弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿å½�彂彃彄彅彆彇彈彉彊彋彌å½�彎å½�å½‘å½”å½™å½šå½›å½œå½žå½Ÿå½ å½£å½¥å½§å½¨å½«å½®å½¯å½²å½´å½µå½¶å½¸å½ºå½½å½¾å½¿å¾ƒå¾†å¾�徎å¾�徑従徔徖徚徛å¾�å¾žå¾Ÿå¾ å¾¢å¾£å¾¤å¾¥å¾¦å¾§å¾©å¾«å¾¬å¾¯å¾°å¾±å¾²å¾³å¾´å¾¶å¾¸å¾¹å¾ºå¾»å¾¾å¾¿å¿€å¿�忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������怈怉怋怌æ€�æ€‘æ€“æ€—æ€˜æ€šæ€žæ€Ÿæ€¢æ€£æ€¤æ€¬æ€æ€®æ€°æ€±æ€²æ€³æ€´æ€¶æ€·æ€¸æ€¹æ€ºæ€½æ€¾æ�€æ�„æ�…æ�†æ�‡æ�ˆæ�‰æ�Šæ�Œæ�Žæ��æ�‘æ�“æ�”æ�–æ�—æ�˜æ�›æ�œæ�žæ�Ÿæ� æ�¡æ�¥æ�¦æ�®æ�±æ�²æ�´æ�µæ�·æ�¾æ‚€ï¿½æ‚�悂悅悆悇悈悊悋悎æ‚�æ‚�悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀æƒ�惂惃惄惇惈惉惌æƒ�惎æƒ�æƒ�惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌æ„�愑愒愓愔愖愗愘愙愛愜æ„�æ„žæ„¡æ„¢æ„¥æ„¨æ„©æ„ªæ„¬æ„æ„®æ„¯æ„°æ„±æ„²æ„³æ„´æ„µæ„¶æ„·æ„¸æ„¹æ„ºæ„»æ„¼æ„½æ„¾æ…€æ…�慂慃慄慅慆�\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������慇慉態æ…�æ…�æ…�æ…’æ…“æ…”æ…–æ…—æ…˜æ…™æ…šæ…›æ…œæ…žæ…Ÿæ… æ…¡æ…£æ…¤æ…¥æ…¦æ…©æ…ªæ…«æ…¬æ…æ…®æ…¯æ…±æ…²æ…³æ…´æ…¶æ…¸æ…¹æ…ºæ…»æ…¼æ…½æ…¾æ…¿æ†€æ†�憂憃憄憅憆憇憈憉憊憌æ†�æ†�æ†�æ†‘æ†’æ†“æ†•ï¿½æ†–æ†—æ†˜æ†™æ†šæ†›æ†œæ†žæ†Ÿæ† æ†¡æ†¢æ†£æ†¤æ†¥æ†¦æ†ªæ†«æ†æ†®æ†¯æ†°æ†±æ†²æ†³æ†´æ†µæ†¶æ†¸æ†¹æ†ºæ†»æ†¼æ†½æ†¿æ‡€æ‡�懃懄懅懆懇應懌æ‡�懎æ‡�æ‡�懓懕懖懗懘懙懚懛懜æ‡�æ‡žæ‡Ÿæ‡ æ‡¡æ‡¢æ‡£æ‡¤æ‡¥æ‡§æ‡¨æ‡©æ‡ªæ‡«æ‡¬æ‡æ‡®æ‡¯æ‡°æ‡±æ‡²æ‡³æ‡´æ‡¶æ‡·æ‡¸æ‡¹æ‡ºæ‡»æ‡¼æ‡½æ‡¾æˆ€æˆ�戂戃戄戅戇戉戓戔戙戜æˆ�æˆžæˆ æˆ£æˆ¦æˆ§æˆ¨æˆ©æˆ«æˆæˆ¯æˆ°æˆ±æˆ²æˆµæˆ¶æˆ¸æˆ¹æˆºæˆ»æˆ¼æ‰‚扄扅扆扊�\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������æ‰�æ‰�払扖扗扙扚扜æ‰�æ‰žæ‰Ÿæ‰ æ‰¡æ‰¢æ‰¤æ‰¥æ‰¨æ‰±æ‰²æ‰´æ‰µæ‰·æ‰¸æ‰ºæ‰»æ‰½æŠ�抂抃抅抆抇抈抋抌æŠ�抎æŠ�æŠ�抔抙抜æŠ�æŠžæŠ£æŠ¦æŠ§æŠ©æŠªæŠæŠ®æŠ¯æŠ°æŠ²æŠ³æŠ´æŠ¶æŠ·æŠ¸æŠºæŠ¾æ‹€æ‹��拃拋æ‹�æ‹‘æ‹•æ‹�æ‹žæ‹ æ‹¡æ‹¤æ‹ªæ‹«æ‹°æ‹²æ‹µæ‹¸æ‹¹æ‹ºæ‹»æŒ€æŒƒæŒ„æŒ…æŒ†æŒŠæŒ‹æŒŒæŒ�æŒ�æŒ�æŒ’æŒ“æŒ”æŒ•æŒ—æŒ˜æŒ™æŒœæŒ¦æŒ§æŒ©æŒ¬æŒæŒ®æŒ°æŒ±æŒ³æŒ´æŒµæŒ¶æŒ·æŒ¸æŒ»æŒ¼æŒ¾æŒ¿æ�€æ��æ�„æ�‡æ�ˆæ�Šæ�‘æ�’æ�“æ�”æ�–æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ� æ�¤æ�¥æ�¦æ�¨æ�ªæ�«æ�¬æ�¯æ�°æ�²æ�³æ�´æ�µæ�¸æ�¹æ�¼æ�½æ�¾æ�¿æŽ�掃掄掅掆掋æŽ�掑掓掔掕掗掙掚掛掜æŽ�掞掟採掤掦掫掯掱掲掵掶掹掻掽掿æ�€ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������æ��æ�‚æ�ƒæ�…æ�‡æ�ˆæ�Šæ�‹æ�Œæ�‘æ�“æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ�Ÿæ�¢æ�¤æ�¥æ�¦æ�§æ�¨æ�«æ�¬æ�®æ�¯æ�°æ�±æ�³æ�µæ�·æ�¹æ�ºæ�»æ�¼æ�¾æ�ƒæ�„æ�†æ�‡æ�ˆæ�‰æ�Šæ��æ�Žæ�‘æ�’æ�•æ�–æ�—æ�˜æ�™æ�šæ��æ�Ÿæ�¢æ�£æ�¤ï¿½æ�¥æ�§æ�¨æ�©æ�«æ�®æ�¯æ�°æ�±æ�²æ�³æ�µæ�¶æ�·æ�¸æ�¹æ�»æ�¼æ�¾æ‘€æ‘‚摃摉摋摌æ‘�摎æ‘�æ‘�摑摓摕摖摗摙摚摛摜æ‘�æ‘Ÿæ‘ æ‘¡æ‘¢æ‘£æ‘¤æ‘¥æ‘¦æ‘¨æ‘ªæ‘«æ‘¬æ‘®æ‘¯æ‘°æ‘±æ‘²æ‘³æ‘´æ‘µæ‘¶æ‘·æ‘»æ‘¼æ‘½æ‘¾æ‘¿æ’€æ’�撃撆撈撉撊撋撌æ’�æ’Žæ’�æ’�撓撔撗撘撚撛撜æ’�æ’Ÿæ’ æ’¡æ’¢æ’£æ’¥æ’¦æ’§æ’¨æ’ªæ’«æ’¯æ’±æ’²æ’³æ’´æ’¶æ’¹æ’»æ’½æ’¾æ’¿æ“�擃擄擆擇擈擉擊擋擌æ“�擑擓擔擕擖擙據�\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������擛擜æ“�æ“Ÿæ“ æ“¡æ“£æ“¥æ“§æ“¨æ“©æ“ªæ“«æ“¬æ“æ“®æ“¯æ“°æ“±æ“²æ“³æ“´æ“µæ“¶æ“·æ“¸æ“¹æ“ºæ“»æ“¼æ“½æ“¾æ“¿æ”�攂攃攄攅攆攇攈攊攋攌æ”�攎æ”�æ”�攑攓攔攕攖攗攙攚攛攜æ”�æ”žæ”Ÿæ” æ”¡ï¿½æ”¢æ”£æ”¤æ”¦æ”§æ”¨æ”©æ”ªæ”¬æ”æ”°æ”±æ”²æ”³æ”·æ”ºæ”¼æ”½æ•€æ•�敂敃敄敆敇敊敋æ•�敎æ•�æ•’æ•“æ•”æ•—æ•˜æ•šæ•œæ•Ÿæ• æ•¡æ•¤æ•¥æ•§æ•¨æ•©æ•ªæ•æ•®æ•¯æ•±æ•³æ•µæ•¶æ•¸æ•¹æ•ºæ•»æ•¼æ•½æ•¾æ•¿æ–€æ–�斂斃斄斅斆斈斉斊æ–�æ–Žæ–�斒斔斕斖斘斚æ–�æ–žæ– æ–¢æ–£æ–¦æ–¨æ–ªæ–¬æ–®æ–±æ–²æ–³æ–´æ–µæ–¶æ–·æ–¸æ–ºæ–»æ–¾æ–¿æ—€æ—‚æ—‡æ—ˆæ—‰æ—Šæ—�æ—�旑旓旔旕旘旙旚旛旜æ—�旞旟旡旣旤旪旫�\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿æ˜�昄昅昇昈昉昋æ˜�æ˜�昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊æ™�晎æ™�晑晘�晙晛晜æ™�æ™žæ™ æ™¢æ™£æ™¥æ™§æ™©æ™ªæ™«æ™¬æ™æ™±æ™²æ™³æ™µæ™¸æ™¹æ™»æ™¼æ™½æ™¿æš€æš�暃暅暆暈暉暊暋æš�暎æš�æš�æš’æš“æš”æš•æš˜æš™æššæš›æšœæšžæšŸæš æš¡æš¢æš£æš¤æš¥æš¦æš©æšªæš«æš¬æšæš¯æš°æš±æš²æš³æšµæš¶æš·æš¸æšºæš»æš¼æš½æš¿æ›€æ›�曂曃曄曅曆曇曈曉曊曋曌æ›�曎æ›�æ›�æ›‘æ›’æ›“æ›”æ›•æ›–æ›—æ›˜æ›šæ›žæ›Ÿæ› æ›¡æ›¢æ›£æ›¤æ›¥æ›§æ›¨æ›ªæ›«æ›¬æ›æ›®æ›¯æ›±æ›µæ›¶æ›¸æ›ºæ›»æ›½æœ�朂會�\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎æœ�æœ‘æœ’æœ“æœ–æœ˜æœ™æœšæœœæœžæœ æœ¡æœ¢æœ£æœ¤æœ¥æœ§æœ©æœ®æœ°æœ²æœ³æœ¶æœ·æœ¸æœ¹æœ»æœ¼æœ¾æœ¿æ��æ�„æ�…æ�‡æ�Šæ�‹æ��æ�’æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ��æ�¢æ�£æ�¤æ�¦æ�§æ�«æ�¬æ�®æ�±æ�´æ�¶ï¿½æ�¸æ�¹æ�ºæ�»æ�½æž€æž‚枃枅枆枈枊枌æž�枎æž�æž‘æž’æž“æž”æž–æž™æž›æžŸæž æž¡æž¤æž¦æž©æž¬æž®æž±æž²æž´æž¹æžºæž»æž¼æž½æž¾æž¿æŸ€æŸ‚æŸ…æŸ†æŸ‡æŸˆæŸ‰æŸŠæŸ‹æŸŒæŸ�æŸŽæŸ•æŸ–æŸ—æŸ›æŸŸæŸ¡æŸ£æŸ¤æŸ¦æŸ§æŸ¨æŸªæŸ«æŸæŸ®æŸ²æŸµæŸ¶æŸ·æŸ¸æŸ¹æŸºæŸ»æŸ¼æŸ¾æ �æ ‚æ ƒæ „æ †æ �æ �æ ’æ ”æ •æ ˜æ ™æ šæ ›æ œæ žæ Ÿæ æ ¢æ £æ ¤æ ¥æ ¦æ §æ ¨æ «æ ¬æ æ ®æ ¯æ °æ ±æ ´æ µæ ¶æ ºæ »æ ¿æ¡‡æ¡‹æ¡�æ¡�桒桖桗桘桙桚桛�\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������桜æ¡�æ¡žæ¡Ÿæ¡ªæ¡¬æ¡æ¡®æ¡¯æ¡°æ¡±æ¡²æ¡³æ¡µæ¡¸æ¡¹æ¡ºæ¡»æ¡¼æ¡½æ¡¾æ¡¿æ¢€æ¢‚梄梇梈梉梊梋梌æ¢�梎æ¢�梑梒梔梕梖梘梙梚梛梜æ¢�æ¢žæ¢Ÿæ¢ æ¢¡æ¢£æ¢¤æ¢¥æ¢©æ¢ªæ¢«æ¢¬æ¢®æ¢±æ¢²æ¢´æ¢¶æ¢·æ¢¸ï¿½æ¢¹æ¢ºæ¢»æ¢¼æ¢½æ¢¾æ¢¿æ£�棃棄棅棆棇棈棊棌棎æ£�æ£�棑棓棔棖棗棙棛棜æ£�æ£žæ£Ÿæ£¡æ£¢æ£¤æ£¥æ£¦æ£§æ£¨æ£©æ£ªæ£«æ£¬æ£æ£¯æ£²æ£³æ£´æ£¶æ£·æ£¸æ£»æ£½æ£¾æ£¿æ¤€æ¤‚椃椄椆椇椈椉椊椌æ¤�椑椓椔椕椖椗椘椙椚椛検æ¤�椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀æ¥�楃楄楅楆楇楈楉楊楋楌æ¥�楎æ¥�æ¥�楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¥¡æ¥¢æ¥¤æ¥¥æ¥§æ¥¨æ¥©æ¥ªæ¥¬æ¥æ¥¯æ¥°æ¥²æ¥³æ¥´æ¥µæ¥¶æ¥ºæ¥»æ¥½æ¥¾æ¥¿æ¦�榃榅榊榋榌榎æ¦�æ¦�榑榒榓榖榗榙榚æ¦�æ¦žæ¦Ÿæ¦ æ¦¡æ¦¢æ¦£æ¦¤æ¦¥æ¦¦æ¦©æ¦ªæ¦¬æ¦®æ¦¯æ¦°æ¦²æ¦³æ¦µæ¦¶æ¦¸æ¦¹æ¦ºæ¦¼æ¦½ï¿½æ¦¾æ¦¿æ§€æ§‚æ§ƒæ§„æ§…æ§†æ§‡æ§ˆæ§‰æ§‹æ§�æ§�槑槒槓槕槖槗様槙槚槜æ§�槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀æ¨�樂樃樄樅樆樇樈樉樋樌æ¨�樎æ¨�æ¨�樑樒樓樔樕樖標樚樛樜æ¨�æ¨žæ¨ æ¨¢æ¨£æ¨¤æ¨¥æ¨¦æ¨§æ¨©æ¨«æ¨¬æ¨æ¨®æ¨°æ¨²æ¨³æ¨´æ¨¶æ¨·æ¨¸æ¨¹æ¨ºæ¨»æ¨¼æ¨¿æ©€æ©�橂橃橅橆橈橉橊橋橌æ©�橎æ©�橑橒橓橔橕橖橗橚�\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������橜æ©�æ©žæ©Ÿæ© æ©¢æ©£æ©¤æ©¦æ©§æ©¨æ©©æ©ªæ©«æ©¬æ©æ©®æ©¯æ©°æ©²æ©³æ©´æ©µæ©¶æ©·æ©¸æ©ºæ©»æ©½æ©¾æ©¿æª�檂檃檅檆檇檈檉檊檋檌æª�æª�檒檓檔檕檖檘檙檚檛檜æª�æªžæªŸæª¡æª¢æª£æª¤æª¥æª¦ï¿½æª§æª¨æªªæªæª®æª¯æª°æª±æª²æª³æª´æªµæª¶æª·æª¸æª¹æªºæª»æª¼æª½æª¾æª¿æ«€æ«�櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌æ«�櫎æ«�æ«�櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜æ«�æ«žæ«Ÿæ« æ«¡æ«¢æ«£æ«¤æ«¥æ«¦æ«§æ«¨æ«©æ«ªæ««æ«¬æ«æ«®æ«¯æ«°æ«±æ«²æ«³æ«´æ«µæ«¶æ«·æ«¸æ«¹æ«ºæ«»æ«¼æ«½æ«¾æ«¿æ¬€æ¬�欂欃欄欅欆欇欈欉權欋欌æ¬�欎æ¬�æ¬�欑欒欓欔欕欖欗欘欙欚欛欜æ¬�æ¬žæ¬Ÿæ¬¥æ¬¦æ¬¨æ¬©æ¬ªæ¬«æ¬¬æ¬æ¬®ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¬¯æ¬°æ¬±æ¬³æ¬´æ¬µæ¬¶æ¬¸æ¬»æ¬¼æ¬½æ¬¿æ€æ�æ‚æ„æ…æˆæŠæ‹æ�æŽæ�æ�æ‘æ’æ“æ”æ•æ–æ—æ˜æšæ›æœæ�æžæŸæ æ¡æ¨æ©æ«æ¬ææ®æ¯æ°æ±æ²æ³æ´æµæ¶æ·æ¸æºæ½æ¾æ¿æ®€æ®…殈�殌殎æ®�æ®�殑殔殕殗殘殙殜æ®�æ®žæ®Ÿæ® æ®¢æ®£æ®¤æ®¥æ®¦æ®§æ®¨æ®©æ®«æ®¬æ®æ®®æ®¯æ®°æ®±æ®²æ®¶æ®¸æ®¹æ®ºæ®»æ®¼æ®½æ®¾æ¯€æ¯ƒæ¯„毆毇毈毉毊毌毎æ¯�毑毘毚毜æ¯�æ¯žæ¯Ÿæ¯ æ¯¢æ¯£æ¯¤æ¯¥æ¯¦æ¯§æ¯¨æ¯©æ¯¬æ¯æ¯®æ¯°æ¯±æ¯²æ¯´æ¯¶æ¯·æ¯¸æ¯ºæ¯»æ¯¼æ¯¾æ¯¿æ°€æ°�氂氃氄氈氉氊氋氌氎氒気氜æ°�æ°žæ° æ°£æ°¥æ°«æ°¬æ°æ°±æ°³æ°¶æ°·æ°¹æ°ºæ°»æ°¼æ°¾æ°¿æ±ƒæ±„汅汈汋汌æ±�汎æ±�汑汒汓汖汘�\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ±™æ±šæ±¢æ±£æ±¥æ±¦æ±§æ±«æ±¬æ±æ±®æ±¯æ±±æ±³æ±µæ±·æ±¸æ±ºæ±»æ±¼æ±¿æ²€æ²„沇沊沋æ²�沎沑沒沕沖沗沘沚沜æ²�æ²žæ² æ²¢æ²¨æ²¬æ²¯æ²°æ²´æ²µæ²¶æ²·æ²ºæ³€æ³�泂泃泆泇泈泋æ³�泎æ³�泑泒泘�泙泚泜æ³�æ³Ÿæ³¤æ³¦æ³§æ³©æ³¬æ³æ³²æ³´æ³¹æ³¿æ´€æ´‚洃洅洆洈洉洊æ´�æ´�æ´�洑洓洔洕洖洘洜æ´�æ´Ÿæ´ æ´¡æ´¢æ´£æ´¤æ´¦æ´¨æ´©æ´¬æ´æ´¯æ´°æ´´æ´¶æ´·æ´¸æ´ºæ´¿æµ€æµ‚浄浉浌æµ�浕浖浗浘浛æµ�æµŸæµ¡æµ¢æµ¤æµ¥æµ§æµ¨æµ«æµ¬æµæµ°æµ±æµ²æµ³æµµæµ¶æµ¹æµºæµ»æµ½æµ¾æµ¿æ¶€æ¶�涃涄涆涇涊涋æ¶�æ¶�æ¶�æ¶’æ¶–æ¶—æ¶˜æ¶™æ¶šæ¶œæ¶¢æ¶¥æ¶¬æ¶æ¶°æ¶±æ¶³æ¶´æ¶¶æ¶·æ¶¹æ¶ºæ¶»æ¶¼æ¶½æ¶¾æ·�淂淃淈淉淊�\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������æ·�æ·Žæ·�æ·�æ·’æ·“æ·”æ·•æ·—æ·šæ·›æ·œæ·Ÿæ·¢æ·£æ·¥æ·§æ·¨æ·©æ·ªæ·æ·¯æ·°æ·²æ·´æ·µæ·¶æ·¸æ·ºæ·½æ·¾æ·¿æ¸€æ¸�渂渃渄渆渇済渉渋æ¸�渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀æ¹�湂湅湆湇湈湉湊湋湌æ¹�æ¹�湑湒湕湗湙湚湜æ¹�æ¹žæ¹ æ¹¡æ¹¢æ¹£æ¹¤æ¹¥æ¹¦æ¹§æ¹¨æ¹©æ¹ªæ¹¬æ¹æ¹¯æ¹°æ¹±æ¹²æ¹³æ¹´æ¹µæ¹¶æ¹·æ¹¸æ¹¹æ¹ºæ¹»æ¹¼æ¹½æº€æº�溂溄溇溈溊溋溌æº�溎溑溒溓溔溕準溗溙溚溛æº�æºžæº æº¡æº£æº¤æº¦æº¨æº©æº«æº¬æºæº®æº°æº³æºµæº¸æº¹æº¼æº¾æº¿æ»€æ»ƒæ»„滅滆滈滉滊滌æ»�滎æ»�滒滖滘滙滛滜æ»�æ»£æ»§æ»ªæ»«æ»¬æ»æ»®æ»¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀æ¼�漃漄漅漇漈漊漋漌æ¼�漎æ¼�漑漒漖漗漘漙漚漛漜æ¼�漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀æ½�潂�潃潄潅潈潉潊潌潎æ½�æ½�潑潒潓潔潕潖潗潙潚潛æ½�æ½Ÿæ½ æ½¡æ½£æ½¤æ½¥æ½§æ½¨æ½©æ½ªæ½«æ½¬æ½¯æ½°æ½±æ½³æ½µæ½¶æ½·æ½¹æ½»æ½½æ½¾æ½¿æ¾€æ¾�澂澃澅澆澇澊澋æ¾�æ¾�澑澒澓澔澕澖澗澘澙澚澛æ¾�æ¾žæ¾Ÿæ¾ æ¾¢æ¾£æ¾¤æ¾¥æ¾¦æ¾¨æ¾©æ¾ªæ¾«æ¾¬æ¾æ¾®æ¾¯æ¾°æ¾±æ¾²æ¾´æ¾µæ¾·æ¾¸æ¾ºæ¾»æ¾¼æ¾½æ¾¾æ¾¿æ¿�濃濄濅濆濇濈濊濋濌æ¿�濎æ¿�æ¿�濓濔濕濖濗濘濙濚濛濜æ¿�濟濢濣濤濥�\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¿¦æ¿§æ¿¨æ¿©æ¿ªæ¿«æ¿¬æ¿æ¿°æ¿±æ¿²æ¿³æ¿´æ¿µæ¿¶æ¿·æ¿¸æ¿¹æ¿ºæ¿»æ¿¼æ¿½æ¿¾æ¿¿ç€€ç€�瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌ç€�瀎ç€�ç€�瀒瀓瀔瀕瀖瀗瀘瀙瀜ç€�ç€žç€Ÿç€ ç€¡ç€¢ç€¤ç€¥ç€¦ç€§ç€¨ç€©ç€ªï¿½ç€«ç€¬ç€ç€®ç€¯ç€°ç€±ç€²ç€³ç€´ç€¶ç€·ç€¸ç€ºç€»ç€¼ç€½ç€¾ç€¿ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆç�‰ç�Šç�‹ç��ç�Žç��ç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�šç�›ç�œç��ç�Ÿç� ç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�®ç�±ç�²ç�³ç�´ç�·ç�¹ç�ºç�»ç�½ç‚�炂炃炄炆炇炈炋炌ç‚�ç‚�ç‚�ç‚‘ç‚“ç‚—ç‚˜ç‚šç‚›ç‚žç‚Ÿç‚ ç‚¡ç‚¢ç‚£ç‚¤ç‚¥ç‚¦ç‚§ç‚¨ç‚©ç‚ªç‚°ç‚²ç‚´ç‚µç‚¶ç‚ºç‚¾ç‚¿çƒ„çƒ…çƒ†çƒ‡çƒ‰çƒ‹çƒŒçƒ�烎çƒ�çƒ�烑烒烓烔烕烖烗烚�\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������烜çƒ�çƒžçƒ çƒ¡çƒ¢çƒ£çƒ¥çƒªçƒ®çƒ°çƒ±çƒ²çƒ³çƒ´çƒµçƒ¶çƒ¸çƒºçƒ»çƒ¼çƒ¾çƒ¿ç„€ç„�焂焃焄焅焆焇焈焋焌ç„�焎ç„�焑焒焔焗焛焜ç„�ç„žç„Ÿç„ ç„¡ç„¢ç„£ç„¤ç„¥ç„§ç„¨ç„©ç„ªç„«ç„¬ç„焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀ç…�煂煃煄煆煇煈煉煋ç…�ç…�ç…�煑煒煓煔煕煖煗煘煙煚煛ç…�ç…Ÿç… ç…¡ç…¢ç…£ç…¥ç…©ç…ªç…«ç…¬ç…煯煰煱煴煵煶煷煹煻煼煾煿熀ç†�熂熃熅熆熇熈熉熋熌ç†�熎ç†�熑熒熓熕熖熗熚熛熜ç†�熞熡熢熣熤熥熦熧熩熪熫ç†ç†®ç†¯ç†°ç†±ç†²ç†´ç†¶ç†·ç†¸ç†ºç†»ç†¼ç†½ç†¾ç†¿ç‡€ç‡�燂燄燅燆燇燈燉燊燋燌ç‡�ç‡�ç‡�燑燒燓�\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜ç‡�燞營燡燢燣燤燦燨燩燪燫燬ç‡ç‡¯ç‡°ç‡±ç‡²ç‡³ç‡´ç‡µç‡¶ç‡·ç‡¸ç‡ºç‡»ç‡¼ç‡½ç‡¾ç‡¿çˆ€çˆ�爂爃爄爅爇爈爉爊爋爌çˆ�爎çˆ�çˆ�çˆ‘çˆ’çˆ“çˆ”çˆ•çˆ–çˆ—çˆ˜çˆ™çˆšï¿½çˆ›çˆœçˆžçˆŸçˆ çˆ¡çˆ¢çˆ£çˆ¤çˆ¥çˆ¦çˆ§çˆ©çˆ«çˆçˆ®çˆ¯çˆ²çˆ³çˆ´çˆºçˆ¼çˆ¾ç‰€ç‰�牂牃牄牅牆牉牊牋牎ç‰�ç‰�ç‰‘ç‰“ç‰”ç‰•ç‰—ç‰˜ç‰šç‰œç‰žç‰ ç‰£ç‰¤ç‰¥ç‰¨ç‰ªç‰«ç‰¬ç‰ç‰°ç‰±ç‰³ç‰´ç‰¶ç‰·ç‰¸ç‰»ç‰¼ç‰½çŠ‚çŠƒçŠ…çŠ†çŠ‡çŠˆçŠ‰çŠŒçŠŽçŠ�犑犓犔犕犖犗犘犙犚犛犜çŠ�çŠžçŠ çŠ¡çŠ¢çŠ£çŠ¤çŠ¥çŠ¦çŠ§çŠ¨çŠ©çŠªçŠ«çŠ®çŠ±çŠ²çŠ³çŠµçŠºçŠ»çŠ¼çŠ½çŠ¾çŠ¿ç‹€ç‹…ç‹†ç‹‡ç‹‰ç‹Šç‹‹ç‹Œç‹�狑狓狔狕狖狘狚狛�\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"����������������������������������������������������������������î“�î“�î“�î“�î“žî“Ÿî“ î“¡î“¢î“£î“¤î“¥î“¦î“§î“¨î“©î“ªî“«î“¬î“î”��î”�î”�î”�î”�î”žî”Ÿî” î”¡î”¢î”£î”¤î”¥ã€€ã€�。·ˉˇ¨〃々—~‖…‘’“â€�〔〕〈〉《》「ã€�『ã€�〖〗ã€�】±×÷∶∧∨∑âˆ�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽âˆ�â‰ â‰®â‰¯â‰¤â‰¥âˆžâˆµâˆ´â™‚â™€Â°â€²â€³â„ƒï¼„Â¤ï¿ ï¿¡â€°Â§â„–â˜†â˜…â—‹â—�◎◇◆□■△▲※→â†�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"����������������������������������������������������������������î”î•�î•�î•�î•�î•�î•žî•Ÿî• î•¡î•¢î•£î•¤ï¿½î•¥î•¦î•§î•¨î•©î•ªî•«î•¬î•î–�ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹî�¦î�§î�¨î�©î�ªî�«â’ˆâ’‰â’Šâ’‹â’Œâ’�â’Žâ’�â’�⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩€î�㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩î�®î�¯â… ⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫî�°î�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������î–�î–Žî–�î–�î–�î–žî–Ÿî– î–¡î–¢î–£î–¤î–¥î–¦î–§î–¨î–©î–ªî–«î–¬î–î—��î—�î—Žî—�î—�î—�î—žî—Ÿî— î—¡î—¢î—£î—¤î—¥ï¼�"#¥%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�ï¼žï¼Ÿï¼ ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§ï¼¨ï¼©ï¼ªï¼«ï¼¬ï¼ï¼®ï¼¯ï¼°ï¼±ï¼²ï¼³ï¼´ï¼µï¼¶ï¼·ï¼¸ï¼¹ï¼ºï¼»ï¼¼ï¼½ï¼¾ï¼¿ï½€ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"����������������������������������������������������������������î—î˜�î˜�î˜�î˜�î˜�î˜žî˜Ÿî˜ î˜¡î˜¢î˜£î˜¤ï¿½î˜¥î˜¦î˜§î˜¨î˜©î˜ªî˜«î˜¬î˜î˜®î˜¯î˜°î˜±î˜²î˜³î˜´î˜µî˜¶î˜·î˜¸î˜¹î˜ºî˜»î˜¼î˜½î˜¾î˜¿î™€î™�ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ã‚‘ã‚’ã‚“î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������������������������������������î™�î™�î™�î™�î™žî™Ÿî™ î™¡î™¢î™£î™¤î™¥î™¦î™§î™¨î™©î™ªî™«î™¬î™î™®î™¯î™°î™±î™²î™³î™´î™µî™¶î™·î™¸î™¹î™ºî™»î™¼î™½î™¾î™¿îš€îš��îš�îš�îš�îš�îšžîšŸîš îš¡îš¢îš£îš¤îš¥ã‚¡ã‚¢ã‚£ã‚¤ã‚¥ã‚¦ã‚§ã‚¨ã‚©ã‚ªã‚«ã‚¬ã‚ギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレãƒãƒ®ãƒ¯ãƒ°ãƒ±ãƒ²ãƒ³ãƒ´ãƒµãƒ¶î�½î�¾î�¿îž€îž��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������îšîš®îš¯îš°îš±îš²îš³îš´îšµîš¶îš·îš¸îš¹îšºîš»îš¼îš½îš¾îš¿î›€î›�î›�î›�î›�î›�î›žî›Ÿî› î›¡î›¢î›£î›¤ï¿½î›¥î›¦î›§î›¨î›©î›ªî›«î›¬î›î›®î›¯î›°î›±î›²î›³î›´î›µî›¶î›·î›¸î›¹î›ºî›»î›¼î›½î›¾î›¿îœ€îœ�ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχψωîž�îž�îž�︵︶︹︺︿﹀︽︾ï¹�﹂﹃﹄︻︼︷︸︱︳︴îž��\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"����������������������������������������������������������������îœ�îœ�îœ�îœ�îœžîœŸîœ îœ¡îœ¢îœ£îœ¤îœ¥îœ¦îœ§îœ¨îœ©îœªîœ«îœ¬îœîœ®îœ¯îœ°îœ±îœ²îœ³îœ´îœµîœ¶îœ·îœ¸îœ¹îœºîœ»îœ¼îœ½îœ¾îœ¿î�€î��î�‚î�ƒî�„�î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬÐÐ®Ð¯îž îž¡îž¢îž£îž¤îž¥îž¦îž§îž¨îž©îžªîž«îž¬îžîž®Ð°Ð±Ð²Ð³Ð´ÐµÑ‘жзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ��\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿â•�║╒╓╔╕╖╗╘╙╚╛╜â•�╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬â•╮╯╰╱╲╳â–�▂▃▄▅▆▇�█▉▊▋▌â–�â–Žâ–�▓▔▕▼▽◢◣◤◥☉⊕〒ã€�〞îŸ�Ä�áǎà ēéěèīÃÇ�ìÅ�óǒòūúǔùǖǘǚǜüêɑńňǹɡㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩîŸ�îŸ�îŸ�îŸ�îŸžîŸŸîŸ îŸ¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎ãŽ�㎜ãŽ�㎞㎡ã�„ã�Žã�‘ã�’ã�•︰¬¦℡㈱â€�ー゛゜ヽヾ〆ã‚�ゞ﹉﹊﹋﹌ï¹�﹎ï¹�ï¹�﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜ï¹�ï¹žï¹Ÿï¹ ï¹¡ï¿½ï¹¢ï¹£ï¹¤ï¹¥ï¹¦ï¹¨ï¹©ï¹ªï¹«ã€¾â¿°â¿±â¿²â¿³â¿´â¿µâ¿¶â¿·â¿¸â¿¹â¿ºâ¿»ã€‡îŸ´îŸµîŸ¶îŸ·îŸ¸îŸ¹îŸºîŸ»îŸ¼îŸ½îŸ¾îŸ¿î €â”€â”�│┃┄┅┆┇┈┉┊┋┌â”�┎â”�â”�┑┒┓└┕┖┗┘┙┚┛├â”�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬â”┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀â•�╂╃╄╅╆╇╈╉╊╋î �î ‚î ƒî „î …î †î ‡î ˆî ‰î Šî ‹î Œî �î Žî ��\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������狜ç‹�狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌çŒ�çŒ�çŒ�çŒ‘çŒ’çŒ”çŒ˜çŒ™çŒšçŒŸçŒ çŒ£çŒ¤çŒ¦çŒ§çŒ¨çŒçŒ¯çŒ°çŒ²çŒ³çŒµçŒ¶çŒºçŒ»çŒ¼çŒ½ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆï¿½ç�‰ç�Šç�‹ç�Œç�Žç��ç�‘ç�“ç�”ç�•ç�–ç�˜ç�™ç�šç�›ç�œç��ç�žç�Ÿç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�«ç�®ç�°ç�±î€€î€�î€�î€�î€�î€�î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾î€¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî���\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¿çŽ€çŽ�玂玃玅玆玈玊玌çŽ�çŽ�çŽ�玒玓玔玕玗玘玙玚玜çŽ�çŽžçŽ çŽ¡çŽ£çŽ¤çŽ¥çŽ¦çŽ§çŽ¨çŽªçŽ¬çŽçŽ±çŽ´çŽµçŽ¶çŽ¸çŽ¹çŽ¼çŽ½çŽ¾çŽ¿ç��ç�ƒç�„ç�…ç�†ç�‡ï¿½ç�‹ç�Œç�Žç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�šç�›ç�œç��ç�Ÿç�¡ç�¢ç�£ç�¤ç�¦ç�¨ç�ªç�«ç�¬ç�®ç�¯ç�°ç�±ç�³ç�´ç�µç�¶ç�·î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�î‚žî‚Ÿî‚ î‚¡î‚¢î‚£î‚¤î‚¥î‚¦î‚§î‚¨î‚©î‚ªî‚«î‚¬î‚�\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"����������������������������������������������������������������ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¾ç�¿ç�€ç��ç�‚ç�„ç�‡ç�ˆç�‹ç�Œç��ç�Žç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œç��ç�žç�Ÿç� ç�¡ç�£ç�¤ç�§ç�©ç�«ç�ç�¯ç�±ç�²ç�·ç�¸ç�¹ç�ºç�»ç�½ç�¾ç�¿ç‘€ç‘‚瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌ç‘��瑎ç‘�ç‘�瑑瑒瑓瑔瑖瑘ç‘�ç‘ ç‘¡ç‘¢ç‘£ç‘¤ç‘¥ç‘¦ç‘§ç‘¨ç‘©ç‘ªç‘«ç‘¬ç‘®ç‘¯ç‘±ç‘²ç‘³ç‘´ç‘µç‘¸ç‘¹ç‘ºî‚¼î‚½î‚¾î‚¿îƒ€îƒ�îƒ�îƒ�îƒ�îƒ�îƒžîƒŸîƒ îƒ¡îƒ¢îƒ£îƒ¤îƒ¥îƒ¦îƒ§îƒ¨îƒ©îƒªîƒ«îƒ¬îƒîƒ®îƒ¯îƒ°îƒ±îƒ²îƒ³îƒ´îƒµîƒ¶îƒ·îƒ¸îƒ¹îƒºîƒ»îƒ¼îƒ½îƒ¾îƒ¿î„€î„�î„�î„�î„��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌ç’�ç’�璑璒璓璔璕璖璗璘璙璚璛ç’�ç’Ÿç’ ç’¡ç’¢ç’£ç’¤ç’¥ç’¦ç’ªç’«ç’¬ç’璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀ç“�瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌ç“�瓎ç“�ç“�瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛ç“�瓟瓡瓥瓧瓨瓩瓪瓫瓬ç“瓰瓱瓲î„�î„žî„Ÿî„ î„¡î„¢î„£î„¤î„¥î„¦î„§î„¨î„©î„ªî„«î„¬î„î…�î…�î…Žî…�î…�î…�î…žî…Ÿî… î…¡î…¢î…£î…¤î…¥î…¦î…§î…¨î…©î…ªî…«î…¬î…�\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀ç”�甂甃甅甆甇甈甉甊甋甌甎ç”�甒甔甕甖甗甛ç”�ç”žç” ç”¡ç”¢ç”£ç”¤ç”¦ç”§ç”ªç”®ç”´ç”¶ç”¹ç”¼ç”½ç”¿ç•�畂畃畄畆畇畉畊ç•�ç•�畑畒畓畕畖畗畘�ç•�ç•žç•Ÿç• ç•¡ç•¢ç•£ç•¤ç•§ç•¨ç•©ç•«ç•¬ç•畮畯異畱畳畵當畷畺畻畼畽畾疀ç–�疂疄疅疇î†�î†�î†�î†�î†�î†žî†Ÿî† î†¡î†¢î†£î†¤î†¥î†¦î†§î†¨î†©î†ªî†«î†¬î†î†®î†¯î†°î†±î†²î†³î†´î†µî†¶î†·î†¸î†¹î†ºî†»î†¼î†½î†¾î†¿î‡€î‡�î‡�î‡�î‡��\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������疈疉疊疌ç–�ç–Žç–�疓疕疘疛疜疞疢疦疧疨疩疪ç–疶疷疺疻疿痀ç—�痆痋痌痎ç—�ç—�痑痓痗痙痚痜ç—�ç—Ÿç— ç—¡ç—¥ç—©ç—¬ç—痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋ç˜�瘎ç˜�瘑瘒瘓瘔瘖瘚瘜ç˜�瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽ç™�療癄î‡�î‡žî‡Ÿî‡ î‡¡î‡¢î‡£î‡¤î‡¥î‡¦î‡§î‡¨î‡©î‡ªî‡«î‡¬î‡î‡®î‡¯î‡°î‡±î‡²î‡³î‡´î‡µî‡¶î‡·î‡¸î‡¹î‡ºî‡»î‡¼î‡½î‡¾î‡¿îˆ€îˆ�îˆ�îˆ�îˆ�îˆ�îˆžîˆŸîˆ îˆ¡îˆ¢îˆ£îˆ¤îˆ¥îˆ¦îˆ§îˆ¨îˆ©îˆªîˆ«îˆ¬îˆîˆ®îˆ¯îˆ°îˆ±îˆ²îˆ³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎ç™�ç™�癑癒癓癕癗癘癙癚癛ç™�ç™Ÿç™ ç™¡ç™¢ç™¤ç™¥ç™¦ç™§ç™¨ç™©ç™ªç™¬ç™ç™®ç™°ç™±ç™²ç™³ç™´ç™µç™¶ç™·ç™¹ç™ºç™¼ç™¿çš€çš�皃皅皉皊皌çš�çš�çš�皒皔皕皗皘皚皛�皜çš�çšžçšŸçš çš¡çš¢çš£çš¥çš¦çš§çš¨çš©çšªçš«çš¬çšçš¯çš°çš³çšµçš¶çš·çš¸çš¹çšºçš»çš¼çš½çš¾ç›€ç›�盃啊阿埃挨哎唉哀皑癌蔼矮艾ç¢�爱隘éž�æ°¨å®‰ä¿ºæŒ‰æš—å²¸èƒºæ¡ˆè‚®æ˜‚ç›Žå‡¹æ•–ç†¬ç¿±è¢„å‚²å¥¥æ‡Šæ¾³èŠæ�Œæ‰’å�å�§ç¬†å…«ç–¤å·´æ‹”è·‹é�¶æŠŠè€™å��霸罢爸白æŸ�百摆佰败拜稗斑ç�æ�¬æ‰³èˆ¬é¢�æ�¿ç‰ˆæ‰®æ‹Œä¼´ç“£å�ŠåŠžç»Šé‚¦å¸®æ¢†æ¦œè†€ç»‘æ£’ç£…èšŒé•‘å‚�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜ç›�ç›žç› ç›¡ç›¢ç›£ç›¤ç›¦ç›§ç›¨ç›©ç›ªç›«ç›¬ç›ç›°ç›³ç›µç›¶ç›·ç›ºç›»ç›½ç›¿çœ€çœ‚眃眅眆眊県眎çœ�çœ�眑眒眓眔眕眖眗眘眛眜çœ�眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿ç�‚ç�„ç�…ç�†ç�ˆç�‰ç�Šç�‹ç�Œç��ç�Žç��ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œè–„雹ä¿�å ¡é¥±å®�抱报暴豹é²�爆æ�¯ç¢‘悲å�‘北辈背è´�é’¡å€�ç‹ˆå¤‡æƒ«ç„™è¢«å¥”è‹¯æœ¬ç¬¨å´©ç»·ç”æ³µè¹¦è¿¸é€¼é¼»æ¯”鄙笔彼碧蓖蔽毕毙毖å¸�åº‡ç—¹é—æ•�弊必辟å£�臂é�¿é™›éžè¾¹ç¼–è´¬æ‰�便å�˜å�žè¾¨è¾©è¾«é��æ ‡å½ªè†˜è¡¨é³–æ†‹åˆ«ç˜ªå½¬æ–Œæ¿’æ»¨å®¾æ‘ˆå…µå†°æŸ„ä¸™ç§‰é¥¼ç‚³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������ç��ç�žç�Ÿç� ç�¤ç�§ç�©ç�ªç�ç�®ç�¯ç�°ç�±ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�ºç�»ç�¼çž�瞂瞃瞆瞇瞈瞉瞊瞋çž�çž�瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜çž�瞞瞡瞣瞤瞦瞨瞫çžçž®çž¯çž±çž²çž´çž¶çž·çž¸çž¹çžºï¿½çž¼çž¾çŸ€çŸ�矂矃矄矅矆矇矈矉矊矋矌矎çŸ�çŸ�矑矒矓矔矕矖矘矙矚çŸ�çŸžçŸŸçŸ çŸ¡çŸ¤ç—…å¹¶çŽ»è� æ’æ‹¨é’µæ³¢å�šå‹ƒæ��铂箔伯帛舶脖膊渤泊驳æ�•å�œå“ºè¡¥åŸ ä¸�布æ¥ç°¿éƒ¨æ€–擦猜è£�æ��æ‰�è´¢ç�¬è¸©é‡‡å½©è�œè”¡é¤�å�‚èš•æ®‹æƒæƒ¨ç�¿è‹�舱仓沧è—�æ“�糙槽曹è�‰åŽ•ç–ä¾§å†Œæµ‹å±‚è¹æ�’å�‰èŒ¬èŒ¶æŸ¥ç¢´æ�½å¯Ÿå²”差诧拆柴豺æ�€æŽºè�‰é¦‹è°—ç¼ é“²äº§é˜�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çŸ¦çŸ¨çŸªçŸ¯çŸ°çŸ±çŸ²çŸ´çŸµçŸ·çŸ¹çŸºçŸ»çŸ¼ç ƒç „ç …ç †ç ‡ç ˆç Šç ‹ç Žç �ç �ç “ç •ç ™ç ›ç žç ç ¡ç ¢ç ¤ç ¨ç ªç «ç ®ç ¯ç ±ç ²ç ³ç µç ¶ç ½ç ¿ç¡�硂硃硄硆硈硉硊硋ç¡�ç¡�ç¡‘ç¡“ç¡”ç¡˜ç¡™ç¡šï¿½ç¡›ç¡œç¡žç¡Ÿç¡ ç¡¡ç¡¢ç¡£ç¡¤ç¡¥ç¡¦ç¡§ç¡¨ç¡©ç¡¯ç¡°ç¡±ç¡²ç¡³ç¡´ç¡µç¡¶ç¡¸ç¡¹ç¡ºç¡»ç¡½ç¡¾ç¡¿ç¢€ç¢�碂碃场å°�常长å�¿è‚ 厂敞畅唱倡超抄钞æœ�嘲潮巢å�µç‚’车扯撤掣彻澈郴臣辰尘晨忱沉陈è¶�衬撑称城橙æˆ�呈乘程惩澄诚承逞骋秤å�ƒç—´æŒ�åŒ™æ± è¿Ÿå¼›é©°è€»é½¿ä¾ˆå°ºèµ¤ç¿…æ–¥ç‚½å……å†²è™«å´‡å® æŠ½é…¬ç•´è¸Œç¨ æ„�ç¹ä»‡ç»¸çž…丑è‡åˆ�出橱厨躇锄é›�æ»�除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋ç¢�ç¢�碒碔碕碖碙ç¢�ç¢žç¢ ç¢¢ç¢¤ç¢¦ç¢¨ç¢©ç¢ªç¢«ç¢¬ç¢ç¢®ç¢¯ç¢µç¢¶ç¢·ç¢¸ç¢ºç¢»ç¢¼ç¢½ç¢¿ç£€ç£‚磃磄磆磇磈磌ç£�磎ç£�磑磒磓磖磗磘磚磛磜ç£�ç£žç£Ÿç£ ç£¡ç£¢ç££ï¿½ç£¤ç£¥ç£¦ç£§ç£©ç£ªç£«ç£ç£®ç£¯ç£°ç£±ç£³ç£µç£¶ç£¸ç£¹ç£»ç£¼ç£½ç£¾ç£¿ç¤€ç¤‚礃礄礆礇礈礉礊礋礌础储矗æ��触处æ�£å·�ç©¿æ¤½ä¼ èˆ¹å–˜ä¸²ç–®çª—å¹¢åºŠé—¯åˆ›å�¹ç‚Šæ�¶é”¤åž‚æ˜¥æ¤¿é†‡å”‡æ·³çº¯è ¢æˆ³ç»°ç–µèŒ¨ç£�雌辞慈瓷è¯�æ¤åˆºèµ�次è�ªè‘±å›±åŒ†ä»Žä¸›å‡‘粗醋簇促蹿篡窜摧崔催脆ç˜�ç²¹æ·¬ç¿ æ�‘å˜å¯¸ç£‹æ’®æ�“措挫错æ�è¾¾ç”瘩打大呆æ¹å‚£æˆ´å¸¦æ®†ä»£è´·è¢‹å¾…逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������ç¤�礎ç¤�ç¤�礑礒礔礕礖礗礘礙礚礛礜ç¤�ç¤Ÿç¤ ç¤¡ç¤¢ç¤£ç¤¥ç¤¦ç¤§ç¤¨ç¤©ç¤ªç¤«ç¤¬ç¤ç¤®ç¤¯ç¤°ç¤±ç¤²ç¤³ç¤µç¤¶ç¤·ç¤¸ç¤¹ç¤½ç¤¿ç¥‚祃祄祅祇祊祋祌ç¥�祎ç¥�ç¥�祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌ç¦�禎ç¦�ç¦‘ç¦’æ€ è€½æ‹…ä¸¹å�•郸掸胆旦氮但惮淡诞弹蛋当挡党è�¡æ¡£åˆ€æ�£è¹ˆå€’岛祷导到稻悼é�“盗德得的蹬ç�¯ç™»ç‰çžªå‡³é‚“å ¤ä½Žæ»´è¿ªæ•Œç¬›ç‹„æ¶¤ç¿Ÿå«¡æŠµåº•åœ°è’‚ç¬¬å¸�å¼Ÿé€’ç¼”é¢ æŽ‚æ»‡ç¢˜ç‚¹å…¸é�›åž«ç”µä½ƒç”¸åº—æƒ¦å¥ æ·€æ®¿ç¢‰å�¼é›•凋åˆ�掉å�Šé’“调跌爹碟è�¶è¿è°�å� �\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜ç¦�ç¦žç¦Ÿç¦ ç¦¡ç¦¢ç¦£ç¦¤ç¦¥ç¦¦ç¦¨ç¦©ç¦ªç¦«ç¦¬ç¦ç¦®ç¦¯ç¦°ç¦±ç¦²ç¦´ç¦µç¦¶ç¦·ç¦¸ç¦¼ç¦¿ç§‚秄秅秇秈秊秌秎ç§�ç§�秓秔秖秗秙秚秛秜ç§�ç§žç§ ç§¡ç§¢ç§¥ç§¨ç§ªï¿½ç§¬ç§®ç§±ç§²ç§³ç§´ç§µç§¶ç§·ç§¹ç§ºç§¼ç§¾ç§¿ç¨�稄稅稇稈稉稊稌ç¨�ç¨�稑稒稓稕稖稘稙稛稜ä¸�盯å�®é’‰é¡¶é¼Žé”å®šè®¢ä¸¢ä¸œå†¬è‘£æ‡‚åŠ¨æ ‹ä¾—æ�«å†»æ´žå…œæŠ–斗陡豆逗痘都ç�£æ¯’çŠŠç‹¬è¯»å µç�¹èµŒæ�œé•€è‚šåº¦æ¸¡å¦’端çŸé”»æ®µæ–ç¼Žå †å…‘é˜Ÿå¯¹å¢©å�¨è¹²æ•¦é¡¿å›¤é’�盾é��掇哆多夺垛躲朵跺舵å‰�æƒ°å •è›¾å³¨é¹…ä¿„é¢�讹娥æ�¶åŽ„æ‰¼é��鄂饿æ�©è€Œå„¿è€³å°”饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������ç¨�稟稡稢稤稥稦稧稨稩稪稫稬ç¨ç¨®ç¨¯ç¨°ç¨±ç¨²ç¨´ç¨µç¨¶ç¨¸ç¨ºç¨¾ç©€ç©�穂穃穄穅穇穈穉穊穋穌ç©�穎ç©�ç©�穒穓穔穕穖穘穙穚穛穜ç©�ç©žç©Ÿç© ç©¡ç©¢ç©£ç©¤ç©¥ç©¦ç©§ç©¨ï¿½ç©©ç©ªç©«ç©¬ç©ç©®ç©¯ç©±ç©²ç©³ç©µç©»ç©¼ç©½ç©¾çª‚窅窇窉窊窋窌窎çª�çª�窓窔窙窚窛窞窡窢贰å�‘罚ç�ä¼�ä¹�阀法ç��藩帆番翻樊矾钒ç¹�凡烦å��è¿”èŒƒè´©çŠ¯é¥æ³›å�ŠèŠ³æ–¹è‚ªæˆ¿é˜²å¦¨ä»¿è®¿çººæ”¾è�²é�žå•¡é£žè‚¥åŒªè¯½å� 肺废沸费芬酚å�©æ°›åˆ†çº·å�Ÿç„šæ±¾ç²‰å¥‹ä»½å¿¿æ„¤ç²ªä¸°å°�枫蜂峰锋风疯烽逢冯ç¼�讽奉凤佛å�¦å¤«æ•·è‚¤åµæ‰¶æ‹‚è¾�幅氟符ä¼�俘æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀ç«�竂竃竄竅竆竇竈竉竊竌ç«�竎ç«�ç«�竑竒竓竔竕竗竘竚竛竜ç«�竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀ç¬�笂笅笇笉笌ç¬�笎ç¬�笒笓笖笗笘笚笜ç¬�ç¬Ÿç¬¡ç¬¢ç¬£ç¬§ç¬©ç¬æµ®æ¶ªç¦�袱弗甫抚辅俯釜斧脯腑府è…�赴副覆赋å¤�傅付阜父腹负富讣附妇缚å’�噶嘎该改概钙盖溉干甘æ�†æŸ‘ç«¿è‚�赶感秆敢赣冈刚钢缸肛纲岗港æ� 篙皋高è†�羔糕æ�žé•�ç¨¿å‘Šå“¥æŒæ��戈鸽胳疙割é�©è‘›æ ¼è›¤é˜�隔铬个å�„ç»™æ ¹è·Ÿè€•æ›´åºšç¾¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿ç€ç�ç‚çƒç„ç†çˆçŠç�çŽç“ç•ç—ç™çœçžçŸç¡ç£ç¤ç¥ç¦ç§ç¨ç©çªç«ç¬çç¯ç°ç³ç´ç¶ç¸çºç¼ç½ç¿ç®�箂箃箄箆箇箈箉箊箋箌箎ç®�ï¿½ç®‘ç®’ç®“ç®–ç®˜ç®™ç®šç®›ç®žç®Ÿç® ç®£ç®¤ç®¥ç®®ç®¯ç®°ç®²ç®³ç®µç®¶ç®·ç®¹ç®ºç®»ç®¼ç®½ç®¾ç®¿ç¯€ç¯‚ç¯ƒç¯„åŸ‚è€¿æ¢—å·¥æ”»åŠŸæ�龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构è´å¤Ÿè¾œè�‡å’•ç®�ä¼°æ²½å¤å§‘鼓å�¤è›Šéª¨è°·è‚¡æ•…顾固雇刮瓜å‰�寡挂褂乖æ‹�æ€ªæ£ºå…³å®˜å† è§‚ç®¡é¦†ç½�惯ç�Œè´¯å…‰å¹¿é€›ç‘°è§„åœç¡…归龟闺轨鬼诡癸桂柜跪贵刽辊滚æ£�é”…éƒå›½æžœè£¹è¿‡å“ˆï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������篅篈築篊篋ç¯�篎ç¯�ç¯�ç¯’ç¯”ç¯•ç¯–ç¯—ç¯˜ç¯›ç¯œç¯žç¯Ÿç¯ ç¯¢ç¯£ç¯¤ç¯§ç¯¨ç¯©ç¯«ç¯¬ç¯ç¯¯ç¯°ç¯²ç¯³ç¯´ç¯µç¯¶ç¯¸ç¯¹ç¯ºç¯»ç¯½ç¯¿ç°€ç°�簂簃簄簅簆簈簉簊ç°�ç°Žç°�簑簒簓簔簕簗簘簙�簚簛簜ç°�ç°žç° ç°¡ç°¢ç°£ç°¤ç°¥ç°¨ç°©ç°«ç°¬ç°ç°®ç°¯ç°°ç°±ç°²ç°³ç°´ç°µç°¶ç°·ç°¹ç°ºç°»ç°¼ç°½ç°¾ç±‚éª¸å©æµ·æ°¦äº¥å®³éª‡é…£æ†¨é‚¯éŸ©å�«æ¶µå¯’函喊罕翰撼æ��旱憾æ‚�焊汗汉夯æ�航壕嚎豪毫éƒ�好耗å�·æµ©å‘µå–�è�·è��æ ¸ç¦¾å’Œä½•å�ˆç›’貉阂河涸赫è¤�é¹¤è´ºå˜¿é»‘ç—•å¾ˆç‹ æ�¨å“¼äº¨æ¨ªè¡¡æ�’轰哄烘虹鸿洪å®�弘红喉侯猴å�¼åŽšå€™å�Žå‘¼ä¹Žå¿½ç‘šå£¶è‘«èƒ¡è�´ç‹�糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎ç±�ç±�籑籒籓籔籕籖籗籘籙籚籛籜ç±�ç±žç±Ÿç± ç±¡ç±¢ç±£ç±¤ç±¥ç±¦ç±§ç±¨ç±©ç±ªç±«ç±¬ç±ç±®ç±¯ç±°ç±±ç±²ç±µç±¶ç±·ç±¸ç±¹ç±ºç±¾ç±¿ç²€ç²�粂粃粄粅粆粇�粈粊粋粌ç²�粎ç²�ç²�ç²“ç²”ç²–ç²™ç²šç²›ç² ç²¡ç²£ç²¦ç²§ç²¨ç²©ç²«ç²¬ç²ç²¯ç²°ç²´ç²µç²¶ç²·ç²¸ç²ºç²»å¼§è™Žå”¬æŠ¤äº’沪户花哗å�ŽçŒ¾æ»‘画划化è¯�æ§�徊怀淮å��欢环桓还缓æ�¢æ‚£å”¤ç—ªè±¢ç„•涣宦幻è�’慌黄磺è�—簧皇凰惶煌晃幌æ��è°Žç�°æŒ¥è¾‰å¾½æ�¢è›”回æ¯�悔慧å�‰æƒ 晦贿秽会烩汇讳诲绘è�¤æ˜�å©šé‚æµ‘æ··è±�活伙ç�«èŽ·æˆ–æƒ‘éœ�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎ç³�ç³�糑糒糓糔糘糚糛ç³�糞糡糢糣糤糥糦糧糩糪糫糬ç³ç³®ç³°ç³±ç³²ç³³ç³´ç³µç³¶ç³·ç³¹ç³ºç³¼ç³½ç³¾ç³¿ç´€ç´�紂紃約紅紆紇紈紉紋紌ç´�ç´Žç´�ç´��紑紒紓純紕紖紗紘紙級紛紜ç´�紞紟紡紣紤紥紦紨紩紪紬ç´ç´®ç´°ç´±ç´²ç´³ç´´ç´µç´¶è‚Œé¥¥è¿¹æ¿€è®¥é¸¡å§¬ç»©ç¼‰å�‰æž�棘辑ç±�集å�Šæ€¥ç–¾æ±²å�³å«‰çº§æŒ¤å‡ 脊己蓟技冀å£ä¼Žç¥å‰‚æ‚¸æµŽå¯„å¯‚è®¡è®°æ—¢å¿Œé™…å¦“ç»§çºªå˜‰æž·å¤¹ä½³å®¶åŠ è�šé¢Šè´¾ç”²é’¾å�‡ç¨¼ä»·æž¶é©¾å«�æ¼ç›‘å�šå°–笺间煎兼肩艰奸缄茧检柬碱硷拣æ�¡ç®€ä¿å‰ªå‡�è��槛鉴践贱è§�é”®ç®ä»¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀çµ�終絃組絅絆絇絈絉絊絋経çµ�絎çµ�çµ�絑絒絓絔絕絖絗絘絙絚絛絜çµ�çµžçµŸçµ çµ¡çµ¢çµ£çµ¤çµ¥çµ¦çµ§çµ¨çµ©çµªçµ«çµ¬çµçµ¯çµ°çµ±çµ²çµ³çµ´çµµçµ¶ï¿½çµ¸çµ¹çµºçµ»çµ¼çµ½çµ¾çµ¿ç¶€ç¶�綂綃綄綅綆綇綈綉綊綋綌ç¶�ç¶Žç¶�ç¶�綑綒經綔綕綖綗綘å�¥èˆ°å‰‘饯æ¸�æº…æ¶§å»ºåƒµå§œå°†æµ†æ±Ÿç–†è’‹æ¡¨å¥–è®²åŒ é…±é™�蕉椒ç¤�焦胶交郊浇骄娇嚼æ�…铰矫侥脚狡角饺缴绞剿教酵轿较å�«çª–æ�接皆秸街阶截劫节桔æ�°æ�·ç�«ç«æ´�结解å§�æˆ’è—‰èŠ¥ç•Œå€Ÿä»‹ç–¥è¯«å±Šå·¾ç‹æ–¤é‡‘今津襟紧锦仅谨进é�³æ™‹ç¦�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������継続綛綜ç¶�ç¶žç¶Ÿç¶ ç¶¡ç¶¢ç¶£ç¶¤ç¶¥ç¶§ç¶¨ç¶©ç¶ªç¶«ç¶¬ç¶ç¶¯ç¶°ç¶±ç¶²ç¶³ç¶´ç¶µç¶¶ç¶·ç¶¸ç¶¹ç¶ºç¶»ç¶¼ç¶½ç¶¾ç¶¿ç·€ç·�緂緃緄緅緆緇緈緉緊緋緌ç·�ç·Žç·�ç·�緑緒緓緔緕緖緗緘緙�線緛緜ç·�ç·žç·Ÿç· ç·¡ç·¢ç·£ç·¤ç·¥ç·¦ç·§ç·¨ç·©ç·ªç·«ç·¬ç·ç·®ç·¯ç·°ç·±ç·²ç·³ç·´ç·µç·¶ç··ç·¸ç·¹ç·ºå°½åвè�†å…¢èŒŽç�›æ™¶é²¸äº¬æƒŠç²¾ç²³ç»�äº•è¦æ™¯é¢ˆé�™å¢ƒæ•¬é•œå¾„ç—‰é�–竟竞净炯窘æ�ªç©¶çº 玖éŸä¹…ç�¸ä¹�é…’åŽ©æ•‘æ—§è‡¼èˆ…å’Žå°±ç–šéž æ‹˜ç‹™ç–½å±…é©¹è�Šå±€å’€çŸ©ä¸¾æ²®è�šæ‹’æ�®å·¨å…·è·�踞锯俱å�¥æƒ§ç‚¬å‰§æ��鹃娟倦眷å�·ç»¢æ’…攫抉掘倔爵觉决诀ç»�å�‡è�Œé’§å†›å�›å³»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀ç¸�縂縃縄縅縆縇縈縉縊縋縌ç¸�縎ç¸�ç¸�縑縒縓縔縕縖縗縘縙縚縛縜ç¸�ç¸žç¸Ÿç¸ ç¸¡ç¸¢ç¸£ç¸¤ç¸¥ç¸¦ç¸§ç¸¨ç¸©ç¸ªç¸«ç¸¬ç¸ç¸®ç¸¯ç¸°ç¸±ç¸²ç¸³ç¸´ç¸µç¸¶ç¸·ç¸¸ç¸¹ï¿½ç¸ºç¸¼ç¸½ç¸¾ç¸¿ç¹€ç¹‚繃繄繅繆繈繉繊繋繌ç¹�繎ç¹�ç¹�繑繒繓織繕繖繗繘繙繚繛繜ç¹�俊竣浚郡éª�喀咖å�¡å’¯å¼€æ�©æ¥·å‡¯æ…¨åˆŠå ªå‹˜å�Žç �çœ‹åº·æ…·ç³ æ‰›æŠ—äº¢ç‚•è€ƒæ‹·çƒ¤é� å�·è‹›æŸ¯æ£µç£•颗科壳咳å�¯æ¸´å…‹åˆ»å®¢è¯¾è‚¯å•ƒåž¦æ�³å�‘å�空æ��å”æŽ§æŠ å�£æ‰£å¯‡æž¯å“窟苦酷库裤夸垮挎跨胯å�—ç·ä¾©å¿«å®½æ¬¾åŒ¡ç�狂框矿眶旷况äº�盔岿窥葵奎é�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¹žç¹Ÿç¹ ç¹¡ç¹¢ç¹£ç¹¤ç¹¥ç¹¦ç¹§ç¹¨ç¹©ç¹ªç¹«ç¹¬ç¹ç¹®ç¹¯ç¹°ç¹±ç¹²ç¹³ç¹´ç¹µç¹¶ç¹·ç¹¸ç¹¹ç¹ºç¹»ç¹¼ç¹½ç¹¾ç¹¿çº€çº�纃纄纅纆纇纈纉纊纋續çº�纎çº�çº�纑纒纓纔纕纖纗纘纙纚纜çº�纞�纮纴纻纼绖绤绬绹缊ç¼�缞缷缹缻缼缽缾缿罀ç½�罃罆罇罈罉罊罋罌ç½�罎ç½�罒罓馈愧溃å�¤æ˜†æ�†å›°æ‹¬æ‰©å»“阔垃拉喇蜡腊辣啦莱æ�¥èµ–è“�婪æ �拦篮阑兰澜谰æ�½è§ˆæ‡’缆烂滥ç�…榔狼廊郎朗浪æ�žåŠ³ç‰¢è€�佬姥酪烙æ¶�å‹’ä¹�é›·é•蕾磊累儡垒擂肋类泪棱楞冷厘梨çŠ�黎篱狸离漓ç�†æ�Žé‡Œé²¤ç¤¼èމè�”å��æ —ä¸½åŽ‰åŠ±ç ¾åŽ†åˆ©å‚ˆä¾‹ä¿��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������罖罙罛罜ç½�ç½žç½ ç½£ç½¤ç½¥ç½¦ç½§ç½«ç½¬ç½ç½¯ç½°ç½³ç½µç½¶ç½·ç½¸ç½ºç½»ç½¼ç½½ç½¿ç¾€ç¾‚羃羄羅羆羇羈羉羋ç¾�ç¾�ç¾�ç¾‘ç¾’ç¾“ç¾•ç¾–ç¾—ç¾˜ç¾™ç¾›ç¾œç¾ ç¾¢ç¾£ç¾¥ç¾¦ç¾¨ç¾©ç¾ªç¾«ç¾¬ç¾ç¾®ç¾±ï¿½ç¾³ç¾´ç¾µç¾¶ç¾·ç¾ºç¾»ç¾¾ç¿€ç¿‚翃翄翆翇翈翉翋ç¿�ç¿�ç¿�翑習翓翖翗翙翚翛翜ç¿�翞翢翣痢立粒沥隶力璃哩俩è�”莲连镰廉怜涟帘敛脸链æ�‹ç‚¼ç»ƒç²®å‡‰æ¢�粱良两辆é‡�晾亮谅撩è�Šåƒšç–—燎寥辽潦了撂镣廖料列裂烈劣猎ç�³æž—磷霖临邻鳞淋凛èµ�å��拎玲è�±é›¶é¾„铃伶羚凌ç�µé™µå²é¢†å�¦ä»¤æºœç�‰æ¦´ç¡«é¦�留刘瘤æµ�柳å…é¾™è�‹å’™ç¬¼çª¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬ç¿ç¿¯ç¿²ç¿´ç¿µç¿¶ç¿·ç¿¸ç¿¹ç¿ºç¿½ç¿¾ç¿¿è€‚耇耈耉耊耎è€�耑耓耚耛è€�耞耟耡耣耤耫耬è€è€®è€¯è€°è€²è€´è€¹è€ºè€¼è€¾è�€è��è�„è�…è�‡è�ˆè�‰è�Žè��è��è�‘è�“è�•è�–è�—�è�™è�›è�œè��è�žè�Ÿè� è�¡è�¢è�£è�¤è�¥è�¦è�§è�¨è�«è�¬è�è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¸è�¹è�ºè�»è�¼è�½éš†åž„拢陇楼娄æ�‚篓æ¼�陋芦å�¢é¢…åº�炉掳å�¤è™�é²�麓碌露路赂鹿潞禄录陆戮驴å�•é“�ä¾£æ—…å±¥å±¡ç¼•è™‘æ°¯å¾‹çŽ‡æ»¤ç»¿å³¦æŒ›åªæ»¦å�µä¹±æŽ 略抡轮伦仑沦纶论è��螺罗逻锣箩骡裸è�½æ´›éª†ç»œå¦ˆéº»çŽ›ç �蚂马骂嘛å�—埋买麦å�–迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������è�¾è‚�肂肅肈肊è‚�肎è‚�è‚�肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋èƒ�èƒ�èƒ‘èƒ’èƒ“èƒ”èƒ•èƒ˜èƒŸèƒ èƒ¢èƒ£èƒ¦èƒ®èƒµèƒ·èƒ¹èƒ»èƒ¾èƒ¿è„€è„�脃脄脅脇脈脋�脌脕脗脙脛脜è„�è„Ÿè„ è„¡è„¢è„£è„¤è„¥è„¦è„§è„¨è„©è„ªè„«è„脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆å�¯èŒ‚冒帽貌贸么玫枚梅酶霉煤没眉媒é•�æ¯�美昧å¯�妹媚门闷们è�Œè’™æª¬ç›Ÿé”°çŒ›æ¢¦åŸçœ¯é†šé�¡ç³œè¿·è°œå¼¥ç±³ç§˜è§…æ³Œèœœå¯†å¹‚æ£‰çœ ç»µå†•å…�勉娩缅é�¢è‹—æ��çž„è—�秒渺庙妙蔑ç�民抿皿æ•�悯闽明螟鸣é“å��命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������腀è…�腂腃腄腅腇腉è…�è…Žè…�腒腖腗腘腛腜è…�腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸è†�膃膄膅膆膇膉膋膌è†�膎è†�è†’è†“è†”è†•è†–è†—è†™è†šè†žè†Ÿè† è†¡è†¢è†¤è†¥ï¿½è†§è†©è†«è†¬è†è†®è†¯è†°è†±è†²è†´è†µè†¶è†·è†¸è†¹è†¼è†½è†¾è†¿è‡„臅臇臈臉臋è‡�臎è‡�è‡�è‡‘è‡’è‡“æ‘¹è˜‘æ¨¡è†œç£¨æ‘©é”æŠ¹æœ«èŽ«å¢¨é»˜æ²«æ¼ å¯žé™Œè°‹ç‰ŸæŸ�拇牡亩姆æ¯�墓暮幕募慕木目ç�¦ç‰§ç©†æ‹¿å“ªå‘�é’ é‚£å¨œçº³æ°–ä¹ƒå¥¶è€�奈å�—ç”·éš¾å›ŠæŒ è„‘æ�¼é—¹æ·–å‘¢é¦�å†…å«©èƒ½å¦®éœ“å€ªæ³¥å°¼æ‹Ÿä½ åŒ¿è…»é€†æººè”«æ‹ˆå¹´ç¢¾æ’µæ�»å¿µå¨˜é…¿é¸Ÿå°¿æ��è�‚å½å•®é•Šé•�æ¶…æ‚¨æŸ ç‹žå‡�å®��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜è‡�è‡žè‡Ÿè‡ è‡¡è‡¢è‡¤è‡¥è‡¦è‡¨è‡©è‡«è‡®è‡¯è‡°è‡±è‡²è‡µè‡¶è‡·è‡¸è‡¹è‡ºè‡½è‡¿èˆƒèˆ‡èˆˆèˆ‰èˆŠèˆ‹èˆŽèˆ�舑舓舕舖舗舘舙舚èˆ�èˆ èˆ¤èˆ¥èˆ¦èˆ§èˆ©èˆ®èˆ²èˆºèˆ¼èˆ½èˆ¿ï¿½è‰€è‰�艂艃艅艆艈艊艌è‰�艎è‰�艑艒艓艔艕艖艗艙艛艜è‰�è‰žè‰ è‰¡è‰¢è‰£è‰¤è‰¥è‰¦è‰§è‰©æ‹§æ³žç‰›æ‰é’®çº½è„“浓农弄奴努怒女暖è™�疟挪懦糯诺哦欧鸥殴藕呕å�¶æ²¤å•ªè¶´çˆ¬å¸•怕ç�¶æ‹�排牌徘湃派攀潘盘ç£�盼畔判å�›ä¹“庞æ—�耪胖抛咆刨炮è¢�跑泡呸胚培裴赔陪é…�ä½©æ²›å–·ç›†ç °æŠ¨çƒ¹æ¾Žå½è“¬æ£šç¡¼ç¯·è†¨æœ‹é¹�æ�§ç¢°å�¯ç ’霹批披劈ç�µæ¯—�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������艪艫艬è‰è‰±è‰µè‰¶è‰·è‰¸è‰»è‰¼èŠ€èŠ�芃芅芆芇芉芌èŠ�èŠ“èŠ”èŠ•èŠ–èŠšèŠ›èŠžèŠ èŠ¢èŠ£èŠ§èŠ²èŠµèŠ¶èŠºèŠ»èŠ¼èŠ¿è‹€è‹‚è‹ƒè‹…è‹†è‹‰è‹�苖苙苚è‹�苢苧苨苩苪苬è‹è‹®è‹°è‹²è‹³è‹µè‹¶è‹¸ï¿½è‹ºè‹¼è‹½è‹¾è‹¿èŒ€èŒŠèŒ‹èŒ�èŒ�茒茓茖茘茙èŒ�èŒžèŒŸèŒ èŒ¡èŒ¢èŒ£èŒ¤èŒ¥èŒ¦èŒ©èŒªèŒ®èŒ°èŒ²èŒ·èŒ»èŒ½å•¤è„¾ç–²çš®åŒ¹ç—žåƒ»å±�è¬ç¯‡å��片骗飘漂瓢票撇瞥拼频贫å“�è�˜ä¹’å�ªè‹¹è��å¹³å‡ç“¶è¯„å±�å�¡æ³¼é¢‡å©†ç ´é„迫粕剖扑铺仆莆葡è�©è’²åŸ”朴圃普浦谱æ›�ç€‘æœŸæ¬ºæ –æˆšå¦»ä¸ƒå‡„æ¼†æŸ’æ²�其棋奇æ§ç•¦å´Žè„�é½�旗祈ç¥�骑起岂乞ä¼�å�¯å¥‘ç Œå™¨æ°”è¿„å¼ƒæ±½æ³£è®«æŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������茾茿è��è�‚è�„è�…è�ˆè�Šè�‹è�Œè��è�Žè�“è�•è�–è�—è�˜è�™è��è�¢è�°è�±è�²è�³è�´è�µè�¶è�¹è�ºè�¾è�¿èŽ€èŽ�莂莃莄莇莈莊莋莌èŽ�èŽ�èŽ�莑莔莕莖莗莙莚èŽ�莟莡莢莣莤莥莦莧莬èŽèŽ®ï¿½èŽ¯èŽµèŽ»èŽ¾èŽ¿è�‚è�ƒè�„è�†è�ˆè�‰è�‹è��è�Žè��è�‘è�’è�“è�•è�—è�™è�šè�›è�žè�¢è�£è�¤è�¦è�§è�¨è�«è�¬è�æ�°æ´½ç‰µæ‰¦é’Žé“…å�ƒè¿�ç¾ä»Ÿè°¦ä¹¾é»”钱钳å‰�潜é�£æµ…è°´å ‘åµŒæ¬ æ‰æžªå‘›è…”羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘å³ä¿�çª�切茄且怯窃钦侵亲秦ç�´å‹¤èŠ¹æ“’ç¦½å¯�æ²�é�’轻氢倾å�¿æ¸…擎晴氰情顷请庆ç�¼ç©·ç§‹ä¸˜é‚±ç�ƒæ±‚å›šé…‹æ³…è¶‹åŒºè›†æ›²èº¯å±ˆé©±æ¸ ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"����������������������������������������������������������������è�®è�¯è�³è�´è�µè�¶è�·è�ºè�»è�¼è�¾è�¿è�€è�‚è�…è�‡è�ˆè�‰è�Šè��è�’è�“è�”è�•è�–è�—è�™è�šè�›è�žè�Ÿè� è�¡è�¢è�£è�©è�ªè�«è�¬è�è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¹è�ºè�»è�¾è�¿è‘€è‘�葂葃葄葅葇葈葉�葊葋葌è‘�葎è‘�è‘�葒葓葔葕葖葘è‘�è‘žè‘Ÿè‘ è‘¢è‘¤è‘¥è‘¦è‘§è‘¨è‘ªè‘®è‘¯è‘°è‘²è‘´è‘·è‘¹è‘»è‘¼å�–娶龋趣去圈颧æ�ƒé†›æ³‰å…¨ç—Šæ‹³çŠ¬åˆ¸åŠ�缺炔瘸å�´é¹Šæ¦·ç¡®é›€è£™ç¾¤ç„¶ç‡ƒå†‰æŸ“瓤壤攘嚷让饶扰绕惹çƒå£¬ä»�人å¿�韧任认刃妊纫扔ä»�日戎茸蓉è�£èž�熔溶容绒冗æ�‰æŸ”è‚‰èŒ¹è •å„’åºå¦‚辱乳æ±�入褥软阮蕊瑞é”�闰润若弱撒洒è�¨è…®é³ƒå¡žèµ›ä¸‰å���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"����������������������������������������������������������������葽葾葿蒀è’�蒃蒄蒅蒆蒊è’�è’�è’�蒑蒒蒓蒔蒕蒖蒘蒚蒛è’�è’žè’Ÿè’ è’¢è’£è’¤è’¥è’¦è’§è’¨è’©è’ªè’«è’¬è’蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎è“�蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫è“蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀è”�蔂伞散桑嗓丧æ�”éªšæ‰«å«‚ç‘Ÿè‰²æ¶©æ£®åƒ§èŽŽç ‚æ�€åˆ¹æ²™çº±å‚»å•¥ç…žç›æ™’ç�Šè‹«æ�‰å±±åˆ 煽衫闪陕擅赡膳善汕扇缮墒伤商èµ�晌上尚裳梢æ�Žç¨�烧èŠ�勺韶少哨邵ç»�奢赊蛇舌èˆ�èµ¦æ‘„å°„æ…‘æ¶‰ç¤¾è®¾ç ·ç”³å‘»ä¼¸èº«æ·±å¨ ç»…ç¥žæ²ˆå®¡å©¶ç”šè‚¾æ…Žæ¸—å£°ç”Ÿç”¥ç‰²å�‡ç»³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋è”�蔎è”�è”�蔒蔔蔕蔖蔘蔙蔛蔜è”�è”žè” è”¢è”£è”¤è”¥è”¦è”§è”¨è”©è”ªè”蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀è•�蕂蕄蕅蕆蕇蕋蕌è•�蕎è•�è•�蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜è•�è•Ÿè• è•¡è•¢è•£è•¥è•¦è•§è•©è•ªè•«è•¬è•蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀è–�çœ�盛剩胜圣师失狮施湿诗尸虱å��石拾时什食蚀实识å�²çŸ¢ä½¿å±Žé©¶å§‹å¼�示士世柿事æ‹èª“é€�势是嗜噬适仕ä¾�释饰æ°�市æ�ƒå®¤è§†è¯•收手首守寿授售å�—瘦兽蔬枢梳殊抒输å�”舒淑ç–�书赎å°ç†Ÿè–¯æš‘曙署蜀é»�é¼ å±žæœ¯è¿°æ ‘æ�Ÿæˆ�竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌è–�è–Žè–�薑薒薓薔薕薖薗薘薙薚è–�è–žè–Ÿè– è–¡è–¢è–£è–¥è–¦è–§è–©è–«è–¬è–薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌è—�藎藑藒�藔藖藗藘藙藚藛è—�è—žè—Ÿè— è—¡è—¢è—£è—¥è—¦è—§è—¨è—ªè—«è—¬è—藮藯藰藱藲藳藴藵藶藷藸æ�•刷è€�æ‘”è¡°ç”©å¸…æ “æ‹´éœœå�Œçˆ½è°�æ°´ç�¡ç¨Žå�®çž¬é¡ºèˆœè¯´ç¡•朔çƒ�斯撕嘶æ€�ç§�å�¸ä¸�æ»è‚†å¯ºå—£å››ä¼ºä¼¼é¥²å·³æ�¾è€¸æ€‚颂é€�宋讼诵æ�œè‰˜æ“žå—½è‹�é…¥ä¿—ç´ é€Ÿç²Ÿåƒ³å¡‘æº¯å®¿è¯‰è‚ƒé…¸è’œç®—è™½éš‹éš�绥髓碎å²�ç©—é�‚éš§ç¥Ÿå™æ�Ÿç¬‹è“‘æ¢å”†ç¼©ç��ç´¢é”�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀è˜�蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌è˜�蘎è˜�è˜�蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜è˜�è˜žè˜Ÿè˜ è˜¡è˜¢è˜£è˜¤è˜¥è˜¦è˜¨è˜ªè˜«è˜¬è˜è˜®è˜¯è˜°è˜±è˜²è˜³è˜´è˜µè˜¶è˜·è˜¹è˜ºè˜»è˜½è˜¾è˜¿è™€ï¿½è™�虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜è™�è™Ÿè™ è™¡è™£è™¤è™¥è™¦è™§è™¨è™©è™ªç�挞蹋è¸�胎苔抬å�°æ³°é…žå¤ªæ€�æ±°å��摊贪瘫滩å�›æª€ç—°æ½è°è°ˆå�¦æ¯¯è¢’碳探å�¹ç‚汤塘æ�ªå ‚æ£ è†›å”�糖倘躺淌趟烫æŽ�涛滔绦è�„桃逃淘陶讨套特藤腾疼誊梯剔踢锑æ��题蹄啼体替åš�惕涕剃屉天添填田甜æ�¬èˆ”腆挑æ�¡è¿¢çœºè·³è´´é“�帖厅å�¬çƒƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������è™è™¯è™°è™²è™³è™´è™µè™¶è™·è™¸èšƒèš„蚅蚆蚇蚈蚉蚎èš�èš�èš‘èš’èš”èš–èš—èš˜èš™èššèš›èšžèšŸèš èš¡èš¢èš¥èš¦èš«èšèš®èš²èš³èš·èš¸èš¹èš»èš¼èš½èš¾èš¿è›�蛂蛃蛅蛈蛌è›�蛒蛓蛕蛖蛗蛚蛜�è›�è› è›¡è›¢è›£è›¥è›¦è›§è›¨è›ªè›«è›¬è›¯è›µè›¶è›·è›ºè›»è›¼è›½è›¿èœ�蜄蜅蜆蜋蜌蜎èœ�èœ�蜑蜔蜖汀廷å�œäºåºæŒºè‰‡é€šæ¡�酮瞳å�Œé“œå½¤ç«¥æ¡¶æ�…ç’统痛å�·æŠ•头é€�凸秃çª�å›¾å¾’é€”æ¶‚å± åœŸå��å…”æ¹�团推颓腿蜕褪退å�žå±¯è‡€æ‹–托脱鸵陀驮驼æ¤å¦¥æ‹“唾挖哇蛙洼娃瓦袜æªå¤–豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄å¨��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������蜙蜛èœ�èœŸèœ èœ¤èœ¦èœ§èœ¨èœªèœ«èœ¬èœèœ¯èœ°èœ²èœ³èœµèœ¶èœ¸èœ¹èœºèœ¼èœ½è�€è��è�‚è�ƒè�„è�…è�†è�Šè�‹è��è��è��è�‘è�’è�”è�•è�–è�˜è�šè�›è�œè��è�žè�Ÿè�¡è�¢è�¦è�§è�¨è�©è�ªè�«è�¬è�è�¯è�±è�²è�³è�µï¿½è�·è�¸è�¹è�ºè�¿èž€èž�螄螆螇螉螊螌螎èž�èž�螑螒螔螕螖螘螙螚螛螜èž�èžžèž èž¡èž¢èž£èž¤å·�å¾®å�±éŸ¦è¿�桅围唯惟为æ½�维苇è�Žå§”伟伪尾纬未蔚味ç•�胃喂é�ä½�æ¸è°“尉慰å�«ç˜Ÿæ¸©èšŠæ–‡é—»çº¹å�»ç¨³ç´Šé—®å—¡ç¿�ç“®æŒ�蜗涡çª�我斡å�§æ�¡æ²ƒå·«å‘œé’¨ä¹Œæ±¡è¯¬å±‹æ— 芜梧å�¾å�´æ¯‹æ¦äº”æ�‚å�ˆèˆžä¼�ä¾®å�žæˆŠé›¾æ™¤ç‰©å‹¿åŠ¡æ‚Ÿè¯¯æ˜”ç†™æž�西硒矽晰嘻å�¸é”¡ç‰ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿èŸ�蟂蟃蟄蟅蟇蟈蟉蟌èŸ�蟎èŸ�èŸ�蟔蟕蟖蟗蟘蟙蟚蟜èŸ�蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬èŸèŸ¯èŸ°èŸ±èŸ²èŸ³èŸ´èŸµèŸ¶èŸ·èŸ¸ï¿½èŸºèŸ»èŸ¼èŸ½èŸ¿è €è �è ‚è „è …è †è ‡è ˆè ‰è ‹è Œè �è Žè �è �è ‘è ’è ”è —è ˜è ™è šè œè �è žè Ÿè è £ç¨€æ�¯å¸Œæ‚‰è†�夕惜熄烯溪æ±�犀檄è¢å¸ä¹ 媳喜铣洗系隙æˆ�ç»†çžŽè™¾åŒ£éœžè¾–æš‡å³¡ä¾ ç‹ä¸‹åަå¤�å�“掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷é™�线相厢镶香箱襄湘乡翔祥详想å“�享项巷橡åƒ�å�‘象è�§ç¡�霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è ¤è ¥è ¦è §è ¨è ©è ªè «è ¬è è ®è ¯è °è ±è ³è ´è µè ¶è ·è ¸è ºè »è ½è ¾è ¿è¡�衂衃衆衇衈衉衊衋衎è¡�è¡�衑衒術衕衖衘衚衛衜è¡�è¡žè¡Ÿè¡ è¡¦è¡§è¡ªè¡è¡¯è¡±è¡³è¡´è¡µè¡¶è¡¸è¡¹è¡ºï¿½è¡»è¡¼è¢€è¢ƒè¢†è¢‡è¢‰è¢Šè¢Œè¢Žè¢�è¢�袑袓袔袕袗袘袙袚袛è¢�è¢žè¢Ÿè¢ è¢¡è¢£è¢¥è¢¦è¢§è¢¨è¢©è¢ªå°�å�æ ¡è‚–å•¸ç¬‘æ•ˆæ¥”äº›æ‡è�Žéž‹å��挟æ�ºé‚ªæ–œèƒ�è°�写械å�¸èŸ¹æ‡ˆæ³„泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸æ��性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须å¾�许蓄酗å�™æ—åº�畜æ�¤çµ®å©¿ç»ªç»è½©å–§å®£æ‚¬æ—‹çŽ„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌è£�è£�è£�裑裓裖裗裚裛補è£�è£žè£ è£¡è£¦è£§è£©è£ªè£«è£¬è£è£®è£¯è£²è£µè£¶è£·è£ºè£»è£½è£¿è¤€è¤�褃褄褅褆複褈�褉褋褌è¤�褎è¤�褑褔褕褖褗褘褜è¤�è¤žè¤Ÿè¤ è¤¢è¤£è¤¤è¤¦è¤§è¤¨è¤©è¤¬è¤è¤®è¤¯è¤±è¤²è¤³è¤µè¤·é€‰ç™£çœ©ç»šé�´è–›å¦ç©´é›ªè¡€å‹‹ç†�循旬询寻驯巡殉汛è®è®¯é€Šè¿…压押鸦é¸å‘€ä¸«èŠ½ç‰™èšœå´–è¡™æ¶¯é›…å“‘äºšè®¶ç„‰å’½é˜‰çƒŸæ·¹ç›�ä¸¥ç ”èœ’å²©å»¶è¨€é¢œé˜Žç‚Žæ²¿å¥„æŽ©çœ¼è¡�æ¼”è‰³å °ç‡•åŽŒç šé›�å”�彦焰宴谚验殃央鸯秧æ�¨æ‰¬ä½¯ç–¡ç¾Šæ´‹é˜³æ°§ä»°ç—’å…»æ ·æ¼¾é‚€è…°å¦–ç‘¶ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌è¥�襎è¥�è¥�襑襒襓襔襕襖襗襘襙襚襛襜è¥�è¥ è¥¡è¥¢è¥£è¥¤è¥¥è¥§è¥¨è¥©è¥ªè¥«è¥¬è¥è¥®è¥¯è¥°è¥±è¥²è¥³è¥´è¥µè¥¶è¥·è¥¸è¥¹è¥ºè¥¼ï¿½è¥½è¥¾è¦€è¦‚覄覅覇覈覉覊見覌è¦�覎è¦�è¦�覑覒覓覔覕視覗覘覙覚覛覜è¦�è¦žè¦Ÿè¦ è¦¡æ‘‡å°§é�¥çª‘谣姚咬舀è�¯è¦�耀椰噎耶爷野冶也页掖业å�¶æ›³è…‹å¤œæ¶²ä¸€å£¹åŒ»æ�–铱ä¾�伊衣é¢�夷é�—移仪胰疑沂宜姨å½�椅èš�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔æ„�毅忆义益溢诣议谊译异翼翌绎茵è�«å› 殷音阴姻å�Ÿé“¶æ·«å¯…饮尹引éš��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬è¦è¦®è¦¯è¦°è¦±è¦²è¦³è¦´è¦µè¦¶è¦·è¦¸è¦¹è¦ºè¦»è¦¼è¦½è¦¾è¦¿è§€è§ƒè§�觓觔觕觗觘觙觛è§�è§Ÿè§ è§¡è§¢è§¤è§§è§¨è§©è§ªè§¬è§è§®è§°è§±è§²è§´è§µè§¶è§·è§¸è§¹è§ºï¿½è§»è§¼è§½è§¾è§¿è¨�訂訃訄訅訆計訉訊訋訌è¨�討è¨�è¨�訑訒訓訔訕訖託記訙訚訛訜è¨�å�°è‹±æ¨±å©´é¹°åº”缨莹è�¤è�¥è�§è�‡è¿Žèµ¢ç›ˆå½±é¢–ç¡¬æ˜ å“Ÿæ‹¥ä½£è‡ƒç—ˆåº¸é›�踊蛹å’�泳涌永æ�¿å‹‡ç”¨å¹½ä¼˜æ‚ 忧尤由邮铀犹油游酉有å�‹å�³ä½‘釉诱å�ˆå¹¼è¿‚淤于盂榆虞愚舆余俞逾鱼愉æ¸�渔隅予娱雨与屿禹宇è¯ç¾½çŽ‰åŸŸèŠ‹éƒ�å��é�‡å–»å³ªå¾¡æ„ˆæ¬²ç‹±è‚²èª‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è¨žè¨Ÿè¨ è¨¡è¨¢è¨£è¨¤è¨¥è¨¦è¨§è¨¨è¨©è¨ªè¨«è¨¬è¨è¨®è¨¯è¨°è¨±è¨²è¨³è¨´è¨µè¨¶è¨·è¨¸è¨¹è¨ºè¨»è¨¼è¨½è¨¿è©€è©�詂詃詄詅詆詇詉詊詋詌è©�詎è©�è©�詑詒詓詔評詖詗詘詙詚詛詜è©�è©žï¿½è©Ÿè© è©¡è©¢è©£è©¤è©¥è©¦è©§è©¨è©©è©ªè©«è©¬è©è©®è©¯è©°è©±è©²è©³è©´è©µè©¶è©·è©¸è©ºè©»è©¼è©½è©¾è©¿èª€æµ´å¯“裕预豫é©é¸³æ¸Šå†¤å…ƒåž£è¢�原æ�´è¾•å›å‘˜åœ†çŒ¿æº�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨å…�è¿�è•´é…�晕韵å•åŒ�ç ¸æ�‚æ ½å“‰ç�¾å®°è½½å†�在咱攒暂赞赃è„�葬é�糟凿藻枣早澡蚤èº�å™ªé€ çš‚ç�¶ç‡¥è´£æ‹©åˆ™æ³½è´¼æ€Žå¢žæ†Žæ›¾èµ 扎喳渣æœè½§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������èª�誂誃誄誅誆誇誈誋誌èª�誎èª�èª�誑誒誔誕誖誗誘誙誚誛誜èª�èªžèªŸèª èª¡èª¢èª£èª¤èª¥èª¦èª§èª¨èª©èªªèª«èª¬èªèª®èª¯èª°èª±èª²èª³èª´èªµèª¶èª·èª¸èª¹èªºèª»èª¼èª½èª¾èª¿è«€è«�諂�諃諄諅諆談諈諉諊請諌è«�諎è«�è«�諑諒諓諔諕論諗諘諙諚諛諜è«�è«žè«Ÿè« è«¡è«¢è«£é“¡é—¸çœ¨æ …æ¦¨å’‹ä¹�炸诈摘斋宅窄债寨瞻毡詹粘沾ç›�æ–©è¾—å´å±•è˜¸æ ˆå� æˆ˜ç«™æ¹›ç»½æ¨Ÿç« å½°æ¼³å¼ æŽŒæ¶¨æ�–丈å¸�è´¦ä»—èƒ€ç˜´éšœæ‹›æ˜æ‰¾æ²¼èµµç…§ç½©å…†è‚‡å�¬é�®æŠ˜å“²è›°è¾™è€…锗蔗这浙ç��æ–ŸçœŸç”„ç §è‡»è´žé’ˆä¾¦æž•ç–¹è¯Šéœ‡æŒ¯é•‡é˜µè’¸æŒ£ç��å¾�ç‹°äº‰æ€”æ•´æ‹¯æ£æ”¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬è«è«®è«¯è«°è«±è«²è«³è«´è«µè«¶è«·è«¸è«¹è«ºè«»è«¼è«½è«¾è«¿è¬€è¬�謂謃謄謅謆謈謉謊謋謌è¬�謎è¬�è¬�謑謒謓謔謕謖謗謘謙謚講謜è¬�è¬žè¬Ÿè¬ è¬¡è¬¢è¬£ï¿½è¬¤è¬¥è¬§è¬¨è¬©è¬ªè¬«è¬¬è¬è¬®è¬¯è¬°è¬±è¬²è¬³è¬´è¬µè¬¶è¬·è¬¸è¬¹è¬ºè¬»è¬¼è¬½è¬¾è¬¿è€è�è‚èƒè„è…帧症郑è¯�èŠ�æž�支å�±èœ˜çŸ¥è‚¢è„‚æ±�之织è�Œç›´æ¤�殖执值侄å�€æŒ‡æ¢è¶¾å�ªæ—¨çº¸å¿—挚掷至致置帜峙制智秩稚质炙痔滞治窒ä¸ç›…å¿ é’Ÿè¡·ç»ˆç§�è‚¿é‡�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤ç� æ ªè››æœ±çŒªè¯¸è¯›é€�竹烛煮拄瞩嘱主著柱助蛀贮铸ç‘�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������è†è‡èˆè‰èŠè‹èŒè�èŽè�è�è‘è’è“è”è•è–è—è˜è™èšè›èœè�èžèŸè è¡è¢è£è¤è¥è§è¨è©èªè«èè®è¯è°è±è²è³è´èµè¶è·è¸è¹èºè»è¼è½è¾è¿è®€è®�讂讃讄讅讆�讇讈讉變讋讌è®�讎è®�è®�讑讒讓讔讕讖讗讘讙讚讛讜è®�讞讟讬讱讻诇è¯�诪谉谞ä½�注ç¥�é©»æŠ“çˆªæ‹½ä¸“ç –è½¬æ’°èµšç¯†æ¡©åº„è£…å¦†æ’žå£®çŠ¶æ¤Žé”¥è¿½èµ˜å� 缀谆准æ�‰æ‹™å�“桌ç�¢èŒ�酌啄ç�€ç�¼æµŠå…¹å’¨èµ„姿滋淄åœç´«ä»”籽滓å�自æ¸�å—鬃棕踪宗综总纵邹走å¥�æ��ç§Ÿè¶³å�’æ—�祖诅阻组钻纂嘴醉最罪尊é�µæ˜¨å·¦ä½�柞å�šä½œå��座î �î ‘î ’î “î ”ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋è±�豎è±�è±�豑豒豓豔豖豗豘豙豛豜è±�è±žè±Ÿè± è±£è±¤è±¥è±¦è±§è±¨è±©è±¬è±è±®è±¯è±°è±±è±²è±´è±µè±¶è±·è±»è±¼è±½è±¾è±¿è²€è²�貃貄貆貇�貈貋è²�貎è²�è²�貑貒貓貕貖貗貙貚貛貜è²�è²žè²Ÿè² è²¡è²¢è²£è²¤è²¥è²¦è²§è²¨è²©è²ªè²«è²¬è²äº�丌兀ä¸�廿å�…丕亘丞鬲å¬å™©ä¸¨ç¦ºä¸¿åŒ•乇å¤çˆ»å�®æ°�囟胤馗毓ç�¾é¼—丶亟é¼�乜乩亓芈å›å•¬å˜�仄åŽ�åŽ�厣厥厮é�¥èµ�匚å�µåŒ¦åŒ®åŒ¾èµœå�¦å�£åˆ‚刈刎åˆåˆ³åˆ¿å‰€å‰Œå‰žå‰¡å‰œè’¯å‰½åŠ‚åŠ�åŠ�劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚ä½��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀è³�賂賃賄賅賆資賈賉賊賋賌è³�賎è³�è³�賑賒賓賔賕賖賗賘賙賚賛賜è³�è³žè³Ÿè³ è³¡è³¢è³£è³¤è³¥è³¦è³§è³¨è³©è³ªè³«è³¬ï¿½è³è³®è³¯è³°è³±è³²è³³è³´è³µè³¶è³·è³¸è³¹è³ºè³»è³¼è³½è³¾è³¿è´€è´�贂贃贄贅贆贇贈贉贊贋贌è´�佟佗伲伽佶佴侑侉侃ä¾�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩å�Œä¿³å€¬å€�倮å€ä¿¾å€œå€Œå€¥å€¨å�¾å�ƒå�•å�ˆå�Žå�¬å�»å‚¥å‚§å‚©å‚ºåƒ–儆åƒåƒ¬åƒ¦åƒ®å„‡å„‹ä»�æ°½ä½˜ä½¥ä¿Žé¾ æ±†ç±´å…®å·½é»‰é¦˜å†�夔勹åŒ�訇åŒ�å‡«å¤™å…•äº å…–äº³è¡®è¢¤äºµè„”è£’ç¦€å¬´è ƒç¾¸å†«å†±å†½å†¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"����������������������������������������������������������������贎è´�è´�è´‘è´’è´“è´”è´•è´–è´—è´˜è´™è´šè´›è´œè´ èµ‘èµ’èµ—èµŸèµ¥èµ¨èµ©èµªèµ¬èµ®èµ¯èµ±èµ²èµ¸èµ¹èµºèµ»èµ¼èµ½èµ¾èµ¿è¶€è¶‚è¶ƒè¶†è¶‡è¶ˆè¶‰è¶Œè¶�è¶Žè¶�è¶�趒趓趕趖趗趘趙趚趛趜è¶�è¶žè¶ è¶¡ï¿½è¶¢è¶¤è¶¥è¶¦è¶§è¶¨è¶©è¶ªè¶«è¶¬è¶è¶®è¶¯è¶°è¶²è¶¶è¶·è¶¹è¶»è¶½è·€è·�跂跅跇跈跉跊è·�è·�è·’è·“è·”å‡‡å†–å†¢å†¥è® è®¦è®§è®ªè®´è®µè®·è¯‚è¯ƒè¯‹è¯�è¯Žè¯’è¯“è¯”è¯–è¯˜è¯™è¯œè¯Ÿè¯ è¯¤è¯¨è¯©è¯®è¯°è¯³è¯¶è¯¹è¯¼è¯¿è°€è°‚è°„è°‡è°Œè°�谑谒谔谕谖谙谛谘è°�è°Ÿè° è°¡è°¥è°§è°ªè°«è°®è°¯è°²è°³è°µè°¶å�©å�ºé˜�阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈éš�éš—éš°é‚—é‚›é‚�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è·•è·˜è·™è·œè· è·¡è·¢è·¥è·¦è·§è·©è·è·®è·°è·±è·²è·´è·¶è·¼è·¾è·¿è¸€è¸�踂踃踄踆踇踈踋è¸�踎è¸�è¸‘è¸’è¸“è¸•è¸–è¸—è¸˜è¸™è¸šè¸›è¸œè¸ è¸¡è¸¤è¸¥è¸¦è¸§è¸¨è¸«è¸è¸°è¸²è¸³è¸´è¸¶è¸·è¸¸è¸»è¸¼è¸¾ï¿½è¸¿è¹ƒè¹…蹆蹌è¹�蹎è¹�è¹�蹓蹔蹕蹖蹗蹘蹚蹛蹜è¹�è¹žè¹Ÿè¹ è¹¡è¹¢è¹£è¹¤è¹¥è¹§è¹¨è¹ªè¹«è¹®è¹±é‚¸é‚°éƒ�郅邾éƒ�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆åˆ�奂劢劬åŠåŠ¾å“¿å‹�å‹–å‹°å�Ÿç‡®çŸ�廴凵凼鬯厶å¼�畚巯å�Œåž©åž¡å¡¾å¢¼å£…壑圩圬圪圳圹圮圯å�œåœ»å�‚å�©åž…å�«åž†å�¼å�»å�¨å�å�¶å�³åžåž¤åžŒåž²åŸ�åž§åž´åž“åž åŸ•åŸ˜åŸšåŸ™åŸ’åž¸åŸ´åŸ¯åŸ¸åŸ¤åŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌èº�躎躑躒躓躕躖躗躘躙躚躛èº�èºŸèº èº¡èº¢èº£èº¤èº¥èº¦èº§èº¨èº©èºªèºèº®èº°èº±èº³èº´èºµèº¶èº·èº¸èº¹èº»èº¼èº½èº¾èº¿è»€è»�軂�軃軄軅軆軇軈軉車軋軌è»�è»�è»�軑軒軓軔軕軖軗軘軙軚軛軜è»�è»žè»Ÿè» è»¡è»¢è»£è»¤å ‹å �埽åŸå €å žå ™å¡„å 塥塬å¢�墉墚墀馨鼙懿艹艽艿èŠ�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌è‹�芩芴芡芪芟苄苎芤苡茉苷苤èŒ�èŒ‡è‹œè‹´è‹’è‹˜èŒŒè‹»è‹“èŒ‘èŒšèŒ†èŒ”èŒ•è‹ è‹•èŒœè�‘è�›è�œèŒˆèŽ’èŒ¼èŒ´èŒ±èŽ›è�žèŒ¯è��è�‡è�ƒè�Ÿè�€èŒ—è� èŒèŒºèŒ³è�¦è�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬è»è»®è»¯è»°è»±è»²è»³è»´è»µè»¶è»·è»¸è»¹è»ºè»»è»¼è»½è»¾è»¿è¼€è¼�輂較輄輅輆輇輈載輊輋輌è¼�輎è¼�è¼�輑輒輓輔輕輖輗輘輙輚輛輜è¼�è¼žè¼Ÿè¼ è¼¡è¼¢è¼£ï¿½è¼¤è¼¥è¼¦è¼§è¼¨è¼©è¼ªè¼«è¼¬è¼è¼®è¼¯è¼°è¼±è¼²è¼³è¼´è¼µè¼¶è¼·è¼¸è¼¹è¼ºè¼»è¼¼è¼½è¼¾è¼¿è½€è½�轂轃轄è�¨èŒ›è�©è�¬è�ªè�è�®èްè�¸èŽ³èŽ´èŽ èŽªèŽ“èŽœèŽ…è�¼èŽ¶èŽ©è�½èޏè�»èŽ˜èŽžèŽ¨èŽºèŽ¼è��è��è�¥è�˜å ‡è�˜è�‹è��è�½è�–è�œè�¸è�‘è�†è�”è�Ÿè��è�ƒè�¸è�¹è�ªè�…è�€è�¦è�°è�¡è‘œè‘‘葚葙葳蒇蒈葺蒉葸è�¼è‘†è‘©è‘¶è’Œè’Žè�±è‘è“�è“�è“�è“¦è’½è““è“Šè’¿è’ºè“ è’¡è’¹è’´è’—è“¥è“£è”Œç”�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌è½�轎è½�è½�轑轒轓轔轕轖轗轘轙轚轛轜è½�è½žè½Ÿè½ è½¡è½¢è½£è½¤è½¥è½ªè¾€è¾Œè¾’è¾�è¾ è¾¡è¾¢è¾¤è¾¥è¾¦è¾§è¾ªè¾¬è¾è¾®è¾¯è¾²è¾³è¾´è¾µè¾·è¾¸è¾ºè¾»è¾¼è¾¿è¿€è¿ƒè¿†ï¿½è¿‰è¿Šè¿‹è¿Œè¿�è¿�è¿’è¿–è¿—è¿šè¿ è¿¡è¿£è¿§è¿¬è¿¯è¿±è¿²è¿´è¿µè¿¶è¿ºè¿»è¿¼è¿¾è¿¿é€‡é€ˆé€Œé€Žé€“é€•é€˜è•–è”»è“¿è“¼è•™è•ˆè•¨è•¤è•žè•ºçž¢è•ƒè•²è•»è–¤è–¨è–‡è–�蕹薮薜薅薹薷薰藓è—�藜藿蘧蘅蘩蘖蘼廾弈夼å¥�耷奕奚奘åŒ�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹æ�‹æ�ƒæŽæ�¶æ�±æ�ºæŽŽæŽ´æ�掬掊æ�©æŽ®æŽ¼æ�²æ�¸æ� æ�¿æ�„æ�žæ�Žæ‘’æ�†æŽ¾æ‘…æ‘�æ�‹æ�›æ� æ�Œæ�¦æ�¡æ‘žæ’„æ‘æ’–�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿é�€é�ƒé�…é�†é�ˆé�‰é�Šé�‹é�Œé�Žé�”é�•é�–é�™é�šé�œé��é�žé�Ÿé� é�¡é�¤é�¦é�§é�©é�ªé�«é�¬é�¯é�°é�±é�²é�³é�¶é�·é�¸é�¹é�ºé�»é�¼é�¾é‚��還邅邆邇邉邊邌é‚�邎é‚�é‚�é‚’é‚”é‚–é‚˜é‚šé‚œé‚žé‚Ÿé‚ é‚¤é‚¥é‚§é‚¨é‚©é‚«é‚邲邷邼邽邿郀摺撷撸撙撺擀æ“�擗擤擢攉攥攮弋忒甙弑å�Ÿå�±å�½å�©å�¨å�»å�’å�–å�†å‘‹å‘’呓呔呖呃å�¡å‘—å‘™å�£å�²å’‚咔呷呱呤咚咛咄呶呦å’�å“�å’哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤å“�å“�å“žå”›å“§å” å“½å””å“³å”¢å”£å”�唑唧唪啧å–�喵啉å•å•�啕唿å•�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌éƒ�éƒ’éƒ”éƒ•éƒ–éƒ˜éƒ™éƒšéƒžéƒŸéƒ éƒ£éƒ¤éƒ¥éƒ©éƒªéƒ¬éƒ®éƒ°éƒ±éƒ²éƒ³éƒµéƒ¶éƒ·éƒ¹éƒºéƒ»éƒ¼éƒ¿é„€é„�鄃鄅鄆鄇鄈鄉鄊鄋鄌é„�鄎é„�é„�鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�é„�é„Ÿé„ é„¡é„¤é„¥é„¦é„§é„¨é„©é„ªé„«é„¬é„鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀é…�酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈å–�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦å—�嗄嗯嗥嗲嗳嗌å—�嗨嗵嗤辔嘞嘈嘌å˜�嘤嘣嗾嘀嘧å˜å™˜å˜¹å™—嘬å™�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗å›�囡囵囫囹囿圄圊圉圜å¸�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é……é…‡é…ˆé…‘é…“é…”é…•é…–é…˜é…™é…›é…œé…Ÿé… é…¦é…§é…¨é…«é…酳酺酻酼醀é†�醂醃醄醆醈醊醎é†�醓醔醕醖醗醘醙醜é†�é†žé†Ÿé† é†¡é†¤é†¥é†¦é†§é†¨é†©é†«é†¬é†°é†±é†²é†³é†¶é†·é†¸é†¹é†»ï¿½é†¼é†½é†¾é†¿é‡€é‡�釂釃釄釅釆釈釋é‡�釒釓釔釕釖釗釘釙釚釛é‡�é‡žé‡Ÿé‡ é‡¡é‡¢é‡£é‡¤é‡¥å¸·å¹„å¹”å¹›å¹žå¹¡å²Œå±ºå²�å²�岖岈岘岙岑岚岜岵岢岽岬岫岱岣å³�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯åµ�嵫嵋嵊嵩嵴嶂嶙å¶�豳嶷巅彳彷徂徇徉後徕徙徜徨å¾å¾µå¾¼è¡¢å½¡çŠçŠ°çŠ´çŠ·çŠ¸ç‹ƒç‹�狎ç‹�狒狨狯狩狲狴狷çŒ�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬é‡é‡®é‡¯é‡°é‡±é‡²é‡³é‡´é‡µé‡¶é‡·é‡¸é‡¹é‡ºé‡»é‡¼é‡½é‡¾é‡¿éˆ€éˆ�鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌éˆ�鈎éˆ�éˆ�鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜éˆ�éˆžéˆŸéˆ éˆ¡éˆ¢éˆ£éˆ¤ï¿½éˆ¥éˆ¦éˆ§éˆ¨éˆ©éˆªéˆ«éˆ¬éˆéˆ®éˆ¯éˆ°éˆ±éˆ²éˆ³éˆ´éˆµéˆ¶éˆ·éˆ¸éˆ¹éˆºéˆ»éˆ¼éˆ½éˆ¾éˆ¿é‰€é‰�鉂鉃鉄鉅狻猗猓猡猊猞çŒ�猕猢猹猥猬猸猱ç��ç��ç�—ç� ç�¬ç�¯ç�¾èˆ›å¤¥é£§å¤¤å¤‚饣饧饨饩饪饫饬饴饷饽馀馄馇馊é¦�é¦�é¦‘é¦“é¦”é¦•åº€åº‘åº‹åº–åº¥åº åº¹åºµåº¾åº³èµ“å»’å»‘å»›å»¨å»ªè†ºå¿„å¿‰å¿–å¿�怃忮怄忡忤忾怅怆忪å¿å¿¸æ€™æ€µæ€¦æ€›æ€�æ€�怩怫怊怿怡æ�¸æ�¹æ�»æ�ºæ�‚�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌é‰�鉎é‰�é‰�鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜é‰�é‰žé‰Ÿé‰ é‰¡é‰¢é‰£é‰¤é‰¥é‰¦é‰§é‰¨é‰©é‰ªé‰«é‰¬é‰é‰®é‰¯é‰°é‰±é‰²é‰³é‰µé‰¶é‰·é‰¸é‰¹é‰ºé‰»é‰¼é‰½é‰¾é‰¿éŠ€éŠ�銂銃銄銅�銆銇銈銉銊銋銌éŠ�éŠ�éŠ�銑銒銓銔銕銖銗銘銙銚銛銜éŠ�éŠžéŠŸéŠ éŠ¡éŠ¢éŠ£éŠ¤éŠ¥éŠ¦éŠ§æ�ªæ�½æ‚–æ‚šæ‚æ‚�悃悒悌悛惬悻悱æƒ�æƒ˜æƒ†æƒšæ‚´æ„ æ„¦æ„•æ„£æƒ´æ„€æ„Žæ„«æ…Šæ…µæ†¬æ†”æ†§æ†·æ‡”æ‡µå¿�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌é˜�é˜�阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅æ²�沔沌汨汩汴汶沆沩æ³�æ³”æ²æ³·æ³¸æ³±æ³—æ²²æ³ æ³–æ³ºæ³«æ³®æ²±æ³“æ³¯æ³¾ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������銨銩銪銫銬éŠéŠ¯éŠ°éŠ±éŠ²éŠ³éŠ´éŠµéŠ¶éŠ·éŠ¸éŠ¹éŠºéŠ»éŠ¼éŠ½éŠ¾éŠ¿é‹€é‹�鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌é‹�鋎é‹�é‹�鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜é‹�é‹žé‹Ÿé‹ é‹¡é‹¢é‹£é‹¤é‹¥é‹¦é‹§é‹¨ï¿½é‹©é‹ªé‹«é‹¬é‹é‹®é‹¯é‹°é‹±é‹²é‹³é‹´é‹µé‹¶é‹·é‹¸é‹¹é‹ºé‹»é‹¼é‹½é‹¾é‹¿éŒ€éŒ�錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫æµ�洮洵洚æµ�æµ’æµ”æ´³æ¶‘æµ¯æ¶žæ¶ æµžæ¶“æ¶”æµœæµ æµ¼æµ£æ¸šæ·‡æ·…æ·žæ¸Žæ¶¿æ· æ¸‘æ·¦æ·�æ·™æ¸–æ¶«æ¸Œæ¶®æ¸«æ¹®æ¹Žæ¹«æº²æ¹Ÿæº†æ¹“æ¹”æ¸²æ¸¥æ¹„æ»Ÿæº±æº˜æ» æ¼æ»¢æº¥æº§æº½æº»æº·æ»—溴æ»�æº�滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉æ¾�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������錊錋錌éŒ�錎éŒ�éŒ�錑錒錓錔錕錖錗錘錙錚錛錜éŒ�éŒžéŒŸéŒ éŒ¡éŒ¢éŒ£éŒ¤éŒ¥éŒ¦éŒ§éŒ¨éŒ©éŒªéŒ«éŒ¬éŒéŒ®éŒ¯éŒ°éŒ±éŒ²éŒ³éŒ´éŒµéŒ¶éŒ·éŒ¸éŒ¹éŒºéŒ»éŒ¼éŒ½éŒ¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰ï¿½é�Šé�‹é�Œé��é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�«æ¿‰æ¾§æ¾¹æ¾¶æ¿‚æ¿¡æ¿®æ¿žæ¿ æ¿¯ç€šç€£ç€›ç€¹ç€µç��ç�žå®€å®„宕宓宥宸甯骞æ�´å¯¤å¯®è¤°å¯°è¹‡è¬‡è¾¶è¿“迕迥迮迤迩迦迳迨逅逄逋逦逑é€�逖逡逵逶é€é€¯é�„é�‘é�’é��é�¨é�˜é�¢é�›æš¹é�´é�½é‚‚邈邃邋å½�彗彖彘尻咫å±�å±™å±å±£å±¦ç¾¼å¼ªå¼©å¼è‰´å¼¼é¬»å±®å¦�妃å¦�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������é�¬é�é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿éŽ€éŽ�鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌éŽ�鎎éŽ�鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜éŽ�éŽžéŽŸéŽ éŽ¡éŽ¢éŽ£éŽ¤éŽ¥éŽ¦éŽ§éŽ¨éŽ©éŽªéŽ«ï¿½éŽ¬éŽéŽ®éŽ¯éŽ°éŽ±éŽ²éŽ³éŽ´éŽµéŽ¶éŽ·éŽ¸éŽ¹éŽºéŽ»éŽ¼éŽ½éŽ¾éŽ¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�‹é�Œé��妗姊妫妞妤姒妲妯姗妾娅娆å§�å¨ˆå§£å§˜å§¹å¨Œå¨‰å¨²å¨´å¨‘å¨£å¨“å©€å©§å©Šå©•å¨¼å©¢å©µèƒ¬åªªåª›å©·å©ºåª¾å««åª²å«’å«”åª¸å« å«£å«±å«–å«¦å«˜å«œå¬‰å¬—å¬–å¬²å¬·å€å°•å°œåšå¥å³å‘å“å¢é©µé©·é©¸é©ºé©¿é©½éª€éª�骅骈骊éª�骒骓骖骘骛骜éª�éªŸéª éª¢éª£éª¥éª§çºŸçº¡çº£çº¥çº¨çº©ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������é�Žé��é��é�‘é�’é�“é�”é�•é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé���é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�é�®çºçº°çº¾ç»€ç»�绂绉绋绌ç»�ç»”ç»—ç»›ç» ç»¡ç»¨ç»«ç»®ç»¯ç»±ç»²ç¼�绶绺绻绾ç¼�缂缃缇缈缋缌ç¼�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬ç¼ç¼¯ç¼°ç¼±ç¼²ç¼³ç¼µå¹ºç•¿å·›ç”¾é‚•玎玑玮玢玟ç��ç�‚ç�‘玷玳ç�€ç�‰ç�ˆç�¥ç�™é¡¼ç�Šç�©ç�§ç�žçŽºç�²ç��ç�ªç‘›ç�¦ç�¥ç�¨ç�°ç�®ç�¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¿é‘€é‘�鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌é‘�鑎é‘�é‘�鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜é‘�é‘žé‘Ÿé‘ é‘¡é‘¢é‘£é‘¤é‘¥é‘¦é‘§é‘¨é‘©é‘ªé‘¬é‘鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀é’�钂钃钄钑钖钘铇é“�é““é“”é“šé“¦é“»é”œé” ç�›ç�šç‘�瑜瑗瑕瑙瑷ç‘瑾璜璎璀ç’�璇璋璞璨璩ç’�璧瓒璺韪韫韬æ�Œæ�“æ�žæ�ˆæ�©æž¥æž‡æ�ªæ�³æž˜æž§æ�µæž¨æžžæžæž‹æ�·æ�¼æŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æžµæŸšæž³æŸ�æ €æŸƒæž¸æŸ¢æ ŽæŸ�æŸ½æ ²æ ³æ¡ æ¡¡æ¡Žæ¡¢æ¡„æ¡¤æ¢ƒæ �桕桦æ¡�æ¡§æ¡€æ ¾æ¡Šæ¡‰æ ©æ¢µæ¢�æ¡´æ¡·æ¢“æ¡«æ£‚æ¥®æ£¼æ¤Ÿæ¤ æ£¹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é”§é”³é”½é•ƒé•ˆé•‹é••é•šé• é•®é•´é•µé•·é•¸é•¹é•ºé•»é•¼é•½é•¾é–€é–�閂閃閄閅閆閇閈閉閊開閌é–�é–Žé–�é–�閑閒間閔閕閖閗閘閙閚閛閜é–�é–žé–Ÿé– é–¡é–¢é–£é–¤é–¥é–¦é–§é–¨é–©é–ªï¿½é–«é–¬é–閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀é—�闂闃闄闅闆闇闈闉闊闋椤棰椋æ¤�楗棣æ¤�æ¥±æ¤¹æ¥ æ¥‚æ¥�æ¦„æ¥«æ¦€æ¦˜æ¥¸æ¤´æ§Œæ¦‡æ¦ˆæ§Žæ¦‰æ¥¦æ¥£æ¥¹æ¦›æ¦§æ¦»æ¦«æ¦æ§”榱æ§�æ§Šæ§Ÿæ¦•æ§ æ¦�æ§¿æ¨¯æ§æ¨—æ¨˜æ©¥æ§²æ©„æ¨¾æª æ©�橛樵檎橹樽樨橘橼檑æª�檩檗檫猷ç�’æ®�殂殇殄殒殓æ®�殚殛殡殪轫è½è½±è½²è½³è½µè½¶è½¸è½·è½¹è½ºè½¼è½¾è¾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������闌é—�é—Žé—�é—�闑闒闓闔闕闖闗闘闙闚闛關é—�é—žé—Ÿé— é—¡é—¢é—£é—¤é—¥é—¦é—§é—¬é—¿é˜‡é˜“é˜˜é˜›é˜žé˜ é˜£é˜¤é˜¥é˜¦é˜§é˜¨é˜©é˜«é˜¬é˜é˜¯é˜°é˜·é˜¸é˜¹é˜ºé˜¾é™�陃陊陎é™�陑陒陓陖陗�陘陙陚陜é™�é™žé™ é™£é™¥é™¦é™«é™é™®é™¯é™°é™±é™³é™¸é™¹é™ºé™»é™¼é™½é™¾é™¿éš€éš�隂隃隄隇隉隊è¾�辎è¾�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿ç”�甑甓攴旮旯旰昊昙æ�²æ˜ƒæ˜•昀炅曷æ˜�昴昱昶昵耆晟晔æ™�æ™�晖晡晗晷暄暌暧æš�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇èµ�赕赙觇觊觋觌觎è§�è§�觑牮犟ç‰�牦牯牾牿犄犋çŠ�çŠ�犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際éš�éšžéšŸéš éš¡éš¢éš£éš¤éš¥éš¦éš¨éš©éšªéš«éš¬éšéš®éš¯éš±éš²éš´éšµéš·éš¸éšºéš»éš¿é›‚雃雈雊雋é›�雑雓雔雖雗雘雙雚雛雜é›�雞雟雡離難雤雥雦雧雫�雬é›é›®é›°é›±é›²é›´é›µé›¸é›ºé›»é›¼é›½é›¿éœ‚霃霅霊霋霌éœ�霑霒霔霕霗霘霙霚霛éœ�éœŸéœ æ�¿æ“˜è€„毪毳毽毵毹氅氇氆æ°�氕氘氙氚氡氩氤氪氲攵敕敫ç‰�牒牖爰虢刖肟肜肓肼朊肽肱肫è‚肴肷胧胨胩胪胛胂胄胙èƒ�胗æœ�èƒ�胫胱胴èƒè„�è„Žèƒ²èƒ¼æœ•è„’è±šè„¶è„žè„¬è„˜è„²è…ˆè…Œè…“è…´è…™è…šè…±è… è…©è…¼è…½è…è…§å¡�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé��é�Žé��é��é�‘é�”é�•é�—é�˜é�šé�œé��é�Ÿé�£é�¤é�¦é�§é�¨é�ªé�«é�¬é�é�®é�¯é�°é�±ï¿½é�²é�µé�·é�¸é�¹é�ºé�»é�½é�¾é�¿éž€éž�鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎éž�éž�鞓鞕鞖鞗鞙鞚鞛鞜éž�è‡�è†¦æ¬¤æ¬·æ¬¹æƒæ†æ™é£‘飒飓飕飙飚殳彀毂觳æ–�齑斓於旆旄旃旌旎旒旖炀炜炖ç‚�炻烀炷炫炱烨烊ç„�ç„“ç„–ç„¯ç„±ç…³ç…œç…¨ç……ç…²ç…Šç…¸ç…ºç†˜ç†³ç†µç†¨ç† ç‡ ç‡”ç‡§ç‡¹çˆ�爨ç�¬ç„˜ç…¦ç†¹æˆ¾æˆ½æ‰ƒæ‰ˆæ‰‰ç¤»ç¥€ç¥†ç¥‰ç¥›ç¥œç¥“ç¥šç¥¢ç¥—ç¥ ç¥¯ç¥§ç¥ºç¦…ç¦Šç¦šç¦§ç¦³å¿‘å¿��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀éŸ�韂韃韄韅韆韇韈韉韊韋韌éŸ�韎éŸ�éŸ�韑韒韓韔韕韖韗韘韙韚韛韜éŸ�éŸžéŸŸéŸ éŸ¡éŸ¢éŸ£ï¿½éŸ¤éŸ¥éŸ¨éŸ®éŸ¯éŸ°éŸ±éŸ²éŸ´éŸ·éŸ¸éŸ¹éŸºéŸ»éŸ¼éŸ½éŸ¾éŸ¿é €é �é ‚é ƒé „é …é †é ‡é ˆé ‰é Šé ‹é Œé �é Žæ€¼æ��æ�šæ�§æ��æ�™æ�£æ‚«æ„†æ„�æ…�憩æ†�懋懑戆肀è�¿æ²“æ³¶æ·¼çŸ¶çŸ¸ç €ç ‰ç —ç ˜ç ‘æ–«ç ç œç �ç ¹ç ºç »ç Ÿç ¼ç ¥ç ¬ç £ç ©ç¡Žç¡ç¡–ç¡—ç ¦ç¡�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄çœ�盹眇眈眚眢眙çœçœ¦çœµçœ¸ç��ç�‘ç�‡ç�ƒç�šç�¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������é �é �é ‘é ’é “é ”é •é –é —é ˜é ™é šé ›é œé �é žé Ÿé é ¡é ¢é £é ¤é ¥é ¦é §é ¨é ©é ªé «é ¬é é ®é ¯é °é ±é ²é ³é ´é µé ¶é ·é ¸é ¹é ºé »é ¼é ½é ¾é ¿é¡€é¡�顂顃顄顅顆顇顈顉顊顋題é¡��顎é¡�é¡�顑顒顓顔顕顖顗願顙顚顛顜é¡�é¡žé¡Ÿé¡ é¡¡é¡¢é¡£é¡¤é¡¥é¡¦é¡§é¡¨é¡©é¡ªé¡«é¡¬é¡é¡®ç�¢ç�¥ç�¿çž�ç�½çž€çžŒçž‘çžŸçž çž°çžµçž½ç”ºç•€ç•Žç•‹ç•ˆç•›ç•²ç•¹ç–ƒç½˜ç½¡ç½Ÿè©ˆç½¨ç½´ç½±ç½¹ç¾�ç½¾ç›�ç›¥è ²é’…é’†é’‡é’‹é’Šé’Œé’�é’�é’�钔钗钕钚钛钜钣钤钫钪é’钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌é“�铎é“�é“‘é“’é“•é“–é“—é“™é“˜é“›é“žé“Ÿé“ é“¢é“¤é“¥é“§é“¨é“ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬é¢é¢®é¢¯é¢°é¢±é¢²é¢³é¢´é¢µé¢¶é¢·é¢¸é¢¹é¢ºé¢»é¢¼é¢½é¢¾é¢¿é£€é£�飂飃飄飅飆飇飈飉飊飋飌é£�é£�é£�飔飖飗飛飜é£�é£ é£¡é£¢é££é£¤ï¿½é£¥é£¦é£©é£ªé£«é£¬é£é£®é£¯é£°é£±é£²é£³é£´é£µé£¶é£·é£¸é£¹é£ºé£»é£¼é£½é£¾é£¿é¤€é¤�餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊é”�锎é”�锒锓锔锕锖锘锛é”�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎é•�镒镓镔镖镗镘镙镛镞镟é•�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕ç§ç§£ç§«ç¨†åµ‡ç¨ƒç¨‚稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������餈餉養餋餌餎é¤�餑餒餓餔餕餖餗餘餙餚餛餜é¤�é¤žé¤Ÿé¤ é¤¡é¤¢é¤£é¤¤é¤¥é¤¦é¤§é¤¨é¤©é¤ªé¤«é¤¬é¤é¤¯é¤°é¤±é¤²é¤³é¤´é¤µé¤¶é¤·é¤¸é¤¹é¤ºé¤»é¤¼é¤½é¤¾é¤¿é¥€é¥�饂饃饄饅饆饇饈饉�饊饋饌é¥�饎é¥�é¥�饑饒饓饖饗饘饙饚饛饜é¥�é¥žé¥Ÿé¥ é¥¡é¥¢é¥¤é¥¦é¥³é¥¸é¥¹é¥»é¥¾é¦‚é¦ƒé¦‰ç¨¹ç¨·ç©‘é»�é¦¥ç©°çšˆçšŽçš“çš™çš¤ç“žç“ ç”¬é¸ é¸¢é¸¨é¸©é¸ªé¸«é¸¬é¸²é¸±é¸¶é¸¸é¸·é¸¹é¸ºé¸¾é¹�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱é¹é¹³ç–’ç–”ç––ç– ç–�疬疣疳疴疸痄疱疰痃痂痖ç—�痣痨痦痤痫痧瘃痱痼痿ç˜�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������馌馎馚馛馜é¦�é¦žé¦Ÿé¦ é¦¡é¦¢é¦£é¦¤é¦¦é¦§é¦©é¦ªé¦«é¦¬é¦é¦®é¦¯é¦°é¦±é¦²é¦³é¦´é¦µé¦¶é¦·é¦¸é¦¹é¦ºé¦»é¦¼é¦½é¦¾é¦¿é§€é§�駂駃駄駅駆駇駈駉駊駋駌é§�é§Žé§�é§�駑駒駓駔駕駖駗駘�駙駚駛駜é§�é§žé§Ÿé§ é§¡é§¢é§£é§¤é§¥é§¦é§§é§¨é§©é§ªé§«é§¬é§é§®é§¯é§°é§±é§²é§³é§´é§µé§¶é§·é§¸é§¹ç˜›ç˜¼ç˜¢ç˜ 癀ç˜ç˜°ç˜¿ç˜µç™ƒç˜¾ç˜³ç™�ç™žç™”ç™œç™–ç™«ç™¯ç¿Šç«¦ç©¸ç©¹çª€çª†çªˆçª•çª¦çª çª¬çª¨çªçª³è¡¤è¡©è¡²è¡½è¡¿è¢‚袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶è¥�è¥¦è¥»ç–‹èƒ¥çš²çš´çŸœè€’è€”è€–è€œè€ è€¢è€¥è€¦è€§è€©è€¨è€±è€‹è€µè�ƒè�†è��è�’è�©è�±è¦ƒé¡¸é¢€é¢ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀é¨�騂騃騄騅騆騇騈騉騊騋騌é¨�騎é¨�é¨�騑騒験騔騕騖騗騘騙騚騛騜é¨�é¨žé¨Ÿé¨ é¨¡é¨¢é¨£é¨¤é¨¥é¨¦é¨§é¨¨é¨©é¨ªé¨«é¨¬é¨é¨®é¨¯é¨°é¨±é¨²é¨³é¨´é¨µé¨¶é¨·é¨¸ï¿½é¨¹é¨ºé¨»é¨¼é¨½é¨¾é¨¿é©€é©�驂驃驄驅驆驇驈驉驊驋驌é©�驎é©�é©�驑驒驓驔驕驖驗驘驙颉颌é¢�é¢�颔颚颛颞颟颡颢颥颦è™�虔虬虮虿虺虼虻蚨èš�蚋蚬èš�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉è›�蚴蛩蛱蛲è›è›³è›�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊èœ�蜉蜣蜻蜞蜥蜮蜚蜾è�ˆèœ´èœ±èœ©èœ·èœ¿èž‚蜢è�½è�¾è�»è� è�°è�Œè�®èž‹è�“è�£è�¼è�¤è�™è�¥èž“螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������驚驛驜é©�é©žé©Ÿé© é©¡é©¢é©£é©¤é©¥é©¦é©§é©¨é©©é©ªé©«é©²éªƒéª‰éª�骎骔骕骙骦骩骪骫骬éªéª®éª¯éª²éª³éª´éªµéª¹éª»éª½éª¾éª¿é«ƒé«„髆髇髈髉髊é«�髎é«�é«�髒體髕髖髗髙髚髛髜�é«�é«žé« é«¢é«£é«¤é«¥é«§é«¨é«©é«ªé«¬é«®é«°é«±é«²é«³é«´é«µé«¶é«·é«¸é«ºé«¼é«½é«¾é«¿é¬€é¬�鬂鬄鬅鬆蟆螈螅èžèž—èžƒèž«èŸ¥èž¬èžµèž³èŸ‹èŸ“èž½èŸ‘èŸ€èŸŠèŸ›èŸªèŸ èŸ®è –è “èŸ¾è Šè ›è ¡è ¹è ¼ç¼¶ç½‚ç½„ç½…èˆ�竺竽笈笃笄笕笊笫ç¬�ç‡ç¬¸ç¬ªç¬™ç¬®ç¬±ç¬ 笥笤笳笾笞ç˜çšç…çµçŒç�ç ç®ç»ç¢ç²ç±ç®�箦箧箸箬ç®�箨箅箪箜箢箫箴篑ç¯�篌ç¯�篚篥篦篪簌篾篼ç°�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌é¬�鬎é¬�鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜é¬�é¬žé¬ é¬¡é¬¢é¬¤é¬¥é¬¦é¬§é¬¨é¬©é¬ªé¬«é¬¬é¬é¬®é¬°é¬±é¬³é¬´é¬µé¬¶é¬·é¬¸é¬¹é¬ºé¬½é¬¾é¬¿é€é†éŠé‹éŒéŽé�é’é“é•é–é—é˜é™éšï¿½é›éœé�éžéŸé é¡é¢é£é¤é¥é¦é§é¨é©éªé«é¬éé®é¯é°é±é²é³é´éµé¶é·é¸é¹éºé»ç°Ÿç°ªç°¦ç°¸ç±�籀臾èˆ�舂舄臬衄舡舢舣èˆèˆ¯èˆ¨èˆ«èˆ¸èˆ»èˆ³èˆ´èˆ¾è‰„艉艋è‰�艚艟艨衾袅袈裘裟襞ç¾�羟羧羯羰羲籼敉粑ç²�粜粞粢粲粼粽ç³�糇糌ç³�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧èµè±‡è±‰é…Šé…�é…Žé…�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"����������������������������������������������������������������é¼é½é¾é¿é®€é®�鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌é®�鮎é®�é®�鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜é®�é®žé®Ÿé® é®¡é®¢é®£é®¤é®¥é®¦é®§é®¨é®©é®ªé®«é®¬é®é®®é®¯é®°é®±é®²é®³é®´é®µé®¶é®·é®¸é®¹é®ºï¿½é®»é®¼é®½é®¾é®¿é¯€é¯�鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌é¯�鯎é¯�é¯�鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅é†�é†�醑醢醣醪é†é†®é†¯é†µé†´é†ºè±•鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎è·�跛跆跬跷跸跣跹跻跤踉跽踔è¸�踟踬踮踣踯踺蹀踹踵踽踱蹉è¹�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅èº�躔èº�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"����������������������������������������������������������������鯜é¯�é¯žé¯Ÿé¯ é¯¡é¯¢é¯£é¯¤é¯¥é¯¦é¯§é¯¨é¯©é¯ªé¯«é¯¬é¯é¯®é¯¯é¯°é¯±é¯²é¯³é¯´é¯µé¯¶é¯·é¯¸é¯¹é¯ºé¯»é¯¼é¯½é¯¾é¯¿é°€é°�鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌é°�é°Žé°�é°�鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜é°�é°žé°Ÿé° é°¡é°¢é°£é°¤é°¥é°¦é°§é°¨é°©é°ªé°«é°¬é°é°®é°¯é°°é°±é°²é°³é°´é°µé°¶é°·é°¸é°¹é°ºé°»è§¥è§«è§¯è¨¾è¬¦é�“雩雳雯霆éœ�霈éœ�霎霪éœéœ°éœ¾é¾€é¾ƒé¾…龆龇龈龉龊龌黾鼋é¼�éš¹éš¼éš½é›Žé›’çž¿é› éŠŽéŠ®é‹ˆéŒ¾é�ªé�ŠéŽ�é�¾é‘«é±¿é²‚鲅鲆鲇鲈稣鲋鲎é²�é²‘é²’é²”é²•é²šé²›é²žé²Ÿé² é²¡é²¢é²£é²¥é²¦é²§é²¨é²©é²«é²é²®é²°é²±é²²é²³é²´é²µé²¶é²·é²ºé²»é²¼é²½é³„鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀é±�鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌é±�鱎é±�é±�鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜é±�é±žé±Ÿé± é±¡é±¢é±£é±¤é±¥é±¦é±§é±¨é±©é±ªé±«é±¬é±é±®é±¯é±°é±±é±²é±³é±´é±µé±¶é±·é±¸é±¹é±ºï¿½é±»é±½é±¾é²€é²ƒé²„鲉鲊鲌é²�鲓鲖鲗鲘鲙é²�鲪鲬鲯鲹鲾鲿鳀é³�é³‚é³ˆé³‰é³‘é³’é³šé³›é³ é³¡é³Œé³�鳎é³�é³�鳓鳔鳕鳗鳘鳙鳜é³�鳟鳢é�¼éž…鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼é«�髀髅髂髋髌髑é…éƒé‡é‰éˆé�é‘飨é¤�餮饕饔髟髡髦髯髫髻é«é«¹é¬ˆé¬�鬓鬟鬣麽麾縻麂麇麈麋麒é�–éº�麟黛黜é»�é» é»Ÿé»¢é»©é»§é»¥é»ªé»¯é¼¢é¼¬é¼¯é¼¹é¼·é¼½é¼¾é½„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬é³é³®é³¯é³°é³±é³²é³³é³´é³µé³¶é³·é³¸é³¹é³ºé³»é³¼é³½é³¾é³¿é´€é´�鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌é´�é´Žé´�é´�鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜é´�é´žé´Ÿé´ é´¡ï¿½é´¢é´£é´¤é´¥é´¦é´§é´¨é´©é´ªé´«é´¬é´é´®é´¯é´°é´±é´²é´³é´´é´µé´¶é´·é´¸é´¹é´ºé´»é´¼é´½é´¾é´¿éµ€éµ�鵂î‰�î‰�î‰�î‰�î‰�î‰žî‰Ÿî‰ î‰¡î‰¢î‰£î‰¤î‰¥î‰¦î‰§î‰¨î‰©î‰ªî‰«î‰¬î‰î‰®î‰¯î‰°î‰±î‰²î‰³î‰´î‰µî‰¶î‰·î‰¸î‰¹î‰ºî‰»î‰¼î‰½î‰¾î‰¿îŠ€îŠ�îŠ�îŠ�îŠ��\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌éµ�鵎éµ�éµ�鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜éµ�éµžéµŸéµ éµ¡éµ¢éµ£éµ¤éµ¥éµ¦éµ§éµ¨éµ©éµªéµ«éµ¬éµéµ®éµ¯éµ°éµ±éµ²éµ³éµ´éµµéµ¶éµ·éµ¸éµ¹éµºéµ»éµ¼éµ½éµ¾éµ¿é¶€é¶��鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌é¶�é¶Žé¶�é¶�鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜é¶�é¶žé¶Ÿé¶ é¶¡é¶¢îŠ’îŠ“îŠ”îŠ•îŠ–îŠ—îŠ˜îŠ™îŠšîŠ›îŠœîŠ�îŠžîŠŸîŠ îŠ¡îŠ¢îŠ£îŠ¤îŠ¥îŠ¦îŠ§îŠ¨îŠ©îŠªîŠ«îŠ¬îŠîŠ®îŠ¯îŠ°îŠ±îŠ²îŠ³îŠ´îŠµîŠ¶îŠ·îŠ¸îŠ¹îŠºîŠ»îŠ¼îŠ½îŠ¾îŠ¿î‹€î‹�î‹�î‹�î‹�î‹�î‹žî‹Ÿî‹ î‹¡î‹¢î‹£î‹¤î‹¥î‹¦î‹§î‹¨î‹©î‹ªî‹«î‹¬î‹î‹®î‹¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬é¶é¶®é¶¯é¶°é¶±é¶²é¶³é¶´é¶µé¶¶é¶·é¶¸é¶¹é¶ºé¶»é¶¼é¶½é¶¾é¶¿é·€é·�鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌é·�é·Žé·�é·�鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜é·�é·žé·Ÿé· é·¡ï¿½é·¢é·£é·¤é·¥é·¦é·§é·¨é·©é·ªé·«é·¬é·é·®é·¯é·°é·±é·²é·³é·´é·µé·¶é··é·¸é·¹é·ºé·»é·¼é·½é·¾é·¿é¸€é¸�鸂îŒ�îŒ�îŒ�îŒ�îŒ�îŒžîŒŸîŒ îŒ¡îŒ¢îŒ£îŒ¤îŒ¥îŒ¦îŒ§îŒ¨îŒ©îŒªîŒ«îŒ¬îŒîŒ®îŒ¯îŒ°îŒ±îŒ²îŒ³îŒ´îŒµîŒ¶îŒ·îŒ¸îŒ¹îŒºîŒ»îŒ¼îŒ½îŒ¾îŒ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌é¸�鸎é¸�é¸�鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜é¸�鸞鸤鸧鸮鸰鸴鸻鸼鹀é¹�é¹�鹒鹓鹔鹖鹙é¹�é¹Ÿé¹ é¹¡é¹¢é¹¥é¹®é¹¯é¹²é¹´é¹µé¹¶é¹·é¹¸é¹¹é¹ºé¹»é¹¼é¹½éº€ï¿½éº�麃麄麅麆麉麊麌éº�麎éº�éº�éº‘éº”éº•éº–éº—éº˜éº™éºšéº›éºœéºžéº éº¡éº¢éº£éº¤éº¥éº§éº¨éº©éºªî�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�îŽžîŽŸîŽ îŽ¡îŽ¢îŽ£îŽ¤îŽ¥îŽ¦îŽ§îŽ¨îŽ©îŽªîŽ«ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������麫麬éºéº®éº¯éº°éº±éº²éº³éºµéº¶éº·éº¹éººéº¼éº¿é»€é»�黂黃黅黆黇黈黊黋黌é»�黒黓黕黖黗黙黚點黡黣黤黦黨黫黬é»é»®é»°é»±é»²é»³é»´é»µé»¶é»·é»¸é»ºé»½é»¿é¼€é¼�鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌é¼�鼑鼒鼔鼕鼖鼘鼚鼛鼜é¼�鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫é¼é¼®é¼°é¼±îެîŽîŽ®îŽ¯îŽ°îŽ±îŽ²îŽ³îŽ´îŽµîŽ¶îŽ·îŽ¸îŽ¹îŽºîŽ»îŽ¼îŽ½îŽ¾îŽ¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀é½�齂齃齅齆齇齈齉齊齋齌é½�齎é½�齒齓齔齕齖齗齘齙齚齛齜é½�é½žé½Ÿé½ é½¡é½¢é½£é½¤é½¥é½¦é½§é½¨é½©é½ªé½«é½¬é½é½®é½¯é½°é½±é½²é½³é½´é½µé½¶é½·é½¸ï¿½é½¹é½ºé½»é½¼é½½é½¾é¾�龂é¾�龎é¾�é¾�龑龒龓龔龕龖龗龘龜é¾�龞龡龢龣龤龥郎凉秊裏隣î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�î‘žî‘Ÿî‘ î‘¡î‘¢î‘£î‘¤î‘¥î‘¦î‘§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"����������������������������������������������������������������兀ï¨�﨎ï¨�ï¨‘ï¨“ï¨”ï¨˜ï¨Ÿï¨ ï¨¡ï¨£ï¨¤ï¨§ï¨¨ï¨©âº�î –î —î ˜âº„ã‘³ã‘‡âºˆâº‹î žã–žã˜šã˜ŽâºŒâº—ã¥®ã¤˜î ¦ã§�㧟㩳ã§�î «î ¬ãŽã±®ã³ âº§î ±î ²âºªä�–ä…Ÿâº®äŒ·âº³âº¶âº·î »äŽ±äŽ¬âº»ä��䓖䙡䙌�䜣䜩ä�¼äž�â»Šä¥‡ä¥ºä¥½ä¦‚ä¦ƒä¦…ä¦†ä¦Ÿä¦›ä¦·ä¦¶î¡”î¡•ä²£ä²Ÿä² ä²¡ä±·ä²¢ä´“ä´”ä´•ä´–ä´—ä´˜ä´™ä¶®î¡¤î‘¨î‘©î‘ªî‘«î‘¬î‘î’�î’�î’Žî’�î’�î’�î’žî’Ÿî’ î’¡î’¢î’£î’¤î’¥î’¦î’§î’¨î’©î’ªî’«î’¬î’î“��\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57002] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à¤�ंःअआइईउऊऋऎà¤�à¤�à¤�ऒओऔऑकखगघङचछजà¤�ञटठडढणतथदधनऩपफबà¤à¤®à¤¯à¥Ÿà¤°à¤±à¤²à¤³à¤´à¤µà¤¶à¤·à¤¸à¤¹ï¿½à¤¾à¤¿à¥€à¥�ूृॆेैॅॊोौॉà¥�़।������०१२३४५६à¥à¥®à¥¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à¥�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������क़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ख़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ग़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ज़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ड़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à¥�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������फ़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॢ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॣ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऽ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[239] = \"����������������������������������������������������������������९९९९९९९९९९९९������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������॒������॰����������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57003] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à¦�ংঃঅআইঈউঊঋà¦�à¦�à¦�à¦�ওওঔঔকখগঘঙচছজà¦�ঞটঠডঢণতথদধননপফবà¦à¦®à¦¯à§Ÿà¦°à¦°à¦²à¦²à¦²à¦¬à¦¶à¦·à¦¸à¦¹ï¿½à¦¾à¦¿à§€à§�ূৃেেৈৈোোৌৌà§�়.������০১২৩৪৫৬à§à§®à§¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à§�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[239] = \"����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57004] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ��ஂஃஅஆஇஈஉஊ�à®�à®�à®�à®�ஒஓஔஔககககஙசசஜஜஞடடடடணததததநனபபபபமயயரறலளழவஷஷஸஹ�ாிீà¯�ூ�ெேைைொோௌௌà¯��.������0௧௨௩௪௫௬à¯à¯®à¯¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[239] = \"����������������������������������������������������������������௯௯௯௯௯௯௯௯௯௯௯௯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57005] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à°�ంఃఅఆఇఈఉఊఋఎà°�à°�à°�ఒఓఔఔకఖగఘఙచఛజà°�ఞటఠడఢణతథదధననపఫబà°à°®à°¯à°¯à°°à°±à°²à°³à°³à°µà°¶à°·à°¸à°¹ï¿½à°¾à°¿à±€à±�ూృెేైైొోౌౌà±��.������౦౧౨౩౪౫౬à±à±®à±¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[239] = \"����������������������������������������������������������������౯౯౯౯౯౯౯౯౯౯౯౯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57006] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à¦�ংঃঅআইঈউঊঋà¦�à¦�à¦�à¦�ওওঔঔকখগঘঙচছজà¦�ঞটঠডঢণতথদধননপফবà¦à¦®à¦¯à§Ÿà¦°à¦°à¦²à¦²à¦²à¦¬à¦¶à¦·à¦¸à¦¹ï¿½à¦¾à¦¿à§€à§�ূৃেেৈৈোোৌৌà§�়.������০১২৩৪৫৬à§à§®à§¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à§�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[239] = \"����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57007] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à¬�ଂଃଅଆଇଈଉଊଋà¬�à¬�à¬�à¬�à¬�ଓଔଔକଖଗଘଙଚଛଜà¬�ଞଟଠଡଢଣତଥଦଧନନପଫବà¬à¬®à¬¯àŸà¬°à¬°à¬²à¬³à¬³à¬¬à¬¶à¬·à¬¸à¬¹ï¿½à¬¾à¬¿à€à�à‚àƒà‡à‡àˆàˆà‹à‹àŒàŒà�଼.������à¦à§à¨à©àªà«à¬àà®à¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������àœï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଽ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[239] = \"����������������������������������������������������������������à¯à¯à¯à¯à¯à¯à¯à¯à¯à¯à¯à¯ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57008] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ��ಂಃಅಆಇಈಉಊಋಎà²�à²�à²�ಒಓಔಔಕಖಗಘಙಚಛಜà²�ಞಟಠಡಢಣತಥದಧನನಪಫಬà²à²®à²¯à²¯à²°à²±à²²à²³à²³à²µà²¶à²·à²¸à²¹ï¿½à²¾à²¿à³€à³�ೂೃೆೇೈೈೊೋೌೌà³��.������೦೧೨೩೪೫೬à³à³®à³¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ಌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೞ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[239] = \"����������������������������������������������������������������೯೯೯೯೯೯೯೯೯೯೯೯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57009] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ��ംഃഅആഇഈഉഊഋഎà´�à´�à´�ഒഓഔഔകഖഗഘങചഛജà´�ഞടഠഡഢണതഥദധനനപഫബà´à´®à´¯à´¯à´°à´±à´²à´³à´´à´µà´¶à´·à´¸à´¹ï¿½à´¾à´¿àµ€àµ�ൂൃെേൈൈൊോൌൌàµ��.������൦൧൨൩൪൫൬àµàµ®àµ¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ഌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[239] = \"����������������������������������������������������������������൯൯൯൯൯൯൯൯൯൯൯൯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57010] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�àª�ંઃઅઆઇઈઉઊઋàª�àª�àª�àª�àª�ઓઔઑકખગઘઙચછજàª�ઞટઠડઢણતથદધનનપફબàªàª®àª¯àª¯àª°àª°àª²àª³àª³àªµàª¶àª·àª¸àª¹ï¿½àª¾àª¿à«€à«�ૂૃેેૈૅોોૌૉà«�઼.������૦૧૨૩૪૫૬à«à«®à«¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à«�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ઽ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[239] = \"����������������������������������������������������������������૯૯૯૯૯૯૯૯૯૯૯૯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57011] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ��ਂ�ਅਆਇਈਉਊ�à¨�à¨�à¨�à¨�à¨�ਓਔਔਕਖਗਘਙਚਛਜà¨�ਞਟਠਡਢਣਤਥਦਧਨਨਪਫਬà¨à¨®à¨¯à¨¯à¨°à¨°à¨²à¨³à¨³à¨µà¨¶à¨¶à¨¸à¨¹ï¿½à¨¾à¨¿à©€à©�ੂ�ੇੇੈੈੋੋੌੌà©�਼.������੦੧੨੩੪੫੬à©à©®à©¯ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਖ਼����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਗ਼����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਜ਼����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ੜ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਫ਼����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[239] = \"����������������������������������������������������������������੯੯੯੯੯੯੯੯੯੯੯੯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[620] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäà ąçêëèïîćÄĄĘęłôöĆûùŚÖÜ¢Å�¥śƒŹŻóÓńŃźż¿âŒ�¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[895] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ČüéÄ�äĎŤÄ�ěĚĹÃ�ľǪÄÃ�ÉžŽôöÓůÚýÖÜŠĽÃ�ŘťáÃóúňŇŮÔšřŕŔ¼§«»░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â–  \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\t// eslint-disable-next-line no-undef\n\t\tif (module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = cptable; \n\t} (cptable$2));\n\treturn cptable$2.exports;\n}\n\n/*! cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */\nvar cputils = cputils$1.exports;\n\nvar hasRequiredCputils;\n\nfunction requireCputils () {\n\tif (hasRequiredCputils) return cputils$1.exports;\n\thasRequiredCputils = 1;\n\t(function (module) {\n\t\t/* vim: set ft=javascript: */\n\t\t/*jshint newcap: false */\n\t\t(function(root, factory) {\n\t\t if(typeof cptable === \"undefined\") {\n\t\t if(typeof commonjsRequire !== \"undefined\"){\n\t\t var cpt = requireCptable();\n\t\t if (module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = factory(cpt);\n\t\t else root.cptable = factory(cpt);\n\t\t } else throw new Error(\"cptable not found\");\n\t\t } else cptable = factory(cptable);\n\t\t /*eslint-enable */\n\t\t /*jshint ignore:end */\n\t\t}(cputils, function(cpt){\n\t\t /*global module, Buffer */\n\t\t var magic = {\n\t\t \"1200\":\"utf16le\",\n\t\t \"1201\":\"utf16be\",\n\t\t \"12000\":\"utf32le\",\n\t\t \"12001\":\"utf32be\",\n\t\t \"16969\":\"utf64le\",\n\t\t \"20127\":\"ascii\",\n\t\t \"65000\":\"utf7\",\n\t\t \"65001\":\"utf8\"\n\t\t };\n\n\t\t var sbcs_cache = [874,1250,1251,1252,1253,1254,1255,1256,10000];\n\t\t var dbcs_cache = [932,936,949,950];\n\t\t var magic_cache = [65001];\n\t\t var magic_decode = {};\n\t\t var magic_encode = {};\n\t\t var cpdcache = {};\n\t\t var cpecache = {};\n\n\t\t var sfcc = function sfcc(x) { return String.fromCharCode(x); };\n\t\t var cca = function cca(x) { return x.charCodeAt(0); };\n\n\t\t var has_buf = (typeof Buffer !== 'undefined');\n\t\t var Buffer_from = function(){};\n\t\t if(has_buf) {\n\t\t var nbfs = !Buffer.from;\n\t\t if(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\t Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t\t // $FlowIgnore\n\t\t if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); };\n\n\t\t var mdl = 1024, mdb = Buffer.allocUnsafe(mdl);\n\t\t var make_EE = function make_EE(E){\n\t\t var EE = Buffer.allocUnsafe(65536);\n\t\t for(var i = 0; i < 65536;++i) EE[i] = 0;\n\t\t var keys = Object.keys(E), len = keys.length;\n\t\t for(var ee = 0, e = keys[ee]; ee < len; ++ee) {\n\t\t if(!(e = keys[ee])) continue;\n\t\t EE[e.charCodeAt(0)] = E[e];\n\t\t }\n\t\t return EE;\n\t\t };\n\t\t var sbcs_encode = function make_sbcs_encode(cp) {\n\t\t var EE = make_EE(cpt[cp].enc);\n\t\t return function sbcs_e(data, ofmt) {\n\t\t var len = data.length;\n\t\t var out, i=0, j=0, D=0, w=0;\n\t\t if(typeof data === 'string') {\n\t\t out = Buffer.allocUnsafe(len);\n\t\t for(i = 0; i < len; ++i) out[i] = EE[data.charCodeAt(i)];\n\t\t } else if(Buffer.isBuffer(data)) {\n\t\t out = Buffer.allocUnsafe(2*len);\n\t\t j = 0;\n\t\t for(i = 0; i < len; ++i) {\n\t\t D = data[i];\n\t\t if(D < 128) out[j++] = EE[D];\n\t\t else if(D < 224) { out[j++] = EE[((D&31)<<6)+(data[i+1]&63)]; ++i; }\n\t\t else if(D < 240) { out[j++] = EE[((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63)]; i+=2; }\n\t\t else {\n\t\t w = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3;\n\t\t if(w < 65536) out[j++] = EE[w];\n\t\t else { w -= 65536; out[j++] = EE[0xD800 + ((w>>10)&1023)]; out[j++] = EE[0xDC00 + (w&1023)]; }\n\t\t }\n\t\t }\n\t\t out = out.slice(0,j);\n\t\t } else {\n\t\t out = Buffer.allocUnsafe(len);\n\t\t for(i = 0; i < len; ++i) out[i] = EE[data[i].charCodeAt(0)];\n\t\t }\n\t\t if(!ofmt || ofmt === 'buf') return out;\n\t\t if(ofmt !== 'arr') return out.toString('binary');\n\t\t return [].slice.call(out);\n\t\t };\n\t\t };\n\t\t var sbcs_decode = function make_sbcs_decode(cp) {\n\t\t var D = cpt[cp].dec;\n\t\t var DD = Buffer.allocUnsafe(131072), d=0, c=\"\";\n\t\t for(d=0;d<D.length;++d) {\n\t\t if(!(c=D[d])) continue;\n\t\t var w = c.charCodeAt(0);\n\t\t DD[2*d] = w&255; DD[2*d+1] = w>>8;\n\t\t }\n\t\t return function sbcs_d(data) {\n\t\t var len = data.length, i=0, j=0;\n\t\t if(2 * len > mdl) { mdl = 2 * len; mdb = Buffer.allocUnsafe(mdl); }\n\t\t if(Buffer.isBuffer(data)) {\n\t\t for(i = 0; i < len; i++) {\n\t\t j = 2*data[i];\n\t\t mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n\t\t }\n\t\t } else if(typeof data === \"string\") {\n\t\t for(i = 0; i < len; i++) {\n\t\t j = 2*data.charCodeAt(i);\n\t\t mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n\t\t }\n\t\t } else {\n\t\t for(i = 0; i < len; i++) {\n\t\t j = 2*data[i];\n\t\t mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n\t\t }\n\t\t }\n\t\t return mdb.slice(0, 2 * len).toString('ucs2');\n\t\t };\n\t\t };\n\t\t var dbcs_encode = function make_dbcs_encode(cp) {\n\t\t var E = cpt[cp].enc;\n\t\t var EE = Buffer.allocUnsafe(131072);\n\t\t for(var i = 0; i < 131072; ++i) EE[i] = 0;\n\t\t var keys = Object.keys(E);\n\t\t for(var ee = 0, e = keys[ee]; ee < keys.length; ++ee) {\n\t\t if(!(e = keys[ee])) continue;\n\t\t var f = e.charCodeAt(0);\n\t\t EE[2*f] = E[e] & 255; EE[2*f+1] = E[e]>>8;\n\t\t }\n\t\t return function dbcs_e(data, ofmt) {\n\t\t var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, jj=0, k=0, D=0;\n\t\t if(typeof data === 'string') {\n\t\t for(i = k = 0; i < len; ++i) {\n\t\t j = data.charCodeAt(i)*2;\n\t\t out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n\t\t }\n\t\t out = out.slice(0,k);\n\t\t } else if(Buffer.isBuffer(data)) {\n\t\t for(i = k = 0; i < len; ++i) {\n\t\t D = data[i];\n\t\t if(D < 128) j = D;\n\t\t else if(D < 224) { j = ((D&31)<<6)+(data[i+1]&63); ++i; }\n\t\t else if(D < 240) { j = ((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63); i+=2; }\n\t\t else { j = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; }\n\t\t if(j<65536) { j*=2; out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; }\n\t\t else { jj = j-65536;\n\t\t j=2*(0xD800 + ((jj>>10)&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n\t\t j=2*(0xDC00 + (jj&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n\t\t }\n\t\t }\n\t\t out = out.slice(0,k);\n\t\t } else {\n\t\t for(i = k = 0; i < len; i++) {\n\t\t j = data[i].charCodeAt(0)*2;\n\t\t out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n\t\t }\n\t\t }\n\t\t if(!ofmt || ofmt === 'buf') return out;\n\t\t if(ofmt !== 'arr') return out.toString('binary');\n\t\t return [].slice.call(out);\n\t\t };\n\t\t };\n\t\t var dbcs_decode = function make_dbcs_decode(cp) {\n\t\t var D = cpt[cp].dec;\n\t\t var DD = Buffer.allocUnsafe(131072), d=0, c, w=0, j=0, i=0;\n\t\t for(i = 0; i < 65536; ++i) { DD[2*i] = 0xFF; DD[2*i+1] = 0xFD;}\n\t\t for(d = 0; d < D.length; ++d) {\n\t\t if(!(c=D[d])) continue;\n\t\t w = c.charCodeAt(0);\n\t\t j = 2*d;\n\t\t DD[j] = w&255; DD[j+1] = w>>8;\n\t\t }\n\t\t return function dbcs_d(data) {\n\t\t var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, k=0;\n\t\t if(Buffer.isBuffer(data)) {\n\t\t for(i = 0; i < len; i++) {\n\t\t j = 2*data[i];\n\t\t if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\n\t\t out[k++] = DD[j]; out[k++] = DD[j+1];\n\t\t }\n\t\t } else if(typeof data === \"string\") {\n\t\t for(i = 0; i < len; i++) {\n\t\t j = 2*data.charCodeAt(i);\n\t\t if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data.charCodeAt(i)<<8)+data.charCodeAt(i+1)); ++i; }\n\t\t out[k++] = DD[j]; out[k++] = DD[j+1];\n\t\t }\n\t\t } else {\n\t\t for(i = 0; i < len; i++) {\n\t\t j = 2*data[i];\n\t\t if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\n\t\t out[k++] = DD[j]; out[k++] = DD[j+1];\n\t\t }\n\t\t }\n\t\t return out.slice(0,k).toString('ucs2');\n\t\t };\n\t\t };\n\t\t magic_decode[65001] = function utf8_d(data) {\n\t\t if(typeof data === \"string\") return utf8_d(data.split(\"\").map(cca));\n\t\t var len = data.length, w = 0, ww = 0;\n\t\t if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\n\t\t var i = 0;\n\t\t if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\n\t\t for(var j = 1, k = 0, D = 0; i < len; i+=j) {\n\t\t j = 1; D = data[i];\n\t\t if(D < 128) w = D;\n\t\t else if(D < 224) { w=(D&31)*64+(data[i+1]&63); j=2; }\n\t\t else if(D < 240) { w=((D&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\n\t\t else { w=(D&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\n\t\t if(w < 65536) { mdb[k++] = w&255; mdb[k++] = w>>8; }\n\t\t else {\n\t\t w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t mdb[k++] = ww&255; mdb[k++] = ww>>>8; mdb[k++] = w&255; mdb[k++] = (w>>>8)&255;\n\t\t }\n\t\t }\n\t\t return mdb.slice(0,k).toString('ucs2');\n\t\t };\n\t\t magic_encode[65001] = function utf8_e(data, ofmt) {\n\t\t if(has_buf && Buffer.isBuffer(data)) {\n\t\t if(!ofmt || ofmt === 'buf') return data;\n\t\t if(ofmt !== 'arr') return data.toString('binary');\n\t\t return [].slice.call(data);\n\t\t }\n\t\t var len = data.length, w = 0, ww = 0, j = 0;\n\t\t var direct = typeof data === \"string\";\n\t\t if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\n\t\t for(var i = 0; i < len; ++i) {\n\t\t w = direct ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t if(w <= 0x007F) mdb[j++] = w;\n\t\t else if(w <= 0x07FF) {\n\t\t mdb[j++] = 192 + (w >> 6);\n\t\t mdb[j++] = 128 + (w&63);\n\t\t } else if(w >= 0xD800 && w <= 0xDFFF) {\n\t\t w -= 0xD800; ++i;\n\t\t ww = (direct ? data.charCodeAt(i) : data[i].charCodeAt(0)) - 0xDC00 + (w << 10);\n\t\t mdb[j++] = 240 + ((ww>>>18) & 0x07);\n\t\t mdb[j++] = 144 + ((ww>>>12) & 0x3F);\n\t\t mdb[j++] = 128 + ((ww>>>6) & 0x3F);\n\t\t mdb[j++] = 128 + (ww & 0x3F);\n\t\t } else {\n\t\t mdb[j++] = 224 + (w >> 12);\n\t\t mdb[j++] = 128 + ((w >> 6)&63);\n\t\t mdb[j++] = 128 + (w&63);\n\t\t }\n\t\t }\n\t\t if(!ofmt || ofmt === 'buf') return mdb.slice(0,j);\n\t\t if(ofmt !== 'arr') return mdb.slice(0,j).toString('binary');\n\t\t return [].slice.call(mdb, 0, j);\n\t\t };\n\t\t }\n\n\t\t var encache = function encache() {\n\t\t if(has_buf) {\n\t\t if(cpdcache[sbcs_cache[0]]) return;\n\t\t var i=0, s=0;\n\t\t for(i = 0; i < sbcs_cache.length; ++i) {\n\t\t s = sbcs_cache[i];\n\t\t if(cpt[s]) {\n\t\t cpdcache[s] = sbcs_decode(s);\n\t\t cpecache[s] = sbcs_encode(s);\n\t\t }\n\t\t }\n\t\t for(i = 0; i < dbcs_cache.length; ++i) {\n\t\t s = dbcs_cache[i];\n\t\t if(cpt[s]) {\n\t\t cpdcache[s] = dbcs_decode(s);\n\t\t cpecache[s] = dbcs_encode(s);\n\t\t }\n\t\t }\n\t\t for(i = 0; i < magic_cache.length; ++i) {\n\t\t s = magic_cache[i];\n\t\t if(magic_decode[s]) cpdcache[s] = magic_decode[s];\n\t\t if(magic_encode[s]) cpecache[s] = magic_encode[s];\n\t\t }\n\t\t }\n\t\t };\n\t\t var null_enc = function(data, ofmt) { return \"\"; };\n\t\t var cp_decache = function cp_decache(cp) { delete cpdcache[cp]; delete cpecache[cp]; };\n\t\t var decache = function decache() {\n\t\t if(has_buf) {\n\t\t if(!cpdcache[sbcs_cache[0]]) return;\n\t\t sbcs_cache.forEach(cp_decache);\n\t\t dbcs_cache.forEach(cp_decache);\n\t\t magic_cache.forEach(cp_decache);\n\t\t }\n\t\t last_enc = null_enc; last_cp = 0;\n\t\t };\n\t\t var cache = {\n\t\t encache: encache,\n\t\t decache: decache,\n\t\t sbcs: sbcs_cache,\n\t\t dbcs: dbcs_cache\n\t\t };\n\n\t\t encache();\n\n\t\t var BM = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\t\t var SetD = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?\";\n\t\t var last_enc = null_enc, last_cp = 0;\n\t\t var encode = function encode(cp, data, ofmt) {\n\t\t if(cp === last_cp && last_enc) { return last_enc(data, ofmt); }\n\t\t if(cpecache[cp]) { last_enc = cpecache[last_cp=cp]; return last_enc(data, ofmt); }\n\t\t if(has_buf && Buffer.isBuffer(data)) data = data.toString('utf8');\n\t\t var len = data.length;\n\t\t var out = has_buf ? Buffer.allocUnsafe(4*len) : [], w=0, i=0, j = 0, ww=0;\n\t\t var C = cpt[cp], E, M = \"\";\n\t\t var isstr = typeof data === 'string';\n\t\t if(C && (E=C.enc)) for(i = 0; i < len; ++i, ++j) {\n\t\t w = E[isstr? data.charAt(i) : data[i]];\n\t\t if(w > 255) {\n\t\t out[j] = w>>8;\n\t\t out[++j] = w&255;\n\t\t } else out[j] = w&255;\n\t\t }\n\t\t else if((M=magic[cp])) switch(M) {\n\t\t case \"utf8\":\n\t\t if(has_buf && isstr) { out = Buffer_from(data, M); j = out.length; break; }\n\t\t for(i = 0; i < len; ++i, ++j) {\n\t\t w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t if(w <= 0x007F) out[j] = w;\n\t\t else if(w <= 0x07FF) {\n\t\t out[j] = 192 + (w >> 6);\n\t\t out[++j] = 128 + (w&63);\n\t\t } else if(w >= 0xD800 && w <= 0xDFFF) {\n\t\t w -= 0xD800;\n\t\t ww = (isstr ? data.charCodeAt(++i) : data[++i].charCodeAt(0)) - 0xDC00 + (w << 10);\n\t\t out[j] = 240 + ((ww>>>18) & 0x07);\n\t\t out[++j] = 144 + ((ww>>>12) & 0x3F);\n\t\t out[++j] = 128 + ((ww>>>6) & 0x3F);\n\t\t out[++j] = 128 + (ww & 0x3F);\n\t\t } else {\n\t\t out[j] = 224 + (w >> 12);\n\t\t out[++j] = 128 + ((w >> 6)&63);\n\t\t out[++j] = 128 + (w&63);\n\t\t }\n\t\t }\n\t\t break;\n\t\t case \"ascii\":\n\t\t if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\n\t\t for(i = 0; i < len; ++i, ++j) {\n\t\t w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t if(w <= 0x007F) out[j] = w;\n\t\t else throw new Error(\"bad ascii \" + w);\n\t\t }\n\t\t break;\n\t\t case \"utf16le\":\n\t\t if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\n\t\t for(i = 0; i < len; ++i) {\n\t\t w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t out[j++] = w&255;\n\t\t out[j++] = w>>8;\n\t\t }\n\t\t break;\n\t\t case \"utf16be\":\n\t\t for(i = 0; i < len; ++i) {\n\t\t w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t out[j++] = w>>8;\n\t\t out[j++] = w&255;\n\t\t }\n\t\t break;\n\t\t case \"utf32le\":\n\t\t for(i = 0; i < len; ++i) {\n\t\t w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\n\t\t out[j++] = w&255; w >>= 8;\n\t\t out[j++] = w&255; w >>= 8;\n\t\t out[j++] = w&255; w >>= 8;\n\t\t out[j++] = w&255;\n\t\t }\n\t\t break;\n\t\t case \"utf32be\":\n\t\t for(i = 0; i < len; ++i) {\n\t\t w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\n\t\t out[j+3] = w&255; w >>= 8;\n\t\t out[j+2] = w&255; w >>= 8;\n\t\t out[j+1] = w&255; w >>= 8;\n\t\t out[j] = w&255;\n\t\t j+=4;\n\t\t }\n\t\t break;\n\t\t case \"utf7\":\n\t\t for(i = 0; i < len; i++) {\n\t\t var c = isstr ? data.charAt(i) : data[i].charAt(0);\n\t\t if(c === \"+\") { out[j++] = 0x2b; out[j++] = 0x2d; continue; }\n\t\t if(SetD.indexOf(c) > -1) { out[j++] = c.charCodeAt(0); continue; }\n\t\t var tt = encode(1201, c);\n\t\t out[j++] = 0x2b;\n\t\t out[j++] = BM.charCodeAt(tt[0]>>2);\n\t\t out[j++] = BM.charCodeAt(((tt[0]&0x03)<<4) + ((tt[1]||0)>>4));\n\t\t out[j++] = BM.charCodeAt(((tt[1]&0x0F)<<2) + ((tt[2]||0)>>6));\n\t\t out[j++] = 0x2d;\n\t\t }\n\t\t break;\n\t\t default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\n\t\t }\n\t\t else throw new Error(\"Unrecognized CP: \" + cp);\n\t\t out = out.slice(0,j);\n\t\t if(!has_buf) return (ofmt == 'str') ? (out).map(sfcc).join(\"\") : out;\n\t\t if(!ofmt || ofmt === 'buf') return out;\n\t\t if(ofmt !== 'arr') return out.toString('binary');\n\t\t return [].slice.call(out);\n\t\t };\n\t\t var decode = function decode(cp, data) {\n\t\t var F; if((F=cpdcache[cp])) return F(data);\n\t\t if(typeof data === \"string\") return decode(cp, data.split(\"\").map(cca));\n\t\t var len = data.length, out = new Array(len), s=\"\", w=0, i=0, j=1, k=0, ww=0;\n\t\t var C = cpt[cp], D, M=\"\";\n\t\t if(C && (D=C.dec)) {\n\t\t for(i = 0; i < len; i+=j) {\n\t\t j = 2;\n\t\t s = D[(data[i]<<8)+ data[i+1]];\n\t\t if(!s) {\n\t\t j = 1;\n\t\t s = D[data[i]];\n\t\t }\n\t\t if(!s) throw new Error('Unrecognized code: ' + data[i] + ' ' + data[i+j-1] + ' ' + i + ' ' + j + ' ' + D[data[i]]);\n\t\t out[k++] = s;\n\t\t }\n\t\t }\n\t\t else if((M=magic[cp])) switch(M) {\n\t\t case \"utf8\":\n\t\t if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\n\t\t for(; i < len; i+=j) {\n\t\t j = 1;\n\t\t if(data[i] < 128) w = data[i];\n\t\t else if(data[i] < 224) { w=(data[i]&31)*64+(data[i+1]&63); j=2; }\n\t\t else if(data[i] < 240) { w=((data[i]&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\n\t\t else { w=(data[i]&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\n\t\t if(w < 65536) { out[k++] = String.fromCharCode(w); }\n\t\t else {\n\t\t w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t out[k++] = String.fromCharCode(ww); out[k++] = String.fromCharCode(w);\n\t\t }\n\t\t }\n\t\t break;\n\t\t case \"ascii\":\n\t\t if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\n\t\t for(i = 0; i < len; i++) out[i] = String.fromCharCode(data[i]);\n\t\t k = len; break;\n\t\t case \"utf16le\":\n\t\t if(len >= 2 && data[0] == 0xFF) if(data[1] == 0xFE) i = 2;\n\t\t if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\n\t\t j = 2;\n\t\t for(; i+1 < len; i+=j) {\n\t\t out[k++] = String.fromCharCode((data[i+1]<<8) + data[i]);\n\t\t }\n\t\t break;\n\t\t case \"utf16be\":\n\t\t if(len >= 2 && data[0] == 0xFE) if(data[1] == 0xFF) i = 2;\n\t\t j = 2;\n\t\t for(; i+1 < len; i+=j) {\n\t\t out[k++] = String.fromCharCode((data[i]<<8) + data[i+1]);\n\t\t }\n\t\t break;\n\t\t case \"utf32le\":\n\t\t if(len >= 4 && data[0] == 0xFF) if(data[1] == 0xFE && data[2] === 0 && data[3] === 0) i = 4;\n\t\t j = 4;\n\t\t for(; i < len; i+=j) {\n\t\t w = (data[i+3]<<24) + (data[i+2]<<16) + (data[i+1]<<8) + (data[i]);\n\t\t if(w > 0xFFFF) {\n\t\t w -= 0x10000;\n\t\t out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\n\t\t out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\n\t\t }\n\t\t else out[k++] = String.fromCharCode(w);\n\t\t }\n\t\t break;\n\t\t case \"utf32be\":\n\t\t if(len >= 4 && data[3] == 0xFF) if(data[2] == 0xFE && data[1] === 0 && data[0] === 0) i = 4;\n\t\t j = 4;\n\t\t for(; i < len; i+=j) {\n\t\t w = (data[i]<<24) + (data[i+1]<<16) + (data[i+2]<<8) + (data[i+3]);\n\t\t if(w > 0xFFFF) {\n\t\t w -= 0x10000;\n\t\t out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\n\t\t out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\n\t\t }\n\t\t else out[k++] = String.fromCharCode(w);\n\t\t }\n\t\t break;\n\t\t case \"utf7\":\n\t\t if(len >= 4 && data[0] == 0x2B && data[1] == 0x2F && data[2] == 0x76) {\n\t\t if(len >= 5 && data[3] == 0x38 && data[4] == 0x2D) i = 5;\n\t\t else if(data[3] == 0x38 || data[3] == 0x39 || data[3] == 0x2B || data[3] == 0x2F) i = 4;\n\t\t }\n\t\t for(; i < len; i+=j) {\n\t\t if(data[i] !== 0x2b) { j=1; out[k++] = String.fromCharCode(data[i]); continue; }\n\t\t j=1;\n\t\t if(data[i+1] === 0x2d) { j = 2; out[k++] = \"+\"; continue; }\n\t\t // eslint-disable-next-line no-useless-escape\n\t\t while(String.fromCharCode(data[i+j]).match(/[A-Za-z0-9+\\/]/)) j++;\n\t\t var dash = 0;\n\t\t if(data[i+j] === 0x2d) { ++j; dash=1; }\n\t\t var tt = [];\n\t\t var o64 = \"\";\n\t\t var c1=0, c2=0, c3=0;\n\t\t var e1=0, e2=0, e3=0, e4=0;\n\t\t for(var l = 1; l < j - dash;) {\n\t\t e1 = BM.indexOf(String.fromCharCode(data[i+l++]));\n\t\t e2 = BM.indexOf(String.fromCharCode(data[i+l++]));\n\t\t c1 = e1 << 2 | e2 >> 4;\n\t\t tt.push(c1);\n\t\t e3 = BM.indexOf(String.fromCharCode(data[i+l++]));\n\t\t if(e3 === -1) break;\n\t\t c2 = (e2 & 15) << 4 | e3 >> 2;\n\t\t tt.push(c2);\n\t\t e4 = BM.indexOf(String.fromCharCode(data[i+l++]));\n\t\t if(e4 === -1) break;\n\t\t c3 = (e3 & 3) << 6 | e4;\n\t\t if(e4 < 64) tt.push(c3);\n\t\t }\n\t\t o64 = decode(1201, tt);\n\t\t for(l = 0; l < o64.length; ++l) out[k++] = o64.charAt(l);\n\t\t }\n\t\t break;\n\t\t default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\n\t\t }\n\t\t else throw new Error(\"Unrecognized CP: \" + cp);\n\t\t return out.slice(0,k).join(\"\");\n\t\t };\n\t\t var hascp = function hascp(cp) { return !!(cpt[cp] || magic[cp]); };\n\t\t cpt.utils = { decode: decode, encode: encode, hascp: hascp, magic: magic, cache:cache };\n\t\t return cpt;\n\t\t})); \n\t} (cputils$1));\n\treturn cputils$1.exports;\n}\n\nvar cputilsExports = requireCputils();\nvar cptable$1 = /*@__PURE__*/getDefaultExportFromCjs(cputilsExports);\n\nvar papaparse$1 = {exports: {}};\n\n/*@license\n\tPapa Parse\n\tv4.4.0\n\thttps://github.com/mholt/PapaParse\n\tLicense: MIT\n*/\nvar papaparse = papaparse$1.exports;\n\nvar hasRequiredPapaparse;\n\nfunction requirePapaparse () {\n\tif (hasRequiredPapaparse) return papaparse$1.exports;\n\thasRequiredPapaparse = 1;\n\t(function (module, exports$1) {\n\t\t(function(root, factory)\n\t\t{\n\t\t\t/* globals define */\n\t\t\t{\n\t\t\t\t// Node. Does not work with strict CommonJS, but\n\t\t\t\t// only CommonJS-like environments that support module.exports,\n\t\t\t\t// like Node.\n\t\t\t\tmodule.exports = factory();\n\t\t\t}\n\t\t}(papaparse, function()\n\t\t{\n\n\t\t\tvar global = (function() {\n\t\t\t\t// alternative method, similar to `Function('return this')()`\n\t\t\t\t// but without using `eval` (which is disabled when\n\t\t\t\t// using Content Security Policy).\n\n\t\t\t\tif (typeof self !== 'undefined') { return self; }\n\t\t\t\tif (typeof window !== 'undefined') { return window; }\n\t\t\t\tif (typeof global !== 'undefined') { return global; }\n\n\t\t\t\t// When running tests none of the above have been defined\n\t\t\t\treturn {};\n\t\t\t})();\n\n\n\t\t\tvar IS_WORKER = !global.document && !!global.postMessage,\n\t\t\t\tIS_PAPA_WORKER = IS_WORKER && /(\\?|&)papaworker(=|&|$)/.test(global.location.search),\n\t\t\t\tLOADED_SYNC = false, AUTO_SCRIPT_PATH;\n\t\t\tvar workers = {}, workerIdCounter = 0;\n\n\t\t\tvar Papa = {};\n\n\t\t\tPapa.parse = CsvToJson;\n\t\t\tPapa.unparse = JsonToCsv;\n\n\t\t\tPapa.RECORD_SEP = String.fromCharCode(30);\n\t\t\tPapa.UNIT_SEP = String.fromCharCode(31);\n\t\t\tPapa.BYTE_ORDER_MARK = '\\ufeff';\n\t\t\tPapa.BAD_DELIMITERS = ['\\r', '\\n', '\"', Papa.BYTE_ORDER_MARK];\n\t\t\tPapa.WORKERS_SUPPORTED = !IS_WORKER && !!global.Worker;\n\t\t\tPapa.SCRIPT_PATH = null;\t// Must be set by your code if you use workers and this lib is loaded asynchronously\n\n\t\t\t// Configurable chunk sizes for local and remote files, respectively\n\t\t\tPapa.LocalChunkSize = 1024 * 1024 * 10;\t// 10 MB\n\t\t\tPapa.RemoteChunkSize = 1024 * 1024 * 5;\t// 5 MB\n\t\t\tPapa.DefaultDelimiter = ',';\t\t\t// Used if not specified and detection fails\n\n\t\t\t// Exposed for testing and development only\n\t\t\tPapa.Parser = Parser;\n\t\t\tPapa.ParserHandle = ParserHandle;\n\t\t\tPapa.NetworkStreamer = NetworkStreamer;\n\t\t\tPapa.FileStreamer = FileStreamer;\n\t\t\tPapa.StringStreamer = StringStreamer;\n\t\t\tPapa.ReadableStreamStreamer = ReadableStreamStreamer;\n\n\t\t\tif (global.jQuery)\n\t\t\t{\n\t\t\t\tvar $ = global.jQuery;\n\t\t\t\t$.fn.parse = function(options)\n\t\t\t\t{\n\t\t\t\t\tvar config = options.config || {};\n\t\t\t\t\tvar queue = [];\n\n\t\t\t\t\tthis.each(function(idx)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar supported = $(this).prop('tagName').toUpperCase() === 'INPUT'\n\t\t\t\t\t\t\t\t\t\t&& $(this).attr('type').toLowerCase() === 'file'\n\t\t\t\t\t\t\t\t\t\t&& global.FileReader;\n\n\t\t\t\t\t\tif (!supported || !this.files || this.files.length === 0)\n\t\t\t\t\t\t\treturn true;\t// continue to next input element\n\n\t\t\t\t\t\tfor (var i = 0; i < this.files.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tqueue.push({\n\t\t\t\t\t\t\t\tfile: this.files[i],\n\t\t\t\t\t\t\t\tinputElem: this,\n\t\t\t\t\t\t\t\tinstanceConfig: $.extend({}, config)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tparseNextFile();\t// begin parsing\n\t\t\t\t\treturn this;\t\t// maintains chainability\n\n\n\t\t\t\t\tfunction parseNextFile()\n\t\t\t\t\t{\n\t\t\t\t\t\tif (queue.length === 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (isFunction(options.complete))\n\t\t\t\t\t\t\t\toptions.complete();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar f = queue[0];\n\n\t\t\t\t\t\tif (isFunction(options.before))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar returned = options.before(f.file, f.inputElem);\n\n\t\t\t\t\t\t\tif (typeof returned === 'object')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (returned.action === 'abort')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\terror('AbortError', f.file, f.inputElem, returned.reason);\n\t\t\t\t\t\t\t\t\treturn;\t// Aborts all queued files immediately\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (returned.action === 'skip')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfileComplete();\t// parse the next file in the queue, if any\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (typeof returned.config === 'object')\n\t\t\t\t\t\t\t\t\tf.instanceConfig = $.extend(f.instanceConfig, returned.config);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (returned === 'skip')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfileComplete();\t// parse the next file in the queue, if any\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Wrap up the user's complete callback, if any, so that ours also gets executed\n\t\t\t\t\t\tvar userCompleteFunc = f.instanceConfig.complete;\n\t\t\t\t\t\tf.instanceConfig.complete = function(results)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (isFunction(userCompleteFunc))\n\t\t\t\t\t\t\t\tuserCompleteFunc(results, f.file, f.inputElem);\n\t\t\t\t\t\t\tfileComplete();\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tPapa.parse(f.file, f.instanceConfig);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction error(name, file, elem, reason)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (isFunction(options.error))\n\t\t\t\t\t\t\toptions.error({name: name}, file, elem, reason);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction fileComplete()\n\t\t\t\t\t{\n\t\t\t\t\t\tqueue.splice(0, 1);\n\t\t\t\t\t\tparseNextFile();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\n\t\t\tif (IS_PAPA_WORKER)\n\t\t\t{\n\t\t\t\tglobal.onmessage = workerThreadReceivedMessage;\n\t\t\t}\n\t\t\telse if (Papa.WORKERS_SUPPORTED)\n\t\t\t{\n\t\t\t\tAUTO_SCRIPT_PATH = getScriptPath();\n\n\t\t\t\t// Check if the script was loaded synchronously\n\t\t\t\tif (!document.body)\n\t\t\t\t{\n\t\t\t\t\t// Body doesn't exist yet, must be synchronous\n\t\t\t\t\tLOADED_SYNC = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdocument.addEventListener('DOMContentLoaded', function() {\n\t\t\t\t\t\tLOADED_SYNC = true;\n\t\t\t\t\t}, true);\n\t\t\t\t}\n\t\t\t}\n\n\n\n\n\t\t\tfunction CsvToJson(_input, _config)\n\t\t\t{\n\t\t\t\t_config = _config || {};\n\t\t\t\tvar dynamicTyping = _config.dynamicTyping || false;\n\t\t\t\tif (isFunction(dynamicTyping)) {\n\t\t\t\t\t_config.dynamicTypingFunction = dynamicTyping;\n\t\t\t\t\t// Will be filled on first row call\n\t\t\t\t\tdynamicTyping = {};\n\t\t\t\t}\n\t\t\t\t_config.dynamicTyping = dynamicTyping;\n\n\t\t\t\tif (_config.worker && Papa.WORKERS_SUPPORTED)\n\t\t\t\t{\n\t\t\t\t\tvar w = newWorker();\n\n\t\t\t\t\tw.userStep = _config.step;\n\t\t\t\t\tw.userChunk = _config.chunk;\n\t\t\t\t\tw.userComplete = _config.complete;\n\t\t\t\t\tw.userError = _config.error;\n\n\t\t\t\t\t_config.step = isFunction(_config.step);\n\t\t\t\t\t_config.chunk = isFunction(_config.chunk);\n\t\t\t\t\t_config.complete = isFunction(_config.complete);\n\t\t\t\t\t_config.error = isFunction(_config.error);\n\t\t\t\t\tdelete _config.worker;\t// prevent infinite loop\n\n\t\t\t\t\tw.postMessage({\n\t\t\t\t\t\tinput: _input,\n\t\t\t\t\t\tconfig: _config,\n\t\t\t\t\t\tworkerId: w.id\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar streamer = null;\n\t\t\t\tif (typeof _input === 'string')\n\t\t\t\t{\n\t\t\t\t\tif (_config.download)\n\t\t\t\t\t\tstreamer = new NetworkStreamer(_config);\n\t\t\t\t\telse\n\t\t\t\t\t\tstreamer = new StringStreamer(_config);\n\t\t\t\t}\n\t\t\t\telse if (_input.readable === true && isFunction(_input.read) && isFunction(_input.on))\n\t\t\t\t{\n\t\t\t\t\tstreamer = new ReadableStreamStreamer(_config);\n\t\t\t\t}\n\t\t\t\telse if ((global.File && _input instanceof File) || _input instanceof Object)\t// ...Safari. (see issue #106)\n\t\t\t\t\tstreamer = new FileStreamer(_config);\n\n\t\t\t\treturn streamer.stream(_input);\n\t\t\t}\n\n\n\n\n\n\n\t\t\tfunction JsonToCsv(_input, _config)\n\t\t\t{\n\t\t\t\t// Default configuration\n\n\t\t\t\t/** whether to surround every datum with quotes */\n\t\t\t\tvar _quotes = false;\n\n\t\t\t\t/** whether to write headers */\n\t\t\t\tvar _writeHeader = true;\n\n\t\t\t\t/** delimiting character */\n\t\t\t\tvar _delimiter = ',';\n\n\t\t\t\t/** newline character(s) */\n\t\t\t\tvar _newline = '\\r\\n';\n\n\t\t\t\t/** quote character */\n\t\t\t\tvar _quoteChar = '\"';\n\n\t\t\t\tunpackConfig();\n\n\t\t\t\tvar quoteCharRegex = new RegExp(_quoteChar, 'g');\n\n\t\t\t\tif (typeof _input === 'string')\n\t\t\t\t\t_input = JSON.parse(_input);\n\n\t\t\t\tif (_input instanceof Array)\n\t\t\t\t{\n\t\t\t\t\tif (!_input.length || _input[0] instanceof Array)\n\t\t\t\t\t\treturn serialize(null, _input);\n\t\t\t\t\telse if (typeof _input[0] === 'object')\n\t\t\t\t\t\treturn serialize(objectKeys(_input[0]), _input);\n\t\t\t\t}\n\t\t\t\telse if (typeof _input === 'object')\n\t\t\t\t{\n\t\t\t\t\tif (typeof _input.data === 'string')\n\t\t\t\t\t\t_input.data = JSON.parse(_input.data);\n\n\t\t\t\t\tif (_input.data instanceof Array)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!_input.fields)\n\t\t\t\t\t\t\t_input.fields = _input.meta && _input.meta.fields;\n\n\t\t\t\t\t\tif (!_input.fields)\n\t\t\t\t\t\t\t_input.fields = _input.data[0] instanceof Array\n\t\t\t\t\t\t\t\t? _input.fields\n\t\t\t\t\t\t\t\t: objectKeys(_input.data[0]);\n\n\t\t\t\t\t\tif (!(_input.data[0] instanceof Array) && typeof _input.data[0] !== 'object')\n\t\t\t\t\t\t\t_input.data = [_input.data];\t// handles input like [1,2,3] or ['asdf']\n\t\t\t\t\t}\n\n\t\t\t\t\treturn serialize(_input.fields || [], _input.data || []);\n\t\t\t\t}\n\n\t\t\t\t// Default (any valid paths should return before this)\n\t\t\t\tthrow 'exception: Unable to serialize unrecognized input';\n\n\n\t\t\t\tfunction unpackConfig()\n\t\t\t\t{\n\t\t\t\t\tif (typeof _config !== 'object')\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tif (typeof _config.delimiter === 'string'\n\t\t\t\t\t\t&& _config.delimiter.length === 1\n\t\t\t\t\t\t&& Papa.BAD_DELIMITERS.indexOf(_config.delimiter) === -1)\n\t\t\t\t\t{\n\t\t\t\t\t\t_delimiter = _config.delimiter;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof _config.quotes === 'boolean'\n\t\t\t\t\t\t|| _config.quotes instanceof Array)\n\t\t\t\t\t\t_quotes = _config.quotes;\n\n\t\t\t\t\tif (typeof _config.newline === 'string')\n\t\t\t\t\t\t_newline = _config.newline;\n\n\t\t\t\t\tif (typeof _config.quoteChar === 'string')\n\t\t\t\t\t\t_quoteChar = _config.quoteChar;\n\n\t\t\t\t\tif (typeof _config.header === 'boolean')\n\t\t\t\t\t\t_writeHeader = _config.header;\n\t\t\t\t}\n\n\n\t\t\t\t/** Turns an object's keys into an array */\n\t\t\t\tfunction objectKeys(obj)\n\t\t\t\t{\n\t\t\t\t\tif (typeof obj !== 'object')\n\t\t\t\t\t\treturn [];\n\t\t\t\t\tvar keys = [];\n\t\t\t\t\tfor (var key in obj)\n\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\treturn keys;\n\t\t\t\t}\n\n\t\t\t\t/** The double for loop that iterates the data and writes out a CSV string including header row */\n\t\t\t\tfunction serialize(fields, data)\n\t\t\t\t{\n\t\t\t\t\tvar csv = '';\n\n\t\t\t\t\tif (typeof fields === 'string')\n\t\t\t\t\t\tfields = JSON.parse(fields);\n\t\t\t\t\tif (typeof data === 'string')\n\t\t\t\t\t\tdata = JSON.parse(data);\n\n\t\t\t\t\tvar hasHeader = fields instanceof Array && fields.length > 0;\n\t\t\t\t\tvar dataKeyedByField = !(data[0] instanceof Array);\n\n\t\t\t\t\t// If there a header row, write it first\n\t\t\t\t\tif (hasHeader && _writeHeader)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var i = 0; i < fields.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (i > 0)\n\t\t\t\t\t\t\t\tcsv += _delimiter;\n\t\t\t\t\t\t\tcsv += safe(fields[i], i);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.length > 0)\n\t\t\t\t\t\t\tcsv += _newline;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Then write out the data\n\t\t\t\t\tfor (var row = 0; row < data.length; row++)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar maxCol = hasHeader ? fields.length : data[row].length;\n\n\t\t\t\t\t\tfor (var col = 0; col < maxCol; col++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (col > 0)\n\t\t\t\t\t\t\t\tcsv += _delimiter;\n\t\t\t\t\t\t\tvar colIdx = hasHeader && dataKeyedByField ? fields[col] : col;\n\t\t\t\t\t\t\tcsv += safe(data[row][colIdx], col);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (row < data.length - 1)\n\t\t\t\t\t\t\tcsv += _newline;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn csv;\n\t\t\t\t}\n\n\t\t\t\t/** Encloses a value around quotes if needed (makes a value safe for CSV insertion) */\n\t\t\t\tfunction safe(str, col)\n\t\t\t\t{\n\t\t\t\t\tif (typeof str === 'undefined' || str === null)\n\t\t\t\t\t\treturn '';\n\n\t\t\t\t\tstr = str.toString().replace(quoteCharRegex, _quoteChar + _quoteChar);\n\n\t\t\t\t\tvar needsQuotes = (typeof _quotes === 'boolean' && _quotes)\n\t\t\t\t\t\t\t\t\t|| (_quotes instanceof Array && _quotes[col])\n\t\t\t\t\t\t\t\t\t|| hasAny(str, Papa.BAD_DELIMITERS)\n\t\t\t\t\t\t\t\t\t|| str.indexOf(_delimiter) > -1\n\t\t\t\t\t\t\t\t\t|| str.charAt(0) === ' '\n\t\t\t\t\t\t\t\t\t|| str.charAt(str.length - 1) === ' ';\n\n\t\t\t\t\treturn needsQuotes ? _quoteChar + str + _quoteChar : str;\n\t\t\t\t}\n\n\t\t\t\tfunction hasAny(str, substrings)\n\t\t\t\t{\n\t\t\t\t\tfor (var i = 0; i < substrings.length; i++)\n\t\t\t\t\t\tif (str.indexOf(substrings[i]) > -1)\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** ChunkStreamer is the base prototype for various streamer implementations. */\n\t\t\tfunction ChunkStreamer(config)\n\t\t\t{\n\t\t\t\tthis._handle = null;\n\t\t\t\tthis._finished = false;\n\t\t\t\tthis._completed = false;\n\t\t\t\tthis._input = null;\n\t\t\t\tthis._baseIndex = 0;\n\t\t\t\tthis._partialLine = '';\n\t\t\t\tthis._rowCount = 0;\n\t\t\t\tthis._start = 0;\n\t\t\t\tthis._nextChunk = null;\n\t\t\t\tthis.isFirstChunk = true;\n\t\t\t\tthis._completeResults = {\n\t\t\t\t\tdata: [],\n\t\t\t\t\terrors: [],\n\t\t\t\t\tmeta: {}\n\t\t\t\t};\n\t\t\t\treplaceConfig.call(this, config);\n\n\t\t\t\tthis.parseChunk = function(chunk, isFakeChunk)\n\t\t\t\t{\n\t\t\t\t\t// First chunk pre-processing\n\t\t\t\t\tif (this.isFirstChunk && isFunction(this._config.beforeFirstChunk))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar modifiedChunk = this._config.beforeFirstChunk(chunk);\n\t\t\t\t\t\tif (modifiedChunk !== undefined)\n\t\t\t\t\t\t\tchunk = modifiedChunk;\n\t\t\t\t\t}\n\t\t\t\t\tthis.isFirstChunk = false;\n\n\t\t\t\t\t// Rejoin the line we likely just split in two by chunking the file\n\t\t\t\t\tvar aggregate = this._partialLine + chunk;\n\t\t\t\t\tthis._partialLine = '';\n\n\t\t\t\t\tvar results = this._handle.parse(aggregate, this._baseIndex, !this._finished);\n\n\t\t\t\t\tif (this._handle.paused() || this._handle.aborted())\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar lastIndex = results.meta.cursor;\n\n\t\t\t\t\tif (!this._finished)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._partialLine = aggregate.substring(lastIndex - this._baseIndex);\n\t\t\t\t\t\tthis._baseIndex = lastIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (results && results.data)\n\t\t\t\t\t\tthis._rowCount += results.data.length;\n\n\t\t\t\t\tvar finishedIncludingPreview = this._finished || (this._config.preview && this._rowCount >= this._config.preview);\n\n\t\t\t\t\tif (IS_PAPA_WORKER)\n\t\t\t\t\t{\n\t\t\t\t\t\tglobal.postMessage({\n\t\t\t\t\t\t\tresults: results,\n\t\t\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\t\t\tfinished: finishedIncludingPreview\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse if (isFunction(this._config.chunk) && !isFakeChunk)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._config.chunk(results, this._handle);\n\t\t\t\t\t\tif (this._handle.paused() || this._handle.aborted())\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tresults = undefined;\n\t\t\t\t\t\tthis._completeResults = undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this._config.step && !this._config.chunk) {\n\t\t\t\t\t\tthis._completeResults.data = this._completeResults.data.concat(results.data);\n\t\t\t\t\t\tthis._completeResults.errors = this._completeResults.errors.concat(results.errors);\n\t\t\t\t\t\tthis._completeResults.meta = results.meta;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this._completed && finishedIncludingPreview && isFunction(this._config.complete) && (!results || !results.meta.aborted)) {\n\t\t\t\t\t\tthis._config.complete(this._completeResults, this._input);\n\t\t\t\t\t\tthis._completed = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!finishedIncludingPreview && (!results || !results.meta.paused))\n\t\t\t\t\t\tthis._nextChunk();\n\n\t\t\t\t\treturn results;\n\t\t\t\t};\n\n\t\t\t\tthis._sendError = function(error)\n\t\t\t\t{\n\t\t\t\t\tif (isFunction(this._config.error))\n\t\t\t\t\t\tthis._config.error(error);\n\t\t\t\t\telse if (IS_PAPA_WORKER && this._config.error)\n\t\t\t\t\t{\n\t\t\t\t\t\tglobal.postMessage({\n\t\t\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\t\t\terror: error,\n\t\t\t\t\t\t\tfinished: false\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tfunction replaceConfig(config)\n\t\t\t\t{\n\t\t\t\t\t// Deep-copy the config so we can edit it\n\t\t\t\t\tvar configCopy = copy(config);\n\t\t\t\t\tconfigCopy.chunkSize = parseInt(configCopy.chunkSize);\t// parseInt VERY important so we don't concatenate strings!\n\t\t\t\t\tif (!config.step && !config.chunk)\n\t\t\t\t\t\tconfigCopy.chunkSize = null; // disable Range header if not streaming; bad values break IIS - see issue #196\n\t\t\t\t\tthis._handle = new ParserHandle(configCopy);\n\t\t\t\t\tthis._handle.streamer = this;\n\t\t\t\t\tthis._config = configCopy;\t// persist the copy to the caller\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tfunction NetworkStreamer(config)\n\t\t\t{\n\t\t\t\tconfig = config || {};\n\t\t\t\tif (!config.chunkSize)\n\t\t\t\t\tconfig.chunkSize = Papa.RemoteChunkSize;\n\t\t\t\tChunkStreamer.call(this, config);\n\n\t\t\t\tvar xhr;\n\n\t\t\t\tif (IS_WORKER)\n\t\t\t\t{\n\t\t\t\t\tthis._nextChunk = function()\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._readChunk();\n\t\t\t\t\t\tthis._chunkLoaded();\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis._nextChunk = function()\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._readChunk();\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tthis.stream = function(url)\n\t\t\t\t{\n\t\t\t\t\tthis._input = url;\n\t\t\t\t\tthis._nextChunk();\t// Starts streaming\n\t\t\t\t};\n\n\t\t\t\tthis._readChunk = function()\n\t\t\t\t{\n\t\t\t\t\tif (this._finished)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._chunkLoaded();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\txhr = new XMLHttpRequest();\n\n\t\t\t\t\tif (this._config.withCredentials)\n\t\t\t\t\t{\n\t\t\t\t\t\txhr.withCredentials = this._config.withCredentials;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!IS_WORKER)\n\t\t\t\t\t{\n\t\t\t\t\t\txhr.onload = bindFunction(this._chunkLoaded, this);\n\t\t\t\t\t\txhr.onerror = bindFunction(this._chunkError, this);\n\t\t\t\t\t}\n\n\t\t\t\t\txhr.open('GET', this._input, !IS_WORKER);\n\t\t\t\t\t// Headers can only be set when once the request state is OPENED\n\t\t\t\t\tif (this._config.downloadRequestHeaders)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar headers = this._config.downloadRequestHeaders;\n\n\t\t\t\t\t\tfor (var headerName in headers)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txhr.setRequestHeader(headerName, headers[headerName]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this._config.chunkSize)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar end = this._start + this._config.chunkSize - 1;\t// minus one because byte range is inclusive\n\t\t\t\t\t\txhr.setRequestHeader('Range', 'bytes=' + this._start + '-' + end);\n\t\t\t\t\t\txhr.setRequestHeader('If-None-Match', 'webkit-no-cache'); // https://bugs.webkit.org/show_bug.cgi?id=82672\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\txhr.send();\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tthis._chunkError(err.message);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (IS_WORKER && xhr.status === 0)\n\t\t\t\t\t\tthis._chunkError();\n\t\t\t\t\telse\n\t\t\t\t\t\tthis._start += this._config.chunkSize;\n\t\t\t\t};\n\n\t\t\t\tthis._chunkLoaded = function()\n\t\t\t\t{\n\t\t\t\t\tif (xhr.readyState !== 4)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tif (xhr.status < 200 || xhr.status >= 400)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._chunkError();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._finished = !this._config.chunkSize || this._start > getFileSize(xhr);\n\t\t\t\t\tthis.parseChunk(xhr.responseText);\n\t\t\t\t};\n\n\t\t\t\tthis._chunkError = function(errorMessage)\n\t\t\t\t{\n\t\t\t\t\tvar errorText = xhr.statusText || errorMessage;\n\t\t\t\t\tthis._sendError(new Error(errorText));\n\t\t\t\t};\n\n\t\t\t\tfunction getFileSize(xhr)\n\t\t\t\t{\n\t\t\t\t\tvar contentRange = xhr.getResponseHeader('Content-Range');\n\t\t\t\t\tif (contentRange === null) { // no content range, then finish!\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\treturn parseInt(contentRange.substr(contentRange.lastIndexOf('/') + 1));\n\t\t\t\t}\n\t\t\t}\n\t\t\tNetworkStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\t\t\tNetworkStreamer.prototype.constructor = NetworkStreamer;\n\n\n\t\t\tfunction FileStreamer(config)\n\t\t\t{\n\t\t\t\tconfig = config || {};\n\t\t\t\tif (!config.chunkSize)\n\t\t\t\t\tconfig.chunkSize = Papa.LocalChunkSize;\n\t\t\t\tChunkStreamer.call(this, config);\n\n\t\t\t\tvar reader, slice;\n\n\t\t\t\t// FileReader is better than FileReaderSync (even in worker) - see http://stackoverflow.com/q/24708649/1048862\n\t\t\t\t// But Firefox is a pill, too - see issue #76: https://github.com/mholt/PapaParse/issues/76\n\t\t\t\tvar usingAsyncReader = typeof FileReader !== 'undefined';\t// Safari doesn't consider it a function - see issue #105\n\n\t\t\t\tthis.stream = function(file)\n\t\t\t\t{\n\t\t\t\t\tthis._input = file;\n\t\t\t\t\tslice = file.slice || file.webkitSlice || file.mozSlice;\n\n\t\t\t\t\tif (usingAsyncReader)\n\t\t\t\t\t{\n\t\t\t\t\t\treader = new FileReader();\t\t// Preferred method of reading files, even in workers\n\t\t\t\t\t\treader.onload = bindFunction(this._chunkLoaded, this);\n\t\t\t\t\t\treader.onerror = bindFunction(this._chunkError, this);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\treader = new FileReaderSync();\t// Hack for running in a web worker in Firefox\n\n\t\t\t\t\tthis._nextChunk();\t// Starts streaming\n\t\t\t\t};\n\n\t\t\t\tthis._nextChunk = function()\n\t\t\t\t{\n\t\t\t\t\tif (!this._finished && (!this._config.preview || this._rowCount < this._config.preview))\n\t\t\t\t\t\tthis._readChunk();\n\t\t\t\t};\n\n\t\t\t\tthis._readChunk = function()\n\t\t\t\t{\n\t\t\t\t\tvar input = this._input;\n\t\t\t\t\tif (this._config.chunkSize)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar end = Math.min(this._start + this._config.chunkSize, this._input.size);\n\t\t\t\t\t\tinput = slice.call(input, this._start, end);\n\t\t\t\t\t}\n\t\t\t\t\tvar txt = reader.readAsText(input, this._config.encoding);\n\t\t\t\t\tif (!usingAsyncReader)\n\t\t\t\t\t\tthis._chunkLoaded({ target: { result: txt } });\t// mimic the async signature\n\t\t\t\t};\n\n\t\t\t\tthis._chunkLoaded = function(event)\n\t\t\t\t{\n\t\t\t\t\t// Very important to increment start each time before handling results\n\t\t\t\t\tthis._start += this._config.chunkSize;\n\t\t\t\t\tthis._finished = !this._config.chunkSize || this._start >= this._input.size;\n\t\t\t\t\tthis.parseChunk(event.target.result);\n\t\t\t\t};\n\n\t\t\t\tthis._chunkError = function()\n\t\t\t\t{\n\t\t\t\t\tthis._sendError(reader.error);\n\t\t\t\t};\n\n\t\t\t}\n\t\t\tFileStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\t\t\tFileStreamer.prototype.constructor = FileStreamer;\n\n\n\t\t\tfunction StringStreamer(config)\n\t\t\t{\n\t\t\t\tconfig = config || {};\n\t\t\t\tChunkStreamer.call(this, config);\n\n\t\t\t\tvar remaining;\n\t\t\t\tthis.stream = function(s)\n\t\t\t\t{\n\t\t\t\t\tremaining = s;\n\t\t\t\t\treturn this._nextChunk();\n\t\t\t\t};\n\t\t\t\tthis._nextChunk = function()\n\t\t\t\t{\n\t\t\t\t\tif (this._finished) return;\n\t\t\t\t\tvar size = this._config.chunkSize;\n\t\t\t\t\tvar chunk = size ? remaining.substr(0, size) : remaining;\n\t\t\t\t\tremaining = size ? remaining.substr(size) : '';\n\t\t\t\t\tthis._finished = !remaining;\n\t\t\t\t\treturn this.parseChunk(chunk);\n\t\t\t\t};\n\t\t\t}\n\t\t\tStringStreamer.prototype = Object.create(StringStreamer.prototype);\n\t\t\tStringStreamer.prototype.constructor = StringStreamer;\n\n\n\t\t\tfunction ReadableStreamStreamer(config)\n\t\t\t{\n\t\t\t\tconfig = config || {};\n\n\t\t\t\tChunkStreamer.call(this, config);\n\n\t\t\t\tvar queue = [];\n\t\t\t\tvar parseOnData = true;\n\t\t\t\tvar streamHasEnded = false;\n\n\t\t\t\tthis.pause = function()\n\t\t\t\t{\n\t\t\t\t\tChunkStreamer.prototype.pause.apply(this, arguments);\n\t\t\t\t\tthis._input.pause();\n\t\t\t\t};\n\n\t\t\t\tthis.resume = function()\n\t\t\t\t{\n\t\t\t\t\tChunkStreamer.prototype.resume.apply(this, arguments);\n\t\t\t\t\tthis._input.resume();\n\t\t\t\t};\n\n\t\t\t\tthis.stream = function(stream)\n\t\t\t\t{\n\t\t\t\t\tthis._input = stream;\n\n\t\t\t\t\tthis._input.on('data', this._streamData);\n\t\t\t\t\tthis._input.on('end', this._streamEnd);\n\t\t\t\t\tthis._input.on('error', this._streamError);\n\t\t\t\t};\n\n\t\t\t\tthis._checkIsFinished = function()\n\t\t\t\t{\n\t\t\t\t\tif (streamHasEnded && queue.length === 1) {\n\t\t\t\t\t\tthis._finished = true;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis._nextChunk = function()\n\t\t\t\t{\n\t\t\t\t\tthis._checkIsFinished();\n\t\t\t\t\tif (queue.length)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.parseChunk(queue.shift());\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tparseOnData = true;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis._streamData = bindFunction(function(chunk)\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tqueue.push(typeof chunk === 'string' ? chunk : chunk.toString(this._config.encoding));\n\n\t\t\t\t\t\tif (parseOnData)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseOnData = false;\n\t\t\t\t\t\t\tthis._checkIsFinished();\n\t\t\t\t\t\t\tthis.parseChunk(queue.shift());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._streamError(error);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\n\t\t\t\tthis._streamError = bindFunction(function(error)\n\t\t\t\t{\n\t\t\t\t\tthis._streamCleanUp();\n\t\t\t\t\tthis._sendError(error);\n\t\t\t\t}, this);\n\n\t\t\t\tthis._streamEnd = bindFunction(function()\n\t\t\t\t{\n\t\t\t\t\tthis._streamCleanUp();\n\t\t\t\t\tstreamHasEnded = true;\n\t\t\t\t\tthis._streamData('');\n\t\t\t\t}, this);\n\n\t\t\t\tthis._streamCleanUp = bindFunction(function()\n\t\t\t\t{\n\t\t\t\t\tthis._input.removeListener('data', this._streamData);\n\t\t\t\t\tthis._input.removeListener('end', this._streamEnd);\n\t\t\t\t\tthis._input.removeListener('error', this._streamError);\n\t\t\t\t}, this);\n\t\t\t}\n\t\t\tReadableStreamStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\t\t\tReadableStreamStreamer.prototype.constructor = ReadableStreamStreamer;\n\n\n\t\t\t// Use one ParserHandle per entire CSV file or string\n\t\t\tfunction ParserHandle(_config)\n\t\t\t{\n\t\t\t\t// One goal is to minimize the use of regular expressions...\n\t\t\t\tvar FLOAT = /^\\s*-?(\\d*\\.?\\d+|\\d+\\.?\\d*)(e[-+]?\\d+)?\\s*$/i;\n\n\t\t\t\tvar self = this;\n\t\t\t\tvar _stepCounter = 0;\t// Number of times step was called (number of rows parsed)\n\t\t\t\tvar _input;\t\t\t\t// The input being parsed\n\t\t\t\tvar _parser;\t\t\t// The core parser being used\n\t\t\t\tvar _paused = false;\t// Whether we are paused or not\n\t\t\t\tvar _aborted = false;\t// Whether the parser has aborted or not\n\t\t\t\tvar _delimiterError;\t// Temporary state between delimiter detection and processing results\n\t\t\t\tvar _fields = [];\t\t// Fields are from the header row of the input, if there is one\n\t\t\t\tvar _results = {\t\t// The last results returned from the parser\n\t\t\t\t\tdata: [],\n\t\t\t\t\terrors: [],\n\t\t\t\t\tmeta: {}\n\t\t\t\t};\n\n\t\t\t\tif (isFunction(_config.step))\n\t\t\t\t{\n\t\t\t\t\tvar userStep = _config.step;\n\t\t\t\t\t_config.step = function(results)\n\t\t\t\t\t{\n\t\t\t\t\t\t_results = results;\n\n\t\t\t\t\t\tif (needsHeaderRow())\n\t\t\t\t\t\t\tprocessResults();\n\t\t\t\t\t\telse\t// only call user's step function after header row\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprocessResults();\n\n\t\t\t\t\t\t\t// It's possbile that this line was empty and there's no row here after all\n\t\t\t\t\t\t\tif (_results.data.length === 0)\n\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t_stepCounter += results.data.length;\n\t\t\t\t\t\t\tif (_config.preview && _stepCounter > _config.preview)\n\t\t\t\t\t\t\t\t_parser.abort();\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tuserStep(_results, self);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * Parses input. Most users won't need, and shouldn't mess with, the baseIndex\n\t\t\t\t * and ignoreLastRow parameters. They are used by streamers (wrapper functions)\n\t\t\t\t * when an input comes in multiple chunks, like from a file.\n\t\t\t\t */\n\t\t\t\tthis.parse = function(input, baseIndex, ignoreLastRow)\n\t\t\t\t{\n\t\t\t\t\tif (!_config.newline)\n\t\t\t\t\t\t_config.newline = guessLineEndings(input);\n\n\t\t\t\t\t_delimiterError = false;\n\t\t\t\t\tif (!_config.delimiter)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar delimGuess = guessDelimiter(input, _config.newline, _config.skipEmptyLines);\n\t\t\t\t\t\tif (delimGuess.successful)\n\t\t\t\t\t\t\t_config.delimiter = delimGuess.bestDelimiter;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_delimiterError = true;\t// add error after parsing (otherwise it would be overwritten)\n\t\t\t\t\t\t\t_config.delimiter = Papa.DefaultDelimiter;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_results.meta.delimiter = _config.delimiter;\n\t\t\t\t\t}\n\t\t\t\t\telse if(isFunction(_config.delimiter))\n\t\t\t\t\t{\n\t\t\t\t\t\t_config.delimiter = _config.delimiter(input);\n\t\t\t\t\t\t_results.meta.delimiter = _config.delimiter;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar parserConfig = copy(_config);\n\t\t\t\t\tif (_config.preview && _config.header)\n\t\t\t\t\t\tparserConfig.preview++;\t// to compensate for header row\n\n\t\t\t\t\t_input = input;\n\t\t\t\t\t_parser = new Parser(parserConfig);\n\t\t\t\t\t_results = _parser.parse(_input, baseIndex, ignoreLastRow);\n\t\t\t\t\tprocessResults();\n\t\t\t\t\treturn _paused ? { meta: { paused: true } } : (_results || { meta: { paused: false } });\n\t\t\t\t};\n\n\t\t\t\tthis.paused = function()\n\t\t\t\t{\n\t\t\t\t\treturn _paused;\n\t\t\t\t};\n\n\t\t\t\tthis.pause = function()\n\t\t\t\t{\n\t\t\t\t\t_paused = true;\n\t\t\t\t\t_parser.abort();\n\t\t\t\t\t_input = _input.substr(_parser.getCharIndex());\n\t\t\t\t};\n\n\t\t\t\tthis.resume = function()\n\t\t\t\t{\n\t\t\t\t\t_paused = false;\n\t\t\t\t\tself.streamer.parseChunk(_input, true);\n\t\t\t\t};\n\n\t\t\t\tthis.aborted = function()\n\t\t\t\t{\n\t\t\t\t\treturn _aborted;\n\t\t\t\t};\n\n\t\t\t\tthis.abort = function()\n\t\t\t\t{\n\t\t\t\t\t_aborted = true;\n\t\t\t\t\t_parser.abort();\n\t\t\t\t\t_results.meta.aborted = true;\n\t\t\t\t\tif (isFunction(_config.complete))\n\t\t\t\t\t\t_config.complete(_results);\n\t\t\t\t\t_input = '';\n\t\t\t\t};\n\n\t\t\t\tfunction processResults()\n\t\t\t\t{\n\t\t\t\t\tif (_results && _delimiterError)\n\t\t\t\t\t{\n\t\t\t\t\t\taddError('Delimiter', 'UndetectableDelimiter', 'Unable to auto-detect delimiting character; defaulted to \\'' + Papa.DefaultDelimiter + '\\'');\n\t\t\t\t\t\t_delimiterError = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_config.skipEmptyLines)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var i = 0; i < _results.data.length; i++)\n\t\t\t\t\t\t\tif (_results.data[i].length === 1 && _results.data[i][0] === '')\n\t\t\t\t\t\t\t\t_results.data.splice(i--, 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (needsHeaderRow())\n\t\t\t\t\t\tfillHeaderFields();\n\n\t\t\t\t\treturn applyHeaderAndDynamicTyping();\n\t\t\t\t}\n\n\t\t\t\tfunction needsHeaderRow()\n\t\t\t\t{\n\t\t\t\t\treturn _config.header && _fields.length === 0;\n\t\t\t\t}\n\n\t\t\t\tfunction fillHeaderFields()\n\t\t\t\t{\n\t\t\t\t\tif (!_results)\n\t\t\t\t\t\treturn;\n\t\t\t\t\tfor (var i = 0; needsHeaderRow() && i < _results.data.length; i++)\n\t\t\t\t\t\tfor (var j = 0; j < _results.data[i].length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar header = _results.data[i][j];\n\n\t\t\t\t\t\t\tif (_config.trimHeaders) {\n\t\t\t\t\t\t\t\theader = header.trim();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_fields.push(header);\n\t\t\t\t\t\t}\n\t\t\t\t\t_results.data.splice(0, 1);\n\t\t\t\t}\n\n\t\t\t\tfunction shouldApplyDynamicTyping(field) {\n\t\t\t\t\t// Cache function values to avoid calling it for each row\n\t\t\t\t\tif (_config.dynamicTypingFunction && _config.dynamicTyping[field] === undefined) {\n\t\t\t\t\t\t_config.dynamicTyping[field] = _config.dynamicTypingFunction(field);\n\t\t\t\t\t}\n\t\t\t\t\treturn (_config.dynamicTyping[field] || _config.dynamicTyping) === true;\n\t\t\t\t}\n\n\t\t\t\tfunction parseDynamic(field, value)\n\t\t\t\t{\n\t\t\t\t\tif (shouldApplyDynamicTyping(field))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (value === 'true' || value === 'TRUE')\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\telse if (value === 'false' || value === 'FALSE')\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\telse if(FLOAT.test(value)) {\n\t\t\t\t\t\t\treturn parseFloat(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treturn (value === '' ? null : value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\tfunction applyHeaderAndDynamicTyping()\n\t\t\t\t{\n\t\t\t\t\tif (!_results || (!_config.header && !_config.dynamicTyping))\n\t\t\t\t\t\treturn _results;\n\n\t\t\t\t\tfor (var i = 0; i < _results.data.length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar row = _config.header ? {} : [];\n\n\t\t\t\t\t\tvar j;\n\t\t\t\t\t\tfor (j = 0; j < _results.data[i].length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar field = j;\n\t\t\t\t\t\t\tvar value = _results.data[i][j];\n\n\t\t\t\t\t\t\tif (_config.header)\n\t\t\t\t\t\t\t\tfield = j >= _fields.length ? '__parsed_extra' : _fields[j];\n\n\t\t\t\t\t\t\tvalue = parseDynamic(field, value);\n\n\t\t\t\t\t\t\tif (field === '__parsed_extra')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trow[field] = row[field] || [];\n\t\t\t\t\t\t\t\trow[field].push(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\trow[field] = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_results.data[i] = row;\n\n\t\t\t\t\t\tif (_config.header)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (j > _fields.length)\n\t\t\t\t\t\t\t\taddError('FieldMismatch', 'TooManyFields', 'Too many fields: expected ' + _fields.length + ' fields but parsed ' + j, i);\n\t\t\t\t\t\t\telse if (j < _fields.length)\n\t\t\t\t\t\t\t\taddError('FieldMismatch', 'TooFewFields', 'Too few fields: expected ' + _fields.length + ' fields but parsed ' + j, i);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_config.header && _results.meta)\n\t\t\t\t\t\t_results.meta.fields = _fields;\n\t\t\t\t\treturn _results;\n\t\t\t\t}\n\n\t\t\t\tfunction guessDelimiter(input, newline, skipEmptyLines)\n\t\t\t\t{\n\t\t\t\t\tvar delimChoices = [',', '\\t', '|', ';', Papa.RECORD_SEP, Papa.UNIT_SEP];\n\t\t\t\t\tvar bestDelim, bestDelta, fieldCountPrevRow;\n\n\t\t\t\t\tfor (var i = 0; i < delimChoices.length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar delim = delimChoices[i];\n\t\t\t\t\t\tvar delta = 0, avgFieldCount = 0, emptyLinesCount = 0;\n\t\t\t\t\t\tfieldCountPrevRow = undefined;\n\n\t\t\t\t\t\tvar preview = new Parser({\n\t\t\t\t\t\t\tdelimiter: delim,\n\t\t\t\t\t\t\tnewline: newline,\n\t\t\t\t\t\t\tpreview: 10\n\t\t\t\t\t\t}).parse(input);\n\n\t\t\t\t\t\tfor (var j = 0; j < preview.data.length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (skipEmptyLines && preview.data[j].length === 1 && preview.data[j][0].length === 0) {\n\t\t\t\t\t\t\t\temptyLinesCount++;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar fieldCount = preview.data[j].length;\n\t\t\t\t\t\t\tavgFieldCount += fieldCount;\n\n\t\t\t\t\t\t\tif (typeof fieldCountPrevRow === 'undefined')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfieldCountPrevRow = fieldCount;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (fieldCount > 1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdelta += Math.abs(fieldCount - fieldCountPrevRow);\n\t\t\t\t\t\t\t\tfieldCountPrevRow = fieldCount;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (preview.data.length > 0)\n\t\t\t\t\t\t\tavgFieldCount /= (preview.data.length - emptyLinesCount);\n\n\t\t\t\t\t\tif ((typeof bestDelta === 'undefined' || delta < bestDelta)\n\t\t\t\t\t\t\t&& avgFieldCount > 1.99)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbestDelta = delta;\n\t\t\t\t\t\t\tbestDelim = delim;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t_config.delimiter = bestDelim;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccessful: !!bestDelim,\n\t\t\t\t\t\tbestDelimiter: bestDelim\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tfunction guessLineEndings(input)\n\t\t\t\t{\n\t\t\t\t\tinput = input.substr(0, 1024 * 1024);\t// max length 1 MB\n\n\t\t\t\t\tvar r = input.split('\\r');\n\n\t\t\t\t\tvar n = input.split('\\n');\n\n\t\t\t\t\tvar nAppearsFirst = (n.length > 1 && n[0].length < r[0].length);\n\n\t\t\t\t\tif (r.length === 1 || nAppearsFirst)\n\t\t\t\t\t\treturn '\\n';\n\n\t\t\t\t\tvar numWithN = 0;\n\t\t\t\t\tfor (var i = 0; i < r.length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (r[i][0] === '\\n')\n\t\t\t\t\t\t\tnumWithN++;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn numWithN >= r.length / 2 ? '\\r\\n' : '\\r';\n\t\t\t\t}\n\n\t\t\t\tfunction addError(type, code, msg, row)\n\t\t\t\t{\n\t\t\t\t\t_results.errors.push({\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\tcode: code,\n\t\t\t\t\t\tmessage: msg,\n\t\t\t\t\t\trow: row\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\n\n\n\n\t\t\t/** The core parser implements speedy and correct CSV parsing */\n\t\t\tfunction Parser(config)\n\t\t\t{\n\t\t\t\t// Unpack the config object\n\t\t\t\tconfig = config || {};\n\t\t\t\tvar delim = config.delimiter;\n\t\t\t\tvar newline = config.newline;\n\t\t\t\tvar comments = config.comments;\n\t\t\t\tvar step = config.step;\n\t\t\t\tvar preview = config.preview;\n\t\t\t\tvar fastMode = config.fastMode;\n\t\t\t\tvar quoteChar;\n\t\t\t\t/** Allows for no quoteChar by setting quoteChar to undefined in config */\n\t\t\t\tif (config.quoteChar === undefined) {\n\t\t\t\t\tquoteChar = '\"';\n\t\t\t\t} else {\n\t\t\t\t\tquoteChar = config.quoteChar;\n\t\t\t\t}\n\t\t\t\tvar escapeChar = quoteChar;\n\t\t\t\tif (config.escapeChar !== undefined) {\n\t\t\t\t\tescapeChar = config.escapeChar;\n\t\t\t\t}\n\n\t\t\t\t// Delimiter must be valid\n\t\t\t\tif (typeof delim !== 'string'\n\t\t\t\t\t|| Papa.BAD_DELIMITERS.indexOf(delim) > -1)\n\t\t\t\t\tdelim = ',';\n\n\t\t\t\t// Comment character must be valid\n\t\t\t\tif (comments === delim)\n\t\t\t\t\tthrow 'Comment character same as delimiter';\n\t\t\t\telse if (comments === true)\n\t\t\t\t\tcomments = '#';\n\t\t\t\telse if (typeof comments !== 'string'\n\t\t\t\t\t|| Papa.BAD_DELIMITERS.indexOf(comments) > -1)\n\t\t\t\t\tcomments = false;\n\n\t\t\t\t// Newline must be valid: \\r, \\n, or \\r\\n\n\t\t\t\tif (newline !== '\\n' && newline !== '\\r' && newline !== '\\r\\n')\n\t\t\t\t\tnewline = '\\n';\n\n\t\t\t\t// We're gonna need these at the Parser scope\n\t\t\t\tvar cursor = 0;\n\t\t\t\tvar aborted = false;\n\n\t\t\t\tthis.parse = function(input, baseIndex, ignoreLastRow)\n\t\t\t\t{\n\t\t\t\t\t// For some reason, in Chrome, this speeds things up (!?)\n\t\t\t\t\tif (typeof input !== 'string')\n\t\t\t\t\t\tthrow 'Input must be a string';\n\n\t\t\t\t\t// We don't need to compute some of these every time parse() is called,\n\t\t\t\t\t// but having them in a more local scope seems to perform better\n\t\t\t\t\tvar inputLen = input.length,\n\t\t\t\t\t\tdelimLen = delim.length,\n\t\t\t\t\t\tnewlineLen = newline.length,\n\t\t\t\t\t\tcommentsLen = comments.length;\n\t\t\t\t\tvar stepIsFunction = isFunction(step);\n\n\t\t\t\t\t// Establish starting state\n\t\t\t\t\tcursor = 0;\n\t\t\t\t\tvar data = [], errors = [], row = [], lastCursor = 0;\n\n\t\t\t\t\tif (!input)\n\t\t\t\t\t\treturn returnable();\n\n\t\t\t\t\tif (fastMode || (fastMode !== false && input.indexOf(quoteChar) === -1))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar rows = input.split(newline);\n\t\t\t\t\t\tfor (var i = 0; i < rows.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow = rows[i];\n\t\t\t\t\t\t\tcursor += row.length;\n\t\t\t\t\t\t\tif (i !== rows.length - 1)\n\t\t\t\t\t\t\t\tcursor += newline.length;\n\t\t\t\t\t\t\telse if (ignoreLastRow)\n\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\tif (comments && row.substr(0, commentsLen) === comments)\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\t\t\tpushRow(row.split(delim));\n\t\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tpushRow(row.split(delim));\n\t\t\t\t\t\t\tif (preview && i >= preview)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdata = data.slice(0, preview);\n\t\t\t\t\t\t\t\treturn returnable(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar nextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\tvar nextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\tvar quoteCharRegex = new RegExp(escapeChar.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&') + quoteChar, 'g');\n\t\t\t\t\tvar quoteSearch;\n\n\t\t\t\t\t// Parser loop\n\t\t\t\t\tfor (;;)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Field has opening quote\n\t\t\t\t\t\tif (input[cursor] === quoteChar)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Start our search for the closing quote where the cursor is\n\t\t\t\t\t\t\tquoteSearch = cursor;\n\n\t\t\t\t\t\t\t// Skip the opening quote\n\t\t\t\t\t\t\tcursor++;\n\n\t\t\t\t\t\t\tfor (;;)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// Find closing quote\n\t\t\t\t\t\t\t\tquoteSearch = input.indexOf(quoteChar, quoteSearch + 1);\n\n\t\t\t\t\t\t\t\t//No other quotes are found - no other delimiters\n\t\t\t\t\t\t\t\tif (quoteSearch === -1)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (!ignoreLastRow) {\n\t\t\t\t\t\t\t\t\t\t// No closing quote... what a pity\n\t\t\t\t\t\t\t\t\t\terrors.push({\n\t\t\t\t\t\t\t\t\t\t\ttype: 'Quotes',\n\t\t\t\t\t\t\t\t\t\t\tcode: 'MissingQuotes',\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'Quoted field unterminated',\n\t\t\t\t\t\t\t\t\t\t\trow: data.length,\t// row has yet to be inserted\n\t\t\t\t\t\t\t\t\t\t\tindex: cursor\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn finish();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Closing quote at EOF\n\t\t\t\t\t\t\t\tif (quoteSearch === inputLen - 1)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar value = input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar);\n\t\t\t\t\t\t\t\t\treturn finish(value);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If this quote is escaped, it's part of the data; skip it\n\t\t\t\t\t\t\t\t// If the quote character is the escape character, then check if the next character is the escape character\n\t\t\t\t\t\t\t\tif (quoteChar === escapeChar && input[quoteSearch + 1] === escapeChar)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tquoteSearch++;\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If the quote character is not the escape character, then check if the previous character was the escape character\n\t\t\t\t\t\t\t\tif (quoteChar !== escapeChar && quoteSearch !== 0 && input[quoteSearch - 1] === escapeChar)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar spacesBetweenQuoteAndDelimiter = extraSpaces(nextDelim);\n\n\t\t\t\t\t\t\t\t// Closing quote followed by delimiter or 'unnecessary steps + delimiter'\n\t\t\t\t\t\t\t\tif (input[quoteSearch + 1 + spacesBetweenQuoteAndDelimiter] === delim)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trow.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n\t\t\t\t\t\t\t\t\tcursor = quoteSearch + 1 + spacesBetweenQuoteAndDelimiter + delimLen;\n\t\t\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar spacesBetweenQuoteAndNewLine = extraSpaces(nextNewline);\n\n\t\t\t\t\t\t\t\t// Closing quote followed by newline or 'unnecessary spaces + newLine'\n\t\t\t\t\t\t\t\tif (input.substr(quoteSearch + 1 + spacesBetweenQuoteAndNewLine, newlineLen) === newline)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trow.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n\t\t\t\t\t\t\t\t\tsaveRow(quoteSearch + 1 + spacesBetweenQuoteAndNewLine + newlineLen);\n\t\t\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\t// because we may have skipped the nextDelim in the quoted field\n\n\t\t\t\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (preview && data.length >= preview)\n\t\t\t\t\t\t\t\t\t\treturn returnable(true);\n\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\t\t// Checks for valid closing quotes are complete (escaped quotes or quote followed by EOF/delimiter/newline) -- assume these quotes are part of an invalid text string\n\t\t\t\t\t\t\t\terrors.push({\n\t\t\t\t\t\t\t\t\ttype: 'Quotes',\n\t\t\t\t\t\t\t\t\tcode: 'InvalidQuotes',\n\t\t\t\t\t\t\t\t\tmessage: 'Trailing quote on quoted field is malformed',\n\t\t\t\t\t\t\t\t\trow: data.length,\t// row has yet to be inserted\n\t\t\t\t\t\t\t\t\tindex: cursor\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquoteSearch++;\n\t\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Comment found at start of new line\n\t\t\t\t\t\tif (comments && row.length === 0 && input.substr(cursor, commentsLen) === comments)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (nextNewline === -1)\t// Comment ends at EOF\n\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\tcursor = nextNewline + newlineLen;\n\t\t\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Next delimiter comes before next newline, so we've reached end of field\n\t\t\t\t\t\tif (nextDelim !== -1 && (nextDelim < nextNewline || nextNewline === -1))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow.push(input.substring(cursor, nextDelim));\n\t\t\t\t\t\t\tcursor = nextDelim + delimLen;\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// End of row\n\t\t\t\t\t\tif (nextNewline !== -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow.push(input.substring(cursor, nextNewline));\n\t\t\t\t\t\t\tsaveRow(nextNewline + newlineLen);\n\n\t\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (preview && data.length >= preview)\n\t\t\t\t\t\t\t\treturn returnable(true);\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\n\t\t\t\t\treturn finish();\n\n\n\t\t\t\t\tfunction pushRow(row)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata.push(row);\n\t\t\t\t\t\tlastCursor = cursor;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t * checks if there are extra spaces after closing quote and given index without any text\n\t\t * if Yes, returns the number of spaces\n\t\t */\n\t\t\t\t\tfunction extraSpaces(index) {\n\t\t\t\t\t\tvar spaceLength = 0;\n\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\tvar textBetweenClosingQuoteAndIndex = input.substring(quoteSearch + 1, index);\n\t\t\t\t\t\t\tif (textBetweenClosingQuoteAndIndex && textBetweenClosingQuoteAndIndex.trim() === '') {\n\t\t\t\t\t\t\t\tspaceLength = textBetweenClosingQuoteAndIndex.length;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn spaceLength;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Appends the remaining input from cursor to the end into\n\t\t\t\t\t * row, saves the row, calls step, and returns the results.\n\t\t\t\t\t */\n\t\t\t\t\tfunction finish(value)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (ignoreLastRow)\n\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\tif (typeof value === 'undefined')\n\t\t\t\t\t\t\tvalue = input.substr(cursor);\n\t\t\t\t\t\trow.push(value);\n\t\t\t\t\t\tcursor = inputLen;\t// important in case parsing is paused\n\t\t\t\t\t\tpushRow(row);\n\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Appends the current row to the results. It sets the cursor\n\t\t\t\t\t * to newCursor and finds the nextNewline. The caller should\n\t\t\t\t\t * take care to execute user's step function and check for\n\t\t\t\t\t * preview and end parsing if necessary.\n\t\t\t\t\t */\n\t\t\t\t\tfunction saveRow(newCursor)\n\t\t\t\t\t{\n\t\t\t\t\t\tcursor = newCursor;\n\t\t\t\t\t\tpushRow(row);\n\t\t\t\t\t\trow = [];\n\t\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\t}\n\n\t\t\t\t\t/** Returns an object with the results, errors, and meta. */\n\t\t\t\t\tfunction returnable(stopped)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\terrors: errors,\n\t\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\t\tdelimiter: delim,\n\t\t\t\t\t\t\t\tlinebreak: newline,\n\t\t\t\t\t\t\t\taborted: aborted,\n\t\t\t\t\t\t\t\ttruncated: !!stopped,\n\t\t\t\t\t\t\t\tcursor: lastCursor + (baseIndex || 0)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t/** Executes the user's step function and resets data & errors. */\n\t\t\t\t\tfunction doStep()\n\t\t\t\t\t{\n\t\t\t\t\t\tstep(returnable());\n\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\terrors = [];\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t/** Sets the abort flag */\n\t\t\t\tthis.abort = function()\n\t\t\t\t{\n\t\t\t\t\taborted = true;\n\t\t\t\t};\n\n\t\t\t\t/** Gets the cursor position */\n\t\t\t\tthis.getCharIndex = function()\n\t\t\t\t{\n\t\t\t\t\treturn cursor;\n\t\t\t\t};\n\t\t\t}\n\n\n\t\t\t// If you need to load Papa Parse asynchronously and you also need worker threads, hard-code\n\t\t\t// the script path here. See: https://github.com/mholt/PapaParse/issues/87#issuecomment-57885358\n\t\t\tfunction getScriptPath()\n\t\t\t{\n\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\treturn scripts.length ? scripts[scripts.length - 1].src : '';\n\t\t\t}\n\n\t\t\tfunction newWorker()\n\t\t\t{\n\t\t\t\tif (!Papa.WORKERS_SUPPORTED)\n\t\t\t\t\treturn false;\n\t\t\t\tif (!LOADED_SYNC && Papa.SCRIPT_PATH === null)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Script path cannot be determined automatically when Papa Parse is loaded asynchronously. ' +\n\t\t\t\t\t\t'You need to set Papa.SCRIPT_PATH manually.'\n\t\t\t\t\t);\n\t\t\t\tvar workerUrl = Papa.SCRIPT_PATH || AUTO_SCRIPT_PATH;\n\t\t\t\t// Append 'papaworker' to the search string to tell papaparse that this is our worker.\n\t\t\t\tworkerUrl += (workerUrl.indexOf('?') !== -1 ? '&' : '?') + 'papaworker';\n\t\t\t\tvar w = new global.Worker(workerUrl);\n\t\t\t\tw.onmessage = mainThreadReceivedMessage;\n\t\t\t\tw.id = workerIdCounter++;\n\t\t\t\tworkers[w.id] = w;\n\t\t\t\treturn w;\n\t\t\t}\n\n\t\t\t/** Callback when main thread receives a message */\n\t\t\tfunction mainThreadReceivedMessage(e)\n\t\t\t{\n\t\t\t\tvar msg = e.data;\n\t\t\t\tvar worker = workers[msg.workerId];\n\t\t\t\tvar aborted = false;\n\n\t\t\t\tif (msg.error)\n\t\t\t\t\tworker.userError(msg.error, msg.file);\n\t\t\t\telse if (msg.results && msg.results.data)\n\t\t\t\t{\n\t\t\t\t\tvar abort = function() {\n\t\t\t\t\t\taborted = true;\n\t\t\t\t\t\tcompleteWorker(msg.workerId, { data: [], errors: [], meta: { aborted: true } });\n\t\t\t\t\t};\n\n\t\t\t\t\tvar handle = {\n\t\t\t\t\t\tabort: abort,\n\t\t\t\t\t\tpause: notImplemented,\n\t\t\t\t\t\tresume: notImplemented\n\t\t\t\t\t};\n\n\t\t\t\t\tif (isFunction(worker.userStep))\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var i = 0; i < msg.results.data.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tworker.userStep({\n\t\t\t\t\t\t\t\tdata: [msg.results.data[i]],\n\t\t\t\t\t\t\t\terrors: msg.results.errors,\n\t\t\t\t\t\t\t\tmeta: msg.results.meta\n\t\t\t\t\t\t\t}, handle);\n\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete msg.results;\t// free memory ASAP\n\t\t\t\t\t}\n\t\t\t\t\telse if (isFunction(worker.userChunk))\n\t\t\t\t\t{\n\t\t\t\t\t\tworker.userChunk(msg.results, handle, msg.file);\n\t\t\t\t\t\tdelete msg.results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (msg.finished && !aborted)\n\t\t\t\t\tcompleteWorker(msg.workerId, msg.results);\n\t\t\t}\n\n\t\t\tfunction completeWorker(workerId, results) {\n\t\t\t\tvar worker = workers[workerId];\n\t\t\t\tif (isFunction(worker.userComplete))\n\t\t\t\t\tworker.userComplete(results);\n\t\t\t\tworker.terminate();\n\t\t\t\tdelete workers[workerId];\n\t\t\t}\n\n\t\t\tfunction notImplemented() {\n\t\t\t\tthrow 'Not implemented.';\n\t\t\t}\n\n\t\t\t/** Callback when worker thread receives a message */\n\t\t\tfunction workerThreadReceivedMessage(e)\n\t\t\t{\n\t\t\t\tvar msg = e.data;\n\n\t\t\t\tif (typeof Papa.WORKER_ID === 'undefined' && msg)\n\t\t\t\t\tPapa.WORKER_ID = msg.workerId;\n\n\t\t\t\tif (typeof msg.input === 'string')\n\t\t\t\t{\n\t\t\t\t\tglobal.postMessage({\n\t\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\t\tresults: Papa.parse(msg.input, msg.config),\n\t\t\t\t\t\tfinished: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if ((global.File && msg.input instanceof File) || msg.input instanceof Object)\t// thank you, Safari (see issue #106)\n\t\t\t\t{\n\t\t\t\t\tvar results = Papa.parse(msg.input, msg.config);\n\t\t\t\t\tif (results)\n\t\t\t\t\t\tglobal.postMessage({\n\t\t\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\t\t\tresults: results,\n\t\t\t\t\t\t\tfinished: true\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** Makes a deep copy of an array or object (mostly) */\n\t\t\tfunction copy(obj)\n\t\t\t{\n\t\t\t\tif (typeof obj !== 'object')\n\t\t\t\t\treturn obj;\n\t\t\t\tvar cpy = obj instanceof Array ? [] : {};\n\t\t\t\tfor (var key in obj)\n\t\t\t\t\tcpy[key] = copy(obj[key]);\n\t\t\t\treturn cpy;\n\t\t\t}\n\n\t\t\tfunction bindFunction(f, self)\n\t\t\t{\n\t\t\t\treturn function() { f.apply(self, arguments); };\n\t\t\t}\n\n\t\t\tfunction isFunction(func)\n\t\t\t{\n\t\t\t\treturn typeof func === 'function';\n\t\t\t}\n\n\t\t\treturn Papa;\n\t\t})); \n\t} (papaparse$1));\n\treturn papaparse$1.exports;\n}\n\nvar papaparseExports = requirePapaparse();\nvar Mama = /*@__PURE__*/getDefaultExportFromCjs(papaparseExports);\n\nvar __defProp$y = Object.defineProperty;\nvar __getOwnPropDesc$A = Object.getOwnPropertyDescriptor;\nvar __decorateClass$A = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$A(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$y(target, key, result);\n return result;\n};\nlet DhTableOld = class extends LitElement {\n constructor() {\n super(...arguments);\n this.sortable = false;\n this.positionable = false;\n this.manipulable = false;\n this.notAddRow = false;\n this.notCloneRow = false;\n this.notRemoveRow = false;\n this.editable = false;\n this.notSelectable = false;\n this.withCheckbox = false;\n this.generalFilter = false;\n this.activeFilter = false;\n this.filterLabel = \"search\";\n this.lineHeight = 36;\n this.activeFilterLabel = \"hide inactive rows\";\n this.downloadable = false;\n this.uploadable = false;\n this.encoding = \"65001\";\n this.selectHeaderValue = \"selection\";\n this.addRowTitle = \"add row\";\n this.cloneRowTitle = \"clone row\";\n this.removeRowTitle = \"remove row\";\n this.rowPositionUpTitle = \"move row up\";\n this.rowPositionDownTitle = \"move row down\";\n this.checkAllRowsTitle = \"select all rows\";\n this.offsetY = \"0px\";\n this.columnWidths = [];\n this.theTableObject = {\n header: [\n {\n title: \"\",\n key: \"\",\n type: \"\",\n attributes: [],\n defaultWidth: \"\"\n }\n ],\n rows: []\n };\n this.defaultWidth = \"200px\";\n this.useSingleSelect = false;\n this.timer = 0;\n this.delay = 200;\n this.prevent = false;\n this.filteredRows = [];\n this.filterRules = [];\n this.rowTemplate = null;\n this.headerRowTemplate = null;\n this.visibleNodes = [];\n this.firstShiftPressedElementId = \"\";\n this.filterValue = \"\";\n this.isEdited = false;\n this.isResizing = false;\n this.dateOptions = { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" };\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-table-old\")) {\n this.setAttribute(\"dh-table-old\", \"\");\n }\n }\n firstUpdated() {\n requestAnimationFrame(() => this.syncHeaderWithScrollbarGutter());\n new ResizeObserver(() => this.syncHeaderWithScrollbarGutter()).observe(this);\n }\n syncHeaderWithScrollbarGutter() {\n const scrollContainer = this.shadowRoot?.querySelector(\"#scroll-container\");\n if (!scrollContainer || !this.headerContainer?.parentElement) {\n return;\n }\n const wrapper = this.headerContainer.parentElement;\n if (wrapper.clientWidth === 0) {\n return;\n }\n const gutter = Math.max(0, wrapper.clientWidth - scrollContainer.clientWidth);\n this.style.setProperty(\"--_header-gutter\", `${gutter}px`);\n }\n set tableObject(data) {\n this.theTableObject = this.validateObject(data);\n this.filteredRows = data.rows;\n this.filterRows();\n }\n render() {\n const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n const expectedLength = 1 + this.theTableObject.header.length;\n if (this.columnWidths.length !== expectedLength) {\n this.columnWidths = this.buildColumnWidths(savedWidths);\n }\n return html`\n <dh-dimmer id=\"table-dimmer\" class=\"hidden\"></dh-dimmer>\n <div id=\"manipulation-container\" part=\"header\">${this.renderManipulationElements()}</div>\n <div id=\"horizontal-scroll-wrapper\">\n <div\n id=\"header-container\"\n class=\"th\"\n @mouseup=${this.sortable ? this.clickHeader : null}\n @resize=\"${this.resizeBodyCells}\"\n @resizeStop=\"${this.stopResizing}\"\n >\n ${this.renderColgroup()}\n <slot id=\"table-head\" name=\"table-head\"></slot>\n ${guard(\n [this.theTableObject.header[0].title],\n () => this.headerRowTemplate ? this.headerRowTemplate(this.theTableObject.header) : this.renderTableHeaderRow(savedWidths)\n )}\n </div>\n <div id=\"scroll-container\" part=\"scroll\" @scroll=\"${this.updateScrollView}\" @cellIsEdit=\"${this.filterRows}\">\n <div id=\"table-container\" part=\"content\" style=\"height: ${this.getTotalContentHeight()}\">\n <div class=\"table\" style=\"transform: translateY(${this.offsetY})\">\n ${this.renderColgroup()}\n <div id=\"tb\" class=\"tb\" @click=\"${this.onClickEvent}\" @dblclick=\"${this.dblclick}\">\n <slot id=\"table-body\" name=\"table-body\"></slot>\n ${this.visibleNodes ? this.visibleNodes.map((row) => {\n if (this.rowTemplate) {\n return html`${this.rowTemplate(row)}`;\n } else {\n if (!row.id) {\n row.id = `${Math.floor(Math.random() * 1e6)}${Math.floor(Math.random() * 1e6)}${Math.floor(\n Math.random() * 1e6\n )}`;\n }\n if (row.isSelected == void 0) {\n row.isSelected = false;\n }\n return this.renderTableRow(row, savedWidths);\n }\n }) : null}\n </div>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n renderManipulationElements() {\n return html`<dh-button\n id=\"check-all-rows\"\n class=\"${this.manipulable && this.withCheckbox && !this.notSelectable ? \"button\" : \"hidden\"}\"\n @click=\"${this.checkAllRows}\"\n title=\"${this.checkAllRowsTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-check\"></div\n ></dh-button>\n <dh-button\n id=\"add-row\"\n class=\"${this.manipulable && !this.notAddRow ? \"button\" : \"hidden\"}\"\n @click=\"${this.addNewRow}\"\n title=\"${this.addRowTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-plus\"></div\n ></dh-button>\n <dh-button\n id=\"clone-row\"\n class=\"${this.manipulable && !this.notCloneRow ? \"button\" : \"hidden\"}\"\n @click=\"${this.cloneRow}\"\n title=\"${this.cloneRowTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-content-copy\"></div\n ></dh-button>\n <dh-button\n id=\"remove-row\"\n class=\"${this.manipulable && !this.notRemoveRow ? \"button\" : \"hidden\"}\"\n @click=\"${this.removeRow}\"\n title=\"${this.removeRowTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-delete\"></div\n ></dh-button>\n <dh-button\n id=\"export-button\"\n class=\"${this.manipulable && this.downloadable ? \"button\" : \"hidden\"}\"\n @click=\"${this.exportTableAsCsv}\"\n title=\"download\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-download\"></div\n ></dh-button>\n <dh-button\n id=\"import-button\"\n class=\"${this.manipulable && this.uploadable ? \"button\" : \"hidden\"}\"\n @click=\"${this.openUploadFileDialog}\"\n title=\"upload\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-upload\"></div\n ></dh-button>\n <dh-button\n id=\"position-up\"\n class=\"${this.positionable ? \"button\" : \"hidden\"}\"\n @click=\"${this.positionUp}\"\n title=\"${this.rowPositionUpTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-arrow-down-2\" style=\"transform: rotate(180deg)\"></div\n ></dh-button>\n <dh-button\n id=\"position-down\"\n class=\"${this.positionable ? \"button\" : \"hidden\"}\"\n @click=\"${this.positionDown}\"\n title=\"${this.rowPositionDownTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-arrow-down-2\"></div\n ></dh-button>\n <input id=\"upload-input\" type=\"file\" accept=\".txt, .csv\" hidden @click=\"${this.resetValue}\" @change=\"${this.readFile}\"\"/>\n <div id=\"general-filter-container\" class=\"${this.generalFilter ? \"flex-row\" : \"flex-row hidden\"}\" @input=\"${this.filterText}\">\n <dh-input\n id=\"filter-input\"\n variant=\"classic\"\n placeholder=\"${this.filterLabel}\"\n exportparts=\"root: dh-filter-root, input: dh-filter-input, label: dh-filter-label, supporting-text: dh-filter-supporting-text\"\n ></dh-input>\n </div>\n <div id=\"active-filter-container\" class=\"${this.activeFilter ? \"flex-row\" : \"flex-row hidden\"}\" @isChange=\"${this.filterRows}\">\n <dh-checkbox id=\"active-filter-input\" type=\"checkbox\" exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"></dh-checkbox>\n <span>${this.activeFilterLabel}</span>\n </div>`;\n }\n renderTableHeaderRow(savedWidths) {\n return html`<dh-table-row class=\"head row\">\n ${this.selectHeaderValue}\n </dh-table-head-cell>\n ${this.theTableObject.header ? this.theTableObject.header.map((cell, index) => {\n return html`<dh-table-head-cell\n class=\"${this.sortable ? \"unsorted\" : \"\"}\"\n type=\"${cell.type}\"\n key=\"${cell.key}\"\n ?useStandard=${this.useStandard(cell.attributes)}\n sorting=\"${this.sortable ? \"unsorted\" : \"\"}\"\n ?notSortable=\"${cell.attributes.includes(\"notSortable\")}\"\n >\n ${cell.title}\n </dh-table-head-cell>`;\n }) : null}\n </dh-table-row>`;\n }\n renderTableRow(row, savedWidths) {\n return html`\n <dh-table-row\n class=\"${row.isSelected ? \"row body selected\" : \"row body\"}\"\n id=\"${row.id}\"\n ?notDeletable=\"${row.notDeletable}\"\n ?notEditable=\"${row.notEditable}\"\n ?notCloneable=\"${row.notCloneable}\"\n >\n <dh-checkbox ?checked=${row.isSelected} exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"></dh-checkbox>\n </dh-table-body-cell>\n ${row ? row.map(\n (cell, index) => html`\n ${choose(this.theTableObject.header[index]?.type, [\n [\"selectbox\", () => this.renderSelectboxCell(cell, index, savedWidths)],\n [\"checkbox\", () => this.renderCheckboxCell(cell, index, savedWidths)],\n [\"text\", () => this.renderTextCell(cell, index, savedWidths)],\n [\"number\", () => this.renderNumberCell(cell, index, savedWidths)],\n [\"date\", () => this.renderDateCell(cell, index, savedWidths)],\n [\"dropdown\", () => this.renderDropdownCell(cell, index, savedWidths)],\n [\"img\", () => this.renderImgCell(cell, index, savedWidths)],\n [\"button\", () => this.renderButtonCell(cell, index, savedWidths)]\n ])}\n `\n ) : null}\n </dh-table-row>\n `;\n }\n renderSelectboxCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell type=\"selectbox\">\n <dh-checkbox\n index=\"${index}\"\n ?checked=${cell.value ? !!parseInt(cell.value) : false}\n ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n ></dh-checkbox>\n </dh-table-body-cell>\n `;\n }\n renderCheckboxCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"checkbox\"\n ?checked=${typeof cell.value === \"boolean\" ? cell.value : cell.value ? !!parseInt(cell.value) : false}\n ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input\"\n >\n <dh-checkbox\n index=\"${index}\"\n ?checked=${typeof cell.value === \"boolean\" ? cell.value : cell.value ? !!parseInt(cell.value) : false}\n ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n ></dh-checkbox>\n </dh-table-body-cell>\n `;\n }\n renderTextCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"text\"\n ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n >${cell.value}</dh-table-body-cell\n >\n `;\n }\n renderNumberCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"number\"\n ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n >${cell.value}</dh-table-body-cell\n >\n `;\n }\n renderDateCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"date\"\n ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n .valueAsDate=\"${cell.value ? new Intl.DateTimeFormat(navigator.language, this.dateOptions).format(new Date(cell.value)) : void 0}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n >${cell.value ? new Intl.DateTimeFormat(navigator.language, this.dateOptions).format(new Date(cell.value)) : \"\"}</dh-table-body-cell\n >\n `;\n }\n renderDropdownCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"dropdown\"\n ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n >\n <dh-select\n ?withoutEmptyDefault=\"${this.theTableObject.header[index].attributes.indexOf(\"withoutEmptyDefault\") > -1}\"\n ?disabled=\"${this.isNotEditable(cell.attributes)}\"\n .selectOptions=\"${cell.objectValues}\"\n exportparts=\"root: dh-select-root, trigger: dh-select-trigger, label: dh-select-label, icon: dh-select-icon, menu: dh-select-menu, input: dh-select-input, content: dh-select-content, item: dh-select-item, selected: dh-select-selected\"\n >\n </dh-select>\n </dh-table-body-cell>\n `;\n }\n renderImgCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell type=\"img\" ?notEditable=\"${this.isNotEditable(cell.attributes)}\">\n <img class=\"img\" index=\"${index}\" src=\"${cell.value}\" />\n </dh-table-body-cell>\n `;\n }\n renderButtonCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell type=\"img\" ?notEditable=\"${this.isNotEditable(cell.attributes)}\">\n <dh-button\n class=\"img\"\n index=\"${index}\"\n variant=\"outlined\"\n .buttonText=\"${cell.value}\"\n exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n ></dh-button>\n </dh-table-body-cell>\n `;\n }\n getTableObject() {\n return this.theTableObject;\n }\n validateObject(data) {\n data.header.forEach((head) => {\n if (head.attributes === void 0) {\n head.attributes = [];\n }\n if (head.defaultWidth === void 0) {\n head.defaultWidth = \"\";\n }\n });\n data.rows.forEach((row) => {\n row.forEach((cell) => {\n if (cell.attributes === void 0) {\n cell.attributes = [];\n }\n if (cell.objectValues === void 0) {\n cell.objectValues = [];\n }\n });\n });\n return data;\n }\n getUseStandard(index) {\n return Array.from(this.getHeaderRow().children)[index].hasAttribute(\"useStandard\");\n }\n onClickEvent(event2) {\n const newEvent = this.cloneEvent(event2);\n const mouseEvent = event2;\n const isCtrlPressed = mouseEvent.ctrlKey;\n const isShiftPressed = mouseEvent.shiftKey;\n const target = event2.target.parentElement;\n const tagName = target?.tagName;\n this.timer = window.setTimeout(() => {\n if (!this.prevent) {\n if (target?.getAttribute(\"type\") != \"dropdown\") {\n if ((isCtrlPressed || tagName?.toLowerCase() == \"dh-table-body-cell-old\" || tagName?.toLowerCase() == \"dh-table-row-old\") && !isShiftPressed) {\n this.editingCellContent(newEvent);\n if (!this.isEdited) {\n this.selectRow(newEvent);\n }\n this.isEdited = false;\n } else if (isShiftPressed) {\n this.multiSelectRow(newEvent);\n }\n }\n }\n }, this.delay);\n this.prevent = false;\n }\n cloneEvent(event2) {\n const clone = {};\n for (const p in event2) {\n const d = Object.getOwnPropertyDescriptor(event2, p);\n if (d && (!d.writable || !d.configurable || !d.enumerable || d.get || d.set)) {\n Object.defineProperty(clone, p, d);\n } else {\n clone[p] = event2[p];\n }\n }\n Object.setPrototypeOf(clone, event2);\n return clone;\n }\n dblclick(event2) {\n clearTimeout(this.timer);\n this.prevent = true;\n const target = event2.target.parentElement;\n const tagName = target?.tagName;\n if (tagName?.toLowerCase() == \"dh-table-body-cell-old\") {\n const row = target?.parentElement;\n this.dblRowClick.dispatch(row);\n } else if (tagName?.toLowerCase() == \"dh-table-row-old\") {\n this.dblRowClick.dispatch(target);\n }\n }\n resizeBodyCells(event2) {\n this.isResizing = true;\n const { width, headerKey } = event2.detail;\n const headerRow = this.getHeaderRow();\n const cellIndex = Array.from(headerRow.children).findIndex((child) => child.getAttribute(\"key\") === headerKey);\n if (cellIndex === -1) return;\n const updated = [...this.columnWidths];\n updated[cellIndex] = width;\n this.columnWidths = updated;\n const dataIndex = cellIndex - 1;\n if (dataIndex >= 0) {\n const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n savedWidths[dataIndex] = width;\n localStorage.setItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`, JSON.stringify(savedWidths));\n }\n }\n stopResizing() {\n this.isResizing = false;\n }\n buildColumnWidths(savedWidths) {\n const widths = [];\n widths.push(\"65px\");\n this.theTableObject.header.forEach((cell, index) => {\n widths.push(savedWidths[index] || cell.defaultWidth || this.defaultWidth);\n });\n return widths;\n }\n renderColgroup() {\n return html`<colgroup>\n ${this.columnWidths.map((w) => html`<col style=\"width:${w}\" />`)}\n </colgroup>`;\n }\n //Methoden zum manipulieren von Reihen\n addNewRow(event2) {\n event2.stopPropagation();\n const newRow = new TableRowArray();\n newRow.isNewRow = true;\n const currentMaxPosition = this.theTableObject.rows.reduce((row, currentRow) => Math.max(row, currentRow.position), 0);\n newRow.position = currentMaxPosition + 1;\n newRow.id = crypto.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n for (let i = 0; i < this.theTableObject.header.length; i++) {\n newRow.push({\n value: \"\",\n objectValues: [{ id: \"\", name: \"\", selected: \"\" }],\n attributes: []\n });\n }\n this.theTableObject.rows.push(newRow);\n this.filteredRows.push(newRow);\n this.updateScrollView();\n this.addNewRowEvent.dispatch(newRow);\n }\n removeRow(event2) {\n event2.stopPropagation();\n let selectedRows = this.theTableObject.rows.filter((row) => row.isSelected);\n const notDeletableRow = selectedRows.filter((row) => row.notDeletable);\n selectedRows = selectedRows.filter((row) => !row.notDeletable);\n notDeletableRow.forEach((row) => row.isSelected = false);\n selectedRows.forEach((row) => {\n const id = row.id;\n const index = this.theTableObject.rows.findIndex((row2) => row2.id == id);\n this.theTableObject.rows.splice(index, 1);\n const filteredIndex = this.filteredRows.findIndex((row2) => row2.id == id);\n if (filteredIndex > -1) {\n this.filteredRows.splice(filteredIndex, 1);\n }\n this.removeRowEvent.dispatch(id);\n });\n this.removeRows.dispatch(selectedRows);\n const checkAllRowsButton = this.checkAllRowsButton;\n checkAllRowsButton.removeAttribute(\"checkedAll\");\n checkAllRowsButton.classList.remove(\"checkedAll\");\n this.theTableObject.rows.forEach((row) => row.isSelected = false);\n this.checkAllRowsEvent.dispatch({ isChecked: false, rows: this.filteredRows });\n this.updateScrollView();\n }\n cloneRow(event2) {\n event2.stopPropagation();\n let selectedRows = this.theTableObject.rows.filter((row) => row.isSelected);\n const notCloneableRows = selectedRows.filter((row) => row.notCloneable);\n selectedRows = selectedRows.filter((row) => !row.notCloneable);\n notCloneableRows.forEach((row) => row.isSelected = false);\n selectedRows.forEach((row) => {\n const id = row.id;\n const sameRow = this.getSameRow(id);\n const index = this.theTableObject.rows.findIndex((row2) => row2.id == id);\n if (sameRow) {\n const clonedRow = sameRow.clone();\n clonedRow.position = sameRow.position + 1;\n let counter = 0;\n for (let i = index + 1; i < this.theTableObject.rows.length; i++) {\n this.theTableObject.rows[i].position = sameRow.position + 2 + counter;\n counter++;\n }\n this.theTableObject.rows.splice(index + 1, 0, clonedRow);\n const filteredIndex = this.filteredRows.findIndex((r) => r.id == id);\n if (filteredIndex > -1) {\n this.filteredRows.splice(filteredIndex + 1, 0, clonedRow);\n }\n this.clonedRowEvent.dispatch(this.theTableObject.rows);\n }\n });\n const checkAllRowsButton = this.checkAllRowsButton;\n checkAllRowsButton.removeAttribute(\"checkedAll\");\n checkAllRowsButton.classList.remove(\"checkedAll\");\n this.theTableObject.rows.forEach((row) => row.isSelected = false);\n this.checkAllRowsEvent.dispatch({ isChecked: false, rows: this.filteredRows });\n this.updateScrollView();\n }\n checkAllRows(event2) {\n const checkAllRowsButton = this.checkAllRowsButton;\n const isChecked = checkAllRowsButton.hasAttribute(\"checkedAll\");\n if (isChecked) {\n checkAllRowsButton.removeAttribute(\"checkedAll\");\n checkAllRowsButton.classList.remove(\"checkedAll\");\n this.filteredRows.forEach((row) => {\n const selectedRow = this.theTableObject.rows.find((tableRow) => tableRow.id == row.id);\n if (selectedRow) {\n selectedRow.isSelected = false;\n }\n });\n } else {\n checkAllRowsButton.setAttribute(\"checkedAll\", \"\");\n checkAllRowsButton.classList.add(\"checkedAll\");\n this.filteredRows.forEach((row) => {\n const selectedRow = this.theTableObject.rows.find((tableRow) => tableRow.id == row.id);\n if (selectedRow) {\n selectedRow.isSelected = true;\n }\n });\n }\n this.updateScrollView();\n this.checkAllRowsEvent.dispatch({ isChecked: !isChecked, rows: this.filteredRows });\n }\n editingCellContent(event2) {\n const mouseEvent = event2;\n const isCtrlPressed = mouseEvent.ctrlKey;\n if (!isCtrlPressed) {\n let cell = event2.target;\n if (cell.tagName.toLowerCase() == \"dh-table-row-old\") {\n return;\n }\n if (cell.tagName.toLowerCase() != \"dh-table-body-cell-old\") {\n const realCell = cell.closest(\"dh-table-body-cell-old\");\n if (realCell) {\n cell = realCell;\n }\n }\n const targetParentRow = cell.closest(\"dh-table-row-old\");\n if (cell) {\n if (this.editable) {\n if (!cell.hasAttribute(\"notEditable\")) {\n if (!targetParentRow?.hasAttribute(\"notEditable\")) {\n this.editingRowEvent.dispatch(targetParentRow);\n if (cell.type != \"checkbox\" && cell.type != \"selectbox\" && cell.type != \"dropdown\") {\n cell.setMode(\"edit\");\n let cellValue = cell.innerText.trim();\n if (!cellValue) {\n cellValue = cell.value;\n }\n cell.value = cellValue;\n cell.setInputFocus();\n }\n if (cell.type != \"selectbox\") {\n this.isEdited = true;\n }\n }\n }\n }\n }\n }\n }\n //Methoden für die Sortierung\n clickHeader(event2) {\n if (this.isResizing) {\n return;\n }\n if (this.theTableObject.rows.length <= 1) {\n return;\n }\n const target = event2.target;\n const key = target.getAttribute(\"key\");\n const header = this.theTableObject.header.find((head) => head.key == key);\n const isNotSortable = header?.attributes.some((attribute) => attribute == \"notSortable\");\n if (isNotSortable) {\n return;\n }\n if (header) {\n let direction = \"asc\";\n if (target.classList.contains(\"asc\")) {\n direction = \"desc\";\n target.classList.remove(\"asc\");\n } else {\n target.classList.add(\"asc\");\n }\n this.theTableObject.rows = this.sort(header, direction, this.theTableObject.rows);\n this.sortedRows.dispatch(this.theTableObject);\n this.toggleSortIconClasses(target, direction);\n this.filterRows();\n }\n }\n sort(header, direction, array) {\n if (array.length <= 1) {\n return array;\n }\n const type = header.type;\n let pivotIndex = 0;\n let pivot = array[pivotIndex];\n let headerIndex = this.theTableObject.header.findIndex((head) => head.key == header.key);\n let pivotValue = pivot[headerIndex].value;\n let counter = 0;\n do {\n pivotIndex = Math.floor(Math.random() * array.length);\n pivot = array[pivotIndex];\n headerIndex = this.theTableObject.header.findIndex((head) => head.key == header.key);\n pivotValue = pivot[headerIndex].value;\n counter++;\n } while (pivotValue == \"\" && counter <= 1e4);\n const left = [];\n const right = [];\n const invalidDates = [];\n for (let i = 0; i < array.length; i++) {\n if (i == pivotIndex) {\n continue;\n }\n let value = array[i][headerIndex].value;\n if (type == \"number\") {\n pivotValue = parseFloat(pivotValue);\n if (isNaN(pivotValue)) {\n pivotValue = 0;\n }\n value = parseFloat(value);\n if (isNaN(value)) {\n value = 0;\n }\n } else if (type == \"date\") {\n pivotValue = new Date(pivotValue);\n value = new Date(value);\n } else if (type == \"text\") {\n pivotValue = pivotValue?.toLowerCase();\n value = value?.toLowerCase();\n }\n const isInvalidDate = value?.toString() == \"Invalid Date\";\n if (type == \"date\" && isInvalidDate) {\n if (direction == \"asc\") {\n invalidDates.push(array[i]);\n } else if (direction == \"desc\") {\n invalidDates.push(array[i]);\n }\n } else {\n if (direction == \"asc\") {\n value < pivotValue ? left.push(array[i]) : right.push(array[i]);\n } else if (direction == \"desc\") {\n value > pivotValue ? left.push(array[i]) : right.push(array[i]);\n }\n }\n }\n if (type == \"date\" && direction == \"asc\") {\n return invalidDates.concat(this.sort(header, direction, left), [pivot], this.sort(header, direction, right));\n } else if (type == \"date\" && direction == \"desc\") {\n return this.sort(header, direction, left).concat([pivot], this.sort(header, direction, right), invalidDates);\n } else {\n return this.sort(header, direction, left).concat([pivot], this.sort(header, direction, right));\n }\n }\n toggleSortIconClasses(target, sortType) {\n const parentElement = target.parentElement;\n if (parentElement) {\n const siblingElements = Array.from(parentElement.children);\n siblingElements.forEach((sibling) => {\n const isNotSortable = sibling.hasAttribute(\"notSortable\");\n if (!isNotSortable) {\n sibling.classList.remove(\"asc\", \"desc\");\n sibling.classList.add(\"unsorted\");\n sibling.setAttribute(\"sorting\", \"unsorted\");\n }\n });\n if (sortType == \"asc\") {\n target.classList.add(\"asc\");\n target.classList.remove(\"unsorted\");\n target.setAttribute(\"sorting\", \"asc\");\n } else {\n target.classList.add(\"desc\");\n target.classList.remove(\"unsorted\");\n target.setAttribute(\"sorting\", \"desc\");\n }\n }\n }\n //Hilfsmethoden\n getSameRow(id) {\n return this.theTableObject.rows.find((row) => row.id == id);\n }\n getSameRowIndex(id) {\n return this.theTableObject.rows.findIndex((row) => row.id == id);\n }\n getSameRowBasedOnIndex(index) {\n return this.theTableObject.rows[index];\n }\n getHeaderRow() {\n let row = this.querySelector(\"dh-table-row-old[slot=table-head]\");\n if (!row) {\n row = this.renderRoot.querySelector(\"dh-table-row-old.head\");\n }\n if (!row) {\n row = this.renderRoot.querySelector(\"div.th dh-table-row\");\n }\n return row;\n }\n getBodyRows() {\n let rows = Array.from(this.querySelectorAll(\"dh-table-row-old[slot=table-body]\"));\n if (rows.length == 0) {\n rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row-old.body\"));\n }\n if (rows.length == 0) {\n rows = Array.from(this.renderRoot.querySelectorAll(\"div.tb dh-table-row\"));\n }\n return rows;\n }\n async addFilterRule(value, index) {\n this.filterRules.push({ index, value });\n await this.filterRows();\n }\n removeFilterRule(value, index) {\n const removeIndex = this.filterRules.findIndex((rule) => rule.value == value && rule.index == index);\n this.filterRules.splice(removeIndex, 1);\n this.filterRows();\n }\n async filterText() {\n this.removeFilterRule(this.filterValue, -1);\n const value = this.filterInput.getInputValue().toLowerCase();\n this.filterValue = value;\n await this.addFilterRule(value, -1);\n this.filterInput.focus();\n }\n async filterRows() {\n const rows = this.theTableObject.rows.filter((row) => {\n return this.filterRules.every((rule) => {\n if (rule.index == -1) {\n return row.some((cell) => cell.value?.toString().toLowerCase().includes(rule.value));\n } else {\n return row[rule.index].value == rule.value;\n }\n });\n });\n if (this.activeFilter) {\n if (this.activeFilterInput?.getCheckboxIsChecked()) {\n this.filteredRows = rows.filter((row) => {\n return row.active;\n });\n } else {\n this.filteredRows = rows;\n }\n } else {\n this.filteredRows = rows;\n }\n this.updateScrollView();\n }\n isNotEditable(attributes) {\n return attributes.indexOf(\"notEditable\") > -1;\n }\n useStandard(attributes) {\n return attributes.indexOf(\"useStandard\") > -1;\n }\n getSelectedRows() {\n let rows = Array.from(this.querySelectorAll(\"dh-table-row-old[slot=table-body].selected\"));\n if (rows.length == 0) {\n rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row-old.selected\"));\n }\n return rows;\n }\n getRows() {\n let rows = Array.from(this.querySelectorAll(\"dh-table-row-old[slot=table-body]\"));\n if (rows.length == 0) {\n rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row-old\"));\n }\n return rows;\n }\n selectRow(event2) {\n if (this.notSelectable) {\n return;\n }\n const mouseEvent = event2;\n const target = mouseEvent.target.parentElement;\n const isCtrlPressed = mouseEvent?.ctrlKey;\n let row;\n if (target) {\n const tagName = target.tagName;\n if (tagName.toLowerCase() == \"dh-table-body-cell-old\") {\n row = target?.parentElement;\n } else {\n row = target;\n }\n this.selected(row, isCtrlPressed, tagName);\n }\n }\n async multiSelectRow(event2) {\n if (this.notSelectable) {\n return;\n }\n const target = event2.target.parentElement;\n const tagName = target?.tagName;\n let tableRow;\n const mouseEvent = event2;\n const isShiftPressed = mouseEvent.shiftKey;\n if (tagName?.toLowerCase() == \"dh-table-body-cell-old\") {\n tableRow = target?.parentElement;\n } else {\n tableRow = target;\n }\n if (isShiftPressed) {\n if (!this.firstShiftPressedElementId) {\n this.firstShiftPressedElementId = tableRow.id;\n } else {\n const firstIndex = this.theTableObject.rows.findIndex((row) => row.id == this.firstShiftPressedElementId);\n const lastIndex = this.theTableObject.rows.findIndex((row) => row.id == tableRow.id);\n let rangeSeries = [];\n if (firstIndex < lastIndex) {\n rangeSeries = this.theTableObject.rows.slice(firstIndex, lastIndex + 1);\n } else {\n rangeSeries = this.theTableObject.rows.slice(lastIndex, firstIndex + 1);\n }\n rangeSeries.forEach((row) => {\n row.isSelected = true;\n });\n this.firstShiftPressedElementId = \"\";\n await this.updateScrollView();\n this.rowRangeIsSelected.dispatch({ dataRowRange: rangeSeries });\n }\n }\n }\n async selected(row, isCtrlOrShiftPressed, tagName) {\n if (this.notSelectable) {\n return;\n }\n const id = row.getAttribute(\"id\");\n if (id) {\n const sameRow = this.getSameRow(id);\n if (id) {\n if (!this.useSingleSelect) {\n sameRow.isSelected = !sameRow.isSelected;\n await this.updateScrollView();\n this.anotherRowIsSelected.dispatch({ dataRow: sameRow });\n } else {\n this.theTableObject.rows.forEach((row2) => row2.isSelected = false);\n sameRow.isSelected = !sameRow.isSelected;\n await this.updateScrollView();\n this.singleRowIsSelected.dispatch({ dataRow: sameRow });\n }\n }\n }\n }\n async exportTableAsCsv() {\n const keys = [];\n let keyString = \"\";\n let contentString = \"\";\n this.theTableObject.header.forEach((head) => keys.push(head.key));\n keys.push(\"sortIndex\");\n for (let i = 0; i < keys.length; i++) {\n const title = keys[i];\n const halfCleanTitle = title.replace(\"\\\\\", \"\\\\\\\\\");\n const cleanTitle = halfCleanTitle.replace('\"', '\\\\\"');\n if (i == keys.length - 1) {\n keyString = keyString + '\"' + cleanTitle + '\"\\r\\n';\n contentString = keyString;\n } else {\n keyString = keyString + '\"' + cleanTitle + '\";';\n }\n }\n for (let i = 0; i < this.theTableObject.rows.length; i++) {\n let rowString = \"\";\n for (let x = 0; x < this.theTableObject.rows[i].length; x++) {\n const value = this.theTableObject.rows[i][x].value;\n const halfCleanValue = value.replace(\"\\\\\", \"\\\\\\\\\");\n const cleanValue = halfCleanValue.replace('\"', '\\\\\"');\n if (x == this.theTableObject.rows[i].length - 2 && i + 1 < this.theTableObject.rows.length) {\n rowString = rowString + '\"' + cleanValue + '\"\\r\\n';\n contentString = contentString + rowString;\n } else if (x == this.theTableObject.rows[i].length - 2 && i + 1 == this.theTableObject.rows[i].length) {\n rowString = rowString + '\"' + cleanValue + '\"';\n contentString = contentString + rowString;\n } else {\n rowString = rowString + '\"' + cleanValue + '\";';\n }\n }\n }\n try {\n const stringBuffer = cptable$1.utils.encode(this.encoding, contentString);\n const link = document.createElement(\"a\");\n const file = new Blob([new Uint8Array(stringBuffer)], { type: \"text/plain\" });\n link.href = URL.createObjectURL(file);\n link.download = \"table.csv\";\n link.click();\n URL.revokeObjectURL(link.href);\n } catch (e) {\n console.error(e);\n this.exportError.dispatch(e);\n }\n }\n openUploadFileDialog() {\n this.uploadInput.click();\n }\n async readFile() {\n const files = this.uploadInput.files;\n let file;\n if (files) {\n file = files[0];\n }\n const fileReader = new FileReader();\n if (file) {\n fileReader.readAsArrayBuffer(file);\n const buffer = await new Promise((resolve) => fileReader.addEventListener(\"load\", () => resolve(fileReader.result)));\n this.importTableAsCsv(buffer);\n }\n }\n importTableAsCsv(buffer) {\n try {\n const data = cptable$1.utils.decode(this.encoding, new Uint8Array(buffer));\n const importObject = Mama.parse(data, { delimiter: \";\" });\n const importData = { rows: importObject.data.slice(1), header: importObject.data.slice(0, 1)[0] };\n this.importTableData.dispatch(importData);\n } catch (e) {\n console.error(e);\n this.importError.dispatch(e);\n }\n }\n positionUp(event2) {\n const selectedRows = this.getSelectedRows();\n if (selectedRows.length > 1) {\n this.positionFail.dispatch({ error: \"Too many rows selected\" });\n return;\n }\n const minPosition = this.theTableObject.rows.reduce((row, currentRow) => Math.min(row, currentRow.position), 1e23);\n const sameTableRow = this.theTableObject.rows.find((row) => row.id == selectedRows[0].id);\n if (sameTableRow?.position == minPosition) {\n this.positionFail.dispatch({ error: \"Row is in first position\" });\n return;\n }\n if (sameTableRow) {\n const selectedPosition = sameTableRow.position;\n const lowerPositionArray = this.theTableObject.rows.filter((row) => row.position < selectedPosition);\n const lowerPositions = [];\n lowerPositionArray.forEach((row) => lowerPositions.push(row.position));\n const closest = Math.max(...lowerPositions);\n const closestTableRow = this.theTableObject.rows.find((row) => row.position == closest);\n if (closestTableRow) {\n sameTableRow.position = closest;\n closestTableRow.position = selectedPosition;\n const allPositions = [];\n this.theTableObject.rows.forEach((row) => allPositions.push(row.position));\n allPositions.sort();\n for (let i = 0; i < allPositions.length; i++) {\n const sameRow = this.theTableObject.rows.find((row) => row.position == allPositions[i]);\n if (sameRow) {\n sameRow.position = i + 1;\n }\n }\n this.theTableObject.rows.sort((row, currentRow) => row.position - currentRow.position);\n this.positionUpEvent.dispatch(this.theTableObject);\n }\n }\n }\n positionDown(event2) {\n const selectedRows = this.getSelectedRows();\n if (selectedRows.length > 1) {\n this.positionFail.dispatch({ error: \"Too many rows selected\" });\n return;\n }\n const maxPosition = this.theTableObject.rows.reduce((row, currentRow) => Math.max(row, currentRow.position), 0);\n const sameTableRow = this.theTableObject.rows.find((row) => row.id == selectedRows[0].id);\n if (sameTableRow?.position == maxPosition) {\n this.positionFail.dispatch({ error: \"Row is in last position\" });\n return;\n }\n if (sameTableRow) {\n const selectedPosition = sameTableRow.position;\n const higherPositionArray = this.theTableObject.rows.filter((row) => row.position > selectedPosition);\n const higherPositions = [];\n higherPositionArray.forEach((row) => higherPositions.push(row.position));\n const closest = Math.min(...higherPositions);\n const closestTableRow = this.theTableObject.rows.find((row) => row.position == closest);\n if (closestTableRow) {\n sameTableRow.position = closest;\n closestTableRow.position = selectedPosition;\n const allPositions = [];\n this.theTableObject.rows.forEach((row) => allPositions.push(row.position));\n allPositions.sort();\n for (let i = 0; i < allPositions.length; i++) {\n const sameRow = this.theTableObject.rows.find((row) => row.position == allPositions[i]);\n if (sameRow) {\n sameRow.position = i + 1;\n }\n }\n this.theTableObject.rows.sort((row, currentRow) => row.position - currentRow.position);\n this.positionDownEvent.dispatch(this.theTableObject);\n }\n }\n }\n async updateScrollView() {\n await this.scrollContainer;\n this.blur();\n this.offsetY = (await this.getOffset()).toString() + \"px\";\n const visibleNodesCount = await this.getVisibleNodesCount();\n const startNode = await this.getStartNode();\n this.visibleNodes = this.setVisibleNodes(visibleNodesCount, startNode);\n }\n getTotalContentHeight() {\n return (this.filteredRows.length * (this.lineHeight + 1)).toString() + \"px\";\n }\n async getOffset() {\n const startNode = await this.getStartNode();\n return startNode * this.lineHeight;\n }\n async getVisibleNodesCount() {\n const startNode = await this.getStartNode();\n const scrollContainer = await this.scrollContainer;\n let height = scrollContainer.offsetHeight;\n if (height == 0) {\n height = window.innerHeight;\n }\n let visibleNodeCount = Math.ceil(height / this.lineHeight + 2 * 5);\n visibleNodeCount = Math.min(this.filteredRows.length - startNode, visibleNodeCount);\n return visibleNodeCount;\n }\n async getStartNode() {\n const scrollContainer = await this.scrollContainer;\n const startNode = Math.floor(scrollContainer.scrollTop / this.lineHeight - 5);\n return Math.max(0, startNode);\n }\n setVisibleNodes(visibleNodeCount, startNode) {\n return this.filteredRows.slice(startNode, startNode + visibleNodeCount + 1);\n }\n resetValue(event2) {\n const target = event2.target;\n if (target) {\n target.value = \"\";\n }\n }\n};\nDhTableOld.styles = [\n css`\n ${unsafeCSS(style$A)}\n `\n];\n__decorateClass$A([\n query(\"#check-all-rows\")\n], DhTableOld.prototype, \"checkAllRowsButton\", 2);\n__decorateClass$A([\n query(\"#upload-input\")\n], DhTableOld.prototype, \"uploadInput\", 2);\n__decorateClass$A([\n query(\"#filter-input\")\n], DhTableOld.prototype, \"filterInput\", 2);\n__decorateClass$A([\n query(\"#active-filter-input\")\n], DhTableOld.prototype, \"activeFilterInput\", 2);\n__decorateClass$A([\n queryAsync(\"#scroll-container\")\n], DhTableOld.prototype, \"scrollContainer\", 2);\n__decorateClass$A([\n query(\"#header-container\")\n], DhTableOld.prototype, \"headerContainer\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"sortable\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"positionable\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"manipulable\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"notAddRow\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"notCloneRow\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"notRemoveRow\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"editable\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"notSelectable\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"withCheckbox\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"generalFilter\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"activeFilter\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"filterLabel\", 2);\n__decorateClass$A([\n property({ type: Number, reflect: true })\n], DhTableOld.prototype, \"lineHeight\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"activeFilterLabel\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"downloadable\", 2);\n__decorateClass$A([\n property({ type: Boolean })\n], DhTableOld.prototype, \"uploadable\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"encoding\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"selectHeaderValue\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"addRowTitle\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"cloneRowTitle\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"removeRowTitle\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"rowPositionUpTitle\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"rowPositionDownTitle\", 2);\n__decorateClass$A([\n property({ type: String })\n], DhTableOld.prototype, \"checkAllRowsTitle\", 2);\n__decorateClass$A([\n state()\n], DhTableOld.prototype, \"offsetY\", 2);\n__decorateClass$A([\n state()\n], DhTableOld.prototype, \"columnWidths\", 2);\n__decorateClass$A([\n state()\n], DhTableOld.prototype, \"theTableObject\", 2);\n__decorateClass$A([\n property({ type: String, reflect: true })\n], DhTableOld.prototype, \"defaultWidth\", 2);\n__decorateClass$A([\n property({ type: Boolean, reflect: true })\n], DhTableOld.prototype, \"useSingleSelect\", 2);\n__decorateClass$A([\n state()\n], DhTableOld.prototype, \"visibleNodes\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"dblRowClick\")\n], DhTableOld.prototype, \"dblRowClick\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"addNewRow\")\n], DhTableOld.prototype, \"addNewRowEvent\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"removeRow\")\n], DhTableOld.prototype, \"removeRowEvent\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"removeRows\")\n], DhTableOld.prototype, \"removeRows\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"checkAllRows\")\n], DhTableOld.prototype, \"checkAllRowsEvent\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"clonedRow\")\n], DhTableOld.prototype, \"clonedRowEvent\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"editingRow\")\n], DhTableOld.prototype, \"editingRowEvent\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"sortedRows\")\n], DhTableOld.prototype, \"sortedRows\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"rowRangeIsSelected\")\n], DhTableOld.prototype, \"rowRangeIsSelected\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"anotherRowIsSelected\")\n], DhTableOld.prototype, \"anotherRowIsSelected\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"singleRowIsSelected\")\n], DhTableOld.prototype, \"singleRowIsSelected\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"exportError\")\n], DhTableOld.prototype, \"exportError\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"importTableData\")\n], DhTableOld.prototype, \"importTableData\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"importError\")\n], DhTableOld.prototype, \"importError\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"positionFail\")\n], DhTableOld.prototype, \"positionFail\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"positionUp\")\n], DhTableOld.prototype, \"positionUpEvent\", 2);\n__decorateClass$A([\n event({ bubbles: true, cancelable: true, composed: true }, \"positionDown\")\n], DhTableOld.prototype, \"positionDownEvent\", 2);\nDhTableOld = __decorateClass$A([\n customElement(\"dh-table-old\")\n], DhTableOld);\n\nvar style$z = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n width: 100%;\\n display: table-row;\\n}\\n\\n:host(:not([isActive])) {\\n opacity: var(--dh-inactive-opacity, 1);\\n}\";\n\nvar __defProp$x = Object.defineProperty;\nvar __getOwnPropDesc$z = Object.getOwnPropertyDescriptor;\nvar __decorateClass$z = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$z(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$x(target, key, result);\n return result;\n};\nlet DhTableRowOld = class extends LitElement {\n constructor() {\n super(...arguments);\n this.isActive = true;\n this.hasChildren = false;\n this.isChild = false;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-table-row-old\")) {\n this.setAttribute(\"dh-table-row-old\", \"\");\n }\n }\n render() {\n return html` <slot part=\"root\"></slot> `;\n }\n firstUpdated() {\n const parentTable = this.closestElement(this, \"dh-table\");\n const parentLineHeight = parentTable?.getAttribute(\"lineHeight\") || \"36\";\n this.style.height = `${parentLineHeight}px`;\n }\n closestElement(node, selector) {\n if (!node) {\n return null;\n }\n if (node instanceof ShadowRoot) {\n return this.closestElement(node.host, selector);\n }\n if (node instanceof HTMLElement) {\n if (node.matches(selector)) {\n return node;\n } else {\n return this.closestElement(node.parentNode, selector);\n }\n }\n return this.closestElement(node.parentNode, selector);\n }\n};\nDhTableRowOld.styles = css`\n ${unsafeCSS(style$z)}\n `;\n__decorateClass$z([\n property({ type: Boolean, reflect: true })\n], DhTableRowOld.prototype, \"isActive\", 2);\n__decorateClass$z([\n property({ type: Boolean, reflect: true })\n], DhTableRowOld.prototype, \"hasChildren\", 2);\n__decorateClass$z([\n property({ type: Boolean, reflect: true })\n], DhTableRowOld.prototype, \"isChild\", 2);\nDhTableRowOld = __decorateClass$z([\n customElement(\"dh-table-row-old\")\n], DhTableRowOld);\n\nvar style$y = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: table-cell;\\n box-sizing: border-box;\\n vertical-align: middle;\\n position: relative;\\n overflow: hidden;\\n height: var(--dh-head-cell-height, auto);\\n padding: var(--dh-head-cell-padding, 0 8px);\\n border-bottom: 1px solid var(--dh-border-color, transparent);\\n border-right: 1px solid var(--dh-border-color, transparent);\\n font-weight: var(--dh-header-weight, inherit);\\n color: var(--dh-header-color, inherit);\\n}\\n\\n.rotate {\\n transform: scaleY(-1);\\n}\\n\\n.container {\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.arrow {\\n padding-right: 1rem;\\n}\\n\\n.test {\\n padding-right: 1rem;\\n}\\n\\n#resize-element {\\n top: 0;\\n right: 0;\\n width: var(--dh-resize-width, 5px);\\n position: absolute;\\n cursor: col-resize;\\n user-select: none;\\n height: 100%;\\n background-color: var(--dh-resize-bg, rgba(0, 0, 0, 0.06));\\n transition: background-color 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n#resize-element:hover {\\n background-color: var(--dh-resize-hover-bg, var(--dh-state-hover-bg, rgba(0, 0, 0, 0.12)));\\n}\\n\\n.arrow:before {\\n padding-left: 1rem;\\n}\";\n\nvar __defProp$w = Object.defineProperty;\nvar __getOwnPropDesc$y = Object.getOwnPropertyDescriptor;\nvar __decorateClass$y = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$y(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$w(target, key, result);\n return result;\n};\nlet DhTableHeadCellOld = class extends LitElement {\n constructor() {\n super(...arguments);\n this.sorting = \"unsorted\";\n this.notSortable = false;\n this.defaultWidth = \"200px\";\n this.isResizeing = false;\n this.pageX = 0;\n this.currentColumnWidth = 0;\n this.mouseUp = (event2) => {\n if (this.isResizeing) {\n event2.stopPropagation();\n this.resizeStop.dispatch();\n this.isResizeing = false;\n this.currentColumn = null;\n this.pageX = 0;\n this.currentColumnWidth = 0;\n }\n };\n this.mouseMove = (event2) => {\n if (this.isResizeing && this.currentColumn) {\n const diffX = event2.pageX - this.pageX;\n const newWidth = Math.max(40, this.currentColumnWidth + diffX);\n this.resize.dispatch({\n width: newWidth + \"px\",\n headerKey: this.currentColumn.getAttribute(\"key\")\n });\n }\n };\n }\n render() {\n return html`<div id=\"container\" class=\"container\" part=\"root\">\n <div class=\"test\" part=\"label\">\n <slot></slot>\n </div>\n <div>\n ${!this.notSortable ? choose(this.sorting, [\n [\"asc\", () => html`<div class=\"fv-icon-arrow-down rotate arrow\" part=\"icon\"></div>`],\n [\"desc\", () => html` <div class=\"fv-icon-arrow-down arrow\" part=\"icon\"></div>`],\n [\"unsorted\", () => html`<div class=\"fv-icon-arrow-up-down arrow\" part=\"icon\"></div>`]\n ]) : \"\"}\n <div id=\"resize-element\" @mousedown=\"${this.saveCurrentValues}\" part=\"divider\"></div>\n </div>\n </div> `;\n }\n async connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-table-head-cell-old\")) {\n this.setAttribute(\"dh-table-head-cell-old\", \"\");\n }\n this.addEventListener(\"mouseup\", this.mouseUp);\n document.addEventListener(\"mousemove\", this.mouseMove);\n document.addEventListener(\"mouseup\", this.mouseUp);\n }\n async disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener(\"mousemove\", this.mouseMove);\n document.removeEventListener(\"mouseup\", this.mouseUp);\n }\n setSorting(sorting) {\n this.sorting = sorting;\n }\n saveCurrentValues(event2) {\n event2.stopPropagation();\n this.isResizeing = true;\n this.currentColumn = event2.target.getRootNode().host;\n this.pageX = event2.pageX;\n if (this.currentColumn) {\n this.currentColumnWidth = this.currentColumn.getBoundingClientRect().width;\n }\n }\n};\nDhTableHeadCellOld.styles = css`\n ${unsafeCSS(style$y)}\n `;\n__decorateClass$y([\n query(\"#sort-img\")\n], DhTableHeadCellOld.prototype, \"sortImg\", 2);\n__decorateClass$y([\n query(\"#container\")\n], DhTableHeadCellOld.prototype, \"container\", 2);\n__decorateClass$y([\n property({ type: String, reflect: true })\n], DhTableHeadCellOld.prototype, \"sorting\", 2);\n__decorateClass$y([\n property({ type: Boolean, reflect: true })\n], DhTableHeadCellOld.prototype, \"notSortable\", 2);\n__decorateClass$y([\n property({ type: String, reflect: true })\n], DhTableHeadCellOld.prototype, \"defaultWidth\", 2);\n__decorateClass$y([\n event({ bubbles: true, cancelable: true, composed: true }, \"resizeStop\")\n], DhTableHeadCellOld.prototype, \"resizeStop\", 2);\n__decorateClass$y([\n event({ bubbles: true, cancelable: true, composed: true }, \"resize\")\n], DhTableHeadCellOld.prototype, \"resize\", 2);\nDhTableHeadCellOld = __decorateClass$y([\n customElement(\"dh-table-head-cell-old\")\n], DhTableHeadCellOld);\n\nvar style$x = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: table-cell;\\n box-sizing: border-box;\\n white-space: nowrap;\\n vertical-align: middle;\\n height: var(--dh-body-cell-height, auto);\\n padding: var(--dh-body-cell-padding, 0 8px);\\n border-bottom: 1px solid var(--dh-border-color, transparent);\\n border-right: 1px solid var(--dh-border-color, transparent);\\n color: inherit;\\n}\\n\\nform {\\n width: 100%;\\n height: 100%;\\n}\\n\\n#input {\\n height: 100%;\\n width: 100%;\\n}\\n\\n:host([type=checkbox]) form:not(.hidden) {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n:host([type=checkbox]) #input {\\n height: auto;\\n width: auto;\\n transform: scale(1.3);\\n}\\n\\n:host([type=radio]) form {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n:host([type=radio]) #input {\\n height: auto;\\n width: auto;\\n}\\n\\n::slotted(input.invalid) {\\n border-color: var(--dh-error-color, inherit);\\n}\\n\\n::slotted(dh-select) {\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\n\\n::slotted(dh-button) {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: 100%;\\n width: 100%;\\n}\\n\\n.container {\\n display: flex;\\n box-sizing: border-box;\\n white-space: nowrap;\\n vertical-align: middle;\\n align-items: center;\\n width: 100%;\\n}\\n\\n.overflow {\\n overflow: hidden;\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nvar __defProp$v = Object.defineProperty;\nvar __getOwnPropDesc$x = Object.getOwnPropertyDescriptor;\nvar __decorateClass$x = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$x(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$v(target, key, result);\n return result;\n};\nlet DhTableBodyCellOld = class extends LitElement {\n constructor() {\n super(...arguments);\n this.value = \"\";\n this.index = \"\";\n this.type = \"\";\n this.accept = \"\";\n this.min = void 0;\n this.max = void 0;\n this.step = void 0;\n this.name = \"\";\n this.placeholder = \"\";\n this.blub = void 0;\n this.checked = false;\n this.disabled = false;\n this.mode = \"show\";\n this.defaultWidth = \"200px\";\n }\n set valueAsDate(value) {\n (async () => this.inputElement.valueAsDate = value)();\n }\n //Das Property \"blub\" gibt es nur, da es bei Lit ein Problem gibt, dass teilweise das letzte Property nicht funktioniert (nicht darauf reagiert wird).\n //Das Property \"blub\" funktioniert also nicht, sorgt aber dafür, dass alle die davor stehen funktionieren.\n render() {\n return html`\n <div\n id=\"container\"\n class=${classMap({ overflow: this.type != \"dropdown\", container: true })}\n @pasteInputValue=\"${this.pasteInputValues}\"\n @isChange=\"${this.writeValue}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n part=\"root\"\n >\n <slot class=${classMap({ hidden: this.mode == \"edit\" && this.type != \"checkbox\" })} part=\"content\">${this.placeholder}</slot>\n <form class=${classMap({ hidden: this.type == \"checkbox\" || this.type != \"radio\" && this.mode == \"show\" })}>\n <dh-input\n exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n @keydown=${(e) => {\n this.keyDown(e);\n this.isEnterKey(e);\n }}\n id=\"input\"\n .value=\"${this.value}\"\n value=\"${this.value}\"\n .checked=\"${this.checked}\"\n .disabled=\"${this.disabled}\"\n type=\"${this.type}\"\n @blur=${this.writeValue}\n @checkboxChange=\"${this.writeValue}\"\n @changeSelectOption=\"${this.changeSelect}\"\n size=\"5\"\n name=\"${this.name}\"\n accept=\"${this.accept}\"\n min=\"${ifDefined(this.min)}\"\n max=\"${ifDefined(this.max)}\"\n step=\"${ifDefined(this.step)}\"\n blub=\"${ifDefined(this.blub)}\"\n ></dh-input>\n </form>\n </div>\n `;\n }\n async connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-table-body-cell-old\")) {\n this.setAttribute(\"dh-table-body-cell-old\", \"\");\n }\n this.addEventListener(\"click\", () => {\n this.clickBodyCell();\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n const parentTable = this.closestElement(this, \"dh-table-old\");\n this.getAttribute(\"content\");\n if (parentTable) {\n const parentLineHeight = parentTable.getAttribute(\"lineHeight\");\n if (parentLineHeight) {\n this.container.style.height = `${parentLineHeight}px`;\n this.container.style.maxHeight = `${parentLineHeight}px`;\n }\n }\n }\n resize(_width) {\n }\n closestElement(node, selector) {\n if (!node) {\n return null;\n }\n if (node instanceof ShadowRoot) {\n return this.closestElement(node.host, selector);\n }\n if (node instanceof HTMLElement) {\n if (node.matches(selector)) {\n return node;\n } else {\n return this.closestElement(node.parentNode, selector);\n }\n }\n return this.closestElement(node.parentNode, selector);\n }\n setMode(mode) {\n if (mode == \"show\" || mode == \"edit\") {\n this.mode = mode;\n }\n }\n async setInputFocus() {\n (await this.inputElement).focus();\n }\n getContainer() {\n return this.container;\n }\n pasteInputValues(event2) {\n const data = event2.detail.data;\n const input = event2.detail.input;\n const cellIndex = this.index;\n const row = this.closest(\"dh-table-row\");\n const id = row?.getAttribute(\"id\");\n const table = (row?.getRootNode()).host;\n const type = this.getAttribute(\"type\");\n if (id) {\n const sameRowIndex = table.getSameRowIndex(id);\n data.forEach((data2, index) => {\n const sameRow = table.getSameRowBasedOnIndex(sameRowIndex + index);\n if (index == 0) {\n if (type == \"date\") {\n let isValid = false;\n const newDate = new Date(data2);\n if (newDate.toString() != \"Invalid Date\") {\n isValid = true;\n if (isValid) {\n input.valueAsDate = newDate;\n }\n }\n } else {\n input.value = data2;\n }\n } else if (sameRow) {\n const sameCell = sameRow[parseInt(cellIndex)];\n const hasNotEditable = sameCell.attributes.some((attribute) => attribute == \"notEditable\");\n if (!hasNotEditable) {\n if (type == \"text\") {\n sameCell.value = data2;\n sameRow.isModified = true;\n const content = this.getAttribute(\"content\");\n this.cellIsEdit.dispatch({ newValue: data2, index: cellIndex, id: sameRow.id, content });\n } else if (type == \"number\") {\n const number = parseFloat(data2);\n if (!isNaN(number)) {\n const min = input.min;\n const max = input.max;\n let isMin;\n let isMax;\n if (min) {\n isMin = number >= min;\n } else {\n isMin = true;\n }\n if (max) {\n isMax = number <= max;\n } else {\n isMax = true;\n }\n if (isMax && isMin) {\n sameCell.value = number;\n sameRow.isModified = true;\n const content = this.getAttribute(\"content\");\n this.cellIsEdit.dispatch({ newValue: data2, index: cellIndex, id: sameRow.id, content });\n }\n }\n } else if (type == \"date\") {\n const newDate = new Date(data2);\n if (newDate.toString() != \"Invalid Date\") {\n sameCell.value = newDate;\n sameRow.isModified = true;\n const content = this.getAttribute(\"content\");\n this.cellIsEdit.dispatch({ newValue: newDate, index: cellIndex, id: sameRow.id, content });\n }\n }\n }\n }\n });\n this.mode = \"show\";\n }\n }\n //Die Funktion ist nur theoretisch geschrieben und so allein stehend noch nicht getestet.\n //Also gerne bei mir melden, falls da etwas noch nicht ganz funktioniert.\n async changeSelect(event2) {\n event2.stopPropagation();\n const selectedOption = event2.detail.selectedOption;\n const dhSelect = event2.detail.dhSelect;\n const index = this.index;\n const grandparent = this.parentElement;\n const table = grandparent.getRootNode().host;\n const id = grandparent.id;\n const sameRow = table.getSameRow(id);\n if (sameRow) {\n const sameCell = sameRow[parseInt(index)];\n if (sameRow[parseInt(index)].value != selectedOption.value) {\n sameCell.value = selectedOption.value;\n sameCell.objectValues?.forEach((object) => {\n object.selected = object.dataId == selectedOption.dataId;\n });\n sameRow.isModified = true;\n }\n this.changeTableSelect.dispatch({ selectedOption, dhSelect });\n }\n }\n async writeValue(event2) {\n const type = this.getAttribute(\"type\");\n if (type == \"selectbox\" && event2.type == \"isChange\") {\n return;\n }\n if ((type == \"checkbox\" || type == \"selectbox\" || type == \"dropdown\") && event2.type != \"checkboxChange\" && event2.type != \"isChange\") {\n return;\n }\n const target = event2.target;\n const grandparent = this.parentElement;\n const table = grandparent.getRootNode().host;\n let useStandard = false;\n const index = this.index;\n if (index) {\n useStandard = table.getUseStandard(parseInt(index));\n }\n const id = grandparent.id;\n const sameRow = table.getSameRow(id);\n let value = \"\";\n if (type == \"date\") {\n value = target.getInputValueAsDate();\n } else if (type == \"checkbox\") {\n value = event2.type == \"isChange\" ? event2.detail : target.getCheckboxIsChecked();\n } else {\n value = target.getInputValue();\n }\n let isValid = false;\n const isEmptyOk = type != \"date\";\n if (type) {\n isValid = this.checkValueValidity(value, type, isEmptyOk);\n }\n if (isValid) {\n this.classList.remove(\"invalid\");\n if (sameRow) {\n const sameCell = sameRow[parseInt(index)];\n if (sameRow[parseInt(index)].value != value) {\n sameCell.value = value;\n sameRow.isModified = true;\n const content = this.getAttribute(\"content\");\n this.cellIsEdit.dispatch({ newValue: value, index, id, content });\n }\n }\n } else if (useStandard) {\n if (sameRow) {\n const sameCell = sameRow[parseInt(index)];\n if (type == \"text\") {\n sameCell.value = \"\";\n } else if (type == \"date\") {\n const currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n sameCell.value = /* @__PURE__ */ new Date(\"01.01.\" + currentYear);\n } else if (type == \"boolean\") {\n sameCell.value = \"false\";\n } else if (type == \"number\") {\n sameCell.value = \"\";\n }\n sameRow.isModified = true;\n const content = this.getAttribute(\"content\");\n this.cellIsEdit.dispatch({ newValue: value, index, id, content });\n }\n this.classList.remove(\"invalid\");\n } else {\n target.classList.add(\"invalid\");\n }\n if (type != \"checkbox\" && type != \"selectbox\" && type != \"dropdown\") {\n this.mode = \"show\";\n }\n }\n isEnterKey(event2) {\n event2.stopPropagation();\n const keyboardEvent = event2;\n if (keyboardEvent.key == \"Enter\") {\n this.writeValue(event2);\n event2.target.blur();\n }\n }\n checkValueValidity(value, type, isEmptyOk) {\n let isValid = false;\n if (type == \"checkbox\" || type == \"selectbox\" || type == \"dropdown\") {\n isValid = true;\n }\n if (type == \"text\") {\n if (isEmptyOk) {\n isValid = true;\n }\n if (value) {\n const isNotEmpty = value.toString().length > 0;\n if (isNotEmpty) {\n isValid = true;\n }\n }\n } else if (type == \"date\") {\n if (isEmptyOk) {\n isValid = true;\n }\n const newDate = new Date(value);\n if (newDate.toString() != \"Invalid Date\") {\n isValid = true;\n }\n } else if (type == \"boolean\") {\n if (isEmptyOk) {\n isValid = false;\n }\n if (value == \"true\" || value == \"false\" || value == \"0\" || value == \"1\") {\n isValid = true;\n }\n } else if (type == \"number\") {\n if (isEmptyOk) {\n isValid = true;\n }\n const number = parseInt(value);\n const isNumber = Number.isInteger(number);\n if (isNumber) {\n isValid = true;\n }\n }\n return isValid;\n }\n keyDown(event2) {\n const key = event2.code;\n if (key == \"Escape\") {\n this.formElement.reset();\n this.mode = \"show\";\n }\n }\n clickBodyCell() {\n this.clickBodyCellEvent.dispatch(this);\n }\n};\nDhTableBodyCellOld.styles = css`\n ${unsafeCSS(style$x)}\n `;\n__decorateClass$x([\n queryAsync(\"dh-input\")\n], DhTableBodyCellOld.prototype, \"inputElement\", 2);\n__decorateClass$x([\n query(\"#container\")\n], DhTableBodyCellOld.prototype, \"container\", 2);\n__decorateClass$x([\n query(\"form\")\n], DhTableBodyCellOld.prototype, \"formElement\", 2);\n__decorateClass$x([\n property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"value\", 2);\n__decorateClass$x([\n property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"index\", 2);\n__decorateClass$x([\n property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"type\", 2);\n__decorateClass$x([\n property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"accept\", 2);\n__decorateClass$x([\n property({ type: Number, reflect: true })\n], DhTableBodyCellOld.prototype, \"min\", 2);\n__decorateClass$x([\n property({ type: Number, reflect: true })\n], DhTableBodyCellOld.prototype, \"max\", 2);\n__decorateClass$x([\n property({ type: Number, reflect: true })\n], DhTableBodyCellOld.prototype, \"step\", 2);\n__decorateClass$x([\n property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"name\", 2);\n__decorateClass$x([\n property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"placeholder\", 2);\n__decorateClass$x([\n property({ type: Number, reflect: true })\n], DhTableBodyCellOld.prototype, \"blub\", 2);\n__decorateClass$x([\n property({ type: Boolean, reflect: true })\n], DhTableBodyCellOld.prototype, \"checked\", 2);\n__decorateClass$x([\n property({ type: Boolean, reflect: true })\n], DhTableBodyCellOld.prototype, \"disabled\", 2);\n__decorateClass$x([\n property({ type: Boolean, reflect: true })\n], DhTableBodyCellOld.prototype, \"mode\", 2);\n__decorateClass$x([\n property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"defaultWidth\", 2);\n__decorateClass$x([\n event({ bubbles: true, cancelable: true, composed: true }, \"cellIsEdit\")\n], DhTableBodyCellOld.prototype, \"cellIsEdit\", 2);\n__decorateClass$x([\n event({ bubbles: true, cancelable: true, composed: true }, \"changeTableSelect\")\n], DhTableBodyCellOld.prototype, \"changeTableSelect\", 2);\n__decorateClass$x([\n event({ bubbles: true, cancelable: true, composed: true }, \"clickBodyCell\")\n], DhTableBodyCellOld.prototype, \"clickBodyCellEvent\", 2);\nDhTableBodyCellOld = __decorateClass$x([\n customElement(\"dh-table-body-cell-old\")\n], DhTableBodyCellOld);\n\nvar style$w = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: flex;\\n flex-direction: column;\\n position: relative;\\n min-height: 0;\\n max-height: 100%;\\n box-sizing: border-box;\\n}\\n\\n#manipulation-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 4px;\\n flex-shrink: 0;\\n}\\n\\n.flex-row {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n\\n#filter-pre-container {\\n gap: 8px;\\n flex-wrap: nowrap;\\n white-space: nowrap;\\n}\\n\\n#active-filter-container {\\n gap: 8px;\\n flex-wrap: nowrap;\\n white-space: nowrap;\\n margin-left: auto;\\n}\\n\\n#filter-extra-container {\\n gap: 8px;\\n flex-wrap: nowrap;\\n white-space: nowrap;\\n margin-left: auto;\\n}\\n\\n#grid-scroll {\\n overflow: auto;\\n flex: 1;\\n min-height: 0;\\n overflow-anchor: none;\\n}\\n\\n#grid-scroll {\\n scrollbar-width: thin;\\n scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#grid-scroll::-webkit-scrollbar {\\n width: var(--dh-scrollbar-width, 8px);\\n height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#grid-scroll::-webkit-scrollbar-thumb {\\n background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#grid-scroll::-webkit-scrollbar-thumb:hover {\\n background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#grid-scroll::-webkit-scrollbar-track {\\n background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n.grid-header {\\n display: grid;\\n width: max-content;\\n min-width: 100%;\\n position: sticky;\\n top: 0;\\n z-index: 10;\\n}\\n\\n.virtual-body {\\n position: relative;\\n min-width: 100%;\\n}\\n\\n.virtual-rows {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n display: grid;\\n will-change: transform;\\n}\\n\\ndh-table-row {\\n display: contents;\\n}\\n\\n:host(:not([withCheckbox])) dh-table-body-cell[type=selectbox] {\\n display: none;\\n}\\n\\ndh-table-row.selected > dh-table-body-cell {\\n background-color: var(--dh-state-selected-bg, rgba(0, 0, 0, 0.08));\\n}\\n\\ndh-table-row[part~=copy] > [dh-table-body-cell] {\\n background-color: var(--dh-state-copy-bg, transparent);\\n}\\n\\ndh-table-row:last-of-type > dh-table-body-cell {\\n border-bottom: none;\\n}\\n\\n.checkedAll {\\n background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n.hidden {\\n display: none !important;\\n}\\n\\n:host([loading]) .virtual-body {\\n visibility: hidden;\\n}\\n\\n.img {\\n height: 100%;\\n}\\n\\nbutton {\\n cursor: pointer !important;\\n background: none;\\n border: none;\\n display: flex;\\n align-items: center;\\n}\";\n\nvar __defProp$u = Object.defineProperty;\nvar __getOwnPropDesc$w = Object.getOwnPropertyDescriptor;\nvar __decorateClass$w = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$w(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$u(target, key, result);\n return result;\n};\nlet DhTable = class extends LitElement {\n constructor() {\n super(...arguments);\n this.sortable = false;\n this.positionable = false;\n this.manipulable = false;\n this.notAddRow = false;\n this.notCloneRow = false;\n this.notRemoveRow = false;\n this.editable = false;\n this.notSelectable = false;\n this.withCheckbox = false;\n this.generalFilter = false;\n this.activeFilter = false;\n this.hideInactiveRows = false;\n this.loading = false;\n this.filterLabel = \"search\";\n this.lineHeight = 36;\n this.activeFilterLabel = \"hide inactive rows\";\n this.downloadable = false;\n this.uploadable = false;\n this.encoding = \"65001\";\n this.selectHeaderValue = \"selection\";\n this.addRowTitle = \"add row\";\n this.cloneRowTitle = \"clone row\";\n this.removeRowTitle = \"remove row\";\n this.rowPositionUpTitle = \"move row up\";\n this.rowPositionDownTitle = \"move row down\";\n this.checkAllRowsTitle = \"select all rows\";\n this.hideCheckAllRowsButton = false;\n this.withMasterCheckbox = false;\n this.masterCheckboxAriaLabel = \"select all\";\n this.bodyOffset = 0;\n this.scrollRafId = null;\n this.scrollEndTimer = null;\n // Letzter bekannter scrollTop — aktuell nicht für Overscan-Steuerung\n // verwendet (stabile Slab-Größe siehe unten), kann aber für künftiges\n // Velocity-Tracking nützlich bleiben.\n this.lastScrollTop = 0;\n this.columnWidths = [];\n this.pendingColumnWidths = [];\n this.theTableObject = {\n header: [\n {\n title: \"\",\n key: \"\",\n type: \"\",\n attributes: [],\n defaultWidth: \"\"\n }\n ],\n rows: []\n };\n this.defaultWidth = \"200px\";\n this.useSingleSelect = false;\n this.timer = 0;\n this.delay = 200;\n this.prevent = false;\n this.filteredRows = [];\n this.filterRules = [];\n this.rowTemplate = null;\n this.headerRowTemplate = null;\n /**\n * Sibling to `headerRowTemplate` — return only the header cells (no\n * `<dh-table-row>` wrapper, no checkbox-column cell). dh-table wraps\n * them in a row and prepends the master-checkbox cell automatically\n * when `withMasterCheckbox` is set. Use this instead of\n * `headerRowTemplate` when you want dh-table to own the checkbox column.\n */\n this.headerCellsTemplate = null;\n this.visibleNodes = [];\n this.firstShiftPressedElementId = \"\";\n this.filterValue = \"\";\n this.isEdited = false;\n this.isResizing = false;\n this.dateOptions = { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" };\n this.onScroll = () => {\n if (this.scrollRafId === null) {\n this.scrollRafId = requestAnimationFrame(() => {\n this.scrollRafId = null;\n this.updateScrollView();\n });\n }\n if (this.scrollEndTimer !== null) {\n window.clearTimeout(this.scrollEndTimer);\n }\n this.scrollEndTimer = window.setTimeout(() => {\n this.scrollEndTimer = null;\n this.updateScrollView();\n }, DhTable.SCROLL_END_DELAY_MS);\n };\n this.rowIdCounter = 0;\n // Letzte Rows-Referenz, fuer die wir validateObject/filterRows ausgefuehrt\n // haben. Der Fast-Path im tableObject-Setter darf nur dann greifen, wenn\n // data.rows tatsaechlich von uns verarbeitet wurde — sonst koennte ein\n // direkter Bypass auf this.theTableObject (z.B. in Subklassen) den Setter\n // ueber visibleNodes hinwegtaeuschen.\n this.lastProcessedRows = null;\n //Methoden für die Sortierung\n // Sortier-State intern halten — nicht aus DOM-Klassen ableiten. Consumer mit\n // Custom headerCellsTemplate erzeugen sonst bei jedem Re-Render frische\n // Head-Cells (z.B. via document.createElement), wodurch die asc/desc-Klasse\n // verschwindet und die Toggle-Logik auf falscher Annahme lief.\n this.currentSortKey = null;\n this.currentSortDirection = \"asc\";\n this.defaultSortDirection = \"asc\";\n // Optionaler, generischer Zeilen-Filter: ein Consumer parkt hier eine Ja/Nein-Funktion,\n // die filterRows() als zusaetzliche Stufe auf jede Reihe anwendet. null = kein Effekt.\n this.rowFilterPredicate = null;\n }\n set tableObject(data) {\n if (data.rows === this.lastProcessedRows && data.header === this.theTableObject.header) {\n this.theTableObject = data;\n return;\n }\n this.theTableObject = this.validateObject(data);\n this.filteredRows = data.rows;\n this.filterRows();\n }\n render() {\n const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n const expectedLength = (this.withCheckbox ? 1 : 0) + this.theTableObject.header.length;\n if (this.columnWidths.length !== expectedLength) {\n this.columnWidths = this.buildColumnWidths(savedWidths);\n }\n const gridColumns = this.columnWidths.join(\" \");\n const totalBodyHeight = this.filteredRows.length * this.lineHeight;\n const totalBodyWidth = this.columnWidths.reduce((sum, w) => sum + (parseInt(w, 10) || 0), 0);\n return html`\n <dh-dimmer id=\"table-dimmer\" class=\"${this.loading ? \"\" : \"hidden\"}\"></dh-dimmer>\n ${this.hasManipulationElements ? html`<div id=\"manipulation-container\" part=\"header\">${this.renderManipulationElements()}</div>` : null}\n <div\n id=\"grid-scroll\"\n part=\"scroll\"\n @scroll=\"${this.onScroll}\"\n @cellIsEdit=\"${this.filterRows}\"\n @resize=\"${this.resizeBodyCells}\"\n @resizeStop=\"${this.stopResizing}\"\n @mouseup=${this.sortable ? this.clickHeader : null}\n >\n <div class=\"grid-header\" part=\"content\" style=\"grid-template-columns: ${gridColumns}\">\n <slot id=\"table-head\" name=\"table-head\"></slot>\n ${this.renderHeaderRow(savedWidths)}\n </div>\n <div\n class=\"virtual-body\"\n style=\"height: ${totalBodyHeight}px; width: ${totalBodyWidth}px\"\n @click=\"${this.onClickEvent}\"\n @dblclick=\"${this.dblclick}\"\n >\n <slot id=\"table-body\" name=\"table-body\"></slot>\n <div class=\"virtual-rows\" style=\"transform: translateY(${this.bodyOffset}px); grid-template-columns: ${gridColumns}\">\n ${this.visibleNodes ? repeat(\n this.visibleNodes,\n (row) => row.id,\n (row) => {\n if (this.rowTemplate) {\n return html`${this.rowTemplate(row)}`;\n }\n if (row.isSelected == void 0) {\n row.isSelected = false;\n }\n return this.renderTableRow(row, savedWidths);\n }\n ) : null}\n </div>\n </div>\n </div>\n `;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-table\")) {\n this.setAttribute(\"dh-table\", \"\");\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this.scrollRafId !== null) {\n cancelAnimationFrame(this.scrollRafId);\n this.scrollRafId = null;\n }\n if (this.scrollEndTimer !== null) {\n window.clearTimeout(this.scrollEndTimer);\n this.scrollEndTimer = null;\n }\n }\n renderManipulationElements() {\n return html`<dh-button\n id=\"check-all-rows\"\n class=\"${this.manipulable && this.withCheckbox && !this.notSelectable && !this.hideCheckAllRowsButton && !this.withMasterCheckbox ? \"button\" : \"hidden\"}\"\n @click=\"${this.checkAllRows}\"\n title=\"${this.checkAllRowsTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-check\"></div\n ></dh-button>\n <dh-button\n id=\"add-row\"\n class=\"${this.manipulable && !this.notAddRow ? \"button\" : \"hidden\"}\"\n @click=\"${this.addNewRow}\"\n title=\"${this.addRowTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-plus\"></div\n ></dh-button>\n <dh-button\n id=\"clone-row\"\n class=\"${this.manipulable && !this.notCloneRow ? \"button\" : \"hidden\"}\"\n @click=\"${this.cloneRow}\"\n title=\"${this.cloneRowTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-content-copy\"></div\n ></dh-button>\n <dh-button\n id=\"remove-row\"\n class=\"${this.manipulable && !this.notRemoveRow ? \"button\" : \"hidden\"}\"\n @click=\"${this.removeRow}\"\n title=\"${this.removeRowTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-delete\"></div\n ></dh-button>\n <dh-button\n id=\"export-button\"\n class=\"${this.manipulable && this.downloadable ? \"button\" : \"hidden\"}\"\n @click=\"${this.exportTableAsCsv}\"\n title=\"download\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-download\"></div\n ></dh-button>\n <dh-button\n id=\"import-button\"\n class=\"${this.manipulable && this.uploadable ? \"button\" : \"hidden\"}\"\n @click=\"${this.openUploadFileDialog}\"\n title=\"upload\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-upload\"></div\n ></dh-button>\n <dh-button\n id=\"position-up\"\n class=\"${this.positionable ? \"button\" : \"hidden\"}\"\n @click=\"${this.positionUp}\"\n title=\"${this.rowPositionUpTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-arrow-down-2\" style=\"transform: rotate(180deg)\"></div\n ></dh-button>\n <dh-button\n id=\"position-down\"\n class=\"${this.positionable ? \"button\" : \"hidden\"}\"\n @click=\"${this.positionDown}\"\n title=\"${this.rowPositionDownTitle}\"\n variant=\"outlined\"\n icon-button\n exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n ><div slot=\"img\" class=\"fv-icon-arrow-down-2\"></div\n ></dh-button>\n <input id=\"upload-input\" type=\"file\" accept=\".txt, .csv\" hidden @click=\"${this.resetValue}\" @change=\"${this.readFile}\" />\n <div id=\"general-filter-container\" class=\"${this.generalFilter ? \"flex-row\" : \"flex-row hidden\"}\" @input=\"${this.filterText}\">\n <dh-input\n id=\"filter-input\"\n variant=\"classic\"\n placeholder=\"${this.filterLabel}\"\n exportparts=\"root: dh-filter-root, input: dh-filter-input, label: dh-filter-label, supporting-text: dh-filter-supporting-text\"\n ></dh-input>\n </div>\n <div id=\"filter-pre-container\" class=\"flex-row\">\n <slot name=\"filter-pre\"></slot>\n </div>\n <div id=\"active-filter-container\" class=\"${this.activeFilter ? \"flex-row\" : \"flex-row hidden\"}\" @isChange=\"${this.filterRows}\">\n <dh-checkbox\n id=\"active-filter-input\"\n variant=\"switch\"\n exportparts=\"root: dh-switch-root, input: dh-switch-track, handle: dh-switch-handle\"\n ></dh-checkbox>\n <span>${this.activeFilterLabel}</span>\n </div>\n <div id=\"filter-extra-container\" class=\"flex-row\">\n <slot name=\"filter-extra\"></slot>\n </div>`;\n }\n renderHeaderRow(savedWidths) {\n if (this.headerRowTemplate) {\n return this.headerRowTemplate(this.theTableObject.header);\n }\n const cells = this.headerCellsTemplate ? this.headerCellsTemplate(this.theTableObject.header) : this.renderDefaultHeaderCells();\n if (this.withMasterCheckbox && this.withCheckbox) {\n return html`<dh-table-row exportparts=\"resize-element\">${this.renderMasterCheckboxCell()}${cells}</dh-table-row>`;\n }\n if (this.headerCellsTemplate) {\n return html`<dh-table-row exportparts=\"resize-element\">${cells}</dh-table-row>`;\n }\n return cells;\n }\n renderDefaultHeaderCells() {\n return html`\n ${this.withCheckbox && !this.withMasterCheckbox ? html`<dh-table-head-cell type=\"selectbox\" key=\"selection\" notSortable> ${this.selectHeaderValue} </dh-table-head-cell>` : null}\n ${this.theTableObject.header ? this.theTableObject.header.map((cell, index) => {\n return html`<dh-table-head-cell\n class=\"${this.sortable ? \"unsorted\" : \"\"}\"\n type=\"${cell.type}\"\n key=\"${cell.key}\"\n ?useStandard=${this.useStandard(cell.attributes)}\n sorting=\"${this.sortable ? \"unsorted\" : \"\"}\"\n ?notSortable=\"${cell.attributes.includes(\"notSortable\")}\"\n .parentSortable=\"${this.sortable}\"\n exportparts=\"root: dh-head-cell-root, label: dh-head-cell-label, icon: dh-head-cell-icon, divider: dh-head-cell-divider\"\n >\n ${cell.title}\n </dh-table-head-cell>`;\n }) : null}\n `;\n }\n renderMasterCheckboxCell() {\n const totalCount = this.theTableObject.rows.length;\n const selectedCount = this.theTableObject.rows.filter((row) => row.isSelected).length;\n const allSelected = totalCount > 0 && selectedCount === totalCount;\n const someSelected = selectedCount > 0 && selectedCount < totalCount;\n return html`<dh-table-head-cell exportparts=\"resize-element\" content=\"checkbox\" type=\"selectbox\" notSortable defaultWidth=\"40px\">\n <dh-checkbox\n part=\"master-checkbox\"\n aria-label=\"${this.masterCheckboxAriaLabel}\"\n .checked=\"${allSelected}\"\n .indeterminate=\"${someSelected}\"\n @click=\"${(clickEvent) => clickEvent.stopPropagation()}\"\n @isChange=\"${(changeEvent) => this.toggleAllRows(changeEvent.detail)}\"\n exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n ></dh-checkbox>\n </dh-table-head-cell>`;\n }\n renderTableRow(row, savedWidths) {\n return html`\n <dh-table-row\n class=\"${row.isSelected ? \"row body selected\" : \"row body\"}\"\n id=\"${row.id}\"\n ?notDeletable=\"${row.notDeletable}\"\n ?notEditable=\"${row.notEditable}\"\n ?notCloneable=\"${row.notCloneable}\"\n >\n ${this.withCheckbox ? html`<dh-table-body-cell type=\"selectbox\">\n <dh-checkbox ?checked=${row.isSelected} exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"></dh-checkbox>\n </dh-table-body-cell>` : null}\n ${row ? row.map(\n (cell, index) => html`\n ${choose(this.theTableObject.header[index]?.type, [\n [\"selectbox\", () => this.renderSelectboxCell(cell, index, savedWidths)],\n [\"checkbox\", () => this.renderCheckboxCell(cell, index, savedWidths)],\n [\"text\", () => this.renderTextCell(cell, index, savedWidths)],\n [\"number\", () => this.renderNumberCell(cell, index, savedWidths)],\n [\"date\", () => this.renderDateCell(cell, index, savedWidths)],\n [\"dropdown\", () => this.renderDropdownCell(cell, index, savedWidths)],\n [\"img\", () => this.renderImgCell(cell, index, savedWidths)],\n [\"button\", () => this.renderButtonCell(cell, index, savedWidths)]\n ])}\n `\n ) : null}\n </dh-table-row>\n `;\n }\n renderSelectboxCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell type=\"selectbox\">\n <dh-checkbox\n index=\"${index}\"\n ?checked=${cell.value ? !!parseInt(cell.value) : false}\n ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n ></dh-checkbox>\n </dh-table-body-cell>\n `;\n }\n renderCheckboxCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"checkbox\"\n ?checked=${typeof cell.value === \"boolean\" ? cell.value : cell.value ? !!parseInt(cell.value) : false}\n ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input\"\n >\n <dh-checkbox\n index=\"${index}\"\n ?checked=${typeof cell.value === \"boolean\" ? cell.value : cell.value ? !!parseInt(cell.value) : false}\n ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n ></dh-checkbox>\n </dh-table-body-cell>\n `;\n }\n renderTextCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"text\"\n ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n >${cell.value}</dh-table-body-cell\n >\n `;\n }\n renderNumberCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"number\"\n ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n >${cell.value}</dh-table-body-cell\n >\n `;\n }\n renderDateCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"date\"\n ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n .valueAsDate=\"${cell.value ? new Intl.DateTimeFormat(navigator.language, this.dateOptions).format(new Date(cell.value)) : void 0}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n >${cell.value ? new Intl.DateTimeFormat(navigator.language, this.dateOptions).format(new Date(cell.value)) : \"\"}</dh-table-body-cell\n >\n `;\n }\n renderDropdownCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell\n index=\"${index}\"\n type=\"dropdown\"\n ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n >\n <dh-select\n ?withoutEmptyDefault=\"${this.theTableObject.header[index].attributes.indexOf(\"withoutEmptyDefault\") > -1}\"\n ?disabled=\"${this.isNotEditable(cell.attributes)}\"\n .selectOptions=\"${cell.objectValues}\"\n exportparts=\"root: dh-select-root, trigger: dh-select-trigger, label: dh-select-label, icon: dh-select-icon, menu: dh-select-menu, input: dh-select-input, content: dh-select-content, item: dh-select-item, selected: dh-select-selected\"\n >\n </dh-select>\n </dh-table-body-cell>\n `;\n }\n renderImgCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell type=\"img\" ?notEditable=\"${this.isNotEditable(cell.attributes)}\">\n <img class=\"img\" index=\"${index}\" src=\"${cell.value}\" />\n </dh-table-body-cell>\n `;\n }\n renderButtonCell(cell, index, savedWidths) {\n return html`\n <dh-table-body-cell type=\"button\" ?notEditable=\"${this.isNotEditable(cell.attributes)}\">\n <dh-button\n class=\"img\"\n index=\"${index}\"\n variant=\"outlined\"\n .buttonText=\"${cell.value}\"\n exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n ></dh-button>\n </dh-table-body-cell>\n `;\n }\n getTableObject() {\n return this.theTableObject;\n }\n validateObject(data) {\n data.header.forEach((head) => {\n if (head.attributes === void 0) {\n head.attributes = [];\n }\n if (head.defaultWidth === void 0) {\n head.defaultWidth = \"\";\n }\n });\n data.rows.forEach((row) => {\n if (!row.id) {\n row.id = `r${++this.rowIdCounter}`;\n }\n row.forEach((cell) => {\n if (cell.attributes === void 0) {\n cell.attributes = [];\n }\n if (cell.objectValues === void 0) {\n cell.objectValues = [];\n }\n });\n });\n return data;\n }\n getUseStandard(index) {\n const headerCells = Array.from(this.renderRoot.querySelectorAll(\"[dh-table-head-cell]\"));\n return headerCells[index]?.hasAttribute(\"useStandard\") ?? false;\n }\n onClickEvent(event2) {\n const newEvent = this.cloneEvent(event2);\n const mouseEvent = event2;\n const isCtrlPressed = mouseEvent.ctrlKey;\n const isShiftPressed = mouseEvent.shiftKey;\n const target = event2.target.parentElement;\n const tagName = target?.tagName;\n this.timer = window.setTimeout(() => {\n if (!this.prevent) {\n if (target?.getAttribute(\"type\") != \"dropdown\") {\n if ((isCtrlPressed || target?.hasAttribute(\"dh-table-body-cell\") || tagName?.toLowerCase() == \"dh-table-row\") && !isShiftPressed) {\n this.editingCellContent(newEvent);\n if (!this.isEdited) {\n this.selectRow(newEvent);\n }\n this.isEdited = false;\n } else if (isShiftPressed) {\n this.multiSelectRow(newEvent);\n }\n }\n }\n }, this.delay);\n this.prevent = false;\n }\n cloneEvent(event2) {\n const clone = {};\n for (const p in event2) {\n const d = Object.getOwnPropertyDescriptor(event2, p);\n if (d && (!d.writable || !d.configurable || !d.enumerable || d.get || d.set)) {\n Object.defineProperty(clone, p, d);\n } else {\n clone[p] = event2[p];\n }\n }\n Object.setPrototypeOf(clone, event2);\n return clone;\n }\n dblclick(event2) {\n clearTimeout(this.timer);\n this.prevent = true;\n const target = event2.target.parentElement;\n const tagName = target?.tagName;\n if (tagName?.toLowerCase() == \"dh-table-body-cell\") {\n const row = target?.parentElement;\n this.dblRowClick.dispatch(row);\n } else if (tagName?.toLowerCase() == \"dh-table-row\") {\n this.dblRowClick.dispatch(target);\n }\n }\n resizeBodyCells(event2) {\n const { width, headerKey } = event2.detail;\n if (!this.isResizing) {\n this.isResizing = true;\n this.pendingColumnWidths = [...this.columnWidths];\n }\n const headerCells = Array.from(this.renderRoot.querySelectorAll(\"[dh-table-head-cell]\"));\n let cellIndex = headerKey ? headerCells.findIndex((child) => child.getAttribute(\"key\") === headerKey) : -1;\n if (cellIndex === -1 && event2.detail.sourceElement) {\n cellIndex = headerCells.indexOf(event2.detail.sourceElement);\n }\n if (cellIndex === -1) return;\n this.pendingColumnWidths[cellIndex] = width;\n const cols = this.pendingColumnWidths.join(\" \");\n const gridHeader = this.renderRoot.querySelector(\".grid-header\");\n if (gridHeader) {\n gridHeader.style.gridTemplateColumns = cols;\n }\n const virtualRows = this.renderRoot.querySelector(\".virtual-rows\");\n if (virtualRows) {\n virtualRows.style.gridTemplateColumns = cols;\n }\n const cell = headerCells[cellIndex];\n if (cell) {\n const scrollEl = this.renderRoot.querySelector(\"#grid-scroll\");\n if (scrollEl) {\n const cellRect = cell.getBoundingClientRect();\n const scrollRect = scrollEl.getBoundingClientRect();\n if (cellRect.right > scrollRect.right) {\n scrollEl.scrollLeft += cellRect.right - scrollRect.right + 20;\n }\n }\n }\n const dataIndex = this.withCheckbox ? cellIndex - 1 : cellIndex;\n if (dataIndex >= 0) {\n const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n savedWidths[dataIndex] = width;\n localStorage.setItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`, JSON.stringify(savedWidths));\n }\n }\n stopResizing() {\n this.isResizing = false;\n if (this.pendingColumnWidths.length > 0) {\n this.columnWidths = this.pendingColumnWidths;\n this.pendingColumnWidths = [];\n }\n }\n buildColumnWidths(savedWidths) {\n const widths = [];\n if (this.withCheckbox) {\n widths.push(this.withMasterCheckbox ? \"40px\" : \"65px\");\n }\n this.theTableObject.header.forEach((cell, index) => {\n widths.push(savedWidths[index] || cell.defaultWidth || \"200px\");\n });\n return widths;\n }\n firstUpdated() {\n this.scaleColumnsToFit();\n this.updateScrollView();\n }\n updated(changedProperties) {\n if (changedProperties.has(\"hideInactiveRows\")) {\n this.filterRows();\n }\n }\n scaleColumnsToFit() {\n const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n if (Object.keys(savedWidths).length > 0) return;\n const scrollEl = this.renderRoot?.querySelector(\"#grid-scroll\");\n if (!scrollEl || scrollEl.clientWidth <= 0) return;\n const availableWidth = scrollEl.clientWidth;\n const totalCurrent = this.columnWidths.reduce((sum, w) => sum + (parseInt(w) || 200), 0);\n if (totalCurrent >= availableWidth) return;\n const scale = availableWidth / totalCurrent;\n this.columnWidths = this.columnWidths.map((w) => {\n const px = parseInt(w) || 200;\n return Math.round(px * scale) + \"px\";\n });\n }\n //Methoden zum manipulieren von Reihen\n addNewRow(event2) {\n event2.stopPropagation();\n const newRow = new TableRowArray();\n newRow.isNewRow = true;\n const currentMaxPosition = this.theTableObject.rows.reduce((row, currentRow) => Math.max(row, currentRow.position), 0);\n newRow.position = currentMaxPosition + 1;\n newRow.id = crypto.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n for (let i = 0; i < this.theTableObject.header.length; i++) {\n newRow.push({\n value: \"\",\n objectValues: [{ id: \"\", name: \"\", selected: \"\" }],\n attributes: []\n });\n }\n this.theTableObject.rows.push(newRow);\n this.filterRows();\n this.addNewRowEvent.dispatch(newRow);\n }\n removeRow(event2) {\n event2.stopPropagation();\n let selectedRows = this.theTableObject.rows.filter((row) => row.isSelected);\n const notDeletableRow = selectedRows.filter((row) => row.notDeletable);\n selectedRows = selectedRows.filter((row) => !row.notDeletable);\n notDeletableRow.forEach((row) => row.isSelected = false);\n selectedRows.forEach((row) => {\n const id = row.id;\n const index = this.theTableObject.rows.findIndex((row2) => row2.id == id);\n this.theTableObject.rows.splice(index, 1);\n this.removeRowEvent.dispatch(id);\n });\n this.removeRows.dispatch(selectedRows);\n const checkAllRowsButton = this.checkAllRowsButton;\n checkAllRowsButton.removeAttribute(\"checkedAll\");\n checkAllRowsButton.classList.remove(\"checkedAll\");\n this.theTableObject.rows.forEach((row) => row.isSelected = false);\n this.filterRows();\n this.checkAllRowsEvent.dispatch({ isChecked: false, rows: this.filteredRows });\n }\n cloneRow(event2) {\n event2.stopPropagation();\n let selectedRows = this.theTableObject.rows.filter((row) => row.isSelected);\n const notCloneableRows = selectedRows.filter((row) => row.notCloneable);\n selectedRows = selectedRows.filter((row) => !row.notCloneable);\n notCloneableRows.forEach((row) => row.isSelected = false);\n selectedRows.forEach((row) => {\n const id = row.id;\n const sameRow = this.getSameRow(id);\n const index = this.theTableObject.rows.findIndex((row2) => row2.id == id);\n if (sameRow) {\n const clonedRow = sameRow.clone();\n clonedRow.position = sameRow.position + 1;\n let counter = 0;\n for (let i = index + 1; i < this.theTableObject.rows.length; i++) {\n this.theTableObject.rows[i].position = sameRow.position + 2 + counter;\n counter++;\n }\n this.theTableObject.rows.splice(index + 1, 0, clonedRow);\n this.clonedRowEvent.dispatch(this.theTableObject.rows);\n }\n });\n const checkAllRowsButton = this.checkAllRowsButton;\n checkAllRowsButton.removeAttribute(\"checkedAll\");\n checkAllRowsButton.classList.remove(\"checkedAll\");\n this.theTableObject.rows.forEach((row) => row.isSelected = false);\n this.filterRows();\n this.checkAllRowsEvent.dispatch({ isChecked: false, rows: this.filteredRows });\n }\n checkAllRows(event2) {\n const checkAllRowsButton = this.checkAllRowsButton;\n const isCurrentlyChecked = checkAllRowsButton.hasAttribute(\"checkedAll\");\n this.toggleAllRows(!isCurrentlyChecked);\n }\n /**\n * Marks every filtered row as selected or deselected and re-renders the\n * visible viewport. Use from outside the table (e.g. a master checkbox\n * in the header column) to drive the existing \"select all\" behaviour\n * without depending on the toolbar button being visible.\n */\n toggleAllRows(isChecked) {\n const checkAllRowsButton = this.checkAllRowsButton;\n if (isChecked) {\n checkAllRowsButton?.setAttribute(\"checkedAll\", \"\");\n checkAllRowsButton?.classList.add(\"checkedAll\");\n } else {\n checkAllRowsButton?.removeAttribute(\"checkedAll\");\n checkAllRowsButton?.classList.remove(\"checkedAll\");\n }\n this.filteredRows.forEach((row) => {\n const selectedRow = this.theTableObject.rows.find((tableRow) => tableRow.id == row.id);\n if (selectedRow) {\n selectedRow.isSelected = isChecked;\n }\n });\n this.updateScrollView();\n this.checkAllRowsEvent.dispatch({ isChecked, rows: this.filteredRows });\n }\n editingCellContent(event2) {\n const mouseEvent = event2;\n const isCtrlPressed = mouseEvent.ctrlKey;\n if (!isCtrlPressed) {\n let cell = event2.target;\n if (cell.tagName.toLowerCase() == \"dh-table-row\" || cell.hasAttribute(\"dh-table-head-cell\")) {\n return;\n }\n if (!cell.hasAttribute(\"dh-table-body-cell\")) {\n const realCell = cell.closest(\"[dh-table-body-cell]\");\n if (realCell) {\n cell = realCell;\n } else {\n return;\n }\n }\n const targetParentRow = cell.closest(\"dh-table-row\");\n if (cell) {\n if (this.editable) {\n if (!cell.hasAttribute(\"notEditable\")) {\n if (!targetParentRow?.hasAttribute(\"notEditable\")) {\n this.editingRowEvent.dispatch(targetParentRow);\n if (cell.type != \"checkbox\" && cell.type != \"selectbox\" && cell.type != \"dropdown\") {\n cell.setMode(\"edit\");\n let cellValue = cell.innerText.trim();\n if (!cellValue) {\n cellValue = cell.value;\n }\n cell.value = cellValue;\n cell.setInputFocus();\n }\n if (cell.type != \"selectbox\") {\n this.isEdited = true;\n }\n }\n }\n }\n }\n }\n }\n clickHeader(event2) {\n if (this.isResizing) {\n return;\n }\n if (this.theTableObject.rows.length <= 1) {\n return;\n }\n const target = event2.composedPath().find(\n (el) => el instanceof HTMLElement && el.matches(\"[dh-table-head-cell]\")\n );\n if (!target) {\n return;\n }\n const key = target.getAttribute(\"key\");\n const header = this.theTableObject.header.find((head) => head.key == key);\n if (!header) {\n return;\n }\n const isNotSortable = header.attributes.some((attribute) => attribute == \"notSortable\") || target.hasAttribute(\"notSortable\");\n if (isNotSortable) {\n return;\n }\n let direction;\n if (this.currentSortKey === header.key) {\n direction = this.currentSortDirection === \"asc\" ? \"desc\" : \"asc\";\n } else {\n direction = this.defaultSortDirection;\n }\n this.currentSortKey = header.key;\n this.currentSortDirection = direction;\n this.theTableObject.rows = this.sort(header, direction, this.theTableObject.rows);\n this.sortedRows.dispatch(this.theTableObject);\n this.toggleSortIconClasses(target, direction);\n this.filterRows();\n }\n sort(header, direction, array) {\n if (array.length <= 1) {\n return array;\n }\n const headerIndex = this.theTableObject.header.findIndex((head) => head.key == header.key);\n if (headerIndex === -1) {\n return array;\n }\n const type = header.type;\n const factor = direction === \"desc\" ? -1 : 1;\n const collator = type === \"number\" || type === \"date\" ? null : new Intl.Collator(void 0, { sensitivity: \"base\" });\n const decorated = array.map((row) => ({\n key: this.prepareSortKey(row[headerIndex]?.value, type),\n row\n }));\n decorated.sort((a, b) => {\n const ak = a.key;\n const bk = b.key;\n if (type === \"date\") {\n const aNaN = typeof ak === \"number\" && isNaN(ak);\n const bNaN = typeof bk === \"number\" && isNaN(bk);\n if (aNaN && bNaN) {\n return 0;\n }\n if (aNaN) {\n return direction === \"asc\" ? -1 : 1;\n }\n if (bNaN) {\n return direction === \"asc\" ? 1 : -1;\n }\n return factor * (ak - bk);\n }\n if (type === \"number\") {\n return factor * (ak - bk);\n }\n return factor * collator.compare(ak, bk);\n });\n return decorated.map((entry) => entry.row);\n }\n prepareSortKey(value, type) {\n if (type === \"number\") {\n const n = typeof value === \"number\" ? value : parseFloat(value);\n return isNaN(n) ? 0 : n;\n }\n if (type === \"date\") {\n return value instanceof Date ? value.getTime() : new Date(value).getTime();\n }\n return (value ?? \"\").toString();\n }\n toggleSortIconClasses(target, sortType) {\n const gridHeader = this.renderRoot.querySelector(\".grid-header\");\n if (gridHeader) {\n const siblingElements = Array.from(gridHeader.querySelectorAll(\"[dh-table-head-cell]\"));\n siblingElements.forEach((sibling) => {\n const isNotSortable = sibling.hasAttribute(\"notSortable\");\n if (!isNotSortable) {\n sibling.classList.remove(\"asc\", \"desc\");\n sibling.classList.add(\"unsorted\");\n sibling.setAttribute(\"sorting\", \"unsorted\");\n }\n });\n if (sortType == \"asc\") {\n target.classList.add(\"asc\");\n target.classList.remove(\"unsorted\");\n target.setAttribute(\"sorting\", \"asc\");\n } else {\n target.classList.add(\"desc\");\n target.classList.remove(\"unsorted\");\n target.setAttribute(\"sorting\", \"desc\");\n }\n }\n }\n //Hilfsmethoden\n getSameRow(id) {\n return this.theTableObject.rows.find((row) => row.id == id);\n }\n getSameRowIndex(id) {\n return this.theTableObject.rows.findIndex((row) => row.id == id);\n }\n getSameRowBasedOnIndex(index) {\n return this.theTableObject.rows[index];\n }\n getHeaderCells() {\n return Array.from(this.renderRoot.querySelectorAll(\"[dh-table-head-cell]\"));\n }\n getHeaderRow() {\n let row = this.querySelector(\"dh-table-row[slot=table-head]\");\n if (!row) {\n row = this.renderRoot.querySelector(\"dh-table-row\");\n }\n return row;\n }\n getBodyRows() {\n let rows = Array.from(this.querySelectorAll(\"dh-table-row[slot=table-body]\"));\n if (rows.length == 0) {\n rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row.body\"));\n }\n if (rows.length == 0) {\n rows = Array.from(this.renderRoot.querySelectorAll(\".virtual-rows dh-table-row\"));\n }\n return rows;\n }\n async addFilterRule(value, index) {\n this.filterRules.push({ index, value });\n await this.filterRows();\n }\n removeFilterRule(value, index) {\n const removeIndex = this.filterRules.findIndex((rule) => rule.value == value && rule.index == index);\n this.filterRules.splice(removeIndex, 1);\n this.filterRows();\n }\n async filterText() {\n this.removeFilterRule(this.filterValue, -1);\n const value = this.filterInput.getInputValue().toLowerCase();\n this.filterValue = value;\n await this.addFilterRule(value, -1);\n this.filterInput.focus();\n }\n async filterRows() {\n const rows = this.filterRules.length === 0 ? this.theTableObject.rows : this.theTableObject.rows.filter((row) => {\n return this.filterRules.every((rule) => {\n if (rule.index == -1) {\n return row.some((cell) => cell.value?.toString().toLowerCase().includes(rule.value));\n } else {\n return row[rule.index].value == rule.value;\n }\n });\n });\n const predicateFiltered = this.rowFilterPredicate ? rows.filter(this.rowFilterPredicate) : rows;\n const hideInactive = this.hideInactiveRows || this.activeFilter && !!this.activeFilterInput?.getCheckboxIsChecked();\n this.filteredRows = hideInactive ? predicateFiltered.filter((row) => row.active) : predicateFiltered;\n this.lastProcessedRows = this.theTableObject.rows;\n this.updateScrollView();\n }\n isNotEditable(attributes) {\n return attributes.indexOf(\"notEditable\") > -1;\n }\n useStandard(attributes) {\n return attributes.indexOf(\"useStandard\") > -1;\n }\n getSelectedRows() {\n let rows = Array.from(this.querySelectorAll(\"dh-table-row[slot=table-body].selected\"));\n if (rows.length == 0) {\n rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row.selected\"));\n }\n return rows;\n }\n getRows() {\n let rows = Array.from(this.querySelectorAll(\"dh-table-row[slot=table-body]\"));\n if (rows.length == 0) {\n rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row\"));\n }\n return rows;\n }\n selectRow(event2) {\n if (this.notSelectable) {\n return;\n }\n const mouseEvent = event2;\n const target = mouseEvent.target.parentElement;\n const isCtrlPressed = mouseEvent?.ctrlKey;\n let row;\n if (target) {\n const tagName = target.tagName;\n if (tagName.toLowerCase() == \"dh-table-body-cell\") {\n row = target?.parentElement;\n } else {\n row = target;\n }\n this.selected(row, isCtrlPressed, tagName);\n }\n }\n async multiSelectRow(event2) {\n if (this.notSelectable) {\n return;\n }\n const target = event2.target.parentElement;\n const tagName = target?.tagName;\n let tableRow;\n const mouseEvent = event2;\n const isShiftPressed = mouseEvent.shiftKey;\n if (tagName?.toLowerCase() == \"dh-table-body-cell\") {\n tableRow = target?.parentElement;\n } else {\n tableRow = target;\n }\n if (isShiftPressed) {\n if (!this.firstShiftPressedElementId) {\n this.firstShiftPressedElementId = tableRow.id;\n } else {\n const firstIndex = this.theTableObject.rows.findIndex((row) => row.id == this.firstShiftPressedElementId);\n const lastIndex = this.theTableObject.rows.findIndex((row) => row.id == tableRow.id);\n let rangeSeries = [];\n if (firstIndex < lastIndex) {\n rangeSeries = this.theTableObject.rows.slice(firstIndex, lastIndex + 1);\n } else {\n rangeSeries = this.theTableObject.rows.slice(lastIndex, firstIndex + 1);\n }\n rangeSeries.forEach((row) => {\n row.isSelected = true;\n });\n this.firstShiftPressedElementId = \"\";\n await this.updateScrollView();\n this.rowRangeIsSelected.dispatch({ dataRowRange: rangeSeries });\n }\n }\n }\n async selected(row, isCtrlOrShiftPressed, tagName) {\n if (this.notSelectable) {\n return;\n }\n const id = row.getAttribute(\"id\");\n if (id) {\n const sameRow = this.getSameRow(id);\n if (id) {\n if (!this.useSingleSelect) {\n sameRow.isSelected = !sameRow.isSelected;\n await this.updateScrollView();\n this.anotherRowIsSelected.dispatch({ dataRow: sameRow });\n } else {\n this.theTableObject.rows.forEach((row2) => row2.isSelected = false);\n sameRow.isSelected = !sameRow.isSelected;\n await this.updateScrollView();\n this.singleRowIsSelected.dispatch({ dataRow: sameRow });\n }\n }\n }\n }\n async exportTableAsCsv() {\n const keys = [];\n let keyString = \"\";\n let contentString = \"\";\n this.theTableObject.header.forEach((head) => keys.push(head.key));\n keys.push(\"sortIndex\");\n for (let i = 0; i < keys.length; i++) {\n const title = keys[i];\n const halfCleanTitle = title.replace(\"\\\\\", \"\\\\\\\\\");\n const cleanTitle = halfCleanTitle.replace('\"', '\\\\\"');\n if (i == keys.length - 1) {\n keyString = keyString + '\"' + cleanTitle + '\"\\r\\n';\n contentString = keyString;\n } else {\n keyString = keyString + '\"' + cleanTitle + '\";';\n }\n }\n for (let i = 0; i < this.theTableObject.rows.length; i++) {\n let rowString = \"\";\n for (let x = 0; x < this.theTableObject.rows[i].length; x++) {\n const value = String(this.theTableObject.rows[i][x].value ?? \"\");\n const halfCleanValue = value.replace(\"\\\\\", \"\\\\\\\\\");\n const cleanValue = halfCleanValue.replace('\"', '\\\\\"');\n if (x == this.theTableObject.rows[i].length - 2 && i + 1 < this.theTableObject.rows.length) {\n rowString = rowString + '\"' + cleanValue + '\"\\r\\n';\n contentString = contentString + rowString;\n } else if (x == this.theTableObject.rows[i].length - 2 && i + 1 == this.theTableObject.rows[i].length) {\n rowString = rowString + '\"' + cleanValue + '\"';\n contentString = contentString + rowString;\n } else {\n rowString = rowString + '\"' + cleanValue + '\";';\n }\n }\n }\n try {\n const stringBuffer = cptable$1.utils.encode(this.encoding, contentString);\n const link = document.createElement(\"a\");\n const file = new Blob([new Uint8Array(stringBuffer)], { type: \"text/plain\" });\n link.href = URL.createObjectURL(file);\n link.download = \"table.csv\";\n link.click();\n URL.revokeObjectURL(link.href);\n } catch (e) {\n console.error(e);\n this.exportError.dispatch(e);\n }\n }\n openUploadFileDialog() {\n this.uploadInput.click();\n }\n async readFile() {\n const files = this.uploadInput.files;\n let file;\n if (files) {\n file = files[0];\n }\n const fileReader = new FileReader();\n if (file) {\n fileReader.readAsArrayBuffer(file);\n const buffer = await new Promise((resolve) => fileReader.addEventListener(\"load\", () => resolve(fileReader.result)));\n this.importTableAsCsv(buffer);\n }\n }\n importTableAsCsv(buffer) {\n try {\n const data = cptable$1.utils.decode(this.encoding, new Uint8Array(buffer));\n const importObject = Mama.parse(data, { delimiter: \";\" });\n const importData = { rows: importObject.data.slice(1), header: importObject.data.slice(0, 1)[0] };\n this.importTableData.dispatch(importData);\n } catch (e) {\n console.error(e);\n this.importError.dispatch(e);\n }\n }\n normalizePositions() {\n this.theTableObject.rows.sort((a, b) => a.position - b.position);\n this.theTableObject.rows.forEach((row, i) => row.position = i + 1);\n }\n positionUp(event2) {\n const selectedRows = this.getSelectedRows();\n if (selectedRows.length > 1) {\n this.positionFail.dispatch({ error: \"Too many rows selected\" });\n return;\n }\n if (selectedRows.length === 0) return;\n this.normalizePositions();\n const sameTableRow = this.theTableObject.rows.find((row) => row.id == selectedRows[0].id);\n if (!sameTableRow) return;\n const index = this.theTableObject.rows.indexOf(sameTableRow);\n if (index <= 0) {\n this.positionFail.dispatch({ error: \"Row is in first position\" });\n return;\n }\n const other = this.theTableObject.rows[index - 1];\n const tempPos = sameTableRow.position;\n sameTableRow.position = other.position;\n other.position = tempPos;\n this.theTableObject.rows.sort((a, b) => a.position - b.position);\n this.normalizePositions();\n this.filterRows();\n this.positionUpEvent.dispatch(this.theTableObject);\n }\n positionDown(event2) {\n const selectedRows = this.getSelectedRows();\n if (selectedRows.length > 1) {\n this.positionFail.dispatch({ error: \"Too many rows selected\" });\n return;\n }\n if (selectedRows.length === 0) return;\n this.normalizePositions();\n const sameTableRow = this.theTableObject.rows.find((row) => row.id == selectedRows[0].id);\n if (!sameTableRow) return;\n const index = this.theTableObject.rows.indexOf(sameTableRow);\n if (index >= this.theTableObject.rows.length - 1) {\n this.positionFail.dispatch({ error: \"Row is in last position\" });\n return;\n }\n const other = this.theTableObject.rows[index + 1];\n const tempPos = sameTableRow.position;\n sameTableRow.position = other.position;\n other.position = tempPos;\n this.theTableObject.rows.sort((a, b) => a.position - b.position);\n this.normalizePositions();\n this.filterRows();\n this.positionDownEvent.dispatch(this.theTableObject);\n }\n // Signatur bleibt async für Backward-Compat (Aufrufer mit `await` brechen\n // sonst), intern aber komplett synchron: keine Microtask-Yields mehr im\n // Scroll-Hot-Path. Bei schnellem Scrollen kommt das Update jetzt im selben\n // rAF-Frame zustande wie der Scroll-Event.\n async updateScrollView() {\n if (this.isResizing) return;\n const container = this.scrollContainer;\n if (!container) return;\n this.blur();\n const scrollTop = container.scrollTop;\n this.lastScrollTop = scrollTop;\n let height = container.offsetHeight;\n if (height === 0) {\n height = window.innerHeight;\n }\n const visibleCount = Math.ceil(height / this.lineHeight);\n const overscan = DhTable.OVERSCAN;\n const startNode = Math.max(0, Math.floor(scrollTop / this.lineHeight) - overscan);\n const slabSize = Math.min(this.filteredRows.length - startNode, visibleCount + 2 * overscan);\n this.visibleNodes = this.filteredRows.slice(startNode, startNode + slabSize + 1);\n this.bodyOffset = startNode * this.lineHeight;\n }\n resetValue(event2) {\n const target = event2.target;\n if (target) {\n target.value = \"\";\n }\n }\n get hasManipulationElements() {\n return this.manipulable || this.positionable || this.generalFilter || this.activeFilter;\n }\n};\n// Overscan-Puffer (Reihen) oberhalb und unterhalb der Viewport.\n// BEWUSST STABIL: ein konstanter Pool gibt Lit ein DOM mit fester Größe\n// pro Scroll-Frame, sodass DOM-Elemente recycled werden statt bei jedem\n// Tick neu instanziiert (importNode/setAttribute schoss sonst hoch).\nDhTable.OVERSCAN = 60;\nDhTable.SCROLL_END_DELAY_MS = 150;\nDhTable.styles = [\n css`\n ${unsafeCSS(style$w)}\n `\n];\n__decorateClass$w([\n query(\"#check-all-rows\")\n], DhTable.prototype, \"checkAllRowsButton\", 2);\n__decorateClass$w([\n query(\"#upload-input\")\n], DhTable.prototype, \"uploadInput\", 2);\n__decorateClass$w([\n query(\"#filter-input\")\n], DhTable.prototype, \"filterInput\", 2);\n__decorateClass$w([\n query(\"#active-filter-input\")\n], DhTable.prototype, \"activeFilterInput\", 2);\n__decorateClass$w([\n query(\"#grid-scroll\")\n], DhTable.prototype, \"scrollContainer\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"sortable\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"positionable\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"manipulable\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"notAddRow\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"notCloneRow\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"notRemoveRow\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"editable\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"notSelectable\", 2);\n__decorateClass$w([\n property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"withCheckbox\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"generalFilter\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"activeFilter\", 2);\n__decorateClass$w([\n property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"hideInactiveRows\", 2);\n__decorateClass$w([\n property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"loading\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"filterLabel\", 2);\n__decorateClass$w([\n property({ type: Number, reflect: true })\n], DhTable.prototype, \"lineHeight\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"activeFilterLabel\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"downloadable\", 2);\n__decorateClass$w([\n property({ type: Boolean })\n], DhTable.prototype, \"uploadable\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"encoding\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"selectHeaderValue\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"addRowTitle\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"cloneRowTitle\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"removeRowTitle\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"rowPositionUpTitle\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"rowPositionDownTitle\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"checkAllRowsTitle\", 2);\n__decorateClass$w([\n property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"hideCheckAllRowsButton\", 2);\n__decorateClass$w([\n property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"withMasterCheckbox\", 2);\n__decorateClass$w([\n property({ type: String })\n], DhTable.prototype, \"masterCheckboxAriaLabel\", 2);\n__decorateClass$w([\n state()\n], DhTable.prototype, \"bodyOffset\", 2);\n__decorateClass$w([\n state()\n], DhTable.prototype, \"columnWidths\", 2);\n__decorateClass$w([\n state()\n], DhTable.prototype, \"theTableObject\", 2);\n__decorateClass$w([\n property({ type: String, reflect: true })\n], DhTable.prototype, \"defaultWidth\", 2);\n__decorateClass$w([\n property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"useSingleSelect\", 2);\n__decorateClass$w([\n state()\n], DhTable.prototype, \"visibleNodes\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"dblRowClick\")\n], DhTable.prototype, \"dblRowClick\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"addNewRow\")\n], DhTable.prototype, \"addNewRowEvent\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"removeRow\")\n], DhTable.prototype, \"removeRowEvent\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"removeRows\")\n], DhTable.prototype, \"removeRows\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"checkAllRows\")\n], DhTable.prototype, \"checkAllRowsEvent\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"clonedRow\")\n], DhTable.prototype, \"clonedRowEvent\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"editingRow\")\n], DhTable.prototype, \"editingRowEvent\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"sortedRows\")\n], DhTable.prototype, \"sortedRows\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"rowRangeIsSelected\")\n], DhTable.prototype, \"rowRangeIsSelected\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"anotherRowIsSelected\")\n], DhTable.prototype, \"anotherRowIsSelected\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"singleRowIsSelected\")\n], DhTable.prototype, \"singleRowIsSelected\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"exportError\")\n], DhTable.prototype, \"exportError\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"importTableData\")\n], DhTable.prototype, \"importTableData\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"importError\")\n], DhTable.prototype, \"importError\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"positionFail\")\n], DhTable.prototype, \"positionFail\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"positionUp\")\n], DhTable.prototype, \"positionUpEvent\", 2);\n__decorateClass$w([\n event({ bubbles: true, cancelable: true, composed: true }, \"positionDown\")\n], DhTable.prototype, \"positionDownEvent\", 2);\n__decorateClass$w([\n property({ type: String, reflect: true })\n], DhTable.prototype, \"defaultSortDirection\", 2);\nDhTable = __decorateClass$w([\n customElement(\"dh-table\")\n], DhTable);\n\nvar style$v = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: flex;\\n align-items: center;\\n box-sizing: border-box;\\n position: sticky;\\n top: 0;\\n z-index: 10;\\n overflow: hidden;\\n min-height: var(--dh-head-cell-height, 36px);\\n padding: var(--dh-head-cell-padding, 12px 8px);\\n border-bottom: 1px solid var(--dh-border-color, transparent);\\n border-right: 1px solid var(--dh-border-color, transparent);\\n font-weight: var(--dh-header-weight, inherit);\\n color: var(--dh-header-color, inherit);\\n background-color: var(--dh-head-cell-bg, var(--md-sys-color-surface-container, #fff));\\n}\\n\\n.rotate {\\n transform: scaleY(-1);\\n}\\n\\n.container {\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n}\\n\\n#resize-element {\\n top: 0;\\n right: 0;\\n width: var(--dh-resize-width, 5px);\\n position: absolute;\\n cursor: col-resize;\\n user-select: none;\\n height: 100%;\\n background-color: var(--dh-resize-bg, rgba(0, 0, 0, 0.06));\\n transition: background-color 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n#resize-element:hover {\\n background-color: var(--dh-resize-hover-bg, var(--dh-state-hover-bg, rgba(0, 0, 0, 0.12)));\\n}\\n\\n:host([resizing]) {\\n overflow: visible;\\n}\\n\\n:host([resizing]) #resize-element {\\n width: 3px;\\n background-color: var(--md-sys-color-primary, #FF8014);\\n z-index: 100;\\n}\\n\\n:host([resizing]) #resize-element::after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 100%;\\n left: 0;\\n width: 3px;\\n height: 100vh;\\n background-color: var(--md-sys-color-primary, #FF8014);\\n}\";\n\nvar __defProp$t = Object.defineProperty;\nvar __getOwnPropDesc$v = Object.getOwnPropertyDescriptor;\nvar __decorateClass$v = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$v(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$t(target, key, result);\n return result;\n};\nlet DhTableHeadCell = class extends LitElement {\n constructor() {\n super(...arguments);\n this.sorting = \"unsorted\";\n this.notSortable = false;\n this.parentSortable = true;\n this.defaultWidth = \"200px\";\n this.isResizeing = false;\n this.pageX = 0;\n this.currentColumnWidth = 0;\n this.mouseMove = (event2) => {\n if (this.isResizeing && this.currentColumn) {\n const columnLeft = this.currentColumn.getBoundingClientRect().left;\n const newWidth = Math.max(40, event2.clientX - columnLeft);\n this.resize.dispatch({\n width: newWidth + \"px\",\n headerKey: this.currentColumn.getAttribute(\"key\"),\n sourceElement: this.currentColumn\n });\n }\n };\n this.mouseUp = (event2) => {\n if (this.isResizeing) {\n event2.stopPropagation();\n if (this.currentColumn) {\n this.currentColumn.removeAttribute(\"resizing\");\n }\n this.resizeStop.dispatch();\n this.isResizeing = false;\n this.currentColumn = null;\n this.pageX = 0;\n this.currentColumnWidth = 0;\n document.removeEventListener(\"mousemove\", this.mouseMove);\n document.removeEventListener(\"mouseup\", this.mouseUp);\n }\n };\n }\n render() {\n return html`<div id=\"container\" class=\"container\" part=\"root\">\n <div part=\"label\">\n <slot></slot>\n </div>\n <div>\n ${!this.notSortable && this.parentSortable ? choose(this.sorting, [\n [\"asc\", () => html`<div class=\"fv-icon-arrow-down rotate\" part=\"icon\"></div>`],\n [\"desc\", () => html` <div class=\"fv-icon-arrow-down\" part=\"icon\"></div>`],\n [\"unsorted\", () => html`<div class=\"fv-icon-arrow-up-down\" part=\"icon\"></div>`]\n ]) : \"\"}\n <div id=\"resize-element\" @mousedown=\"${this.saveCurrentValues}\" part=\"divider\"></div>\n </div>\n </div> `;\n }\n async connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-table-head-cell\")) {\n this.setAttribute(\"dh-table-head-cell\", \"\");\n }\n this.addEventListener(\"mouseup\", this.mouseUp);\n }\n async disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener(\"mousemove\", this.mouseMove);\n document.removeEventListener(\"mouseup\", this.mouseUp);\n }\n setSorting(sorting) {\n this.sorting = sorting;\n }\n saveCurrentValues(event2) {\n event2.stopPropagation();\n this.isResizeing = true;\n this.currentColumn = event2.target.getRootNode().host;\n this.pageX = event2.pageX;\n if (this.currentColumn) {\n this.currentColumnWidth = this.currentColumn.getBoundingClientRect().width;\n this.currentColumn.setAttribute(\"resizing\", \"\");\n }\n document.addEventListener(\"mousemove\", this.mouseMove);\n document.addEventListener(\"mouseup\", this.mouseUp);\n }\n};\nDhTableHeadCell.styles = css`\n ${unsafeCSS(style$v)}\n `;\n__decorateClass$v([\n query(\"#sort-img\")\n], DhTableHeadCell.prototype, \"sortImg\", 2);\n__decorateClass$v([\n query(\"#container\")\n], DhTableHeadCell.prototype, \"container\", 2);\n__decorateClass$v([\n property({ type: String, reflect: true })\n], DhTableHeadCell.prototype, \"sorting\", 2);\n__decorateClass$v([\n property({ type: Boolean, reflect: true })\n], DhTableHeadCell.prototype, \"notSortable\", 2);\n__decorateClass$v([\n property({ type: Boolean, reflect: true })\n], DhTableHeadCell.prototype, \"parentSortable\", 2);\n__decorateClass$v([\n property({ type: String, reflect: true })\n], DhTableHeadCell.prototype, \"defaultWidth\", 2);\n__decorateClass$v([\n event({ bubbles: true, cancelable: true, composed: true }, \"resizeStop\")\n], DhTableHeadCell.prototype, \"resizeStop\", 2);\n__decorateClass$v([\n event({ bubbles: true, cancelable: true, composed: true }, \"resize\")\n], DhTableHeadCell.prototype, \"resize\", 2);\nDhTableHeadCell = __decorateClass$v([\n customElement(\"dh-table-head-cell\")\n], DhTableHeadCell);\n\nvar style$u = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: flex;\\n align-items: center;\\n box-sizing: border-box;\\n white-space: nowrap;\\n overflow: hidden;\\n height: var(--dh-body-cell-height, 36px);\\n padding: var(--dh-body-cell-padding, 0 8px);\\n border-bottom: 1px solid var(--dh-border-color, transparent);\\n border-right: 1px solid var(--dh-border-color, transparent);\\n color: inherit;\\n background-color: var(--dh-body-cell-bg, inherit);\\n}\\n\\nform {\\n width: 100%;\\n height: 100%;\\n}\\n\\n#input {\\n height: 100%;\\n width: 100%;\\n}\\n\\n:host([type=checkbox]) form:not(.hidden) {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n:host([type=checkbox]) #input {\\n height: auto;\\n width: auto;\\n transform: scale(1.3);\\n}\\n\\n:host([type=radio]) form {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n:host([type=radio]) #input {\\n height: auto;\\n width: auto;\\n}\\n\\n::slotted(input.invalid) {\\n border-color: var(--dh-error-color, inherit);\\n}\\n\\n:host([type=dropdown]) {\\n overflow: visible;\\n}\\n\\n:host([type=dropdown]) .container {\\n overflow: visible;\\n}\\n\\n:host([type=button]) {\\n overflow: visible;\\n padding: 2px 8px;\\n}\\n\\n:host([type=button]) .container {\\n overflow: visible;\\n}\\n\\n:host([type=selectbox]) {\\n justify-content: center;\\n}\\n\\n::slotted(dh-checkbox) {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\n::slotted(dh-select) {\\n width: 100%;\\n}\\n\\n::slotted(dh-button) {\\n max-height: 100%;\\n}\\n\\n.container {\\n display: flex;\\n box-sizing: border-box;\\n white-space: nowrap;\\n align-items: center;\\n width: 100%;\\n align-self: stretch;\\n height: 100%;\\n}\\n\\n::slotted(dh-button) {\\n max-height: 100%;\\n max-width: 100%;\\n min-height: 0;\\n min-width: 0;\\n}\\n\\n::slotted(dh-button[icon-button]) {\\n margin: 0;\\n}\\n\\n.overflow {\\n overflow: hidden;\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nvar __defProp$s = Object.defineProperty;\nvar __getOwnPropDesc$u = Object.getOwnPropertyDescriptor;\nvar __decorateClass$u = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$u(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$s(target, key, result);\n return result;\n};\nlet DhTableBodyCell = class extends LitElement {\n constructor() {\n super(...arguments);\n this.value = \"\";\n this.index = \"\";\n this.type = \"\";\n this.accept = \"\";\n this.min = void 0;\n this.max = void 0;\n this.step = void 0;\n this.name = \"\";\n this.placeholder = \"\";\n this.blub = void 0;\n this.checked = false;\n this.disabled = false;\n this.mode = \"show\";\n this.defaultWidth = \"200px\";\n }\n set valueAsDate(value) {\n (async () => this.inputElement.valueAsDate = value)();\n }\n render() {\n const inputVisible = this.type !== \"checkbox\" && (this.type === \"radio\" || this.mode === \"edit\");\n return html`\n <div\n id=\"container\"\n class=${classMap({ overflow: this.type != \"dropdown\", container: true })}\n @pasteInputValue=\"${this.pasteInputValues}\"\n @isChange=\"${this.writeValue}\"\n exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n part=\"root\"\n >\n <slot class=${classMap({ hidden: this.mode == \"edit\" && this.type != \"checkbox\" })} part=\"content\">${this.placeholder}</slot>\n <form class=${classMap({ hidden: !inputVisible })}>\n ${inputVisible ? html`<dh-input\n exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n @keydown=${(e) => {\n this.keyDown(e);\n this.isEnterKey(e);\n }}\n id=\"input\"\n .value=\"${this.value}\"\n value=\"${this.value}\"\n .checked=\"${this.checked}\"\n .disabled=\"${this.disabled}\"\n type=\"${this.type}\"\n @blur=${this.writeValue}\n @checkboxChange=\"${this.writeValue}\"\n @changeSelectOption=\"${this.changeSelect}\"\n size=\"5\"\n name=\"${this.name}\"\n accept=\"${this.accept}\"\n min=\"${ifDefined(this.min)}\"\n max=\"${ifDefined(this.max)}\"\n step=\"${ifDefined(this.step)}\"\n blub=\"${ifDefined(this.blub)}\"\n ></dh-input>` : nothing}\n </form>\n </div>\n `;\n }\n async connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-table-body-cell\")) {\n this.setAttribute(\"dh-table-body-cell\", \"\");\n }\n this.addEventListener(\"click\", () => {\n this.clickBodyCell();\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n const parentTable = this.closestElement(this, \"[dh-table]\");\n if (parentTable) {\n const parentLineHeight = parentTable.getAttribute(\"lineHeight\");\n if (parentLineHeight) {\n this.container.style.maxHeight = `${parentLineHeight}px`;\n }\n }\n }\n resize(_width) {\n }\n closestElement(node, selector) {\n if (!node) return null;\n if (node instanceof ShadowRoot) return this.closestElement(node.host, selector);\n if (node instanceof HTMLElement) {\n if (node.matches(selector)) return node;\n else return this.closestElement(node.parentNode, selector);\n }\n return this.closestElement(node.parentNode, selector);\n }\n setMode(mode) {\n if (mode == \"show\" || mode == \"edit\") this.mode = mode;\n }\n async setInputFocus() {\n (await this.inputElement).focus();\n }\n getContainer() {\n return this.container;\n }\n pasteInputValues(event2) {\n const data = event2.detail.data;\n const input = event2.detail.input;\n const cellIndex = this.index;\n const row = this.closest(\"dh-table-row\");\n const id = row?.getAttribute(\"id\");\n const table = (row?.getRootNode()).host;\n const type = this.getAttribute(\"type\");\n if (id) {\n const sameRowIndex = table.getSameRowIndex(id);\n data.forEach((data2, index) => {\n const sameRow = table.getSameRowBasedOnIndex(sameRowIndex + index);\n if (index == 0) {\n if (type == \"date\") {\n const newDate = new Date(data2);\n if (newDate.toString() != \"Invalid Date\") {\n input.valueAsDate = newDate;\n }\n } else {\n input.value = data2;\n }\n } else if (sameRow) {\n const sameCell = sameRow[parseInt(cellIndex)];\n const hasNotEditable = sameCell.attributes.some((attribute) => attribute == \"notEditable\");\n if (!hasNotEditable) {\n if (type == \"text\") {\n sameCell.value = data2;\n sameRow.isModified = true;\n this.cellIsEdit.dispatch({ newValue: data2, index: cellIndex, id: sameRow.id, content: this.getAttribute(\"content\") });\n } else if (type == \"number\") {\n const number = parseFloat(data2);\n if (!isNaN(number)) {\n const min = input.min;\n const max = input.max;\n const isMin = min ? number >= min : true;\n const isMax = max ? number <= max : true;\n if (isMax && isMin) {\n sameCell.value = number;\n sameRow.isModified = true;\n this.cellIsEdit.dispatch({ newValue: data2, index: cellIndex, id: sameRow.id, content: this.getAttribute(\"content\") });\n }\n }\n } else if (type == \"date\") {\n const newDate = new Date(data2);\n if (newDate.toString() != \"Invalid Date\") {\n sameCell.value = newDate;\n sameRow.isModified = true;\n this.cellIsEdit.dispatch({ newValue: newDate, index: cellIndex, id: sameRow.id, content: this.getAttribute(\"content\") });\n }\n }\n }\n }\n });\n this.mode = \"show\";\n }\n }\n async changeSelect(event2) {\n event2.stopPropagation();\n const selectedOption = event2.detail.selectedOption;\n const dhSelect = event2.detail.dhSelect;\n const index = this.index;\n const grandparent = this.parentElement;\n const table = grandparent.getRootNode().host;\n const id = grandparent.id;\n const sameRow = table.getSameRow(id);\n if (sameRow) {\n const sameCell = sameRow[parseInt(index)];\n if (sameRow[parseInt(index)].value != selectedOption.value) {\n sameCell.value = selectedOption.value;\n sameCell.objectValues?.forEach((object) => {\n object.selected = object.dataId == selectedOption.dataId;\n });\n sameRow.isModified = true;\n }\n this.changeTableSelect.dispatch({ selectedOption, dhSelect });\n }\n }\n async writeValue(event2) {\n const type = this.getAttribute(\"type\");\n if (type == \"selectbox\" && event2.type == \"isChange\") return;\n if ((type == \"checkbox\" || type == \"selectbox\" || type == \"dropdown\") && event2.type != \"checkboxChange\" && event2.type != \"isChange\") return;\n const target = event2.target;\n const grandparent = this.parentElement;\n const table = grandparent.getRootNode().host;\n let useStandard = false;\n const index = this.index;\n if (index) useStandard = table.getUseStandard(parseInt(index));\n const id = grandparent.id;\n const sameRow = table.getSameRow(id);\n let value = \"\";\n if (type == \"date\") value = target.getInputValueAsDate();\n else if (type == \"checkbox\") value = event2.type == \"isChange\" ? event2.detail : target.getCheckboxIsChecked();\n else value = target.getInputValue();\n let isValid = false;\n const isEmptyOk = type != \"date\";\n if (type) isValid = this.checkValueValidity(value, type, isEmptyOk);\n if (isValid) {\n this.classList.remove(\"invalid\");\n if (sameRow) {\n const sameCell = sameRow[parseInt(index)];\n if (sameRow[parseInt(index)].value != value) {\n sameCell.value = value;\n sameRow.isModified = true;\n this.cellIsEdit.dispatch({ newValue: value, index, id, content: this.getAttribute(\"content\") });\n }\n }\n } else if (useStandard) {\n if (sameRow) {\n const sameCell = sameRow[parseInt(index)];\n if (type == \"text\") sameCell.value = \"\";\n else if (type == \"date\") sameCell.value = /* @__PURE__ */ new Date(\"01.01.\" + (/* @__PURE__ */ new Date()).getFullYear());\n else if (type == \"boolean\") sameCell.value = \"false\";\n else if (type == \"number\") sameCell.value = \"\";\n sameRow.isModified = true;\n this.cellIsEdit.dispatch({ newValue: value, index, id, content: this.getAttribute(\"content\") });\n }\n this.classList.remove(\"invalid\");\n } else {\n target.classList.add(\"invalid\");\n }\n if (type != \"checkbox\" && type != \"selectbox\" && type != \"dropdown\") this.mode = \"show\";\n }\n isEnterKey(event2) {\n event2.stopPropagation();\n if (event2.key == \"Enter\") {\n this.writeValue(event2);\n event2.target.blur();\n }\n }\n checkValueValidity(value, type, isEmptyOk) {\n if (type == \"checkbox\" || type == \"selectbox\" || type == \"dropdown\") return true;\n if (type == \"text\") {\n if (isEmptyOk) return true;\n if (value && value.toString().length > 0) return true;\n } else if (type == \"date\") {\n if (isEmptyOk) return true;\n if (new Date(value).toString() != \"Invalid Date\") return true;\n } else if (type == \"boolean\") {\n if (value == \"true\" || value == \"false\" || value == \"0\" || value == \"1\") return true;\n } else if (type == \"number\") {\n if (isEmptyOk) return true;\n if (Number.isInteger(parseInt(value))) return true;\n }\n return false;\n }\n keyDown(event2) {\n if (event2.code == \"Escape\") {\n this.formElement.reset();\n this.mode = \"show\";\n }\n }\n clickBodyCell() {\n this.clickBodyCellEvent.dispatch(this);\n }\n};\nDhTableBodyCell.styles = css`\n ${unsafeCSS(style$u)}\n `;\n__decorateClass$u([\n queryAsync(\"dh-input\")\n], DhTableBodyCell.prototype, \"inputElement\", 2);\n__decorateClass$u([\n query(\"#container\")\n], DhTableBodyCell.prototype, \"container\", 2);\n__decorateClass$u([\n query(\"form\")\n], DhTableBodyCell.prototype, \"formElement\", 2);\n__decorateClass$u([\n property({ type: String, reflect: true })\n], DhTableBodyCell.prototype, \"value\", 2);\n__decorateClass$u([\n property({ type: String, reflect: true })\n], DhTableBodyCell.prototype, \"index\", 2);\n__decorateClass$u([\n property({ type: String, reflect: true })\n], DhTableBodyCell.prototype, \"type\", 2);\n__decorateClass$u([\n property({ type: String })\n], DhTableBodyCell.prototype, \"accept\", 2);\n__decorateClass$u([\n property({ type: Number })\n], DhTableBodyCell.prototype, \"min\", 2);\n__decorateClass$u([\n property({ type: Number })\n], DhTableBodyCell.prototype, \"max\", 2);\n__decorateClass$u([\n property({ type: Number })\n], DhTableBodyCell.prototype, \"step\", 2);\n__decorateClass$u([\n property({ type: String })\n], DhTableBodyCell.prototype, \"name\", 2);\n__decorateClass$u([\n property({ type: String })\n], DhTableBodyCell.prototype, \"placeholder\", 2);\n__decorateClass$u([\n property({ type: Number })\n], DhTableBodyCell.prototype, \"blub\", 2);\n__decorateClass$u([\n property({ type: Boolean, reflect: true })\n], DhTableBodyCell.prototype, \"checked\", 2);\n__decorateClass$u([\n property({ type: Boolean, reflect: true })\n], DhTableBodyCell.prototype, \"disabled\", 2);\n__decorateClass$u([\n property({ type: Boolean })\n], DhTableBodyCell.prototype, \"mode\", 2);\n__decorateClass$u([\n property({ type: String })\n], DhTableBodyCell.prototype, \"defaultWidth\", 2);\n__decorateClass$u([\n event({ bubbles: true, cancelable: true, composed: true }, \"cellIsEdit\")\n], DhTableBodyCell.prototype, \"cellIsEdit\", 2);\n__decorateClass$u([\n event({ bubbles: true, cancelable: true, composed: true }, \"changeTableSelect\")\n], DhTableBodyCell.prototype, \"changeTableSelect\", 2);\n__decorateClass$u([\n event({ bubbles: true, cancelable: true, composed: true }, \"clickBodyCell\")\n], DhTableBodyCell.prototype, \"clickBodyCellEvent\", 2);\nDhTableBodyCell = __decorateClass$u([\n customElement(\"dh-table-body-cell\")\n], DhTableBodyCell);\n\nvar style$t = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: contents;\\n}\\n\\n:host(:not([isActive])) {\\n opacity: var(--dh-inactive-opacity, 1);\\n}\\n\\n:host(.selected) ::slotted([dh-table-body-cell]) {\\n background-color: var(--dh-row-selected-bg, rgba(0, 0, 0, 0.06));\\n}\";\n\nvar __defProp$r = Object.defineProperty;\nvar __getOwnPropDesc$t = Object.getOwnPropertyDescriptor;\nvar __decorateClass$t = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$t(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$r(target, key, result);\n return result;\n};\nlet DhTableRow = class extends LitElement {\n constructor() {\n super(...arguments);\n this.isActive = true;\n this.hasChildren = false;\n this.isChild = false;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-table-row\")) {\n this.setAttribute(\"dh-table-row\", \"\");\n }\n }\n render() {\n return html`<slot part=\"root\"></slot>`;\n }\n firstUpdated() {\n const parentTable = this.closestElement(this, \"dh-table\");\n const parentLineHeight = parentTable?.getAttribute(\"lineHeight\") || \"36\";\n this.style.height = `${parentLineHeight}px`;\n }\n closestElement(node, selector) {\n if (!node) return null;\n if (node instanceof ShadowRoot) return this.closestElement(node.host, selector);\n if (node instanceof HTMLElement) {\n if (node.matches(selector)) return node;\n else return this.closestElement(node.parentNode, selector);\n }\n return this.closestElement(node.parentNode, selector);\n }\n};\nDhTableRow.styles = css`\n ${unsafeCSS(style$t)}\n `;\n__decorateClass$t([\n property({ type: Boolean, reflect: true })\n], DhTableRow.prototype, \"isActive\", 2);\n__decorateClass$t([\n property({ type: Boolean, reflect: true })\n], DhTableRow.prototype, \"hasChildren\", 2);\n__decorateClass$t([\n property({ type: Boolean, reflect: true })\n], DhTableRow.prototype, \"isChild\", 2);\nDhTableRow = __decorateClass$t([\n customElement(\"dh-table-row\")\n], DhTableRow);\n\nvar style$s = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n height: auto;\\n width: auto;\\n}\\n\\n:host([ishidden]) {\\n display: none;\\n}\\n\\n#container {\\n display: flex;\\n flex-direction: column;\\n min-width: 200px;\\n max-width: 560px;\\n padding: 16px;\\n border: 1px solid #ccc;\\n border-radius: 8px;\\n background-color: #fafafa;\\n box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n\\n#caption-container {\\n width: 100%;\\n display: flex;\\n justify-content: flex-start;\\n padding: 8px 8px 0;\\n font-size: 1.125rem;\\n font-weight: 500;\\n}\\n\\n::slotted([slot=caption]) {\\n margin: 0;\\n padding: 0;\\n}\\n\\n#content-container {\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n padding: 8px;\\n font-size: 0.875rem;\\n line-height: 1.25rem;\\n}\\n\\n::slotted([slot=content]) {\\n margin: 0;\\n}\\n\\n#button-container {\\n width: 100%;\\n display: flex;\\n justify-content: flex-end;\\n padding: 8px;\\n}\\n\\n::slotted(button) {\\n cursor: pointer !important;\\n}\\n\\n.row {\\n display: flex;\\n flex-direction: row;\\n gap: 8px;\\n justify-content: flex-end;\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nvar __defProp$q = Object.defineProperty;\nvar __getOwnPropDesc$s = Object.getOwnPropertyDescriptor;\nvar __decorateClass$s = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$s(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$q(target, key, result);\n return result;\n};\nlet DhInfobox = class extends LitElement {\n constructor() {\n super(...arguments);\n this.ishidden = false;\n this.infoboxData = { caption: \"\", content: \"\", buttons: [] };\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-infobox\")) {\n this.setAttribute(\"dh-infobox\", \"\");\n }\n }\n render() {\n return html`<div id=\"container\" part=\"root\" class=\"${this.ishidden ? \"hidden\" : \"\"}\">\n <div id=\"caption-container\" part=\"header\" class=\"margin\">\n <slot name=\"caption\">\n <div part=\"label\">${this.infoboxData.caption}</div>\n </slot>\n </div>\n <div id=\"content-container\" class=\"margin\" part=\"content\">\n <slot name=\"content\">\n <div>${this.infoboxData.content}</div>\n </slot>\n </div>\n <div id=\"button-container\" @click=${this.buttonClick} class=\"margin\" part=\"footer\">\n <slot class=\"row\" name=\"button\">\n ${this.infoboxData.buttons?.map((button) => {\n return this.createButton(button);\n })}\n </slot>\n </div>\n </div>`;\n }\n showInfobox() {\n this.ishidden = false;\n }\n hideInfobox() {\n this.ishidden = true;\n }\n createButton(button) {\n return html`<dh-button\n slot=\"button\"\n .buttonText=\"${button.content}\"\n ?disabled=\"${button.disabled}\"\n button-type=\"${button.type}\"\n .img=\"${button.img || \"\"}\"\n exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n ></dh-button>`;\n }\n clickOk() {\n this.hideInfobox();\n this.ok.dispatch();\n }\n clickCancel() {\n this.hideInfobox();\n this.cancel.dispatch();\n }\n clickDelete() {\n this.hideInfobox();\n this.delete.dispatch();\n }\n clickSave() {\n this.hideInfobox();\n this.save.dispatch();\n }\n clickDiscard() {\n this.hideInfobox();\n this.discard.dispatch();\n }\n clickYes() {\n this.hideInfobox();\n this.yes.dispatch();\n }\n clickNo() {\n this.hideInfobox();\n this.no.dispatch();\n }\n clickReset() {\n this.hideInfobox();\n this.reset.dispatch();\n }\n clickOverwrite() {\n this.hideInfobox();\n this.overwrite.dispatch();\n }\n buttonClick(event2) {\n const button = event2.target;\n let type = button.getAttribute(\"button-type\");\n if (!type) {\n type = \"ok\";\n }\n if (type.toLowerCase() == \"ok\") {\n this.clickOk();\n } else if (type.toLowerCase() == \"cancel\") {\n this.clickCancel();\n } else if (type.toLowerCase() == \"delete\") {\n this.clickDelete();\n } else if (type.toLowerCase() == \"save\") {\n this.clickSave();\n } else if (type.toLowerCase() == \"discard\") {\n this.clickDiscard();\n } else if (type.toLowerCase() == \"yes\") {\n this.clickYes();\n } else if (type.toLowerCase() == \"no\") {\n this.clickNo();\n } else if (type.toLowerCase() == \"reset\") {\n this.clickReset();\n } else if (type.toLowerCase() == \"overwrite\") {\n this.clickOverwrite();\n }\n }\n getAllButtons() {\n const allElements = Array.from(this.children);\n return allElements.filter((element) => element.getAttribute(\"slot\") == \"button\");\n }\n};\nDhInfobox.styles = css`\n ${unsafeCSS(style$s)}\n `;\n__decorateClass$s([\n property({ type: Boolean, reflect: true })\n], DhInfobox.prototype, \"ishidden\", 2);\n__decorateClass$s([\n state()\n], DhInfobox.prototype, \"infoboxData\", 2);\n__decorateClass$s([\n event({ bubbles: true, cancelable: true, composed: true }, \"ok\")\n], DhInfobox.prototype, \"ok\", 2);\n__decorateClass$s([\n event({ bubbles: true, cancelable: true, composed: true }, \"cancel\")\n], DhInfobox.prototype, \"cancel\", 2);\n__decorateClass$s([\n event({ bubbles: true, cancelable: true, composed: true }, \"delete\")\n], DhInfobox.prototype, \"delete\", 2);\n__decorateClass$s([\n event({ bubbles: true, cancelable: true, composed: true }, \"save\")\n], DhInfobox.prototype, \"save\", 2);\n__decorateClass$s([\n event({ bubbles: true, cancelable: true, composed: true }, \"discard\")\n], DhInfobox.prototype, \"discard\", 2);\n__decorateClass$s([\n event({ bubbles: true, cancelable: true, composed: true }, \"yes\")\n], DhInfobox.prototype, \"yes\", 2);\n__decorateClass$s([\n event({ bubbles: true, cancelable: true, composed: true }, \"no\")\n], DhInfobox.prototype, \"no\", 2);\n__decorateClass$s([\n event({ bubbles: true, cancelable: true, composed: true }, \"reset\")\n], DhInfobox.prototype, \"reset\", 2);\n__decorateClass$s([\n event({ bubbles: true, cancelable: true, composed: true }, \"overwrite\")\n], DhInfobox.prototype, \"overwrite\", 2);\nDhInfobox = __decorateClass$s([\n customElement(\"dh-infobox\")\n], DhInfobox);\n\nvar style$r = \":host {\\n position: absolute;\\n z-index: 999;\\n width: 100%;\\n height: 100%;\\n}\\n\\n#dimmer {\\n width: 100%;\\n height: 100%;\\n background: var(--dh-dimmer-background, rgba(0, 0, 0, 0.32));\\n}\";\n\nvar __getOwnPropDesc$r = Object.getOwnPropertyDescriptor;\nvar __decorateClass$r = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$r(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (decorator(result)) || result;\n return result;\n};\nlet DhDimmer = class extends LitElement {\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-dimmer\")) {\n this.setAttribute(\"dh-dimmer\", \"\");\n }\n }\n render() {\n return html` <div id=\"dimmer\" part=\"overlay\"></div>`;\n }\n};\nDhDimmer.styles = css`\n ${unsafeCSS(style$r)}\n `;\nDhDimmer = __decorateClass$r([\n customElement(\"dh-dimmer\")\n], DhDimmer);\n\nvar style$q = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n /* Modern: full width by default — Tab-Content soll Container-Breite nutzen.\\n * fit-content hatte Tab nur so breit wie Tab-Heads gemacht und Slot-Content limitiert. */\\n width: 100%;\\n min-width: 0;\\n height: 100%;\\n overflow: hidden;\\n}\\n\\n#tab-container {\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n}\\n\\n#head-container {\\n width: 100%;\\n display: flex;\\n}\\n\\n#content-container {\\n flex: 1;\\n width: 100%;\\n overflow: auto;\\n min-height: 0;\\n}\\n\\n::slotted([slot=tab-content].hidden) {\\n display: none;\\n}\\n\\n::slotted([slot=tab-head]) {\\n cursor: pointer;\\n}\\n\\n/* stretch-Variante: dh-tab fuellt den verfuegbaren Platz, eigenes Scrollen ist aus.\\n * Slotted Tab-Content erhaelt volle Hoehe und scrollt selbst (z.B. eingebettete dh-table). */\\n:host([stretch]) {\\n width: 100%;\\n height: 100%;\\n flex: 1;\\n}\\n\\n:host([stretch]) #content-container {\\n overflow: visible;\\n display: flex;\\n flex-direction: column;\\n}\\n\\n:host([stretch]) ::slotted([slot=tab-content]) {\\n flex: 1;\\n height: auto;\\n max-height: none;\\n min-height: 0;\\n}\";\n\nvar __defProp$p = Object.defineProperty;\nvar __getOwnPropDesc$q = Object.getOwnPropertyDescriptor;\nvar __decorateClass$q = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$q(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$p(target, key, result);\n return result;\n};\nlet DhTab = class extends LitElement {\n constructor() {\n super(...arguments);\n this.stretch = false;\n this.content = \"\";\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-tab\")) {\n this.setAttribute(\"dh-tab\", \"\");\n }\n }\n set currentContent(content) {\n this.content = content;\n this.changeContent(content);\n }\n render() {\n return html` <div id=\"tab-container\" part=\"root\">\n <div id=\"head-container\" part=\"header\">\n <slot name=\"tab-head\" @mousedown=${this.clickTabHead}></slot>\n </div>\n <div id=\"content-container\" part=\"content\">\n <slot name=\"tab-content\"></slot>\n </div>\n </div>`;\n }\n showContent(content) {\n this.content = content;\n const allTabs = this.allTabHeader();\n allTabs.forEach((tab) => tab.classList.remove(\"selected\"));\n const currentHead = allTabs.find((head) => head.getAttribute(\"content\") == content);\n if (currentHead) {\n currentHead.classList.add(\"selected\");\n }\n this.clickTab.dispatch(content);\n const allContents = this.allTabContents();\n allContents.forEach((content2) => content2.classList.add(\"hidden\"));\n const targetContent = this.allTabContents().filter((tab) => tab.getAttribute(\"tab\") == content)[0];\n if (targetContent) {\n targetContent.classList.remove(\"hidden\");\n }\n const contentContainer = this.renderRoot.querySelector(\"#content-container\");\n if (contentContainer) {\n contentContainer.scrollTop = 0;\n }\n }\n clickTabHead(event2) {\n let target = event2.target;\n if (!target.hasAttribute(\"content\")) {\n const head = target.closest('[slot=\"tab-head\"]');\n if (head) {\n target = head;\n }\n }\n const content = target.getAttribute(\"content\");\n if (content) {\n this.showContent(content);\n this.clickTab.dispatch(content);\n }\n }\n changeContent(content) {\n this.clickTab.dispatch(content);\n this.showContent(this.content);\n }\n allTabContents() {\n return Array.from(this.querySelectorAll(\"[slot=tab-content]\"));\n }\n allTabHeader() {\n return Array.from(this.querySelectorAll(\"[slot=tab-head]\"));\n }\n};\nDhTab.styles = css`\n ${unsafeCSS(style$q)}\n `;\n__decorateClass$q([\n property({ type: Boolean, reflect: true })\n], DhTab.prototype, \"stretch\", 2);\n__decorateClass$q([\n event({ bubbles: true, cancelable: true, composed: true }, \"clickTab\")\n], DhTab.prototype, \"clickTab\", 2);\nDhTab = __decorateClass$q([\n customElement(\"dh-tab\")\n], DhTab);\n\nvar style$p = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n}\\n\\ninput {\\n width: 100%;\\n height: 100%;\\n margin: 0;\\n padding: 0;\\n border: none;\\n background: none;\\n outline: none;\\n font: inherit;\\n color: inherit;\\n flex-basis: 100%;\\n}\\n\\n@keyframes dh-input-autofill-start {\\n from {\\n opacity: 1;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\ninput:-webkit-autofill,\\ninput:-webkit-autofill:hover,\\ninput:-webkit-autofill:focus,\\ninput:-webkit-autofill:active,\\ninput:autofill,\\ninput:autofill:hover,\\ninput:autofill:focus,\\ninput:autofill:active {\\n -webkit-box-shadow: 0 0 0 1000px #FFFFFF inset !important;\\n box-shadow: 0 0 0 1000px #FFFFFF inset !important;\\n -webkit-text-fill-color: var(--md-sys-color-on-surface, #1A1A1A) !important;\\n background-color: #FFFFFF !important;\\n background-image: none !important;\\n caret-color: var(--md-sys-color-primary);\\n transition: background-color 99999s ease-in-out 0s !important;\\n animation-name: dh-input-autofill-start;\\n animation-duration: 1ms;\\n}\\n\\ninput[type=checkbox] {\\n width: 13px;\\n height: 13px;\\n}\\n\\ninput[type=range] {\\n -webkit-appearance: none;\\n appearance: none;\\n width: 100%;\\n height: 20px;\\n padding: 0;\\n background: transparent;\\n cursor: pointer;\\n}\\n\\ninput[type=range]::-webkit-slider-runnable-track {\\n height: 4px;\\n border-radius: 2px;\\n background: var(--dh-input-range-track-color, #CCCCCC);\\n}\\n\\n:host([track-fill]) input[type=range]::-webkit-slider-runnable-track {\\n background: linear-gradient(to right, var(--dh-input-range-track-fill-color, currentColor) 0 var(--dh-input-range-fill-progress, 50%), var(--dh-input-range-track-color) var(--dh-input-range-fill-progress, 50%) 100%);\\n}\\n\\ninput[type=range]::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n appearance: none;\\n margin-top: -8px;\\n width: 20px;\\n height: 20px;\\n border: none;\\n border-radius: 50%;\\n background: var(--dh-input-range-thumb-color, currentColor);\\n cursor: grab;\\n box-shadow: 0 0 0 0 transparent;\\n transition: box-shadow 150ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\ninput[type=range]:hover:not(:disabled)::-webkit-slider-thumb {\\n box-shadow: var(--dh-input-range-thumb-hover-box-shadow);\\n}\\n\\ninput[type=range]:focus-visible::-webkit-slider-thumb {\\n box-shadow: var(--dh-input-range-thumb-focus-box-shadow);\\n}\\n\\ninput[type=range]:active:not(:disabled)::-webkit-slider-thumb {\\n cursor: grabbing;\\n box-shadow: var(--dh-input-range-thumb-active-box-shadow);\\n}\\n\\ninput[type=range]::-moz-range-track {\\n height: 4px;\\n border-radius: 2px;\\n background: var(--dh-input-range-track-color, #CCCCCC);\\n}\\n\\ninput[type=range]::-moz-range-progress {\\n height: 4px;\\n border-radius: 2px;\\n background: transparent;\\n}\\n\\n:host([track-fill]) input[type=range]::-moz-range-progress {\\n background: var(--dh-input-range-track-fill-color, currentColor);\\n}\\n\\ninput[type=range]::-moz-range-thumb {\\n width: 20px;\\n height: 20px;\\n border: none;\\n border-radius: 50%;\\n background: var(--dh-input-range-thumb-color, currentColor);\\n cursor: grab;\\n box-shadow: 0 0 0 0 transparent;\\n transition: box-shadow 150ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\ninput[type=range]:hover:not(:disabled)::-moz-range-thumb {\\n box-shadow: var(--dh-input-range-thumb-hover-box-shadow);\\n}\\n\\ninput[type=range]:focus-visible::-moz-range-thumb {\\n box-shadow: var(--dh-input-range-thumb-focus-box-shadow);\\n}\\n\\ninput[type=range]:active:not(:disabled)::-moz-range-thumb {\\n cursor: grabbing;\\n box-shadow: var(--dh-input-range-thumb-active-box-shadow);\\n}\\n\\ninput[type=range]:disabled {\\n cursor: not-allowed;\\n}\\n\\ninput[type=range]:disabled::-webkit-slider-thumb {\\n cursor: not-allowed;\\n box-shadow: none;\\n background: var(--dh-input-range-thumb-disabled-background);\\n}\\n\\ninput[type=range]:disabled::-moz-range-thumb {\\n cursor: not-allowed;\\n box-shadow: none;\\n background: var(--dh-input-range-thumb-disabled-background);\\n}\\n\\n:host([track-fill]) input[type=range]:disabled::-webkit-slider-runnable-track {\\n background: linear-gradient(to right, var(--dh-input-range-disabled-color) 0 var(--dh-input-range-fill-progress, 50%), var(--dh-input-range-track-color) var(--dh-input-range-fill-progress, 50%) 100%);\\n}\\n\\n:host([track-fill]) input[type=range]:disabled::-moz-range-progress {\\n background: var(--dh-input-range-disabled-color);\\n}\\n\\n#input-container {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n}\\n\\n#label {\\n position: absolute;\\n pointer-events: none;\\n top: var(--dh-input-label-top, 50%);\\n transform: var(--dh-input-label-transform, translateY(-50%));\\n font-size: var(--dh-input-label-font-size, 1rem);\\n line-height: var(--dh-input-label-line-height, normal);\\n background-color: var(--dh-input-label-bg, transparent);\\n}\\n\\ninput:not(:placeholder-shown) ~ #label {\\n top: var(--dh-input-label-floating-top, 0);\\n transform: var(--dh-input-label-floating-transform, translateY(-50%));\\n font-size: var(--dh-input-label-floating-font-size, 0.75rem);\\n line-height: var(--dh-input-label-floating-line-height, 1rem);\\n background-color: var(--dh-input-label-floating-bg, transparent);\\n}\\n\\n:host(:focus-within) #label {\\n top: var(--dh-input-label-floating-top, 0);\\n transform: var(--dh-input-label-floating-transform, translateY(-50%));\\n font-size: var(--dh-input-label-floating-font-size, 0.75rem);\\n line-height: var(--dh-input-label-floating-line-height, 1rem);\\n background-color: var(--dh-input-label-floating-bg, transparent);\\n}\\n\\n#supporting-text {\\n display: block;\\n}\\n\\n.invalid {\\n border-color: var(--dh-error-color, inherit);\\n}\\n\\n:host([invalid]) #input {\\n border-color: var(--dh-error-color, inherit);\\n}\\n\\n.disabled {\\n cursor: not-allowed;\\n}\\n\\n:host([variant=classic]) input::placeholder {\\n color: var(--dh-input-placeholder-color, currentColor);\\n opacity: var(--dh-input-placeholder-opacity, 0.6);\\n transition: opacity 200ms ease;\\n}\\n\\n:host([type=file]) #input {\\n display: none;\\n}\\n\\n:host([type=file]) #input-container {\\n gap: 8px;\\n justify-content: flex-start;\\n}\\n\\n#file-button {\\n cursor: pointer;\\n border: none;\\n background: none;\\n font: inherit;\\n flex-shrink: 0;\\n}\\n\\n#file-button:disabled {\\n cursor: not-allowed;\\n}\\n\\n#file-name {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n min-width: 0;\\n}\\n\\n#password-toggle {\\n appearance: none;\\n border: none;\\n background: none;\\n cursor: pointer;\\n padding: 0;\\n font: inherit;\\n color: inherit;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n}\\n\\n#password-toggle:disabled {\\n cursor: not-allowed;\\n}\";\n\nvar __defProp$o = Object.defineProperty;\nvar __getOwnPropDesc$p = Object.getOwnPropertyDescriptor;\nvar __decorateClass$p = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$p(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$o(target, key, result);\n return result;\n};\nlet DhInput = class extends LitElement {\n constructor() {\n super();\n this.variant = \"outlined\";\n this.type = \"\";\n this.disabled = false;\n this.accept = \"\";\n this.value = \"\";\n this.min = void 0;\n this.max = void 0;\n this.step = 1;\n this.blub = void 0;\n this.size = \"20\";\n this.readOnly = false;\n this.placeholder = \"\";\n this.supportingText = \"\";\n this.checked = false;\n this.name = \"\";\n this.autocomplete = \"new-password\";\n this.mandatory = false;\n this.trackFill = false;\n this.togglePassword = false;\n this.passwordVisible = false;\n this.fileName = \"\";\n this.onAutofillAnimation = (animationEvent) => {\n if (animationEvent.animationName === \"dh-input-autofill-start\") {\n if (this.inputElement.value !== this.value) {\n this.value = this.inputElement.value;\n }\n const label = this.shadowRoot?.getElementById(\"label\");\n if (label) {\n label.style.display = \"none\";\n void label.offsetHeight;\n label.style.display = \"\";\n }\n }\n };\n this.elementInternals = this.attachInternals();\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-input\")) {\n this.setAttribute(\"dh-input\", \"\");\n }\n }\n set valueAsDate(value) {\n (async () => {\n if (value) {\n const newDate = new Date(value);\n let dateString = \"\";\n if (this.inputElement) {\n this.inputElement.valueAsDate = new Date(+newDate - newDate?.getTimezoneOffset() * 6e4);\n dateString = this.inputElement.valueAsDate?.toDateString();\n }\n if (dateString && dateString != \"Invalid Date\") {\n this.value = dateString;\n } else {\n this.value = \"\";\n }\n } else {\n this.value = \"\";\n }\n })();\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n this.inputElement.value = this.getAttribute(\"value\") || \"\";\n this.updateInvalidAttribute();\n this.inputElement.addEventListener(\"animationstart\", this.onAutofillAnimation);\n }\n updated(_changedProperties) {\n super.updated(_changedProperties);\n this.updateInvalidAttribute();\n }\n updateInvalidAttribute() {\n const isInvalid = !this.disabled && this.mandatory && !this.readOnly && !this.value;\n if (isInvalid) {\n this.setAttribute(\"invalid\", \"\");\n } else {\n this.removeAttribute(\"invalid\");\n this.elementInternals.setFormValue(this.value);\n }\n }\n //Das Property \"blub\" gibt es nur, da es bei Lit ein Problem gibt, dass teilweise das letzte Property nicht funktioniert (nicht darauf reagiert wird).\n //Das Property \"blub\" funktioniert also nicht, sorgt aber dafür, dass alle die davor stehen funktionieren.\n render() {\n if (this.type === \"file\") {\n return this.renderFileInput();\n }\n return html`<div id=\"input-container\" part=\"root\" @change=\"${this.validateInput}\" @input=\"${this.validateInput}\" @focusout=\"${this.focusout}\">\n <input\n id=\"input\"\n type=\"${this.getEffectiveType()}\"\n .value=\"${this.type != \"date\" ? this.value : void 0}\"\n .disabled=\"${this.disabled}\"\n value=\"${this.type != \"date\" ? this.value : void 0}\"\n accept=\"${this.accept}\"\n class=\"${classMap({\n disabled: this.disabled,\n invalid: this.mandatory && !this.readOnly && !this.value\n })}\"\n min=\"${this.min !== void 0 ? this.min : void 0}\"\n max=\"${this.max !== void 0 ? this.max : void 0}\"\n step=\"${this.step ? this.step : void 0}\"\n .readOnly=\"${this.readOnly}\"\n part=\"input\"\n size=\"${this.size}\"\n .checked=\"${this.checked}\"\n @paste=\"${this.pasteEvent}\"\n name=\"${this.name}\"\n placeholder=\"${this.variant === \"classic\" ? this.placeholder : \" \"}\"\n autocomplete=\"${this.autocomplete}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n blub=\"${this.blub}\"\n style=\"${this.getRangeStyle()}\"\n />\n ${this.renderLabel()} ${this.renderPasswordToggle()}\n </div>\n ${this.renderSupportingText()}`;\n }\n getEffectiveType() {\n if (this.togglePassword && this.type === \"password\" && this.passwordVisible) {\n return \"text\";\n }\n return this.type;\n }\n getRangeStyle() {\n if (this.type !== \"range\" || !this.trackFill) {\n return \"\";\n }\n const min = Number(this.min ?? 0);\n const max = Number(this.max ?? 100);\n const value = this.value === \"\" ? (min + max) / 2 : Number(this.value);\n const percent = max === min ? 0 : (value - min) / (max - min) * 100;\n return `--dh-input-range-fill-progress: ${percent}%`;\n }\n renderPasswordToggle() {\n if (!this.togglePassword || this.type !== \"password\") {\n return null;\n }\n const iconClass = this.passwordVisible ? \"fv-icon-eye-closed\" : \"fv-icon-eye-2\";\n const ariaLabel = this.passwordVisible ? \"Passwort verbergen\" : \"Passwort anzeigen\";\n return html`<button\n id=\"password-toggle\"\n part=\"trailing-icon\"\n type=\"button\"\n class=\"${iconClass}\"\n aria-label=\"${ariaLabel}\"\n aria-pressed=\"${this.passwordVisible}\"\n ?disabled=\"${this.disabled}\"\n @click=\"${this.onTogglePasswordVisibility}\"\n ></button>`;\n }\n onTogglePasswordVisibility(event2) {\n event2.preventDefault();\n event2.stopPropagation();\n this.passwordVisible = !this.passwordVisible;\n }\n renderFileInput() {\n return html` <div id=\"input-container\" part=\"root\">\n <input id=\"input\" type=\"file\" accept=\"${this.accept}\" .disabled=\"${this.disabled}\" part=\"input\" @change=\"${this.onFileChange}\" />\n <button type=\"button\" id=\"file-button\" part=\"file-button\" @click=\"${() => this.inputElement.click()}\" ?disabled=\"${this.disabled}\">\n ${this.placeholder || \"Datei ausw\\xE4hlen\"}\n </button>\n <span id=\"file-name\" part=\"file-name\">${this.fileName}</span>\n </div>\n ${this.renderSupportingText()}`;\n }\n onFileChange() {\n this.fileName = this.inputElement.files?.[0]?.name ?? \"\";\n }\n renderLabel() {\n if (!this.placeholder || this.type === \"checkbox\" || this.variant === \"classic\") {\n return null;\n }\n return html`<label id=\"label\" part=\"label\" for=\"input\">${this.placeholder}</label>`;\n }\n renderSupportingText() {\n if (!this.supportingText) {\n return null;\n }\n return html`<div id=\"supporting-text\" part=\"supporting-text\">${this.supportingText}</div>`;\n }\n pasteEvent(event2) {\n const data = event2?.clipboardData?.getData(\"text\").trimEnd();\n const inputRowArray = data?.split(/\\r\\n|\\r|\\n/);\n this.pasteInputValue.dispatch({ data: inputRowArray, input: this });\n }\n getInputValue() {\n return this.inputElement.value;\n }\n getInputValueAsDate() {\n const date = this.inputElement.valueAsDate;\n if (date) {\n return new Date(+date + date.getTimezoneOffset() * 6e4);\n }\n return null;\n }\n setInputValue(inputValue) {\n this.value = inputValue;\n if (this.type === \"file\" && !inputValue) {\n this.fileName = \"\";\n }\n }\n focus(options) {\n this.inputElement.focus(options);\n }\n getCheckboxIsChecked() {\n return this.inputElement.checked;\n }\n getFileInputName() {\n return this.inputElement.files?.item(0)?.name;\n }\n getFile() {\n return this.inputElement.files?.item(0);\n }\n focusout() {\n this.dispatchEvent(new CustomEvent(\"inputfocusout\", { bubbles: true, cancelable: true, composed: true }));\n }\n async validateInput(event2) {\n if (this.type != \"checkbox\") {\n const value = this.getInputValue();\n const input = this.inputElement;\n if (this.type == \"email\") {\n const regex = /\\S+@\\S+\\.\\S+/;\n const isValid = regex.test(value);\n if (isValid) {\n input.classList.remove(\"invalid\");\n this.removeAttribute(\"invalid\");\n } else {\n input.classList.add(\"invalid\");\n this.setAttribute(\"invalid\", \"\");\n }\n this.inputValidate.dispatch({ isValid });\n } else if (this.type == \"number\") {\n let isValid = input.validity.valid;\n if (this.min !== void 0) {\n if (+value < this.min) {\n isValid = false;\n }\n }\n if (this.max !== void 0) {\n if (+value > this.max) {\n isValid = false;\n }\n }\n if (isValid) {\n input.classList.remove(\"invalid\");\n this.removeAttribute(\"invalid\");\n } else {\n input.classList.add(\"invalid\");\n this.setAttribute(\"invalid\", \"\");\n }\n this.inputValidate.dispatch({ isValid });\n }\n this.value = value;\n } else {\n if (event2.type == \"change\") {\n this.checkboxChange.dispatch({ checked: this.checked });\n }\n }\n if (event2.type === \"input\") {\n this.dispatchEvent(new Event(\"input\", { bubbles: true, cancelable: true, composed: true }));\n }\n this.dispatchEvent(new Event(\"change\", { bubbles: true, cancelable: true, composed: true }));\n }\n};\nDhInput.formAssociated = true;\nDhInput.styles = css`\n ${unsafeCSS(style$p)}\n `;\n__decorateClass$p([\n query(\"input\")\n], DhInput.prototype, \"inputElement\", 2);\n__decorateClass$p([\n property({ type: String, reflect: true })\n], DhInput.prototype, \"variant\", 2);\n__decorateClass$p([\n property({ type: String, reflect: true })\n], DhInput.prototype, \"type\", 2);\n__decorateClass$p([\n property({ type: Boolean, reflect: true })\n], DhInput.prototype, \"disabled\", 2);\n__decorateClass$p([\n property({ type: String, reflect: true })\n], DhInput.prototype, \"accept\", 2);\n__decorateClass$p([\n property({ type: String, reflect: true })\n], DhInput.prototype, \"value\", 2);\n__decorateClass$p([\n property({ type: Number, reflect: true })\n], DhInput.prototype, \"min\", 2);\n__decorateClass$p([\n property({ type: Number, reflect: true })\n], DhInput.prototype, \"max\", 2);\n__decorateClass$p([\n property({ type: Number, reflect: true })\n], DhInput.prototype, \"step\", 2);\n__decorateClass$p([\n property({ type: Number, reflect: true })\n], DhInput.prototype, \"blub\", 2);\n__decorateClass$p([\n property({ type: String, reflect: true })\n], DhInput.prototype, \"size\", 2);\n__decorateClass$p([\n property({ type: Boolean, reflect: true })\n], DhInput.prototype, \"readOnly\", 2);\n__decorateClass$p([\n property({ type: String })\n], DhInput.prototype, \"placeholder\", 2);\n__decorateClass$p([\n property({ type: String })\n], DhInput.prototype, \"supportingText\", 2);\n__decorateClass$p([\n property({ type: Boolean, reflect: true })\n], DhInput.prototype, \"checked\", 2);\n__decorateClass$p([\n property({ type: String, reflect: true })\n], DhInput.prototype, \"name\", 2);\n__decorateClass$p([\n property({ type: String, reflect: true })\n], DhInput.prototype, \"autocomplete\", 2);\n__decorateClass$p([\n property({ type: Boolean })\n], DhInput.prototype, \"mandatory\", 2);\n__decorateClass$p([\n property({ type: Boolean, reflect: true, attribute: \"track-fill\" })\n], DhInput.prototype, \"trackFill\", 2);\n__decorateClass$p([\n property({ type: Boolean, reflect: true, attribute: \"toggle-password\" })\n], DhInput.prototype, \"togglePassword\", 2);\n__decorateClass$p([\n state()\n], DhInput.prototype, \"passwordVisible\", 2);\n__decorateClass$p([\n property({ type: String })\n], DhInput.prototype, \"fileName\", 2);\n__decorateClass$p([\n event({ bubbles: true, cancelable: true, composed: true }, \"pasteInputValue\")\n], DhInput.prototype, \"pasteInputValue\", 2);\n__decorateClass$p([\n event({ bubbles: true, cancelable: true, composed: true }, \"inputValidate\")\n], DhInput.prototype, \"inputValidate\", 2);\n__decorateClass$p([\n event({ bubbles: true, cancelable: true, composed: true }, \"checkboxChange\")\n], DhInput.prototype, \"checkboxChange\", 2);\nDhInput = __decorateClass$p([\n customElement(\"dh-input\")\n], DhInput);\n\nvar style$o = \"#checkbox-container {\\n display: flex;\\n justify-content: center;\\n}\\n\\n#checkbox {\\n accent-color: var(--dh-checkbox-color, inherit);\\n}\\n\\n@keyframes dh-checkbox-pop {\\n 0% {\\n transform: scale(0);\\n }\\n 60% {\\n transform: scale(1.3);\\n }\\n 100% {\\n transform: scale(1);\\n }\\n}\\n:host([animated]) #checkbox:checked {\\n transform-origin: center center;\\n animation: dh-checkbox-pop 300ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([variant=switch]) #checkbox-container {\\n position: relative !important;\\n display: inline-flex !important;\\n align-items: center !important;\\n width: 48px !important;\\n height: 28px !important;\\n}\\n\\n:host([variant=switch]) #checkbox {\\n appearance: none !important;\\n -webkit-appearance: none !important;\\n width: 48px !important;\\n height: 28px !important;\\n border: 2px solid var(--md-sys-color-outline, #79747e) !important;\\n border-radius: 14px !important;\\n background-color: var(--md-sys-color-surface-container-highest, #e6e0e9) !important;\\n background-image: none !important;\\n cursor: pointer;\\n margin: 0 !important;\\n padding: 0 !important;\\n outline: none;\\n box-sizing: border-box !important;\\n transition: background-color 200ms cubic-bezier(0.2, 0, 0, 1), border-color 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([variant=switch]) #handle {\\n position: absolute !important;\\n top: 50% !important;\\n left: 5px !important;\\n width: 14px !important;\\n height: 14px !important;\\n border-radius: 50% !important;\\n background-color: var(--md-sys-color-outline, #79747e) !important;\\n transform: translate(0, -50%) !important;\\n pointer-events: none;\\n transition: left 200ms cubic-bezier(0.2, 0, 0, 1), width 200ms cubic-bezier(0.2, 0, 0, 1), height 200ms cubic-bezier(0.2, 0, 0, 1), background-color 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([variant=switch][checked]) #checkbox {\\n background-color: var(--md-sys-color-primary, #6750a4) !important;\\n border-color: var(--md-sys-color-primary, #6750a4) !important;\\n}\\n\\n:host([variant=switch]) #checkbox:checked ~ #handle {\\n left: 22px !important;\\n width: 20px !important;\\n height: 20px !important;\\n background-color: var(--md-sys-color-on-primary, #ffffff) !important;\\n}\\n\\n:host([variant=switch][disabled]) #checkbox:checked ~ #handle {\\n background-color: var(--md-sys-color-surface, #ffffff) !important;\\n}\\n\\n:host([disabled]) {\\n opacity: var(--dh-disabled-opacity, 0.38);\\n}\\n\\n:host([disabled]) #checkbox {\\n cursor: not-allowed !important;\\n}\";\n\nvar __defProp$n = Object.defineProperty;\nvar __getOwnPropDesc$o = Object.getOwnPropertyDescriptor;\nvar __decorateClass$o = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$o(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$n(target, key, result);\n return result;\n};\nlet DhCheckbox = class extends LitElement {\n constructor() {\n super();\n this.checked = false;\n this.disabled = false;\n this.animated = false;\n this.indeterminate = false;\n this.variant = \"checkbox\";\n this.addEventListener(\"input\", (event2) => event2.stopPropagation());\n }\n render() {\n if (this.variant === \"switch\") {\n return html` <div id=\"checkbox-container\" part=\"root\">\n <input\n id=\"checkbox\"\n type=\"checkbox\"\n role=\"switch\"\n .checked=\"${this.checked}\"\n .disabled=\"${this.disabled}\"\n @change=\"${this.change}\"\n part=\"input\"\n />\n <span id=\"handle\" part=\"handle\"></span>\n </div>`;\n }\n return html` <div id=\"checkbox-container\" part=\"root\">\n <input\n id=\"checkbox\"\n type=\"checkbox\"\n .checked=\"${this.checked}\"\n .indeterminate=\"${this.indeterminate}\"\n .disabled=\"${this.disabled}\"\n @change=\"${this.change}\"\n part=\"input\"\n />\n </div>`;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-checkbox\")) {\n this.setAttribute(\"dh-checkbox\", \"\");\n }\n }\n changeChecked(isChecked) {\n this.checked = isChecked;\n this.changeEvent.dispatch(this.checked);\n }\n getCheckboxIsChecked() {\n return this.checked;\n }\n getCheckboxIsDisabled() {\n return this.disabled;\n }\n change(event2) {\n event2.stopPropagation();\n const input = event2.target;\n this.checked = input.checked;\n this.indeterminate = false;\n this.changeEvent.dispatch(this.checked);\n }\n cancel(event2) {\n event2.stopPropagation();\n }\n};\nDhCheckbox.styles = css`\n ${unsafeCSS(style$o)}\n `;\n__decorateClass$o([\n property({ type: Boolean, reflect: true })\n], DhCheckbox.prototype, \"checked\", 2);\n__decorateClass$o([\n property({ type: Boolean, reflect: true })\n], DhCheckbox.prototype, \"disabled\", 2);\n__decorateClass$o([\n property({ type: Boolean, reflect: true })\n], DhCheckbox.prototype, \"animated\", 2);\n__decorateClass$o([\n property({ type: Boolean, reflect: true })\n], DhCheckbox.prototype, \"indeterminate\", 2);\n__decorateClass$o([\n property({ type: String, reflect: true })\n], DhCheckbox.prototype, \"variant\", 2);\n__decorateClass$o([\n event({ bubbles: true, cancelable: true, composed: true }, \"isChange\")\n], DhCheckbox.prototype, \"changeEvent\", 2);\nDhCheckbox = __decorateClass$o([\n customElement(\"dh-checkbox\")\n], DhCheckbox);\n\nvar style$n = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n /* Block-level flex damit jedes Radio per Default in einer eigenen Zeile\\n * steht (Radio-Listen sind meist vertikal). Fuer horizontale Anordnung\\n * legt der Konsument die Radios in einen flex-row-Container. */\\n display: flex;\\n align-items: center;\\n width: fit-content;\\n}\\n\\n#root {\\n display: inline-flex;\\n align-items: center;\\n gap: 8px;\\n cursor: pointer;\\n user-select: none;\\n}\\n\\n:host([disabled]) #root {\\n cursor: not-allowed;\\n}\\n\\n#radio-container {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n position: relative;\\n flex-shrink: 0;\\n}\\n\\n#radio {\\n /* Reset native appearance — theme paints the ring + dot via CSS */\\n appearance: none;\\n -webkit-appearance: none;\\n margin: 0;\\n padding: 0;\\n cursor: inherit;\\n font: inherit;\\n color: inherit;\\n}\\n\\n#label {\\n font: inherit;\\n color: inherit;\\n}\";\n\nvar __defProp$m = Object.defineProperty;\nvar __getOwnPropDesc$n = Object.getOwnPropertyDescriptor;\nvar __decorateClass$n = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$n(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$m(target, key, result);\n return result;\n};\nlet DhRadio = class extends LitElement {\n constructor() {\n super(...arguments);\n this.name = \"\";\n this.value = \"\";\n this.checked = false;\n this.disabled = false;\n }\n render() {\n return html`<div id=\"root\" part=\"root\" @click=\"${this.onHostClick}\">\n <div id=\"radio-container\" part=\"control\">\n <input\n id=\"radio\"\n type=\"radio\"\n name=\"${this.name}\"\n .value=\"${this.value}\"\n .checked=\"${this.checked}\"\n .disabled=\"${this.disabled}\"\n @click=\"${this.onInputClick}\"\n part=\"input\"\n />\n </div>\n <span id=\"label\" part=\"label\"><slot></slot></span>\n </div>`;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-radio\")) {\n this.setAttribute(\"dh-radio\", \"\");\n }\n }\n setChecked(isChecked) {\n if (this.checked === isChecked) {\n return;\n }\n this.checked = isChecked;\n if (isChecked) {\n this.uncheckGroupSiblings();\n this.radioChange.dispatch(this.value);\n }\n }\n getIsChecked() {\n return this.checked;\n }\n getIsDisabled() {\n return this.disabled;\n }\n onHostClick(clickEvent) {\n if (this.disabled) {\n return;\n }\n clickEvent.stopPropagation();\n this.setChecked(true);\n }\n onInputClick(clickEvent) {\n clickEvent.stopPropagation();\n if (this.disabled) {\n clickEvent.preventDefault();\n return;\n }\n this.setChecked(true);\n }\n uncheckGroupSiblings() {\n if (!this.name) {\n return;\n }\n const root = this.getRootNode();\n const siblings = root.querySelectorAll(`dh-radio[name=\"${this.name}\"]`);\n siblings.forEach((sibling) => {\n if (sibling !== this && sibling.checked) {\n sibling.checked = false;\n }\n });\n }\n};\nDhRadio.styles = css`\n ${unsafeCSS(style$n)}\n `;\n__decorateClass$n([\n property({ type: String, reflect: true })\n], DhRadio.prototype, \"name\", 2);\n__decorateClass$n([\n property({ type: String, reflect: true })\n], DhRadio.prototype, \"value\", 2);\n__decorateClass$n([\n property({ type: Boolean, reflect: true })\n], DhRadio.prototype, \"checked\", 2);\n__decorateClass$n([\n property({ type: Boolean, reflect: true })\n], DhRadio.prototype, \"disabled\", 2);\n__decorateClass$n([\n event({ bubbles: true, cancelable: true, composed: true }, \"radioChange\")\n], DhRadio.prototype, \"radioChange\", 2);\nDhRadio = __decorateClass$n([\n customElement(\"dh-radio\")\n], DhRadio);\n\nvar style$m = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: inline-block;\\n height: auto;\\n width: auto;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translateX(-50%) translateY(-50%) scale(1);\\n opacity: 1;\\n /* Open: spring easing fuer leichten Bounce. Close: standard easing fuer ruhiges Schliessen. */\\n transition: opacity var(--md-sys-motion-duration-short4, 200ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), transform var(--md-sys-motion-duration-medium2, 300ms) var(--md-sys-motion-easing-spring, cubic-bezier(0.5, 1.5, 0.4, 1));\\n}\\n\\n:host(.hidden) {\\n opacity: 0;\\n transform: translateX(-50%) translateY(-50%) scale(0.92);\\n pointer-events: none;\\n /* visibility statt display:none — sonst greift kein transition */\\n visibility: hidden;\\n transition: opacity var(--md-sys-motion-duration-short3, 150ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), transform var(--md-sys-motion-duration-short4, 200ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), visibility 0s linear var(--md-sys-motion-duration-short4, 200ms);\\n}\\n\\n.container {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n width: auto;\\n}\\n\\n.caption-container {\\n width: 100%;\\n display: flex;\\n justify-content: space-between;\\n}\\n\\n::slotted([slot=caption]) {\\n margin: 0.5rem;\\n}\\n\\n.content-container {\\n width: 100%;\\n display: flex;\\n justify-content: center;\\n}\\n\\n.hidden {\\n display: none !important;\\n}\";\n\nvar style$l = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: inline-block;\\n height: auto;\\n width: auto;\\n /* max-width 100% prevents buttons with long text from blowing out their\\n * container (e.g. dh-card) — the label is truncated via ellipsis instead. */\\n max-width: 100%;\\n vertical-align: middle;\\n /* In flex containers the button must NOT stretch on the cross axis — its\\n * hit area should be the visible pill, not the full container width. */\\n align-self: flex-start;\\n flex: 0 0 auto;\\n /* Default spacing so buttons in toolbars / vertical lists do not touch\\n * each other. Consumers can still override via margin. */\\n margin: 2px;\\n}\\n\\n#dh-button {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n width: auto;\\n max-width: 100%;\\n text-align: center;\\n cursor: pointer;\\n position: relative;\\n}\\n\\n.disabled {\\n cursor: not-allowed !important;\\n pointer-events: none;\\n opacity: 0.5;\\n}\\n\\n.img {\\n width: 18px;\\n height: 18px;\\n object-fit: contain;\\n flex-shrink: 0;\\n}\\n\\nslot[name=img]::slotted(img),\\nslot[name=img]::slotted(svg) {\\n width: 18px;\\n height: 18px;\\n max-height: 100%;\\n max-width: 100%;\\n object-fit: contain;\\n flex-shrink: 0;\\n}\\n\\n:host([icon-button]) {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: auto;\\n max-width: 100%;\\n min-width: 0;\\n height: 40px;\\n max-height: 100%;\\n min-height: 0;\\n aspect-ratio: 1/1;\\n flex-shrink: 0;\\n box-sizing: border-box;\\n border-radius: 9999px;\\n overflow: hidden;\\n /* ::slotted rules lose in the cascade against rules from the containing\\n * tree (e.g. the global [class*='fv-icon'] rule from furnview-icons.sass).\\n * Set the icon font size as a custom property on the host instead — it\\n * inherits down the flat tree to the slotted div, where the icon CSS\\n * resolves var(--fv-icons-font-size) to the intended size. */\\n --fv-icons-font-size: 20px;\\n --fv-icons-line-height: 20px;\\n}\\n\\n:host([icon-button]) slot[name=img]::slotted(div) {\\n width: 20px;\\n height: 20px;\\n font-size: 20px;\\n line-height: 1;\\n flex-shrink: 0;\\n overflow: hidden;\\n}\";\n\nvar __defProp$l = Object.defineProperty;\nvar __getOwnPropDesc$m = Object.getOwnPropertyDescriptor;\nvar __decorateClass$m = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$m(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$l(target, key, result);\n return result;\n};\nlet DhButton = class extends LitElement {\n constructor() {\n super();\n this.variant = \"tonal\";\n this.buttonText = \"\";\n this.disabled = false;\n this.iconButton = false;\n this.img = \"\";\n this.type = \"\";\n this.name = \"\";\n this.value = \"\";\n this.onFormKeyDown = (event) => {\n const element = event.target;\n const isHTMLInputElement = element instanceof HTMLInputElement || element instanceof DhInput;\n const isTypeAllowed = isHTMLInputElement && ![\"textarea\", \"button\", \"submit\", \"reset\"].includes(element.type);\n const isEnter = event.key === \"Enter\";\n if (isHTMLInputElement && isTypeAllowed && isEnter) {\n this.onKeyDown(event);\n }\n };\n this.addEventListener(\"click\", (event) => {\n this.clickButton(event);\n });\n this.addEventListener(\"keydown\", (event) => this.onKeyDown(event));\n this.elementInternals = this.attachInternals();\n }\n render() {\n return html`<div id=\"dh-button\" part=\"root\" class=\"${this.disabled ? \"dh-md-button disabled\" : \"dh-md-button\"}\">\n ${this.buttonText ? html`<span part=\"label\">${this.buttonText}</span>` : \"\"}\n <slot name=\"img\"> ${this.img ? html`<img class=\"img\" src=\"${this.img}\" part=\"icon\" />` : \"\"} </slot>\n </div>`;\n }\n clickButton(event) {\n if (this.disabled) {\n event.stopImmediatePropagation();\n } else if (this.type === \"submit\") {\n const form = this.elementInternals.form;\n if (!form) return;\n let hidden;\n if (this.name && this.value) {\n hidden = document.createElement(\"input\");\n hidden.type = \"hidden\";\n hidden.name = this.name;\n hidden.value = this.value;\n form.appendChild(hidden);\n }\n const cleanup = () => hidden?.remove();\n form.addEventListener(\"formdata\", cleanup, { once: true });\n try {\n form.requestSubmit();\n } catch (err) {\n cleanup();\n throw err;\n }\n } else if (this.type === \"reset\") {\n this.elementInternals.form?.reset();\n }\n }\n onKeyDown(event) {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n this.clickButton(event);\n }\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-button\")) {\n this.setAttribute(\"dh-button\", \"\");\n }\n this.elementInternals.form?.addEventListener(\"keydown\", this.onFormKeyDown);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.elementInternals.form?.removeEventListener(\"keydown\", this.onFormKeyDown);\n }\n};\nDhButton.styles = [unsafeCSS(style$l)];\nDhButton.formAssociated = true;\n__decorateClass$m([\n property({ type: String, reflect: true })\n], DhButton.prototype, \"variant\", 2);\n__decorateClass$m([\n property({ type: String, reflect: true })\n], DhButton.prototype, \"buttonText\", 2);\n__decorateClass$m([\n property({ type: Boolean, reflect: true })\n], DhButton.prototype, \"disabled\", 2);\n__decorateClass$m([\n property({ type: Boolean, reflect: true, attribute: \"icon-button\" })\n], DhButton.prototype, \"iconButton\", 2);\n__decorateClass$m([\n property({ type: String, reflect: true })\n], DhButton.prototype, \"img\", 2);\n__decorateClass$m([\n property()\n], DhButton.prototype, \"type\", 2);\n__decorateClass$m([\n property({ type: String, reflect: true })\n], DhButton.prototype, \"name\", 2);\n__decorateClass$m([\n property({ type: String, reflect: true })\n], DhButton.prototype, \"value\", 2);\nDhButton = __decorateClass$m([\n customElement(\"dh-button\")\n], DhButton);\n\nvar __defProp$k = Object.defineProperty;\nvar __getOwnPropDesc$l = Object.getOwnPropertyDescriptor;\nvar __decorateClass$l = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$l(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$k(target, key, result);\n return result;\n};\nlet DhWindow = class extends LitElement {\n constructor() {\n super(...arguments);\n this.windowData = { caption: \"\", content: \"\" };\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-window\")) {\n this.setAttribute(\"dh-window\", \"\");\n }\n }\n render() {\n return html` <div id=\"container\" class=\"container\" part=\"root\">\n <div id=\"caption-container\" class=\"caption-container\" part=\"header\">\n <slot name=\"caption\" part=\"label\">${this.windowData.caption}</slot>\n <div @click=${this.closeButtonClick} part=\"trigger\">\n <div class=\"fv-icon-close\" slot=\"img\" part=\"close-icon\"></div>\n </div>\n </div>\n <div id=\"content-container\" class=\"content-container\" part=\"content\">\n <slot name=\"content\">${this.windowData.content}</slot>\n </div>\n </div>`;\n }\n closeButtonClick() {\n this.classList.add(\"hidden\");\n this.closed.dispatch();\n }\n};\nDhWindow.styles = [\n css`\n ${unsafeCSS(style$m)}\n `\n];\n__decorateClass$l([\n state()\n], DhWindow.prototype, \"windowData\", 2);\n__decorateClass$l([\n event({ bubbles: true, cancelable: true, composed: true }, \"closed\")\n], DhWindow.prototype, \"closed\", 2);\nDhWindow = __decorateClass$l([\n customElement(\"dh-window\")\n], DhWindow);\n\nvar style$k = \":host {\\n position: absolute;\\n transform: none;\\n left: 0;\\n top: 0;\\n width: max-content;\\n height: max-content;\\n user-select: none;\\n}\\n\\n#caption-container {\\n user-select: none;\\n}\";\n\nvar __defProp$j = Object.defineProperty;\nvar __getOwnPropDesc$k = Object.getOwnPropertyDescriptor;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __reflectGet = Reflect.get;\nvar __decorateClass$k = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$k(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$j(target, key, result);\n return result;\n};\nvar __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);\nlet DhMovableWindow = class extends DhWindow {\n constructor() {\n super(...arguments);\n this.isDragging = false;\n this.offsetX = 0;\n this.offsetY = 0;\n this.windowData = { caption: \"\", content: \"\" };\n this.onMouseMove = (e) => {\n if (!this.isDragging) return;\n const width = this.offsetWidth;\n const height = this.offsetHeight;\n let newLeft = e.clientX - this.offsetX + window.scrollX;\n let newTop = e.clientY - this.offsetY + window.scrollY;\n const maxLeft = document.documentElement.scrollWidth - width;\n const maxTop = document.documentElement.scrollHeight - height;\n newLeft = Math.max(0, Math.min(newLeft, maxLeft));\n newTop = Math.max(0, Math.min(newTop, maxTop));\n this.style.left = `${newLeft}px`;\n this.style.top = `${newTop}px`;\n };\n this.onMouseUp = () => {\n this.isDragging = false;\n };\n }\n firstUpdated() {\n super.firstUpdated;\n this.addEventListener(\"mousedown\", (e) => {\n const composedPath = e.composedPath()[0];\n if (composedPath && composedPath.tagName.toLowerCase() === \"input\") return;\n const currentLeft = this.getBoundingClientRect().left + window.scrollX;\n const currentTop = this.getBoundingClientRect().top + window.scrollY;\n this.style.left = `${currentLeft}px`;\n this.style.top = `${currentTop}px`;\n this.isDragging = true;\n this.offsetX = e.clientX + window.scrollX - currentLeft;\n this.offsetY = e.clientY + window.scrollY - currentTop;\n });\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-movable-window\")) {\n this.setAttribute(\"dh-movable-window\", \"\");\n }\n document.addEventListener(\"mousemove\", this.onMouseMove);\n document.addEventListener(\"mouseup\", this.onMouseUp);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener(\"mousemove\", this.onMouseMove);\n document.removeEventListener(\"mouseup\", this.onMouseUp);\n }\n};\nDhMovableWindow.styles = [\n ...__superGet(DhMovableWindow, DhMovableWindow, \"styles\"),\n css`\n ${unsafeCSS(style$k)}\n `\n];\n__decorateClass$k([\n state()\n], DhMovableWindow.prototype, \"windowData\", 2);\nDhMovableWindow = __decorateClass$k([\n customElement(\"dh-movable-window\")\n], DhMovableWindow);\n\nvar style$j = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n min-height: 0;\\n}\\n\\n#grid-container {\\n margin: 0;\\n flex: 1;\\n min-height: 0;\\n width: 100%;\\n overflow: auto;\\n padding: 1rem;\\n}\\n\\n#grid-container {\\n scrollbar-width: thin;\\n scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#grid-container::-webkit-scrollbar {\\n width: var(--dh-scrollbar-width, 8px);\\n height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#grid-container::-webkit-scrollbar-thumb {\\n background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#grid-container::-webkit-scrollbar-thumb:hover {\\n background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#grid-container::-webkit-scrollbar-track {\\n background: var(--dh-scrollbar-track, transparent);\\n}\";\n\nfunction findClosestElement(node, selector) {\n if (!node) {\n return null;\n }\n if (node instanceof ShadowRoot) {\n return findClosestElement(node.host, selector);\n }\n if (node instanceof HTMLElement) {\n if (node.matches(selector)) {\n return node;\n } else {\n return findClosestElement(node.parentNode, selector);\n }\n }\n return findClosestElement(node.parentNode, selector);\n}\n\nvar __defProp$i = Object.defineProperty;\nvar __getOwnPropDesc$j = Object.getOwnPropertyDescriptor;\nvar __decorateClass$j = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$j(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$i(target, key, result);\n return result;\n};\nlet DhSettingsGrid = class extends LitElement {\n constructor() {\n super(...arguments);\n this.registeredElements = /* @__PURE__ */ new Map();\n this.notEditable = false;\n this.resettable = false;\n this.open = false;\n this.multiColumn = false;\n this.gridDefines = { dependencies: [], tree: [] };\n this.customerValues = [];\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-settings-grid\")) {\n this.setAttribute(\"dh-settings-grid\", \"\");\n }\n }\n set gridDefinesData(gridDefines) {\n if (gridDefines.dependencies == void 0) {\n gridDefines.dependencies = [];\n }\n gridDefines.tree = this.validateGridDefines(gridDefines.tree);\n this.gridDefines = gridDefines;\n }\n render() {\n return html` <div\n id=\"grid-container\"\n part=\"root\"\n .notEditable=\"${this.notEditable}\"\n .resettable=\"${this.resettable}\"\n .gridDefines=\"${this.gridDefines}\"\n @registerAtGrid=\"${this.register}\"\n @unregisterAtGrid=\"${this.unregister}\"\n @inputfocusout=\"${this.informRegisteredElements}\"\n @isChange=\"${this.informRegisteredElements}\"\n @multiSelectboxChange=\"${this.informRegisteredElements}\"\n @changeSelectOption=\"${this.informRegisteredElements}\"\n @resetGridGroup=\"${this.resetGroup}\"\n @resetSettingItem=\"${this.resetItem}\"\n >\n <slot id=\"grid\" class=\"grid\" name=\"grid\" part=\"content\">\n ${this.gridDefines?.tree?.map((group) => {\n return html`\n <dh-grid-item\n .gridDefines=\"${Object.assign({}, this.gridDefines)}\"\n .groupRegulations=\"${Object.assign({}, group)}\"\n .customerValues=\"${[...this.customerValues]}\"\n .notEditable=\"${this.notEditable}\"\n groupName=\"${group.group}\"\n text=\"${group.text}\"\n info=\"${group.info}\"\n ?resettable=\"${this.resettable}\"\n ?open=\"${this.open}\"\n exportparts=\"root: grid-item-root, header: grid-item-header, icon-reset: grid-item-icon-reset, icon: grid-item-icon, label: grid-item-label, content: grid-item-content, submenu: grid-item-submenu, grid-item-root, grid-item-header, grid-item-icon-reset, grid-item-icon, grid-item-label, grid-item-content, grid-item-submenu, setting-item-root, setting-item-label, setting-item-icon, setting-item-input, dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input, dh-select-root, dh-select-trigger, dh-select-label, dh-select-icon, dh-select-menu, dh-select-input, dh-select-content, dh-select-item, dh-select-selected, dh-multiselect-root, dh-multiselect-trigger, dh-multiselect-icon, dh-multiselect-content, dh-multiselect-input, dh-multiselect-item, dh-multiselect-selected, dh-multiselect-item-root, dh-multiselect-item-label, dh-multiselect-item-trigger, dh-multiselect-item-icon, dh-multiselect-chip-root, dh-multiselect-chip-icon\"\n ></dh-grid-item>\n `;\n })}\n </slot>\n </div>`;\n }\n getGridDefinesData() {\n return this.gridDefines;\n }\n register(event) {\n const registerEntry = event.detail;\n this.registeredElements.set(registerEntry.key, registerEntry.element);\n }\n unregister(event) {\n const unregisterEntry = event.detail;\n this.registeredElements.delete(unregisterEntry.key);\n }\n calculateBits(bitListSelected) {\n return bitListSelected.reduce((acc, bit, i) => {\n if (bit === 1) {\n acc += 2 ** (15 - i);\n }\n return acc;\n }, 0);\n }\n writeValue(key, targetValue, type, selectTarget, settingsItem) {\n const item = this.findItem(this.gridDefines.tree, key);\n if (item) {\n if (type == \"List\") {\n item.customerValue = selectTarget.getSelectedOption().dataId;\n } else if (type == \"BitList\") {\n const bitListSelected = new Array(16).fill(0);\n const multiSelectTargetValue = selectTarget.getValues();\n for (const item2 of multiSelectTargetValue) {\n if (item2.isSelected) {\n const bitIndex = Math.log2(Number(item2.id));\n bitListSelected[15 - bitIndex] = 1;\n }\n }\n item.customerValue = this.calculateBits(bitListSelected);\n } else {\n item.customerValue = targetValue;\n }\n const groupItem = findClosestElement(settingsItem, \"dh-grid-item\");\n if (groupItem) {\n const key2 = groupItem.getAttribute(\"groupName\");\n if (key2) {\n const groupData = this.findGroup(this.gridDefines.tree, key2);\n if (groupData) {\n groupItem.groupRegulations = groupData;\n }\n }\n }\n if (this.customerValues) {\n const customerValue = this.customerValues.find((value) => value.key === key);\n if (customerValue) {\n customerValue.value = targetValue;\n }\n }\n settingsItem.data = Object.assign({}, item);\n }\n }\n findItem(groups, key) {\n for (const group of groups) {\n for (const item2 of group.data) {\n if (item2.key === key) {\n return item2;\n }\n }\n const item = this.findItem(group.submenu, key);\n if (item) {\n return item;\n }\n }\n return null;\n }\n findGroup(groups, key) {\n for (const group of groups) {\n if (group.group === key) {\n return group;\n }\n const groupData = this.findGroup(group.submenu, key);\n if (groupData) {\n return groupData;\n }\n }\n return null;\n }\n informRegisteredElements(event) {\n let targetPath = event.composedPath();\n targetPath = targetPath.filter((element) => element.tagName != void 0);\n let target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-checkbox\");\n if (!target) {\n target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-input\");\n }\n if (!target) {\n target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-select\");\n }\n if (!target) {\n target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-multi-selectbox\");\n }\n if (!target) {\n target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"textarea\");\n }\n const settingItem = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-setting-item\");\n const key = settingItem?.getAttribute(\"key\");\n const type = settingItem?.getAttribute(\"type\");\n const textarea = settingItem?.closest(\"textarea\");\n if (textarea) {\n target = textarea;\n }\n if (!key || !type || !target) {\n return;\n }\n let targetValue = null;\n if (type == \"boolean\") {\n targetValue = target.getCheckboxIsChecked();\n } else if (type == \"Integer\" || type == \"Varchar\" || type == \"Path\" || type == \"Mail\") {\n targetValue = target.getInputValue();\n } else if (type == \"DateTime\") {\n targetValue = target.getInputValueAsDate();\n } else if (type == \"List\") {\n targetValue = target.getSelectedOption().dataId;\n } else if (type == \"BitList\") {\n targetValue = target.getValues().filter((value) => value.isSelected);\n } else if (type == \"note\") {\n targetValue = target.value;\n }\n this.writeValue(key, targetValue, type, target, settingItem);\n this.informElementsAboutRestrictedValues(targetValue, key);\n }\n informElementsAboutRestrictedValues(targetValue, key) {\n const targetDependencies = this.gridDefines?.dependencies?.filter((dependency) => dependency.key == key);\n targetDependencies?.forEach((dependency) => {\n const restricted = dependency.restricts;\n const restrictedElement = this.registeredElements.get(restricted);\n if (targetValue == dependency.condition) {\n restrictedElement.currentRestriction = dependency.values;\n } else {\n restrictedElement.currentRestriction = \"\";\n }\n });\n }\n validateGridDefines(gridDefines) {\n gridDefines.forEach((group) => {\n group.data.forEach((item) => {\n if (item.customerValue == void 0) {\n item.customerValue = \"\";\n }\n if (item.doclink == void 0) {\n item.doclink = \"\";\n }\n if (item.readonly == void 0) {\n item.readonly = 0;\n }\n if (item.mandatory == void 0) {\n item.mandatory = false;\n }\n if (item.visible == void 0) {\n item.visible = \"1\";\n }\n });\n if (group.submenu == void 0) {\n group.submenu = [];\n }\n group.submenu = this.validateGridDefines(group.submenu);\n });\n return gridDefines;\n }\n resetGroup(event) {\n const group = event.detail;\n const key = group.getAttribute(\"groupName\");\n if (key) {\n const groupData = this.findGroup(this.gridDefines.tree, key);\n if (groupData) {\n this.resetGroupData(groupData);\n }\n }\n this.gridDefinesData = Object.assign({}, this.gridDefines);\n }\n resetItem(event) {\n const key = event.detail.getAttribute(\"key\");\n if (!key) {\n return;\n }\n const item = this.findItem(this.gridDefines.tree, key);\n if (item) {\n item.customerValue = null;\n if (this.customerValues) {\n const customerValue = this.customerValues.find((value) => value.key === item.key);\n if (customerValue) {\n customerValue.value = null;\n }\n }\n }\n this.gridDefinesData = Object.assign({}, this.gridDefines);\n }\n resetGroupData(groupData) {\n groupData.data.forEach((item) => {\n item.customerValue = null;\n if (this.customerValues) {\n const customerValue = this.customerValues.find((value) => value.key === item.key);\n if (customerValue) {\n customerValue.value = null;\n }\n }\n });\n groupData.submenu.forEach((subgroup) => {\n this.resetGroupData(subgroup);\n });\n }\n};\nDhSettingsGrid.styles = css`\n ${unsafeCSS(style$j)}\n `;\n__decorateClass$j([\n state()\n], DhSettingsGrid.prototype, \"registeredElements\", 2);\n__decorateClass$j([\n property({ type: Boolean })\n], DhSettingsGrid.prototype, \"notEditable\", 2);\n__decorateClass$j([\n property({ type: Boolean })\n], DhSettingsGrid.prototype, \"resettable\", 2);\n__decorateClass$j([\n property({ type: Boolean, reflect: true })\n], DhSettingsGrid.prototype, \"open\", 2);\n__decorateClass$j([\n property({ type: Boolean, reflect: true })\n], DhSettingsGrid.prototype, \"multiColumn\", 2);\n__decorateClass$j([\n state()\n], DhSettingsGrid.prototype, \"gridDefines\", 2);\n__decorateClass$j([\n state()\n], DhSettingsGrid.prototype, \"customerValues\", 2);\nDhSettingsGrid = __decorateClass$j([\n customElement(\"dh-settings-grid\")\n], DhSettingsGrid);\n\nvar style$i = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n}\\n\\n#item:hover > .container {\\n background-color: var(--dh-grid-hover-bg, rgba(0, 0, 0, 0.04));\\n}\\n\\n.hidden {\\n display: none;\\n}\\n\\nimg {\\n margin: 0.2rem;\\n cursor: pointer;\\n height: 1rem;\\n width: 0.5rem;\\n}\\n\\n#item {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n flex-wrap: wrap;\\n}\\n\\n.width {\\n width: 100%;\\n}\\n\\n.container {\\n display: flex;\\n align-items: center;\\n width: 100%;\\n padding: 0.2rem 0rem 0.2rem 0rem;\\n gap: 8px;\\n border-radius: var(--dh-grid-item-header-radius, 20px);\\n}\\n\\n:host([open]) #settingmenu:not(.hidden) {\\n display: grid;\\n grid-template-columns: var(--dh-grid-item-content-columns, 1fr);\\n column-gap: var(--dh-grid-item-content-column-gap, 0);\\n row-gap: 0;\\n padding: 0 var(--dh-grid-item-content-padding-right, 0) 0 0;\\n align-items: start;\\n}\\n\\n#item-name {\\n flex: 1;\\n min-width: 0;\\n}\\n\\n.folder {\\n margin-left: auto;\\n flex-shrink: 0;\\n}\\n\\n.icon:before {\\n font-size: 1.2rem;\\n}\\n\\n.notDefault {\\n font-weight: bold;\\n}\\n\\n.right {\\n transform: rotate(-90deg);\\n}\\n\\n:host(.selected) #item {\\n outline: var(--dh-grid-item-selected-outline, none);\\n outline-offset: var(--dh-grid-item-selected-outline-offset, 0);\\n}\\n\\n:host(.selected) #container {\\n background-color: var(--dh-grid-item-selected-header-bg, transparent);\\n border-radius: var(--dh-grid-item-selected-header-radius, inherit);\\n}\\n\\n:host(.selected) #item-name {\\n color: var(--dh-grid-item-selected-color, inherit);\\n}\\n\\n:host(.selected) #folder {\\n color: var(--dh-grid-item-selected-color, inherit);\\n}\\n\\n:host(.selected) [part=icon-reset] {\\n color: var(--dh-grid-item-selected-color, inherit);\\n}\";\n\nvar __defProp$h = Object.defineProperty;\nvar __getOwnPropDesc$i = Object.getOwnPropertyDescriptor;\nvar __decorateClass$i = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$i(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$h(target, key, result);\n return result;\n};\nlet DhGridItem = class extends LitElement {\n constructor() {\n super(...arguments);\n this.notDefault = false;\n this.notUseDefault = false;\n this.open = false;\n this.notEditable = false;\n this.resettable = false;\n this.customerValues = [];\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-grid-item\")) {\n this.setAttribute(\"dh-grid-item\", \"\");\n }\n }\n set groupRegulations(group) {\n this.group = group;\n this.fulfilledDependencies = this.getFulfilledDependencies(group);\n if (this.group.data.length > 0 || this.group.submenu.length > 0) {\n (async () => this.folder?.classList.remove(\"hidden\"))();\n }\n }\n //Achtung in der Administration wird von dieser Klasse geerbt und auch das Template überschrieben. Änderungen die auch in der Administration greifen sollen, müssen dort auch gepflegt werden.\n render() {\n return html` <div id=\"item\" part=\"root\" title=\"${this.group?.translatedInfo}\">\n <div id=\"container\" class=\"container\" part=\"header\" @click=\"${this.itemClick}\">\n <div class=\"${this.resettable ? \"\" : \"hidden\"}\">\n <div class=\"fv-icon-reload icon\" part=\"icon-reset\" @click=\"${this.reset}\"></div>\n </div>\n <span id=\"item-name\" part=\"label\" class=\"${this.getGridItemClass()}\">\n <slot id=\"name\" name=\"name\">${this.group?.translatedText ? this.group?.translatedText : this.group?.group}</slot>\n </span>\n <div id=\"folder\" class=\"${this.open ? \"fv-icon-arrow-down-2 folder\" : \"fv-icon-arrow-down-2 right folder\"}\" part=\"icon\"></div>\n </div>\n <div id=\"settingmenu\" class=\"${this.open ? \"settingmenu width\" : \"settingmenu width hidden\"}\" part=\"content\">\n <slot id=\"settingmenu-slot\" name=\"settingmenu\">\n ${this.group ? this.group.data.map((data) => {\n if (data.visible == \"1\") {\n return this.renderSettingItem(data);\n }\n }) : null}\n </slot>\n </div>\n <div id=\"submenu\" class=\"${this.open ? \"submenu width\" : \"submenu width hidden\"}\" part=\"submenu\">\n <slot id=\"submenu-slot\" name=\"submenu\"> ${this.group ? this.group.submenu.map((group) => this.renderGridItem(group)) : null} </slot>\n </div>\n </div>`;\n }\n renderSettingItem(data) {\n return html`<dh-setting-item\n .notEditable=\"${this.notEditable}\"\n type=\"${data.type}\"\n .data=${Object.assign({}, data)}\n .value=${this.customerValues?.find((value) => value.key == data.key)}\n .default=${data.default}\n .currentRestriction=\"${this.fulfilledDependencies?.find((dependency) => dependency.restricts == data.key)?.values}\"\n groupName=\"${this.group?.group}\"\n text=\"${data.name}\"\n info=\"${data.info}\"\n key=\"${data.key}\"\n class=\"${this.getSettingItemClass(data)}\"\n ?resettable=\"${this.resettable}\"\n exportparts=\"root: setting-item-root, label: setting-item-label, icon: setting-item-icon, input: setting-item-input, dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input, dh-select-root, dh-select-trigger, dh-select-label, dh-select-icon, dh-select-menu, dh-select-input, dh-select-content, dh-select-item, dh-select-selected, dh-multiselect-root, dh-multiselect-trigger, dh-multiselect-icon, dh-multiselect-content, dh-multiselect-input, dh-multiselect-item, dh-multiselect-selected, dh-multiselect-item-root, dh-multiselect-item-label, dh-multiselect-item-trigger, dh-multiselect-item-icon, dh-multiselect-chip-root, dh-multiselect-chip-icon\"\n ?mandatory=\"${data.mandatory}\"\n ?readonly=\"${data.readonly}\"\n ?notUseDefault=\"${this.notUseDefault}\"\n ></dh-setting-item>`;\n }\n renderGridItem(group) {\n return html`<dh-grid-item\n .notEditable=\"${this.notEditable}\"\n .gridDefines=\"${this.gridDefines}\"\n .fulfilledDependencies=\"${this.getFulfilledDependencies(group)}\"\n .groupRegulations=${Object.assign({}, group)}\n .customerValues=${[...this.customerValues]}\n groupName=\"${group.group}\"\n text=\"${group.text}\"\n info=\"${group.info}\"\n ?open=\"${this.open}\"\n ?resettable=\"${this.resettable}\"\n exportparts=\"root: grid-item-root, header: grid-item-header, icon-reset: grid-item-icon-reset, icon: grid-item-icon, label: grid-item-label, content: grid-item-content, submenu: grid-item-submenu, grid-item-root, grid-item-header, grid-item-icon-reset, grid-item-icon, grid-item-label, grid-item-content, grid-item-submenu, setting-item-root, setting-item-label, setting-item-icon, setting-item-input, dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input, dh-select-root, dh-select-trigger, dh-select-label, dh-select-icon, dh-select-menu, dh-select-input, dh-select-content, dh-select-item, dh-select-selected, dh-multiselect-root, dh-multiselect-trigger, dh-multiselect-icon, dh-multiselect-content, dh-multiselect-input, dh-multiselect-item, dh-multiselect-selected, dh-multiselect-item-root, dh-multiselect-item-label, dh-multiselect-item-trigger, dh-multiselect-item-icon, dh-multiselect-chip-root, dh-multiselect-chip-icon\"\n ?notUseDefault=\"${this.notUseDefault}\"\n ></dh-grid-item>`;\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n this.showFolderOrNoImage();\n if (this.open) {\n this.classList.add(\"selected\");\n }\n const config = { attributes: true, childList: true, subtree: true };\n const callback = (mutationList, observer2) => {\n for (const mutation of mutationList) {\n if (mutation.type === \"childList\") {\n this.showFolderOrNoImage();\n }\n }\n };\n const observer = new MutationObserver(callback);\n observer.observe(this, config);\n }\n showOnlyNotDefaultElements() {\n let settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item[slot=settingmenu]\"));\n if (settingItems.length == 0) {\n settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item\"));\n }\n const defaultSettingItems = settingItems.filter((item) => !item.classList.contains(\"notDefault\"));\n defaultSettingItems.forEach((item) => item.classList.add(\"hidden\"));\n let submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item[slot=submenu]\"));\n if (submenuGridItems.length == 0) {\n submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item\"));\n }\n const defaultGridItems = submenuGridItems.filter((item) => !item.hasAttribute(\"notDefault\"));\n defaultGridItems.forEach((item) => item.classList.add(\"hidden\"));\n const notDefaultGridItems = submenuGridItems.filter((item) => item.hasAttribute(\"notDefault\"));\n notDefaultGridItems.forEach((item) => item.showOnlyNotDefaultElements());\n }\n showAllElements() {\n let settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item[slot=settingmenu]\"));\n if (settingItems.length == 0) {\n settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item\"));\n }\n settingItems.forEach((item) => item.classList.remove(\"hidden\"));\n let submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item[slot=submenu]\"));\n if (submenuGridItems.length == 0) {\n submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item\"));\n }\n submenuGridItems.forEach((item) => {\n item.classList.remove(\"hidden\");\n item.showAllElements();\n });\n }\n showFilteredNames(searchValue) {\n let settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item[slot=settingmenu]\"));\n if (settingItems.length == 0) {\n settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item\"));\n }\n settingItems.forEach((item) => {\n const name = item.getName().toLowerCase();\n const searchValueToLower = searchValue.toLowerCase();\n const index = name.indexOf(searchValueToLower);\n if (index < 0) {\n item.classList.add(\"hidden\");\n } else {\n item.classList.remove(\"hidden\");\n }\n });\n let displayedSettingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item[slot=settingmenu]\"));\n if (displayedSettingItems.length == 0) {\n displayedSettingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item\"));\n }\n displayedSettingItems = displayedSettingItems.filter((item) => !item.classList.contains(\"hidden\"));\n if (displayedSettingItems.length > 0) {\n this.setAttribute(\"hasItems\", \"\");\n } else {\n this.removeAttribute(\"hasItems\");\n }\n let submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item[slot=submenu]\"));\n if (submenuGridItems.length == 0) {\n submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item\"));\n }\n submenuGridItems.forEach((item) => {\n item.showFilteredNames(searchValue);\n });\n if (submenuGridItems.length > 0) {\n const submenuGridItemsWithSettingItems = submenuGridItems.filter((item) => item.hasAttribute(\"hasItems\"));\n if (submenuGridItemsWithSettingItems.length > 0) {\n this.classList.remove(\"hidden\");\n } else {\n if (this.hasAttribute(\"hasItems\")) {\n this.classList.remove(\"hidden\");\n } else {\n this.classList.add(\"hidden\");\n }\n }\n } else {\n if (this.hasAttribute(\"hasItems\")) {\n this.classList.remove(\"hidden\");\n } else {\n this.classList.add(\"hidden\");\n }\n }\n }\n getSettingItemClass(data) {\n let defaultClass = \"\";\n if (this.fulfilledDependencies?.find((dependency) => dependency.restricts == data.key)?.values || this.customerValues?.find((value) => value.key == data.key)) {\n defaultClass = \"notDefault\";\n }\n return defaultClass;\n }\n getGridItemClass() {\n const data = this.group?.data;\n if (data) {\n for (let i = 0; i < data?.length; i++) {\n const fulfilledDependency = this.fulfilledDependencies?.find((dependency) => dependency.restricts == data[i].key)?.values;\n const individualValue = this.customerValues?.find((value) => value.key == data[i].key);\n const customerValue = this.group?.data.some((item) => item.customerValue);\n if (fulfilledDependency || individualValue || customerValue) {\n this.notDefault = true;\n return \"notDefault\";\n }\n }\n this.notDefault = false;\n return \"\";\n }\n this.notDefault = false;\n return \"\";\n }\n itemClick(event2) {\n event2.stopPropagation();\n const target = event2.target;\n this.openOrCloseMenu(target);\n this.itemClicked();\n }\n openOrCloseMenu(target) {\n this.open = !this.open;\n this.submenu.classList.toggle(\"hidden\");\n this.settingmenu.classList.toggle(\"hidden\");\n this.toggleFolderImage();\n }\n async showFolderOrNoImage() {\n const folder = await this.folder;\n const settingmenu = await this.settingmenu;\n if (await this.hasChildren()) {\n if (this.open) {\n settingmenu.classList.remove(\"hidden\");\n } else {\n folder.classList.remove(\"hidden\");\n }\n } else {\n folder.classList.add(\"hidden\");\n }\n }\n itemClicked() {\n this.griditemclicked.dispatch(this);\n }\n toggleFolderImage() {\n const isNotHidden = this.classList.contains(\"selected\");\n if (!isNotHidden) {\n this.folder.classList.remove(\"right\");\n this.classList.add(\"selected\");\n } else {\n this.folder.classList.add(\"right\");\n this.classList.remove(\"selected\");\n }\n }\n async hasChildren() {\n const subMenuItem = this.querySelector(\"[slot = submenu]\");\n const settingmenuItem = this.querySelector(\"[slot = settingmenu]\");\n const subMenuChildrenCount = this.renderRoot.querySelector(\"#submenu-slot\")?.childElementCount || 0;\n const settingMenuChildrenCount = this.renderRoot.querySelector(\"#settingmenu-slot\")?.childElementCount || 0;\n return subMenuItem != null || settingmenuItem != null || subMenuChildrenCount > 0 || settingMenuChildrenCount > 0;\n }\n getCustomerSettings(dependency) {\n const customerSettings = [];\n const item = this.group?.data.find((data) => data.key == dependency.key);\n if (item?.key && item?.customerValue) {\n const settingsItem = {\n key: item.key,\n value: item.customerValue\n };\n customerSettings.push(settingsItem);\n } else {\n const found = this.customerValues?.find((data) => data.key == dependency.key);\n if (found) {\n customerSettings.push(found);\n }\n }\n return customerSettings;\n }\n getFulfilledDependencies(group) {\n const data = group?.data;\n const groupDependencies = [];\n const fulfilledGroupDependencies = [];\n data?.forEach((dataObject) => {\n const dependency = this.gridDefines?.dependencies.find((dependency2) => dependency2.restricts == dataObject.key);\n if (dependency) {\n groupDependencies.push(dependency);\n }\n });\n groupDependencies.forEach((dependency) => {\n if (this.gridDefines?.tree) {\n const dependencyKeyObject = this.findObject(this.gridDefines?.tree, dependency.key);\n const userSettings = this.getCustomerSettings(dependency);\n if (userSettings) {\n userSettings.forEach((userSettingItem) => {\n if (userSettingItem?.value == dependency.condition) {\n fulfilledGroupDependencies.push(dependency);\n }\n });\n } else if (dependencyKeyObject?.default == dependency.condition) {\n fulfilledGroupDependencies.push(dependency);\n }\n }\n });\n return fulfilledGroupDependencies;\n }\n findObject(submenu, key) {\n let object;\n for (let i = 0; i < submenu.length; i++) {\n if (object) {\n break;\n }\n object = submenu[i].data.find((object2) => object2.key == key);\n if (!object) {\n object = this.findObject(submenu[i].submenu, key);\n }\n }\n return object;\n }\n reset(event2) {\n event2.stopPropagation();\n this.resetGridGroup.dispatch(this);\n }\n};\nDhGridItem.styles = [\n css`\n ${unsafeCSS(style$i)}\n `\n];\n__decorateClass$i([\n query(\"#folder\")\n], DhGridItem.prototype, \"folder\", 2);\n__decorateClass$i([\n query(\"#settingmenu\")\n], DhGridItem.prototype, \"settingmenu\", 2);\n__decorateClass$i([\n query(\"#submenu\")\n], DhGridItem.prototype, \"submenu\", 2);\n__decorateClass$i([\n property({ type: Boolean, reflect: true })\n], DhGridItem.prototype, \"notDefault\", 2);\n__decorateClass$i([\n property({ type: Boolean })\n], DhGridItem.prototype, \"notUseDefault\", 2);\n__decorateClass$i([\n property({ type: Boolean, reflect: true })\n], DhGridItem.prototype, \"open\", 2);\n__decorateClass$i([\n property({ type: Boolean })\n], DhGridItem.prototype, \"notEditable\", 2);\n__decorateClass$i([\n property({ type: Boolean })\n], DhGridItem.prototype, \"resettable\", 2);\n__decorateClass$i([\n state()\n], DhGridItem.prototype, \"group\", 2);\n__decorateClass$i([\n state()\n], DhGridItem.prototype, \"customerValues\", 2);\n__decorateClass$i([\n state()\n], DhGridItem.prototype, \"fulfilledDependencies\", 2);\n__decorateClass$i([\n state()\n], DhGridItem.prototype, \"gridDefines\", 2);\n__decorateClass$i([\n event({ bubbles: true, cancelable: true, composed: true }, \"griditemclicked\")\n], DhGridItem.prototype, \"griditemclicked\", 2);\n__decorateClass$i([\n event({ bubbles: true, cancelable: true, composed: true }, \"resetGridGroup\")\n], DhGridItem.prototype, \"resetGridGroup\", 2);\nDhGridItem = __decorateClass$i([\n customElement(\"dh-grid-item\")\n], DhGridItem);\n\nvar style$h = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n}\\n\\n.setting-item-container-resettable {\\n display: grid;\\n grid-template-rows: auto;\\n grid-template-columns: max-content minmax(0, 1fr) max-content;\\n width: 100%;\\n height: 100%;\\n background-color: transparent;\\n align-items: center;\\n}\\n\\n.setting-item-container {\\n display: grid;\\n grid-template-rows: auto;\\n grid-template-columns: minmax(0, 1fr) max-content;\\n width: 100%;\\n height: 100%;\\n background-color: transparent;\\n align-items: center;\\n}\\n\\n.width {\\n width: 100%;\\n}\\n\\n.margin {\\n margin: 0.2rem;\\n}\\n\\n.font {\\n font-weight: normal !important;\\n}\\n\\n.reset-container {\\n align-self: center;\\n padding: 0 0.25rem;\\n width: 100%;\\n}\\n\\n::slotted([slot=key]) {\\n align-self: center;\\n padding: 0rem 0.5rem 0rem 0.5rem;\\n font-size: small;\\n white-space: nowrap;\\n width: 100%;\\n}\\n\\n.key {\\n align-self: center;\\n padding: 0rem 0.5rem 0rem 0.5rem;\\n font-size: small;\\n white-space: nowrap;\\n width: 100%;\\n}\\n\\n::slotted([slot=value]) {\\n justify-self: start;\\n align-self: center;\\n padding-left: 1rem;\\n}\\n\\n.value {\\n justify-self: end;\\n align-self: center;\\n padding-left: 0.5rem;\\n display: flex;\\n min-height: 24px;\\n align-items: center;\\n}\\n\\n:host([type=Path]) .setting-item-container-resettable {\\n grid-template-columns: max-content max-content minmax(0, 1fr);\\n}\\n\\n:host([type=Path]) .setting-item-container {\\n grid-template-columns: max-content minmax(0, 1fr);\\n}\\n\\n:host([type=Path]) .value {\\n justify-self: stretch;\\n width: 100%;\\n}\\n\\n:host([type=Path]) dh-input {\\n width: 100%;\\n}\\n\\n.notDefault {\\n font-weight: bold;\\n}\\n\\n.icon-button {\\n padding: 0;\\n width: max-content;\\n margin: 0.1rem;\\n}\\n\\n.icon:before {\\n font-size: 1.2rem;\\n}\\n\\n.border {\\n display: flex;\\n align-items: center;\\n height: 100%;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.disabled {\\n opacity: 0.38;\\n}\\n\\n.empty {\\n background-color: rgba(180, 0, 0, 0.08);\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nvar __defProp$g = Object.defineProperty;\nvar __getOwnPropDesc$h = Object.getOwnPropertyDescriptor;\nvar __decorateClass$h = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$h(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$g(target, key, result);\n return result;\n};\nlet DhSettingItem = class extends LitElement {\n constructor() {\n super(...arguments);\n this.textareaHadFocus = false;\n this.textareaSelectionStart = 0;\n this.textareaSelectionEnd = 0;\n this.notEditable = false;\n this.notUseDefault = false;\n this.resettable = false;\n this.mandatory = false;\n this.readonly = false;\n this.isRestricted = false;\n }\n set currentRestriction(values) {\n if (values) {\n this.currentRestrictionValues = values;\n this.isRestricted = true;\n } else {\n this.currentRestrictionValues = \"\";\n this.isRestricted = false;\n }\n }\n //Achtung in der Administration wird von dieser Klasse geerbt und auch das Template überschrieben. Änderungen die auch in der Administration greifen sollen, müssen dort auch gepflegt werden.\n render() {\n return html` <div\n id=\"setting-item-container\"\n class=\"${this.resettable ? \"setting-item-container-resettable\" : \"setting-item-container\"}\"\n part=\"root\"\n @click=\"${this.itemClick}\"\n title=\"${this.data?.translatedInfo}\"\n >\n <div class=\"${this.resettable ? \"reset-container\" : \"hidden\"}\">\n <div class=\"${this.getResetIconClass()}\" part=\"icon\" @click=\"${this.reset}\"></div>\n </div>\n <div\n id=\"name\"\n class=\"border\"\n value=\"${this.data?.translatedName ? this.data?.translatedName : this.data?.name}\"\n key=\"${this.data?.key}\"\n title=\"${this.data?.translatedName || this.data?.name || this.data?.key || \"\"}\"\n >\n <slot id=\"key\" name=\"key\" part=\"label\">\n <div class=\"${this.getItemClass()}\">${this.data?.translatedName ? this.data?.translatedName : this.data?.key}</div>\n </slot>\n </div>\n <div key=\"${this.data?.key}\" class=\"value\">\n <slot id=\"value\" name=\"value\" part=\"input\">\n ${choose(this.data?.type, [\n [\"boolean\", () => this.renderBoolean()],\n [\"Varchar\", () => this.renderVarchar()],\n [\"Path\", () => this.renderVarchar()],\n [\"Mail\", () => this.renderMail()],\n [\"note\", () => this.renderNote()],\n [\"DateTime\", () => this.renderDateTime()],\n [\"Integer\", () => this.renderInteger()],\n [\"List\", () => this.renderList()],\n [\"BitList\", () => this.renderBitList()]\n ])}\n </slot>\n </div>\n </div>`;\n }\n renderVarchar() {\n return html`${keyed(\n this.currentRestrictionValues,\n html`<dh-input\n class=\"margin width\"\n type=\"text\"\n variant=\"classic\"\n key=\"${this.data?.key}\"\n .value=${this.getValueVarchar()}\n .readOnly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n ?mandatory=\"${this.mandatory}\"\n ></dh-input>`\n )}`;\n }\n renderBoolean() {\n return html`${keyed(\n this.currentRestrictionValues || this.data || this.value,\n html`<dh-checkbox\n variant=\"switch\"\n key=\"${this.data?.key}\"\n ?checked=${this.getValueBoolean()}\n ?disabled=\"${this.isRestricted || this.notEditable || this.readonly}\"\n exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n ></dh-checkbox>`\n )}`;\n }\n renderMail() {\n return html`${keyed(\n this.currentRestrictionValues || this.data || this.value,\n html`<dh-input\n class=\"margin width\"\n type=\"email\"\n variant=\"classic\"\n key=\"${this.data?.key}\"\n value=${this.getValueVarchar()}\n .readOnly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n ?mandatory=\"${this.mandatory}\"\n exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n ></dh-input>`\n )}`;\n }\n renderNote() {\n return html`${keyed(\n this.currentRestrictionValues || this.data || this.value,\n html`<textarea\n class=\"${this.currentRestrictionValues ? \"margin width\" : this.value ? \"margin width\" : this.data?.default ? \"margin width\" : this.mandatory ? \"margin width empty\" : \"margin width\"}\"\n type=\"note\"\n key=\"${this.data?.key}\"\n .readOnly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n ?mandatory=\"${this.mandatory}\"\n part=\"note\"\n @focusout=\"${this.onTextareaFocusout}\"\n part=\"input\"\n >\n${this.getValueVarchar()}</textarea\n >`\n )}`;\n }\n renderDateTime() {\n return html`${keyed(\n this.currentRestrictionValues || this.data || this.value,\n html`<dh-input\n class=\"margin width\"\n type=\"date\"\n variant=\"classic\"\n key=\"${this.data?.key}\"\n .valueAsDate=\"${this.getValueDate()}\"\n .readonly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n ?mandatory=\"${this.mandatory}\"\n exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n ></dh-input>`\n )}`;\n }\n renderInteger() {\n return html`${keyed(\n this.currentRestrictionValues || this.data || this.value,\n html`<dh-input\n class=\"margin width\"\n type=\"number\"\n variant=\"classic\"\n key=\"${this.data?.key}\"\n value=${this.getValueInteger()}\n min=\"${this.data?.values?.min ? this.data?.values?.min : void 0}\"\n max=\"${this.data?.values?.max ? this.data?.values?.max : void 0}\"\n ?readonly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n ?mandatory=\"${this.mandatory}\"\n exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n ></dh-input>`\n )}`;\n }\n renderList() {\n return html`${keyed(\n this.currentRestrictionValues || this.data || this.value,\n html`<dh-select\n key=\"${this.data?.key}\"\n ?disabled=\"${this.notEditable || this.readonly}\"\n ?mandatory=\"${this.mandatory}\"\n ?withoutEmptyDefault=\"${this.data?.default !== null}\"\n class=\"margin\"\n notSearchable\n .selectOptions=\"${this.createOptions(\n this.currentRestrictionValues ? JSON.parse(this.currentRestrictionValues) : this.data?.values\n )}\"\n exportparts=\"root: dh-select-root, trigger: dh-select-trigger, label: dh-select-label, icon: dh-select-icon, menu: dh-select-menu, input: dh-select-input, content: dh-select-content, item: dh-select-item, selected: dh-select-selected\"\n ></dh-select>`\n )}`;\n }\n renderBitList() {\n return html`${keyed(\n this.currentRestrictionValues || this.data?.key || this.value?.key,\n html`<dh-multi-selectbox\n class=\"width margin font\"\n key=\"${this.data?.key}\"\n .selectBoxValues=${this.createBitListValues()}\n ?notEditable=\"${this.notEditable || this.readonly}\"\n ?mandatory=\"${this.mandatory}\"\n exportparts=\"root: dh-multiselect-root, trigger: dh-multiselect-trigger, icon: dh-multiselect-icon, content: dh-multiselect-content, input: dh-multiselect-input, item: dh-multiselect-item, selected: dh-multiselect-selected, item-root: dh-multiselect-item-root, item-label: dh-multiselect-item-label, item-trigger: dh-multiselect-item-trigger, item-icon: dh-multiselect-item-icon\"\n ></dh-multi-selectbox>`\n )}`;\n }\n createBitListValues() {\n const valuesObj = this.currentRestrictionValues ? JSON.parse(this.currentRestrictionValues) : this.data?.values;\n if (!valuesObj) return [];\n const selectedIds = this.getSelectedValues().split(\":\").filter(Boolean);\n return Object.keys(valuesObj).filter((key) => key !== \"value\").map((key) => ({\n id: valuesObj[key].toString(),\n value: key,\n isSelected: selectedIds.includes(valuesObj[key].toString())\n }));\n }\n getItemClass() {\n if (this.currentRestrictionValues || this.data?.customerValue || this.data?.customerValue === false || this.value || this.value === false) {\n return \"key notDefault\";\n } else {\n return \"key\";\n }\n }\n getResetIconClass() {\n if (this.currentRestrictionValues || this.data?.customerValue || this.data?.customerValue === false || this.value || this.value === false) {\n return \"fv-icon-reload icon\";\n } else {\n return \"fv-icon-reload icon disabled\";\n }\n }\n getValueVarchar() {\n if (this.currentRestrictionValues) {\n return this.currentRestrictionValues;\n }\n if (this.data) {\n if (this.data.customerValue) {\n return this.data.customerValue;\n }\n }\n if (this.value) {\n if (this.value.value != null) {\n if (this.value.value) {\n return this.value.value;\n }\n if (this.notUseDefault) {\n return \"\";\n }\n if (this.data) {\n return this.data?.default || \"\";\n }\n }\n }\n if (this.notUseDefault) {\n return \"\";\n }\n if (this.data) {\n return this.data?.default || \"\";\n }\n return \"\";\n }\n getValueBoolean() {\n if (this.currentRestrictionValues) {\n if (typeof this.currentRestrictionValues === \"boolean\") {\n return this.currentRestrictionValues;\n }\n if (typeof this.currentRestrictionValues === \"string\") {\n return !!parseInt(this.currentRestrictionValues);\n }\n }\n if (this.data?.customerValue !== void 0 && this.data?.customerValue !== \"\" && this.data?.customerValue !== null) {\n if (isNaN(parseInt(this.data.customerValue.toString()))) {\n if (typeof this.data.customerValue === \"string\") {\n return this.data.customerValue == \"true\";\n } else {\n return this.data.customerValue;\n }\n } else {\n return !!parseInt(this.data.customerValue.toString() || \"\");\n }\n }\n if (this.value?.value !== void 0 && this.value?.value !== \"\" && this.value?.value !== null) {\n if (isNaN(parseInt(this.value.value.toString()))) {\n if (typeof this.value.value === \"string\") {\n return this.value.value == \"true\";\n } else {\n return this.value.value;\n }\n } else {\n return !!parseInt(this.value?.value?.toString() || \"\");\n }\n }\n if (this.notUseDefault) {\n return false;\n }\n if (this.data?.default !== void 0 && this.data?.default !== \"\" && this.data?.default !== null) {\n if (isNaN(parseInt(this.data.default.toString()))) {\n return this.data.default == \"true\";\n } else {\n return !!parseInt(this.data?.default);\n }\n }\n return false;\n }\n getValueDate() {\n if (this.currentRestrictionValues) {\n if (typeof this.currentRestrictionValues === \"string\" || typeof this.currentRestrictionValues === \"number\") {\n return new Date(this.currentRestrictionValues);\n }\n }\n if (this.data?.customerValue) {\n return new Date(this.data.customerValue);\n }\n if (this.value) {\n return new Date(this.value.value);\n }\n if (this.notUseDefault) {\n return \"\";\n }\n if (this.data?.default !== \"-1\" && this.data?.default !== void 0) {\n return new Date(this.data.default);\n }\n return \"\";\n }\n getValueInteger() {\n if (this.currentRestrictionValues) {\n if (typeof this.currentRestrictionValues === \"string\") {\n return parseInt(this.currentRestrictionValues);\n }\n }\n if (this.data?.customerValue) {\n return parseInt(this.data.customerValue.toString());\n }\n if (this.value) {\n if (this.value.value != null) {\n return parseInt(this.value.value.toString());\n }\n if (this.notUseDefault) {\n return \"\";\n }\n if (this.data) {\n return parseInt(this.data?.default);\n }\n return \"\";\n }\n if (this.notUseDefault) {\n return \"\";\n }\n if (this.data) {\n return parseInt(this.data?.default);\n }\n return \"\";\n }\n willUpdate() {\n const textarea = this.shadowRoot?.querySelector(\"textarea:focus\");\n if (textarea) {\n this.textareaHadFocus = true;\n this.textareaSelectionStart = textarea.selectionStart;\n this.textareaSelectionEnd = textarea.selectionEnd;\n }\n }\n updated() {\n if (this.textareaHadFocus) {\n const textarea = this.shadowRoot?.querySelector(\"textarea\");\n if (textarea) {\n textarea.focus();\n textarea.selectionStart = this.textareaSelectionStart;\n textarea.selectionEnd = this.textareaSelectionEnd;\n }\n this.textareaHadFocus = false;\n }\n }\n async connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-setting-item\")) {\n this.setAttribute(\"dh-setting-item\", \"\");\n }\n this.registerAtGrid.dispatch({ key: this.data ? this.data.key : \"\", element: this });\n this.addEventListener(\"mouseenter\", () => this.hoverSettingItem.dispatch(this));\n }\n async disconnectedCallback() {\n super.disconnectedCallback();\n this.unregisterAtGrid.dispatch({ key: this.data ? this.data.key : \"\", element: this });\n }\n getName() {\n return this.name.innerText;\n }\n getSelectedValues() {\n const selectedValues = [];\n let selected = \"\";\n if (!this.currentRestrictionValues) {\n if (this.data?.customerValue) {\n const values = Object.values(this.data.values);\n values.forEach((value) => {\n if ((parseInt(value) & parseInt(this.data?.customerValue)) == parseInt(value)) {\n if (value) {\n selectedValues.push(value.toString());\n }\n }\n });\n selected = selectedValues.join(\":\");\n } else if (this.value?.value) {\n if (this.data?.values) {\n const values = Object.values(this.data.values);\n values.forEach((value) => {\n if ((parseInt(value) & parseInt(this.value?.value)) == parseInt(value)) {\n if (value) {\n selectedValues.push(value.toString());\n }\n }\n });\n selected = selectedValues.join(\":\");\n }\n } else {\n if (this.data?.values) {\n const values = Object.values(this.data.values);\n values.forEach((value) => {\n if (parseInt(value) & parseInt(this.data?.default)) {\n if (value) {\n selectedValues.push(value.toString());\n }\n }\n });\n selected = selectedValues.join(\":\");\n }\n }\n }\n return selected;\n }\n onTextareaFocusout() {\n this.dispatchEvent(new Event(\"inputfocusout\", { bubbles: true, cancelable: true, composed: true }));\n }\n itemClick(event2) {\n event2.stopPropagation();\n this.settingitemclicked.dispatch(this);\n }\n reset(event2) {\n event2.stopPropagation();\n this.resetSettingItem.dispatch(this);\n }\n createOptions(values) {\n const options = [];\n const keys = Object.keys(values);\n keys.forEach((key) => {\n const optionObject = {\n dataId: values[key].toString(),\n showContent: key,\n selected: this.data?.customerValue ? this.data?.customerValue == this.data?.values[key] : this.value?.value ? this.value.value == this.data?.values[key] : this.notUseDefault ? false : this.data?.default == this.data?.values[key],\n approved: true,\n suboptions: []\n };\n options.push(optionObject);\n });\n return options;\n }\n};\nDhSettingItem.styles = [\n css`\n ${unsafeCSS(style$h)}\n `\n];\n__decorateClass$h([\n query(\"#name\")\n], DhSettingItem.prototype, \"name\", 2);\n__decorateClass$h([\n property({ type: Boolean })\n], DhSettingItem.prototype, \"notEditable\", 2);\n__decorateClass$h([\n property({ type: Boolean })\n], DhSettingItem.prototype, \"notUseDefault\", 2);\n__decorateClass$h([\n property({ type: Boolean })\n], DhSettingItem.prototype, \"resettable\", 2);\n__decorateClass$h([\n property({ type: Boolean })\n], DhSettingItem.prototype, \"mandatory\", 2);\n__decorateClass$h([\n property({ type: Boolean })\n], DhSettingItem.prototype, \"readonly\", 2);\n__decorateClass$h([\n state()\n], DhSettingItem.prototype, \"data\", 2);\n__decorateClass$h([\n state()\n], DhSettingItem.prototype, \"value\", 2);\n__decorateClass$h([\n state()\n], DhSettingItem.prototype, \"isRestricted\", 2);\n__decorateClass$h([\n state()\n], DhSettingItem.prototype, \"currentRestrictionValues\", 2);\n__decorateClass$h([\n event({ bubbles: true, cancelable: true, composed: true }, \"registerAtGrid\")\n], DhSettingItem.prototype, \"registerAtGrid\", 2);\n__decorateClass$h([\n event({ bubbles: true, cancelable: true, composed: true }, \"unregisterAtGrid\")\n], DhSettingItem.prototype, \"unregisterAtGrid\", 2);\n__decorateClass$h([\n event({ bubbles: true, cancelable: true, composed: true }, \"settingitemclicked\")\n], DhSettingItem.prototype, \"settingitemclicked\", 2);\n__decorateClass$h([\n event({ bubbles: true, cancelable: true, composed: true }, \"resetSettingItem\")\n], DhSettingItem.prototype, \"resetSettingItem\", 2);\n__decorateClass$h([\n event({ bubbles: true, cancelable: true, composed: true }, \"hoverSettingItem\")\n], DhSettingItem.prototype, \"hoverSettingItem\", 2);\nDhSettingItem = __decorateClass$h([\n customElement(\"dh-setting-item\")\n], DhSettingItem);\n\nvar style$g = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n position: relative;\\n}\\n\\n.select-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n position: relative;\\n}\\n\\n.list {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n flex-wrap: wrap;\\n flex: 1;\\n min-width: 0;\\n}\\n\\n::slotted(.item) {\\n cursor: pointer;\\n}\\n\\n::slotted(.selectbox-item) {\\n cursor: pointer;\\n}\\n\\n.intern {\\n cursor: pointer;\\n}\\n\\n#selectbox {\\n position: fixed;\\n z-index: 99;\\n overflow: auto;\\n margin: 0;\\n padding: 0;\\n border: none;\\n inset: auto;\\n width: max-content;\\n}\\n\\n#option-list {\\n display: flex;\\n flex-direction: column;\\n overflow: auto;\\n max-height: 20rem;\\n}\\n\\n#option-list {\\n scrollbar-width: thin;\\n scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#option-list::-webkit-scrollbar {\\n width: var(--dh-scrollbar-width, 8px);\\n height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#option-list::-webkit-scrollbar-thumb {\\n background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#option-list::-webkit-scrollbar-thumb:hover {\\n background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#option-list::-webkit-scrollbar-track {\\n background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n::slotted(.hidden) {\\n display: none;\\n}\\n\\n.selected {\\n font-weight: 500;\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nvar __defProp$f = Object.defineProperty;\nvar __getOwnPropDesc$g = Object.getOwnPropertyDescriptor;\nvar __decorateClass$g = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$g(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$f(target, key, result);\n return result;\n};\nlet DhMultiSelectbox = class extends LitElement {\n constructor() {\n super(...arguments);\n this.isOpen = false;\n this.notEditable = false;\n this.values = [];\n this.selected = [];\n this.filterText = \"\";\n // Schließt das Popover, wenn IRGENDWO in der Seite gescrollt wird —\n // außer der Scroll passiert innerhalb des Popovers selbst (interne\n // Item-Liste). `document` mit `capture: true` fängt Scroll-Events\n // aller Descendants, inklusive solcher in fremden Shadow-DOMs (z.B.\n // dh-settings-grid intern), die ein ancestor-basiertes Walking nicht\n // erreichen würde.\n this.handleScroll = (e) => {\n if (this.selectboxElement && e.composedPath().includes(this.selectboxElement)) {\n return;\n }\n this.closeSelectBox();\n };\n this.onDocumentClick = (e) => {\n if (!e.composedPath().includes(this)) {\n this.closeSelectBox();\n }\n };\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-multi-selectbox\")) {\n this.setAttribute(\"dh-multi-selectbox\", \"\");\n }\n document.addEventListener(\"mousedown\", this.onDocumentClick);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener(\"mousedown\", this.onDocumentClick);\n }\n set selectBoxValues(values) {\n this.selected = values.filter((value) => value.isSelected).map((value) => value.id);\n this.values = values;\n this.values.forEach((v) => {\n v.isSelected = this.selected.includes(v.id);\n });\n this.requestUpdate();\n this.showSelectedElements();\n }\n set selectedElements(selected) {\n this.selected = selected?.split(\":\");\n this.showSelectedElements();\n this.requestUpdate();\n }\n render() {\n return html`<div id=\"multi-selectbox-container\" class=\"select-container\" part=\"root\" @removeItem=${this.removeItem}>\n <div class=\"list\" part=\"trigger\">\n <slot name=\"list\">\n ${this.values.filter((el) => el.isSelected).map(\n (element) => html`\n <dh-multi-selectbox-item\n id=\"${element.id}\"\n class=\"intern\"\n exportparts=\"root: item-root, label: item-label, trigger: item-trigger, icon: item-icon, dh-button-root: item-dh-button-root, dh-button-label: item-dh-button-label, dh-button-icon: item-dh-button-icon\"\n >\n <span>${element.value}</span>\n </dh-multi-selectbox-item>\n `\n )}\n </slot>\n <dh-button\n @click=${this.openCloseSelectBox}\n part=\"icon\"\n class=\"${this.notEditable ? \"hidden\" : \"\"}\"\n exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n >\n <div slot=\"img\" class=\"fv-icon-plus\"></div>\n </dh-button>\n </div>\n <div id=\"selectbox\" part=\"content\" popover=\"manual\" @click=${this.selectItem}>\n <dh-input\n id=\"input\"\n variant=\"classic\"\n @input=\"${this.filter}\"\n part=\"input\"\n placeholder=\"Suchen...\"\n exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n ></dh-input>\n <div id=\"option-list\">\n <slot name=\"allValues\">\n ${this.values.filter((element) => !this.filterText || element.value?.toLowerCase().includes(this.filterText)).map(\n (element) => html`\n <div\n id=\"${element.id}\"\n class=\"intern${element.isSelected ? \" selected\" : \"\"}\"\n part=\"${element.isSelected ? \"item selected\" : \"item\"}\"\n >\n ${element.value}\n </div>\n `\n )}\n </slot>\n </div>\n </div>\n </div>`;\n }\n getValues() {\n return this.values;\n }\n setSelectedElements(selectedIds) {\n this.selected = selectedIds;\n this.values.forEach((value) => {\n value.isSelected = selectedIds.includes(value.id);\n });\n this.requestUpdate();\n const slottedChips = Array.from(this.querySelectorAll(\"dh-multi-selectbox-item[slot=list]\"));\n if (slottedChips.length > 0) {\n slottedChips.forEach((item) => {\n const idValue = item.getAttribute(\"id\");\n const isSelected = idValue ? selectedIds.includes(idValue) : false;\n if (isSelected) {\n item.classList.remove(\"hidden\");\n } else {\n item.classList.add(\"hidden\");\n }\n });\n }\n const slottedItems = Array.from(this.querySelectorAll(\"[slot=allValues]\"));\n if (slottedItems.length > 0) {\n slottedItems.forEach((el) => {\n const idValue = el.getAttribute(\"id\");\n const isSelected = idValue ? selectedIds.includes(idValue) : false;\n if (isSelected) {\n el.classList.add(\"selected\");\n } else {\n el.classList.remove(\"selected\");\n }\n });\n }\n }\n closeSelectBox() {\n if (this.selectboxElement) {\n try {\n this.selectboxElement.hidePopover();\n } catch {\n }\n this.selectboxElement.style.top = \"\";\n this.selectboxElement.style.left = \"\";\n this.selectboxElement.style.minWidth = \"\";\n }\n document.removeEventListener(\"scroll\", this.handleScroll, true);\n this.isOpen = false;\n }\n async showSelectedElements() {\n await this.updateComplete;\n const items = this.querySelectorAll(\"dh-multi-selectbox-item[slot=list]\");\n if (items.length > 0) {\n const isInValues = this.values.length > 0;\n items.forEach((item) => {\n let value = item.getAttribute(\"value\");\n if (!value) {\n value = item.textContent ? item.textContent.trim() : \"\";\n item.setAttribute(\"value\", value);\n }\n item.classList.add(\"item\");\n const id = item.getAttribute(\"id\");\n let isSelected = false;\n if (this.selected && id) {\n isSelected = this.selected.includes(id);\n }\n if (isSelected) {\n item.classList.remove(\"hidden\");\n } else {\n item.classList.add(\"hidden\");\n }\n if (!isInValues) {\n this.values.push({ id: id || \"\", isSelected, value });\n }\n });\n }\n const selectableDivs = this.querySelectorAll(\"div[slot=allValues]\");\n if (selectableDivs.length > 0) {\n const isInValues = this.values.length > 0;\n selectableDivs.forEach((div) => {\n let value = div.getAttribute(\"value\");\n if (!value) {\n value = div.textContent ? div.textContent.trim() : \"\";\n div.setAttribute(\"value\", value);\n }\n div.classList.add(\"selectbox-item\");\n const id = div.getAttribute(\"id\");\n let isSelected = false;\n if (this.selected && id) {\n isSelected = this.selected.includes(id);\n }\n if (isSelected) {\n div.classList.add(\"selected\");\n } else {\n div.classList.remove(\"selected\");\n }\n if (!isInValues) {\n this.values.push({ id: id || \"\", isSelected, value });\n }\n });\n }\n }\n openCloseSelectBox(event2) {\n event2?.stopPropagation();\n if (this.notEditable) {\n return;\n }\n if (this.isOpen) {\n this.closeSelectBox();\n return;\n }\n this.isOpen = true;\n this.openDropdown();\n }\n openDropdown() {\n if (!this.selectboxElement || !this.triggerElement) {\n return;\n }\n this.selectboxElement.showPopover();\n const triggerRect = this.triggerElement.getBoundingClientRect();\n this.selectboxElement.style.minWidth = `${triggerRect.width}px`;\n const menuRect = this.selectboxElement.getBoundingClientRect();\n const menuHeight = menuRect.height;\n const menuWidth = menuRect.width;\n const horizontalMargin = 8;\n const desiredLeft = triggerRect.right - menuWidth;\n const adjustedLeft = Math.max(horizontalMargin, desiredLeft);\n this.selectboxElement.style.left = `${adjustedLeft}px`;\n const spaceBelow = window.innerHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n if (spaceBelow < menuHeight && spaceAbove > spaceBelow) {\n this.selectboxElement.style.top = `${triggerRect.top - menuHeight}px`;\n } else {\n this.selectboxElement.style.top = `${triggerRect.bottom}px`;\n }\n document.addEventListener(\"scroll\", this.handleScroll, { capture: true, passive: true });\n }\n removeItem(event2) {\n if (!this.notEditable) {\n const key = event2.detail;\n const value = this.values.find((value2) => value2.id == key);\n if (value) {\n value.isSelected = false;\n }\n this.selected = this.selected.filter((id) => id !== key);\n const slottedChips = Array.from(this.querySelectorAll(\"dh-multi-selectbox-item[slot=list]\"));\n if (slottedChips.length > 0) {\n const chipEl = slottedChips.find((el) => el.getAttribute(\"id\") == key);\n chipEl?.classList.add(\"hidden\");\n }\n const slottedItems = Array.from(this.querySelectorAll(\"[slot=allValues]\"));\n if (slottedItems.length > 0) {\n const dropdownEl = slottedItems.find((el) => el.getAttribute(\"id\") == key);\n dropdownEl?.classList.remove(\"selected\");\n }\n this.changeItems();\n this.requestUpdate();\n }\n }\n selectItem(event2) {\n const target = event2.target;\n const idValue = target.getAttribute(\"id\");\n if (!idValue) return;\n const value = this.values.find((value2) => value2.id == idValue);\n if (value) {\n value.isSelected = !value.isSelected;\n if (value.isSelected) {\n this.selected.push(idValue);\n } else {\n this.selected = this.selected.filter((id) => id !== idValue);\n }\n }\n const slottedChips = Array.from(this.querySelectorAll(\"dh-multi-selectbox-item[slot=list]\"));\n if (slottedChips.length > 0) {\n const chipEl = slottedChips.find((el) => el.getAttribute(\"id\") == idValue);\n if (chipEl) {\n if (value?.isSelected) {\n chipEl.classList.remove(\"hidden\");\n } else {\n chipEl.classList.add(\"hidden\");\n }\n }\n }\n const slottedItems = Array.from(this.querySelectorAll(\"[slot=allValues]\"));\n if (slottedItems.length > 0) {\n const dropdownEl = slottedItems.find((el) => el.getAttribute(\"id\") == idValue);\n if (dropdownEl) {\n if (value?.isSelected) {\n dropdownEl.classList.add(\"selected\");\n } else {\n dropdownEl.classList.remove(\"selected\");\n }\n }\n }\n this.changeItems();\n this.requestUpdate();\n }\n changeItems() {\n this.multiSelectboxChange.dispatch(this.values);\n }\n filter(event2) {\n const inputElement = event2.target;\n this.filterText = inputElement.value.toLowerCase();\n const elements = Array.from(this.querySelectorAll(\"[slot=allValues]\"));\n if (elements.length > 0) {\n elements.forEach((element) => {\n const text = element.textContent;\n if (text) {\n if (text.toLowerCase().includes(this.filterText)) {\n element.classList.remove(\"hidden\");\n } else {\n element.classList.add(\"hidden\");\n }\n }\n });\n }\n }\n};\nDhMultiSelectbox.styles = css`\n ${unsafeCSS(style$g)}\n `;\n__decorateClass$g([\n state()\n], DhMultiSelectbox.prototype, \"isOpen\", 2);\n__decorateClass$g([\n property({ type: Boolean })\n], DhMultiSelectbox.prototype, \"notEditable\", 2);\n__decorateClass$g([\n validatedProperty({\n type: Array,\n fallback: {\n id: \"\",\n value: \"\",\n isSelected: false\n }\n })\n], DhMultiSelectbox.prototype, \"values\", 2);\n__decorateClass$g([\n state()\n], DhMultiSelectbox.prototype, \"filterText\", 2);\n__decorateClass$g([\n query(\"#selectbox\")\n], DhMultiSelectbox.prototype, \"selectboxElement\", 2);\n__decorateClass$g([\n query(\"#multi-selectbox-container\")\n], DhMultiSelectbox.prototype, \"triggerElement\", 2);\n__decorateClass$g([\n event({ bubbles: true, cancelable: true, composed: true }, \"multiSelectboxChange\")\n], DhMultiSelectbox.prototype, \"multiSelectboxChange\", 2);\nDhMultiSelectbox = __decorateClass$g([\n customElement(\"dh-multi-selectbox\")\n], DhMultiSelectbox);\n\nvar style$f = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: inline-flex;\\n}\\n\\n.item-container {\\n display: inline-flex;\\n align-items: center;\\n flex-wrap: nowrap;\\n width: max-content;\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nvar __defProp$e = Object.defineProperty;\nvar __getOwnPropDesc$f = Object.getOwnPropertyDescriptor;\nvar __decorateClass$f = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$f(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$e(target, key, result);\n return result;\n};\nlet DhMultiSelectboxItem = class extends LitElement {\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-multi-selectbox-item\")) {\n this.setAttribute(\"dh-multi-selectbox-item\", \"\");\n }\n }\n render() {\n return html` <div id=\"item-container\" class=\"item-container\" part=\"root\">\n <span part=\"label\"><slot></slot></span>\n <dh-button @click=${this.closeButtonClick} part=\"trigger\" exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\">\n <div slot=\"img\" part=\"icon\" class=\"fv-icon-minus\"></div>\n </dh-button>\n </div>`;\n }\n closeButtonClick() {\n const key = this.getAttribute(\"id\");\n this.removeItem.dispatch(key || \"\");\n }\n};\nDhMultiSelectboxItem.styles = css`\n ${unsafeCSS(style$f)}\n `;\n__decorateClass$f([\n event({ bubbles: true, cancelable: true, composed: true }, \"removeItem\")\n], DhMultiSelectboxItem.prototype, \"removeItem\", 2);\nDhMultiSelectboxItem = __decorateClass$f([\n customElement(\"dh-multi-selectbox-item\")\n], DhMultiSelectboxItem);\n\nvar style$e = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n height: auto;\\n width: auto;\\n}\\n\\n:host(.hidden) {\\n display: none;\\n}\";\n\nvar __defProp$d = Object.defineProperty;\nvar __getOwnPropDesc$e = Object.getOwnPropertyDescriptor;\nvar __decorateClass$e = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$e(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$d(target, key, result);\n return result;\n};\nlet DhInfoboxController = class extends LitElement {\n constructor() {\n super(...arguments);\n this.waitingTime = \"\";\n this.startTime = \"\";\n this.stopped = true;\n this.isStartTimeOver = false;\n this.timeoutId = 0;\n this.date = /* @__PURE__ */ new Date();\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-infobox-controller\")) {\n this.setAttribute(\"dh-infobox-controller\", \"\");\n }\n }\n render() {\n return html`<div id=\"controller\" part=\"root\">\n <slot id=\"infobox-slot\" name=\"infobox-slot\"></slot>\n </div>`;\n }\n attributeChangedCallback(name, _old, value) {\n super.attributeChangedCallback(name, _old, value);\n if (name == \"stopped\") {\n const isStopped = this.hasAttribute(\"stopped\");\n if (isStopped) {\n this.stopController();\n } else {\n this.startController();\n }\n }\n }\n startController() {\n this.date = /* @__PURE__ */ new Date();\n this.timeoutId = window.setTimeout(() => {\n this.classList.remove(\"hidden\");\n this.isStartTimeOver = true;\n }, parseInt(this.startTime));\n }\n stopController() {\n if (!this.isStartTimeOver) {\n clearTimeout(this.timeoutId);\n this.timeoutId = 0;\n } else {\n const currentDate = /* @__PURE__ */ new Date();\n const difference = currentDate.getTime() - this.date.getTime();\n if (difference >= parseInt(this.waitingTime)) {\n this.classList.add(\"hidden\");\n this.isStartTimeOver = false;\n } else {\n window.setTimeout(() => {\n this.classList.add(\"hidden\");\n this.isStartTimeOver = false;\n }, parseInt(this.waitingTime) - difference);\n }\n }\n }\n};\nDhInfoboxController.styles = css`\n ${unsafeCSS(style$e)}\n `;\n__decorateClass$e([\n property({ type: String, reflect: true })\n], DhInfoboxController.prototype, \"waitingTime\", 2);\n__decorateClass$e([\n property({ type: String, reflect: true })\n], DhInfoboxController.prototype, \"startTime\", 2);\n__decorateClass$e([\n property({ type: Boolean, reflect: true })\n], DhInfoboxController.prototype, \"stopped\", 2);\nDhInfoboxController = __decorateClass$e([\n customElement(\"dh-infobox-controller\")\n], DhInfoboxController);\n\nvar style$d = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n@keyframes loader-spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes checkmark {\\n 0% {\\n height: 0;\\n width: 0;\\n opacity: 1;\\n }\\n 20% {\\n height: 0;\\n width: 25%;\\n opacity: 1;\\n }\\n 40% {\\n height: 50%;\\n width: 25%;\\n opacity: 1;\\n }\\n 100% {\\n height: 50%;\\n width: 25%;\\n opacity: 1;\\n }\\n}\\n:host([active]) {\\n display: flex;\\n}\\n\\n:host {\\n display: none;\\n margin: auto;\\n width: 1em;\\n height: 1em;\\n position: relative;\\n}\\n:host .circle {\\n padding-left: 2px;\\n border: 3px solid transparent;\\n border-left-color: currentColor;\\n animation: loader-spin 1.2s infinite linear;\\n position: relative;\\n display: inline-block;\\n vertical-align: top;\\n border-radius: 50%;\\n width: 100%;\\n}\\n:host .load-complete {\\n -webkit-animation: none;\\n animation: none;\\n border-color: currentColor;\\n transition: border 500ms ease-out;\\n}\\n:host .load-complete .checkmark {\\n display: initial;\\n}\\n:host .checkmark {\\n display: none;\\n}\\n:host .checkmark.draw:after {\\n animation-duration: 400ms;\\n animation-timing-function: ease;\\n animation-name: checkmark;\\n transform: scaleX(-1) rotate(135deg);\\n}\\n:host .checkmark:after {\\n opacity: 1;\\n height: 50%;\\n width: 25%;\\n transform-origin: left top;\\n border-right: 1px solid currentColor;\\n border-top: 1px solid currentColor;\\n content: \\\"\\\";\\n left: 25%;\\n top: 50%;\\n position: absolute;\\n}\";\n\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropDesc$d = Object.getOwnPropertyDescriptor;\nvar __decorateClass$d = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$d(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$c(target, key, result);\n return result;\n};\nlet DhProgressAnimation = class extends LitElement {\n constructor() {\n super(...arguments);\n this.active = false;\n this.finished = false;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-progress-animation\")) {\n this.setAttribute(\"dh-progress-animation\", \"\");\n }\n }\n render() {\n const classes = {\n circle: !this.finished,\n \"load-complete\": this.finished\n };\n return html`\n <div class=${classMap(classes)} part=\"root\">\n <div class=\"checkmark draw\" part=\"indicator\"></div>\n </div>\n `;\n }\n show() {\n this.active = true;\n this.finished = false;\n }\n finish() {\n this.finished = true;\n }\n hide() {\n this.active = false;\n this.finished = false;\n }\n};\nDhProgressAnimation.styles = css`\n ${unsafeCSS(style$d)}\n `;\n__decorateClass$d([\n property({ type: Boolean, reflect: true })\n], DhProgressAnimation.prototype, \"active\", 2);\n__decorateClass$d([\n property({ type: Boolean, reflect: true })\n], DhProgressAnimation.prototype, \"finished\", 2);\nDhProgressAnimation = __decorateClass$d([\n customElement(\"dh-progress-animation\")\n], DhProgressAnimation);\n\nvar style$c = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n position: fixed;\\n bottom: 24px;\\n left: 50%;\\n transform: translateX(-50%) translateY(20px);\\n z-index: 9999;\\n opacity: 0;\\n pointer-events: none;\\n transition: opacity 220ms cubic-bezier(0.2, 0, 0, 1), transform 220ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([open]) {\\n opacity: 1;\\n transform: translateX(-50%) translateY(0);\\n pointer-events: auto;\\n}\\n\\n#container {\\n display: inline-flex;\\n align-items: center;\\n gap: 16px;\\n min-width: 280px;\\n max-width: 560px;\\n padding: 14px 16px;\\n border-radius: 4px;\\n}\\n\\n#message {\\n flex: 1;\\n font-size: 14px;\\n line-height: 20px;\\n letter-spacing: 0.25px;\\n text-align: center;\\n}\\n\\n#container:has(#action:not(.hidden)) #message {\\n text-align: left;\\n}\\n\\n.dots-anim {\\n display: inline-block;\\n width: 1.2em;\\n overflow: hidden;\\n vertical-align: bottom;\\n text-align: left;\\n animation: dh-snackbar-dots 1.6s steps(1, end) infinite;\\n}\\n\\n@keyframes dh-snackbar-dots {\\n 0% {\\n clip-path: inset(0 100% 0 0);\\n }\\n 25% {\\n clip-path: inset(0 66% 0 0);\\n }\\n 50% {\\n clip-path: inset(0 33% 0 0);\\n }\\n 75% {\\n clip-path: inset(0 0 0 0);\\n }\\n 100% {\\n clip-path: inset(0 100% 0 0);\\n }\\n}\\n#icon {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: 18px;\\n height: 18px;\\n flex-shrink: 0;\\n}\\n\\n#action {\\n background: transparent;\\n border: none;\\n cursor: pointer;\\n padding: 6px 8px;\\n font-family: inherit;\\n font-size: 14px;\\n font-weight: 500;\\n letter-spacing: 0.1px;\\n border-radius: 4px;\\n white-space: nowrap;\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nvar __defProp$b = Object.defineProperty;\nvar __getOwnPropDesc$c = Object.getOwnPropertyDescriptor;\nvar __decorateClass$c = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$c(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$b(target, key, result);\n return result;\n};\nlet DhSnackbar = class extends LitElement {\n constructor() {\n super(...arguments);\n this.open = false;\n this.variant = \"default\";\n this.loading = false;\n this.message = \"\";\n this.actionLabel = \"\";\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-snackbar\")) {\n this.setAttribute(\"dh-snackbar\", \"\");\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.clearAutoHide();\n }\n render() {\n return html`<div id=\"container\" part=\"root\">\n <span id=\"message\" part=\"message\">\n ${this.message}<span class=\"dots-anim ${this.loading ? \"\" : \"hidden\"}\" part=\"dots\" aria-hidden=\"true\">...</span>\n </span>\n <button id=\"action\" part=\"action\" class=\"${this.actionLabel ? \"\" : \"hidden\"}\" @click=\"${this.onActionClick}\">${this.actionLabel}</button>\n </div>`;\n }\n /**\n * Displays the snackbar with the given message. Any currently open\n * snackbar is replaced immediately.\n *\n * @param message Display text.\n * @param options.variant Visual variant (default | success | error | info | loading).\n * @param options.duration Auto-dismiss in ms (default 4000, 0 = stay until hide()).\n * @param options.actionLabel Optional action-button label. Listen to the\n * `snackbarAction` event to react to clicks.\n * @param options.loading Show animated trailing dots for loading states.\n */\n show(message, options = {}) {\n this.clearAutoHide();\n this.message = message;\n this.variant = options.variant ?? \"default\";\n this.actionLabel = options.actionLabel ?? \"\";\n this.loading = options.loading ?? false;\n this.open = true;\n const duration = options.duration ?? 4e3;\n if (duration > 0) {\n this.autoHideTimer = setTimeout(() => this.hide(), duration);\n }\n }\n /**\n * Closes the snackbar (if open). Dispatches `snackbarDismissed`.\n */\n hide() {\n this.clearAutoHide();\n if (this.open) {\n this.open = false;\n this.snackbarDismissed.dispatch();\n }\n }\n clearAutoHide() {\n if (this.autoHideTimer) {\n clearTimeout(this.autoHideTimer);\n this.autoHideTimer = void 0;\n }\n }\n onActionClick() {\n this.hide();\n this.snackbarAction.dispatch();\n }\n};\nDhSnackbar.styles = css`\n ${unsafeCSS(style$c)}\n `;\n__decorateClass$c([\n property({ type: Boolean, reflect: true })\n], DhSnackbar.prototype, \"open\", 2);\n__decorateClass$c([\n property({ type: String, reflect: true })\n], DhSnackbar.prototype, \"variant\", 2);\n__decorateClass$c([\n property({ type: Boolean, reflect: true })\n], DhSnackbar.prototype, \"loading\", 2);\n__decorateClass$c([\n state()\n], DhSnackbar.prototype, \"message\", 2);\n__decorateClass$c([\n state()\n], DhSnackbar.prototype, \"actionLabel\", 2);\n__decorateClass$c([\n event({ bubbles: true, cancelable: true, composed: true }, \"snackbarAction\")\n], DhSnackbar.prototype, \"snackbarAction\", 2);\n__decorateClass$c([\n event({ bubbles: true, cancelable: true, composed: true }, \"snackbarDismissed\")\n], DhSnackbar.prototype, \"snackbarDismissed\", 2);\nDhSnackbar = __decorateClass$c([\n customElement(\"dh-snackbar\")\n], DhSnackbar);\n\nvar style$b = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n width: 100%;\\n max-width: 100%;\\n overflow: hidden;\\n position: relative;\\n}\\n\\n:host([hidden]) {\\n display: none;\\n}\\n\\n#select-container {\\n position: relative;\\n height: 100%;\\n}\\n\\n.flex-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n\\n.selected-container {\\n cursor: pointer;\\n position: relative;\\n height: 100%;\\n}\\n\\n.floating-label {\\n position: absolute;\\n left: 16px;\\n top: 50%;\\n transform: translateY(-50%);\\n font-size: 1rem;\\n pointer-events: none;\\n transition: top 200ms cubic-bezier(0.2, 0, 0, 1), transform 200ms cubic-bezier(0.2, 0, 0, 1), font-size 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n.floating-label.float {\\n top: 6px;\\n transform: translateY(0);\\n font-size: 0.75rem;\\n}\\n\\n.has-floating-label {\\n padding-top: 14px;\\n}\\n\\n#list-container {\\n position: fixed;\\n z-index: 99;\\n overflow: auto;\\n margin: 0;\\n padding: 0;\\n border: none;\\n inset: auto;\\n width: max-content;\\n}\\n\\n#option-list {\\n display: flex;\\n flex-direction: column;\\n overflow: auto;\\n max-height: 20rem;\\n}\\n\\n#option-list {\\n scrollbar-width: thin;\\n scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#option-list::-webkit-scrollbar {\\n width: var(--dh-scrollbar-width, 8px);\\n height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#option-list::-webkit-scrollbar-thumb {\\n background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#option-list::-webkit-scrollbar-thumb:hover {\\n background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#option-list::-webkit-scrollbar-track {\\n background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n.left {\\n transform: rotate(90deg);\\n}\\n\\n.arrow {\\n margin-left: 0.3rem;\\n}\\n\\n.option {\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n}\\n\\n.not-approved {\\n opacity: 0.38;\\n pointer-events: none;\\n cursor: default;\\n}\\n\\n#search-input {\\n width: 100%;\\n}\\n\\n.hidden {\\n display: none;\\n}\";\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropDesc$b = Object.getOwnPropertyDescriptor;\nvar __decorateClass$b = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$b(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$a(target, key, result);\n return result;\n};\nlet DhSelect = class extends LitElement {\n constructor() {\n super(...arguments);\n this.searchName = \"\";\n this.notSearchable = false;\n this.disabled = false;\n this.lazy = false;\n this.information = \"\";\n this.label = \"\";\n this.withoutEmptyDefault = false;\n this.autoclose = true;\n this.variant = \"outlined\";\n this.options = [];\n this.selectedOption = {\n dataId: \"empty-default\",\n showContent: \"\",\n selected: false,\n approved: true,\n suboptions: []\n };\n this.scrollableAncestors = [];\n this.handleScroll = () => {\n this.closeList();\n };\n this.handleOutsideClick = (ev) => {\n if (ev.target && ev.target instanceof HTMLElement) {\n if (!ev.composedPath().includes(this)) {\n this.closeList();\n }\n }\n };\n this.isListOpen = false;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-select\")) {\n this.setAttribute(\"dh-select\", \"\");\n }\n }\n set selectOptions(options) {\n this.options = this.validateOptions(options);\n const startOption = this.findSelectedStartOption(this.options);\n if (startOption) {\n this.selectedOption = startOption;\n } else if (this.withoutEmptyDefault && this.options.length > 0) {\n this.selectedOption = this.options[0];\n this.selectedOption.selected = true;\n } else {\n this.selectedOption = {\n dataId: \"empty-default\",\n showContent: \"\",\n selected: false,\n approved: true,\n suboptions: []\n };\n }\n }\n render() {\n const hasValue = this.selectedOption && this.selectedOption.showContent !== \"\";\n return html` <div id=\"select-container\" part=\"root\" class=\"relative\" @input=\"${this.search}\" @change=\"${this.search}\">\n <div class=\"flex-container selected-container\" part=\"trigger\" @click=\"${this.lazy ? this.clickArrow : this.openCloseList}\">\n ${this.label ? html`<div part=\"floating-label\" class=\"floating-label ${hasValue || this.isListOpen ? \"float\" : \"\"}\">${this.label}</div>` : \"\"}\n <div part=\"label\" class=\"${this.label ? \"has-floating-label\" : \"\"}\">${this.selectedOption.showContent}</div>\n <div id=\"arrow\" class=\"fv-icon-arrow-down-2 arrow left\" part=\"icon\" @click=\"${this.lazy ? this.clickArrow : this.openCloseList}\"></div>\n </div>\n <div id=\"list-container\" part=\"menu\" popover=\"manual\">\n <div class=\"${this.notSearchable ? \"hidden\" : \"\"}\" part=\"search-bar\">\n <div part=\"search-input-wrapper\">\n <div class=\"fv-icon-filter\" part=\"search-icon\"></div>\n <dh-input\n id=\"search-input\"\n exportparts=\"root: dh-input-root, input: dh-input-input\"\n part=\"input\"\n placeholder=\"${this.searchName}\"\n ></dh-input>\n </div>\n </div>\n <div id=\"option-list\" part=\"content\">\n <slot name=\"options\">\n ${!this.withoutEmptyDefault ? html`<div part=\"item\" class=\"option border size\" dataId=\"empty-default\" showContent=\"\" @click=\"${this.selectOption}\"></div>` : html``}\n ${this.options.map((option) => {\n return html` ${keyed(this.options, this.renderOptionTemplate(option))} `;\n })}\n </slot>\n </div>\n </div>\n </div>`;\n }\n getScrollableAncestors() {\n const ancestors = [window];\n let current = this;\n while (current) {\n const root = current.getRootNode();\n if (root instanceof ShadowRoot) {\n const host = root.host;\n const hostChildren = Array.from(root.querySelectorAll(\"*\"));\n for (const el of hostChildren) {\n const style2 = getComputedStyle(el);\n const oy = style2.overflowY;\n const ox = style2.overflowX;\n if (oy === \"auto\" || oy === \"scroll\" || oy === \"clip\" || ox === \"auto\" || ox === \"scroll\" || ox === \"clip\") {\n ancestors.push(el);\n }\n }\n current = host;\n } else {\n let parent = current.parentElement;\n while (parent) {\n const style2 = getComputedStyle(parent);\n const oy = style2.overflowY;\n const ox = style2.overflowX;\n if (oy === \"auto\" || oy === \"scroll\" || oy === \"clip\" || ox === \"auto\" || ox === \"scroll\" || ox === \"clip\") {\n ancestors.push(parent);\n }\n parent = parent.parentElement;\n }\n break;\n }\n }\n return ancestors;\n }\n renderOptionTemplate(option, level = 0) {\n const margin = level * 1;\n const isSelected = option.dataId == this.selectedOption.dataId;\n return html`<div\n style=\" margin-left: ${margin}rem\"\n part=\"${isSelected ? \"item selected\" : \"item\"}\"\n class=\"${option.approved ? \"option border size\" : \"option not-approved border size\"}\"\n dataId=\"${option.dataId}\"\n showContent=\"${option.showContent}\"\n ?selected=\"${isSelected}\"\n @click=\"${option.approved ? this.selectOption : \"\"}\"\n >\n ${option.showContent}\n </div>\n ${option.suboptions.map((suboption) => {\n return this.renderOptionTemplate(suboption, level + 1);\n })}`;\n }\n closeList() {\n try {\n this.listContainer.hidePopover();\n } catch {\n }\n this.isListOpen = false;\n this.removeAttribute(\"open\");\n this.arrow.classList.add(\"left\");\n if (this.searchInput) {\n this.searchInput.value = \"\";\n this.searchInput.blur();\n this.resetSearchFilter();\n }\n document.removeEventListener(\"click\", this.handleOutsideClick, true);\n for (const ancestor of this.scrollableAncestors) {\n ancestor.removeEventListener(\"scroll\", this.handleScroll);\n }\n this.scrollableAncestors = [];\n }\n resetSearchFilter() {\n let options = Array.from(this.querySelectorAll(\"div[slot=options]\"));\n if (options.length == 0) {\n options = Array.from(this.renderRoot.querySelectorAll(\"div.option\"));\n }\n options.forEach((option) => option.classList.remove(\"hidden\"));\n }\n openCloseList(event2) {\n event2?.stopPropagation();\n if (this.disabled) {\n return;\n }\n if (!this.isListOpen) {\n this.listContainer.showPopover();\n this.isListOpen = true;\n this.setAttribute(\"open\", \"\");\n const rect = this.getBoundingClientRect();\n this.listContainer.style.left = `${rect.left}px`;\n this.listContainer.style.minWidth = `${rect.width}px`;\n const menuHeight = this.listContainer.getBoundingClientRect().height;\n const spaceBelow = window.innerHeight - rect.bottom;\n if (spaceBelow < menuHeight && rect.top > spaceBelow) {\n this.listContainer.style.top = `${rect.top - menuHeight}px`;\n } else {\n this.listContainer.style.top = `${rect.bottom}px`;\n }\n this.arrow.classList.remove(\"left\");\n if (this.autoclose) {\n document.addEventListener(\"click\", this.handleOutsideClick, true);\n }\n this.scrollableAncestors = this.getScrollableAncestors();\n for (const ancestor of this.scrollableAncestors) {\n ancestor.addEventListener(\"scroll\", this.handleScroll);\n }\n } else {\n this.closeList();\n }\n }\n getSelectedOption() {\n return this.selectedOption;\n }\n setSelectedDataId(dataId) {\n this.changeSelectedOption(dataId);\n }\n selectOption(event2) {\n const target = event2.target;\n const dataId = target.getAttribute(\"dataId\");\n if (!dataId) {\n return;\n }\n if (dataId === \"empty-default\") {\n this.changeSelectedOption(dataId, true);\n } else {\n this.changeSelectedOption(dataId);\n }\n this.openCloseList(event2);\n this.changeSelectOption.dispatch({ selectedOption: this.selectedOption, dhSelect: this, information: this.information });\n }\n search(event2) {\n const searchValue = this.searchInput.getInputValue();\n let options = Array.from(this.querySelectorAll(\"div[slot=options]\"));\n if (options.length == 0) {\n options = Array.from(this.renderRoot.querySelectorAll(\"div.option\"));\n }\n options.forEach((option) => {\n const correspondsFilterRule = option.getAttribute(\"showContent\")?.toString().toLowerCase().includes(searchValue.toLowerCase());\n if (correspondsFilterRule) {\n option.classList.remove(\"hidden\");\n } else {\n option.classList.add(\"hidden\");\n }\n });\n }\n clickArrow() {\n this.lazy = false;\n this.selectArrowClick.dispatch({ information: this.information, select: this });\n }\n validateOptions(options) {\n options.forEach((option) => {\n if (option.selected == void 0) {\n option.selected = false;\n }\n if (option.approved == void 0) {\n option.approved = true;\n }\n if (option.suboptions == void 0) {\n option.suboptions = [];\n }\n option.suboptions = this.validateOptions(option.suboptions);\n });\n return options;\n }\n findSelectedStartOption(options) {\n let foundOption;\n for (const option of options) {\n if (option.selected) {\n return option;\n }\n foundOption = this.findSelectedStartOption(option.suboptions);\n if (foundOption) {\n return foundOption;\n }\n }\n }\n findOptionById(dataId, options) {\n options = options || this.options;\n let foundOption;\n for (const option of options) {\n if (option.dataId === dataId) {\n return option;\n }\n foundOption = this.findOptionById(dataId, option.suboptions);\n if (foundOption) {\n return foundOption;\n }\n }\n }\n changeSelectedOption(dataId, isEmptyDefault = false) {\n if (isEmptyDefault) {\n this.selectedOption.selected = false;\n this.selectedOption = {\n dataId: \"empty-default\",\n showContent: \"\",\n selected: false,\n approved: true,\n suboptions: []\n };\n }\n const newSelected = this.findOptionById(dataId);\n if (newSelected) {\n this.selectedOption.selected = false;\n this.selectedOption = newSelected;\n this.selectedOption.selected = true;\n }\n }\n};\nDhSelect.styles = css`\n ${unsafeCSS(style$b)}\n `;\n__decorateClass$b([\n query(\"#search-input\")\n], DhSelect.prototype, \"searchInput\", 2);\n__decorateClass$b([\n query(\"#list-container\")\n], DhSelect.prototype, \"listContainer\", 2);\n__decorateClass$b([\n query(\"#arrow\")\n], DhSelect.prototype, \"arrow\", 2);\n__decorateClass$b([\n property({ type: String })\n], DhSelect.prototype, \"searchName\", 2);\n__decorateClass$b([\n property({ type: Boolean })\n], DhSelect.prototype, \"notSearchable\", 2);\n__decorateClass$b([\n property({ type: Boolean })\n], DhSelect.prototype, \"disabled\", 2);\n__decorateClass$b([\n property({ type: Boolean })\n], DhSelect.prototype, \"lazy\", 2);\n__decorateClass$b([\n property({ type: String })\n], DhSelect.prototype, \"information\", 2);\n__decorateClass$b([\n property({ type: String, reflect: true })\n], DhSelect.prototype, \"label\", 2);\n__decorateClass$b([\n property({ type: Boolean, reflect: true })\n], DhSelect.prototype, \"withoutEmptyDefault\", 2);\n__decorateClass$b([\n property({ type: Boolean })\n], DhSelect.prototype, \"autoclose\", 2);\n__decorateClass$b([\n property({ type: String, reflect: true })\n], DhSelect.prototype, \"variant\", 2);\n__decorateClass$b([\n state()\n], DhSelect.prototype, \"options\", 2);\n__decorateClass$b([\n state()\n], DhSelect.prototype, \"selectedOption\", 2);\n__decorateClass$b([\n event({ bubbles: true, cancelable: true, composed: true }, \"changeSelectOption\")\n], DhSelect.prototype, \"changeSelectOption\", 2);\n__decorateClass$b([\n event({ bubbles: true, cancelable: true, composed: true }, \"selectArrowClick\")\n], DhSelect.prototype, \"selectArrowClick\", 2);\nDhSelect = __decorateClass$b([\n customElement(\"dh-select\")\n], DhSelect);\n\nvar style$a = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n width: 100%;\\n position: relative;\\n z-index: 1;\\n}\\n\\n#mainbar {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 16px;\\n /* Mehr horizontal padding (24px) — Toggle-Icon und Actions vom Rand absetzen */\\n padding: 0.5rem 24px;\\n width: 100%;\\n background-color: #fafafa;\\n box-shadow: 0 1px 0 0 #e0e0e0;\\n}\\n\\n#brand-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n /* Groesserer gap zwischen Toggle-Icon und Brand-Logo */\\n gap: 24px;\\n flex-shrink: 0;\\n}\\n\\n#brand-container ::slotted(svg),\\n#brand-container ::slotted(img) {\\n height: 1.5rem;\\n width: auto;\\n flex-shrink: 0;\\n}\\n\\n#brand-container ::slotted(span) {\\n font-size: 1.125rem;\\n font-weight: 500;\\n white-space: nowrap;\\n}\\n\\n#content-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 12px;\\n flex: 1;\\n min-width: 0;\\n justify-content: flex-start;\\n padding: 0.2rem;\\n}\\n\\n:host([contentalign=center]) #content-container {\\n justify-content: center;\\n}\\n\\n:host([contentalign=end]) #content-container {\\n justify-content: flex-end;\\n}\\n\\n#content-container ::slotted(*) {\\n flex-shrink: 0;\\n white-space: nowrap;\\n font-size: 0.875rem;\\n display: inline-flex;\\n align-items: center;\\n line-height: 1.25rem;\\n}\\n\\n#actions-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 8px;\\n flex-shrink: 0;\\n}\\n\\n#actions-container ::slotted(*) {\\n flex-shrink: 0;\\n}\\n\\nslot {\\n display: contents;\\n}\";\n\nvar __defProp$9 = Object.defineProperty;\nvar __getOwnPropDesc$a = Object.getOwnPropertyDescriptor;\nvar __decorateClass$a = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$a(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$9(target, key, result);\n return result;\n};\nlet DhMainbar = class extends LitElement {\n constructor() {\n super(...arguments);\n this.contentAlign = \"start\";\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-mainbar\")) {\n this.setAttribute(\"dh-mainbar\", \"\");\n }\n }\n render() {\n return html`\n <div id=\"mainbar\" part=\"root\">\n <div id=\"brand-container\" part=\"brand\">\n <slot name=\"brand\"></slot>\n </div>\n <div id=\"content-container\" part=\"content\">\n <slot name=\"content\"></slot>\n </div>\n <div id=\"actions-container\" part=\"actions\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n `;\n }\n};\nDhMainbar.styles = css`\n ${unsafeCSS(style$a)}\n `;\n__decorateClass$a([\n property({ type: String, reflect: true })\n], DhMainbar.prototype, \"contentAlign\", 2);\nDhMainbar = __decorateClass$a([\n customElement(\"dh-mainbar\")\n], DhMainbar);\n\nvar style$9 = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n text-align: center;\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n display: flex;\\n font-family: \\\"furnview-icons-simple\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n content: \\\"à \\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n font-size: var(--fv-icons-font-size, initital);\\n line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n display: flex;\\n font-family: \\\"furnview-icons-multi\\\";\\n font-style: normal;\\n font-weight: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: auto;\\n text-align: center;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n content: \\\"0\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n content: \\\";\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n content: \\\"=\\\\a;\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n content: \\\"<\\\";\\n position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n content: \\\"8\\\";\\n letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n display: flex;\\n justify-content: center;\\n position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n content: \\\":\\\\a 8\\\";\\n min-width: var(--fv-icons-multicolor-min-width, 2em);\\n min-height: var(--fv-icons-multicolor-min-height, 1em);\\n background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n content: \\\"9\\\";\\n position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n /* min-width: 0 erlaubt der Card sich auf Container-Breite zu schrumpfen.\\n * Verhindert dass slotted-Content (z.B. dh-button mit langem Text) die\\n * Card ueber Container-Grenzen aufblaeht. */\\n min-width: 0;\\n}\\n\\n#card {\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n padding: 0.5rem;\\n /* overflow: hidden cappt slotted-Content damit nichts ueber Card-Grenzen ragt */\\n overflow: hidden;\\n min-width: 0;\\n}\\n\\n#header-container {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n padding-bottom: 12px;\\n}\\n\\n:host([headeralign=center]) #header-container {\\n justify-content: center;\\n}\\n\\n:host([headeralign=end]) #header-container {\\n justify-content: flex-end;\\n}\\n\\n#header-container.empty {\\n display: none;\\n padding: 0;\\n}\\n\\n#content-container {\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n min-height: 0;\\n min-width: 0;\\n}\\n\\n:host([contentlayout=grid]) #content-container {\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n gap: var(--content-gap, 8px);\\n}\\n\\n:host([contentlayout=grid]) ::slotted([slot=content]) {\\n width: fit-content;\\n}\\n\\n#actions-container {\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n align-items: center;\\n gap: 8px;\\n padding-top: 12px;\\n}\\n\\n#actions-container.empty {\\n display: none;\\n}\\n\\nslot {\\n display: contents;\\n}\\n\\n:host([collapsible]) #header-container {\\n cursor: pointer;\\n user-select: none;\\n}\\n\\n:host([collapsible]) #chevron {\\n margin-left: auto;\\n font-size: 1rem;\\n transition: transform 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([collapsible]:not([open])) #chevron {\\n transform: rotate(-90deg);\\n}\\n\\n:host([collapsible]:not([open])) #content-container,\\n:host([collapsible]:not([open])) #actions-container {\\n display: none;\\n}\";\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$9 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$9(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$8(target, key, result);\n return result;\n};\nlet DhCard = class extends LitElement {\n constructor() {\n super(...arguments);\n this.variant = \"elevated\";\n this.contentLayout = \"list\";\n this.stretchFullWidth = false;\n this.noClickEffect = false;\n this.noHoverEffect = false;\n this.headerAlign = \"start\";\n this.headerStyle = \"plain\";\n this.collapsible = false;\n this.open = true;\n this.headerEmpty = true;\n this.actionsEmpty = true;\n this.toggleCollapse = (event2) => {\n if (!this.collapsible) {\n return;\n }\n event2.stopPropagation();\n this.open = !this.open;\n this.collapseChange.dispatch(this.open);\n };\n this.updateHeaderState = (event2) => {\n const slot = event2.target;\n this.headerEmpty = slot.assignedElements().length === 0;\n };\n this.updateActionsState = (event2) => {\n const slot = event2.target;\n this.actionsEmpty = slot.assignedElements().length === 0;\n };\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-card\")) {\n this.setAttribute(\"dh-card\", \"\");\n }\n }\n updated(changedProperties) {\n if (changedProperties.has(\"stretchFullWidth\")) {\n this.style.width = this.stretchFullWidth ? \"100%\" : \"\";\n }\n }\n render() {\n return html`\n <div id=\"card\" part=\"root\">\n <div\n id=\"header-container\"\n part=\"header\"\n class=\"${classMap({ empty: this.headerEmpty && !this.collapsible })}\"\n @click=\"${this.toggleCollapse}\"\n >\n <slot name=\"header\" @slotchange=\"${this.updateHeaderState}\"></slot>\n ${this.collapsible ? html`<div id=\"chevron\" part=\"chevron\" class=\"fv-icon-arrow-down-2\"></div>` : null}\n </div>\n <div id=\"content-container\" part=\"content\">\n <slot name=\"content\"></slot>\n </div>\n <div id=\"actions-container\" part=\"actions\" class=\"${classMap({ empty: this.actionsEmpty })}\">\n <slot name=\"actions\" @slotchange=\"${this.updateActionsState}\"></slot>\n </div>\n </div>\n `;\n }\n};\nDhCard.styles = css`\n ${unsafeCSS(style$9)}\n `;\n__decorateClass$9([\n property({ type: String, reflect: true })\n], DhCard.prototype, \"variant\", 2);\n__decorateClass$9([\n property({ type: String, reflect: true })\n], DhCard.prototype, \"contentLayout\", 2);\n__decorateClass$9([\n property({ type: Boolean })\n], DhCard.prototype, \"stretchFullWidth\", 2);\n__decorateClass$9([\n property({ type: Boolean, reflect: true, attribute: \"no-click-effect\" })\n], DhCard.prototype, \"noClickEffect\", 2);\n__decorateClass$9([\n property({ type: Boolean, reflect: true, attribute: \"no-hover-effect\" })\n], DhCard.prototype, \"noHoverEffect\", 2);\n__decorateClass$9([\n property({ type: String, reflect: true })\n], DhCard.prototype, \"headerAlign\", 2);\n__decorateClass$9([\n property({ type: String, reflect: true })\n], DhCard.prototype, \"headerStyle\", 2);\n__decorateClass$9([\n property({ type: Boolean, reflect: true })\n], DhCard.prototype, \"collapsible\", 2);\n__decorateClass$9([\n property({ type: Boolean, reflect: true })\n], DhCard.prototype, \"open\", 2);\n__decorateClass$9([\n event({ bubbles: true, cancelable: true, composed: true }, \"collapseChange\")\n], DhCard.prototype, \"collapseChange\", 2);\n__decorateClass$9([\n state()\n], DhCard.prototype, \"headerEmpty\", 2);\n__decorateClass$9([\n state()\n], DhCard.prototype, \"actionsEmpty\", 2);\nDhCard = __decorateClass$9([\n customElement(\"dh-card\")\n], DhCard);\n\nvar style$8 = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n}\\n\\n.grid-container {\\n display: grid;\\n gap: var(--grid-gap, 16px);\\n padding: var(--grid-padding, 8px);\\n align-items: start;\\n}\\n\\n.grid-container.equal-heights {\\n align-items: stretch;\\n}\\n\\n.grid-container[layout=grid] {\\n /* Modern: Spalten teilen sich gleichmaessig die Container-Breite (1fr).\\n * Cards strecken sich auf volle Breite — ergibt vorhersehbares Layout. */\\n grid-template-columns: repeat(var(--columns), 1fr);\\n}\\n\\n.grid-container[layout=grid].auto-columns {\\n display: flex;\\n flex-wrap: wrap;\\n}\\n\\n.grid-container[layout=grid].stretch-full-width {\\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\\n}\\n\\n.grid-container[layout=list] {\\n grid-template-columns: min-content;\\n}\\n\\n.grid-container[layout=list].stretch-full-width {\\n grid-template-columns: 1fr;\\n}\\n\\n::slotted(dh-card[stretchfullwidth]) {\\n grid-column: 1/-1;\\n width: 100%;\\n}\";\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$8 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$8(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$7(target, key, result);\n return result;\n};\nlet DhCardGrid = class extends LitElement {\n constructor() {\n super(...arguments);\n this.layout = \"grid\";\n this.gap = 16;\n this.minCardHeight = 200;\n this.columns = 0;\n this.stretchFullWidth = false;\n this.equalHeights = false;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-card-grid\")) {\n this.setAttribute(\"dh-card-grid\", \"\");\n }\n }\n get containerClasses() {\n const classes = [\"grid-container\"];\n if (this.stretchFullWidth) {\n classes.push(\"stretch-full-width\");\n }\n if (this.equalHeights) {\n classes.push(\"equal-heights\");\n }\n if (this.columns === 0 && !this.stretchFullWidth) {\n classes.push(\"auto-columns\");\n }\n return classes.join(\" \");\n }\n render() {\n return html`\n <div\n part=\"root\"\n class=\"${this.containerClasses}\"\n layout=\"${this.layout}\"\n style=\"\n --grid-gap: ${this.gap}px;\n --min-card-height: ${this.minCardHeight}px;\n ${this.columns > 0 ? `--columns: ${this.columns};` : \"\"}\n \"\n >\n <slot part=\"item\" name=\"item\"></slot>\n </div>\n `;\n }\n};\nDhCardGrid.styles = css`\n ${unsafeCSS(style$8)}\n `;\n__decorateClass$8([\n property({ type: String, reflect: true })\n], DhCardGrid.prototype, \"layout\", 2);\n__decorateClass$8([\n property({ type: Number })\n], DhCardGrid.prototype, \"gap\", 2);\n__decorateClass$8([\n property({ type: Number })\n], DhCardGrid.prototype, \"minCardHeight\", 2);\n__decorateClass$8([\n property({ type: Number })\n], DhCardGrid.prototype, \"columns\", 2);\n__decorateClass$8([\n property({ type: Boolean })\n], DhCardGrid.prototype, \"stretchFullWidth\", 2);\n__decorateClass$8([\n property({ type: Boolean })\n], DhCardGrid.prototype, \"equalHeights\", 2);\nDhCardGrid = __decorateClass$8([\n customElement(\"dh-card-grid\")\n], DhCardGrid);\n\nvar style$7 = \"*, *:after, *:before {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n display: block;\\n}\\n\\n#root {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n#row {\\n display: grid;\\n grid-template-columns: auto 1fr auto;\\n align-items: center;\\n gap: 1rem;\\n cursor: pointer;\\n}\\n\\n#status {\\n display: flex;\\n align-items: center;\\n}\\n\\n#content {\\n display: flex;\\n flex-direction: column;\\n min-width: 0;\\n gap: 0.125rem;\\n}\\n\\n#actions {\\n display: flex;\\n align-items: center;\\n gap: 0.25rem;\\n}\\n\\n#expanded-region {\\n display: none;\\n}\\n\\n:host([expanded]) #expanded-region {\\n display: block;\\n}\\n\\n::slotted([slot=title]) {\\n font-weight: 600;\\n font-size: 0.875rem;\\n color: var(--dh-list-item-title-color, currentColor);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n::slotted([slot=meta]) {\\n font-size: 0.75rem;\\n color: var(--dh-list-item-meta-color, currentColor);\\n line-height: 1.4;\\n /* Allow wrap so callers can fit several labeled fields at a glance.\\n * Title slot still truncates so the row height stays bounded. */\\n}\\n\\n::slotted([slot=status]) {\\n width: 0.5rem;\\n height: 0.5rem;\\n border-radius: 50%;\\n background-color: var(--dh-list-item-status-color, currentColor);\\n opacity: 0.3;\\n}\\n\\n::slotted([slot=status].active) {\\n opacity: 1;\\n}\";\n\nvar __defProp$6 = Object.defineProperty;\nvar __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$7 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$7(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$6(target, key, result);\n return result;\n};\nlet DhListItem = class extends LitElement {\n constructor() {\n super(...arguments);\n this.expanded = false;\n this.selected = false;\n }\n render() {\n return html`\n <div id=\"root\" part=\"root\">\n <div id=\"row\" part=\"row\" @click=\"${this.onRowClick}\">\n <div id=\"status\" part=\"status\">\n <slot name=\"status\"></slot>\n </div>\n <div id=\"content\" part=\"content\">\n <div id=\"title\" part=\"title\"><slot name=\"title\"></slot></div>\n <div id=\"meta\" part=\"meta\"><slot name=\"meta\"></slot></div>\n <slot></slot>\n </div>\n <div id=\"actions\" part=\"actions\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n <div id=\"expanded-region\" part=\"expanded\">\n <slot name=\"expanded\"></slot>\n </div>\n </div>\n `;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-list-item\")) {\n this.setAttribute(\"dh-list-item\", \"\");\n }\n }\n onRowClick(clickEvent) {\n const eventPath = clickEvent.composedPath();\n const isInActionsSlot = eventPath.some((element) => element?.getAttribute && element.getAttribute(\"slot\") === \"actions\");\n const isInExpandedSlot = eventPath.some((element) => element?.getAttribute && element.getAttribute(\"slot\") === \"expanded\");\n if (isInActionsSlot || isInExpandedSlot) {\n return;\n }\n this.rowClickEvent.dispatch();\n }\n};\nDhListItem.styles = css`\n ${unsafeCSS(style$7)}\n `;\n__decorateClass$7([\n property({ type: Boolean, reflect: true })\n], DhListItem.prototype, \"expanded\", 2);\n__decorateClass$7([\n property({ type: Boolean, reflect: true })\n], DhListItem.prototype, \"selected\", 2);\n__decorateClass$7([\n event({ bubbles: true, cancelable: true, composed: true }, \"rowClick\")\n], DhListItem.prototype, \"rowClickEvent\", 2);\nDhListItem = __decorateClass$7([\n customElement(\"dh-list-item\")\n], DhListItem);\n\nvar style$6 = \":host {\\n display: block;\\n}\\n\\n#root {\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\\n gap: 0.875rem;\\n}\";\n\nvar __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$6 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$6(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (decorator(result)) || result;\n return result;\n};\nlet DhFormGrid = class extends LitElement {\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-form-grid\")) {\n this.setAttribute(\"dh-form-grid\", \"\");\n }\n }\n render() {\n return html`<div id=\"root\" part=\"root\"><slot></slot></div>`;\n }\n};\nDhFormGrid.styles = css`\n ${unsafeCSS(style$6)}\n `;\nDhFormGrid = __decorateClass$6([\n customElement(\"dh-form-grid\")\n], DhFormGrid);\n\nvar style$5 = \":host {\\n display: block;\\n min-width: 0;\\n}\\n\\n:host([span=\\\"2\\\"]) {\\n grid-column: span 2;\\n}\\n\\n:host([span=\\\"3\\\"]) {\\n grid-column: span 3;\\n}\\n\\n:host([span=\\\"4\\\"]) {\\n grid-column: span 4;\\n}\\n\\n#root {\\n display: flex;\\n flex-direction: column;\\n gap: 0.25rem;\\n min-width: 0;\\n}\\n\\nlabel {\\n font-size: 0.75rem;\\n font-weight: 600;\\n text-transform: uppercase;\\n letter-spacing: 0.025em;\\n color: var(--dh-form-field-label-color, currentColor);\\n}\\n\\n#control {\\n display: flex;\\n flex-direction: column;\\n min-width: 0;\\n}\";\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$5 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$5(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$5(target, key, result);\n return result;\n};\nlet DhFormField = class extends LitElement {\n constructor() {\n super(...arguments);\n this.label = \"\";\n this.span = 1;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-form-field\")) {\n this.setAttribute(\"dh-form-field\", \"\");\n }\n }\n render() {\n return html`\n <div id=\"root\" part=\"root\">\n ${this.label ? html`<label part=\"label\">${this.label}</label>` : html`<slot name=\"label\"></slot>`}\n <div id=\"control\" part=\"control\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n};\nDhFormField.styles = css`\n ${unsafeCSS(style$5)}\n `;\n__decorateClass$5([\n property({ type: String })\n], DhFormField.prototype, \"label\", 2);\n__decorateClass$5([\n property({ type: Number, reflect: true })\n], DhFormField.prototype, \"span\", 2);\nDhFormField = __decorateClass$5([\n customElement(\"dh-form-field\")\n], DhFormField);\n\nvar style$4 = \":host {\\n display: block;\\n}\\n\\n#root {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n#header {\\n display: flex;\\n align-items: center;\\n gap: 0.5rem;\\n padding: 0 0 0.5rem;\\n margin-bottom: 0.5rem;\\n}\\n\\n#content {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n:host([divider]) {\\n border-top: 1px solid var(--md-sys-color-outline-variant, #ccc);\\n padding-top: 1rem;\\n margin-top: 1rem;\\n}\\n\\n:host([collapsible]) #header {\\n cursor: pointer;\\n}\\n\\n:host([collapsed]) #content {\\n display: none;\\n}\\n\\n#chevron {\\n margin-left: auto;\\n width: 0;\\n height: 0;\\n border-left: 5px solid transparent;\\n border-right: 5px solid transparent;\\n border-top: 6px solid currentColor;\\n transition: transform 0.15s;\\n}\\n\\n:host([collapsed]) #chevron {\\n transform: rotate(-90deg);\\n}\";\n\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$4 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$4(target, key, result);\n return result;\n};\nlet DhSection = class extends LitElement {\n constructor() {\n super(...arguments);\n this.sectionTitle = \"\";\n this.badge = \"\";\n this.divider = false;\n this.collapsible = false;\n this.collapsed = false;\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-section\")) {\n this.setAttribute(\"dh-section\", \"\");\n }\n }\n render() {\n return html`\n <div id=\"root\" part=\"root\">\n <div id=\"header\" part=\"header\" @click=\"${this.toggleCollapsed}\">\n ${this.sectionTitle ? html`<span id=\"title\" part=\"title\">${this.sectionTitle}</span>` : html`<slot name=\"title\"></slot>`}\n ${this.badge ? html`<span id=\"badge\" part=\"badge\">${this.badge}</span>` : html`<slot name=\"badge\"></slot>`}\n ${this.collapsible ? html`<span id=\"chevron\" part=\"chevron\"></span>` : null}\n </div>\n <div id=\"content\" part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n toggleCollapsed() {\n if (!this.collapsible) {\n return;\n }\n this.collapsed = !this.collapsed;\n }\n};\nDhSection.styles = css`\n ${unsafeCSS(style$4)}\n `;\n__decorateClass$4([\n property({ type: String })\n], DhSection.prototype, \"sectionTitle\", 2);\n__decorateClass$4([\n property({ type: String })\n], DhSection.prototype, \"badge\", 2);\n__decorateClass$4([\n property({ type: Boolean, reflect: true })\n], DhSection.prototype, \"divider\", 2);\n__decorateClass$4([\n property({ type: Boolean, reflect: true })\n], DhSection.prototype, \"collapsible\", 2);\n__decorateClass$4([\n property({ type: Boolean, reflect: true })\n], DhSection.prototype, \"collapsed\", 2);\nDhSection = __decorateClass$4([\n customElement(\"dh-section\")\n], DhSection);\n\nvar style$3 = \":host {\\n display: block;\\n width: 100%;\\n}\\n\\n#root {\\n display: block;\\n width: 100%;\\n}\\n\\n#textarea {\\n width: 100%;\\n min-height: 60px;\\n font: inherit;\\n resize: vertical;\\n box-sizing: border-box;\\n}\";\n\nvar __defProp$3 = Object.defineProperty;\nvar __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$3 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$3(target, key, result);\n return result;\n};\nlet DhTextarea = class extends LitElement {\n constructor() {\n super(...arguments);\n this.value = \"\";\n this.placeholder = \"\";\n this.disabled = false;\n this.readonly = false;\n this.rows = 3;\n this.onInput = (event2) => {\n event2.stopPropagation();\n const target = event2.target;\n this.value = target.value;\n this.changeEvent.dispatch(this.value);\n };\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-textarea\")) {\n this.setAttribute(\"dh-textarea\", \"\");\n }\n }\n render() {\n return html`\n <div id=\"root\" part=\"root\">\n <textarea\n id=\"textarea\"\n part=\"input\"\n rows=\"${this.rows}\"\n placeholder=\"${this.placeholder}\"\n ?disabled=\"${this.disabled}\"\n ?readonly=\"${this.readonly}\"\n .value=\"${this.value}\"\n @input=\"${this.onInput}\"\n ></textarea>\n </div>\n `;\n }\n getInputValue() {\n return this.textarea?.value ?? this.value;\n }\n setInputValue(value) {\n this.value = value;\n if (this.textarea) {\n this.textarea.value = value;\n }\n }\n};\nDhTextarea.styles = css`\n ${unsafeCSS(style$3)}\n `;\n__decorateClass$3([\n property({ type: String, reflect: true })\n], DhTextarea.prototype, \"value\", 2);\n__decorateClass$3([\n property({ type: String, reflect: true })\n], DhTextarea.prototype, \"placeholder\", 2);\n__decorateClass$3([\n property({ type: Boolean, reflect: true })\n], DhTextarea.prototype, \"disabled\", 2);\n__decorateClass$3([\n property({ type: Boolean, reflect: true })\n], DhTextarea.prototype, \"readonly\", 2);\n__decorateClass$3([\n property({ type: Number, reflect: true })\n], DhTextarea.prototype, \"rows\", 2);\n__decorateClass$3([\n query(\"#textarea\")\n], DhTextarea.prototype, \"textarea\", 2);\n__decorateClass$3([\n event({ bubbles: true, cancelable: true, composed: true }, \"isChange\")\n], DhTextarea.prototype, \"changeEvent\", 2);\nDhTextarea = __decorateClass$3([\n customElement(\"dh-textarea\")\n], DhTextarea);\n\nvar style$2 = \":host {\\n display: block;\\n width: 100%;\\n}\\n\\n#root {\\n display: flex;\\n align-items: center;\\n gap: 0.375rem;\\n}\\n\\ndh-input {\\n width: 60px;\\n flex: 0 0 auto;\\n}\\n\\n#preview {\\n width: 32px;\\n height: 32px;\\n border-radius: 4px;\\n flex-shrink: 0;\\n}\\n\\n:host([mode=extended]) {\\n width: fit-content;\\n}\\n\\n:host([mode=extended]) #root {\\n display: flex;\\n flex-direction: column;\\n align-items: stretch;\\n gap: 0.875rem;\\n}\\n\\n:host([mode=extended]) #body {\\n display: flex;\\n gap: 0.875rem;\\n align-items: stretch;\\n}\\n\\n:host([mode=extended]) #area {\\n position: relative;\\n box-sizing: border-box;\\n flex: 0 0 auto;\\n width: var(--dh-color-picker-area-width, 220px);\\n height: var(--dh-color-picker-area-height, 180px);\\n cursor: pointer;\\n touch-action: none;\\n background-image: linear-gradient(to top, #000, rgba(0, 0, 0, 0)), linear-gradient(to right, #fff, rgba(255, 255, 255, 0));\\n}\\n\\n:host([mode=extended]) #area-thumb {\\n position: absolute;\\n z-index: 1;\\n box-sizing: border-box;\\n transform: translate(-50%, -50%);\\n pointer-events: none;\\n width: var(--dh-color-picker-thumb-size, 18px);\\n height: var(--dh-color-picker-thumb-size, 18px);\\n}\\n\\n:host([mode=extended]) #hue {\\n position: relative;\\n box-sizing: border-box;\\n flex: 0 0 auto;\\n width: var(--dh-color-picker-hue-width, 14px);\\n cursor: pointer;\\n touch-action: none;\\n background: linear-gradient(to bottom, #f00 0%, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #f00 100%);\\n}\\n\\n:host([mode=extended]) #hue-thumb {\\n position: absolute;\\n box-sizing: border-box;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n pointer-events: none;\\n width: var(--dh-color-picker-hue-thumb-size, 18px);\\n height: var(--dh-color-picker-hue-thumb-size, 18px);\\n}\\n\\n:host([mode=extended]) #controls {\\n display: flex;\\n flex-direction: column;\\n gap: 0.5rem;\\n}\\n\\n:host([mode=extended]) .controls-top {\\n display: flex;\\n align-items: center;\\n gap: 0.5rem;\\n}\\n\\n:host([mode=extended]) .controls-rgb {\\n display: flex;\\n gap: 0.5rem;\\n}\\n\\n:host([mode=extended]) #preview {\\n box-sizing: border-box;\\n flex: 0 0 auto;\\n width: var(--dh-color-picker-preview-size, 36px);\\n height: var(--dh-color-picker-preview-size, 36px);\\n}\\n\\n:host([mode=extended]) .controls-rgb dh-input {\\n flex: 1 1 0;\\n min-width: 0;\\n}\\n\\n:host([mode=extended]) .controls-top dh-input {\\n flex: 1 1 auto;\\n min-width: 0;\\n}\";\n\nfunction clamp(value, min, max) {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction rgbToHsv(red, green, blue) {\n const redNorm = red / 255;\n const greenNorm = green / 255;\n const blueNorm = blue / 255;\n const max = Math.max(redNorm, greenNorm, blueNorm);\n const min = Math.min(redNorm, greenNorm, blueNorm);\n const delta = max - min;\n let hue = 0;\n if (delta !== 0) {\n if (max === redNorm) {\n hue = 60 * ((greenNorm - blueNorm) / delta % 6);\n } else if (max === greenNorm) {\n hue = 60 * ((blueNorm - redNorm) / delta + 2);\n } else {\n hue = 60 * ((redNorm - greenNorm) / delta + 4);\n }\n }\n if (hue < 0) {\n hue += 360;\n }\n const saturation = max === 0 ? 0 : delta / max;\n return { hue, saturation, value: max };\n}\nfunction hsvToRgb(hue, saturation, value) {\n const chroma = value * saturation;\n const x = chroma * (1 - Math.abs(hue / 60 % 2 - 1));\n const m = value - chroma;\n let redNorm = 0;\n let greenNorm = 0;\n let blueNorm = 0;\n if (hue < 60) {\n redNorm = chroma;\n greenNorm = x;\n } else if (hue < 120) {\n redNorm = x;\n greenNorm = chroma;\n } else if (hue < 180) {\n greenNorm = chroma;\n blueNorm = x;\n } else if (hue < 240) {\n greenNorm = x;\n blueNorm = chroma;\n } else if (hue < 300) {\n redNorm = x;\n blueNorm = chroma;\n } else {\n redNorm = chroma;\n blueNorm = x;\n }\n return {\n red: Math.round((redNorm + m) * 255),\n green: Math.round((greenNorm + m) * 255),\n blue: Math.round((blueNorm + m) * 255)\n };\n}\nfunction rgbToHex(red, green, blue) {\n const toHex = (channel) => clamp(Math.round(channel), 0, 255).toString(16).padStart(2, \"0\");\n return `#${toHex(red)}${toHex(green)}${toHex(blue)}`;\n}\nfunction parseHex(input) {\n const cleaned = input.trim().replace(/^#/, \"\");\n let hex = cleaned;\n if (/^[0-9a-fA-F]{3}$/.test(cleaned)) {\n hex = cleaned.split(\"\").map((char) => char + char).join(\"\");\n }\n if (!/^[0-9a-fA-F]{6}$/.test(hex)) {\n return null;\n }\n return {\n red: parseInt(hex.slice(0, 2), 16),\n green: parseInt(hex.slice(2, 4), 16),\n blue: parseInt(hex.slice(4, 6), 16)\n };\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$2 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$2(target, key, result);\n return result;\n};\nlet DhColorPicker = class extends LitElement {\n constructor() {\n super(...arguments);\n this.red = 0;\n this.green = 0;\n this.blue = 0;\n this.disabled = false;\n this.mode = \"preview\";\n this.hsvHue = 0;\n this.hsvSaturation = 0;\n this.hsvValue = 0;\n this.activeDrag = null;\n this.onAreaPointerDown = (pointerEvent) => {\n if (this.disabled) {\n return;\n }\n pointerEvent.preventDefault();\n this.activeDrag = \"area\";\n this.updateAreaFromPointer(pointerEvent);\n document.addEventListener(\"pointermove\", this.onPointerMove);\n document.addEventListener(\"pointerup\", this.onPointerUp);\n };\n this.onHuePointerDown = (pointerEvent) => {\n if (this.disabled) {\n return;\n }\n pointerEvent.preventDefault();\n this.activeDrag = \"hue\";\n this.updateHueFromPointer(pointerEvent);\n document.addEventListener(\"pointermove\", this.onPointerMove);\n document.addEventListener(\"pointerup\", this.onPointerUp);\n };\n this.onPointerMove = (pointerEvent) => {\n if (this.activeDrag === \"area\") {\n this.updateAreaFromPointer(pointerEvent);\n } else if (this.activeDrag === \"hue\") {\n this.updateHueFromPointer(pointerEvent);\n }\n };\n this.onPointerUp = () => {\n this.stopDrag();\n };\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-color-picker\")) {\n this.setAttribute(\"dh-color-picker\", \"\");\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.stopDrag();\n }\n // RGB ist die oeffentliche Quelle der Wahrheit. Aendert sich RGB von aussen\n // (oder durch die R/G/B-/HEX-Eingaben), wird das HSV-Modell neu abgeleitet.\n // Damit das Ziehen den Hue nicht verliert, resynchronisieren wir nur, wenn\n // das aktuelle HSV-Modell NICHT bereits genau dieses RGB erzeugt — und der\n // Hue wird bei achromatischen Farben (Schwarz/Weiss/Grau) beibehalten.\n willUpdate(changedProperties) {\n if (changedProperties.has(\"red\") || changedProperties.has(\"green\") || changedProperties.has(\"blue\")) {\n const current = hsvToRgb(this.hsvHue, this.hsvSaturation, this.hsvValue);\n if (current.red !== this.red || current.green !== this.green || current.blue !== this.blue) {\n const hsv = rgbToHsv(this.red, this.green, this.blue);\n this.hsvSaturation = hsv.saturation;\n this.hsvValue = hsv.value;\n if (hsv.saturation > 0 && hsv.value > 0) {\n this.hsvHue = hsv.hue;\n }\n }\n }\n }\n render() {\n if (this.mode === \"extended\") {\n return this.renderExtended();\n }\n return this.renderPreview();\n }\n // Unveraenderter Preview-Modus (frueher \"simple\") — gleiches Markup/Verhalten wie bisher.\n renderPreview() {\n return html`\n <div id=\"root\" part=\"root\">\n <dh-input\n id=\"red\"\n type=\"number\"\n min=\"0\"\n max=\"255\"\n value=\"${this.red}\"\n ?disabled=\"${this.disabled}\"\n @input=\"${this.onChannelInput}\"\n ></dh-input>\n <dh-input\n id=\"green\"\n type=\"number\"\n min=\"0\"\n max=\"255\"\n value=\"${this.green}\"\n ?disabled=\"${this.disabled}\"\n @input=\"${this.onChannelInput}\"\n ></dh-input>\n <dh-input\n id=\"blue\"\n type=\"number\"\n min=\"0\"\n max=\"255\"\n value=\"${this.blue}\"\n ?disabled=\"${this.disabled}\"\n @input=\"${this.onChannelInput}\"\n ></dh-input>\n <div id=\"preview\" part=\"preview\" style=\"background-color: rgb(${this.red}, ${this.green}, ${this.blue});\"></div>\n </div>\n `;\n }\n renderExtended() {\n const hex = rgbToHex(this.red, this.green, this.blue);\n const thumbTabIndex = this.disabled ? -1 : 0;\n const inputExportParts = \"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\";\n const currentColor = `rgb(${this.red}, ${this.green}, ${this.blue})`;\n const hueColor = `hsl(${this.hsvHue}, 100%, 50%)`;\n return html`\n <div id=\"root\" part=\"root\">\n <div id=\"body\" part=\"body\">\n <div id=\"area\" part=\"area\" style=\"background-color: ${hueColor};\" @pointerdown=\"${this.onAreaPointerDown}\">\n <div\n id=\"area-thumb\"\n part=\"area-thumb\"\n style=\"left: ${this.hsvSaturation * 100}%; top: ${(1 - this.hsvValue) * 100}%; background-color: ${currentColor};\"\n role=\"slider\"\n tabindex=\"${thumbTabIndex}\"\n aria-label=\"Sättigung und Helligkeit\"\n aria-valuetext=\"${hex}\"\n @keydown=\"${this.onAreaKeyDown}\"\n ></div>\n </div>\n <div id=\"hue\" part=\"hue\" @pointerdown=\"${this.onHuePointerDown}\">\n <div\n id=\"hue-thumb\"\n part=\"hue-thumb\"\n style=\"top: ${this.hsvHue / 360 * 100}%; background-color: ${hueColor};\"\n role=\"slider\"\n tabindex=\"${thumbTabIndex}\"\n aria-label=\"Farbton\"\n aria-valuemin=\"0\"\n aria-valuemax=\"360\"\n aria-valuenow=\"${Math.round(this.hsvHue)}\"\n @keydown=\"${this.onHueKeyDown}\"\n ></div>\n </div>\n </div>\n <div id=\"controls\" part=\"controls\">\n <div class=\"controls-top\">\n <div id=\"preview\" part=\"preview\" style=\"background-color: ${currentColor};\"></div>\n <dh-input\n id=\"hex\"\n class=\"hex\"\n type=\"text\"\n placeholder=\"HEX\"\n value=\"${hex}\"\n ?disabled=\"${this.disabled}\"\n exportparts=\"${inputExportParts}\"\n @input=\"${this.onHexInput}\"\n ></dh-input>\n </div>\n <div class=\"controls-rgb\">${this.renderChannelInput(\"red\", \"R\")} ${this.renderChannelInput(\"green\", \"G\")} ${this.renderChannelInput(\"blue\", \"B\")}</div>\n </div>\n </div>\n `;\n }\n renderChannelInput(channel, label) {\n const inputExportParts = \"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\";\n return html`<dh-input\n id=\"${channel}\"\n class=\"channel\"\n type=\"number\"\n min=\"0\"\n max=\"255\"\n placeholder=\"${label}\"\n value=\"${this[channel]}\"\n ?disabled=\"${this.disabled}\"\n exportparts=\"${inputExportParts}\"\n @input=\"${this.onChannelInput}\"\n ></dh-input>`;\n }\n onChannelInput(inputEvent) {\n inputEvent.stopPropagation();\n const inputElement = inputEvent.target;\n const channel = inputElement.id;\n if (channel !== \"red\" && channel !== \"green\" && channel !== \"blue\") {\n return;\n }\n const rawValue = parseInt(inputElement.value, 10);\n const clampedValue = Number.isNaN(rawValue) ? 0 : clamp(rawValue, 0, 255);\n this[channel] = clampedValue;\n this.colorChange.dispatch({ red: this.red, green: this.green, blue: this.blue });\n }\n onHexInput(inputEvent) {\n inputEvent.stopPropagation();\n const inputElement = inputEvent.target;\n const parsed = parseHex(inputElement.value);\n if (!parsed) {\n return;\n }\n this.red = parsed.red;\n this.green = parsed.green;\n this.blue = parsed.blue;\n this.colorChange.dispatch({ red: this.red, green: this.green, blue: this.blue });\n }\n stopDrag() {\n this.activeDrag = null;\n document.removeEventListener(\"pointermove\", this.onPointerMove);\n document.removeEventListener(\"pointerup\", this.onPointerUp);\n }\n updateAreaFromPointer(pointerEvent) {\n if (!this.areaElement) {\n return;\n }\n const rect = this.areaElement.getBoundingClientRect();\n this.hsvSaturation = clamp((pointerEvent.clientX - rect.left) / rect.width, 0, 1);\n this.hsvValue = 1 - clamp((pointerEvent.clientY - rect.top) / rect.height, 0, 1);\n this.commitHsv();\n }\n updateHueFromPointer(pointerEvent) {\n if (!this.hueElement) {\n return;\n }\n const rect = this.hueElement.getBoundingClientRect();\n this.hsvHue = clamp((pointerEvent.clientY - rect.top) / rect.height, 0, 1) * 360;\n this.commitHsv();\n }\n onAreaKeyDown(keyboardEvent) {\n if (this.disabled) {\n return;\n }\n const step = keyboardEvent.shiftKey ? 0.1 : 0.01;\n let handled = true;\n switch (keyboardEvent.key) {\n case \"ArrowLeft\":\n this.hsvSaturation = clamp(this.hsvSaturation - step, 0, 1);\n break;\n case \"ArrowRight\":\n this.hsvSaturation = clamp(this.hsvSaturation + step, 0, 1);\n break;\n case \"ArrowUp\":\n this.hsvValue = clamp(this.hsvValue + step, 0, 1);\n break;\n case \"ArrowDown\":\n this.hsvValue = clamp(this.hsvValue - step, 0, 1);\n break;\n default:\n handled = false;\n }\n if (handled) {\n keyboardEvent.preventDefault();\n this.commitHsv();\n }\n }\n onHueKeyDown(keyboardEvent) {\n if (this.disabled) {\n return;\n }\n const step = keyboardEvent.shiftKey ? 10 : 1;\n let handled = true;\n switch (keyboardEvent.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.hsvHue = clamp(this.hsvHue - step, 0, 360);\n break;\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.hsvHue = clamp(this.hsvHue + step, 0, 360);\n break;\n default:\n handled = false;\n }\n if (handled) {\n keyboardEvent.preventDefault();\n this.commitHsv();\n }\n }\n commitHsv() {\n const rgb = hsvToRgb(this.hsvHue, this.hsvSaturation, this.hsvValue);\n this.red = rgb.red;\n this.green = rgb.green;\n this.blue = rgb.blue;\n this.colorChange.dispatch({ red: this.red, green: this.green, blue: this.blue });\n }\n};\nDhColorPicker.styles = css`\n ${unsafeCSS(style$2)}\n `;\n__decorateClass$2([\n property({ type: Number, reflect: true })\n], DhColorPicker.prototype, \"red\", 2);\n__decorateClass$2([\n property({ type: Number, reflect: true })\n], DhColorPicker.prototype, \"green\", 2);\n__decorateClass$2([\n property({ type: Number, reflect: true })\n], DhColorPicker.prototype, \"blue\", 2);\n__decorateClass$2([\n property({ type: Boolean, reflect: true })\n], DhColorPicker.prototype, \"disabled\", 2);\n__decorateClass$2([\n property({ type: String, reflect: true })\n], DhColorPicker.prototype, \"mode\", 2);\n__decorateClass$2([\n state()\n], DhColorPicker.prototype, \"hsvHue\", 2);\n__decorateClass$2([\n state()\n], DhColorPicker.prototype, \"hsvSaturation\", 2);\n__decorateClass$2([\n state()\n], DhColorPicker.prototype, \"hsvValue\", 2);\n__decorateClass$2([\n query(\"#area\")\n], DhColorPicker.prototype, \"areaElement\", 2);\n__decorateClass$2([\n query(\"#hue\")\n], DhColorPicker.prototype, \"hueElement\", 2);\n__decorateClass$2([\n event({ bubbles: true, cancelable: true, composed: true }, \"colorChange\")\n], DhColorPicker.prototype, \"colorChange\", 2);\nDhColorPicker = __decorateClass$2([\n customElement(\"dh-color-picker\")\n], DhColorPicker);\n\nvar style$1 = \".cross-x {\\n position: relative;\\n width: 60px;\\n height: 60px;\\n transition: 0.5s;\\n cursor: pointer;\\n}\\n.cross-x .line {\\n position: absolute;\\n height: 8px;\\n width: 60px;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n background-color: currentColor;\\n transition: 0.5s;\\n}\\n.cross-x .line-1 {\\n transform: translate(-50%, calc(-50% - 20px));\\n}\\n.cross-x .line-2 {\\n transform: translate(-50%, -50%);\\n}\\n.cross-x .line-3 {\\n transform: translate(-50%, calc(-50% + 20px));\\n}\\n.cross-x.open .line-2 {\\n opacity: 0;\\n}\\n.cross-x.open .line-1 {\\n transform: translate(-50%, -50%) rotate(45deg) scaleX(1.25);\\n}\\n.cross-x.open .line-3 {\\n transform: translate(-50%, -50%) rotate(-45deg) scaleX(1.25);\\n}\\n\\n.arrow-left {\\n position: relative;\\n width: 60px;\\n height: 60px;\\n transition: 0.5s;\\n cursor: pointer;\\n}\\n.arrow-left .line {\\n position: absolute;\\n height: 8px;\\n width: 60px;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n background-color: currentColor;\\n transition: 0.5s;\\n}\\n.arrow-left .line-1 {\\n transform: translate(-50%, calc(-50% - 20px));\\n}\\n.arrow-left .line-2 {\\n transform: translate(-50%, -50%);\\n}\\n.arrow-left .line-3 {\\n transform: translate(-50%, calc(-50% + 20px));\\n}\\n.arrow-left.open .line-1 {\\n transform: translate(-50%, -50%) rotate(-45deg) scaleX(0.75) translate(-2px, -20px);\\n}\\n.arrow-left.open .line-3 {\\n transform: translate(-50%, -50%) rotate(45deg) scaleX(0.75) translate(-2px, 20px);\\n}\\n\\n.arrow-right {\\n position: relative;\\n width: 60px;\\n height: 60px;\\n transition: 0.5s;\\n cursor: pointer;\\n}\\n.arrow-right .line {\\n position: absolute;\\n height: 8px;\\n width: 60px;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n background-color: currentColor;\\n transition: 0.5s;\\n}\\n.arrow-right .line-1 {\\n transform: translate(-50%, calc(-50% - 20px));\\n}\\n.arrow-right .line-2 {\\n transform: translate(-50%, -50%);\\n}\\n.arrow-right .line-3 {\\n transform: translate(-50%, calc(-50% + 20px));\\n}\\n.arrow-right.open .line-1 {\\n transform: translate(-50%, -50%) rotate(45deg) scaleX(0.75) translate(2px, -20px);\\n}\\n.arrow-right.open .line-3 {\\n transform: translate(-50%, -50%) rotate(-45deg) scaleX(0.75) translate(2px, 20px);\\n}\\n\\n.arrow-spin-left {\\n position: relative;\\n width: 60px;\\n height: 60px;\\n transition: 0.5s;\\n cursor: pointer;\\n}\\n.arrow-spin-left .line {\\n position: absolute;\\n height: 8px;\\n width: 60px;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n background-color: currentColor;\\n transition: 0.5s;\\n}\\n.arrow-spin-left .line-1 {\\n transform: translate(-50%, calc(-50% - 20px));\\n}\\n.arrow-spin-left .line-2 {\\n transform: translate(-50%, -50%);\\n}\\n.arrow-spin-left .line-3 {\\n transform: translate(-50%, calc(-50% + 20px));\\n}\\n.arrow-spin-left.open {\\n transition-duration: 0.5s;\\n transform: rotateZ(180deg);\\n}\\n.arrow-spin-left.open .line-1 {\\n transform: translate(-50%, -50%) rotate(45deg) scaleX(0.75) translate(2px, -20px);\\n}\\n.arrow-spin-left.open .line-3 {\\n transform: translate(-50%, -50%) rotate(-45deg) scaleX(0.75) translate(2px, 20px);\\n}\\n\\n.arrow-spin-right {\\n position: relative;\\n width: 60px;\\n height: 60px;\\n transition: 0.5s;\\n cursor: pointer;\\n}\\n.arrow-spin-right .line {\\n position: absolute;\\n height: 8px;\\n width: 60px;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n background-color: currentColor;\\n transition: 0.5s;\\n}\\n.arrow-spin-right .line-1 {\\n transform: translate(-50%, calc(-50% - 20px));\\n}\\n.arrow-spin-right .line-2 {\\n transform: translate(-50%, -50%);\\n}\\n.arrow-spin-right .line-3 {\\n transform: translate(-50%, calc(-50% + 20px));\\n}\\n.arrow-spin-right.open {\\n transition-duration: 0.5s;\\n transform: rotateZ(180deg);\\n}\\n.arrow-spin-right.open .line-1 {\\n transform: translate(-50%, -50%) rotate(-45deg) scaleX(0.75) translate(-2px, -20px);\\n}\\n.arrow-spin-right.open .line-3 {\\n transform: translate(-50%, -50%) rotate(45deg) scaleX(0.75) translate(-2px, 20px);\\n}\\n\\n:host {\\n display: flex;\\n}\";\n\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$1 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp$1(target, key, result);\n return result;\n};\nlet DhSidebarButton = class extends LitElement {\n constructor() {\n super(...arguments);\n this.open = false;\n this.btnVariant = \"cross-x\";\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-sidebar-button\")) {\n this.setAttribute(\"dh-sidebar-button\", \"\");\n }\n }\n toggle() {\n this.open = !this.open;\n this.sidebarBtnOpen.dispatch({ open: this.open });\n }\n render() {\n const btnCo = {\n open: this.open\n };\n btnCo[this.btnVariant] = true;\n return html`\n <div class=\"${classMap(btnCo)}\" part=\"root\" @click=\"${this.toggle}\">\n <div class=\"line line-1\" part=\"icon\"></div>\n <div class=\"line line-2\" part=\"icon\"></div>\n <div class=\"line line-3\" part=\"icon\"></div>\n </div>\n `;\n }\n};\nDhSidebarButton.styles = css`\n ${unsafeCSS(style$1)},\n `;\n__decorateClass$1([\n property({ type: Boolean, attribute: \"open\", reflect: true })\n], DhSidebarButton.prototype, \"open\", 2);\n__decorateClass$1([\n property({ type: String, attribute: \"button-variant\", reflect: true })\n], DhSidebarButton.prototype, \"btnVariant\", 2);\n__decorateClass$1([\n event({ bubbles: true, cancelable: true, composed: true }, \"sidebarBtnOpen\")\n], DhSidebarButton.prototype, \"sidebarBtnOpen\", 2);\nDhSidebarButton = __decorateClass$1([\n customElement(\"dh-sidebar-button\")\n], DhSidebarButton);\n\nvar style = \":host {\\n display: block;\\n}\";\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\nlet DhSidebar = class extends LitElement {\n constructor() {\n super(...arguments);\n this.open = false;\n this.btnVariant = \"cross-x\";\n }\n connectedCallback() {\n super.connectedCallback();\n if (!this.hasAttribute(\"dh-sidebar\")) {\n this.setAttribute(\"dh-sidebar\", \"\");\n }\n }\n toggleSidebar() {\n this.open = !this.open;\n if (this.open) {\n this.menuContainer.classList.remove(\"hidden\");\n } else {\n this.menuContainer.classList.add(\"hidden\");\n }\n this.sidebarOpen.dispatch({ open: this.open });\n }\n render() {\n return html`\n <div part=\"trigger\">\n <dh-sidebar-button\n ?open=\"${this.open}\"\n button-variant=\"${this.btnVariant}\"\n @click=\"${this.toggleSidebar}\"\n exportparts=\"root: trigger-root, icon: trigger-icon\"\n ></dh-sidebar-button>\n </div>\n <div id=\"menu-container\" part=\"content\" class=\"hidden\">\n <slot name=\"menu-slot\"></slot>\n </div>\n `;\n }\n};\nDhSidebar.styles = css`\n ${unsafeCSS(style)}\n `;\n__decorateClass([\n property({ type: Boolean, attribute: \"open\", reflect: true })\n], DhSidebar.prototype, \"open\", 2);\n__decorateClass([\n property({ type: String, attribute: \"button-variant\", reflect: true })\n], DhSidebar.prototype, \"btnVariant\", 2);\n__decorateClass([\n query(\"#menu-container\")\n], DhSidebar.prototype, \"menuContainer\", 2);\n__decorateClass([\n event({ bubbles: true, cancelable: true, composed: true }, \"sidebarOpen\")\n], DhSidebar.prototype, \"sidebarOpen\", 2);\nDhSidebar = __decorateClass([\n customElement(\"dh-sidebar\")\n], DhSidebar);\n\nfunction convertCsvToArray(csv, valueSeparator) {\n let rowStrings = csv.split(\"\\r\\n\");\n if (rowStrings.length <= 1) {\n rowStrings = csv.split(\"\\r\");\n if (rowStrings.length <= 1) {\n rowStrings = csv.split(\"\\n\");\n }\n }\n const rowArrays = [];\n rowStrings.forEach((rowString) => {\n const cleanRow = parseCSVLine(rowString);\n if (cleanRow?.length > 0) {\n rowArrays.push(cleanRow);\n }\n });\n const headerRow = rowArrays[0];\n const cleanHeaderRow = [];\n headerRow.forEach((header) => {\n if (header) {\n cleanHeaderRow.push(header);\n }\n });\n const rows = rowArrays.slice(1, rowArrays.length);\n rows.forEach((row) => {\n row.splice(cleanHeaderRow.length, row.length - 1);\n });\n return { header: cleanHeaderRow, rows };\n}\nfunction parseCSVLine(line) {\n const result = [];\n const regex = /(?:^|;)(?:\"((?:[^\"]|\"\")*)\"|([^\";]*))/g;\n let match;\n let lastIndex = 0;\n if (line.length <= 0) {\n return [];\n }\n while ((match = regex.exec(line)) !== null) {\n if (match[1] !== void 0) {\n result.push(match[1].replace(/\"\"/g, '\"'));\n } else {\n result.push(match[2]);\n }\n lastIndex = regex.lastIndex;\n }\n if (lastIndex < line.length || line.endsWith(\";\")) {\n result.push(\"\");\n }\n return result;\n}\n\ninjectStylesheets(true);\n\nexport { DhButton, DhCard, DhCardGrid, DhCheckbox, DhColorPicker, DhDimmer, DhFormField, DhFormGrid, DhGridItem, DhInfobox, DhInfoboxController, DhInput, DhListItem, DhMainbar, DhMergeDialog, DhMergeDialogPage, DhMovableWindow, DhMultiSelectbox, DhMultiSelectboxItem, DhProgressAnimation, DhRadio, DhSection, DhSelect, DhSettingItem, DhSettingsGrid, DhSidebar, DhSidebarButton, DhSnackbar, DhTab, DhTable, DhTableBodyCell, DhTableBodyCellOld, DhTableHeadCell, DhTableHeadCellOld, DhTableOld, DhTableRow, DhTableRowOld, DhTextarea, DhTree, DhTreeItem, DhWindow, TableRowArray, clamp, convertCsvToArray, findClosestElement, hsvToRgb, parseHex, rgbToHex, rgbToHsv };\n","let isProduction = true;\ntry {\n isProduction = process.env.NODE_ENV === \"production\";\n} catch {\n}\n\nexport { isProduction };\n","import { isProduction } from \"@dh-software/env\";\n\nif (isProduction) {\n console.log = () => { /* silenced */ };\n console.debug = () => { /* silenced */ };\n console.info = () => { /* silenced */ };\n}\n","import {FetchResult} from \"../models/card-container\";\nimport {AsyncBaseElement, FetchParameters} from \"../components/standard/base/async.base.component\";\nimport {LitElement} from \"lit\";\nimport {BaseElement, DhElement, IBaseElement} from \"../components/standard/base/base.component\";\n\nexport interface ComponentServiceSearchParams {\n tag: string,\n query?: string\n}\n\nclass ComponentServiceClass<T extends DhElement> {\n private readonly _components: Map<string, Array<T>>;\n\n constructor() {\n this._components = new Map<string, Array<T>>();\n }\n\n private get(tagName: string): Array<T> {\n const result = this._components.get(tagName.toUpperCase()) as T[];\n return result !== undefined ? result : new Array<T>();\n }\n\n private valid(element: LitElement, query: string): boolean {\n return element && element.matches(query);\n }\n\n private isElement(target_: HTMLElement): boolean {\n for (const [key, value] of this._components) {\n for (const element of value) {\n if (element == target_) {\n return true;\n }\n }\n }\n return false;\n }\n\n register(component: T) {\n let elements = this.get(component.tagName);\n if (elements == undefined) {\n elements = new Array<T>();\n }\n if (elements.includes(component) == false) {\n elements.push(component);\n }\n this._components.set(component.tagName.toUpperCase(), elements);\n }\n\n findAll(tagName: string, query = \"\"): Array<T> {\n const elements = this.get(tagName);\n if (query.length < 1) {\n return elements;\n }\n\n const result = new Array<T>();\n elements.forEach((element: T) => {\n if (this.valid(element, query)) result.push(element);\n });\n return result;\n }\n\n find<K extends T = T>(tagName: string, query = \"\"): K | undefined {\n const elements = this.get(tagName);\n if (query.length < 1 && elements.length > 0) {\n return elements[0] as K;\n }\n return elements.find((element: T) => {\n if (element && element.matches(query)) {\n return true;\n }\n return false;\n }) as K;\n }\n\n findScrollableParent(element: HTMLElement | null): HTMLElement | undefined {\n if (element == null) return undefined;\n\n const computedStyle = getComputedStyle(element);\n const overflow: string = computedStyle.getPropertyValue(\"overflow\");\n\n // An element whose overflow is \"visible\" (the default) never establishes a scroll\n // container — its content simply spills out, so scrollHeight > clientHeight does NOT mean\n // the user can scroll it. Excluding \"visible\" here stops false positives such as\n // fv-flex-container.article-selection (overflow: visible) being mistaken for the real\n // scroll container (fv-scroll-aware-container, overflow: auto) that wraps it.\n if ((element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth)\n && !overflow.includes(\"hidden\") && !overflow.includes(\"visible\")) {\n return element;\n }\n\n if (overflow.includes(\"auto\") || overflow.includes(\"scroll\")) {\n return element;\n }\n\n const parent = this.getParent(element);\n if (parent) {\n return this.findScrollableParent(parent);\n }\n return undefined;\n }\n\n getParent(element: HTMLElement | undefined): HTMLElement | undefined {\n if (element == undefined) return undefined;\n\n if (element.assignedSlot) {\n return this.getParent(element.assignedSlot);\n }\n if (element.parentElement) {\n return element.parentElement as HTMLElement;\n }\n const shadowRoot = element.getRootNode() as ShadowRoot;\n if (shadowRoot && shadowRoot.host) {\n return shadowRoot.host as HTMLElement;\n }\n return undefined;\n }\n\n getParentComponent(element: HTMLElement | undefined): T | undefined {\n const parent = this.getParent(element);\n if (parent == undefined) return undefined;\n if (this.isElement(parent)) return parent as T;\n return this.getParentComponent(parent);\n }\n\n isPartOfHiddenSubtree(element: T | undefined): boolean {\n if (element == undefined) return false;\n if (element.hideElement) return true;\n return this.isPartOfHiddenSubtree(this.getParentComponent(element));\n }\n\n doActionRecursiveOnChildren(element: T | HTMLElement | Element, action: (child: LitElement) => void) {\n for (let index = 0; index < element.children.length; ++index) {\n const child = element.children.item(index);\n if (child) {\n if (child instanceof LitElement) {\n action(child);\n }\n this.doActionRecursiveOnChildren(child, action);\n }\n }\n if (element instanceof LitElement) {\n if (element.renderRoot && element.renderRoot.children) {\n for (let index = 0; index < element.renderRoot.children.length; ++index) {\n const child = element.renderRoot.children.item(index);\n if (child) {\n if (child instanceof LitElement) {\n action(child);\n }\n this.doActionRecursiveOnChildren(child as HTMLElement, action);\n }\n }\n }\n }\n }\n\n getParentShadowRoot(startElement: Element, targetTagName: string) {\n let currentElement = startElement;\n while (currentElement) {\n if (currentElement.tagName === targetTagName.toUpperCase()) {\n return currentElement.shadowRoot;\n }\n const root = currentElement.getRootNode();\n if (root instanceof ShadowRoot) {\n currentElement = root.host;\n } else {\n currentElement = <Element>currentElement.parentElement;\n }\n }\n return null;\n }\n\n async waitForAllChildren(element: AsyncBaseElement<FetchParameters, FetchResult> | T | HTMLElement | Element): Promise<void> {\n if ((element as AsyncBaseElement<FetchParameters, FetchResult>).CheckFetchPromise) {\n await (element as AsyncBaseElement<FetchParameters, FetchResult>).CheckFetchPromise();\n }\n if ((element as LitElement).updateComplete) {\n await (element as LitElement).updateComplete;\n }\n\n for (let index = 0; index < element.children.length; ++index) {\n const child = element.children.item(index);\n if (child) {\n await this.waitForAllChildren(child);\n }\n }\n if (element instanceof LitElement) {\n if (element.renderRoot && element.renderRoot.children) {\n for (let index = 0; index < element.renderRoot.children.length; ++index) {\n const child = element.renderRoot.children.item(index);\n if (child) {\n await this.waitForAllChildren(child);\n }\n }\n }\n }\n }\n}\n\nexport const ComponentService = new ComponentServiceClass();\n","import { LitElement } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { Constructor } from \"./mixin\";\n\nexport interface HideStateUpdatedEventData {\n value: boolean,\n \"parent-state-changed\": boolean\n}\nexport class HideStateUpdatedEvent extends CustomEvent<HideStateUpdatedEventData> {\n constructor(data_: HideStateUpdatedEventData) {\n super(\"hide-state-updated-event\", { detail: data_, bubbles: false });\n }\n}\nexport type HideStateUpdatedEventInit = CustomEventInit<HideStateUpdatedEventData>;\n\nexport type HideableElement = {\n hideElement: boolean;\n hiddenClasses: string[];\n dispatchHideStateUpdatedEvent(): void;\n addHideStateUpdatedEventListener(event: (value: boolean, parentStateChanged: boolean) => void): () => void; //PH [2026|May|06] - added option to unsibscribe event\n anyHiddenClassInArray(toCheck: string[]): boolean;\n};\n\nexport const HideMixin = <T extends Constructor<LitElement>>(Base: T): T & Constructor<HideableElement> => {\n class HideMixinClass extends Base implements HideableElement {\n @property({ type: Boolean, reflect: true, attribute: 'hide-element' })\n public hideElement = false;\n\n @property({ type: Array, reflect: true, attribute: 'hidden-classes' })\n public hiddenClasses: string[] = ['hidden'];\n\n public dispatchHideStateUpdatedEvent(): void {\n this.dispatchEvent(\n new HideStateUpdatedEvent({\n value: this.hideElement,\n 'parent-state-changed': false\n })\n );\n\n HideMixinClass.dispatchEventRecursiveToChildren(this, new HideStateUpdatedEvent({\n value: this.hideElement,\n 'parent-state-changed': true\n }));\n }\n\n public addHideStateUpdatedEventListener(callback: (value: boolean, parentStateChanged: boolean) => void): () => void {\n const listener = (e: HideStateUpdatedEventInit) => {\n if (e.detail?.value !== undefined && e.detail['parent-state-changed'] !== undefined) {\n callback(e.detail.value, e.detail['parent-state-changed']);\n }\n };\n this.addEventListener('hide-state-updated-event', listener as EventListener);\n return () => this.removeEventListener('hide-state-updated-event', listener as EventListener);\n }\n\n public anyHiddenClassInArray(toCheck: string[]): boolean {\n return this.hiddenClasses.some(cls => toCheck.includes(cls));\n }\n\n public connectedCallback(): void {\n super.connectedCallback?.();\n const hasHiddenClass = this.hiddenClasses.some(cls => this.classList.contains(cls));\n if (hasHiddenClass) {\n this.hideElement = true;\n }\n }\n\n public attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void {\n super.attributeChangedCallback?.(name, oldVal, newVal);\n\n if (name === 'hidden-classes') {\n if (oldVal != null) {\n const oldClasses = JSON.parse(oldVal);\n this.classList.remove(...oldClasses);\n if (this.hideElement) {\n this.classList.add(...this.hiddenClasses);\n }\n }\n }\n\n if (name === 'hide-element') {\n if (this.hideElement) {\n this.classList.add(...this.hiddenClasses);\n this.ariaHidden = 'true';\n } else {\n this.classList.remove(...this.hiddenClasses);\n // this.inert = false;\n this.ariaHidden = null;\n }\n\n this.dispatchHideStateUpdatedEvent();\n }\n if (name === \"hide-element\") {\n if (this.hideElement) {\n this.ariaHidden = \"true\";\n } else {\n this.ariaHidden = null;\n }\n }\n }\n\n\n protected static dispatchEventRecursiveToChildren(element: HTMLElement, event: HideStateUpdatedEvent): void {\n ComponentService.doActionRecursiveOnChildren(element, child => {\n child.dispatchEvent(event);\n });\n }\n }\n\n return HideMixinClass as T & Constructor<HideableElement>;\n};\nexport const HideBaseElement = HideMixin(LitElement);\n","import { ComponentServiceSearchParams } from \"../../utils/component.service\";\n\ndeclare global {\n export interface ComponentStates {}\n}\n\nexport interface StateEventTarget extends ComponentServiceSearchParams {\n all?: boolean;\n}\n\nexport interface DispatchStatePayload<K extends keyof ComponentStates = keyof ComponentStates> {\n state: K;\n data: ComponentStates[K];\n target?: StateEventTarget;\n}\n\nexport type ComponentStateKey = keyof ComponentStates;\n\nexport interface ComponentStateEventDetail<K extends ComponentStateKey> {\n state: K;\n data: ComponentStates[K];\n}\n\nexport interface ComponentStateEventInit<K extends ComponentStateKey> extends CustomEventInit {\n detail?: ComponentStateEventDetail<K>;\n}\n\nexport class ComponentStateEvent<K extends ComponentStateKey> extends CustomEvent<ComponentStateEventDetail<K>> {\n private readonly _pending: Promise<unknown>[] = [];\n\n constructor(state: K, data: ComponentStates[K]) {\n super(state as string, { detail: { state, data }, bubbles: false });\n }\n\n /** Register async work to be awaited by the dispatcher (ExtendableEvent-style). */\n public waitUntil(p: Promise<unknown> | void | undefined): void {\n if (p && typeof (p as Promise<unknown>).then === \"function\") {\n this._pending.push(p as Promise<unknown>);\n }\n }\n\n /** Settle all registered work. Never rejects (mirrors EventService.emitAsync). */\n public whenSettled(): Promise<unknown> {\n if (this._pending.length === 0) return Promise.resolve();\n return Promise.allSettled(this._pending);\n }\n}\n\nexport type ComponentStateHandler<K extends ComponentStateKey> =\n (data: ComponentStates[K]) => void | Promise<void>;\n\nexport type ComponentStateHandlerMap = {\n [K in ComponentStateKey]?: ComponentStateHandler<K>;\n};\n","import type { FormElementInfo, FormElementsWrapper } from \"../components/configurator/configurator.form.base\";\nimport {\n ConfiguratorApiService,\n EventService,\n WebViewerService\n} from \"@dh-software/webui-api\";\nimport {\n IConfiguratorApiData,\n IConfiguratorApiDataGroup,\n IConfiguratorApiDataGroupParams,\n IConfiguratorApiDataInfoList,\n IConfiguratorApiDataValue,\n IConfiguratorApiValueModificationGroup\n} from \"@dh-software/webui-types\";\n\n\nexport class FormElementCounterStack {\n private _counters: number[] = [];\n private _maxIncrements = 0;\n\n constructor(counters: number, maxIncrements: number) {\n this._maxIncrements = maxIncrements;\n if (typeof this._maxIncrements !== \"number\" || this._maxIncrements <= 0 || Math.floor(this._maxIncrements) !== this._maxIncrements) {\n this._maxIncrements = 10;\n }\n if (typeof counters !== \"number\" || counters < 0) {\n counters = 0;\n }\n for (var i = 0; i < counters; i++) {\n this._counters.push(0);\n }\n }\n\n public increment() {\n if (this.size === 0) {\n return false; // nothing to increment\n }\n\n var i;\n var carry = 1;\n\n // Loop from the rightmost (least significant) counter to the leftmost (most significant)\n for (i = this.size - 1; i >= 0 && carry > 0; i--) {\n this._counters[i] += carry;\n\n if (this._counters[i] >= this._maxIncrements) {\n this._counters[i] -= this._maxIncrements;\n carry = 1;\n } else {\n carry = 0; // No carry needed from this position, so stop propagating\n }\n }\n\n // If after the loop, 'carry' is still 1, it means the most significant counter overflowed.\n // We need to add a new counter at the beginning (most significant position).\n if (carry > 0) {\n for (i = 0; i < this.size; i++) {\n this._counters[i] = 0;\n }\n return false; // return false since increment failed and it overflowed\n }\n return true; // return true since increment completed sucessfully\n }\n\n public get(index_: number): number | undefined {\n if (index_ > this.size) {\n return undefined;\n }\n return this._counters[index_];\n }\n public getAll(): string {\n return JSON.stringify(this._counters);\n }\n\n public get size(): number {\n return this._counters.length;\n }\n public get empty(): boolean {\n return this.size < 1;\n }\n\n public accumulateAfterIndex(index_: number): number {\n let result = 0;\n for (let index = index_; index < this.size; ++index) {\n const counterValue = this.get(index);\n if (counterValue != undefined) {\n result += counterValue;\n }\n }\n return result;\n }\n\n public get fullLoopCount(): number {\n if (this.empty) {\n return 1;// just loop once if nothing to count\n }\n return Math.pow(this._maxIncrements, this.size);\n }\n}\n\nexport interface IConfiguratorApiFetchEventData {\n promise: Promise<IConfiguratorApiData>\n}\n\nclass ConfiguratorApiDataServiceClass {\n // EventFactoryService → ConfiguratorFormBase.Refresh hookups moved to\n // configurator.form.base.ts to avoid the service ↔ component cycle.\n\n private _data: IConfiguratorApiData = {};\n private _groups: string[] = [];\n\n private _dataRequestStateHolder: Promise<IConfiguratorApiData> | undefined = undefined;// seperate variable to toggle between promise and undefined to ensure DataPromise getter always returns the last request in case its data gets used somewhere\n private _dataRequest: Promise<IConfiguratorApiData> | undefined = undefined;\n public async Fetch(preventRefresh_?: boolean, preventRegenAll_?: boolean): Promise<IConfiguratorApiData> {\n await WebViewerService.IsAppReady;\n\n if (this._dataRequestStateHolder != undefined) {\n return await this._dataRequestStateHolder;\n }\n this._dataRequest = ConfiguratorApiService.GetApiData(preventRefresh_, preventRegenAll_);// store request in case of multiple Fetch Calls!\n this._dataRequestStateHolder = this._dataRequest;\n this._data = await this._dataRequest;\n this._dataRequestStateHolder = undefined;\n return this._data;\n }\n\n public get DataPromise(): Promise<any> {\n if (this._dataRequest == undefined) {\n return Promise.resolve(this.Data);\n }\n return this._dataRequest;\n }\n\n public get Data() {\n return this._data;\n }\n public set Data(data_: IConfiguratorApiData) {\n this._data = data_;\n }\n\n public get Groups() {\n this._groups = Object.keys(this._data);\n return this._groups;\n }\n\n public get Valid(): boolean {\n return !(this.Data == undefined || this.Groups.length < 1);\n }\n\n public GetGroup(group_: string, data_: IConfiguratorApiDataGroup | IConfiguratorApiData, groupReference_?: string): IConfiguratorApiDataGroup | { type: \"\" } {\n if (groupReference_ != undefined && groupReference_ != \"\" && group_ != groupReference_) {\n const levels = groupReference_.split(\"#\");\n let _parentGroup: IConfiguratorApiData | IConfiguratorApiDataGroup = data_;\n for (const level of levels) {\n const group = _parentGroup[level];\n if (group !== undefined && group !== \"list\" && group.type !== undefined && group.type == \"list\") {\n _parentGroup = group as IConfiguratorApiDataGroup;\n }\n }\n\n const groups = Object.keys(_parentGroup);\n if (!groups.includes(group_))\n {\n return { type: \"\" };\n }\n return _parentGroup[group_] as IConfiguratorApiDataGroup;\n }\n\n const groups = Object.keys(data_);\n if (groups.includes(group_)) {\n return data_[group_] as IConfiguratorApiDataGroup;\n }\n\n for (const group of groups) {\n const child = data_[group] as IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n if (child.type != \"list\") {\n continue;// skip value elements\n }\n\n const subgroup = this.GetGroup(group_, child as IConfiguratorApiDataGroup, groupReference_);\n if (subgroup == undefined || subgroup.type != \"list\") {\n continue;\n }\n\n return subgroup;\n }\n return { type: \"\" };\n }\n\n public Get(startGroup_: string, groupReference_: string, valueName_?: string): IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams {\n const group = this.GetGroup(startGroup_, this.Data, groupReference_);\n if (group.type == \"\") {\n return { type: \"\" };\n }\n if (startGroup_ == valueName_ || valueName_ == undefined) {\n return group;\n }\n\n let value = { type: \"\" } as IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n if (this.ForEachRecursive(group, (valueOrGroup_: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, name_: string) => {\n if (valueName_ == name_) {\n value = valueOrGroup_;\n return true;\n }\n return false;\n })) {\n return value;\n }\n return { type: \"\" };\n }\n\n public GetGroupValuesCount(group_: string, groupReference_: string, valueName_?: string): number {\n const elementData = ConfiguratorApiDataService.Get(group_, groupReference_, valueName_);\n if (elementData == undefined || elementData.type === \"\") {\n return 0;\n }\n const childNames = Object.keys(elementData);\n if (childNames.length < 8) {\n console.error(\"ConfiguratorApi Data wrong! incomplete!\", elementData);\n return 0;\n }\n return childNames.length - 8;\n }\n\n // public GetFromSpecificGroup(group_: string, name_?: string): IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams {\n // const group = this.GetGroup(group_, this.Data);\n // if (group.type == \"\") {\n // return { type: \"\" };\n // }\n\n // if (group_ == name_ || name_ == undefined) {\n // return group;\n // }\n\n // const value = group[name_];\n // if (value != undefined) {\n // return value as IConfiguratorApiDataValue;\n // }\n // return { type: \"\" };\n // }\n // public GetGroupKeys(group_: string) {\n // const group = this.Get(group_);\n // if (typeof group === \"object\") {\n // return Object.keys(group);\n // }\n // return [];\n // }\n\n public GetValueInfoList(group_: string, groupReference_: string): IConfiguratorApiDataInfoList {\n const group = ConfiguratorApiDataService.Get(group_, groupReference_) as IConfiguratorApiDataGroup | undefined;\n if (group == undefined) {\n return {}\n }\n\n const infoList = group[\"info-list\"] as IConfiguratorApiDataInfoList | undefined;\n if (infoList == undefined) {\n return {};\n }\n return infoList;\n }\n public GetValueInfo(group_: string, groupReference_: string, names_: string[]): string[] {\n const infoList = this.GetValueInfoList(group_, groupReference_);\n\n const result: string[] = [];\n names_.forEach(name => {\n if (infoList[name] != undefined) {\n result.push(infoList[name]);\n }\n });\n return result;\n }\n\n public ForEachRecursive(group_: IConfiguratorApiDataGroup | undefined, action_: (valueOrGroup_: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, name_: string) => boolean): boolean {\n const groupToLoop = group_ != undefined ? group_ : this.Data;\n const childGroups = group_ != undefined ? Object.keys(group_) : this.Groups;\n\n for (const groupOrValueName of childGroups) {\n const groupOrValue = groupToLoop[groupOrValueName] as IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n if (groupOrValue.type == undefined || groupOrValue.type == \"\") {\n continue;\n }\n let stop = action_(groupOrValue, groupOrValueName);\n if (groupOrValue.type == \"list\" && !stop) {\n const stopInChild = this.ForEachRecursive(groupOrValue as IConfiguratorApiDataGroup, action_);\n if (stopInChild) {\n stop = true;\n }\n }\n if (stop) {\n return true;\n }\n }\n return false;\n }\n\n public Exists(name: string) {\n return this.ForEachRecursive(undefined, (valueOrGroup_: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, name_: string) => {\n if (name == name_) {\n return true;\n }\n return false;\n });\n }\n\n public CreateFormElementCounterStack(data_: IConfiguratorApiDataGroup, definition_: (FormElementInfo | FormElementsWrapper)[], elementNamePrefix_: string): FormElementCounterStack {\n let highestIndex = 0;\n let maxNumbersInNames = 0;\n const definitionsWithCounters = this.FindCountersInDefinition(definition_);\n if (definitionsWithCounters.length > 0) {\n const keys = Object.keys(data_);\n for (const key of keys) {\n const keyToCheck = key.replace(elementNamePrefix_, \"\");\n const matches = keyToCheck.match(/\\d+/g);\n if (matches) {\n if (maxNumbersInNames < matches.length) {\n maxNumbersInNames = matches.length;\n }\n\n for (const match of matches) {\n let matchAsNumber = parseInt(match);\n if (matchAsNumber > highestIndex) {\n highestIndex = matchAsNumber;\n }\n }\n }\n }\n }\n highestIndex += 1;\n\n return new FormElementCounterStack(maxNumbersInNames, highestIndex);\n }\n\n public GetElementsToCreateFromElementDefinition(group_: string, data_: IConfiguratorApiDataGroup, definition_: (FormElementInfo | FormElementsWrapper)[], elementNamePrefix_: string, groupReference_: string): (FormElementInfo | FormElementsWrapper)[] {\n const counterstack = this.CreateFormElementCounterStack(data_, definition_, elementNamePrefix_);\n const timesToIncrement = counterstack.fullLoopCount;\n\n const result: (FormElementInfo | FormElementsWrapper)[] = [];\n for (let index = 0; index < timesToIncrement; ++index) {\n for (const formElement of definition_) {\n if ((formElement as FormElementInfo).tag === undefined) {\n // // handle wrappers\n const wrapper = formElement as FormElementsWrapper;\n let displayAnyInWrapper = false;\n for (const elementInfo of wrapper.elements) {\n const [nameToUse, names] = this.FindElementDataFromFormElementInfo(elementInfo as FormElementInfo, group_, counterstack, elementNamePrefix_, groupReference_);\n if (names === undefined && nameToUse === undefined) {\n continue;\n }\n displayAnyInWrapper = true;\n }\n if (displayAnyInWrapper) {\n result.push(wrapper);\n }\n continue;\n }\n\n const elementInfo = formElement as FormElementInfo;\n // loop over formElements and create html-elements in container\n if (elementInfo.name === undefined && elementInfo.names == undefined) continue;\n\n const [nameToUse, names] = this.FindElementDataFromFormElementInfo(elementInfo, group_, counterstack, elementNamePrefix_, groupReference_);\n if (names === undefined && nameToUse === undefined) {\n continue;\n }\n\n result.push({\n tag: elementInfo.tag,\n name: nameToUse,\n names: names,\n attributes: elementInfo.attributes,\n styleVars: elementInfo.styleVars\n });\n }\n counterstack.increment();\n }\n return result;\n }\n\n\n public FindCountersInDefinition(definition_: (FormElementInfo | FormElementsWrapper)[]): (FormElementInfo | FormElementsWrapper)[] {\n let result: (FormElementInfo | FormElementsWrapper)[] = [];\n\n for (const formElement of definition_) {\n if ((formElement as FormElementInfo).tag === undefined) {\n const wrapper = formElement as FormElementsWrapper;\n const formElementInfosWithCounters = this.FindCountersInDefinition(wrapper.elements);\n if (formElementInfosWithCounters.length > 0) {\n result.push(wrapper);\n }\n continue;\n }\n\n const elementInfo = formElement as FormElementInfo;\n if (elementInfo.name === undefined && elementInfo.names == undefined) {\n continue;\n }\n\n if (elementInfo.name != undefined) {\n if (elementInfo.name.includes(\"|>counter-\")) {\n result.push(elementInfo);\n }\n continue;\n }\n\n if (elementInfo.names != undefined) {\n for (const name of elementInfo.names) {\n if (name.includes(\"|>counter-\")) {\n result.push(elementInfo);\n }\n }\n }\n }\n\n return result;\n }\n\n\n // public CheckDefinitionForFittingCounter(definition_: (FormElementInfo | FormElementsWrapper)[], keyToCheck_: string): boolean {\n // const keyParts = keyToCheck_.split(\"|>counter-\");\n // if (keyParts.length < 2) {\n // return false;// no counter ignore!\n // }\n\n // let result = false;\n // for (const formElement of definition_) {\n // if ((formElement as FormElementInfo).tag === undefined) {\n // const wrapper = formElement as FormElementsWrapper;\n // if (this.CheckDefinitionForFittingCounter(wrapper.elements, keyToCheck_)) {\n // result = true;\n // }\n // continue;\n // }\n\n // const elementInfo = formElement as FormElementInfo;\n // if (elementInfo.name === undefined && elementInfo.names == undefined) {\n // continue;\n // }\n\n // if (elementInfo.name != undefined) {\n // let count = 0;\n // for (const part of keyParts) {\n // if (elementInfo.name.includes(part)) {\n // count++;\n // }\n // }\n // if (count == keyParts.length) {\n // result = true;\n // }\n // }\n\n // if (elementInfo.names != undefined) {\n // for (const name of elementInfo.names) {\n // let count = 0;\n // for (const part of keyParts) {\n // if (name.includes(part)) {\n // count++;\n // }\n // }\n // if (count == keyParts.length) {\n // result = true;\n // }\n // }\n // }\n // }\n // return result;\n // }\n\n\n public CheckDefinitionAgainstvalueElementName(definition: string, valueElement: string) {\n const piecesToSearchFor: Array<string> = [];\n const occurrences = definition.split(\"|>counter-\");\n if (occurrences.length > 1) {\n for (let occurrence of occurrences) {\n let part = occurrence;\n const index = occurrence.indexOf(\"<|\");\n if (index > 0) {\n const remove = occurrence.slice(0, index + 2);\n part = occurrence.replace(remove, \"\");\n }\n\n if (part.length > 0) {\n piecesToSearchFor.push(part);\n }\n }\n } else {\n return valueElement == definition;\n }\n\n let allPiecesFit = true;\n let temp = valueElement;\n for (let piece of piecesToSearchFor) {\n if (!temp.includes(piece)) {\n allPiecesFit = false;\n break;\n }\n temp = temp.replace(piece, \"\");\n }\n return allPiecesFit;\n }\n\n public FindElementDataFromFormElementInfo(elementInfo_: FormElementInfo, group_: string, counterstack_: FormElementCounterStack, elementNamePrefix_: string, groupReference_: string): [(string | undefined), (string[] | undefined)] {\n let nameToUse = undefined;\n if (elementInfo_.name !== undefined) {\n const data = this.FindElementData(elementInfo_.name, group_, counterstack_, elementNamePrefix_, groupReference_);\n if (data !== undefined) {\n nameToUse = data.type === \"list\" ? elementInfo_.name : data.name;\n }\n }\n\n let names = undefined;\n if (elementInfo_.names !== undefined) {\n const accumulatedNames = [];\n for (const name of elementInfo_.names) {\n const found = this.FindElementData(name, group_, counterstack_, elementNamePrefix_, groupReference_);\n if (found == undefined) {\n continue;\n }\n accumulatedNames.push(name);\n }\n if (accumulatedNames.length > 0) {\n names = accumulatedNames;\n }\n }\n return [nameToUse, names];\n }\n\n public FindElementData(name_: string, group_: string, counterstack_: FormElementCounterStack | undefined, elementNamePrefix_: string, groupReference_: string): IConfiguratorApiDataValue | undefined {\n const group = this.GetGroup(group_, this.Data, groupReference_);\n if (group.type == \"\") {\n return { type: \"\" };\n }\n if (counterstack_ == undefined || counterstack_.empty) {\n const value = group[elementNamePrefix_ + name_] as IConfiguratorApiDataValue | undefined;\n if (value != undefined) {\n return value;\n }\n\n let foundValue = undefined;\n this.ForEachRecursive(group, (valueOrGroup: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, valueToCheckName_: string) => {\n if (valueOrGroup.type == \"list\") {\n foundValue = (valueOrGroup as IConfiguratorApiDataGroup)[elementNamePrefix_ + name_];\n return true;\n }\n return false;\n });\n return foundValue;\n }\n\n let result = { type: \"\" } as IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n if (this.ForEachRecursive(group, (valueOrGroup: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, valueToCheckName_: string) => {\n const counterCheckValueName = valueToCheckName_.replace(elementNamePrefix_, \"\");\n if (!this.CheckDefinitionAgainstvalueElementName(name_, counterCheckValueName)) {\n return false;// continue with another element if the name does not fit the desired name\n }\n\n const matches = counterCheckValueName.match(/\\d+/g); // check matches against counterstack-values\n if (!matches) {\n result = valueOrGroup;\n return true; // no numbers. Which means we do not need to check if those fit and can just use the value\n }\n\n const neededMatches = name_.match(/\\|>counter-\\d+<\\|/g);\n if (neededMatches != undefined) {\n if (neededMatches.length != matches.length) {\n return false;//not the right amount of matches. This can not be the right one!\n }\n }\n\n if (matches.length < counterstack_.size) {\n const accumulatedAfterIndex = counterstack_.accumulateAfterIndex(matches.length);\n if (accumulatedAfterIndex > 0) {\n return false;// there are increase values after desired! which means we probably already build the element we are looping right now.\n }\n }\n\n let matchCount = 0;\n for (let index = 0; index < matches.length; ++index) {\n const counterStackValue = counterstack_.get(index);\n const match = parseInt(matches[index]);\n if (match != counterStackValue) {\n break;\n }\n ++matchCount;\n }\n\n if (matchCount == matches.length) {\n result = valueOrGroup;\n return true;\n }\n return false;\n })) {\n if (result.type === \"\") {\n return undefined;\n }\n return result;\n }\n return undefined;\n }\n\n public CreateFullTargetGroupReference(group_: string, rootGroup_: string): string {\n if (rootGroup_ == group_ || rootGroup_.length < 1) {\n return group_;\n }\n return rootGroup_ + \"#\" + group_;\n }\n\n private SetCounter = 0;\n public async Set(groups: IConfiguratorApiValueModificationGroup[], preventRegenAll = false, ignorePriceChange = false): Promise<boolean> {\n if (this.SetCounter > 0) {\n return false;// prevent multiple modifications at the same time (todo: wait for previous modification?)\n }\n\n this.SetCounter++;\n if (this.SetCounter > 1) {\n console.warn(\"ConfiguratorApiDataService> multiple set called at the same time!\");\n }\n\n const result = await ConfiguratorApiService.SetApiData({\n groups: groups,\n \"prevent-regen-all\": preventRegenAll\n }, ignorePriceChange);\n this.Data = result;\n --this.SetCounter;\n\n return true;\n }\n public GetModificationType(dataValue: \"string\" | \"int\" | \"float\" | \"list\" | \"button\" | \"checkbox\" | \"option-selection\" | \"\"): \"int\" | \"float\" | \"button\" | \"string\" | \"error\" {\n if (dataValue == \"int\") return \"int\";\n if (dataValue == \"float\") return \"float\";\n if (dataValue == \"button\") return \"button\";\n if (dataValue == \"checkbox\") return \"int\";\n if (dataValue == \"option-selection\" || dataValue == \"string\") return \"string\";\n return \"error\";\n }\n}\nexport const ConfiguratorApiDataService = new ConfiguratorApiDataServiceClass();\n","import { CommunicationMessageService, WebViewerService } from \"@dh-software/webui-api\";\nimport { IArticleData, ICatConfig, ICategoryData, IEquipmentData, ILoadArticleParams } from \"@dh-software/webui-types\";\n\nexport type DimensionName = \"width\" | \"depth\" | \"height\";\n\nconst dimensionVarKeyMapping: Record<DimensionName, string> = {\n width: \"v5\",\n depth: \"v6\",\n height: \"v7\",\n};\n\nconst additionalParamsMapping: { [key: string]: keyof ILoadArticleParams } = {\n [dimensionVarKeyMapping.width]: \"extraWidth\",\n [dimensionVarKeyMapping.depth]: \"extraDepth\",\n [dimensionVarKeyMapping.height]: \"extraHeight\",\n}\n\nclass CatalogServiceClass {\n\n private _pending = false;\n private isInitialized: Promise<ICatConfig[]> = new Promise<ICatConfig[]>((res, rej) => res([]));\n\n private _manufacturer: string = \"\";\n private _program: string = \"\";\n\n public async GetCatConfig(): Promise<ICatConfig[]> {\n return await this.isInitialized;\n }\n\n private async parseCatConfig(manufacturer: string, program: string) {\n const rawCatConfig = await CommunicationMessageService.getCatConfig(manufacturer, program);\n return rawCatConfig?.cat_config?.map(raw => {\n return {\n category: raw[0],\n attributes: raw[1].split('#'),\n defaultArt: raw[2],\n module: raw[3],\n group: raw[4]\n } as ICatConfig;\n }) || [];\n }\n\n public async retrieveCatConfig(manufacturer: string, program: string): Promise<ICatConfig[]> {\n if (this._pending) {\n await this.isInitialized;\n }\n this._pending = true;\n this.isInitialized = this.parseCatConfig(manufacturer, program)\n this.isInitialized.then(x => this._pending = false);\n this._manufacturer = manufacturer;\n this._program = program;\n return await this.isInitialized;\n }\n\n public async filterArticlesList<T>(articles: IArticleData[] | IEquipmentData[]): Promise<IArticleData[] | IEquipmentData[]> {\n const data = await this.isInitialized;\n // @ts-ignore\n return data?.length > 0 ? articles.filter((article: any) => {\n return data[0]?.defaultArt !== article.ArtNr;\n }) : articles;\n }\n\n public async filterKataModules(categories: ICategoryData[]): Promise<ICategoryData[]> {\n const data = await this.isInitialized;\n return data?.length > 0 ? categories.filter(category => data[0]?.category != category.id) : categories\n }\n\n public async getInitialArticle(def: string, program?: string) {\n // Use the manufacturer/program cached from the most recent retrieveCatConfig call.\n // Callers (program-selection.helper) invoke retrieveCatConfig before this, so the\n // values are current; this avoids a cycle with ManuProgService.\n const data = await this.isInitialized;\n const manufacturer = this._manufacturer;\n if (!program) {\n program = this._program;\n }\n const configurationResult = this.getConfigurationDefaultArticle(manufacturer, program);\n if (configurationResult.length > 0) {\n return configurationResult;\n }\n return data[0]?.defaultArt || def;\n }\n\n public async shouldDisableOnSceneEmpty(enable: boolean) {\n await WebViewerService.IsAppReady;\n let articlesInScene = await CommunicationMessageService.getPlannedArticles()\n articlesInScene = articlesInScene.filter(article => article.articlenumber);\n return enable && articlesInScene.length === 0\n }\n\n public getMinMaxByParamName(name: string, article: IArticleData, dimScale = 1): [number, number] {\n let min = 0;\n let max = 0;\n switch (name) {\n case 'v5': // Width\n min = Number(article.dxmi)\n max = Number(article.dxma)\n break;\n case 'v6': // Depth\n min = Number(article.dymi)\n max = Number(article.dyma)\n break;\n case 'v7': // Height\n min = Number(article.dzmi)\n max = Number(article.dzma)\n break;\n }\n const result: [number, number] = [min, max];\n result.forEach((item, index, arr) => {\n arr[index] = Math.abs(arr[index]) * dimScale;\n })\n return result;\n }\n\n public getAdditionalParamByKey(name: string, def?: string): string {\n return additionalParamsMapping[name] || def;\n }\n\n public getVarKeyForDimension(dimension: string): string | undefined {\n return dimensionVarKeyMapping[dimension as DimensionName];\n }\n\n public getAdditionalProperties(key: string, value: any) {\n const result: any = {}\n result[this.getAdditionalParamByKey(key)] = value;\n return result;\n }\n\n private getConfigurationDefaultArticle(manufacturer: string, program: string): string {\n if (window.g_configuration.defaultArticleList) {\n const lookUpKey = `${manufacturer}_${program}`;\n\n for (const element of window.g_configuration.defaultArticleList.keys) {\n if (element.key === lookUpKey.toLowerCase()) {\n return element.articleNumber;\n }\n }\n }\n\n return \"\";\n }\n\n}\n\nexport const CatalogService = new CatalogServiceClass();\n","import {CatalogService} from \"./catalog.service\";\nimport {CommunicationMessageService, EventService, WebViewerService} from \"@dh-software/webui-api\";\n\nexport interface ISetManuProgData {\n manu: string;\n prog: string;\n calcManu: string;\n}\n\nclass ManuProgServiceClass {\n\n private _pending = false;\n private isInitialized: Promise<void> = new Promise<void>((res, rej) => res());\n\n private _manufacturer = \"\";\n private _calcManufacturer = \"\";\n private _program = \"\";\n\n constructor() {\n this.isInitialized = this.initialize();\n }\n\n private async initialize() {\n await WebViewerService.IsAppReady;\n this._manufacturer = window.g_article?.manu || window.g_configuration.selectedManufacturer as string;\n this._program = window.g_article?.prog ? window.g_article.prog.toUpperCase() : (window.g_configuration.selectedProgram as string).toUpperCase();\n this._calcManufacturer = this._manufacturer;\n await CatalogService.retrieveCatConfig(this._manufacturer, this._program);\n }\n\n public async getManufacturer() {\n await this.isInitialized;\n return this._manufacturer;\n }\n\n public async getCalcManufacturer() {\n await this.isInitialized;\n return this._calcManufacturer;\n }\n\n public async getProgram() {\n await this.isInitialized;\n return this._program;\n }\n\n public async setManuProg(manufacturer: string, calcManufacturer: string, program: string, callEvent: boolean = true): Promise<void> {\n if (this._pending) {\n return await this.isInitialized;\n }\n this._pending = true;\n this.isInitialized = CommunicationMessageService.setManuProg(manufacturer, calcManufacturer, program);\n\n await CatalogService.retrieveCatConfig(manufacturer, program);\n this.isInitialized.then(x => this._pending = false);\n await this.isInitialized;\n\n if(callEvent) {\n EventService.emit(\"set-manu-prog\", {\n manu: manufacturer,\n calcManu: calcManufacturer,\n prog: program,\n });\n }\n\n this._manufacturer = manufacturer;\n this._calcManufacturer = calcManufacturer;\n this._program = program;\n }\n}\n\nexport const ManuProgService = new ManuProgServiceClass();\n","import { CommunicationMessageService, EventService } from \"@dh-software/webui-api\";\n\nclass UtilServiceClass {\n public async getFurncloudFile(cloudId_: string, type_: string, password_: string): Promise<any | undefined> {\n const exportTypeMap: Record<string, number> = {\n dhp: 1,\n xml: 2,\n pdf: 4,\n };\n const responseData = await CommunicationMessageService.getErpFiles(cloudId_, exportTypeMap[type_], password_, true);\n\n window.dispatchEvent(new CustomEvent(\"furncloud-status\", {\n detail: responseData,\n bubbles: true,\n composed: true\n }));\n if (responseData.httpStatus !== 200 || !responseData.fileName) {\n if (responseData.responseBody) {\n try {\n return JSON.parse(responseData.responseBody);\n }\n catch {\n }\n }\n return undefined;\n }\n return {\n url: `${responseData.server}/downloadExport/${responseData.sessionId}/${responseData.fileName}/${type_}`\n };\n }\n\n public async generateExport(type_: string) {\n const exportInfo = await CommunicationMessageService.generateExport(type_);\n return {\n url: `${exportInfo.server}/downloadExport/${exportInfo.sessionId}/${exportInfo.file}/${type_}`,\n cloudID: exportInfo.cloudId\n };\n }\n\n public async getPDF(useLastCloudID = false) {\n const printInfo = await CommunicationMessageService.printPDF(useLastCloudID);\n return {\n url: `${printInfo.server}/downloadPDF/${printInfo.sessionId}/${printInfo.pdf}`,\n cloudID: printInfo.cloudId\n };\n }\n\n public async openCloudId(cloudId_: string, resetUiVars_: boolean = false): Promise<void> {\n if (cloudId_) {\n if (resetUiVars_) {\n await CommunicationMessageService.resetCurrentUserinterfaceManuProg();\n }\n await CommunicationMessageService.openCloudId(cloudId_);\n EventService.emitAsync(\"close-modal\", {});\n }\n }\n\n public async delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n public querySelectorAllWithShadowRoots<T extends Element>(selector: string, startNode: ParentNode = document): T[] {\n const elements = Array.from(startNode.querySelectorAll(selector));\n const shadowElements = Array.from(document.querySelectorAll('*'))\n .filter(element => element.shadowRoot)\n .reduce((acc, element) => {\n const shadowRootElements = element[\"shadowRoot\"]?.querySelectorAll<T>(selector) || [];\n return [...acc, ...Array.from(shadowRootElements)];\n }, new Array<T>());\n\n return [...elements, ...shadowElements] as T[];\n }\n\n public querySelectorWithShadowRoots<T extends Element>(selector: string, startNode: ParentNode = document): T {\n return this.querySelectorAllWithShadowRoots<T>(selector, startNode)[0];\n }\n\n public replaceValueInObject(object: { [key: string | number]: unknown }, placeholder: unknown, replaceValue: unknown) {\n const keys = Object.keys(object);\n for (const key of keys) {\n const value = object[key];\n if (value === placeholder) {\n object[key] = replaceValue;\n }\n else if (value && typeof value === \"object\") {\n this.replaceValueInObject(value as { [key: string | number]: unknown }, placeholder, replaceValue);\n }\n else if (value && Array.isArray(value)) {\n for (const content of value) {\n if (content && typeof content === \"object\") {\n this.replaceValueInObject(content as { [key: string | number]: unknown }, placeholder, replaceValue);\n }\n }\n }\n }\n }\n\n\n public checkCssQuerySyntax(query: string): boolean {\n const cssRegex = /^(\\*|#[\\w-]+|\\.[\\w-]+|[\\w-]+|\\[\\w+(=\\w+)?\\])(:\\w+)?(>\\w+)?(\\s\\w+)?$/;\n return cssRegex.test(query);\n }\n\n public ncrToUTF8(ncr: string): string {\n if (ncr && ncr.length > 0) {\n return ncr.replace(/&#([0-9]+);/g, function (b) {\n return String.fromCodePoint(parseInt(b.slice(2, -1)));\n });\n }\n return ncr;\n }\n\n public sanitizeKey(fragment_: string): string {\n return `${fragment_}`.replace(/\\s+/g, \"_\");\n }\n}\n\nexport const UtilService = new UtilServiceClass();\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nclass CloudIdServiceClass {\n\n private cloudIdRegex = /^(?:\\s*[a-z0-9]\\s*){8}$/i\n\n private _pending = false;\n private _cloudIdPromise: Promise<string> = new Promise<string>((res, rej) => res(\"\"));\n\n public async getCloudId() {\n return this._cloudIdPromise;\n }\n\n public async createCloudId(): Promise<string> {\n if (this._pending) {\n return await this._cloudIdPromise;\n }\n this._pending = true;\n this._cloudIdPromise = CommunicationMessageService.createCloudID();\n this._cloudIdPromise.then(x => this._pending = false);\n return await this._cloudIdPromise;\n }\n\n public isCloudIdValid(cloudId: string): boolean {\n return this.cloudIdRegex.test(cloudId);\n }\n\n}\n\nexport const CloudIdService = new CloudIdServiceClass();\n","class SessionStorageServiceClass {\n private readonly _prefix: string = \"SSS_\";\n\n update(key_: string, data_: {[key: string]: unknown} | Array<unknown>) {\n if (key_.length > 0) {\n const jsonString = JSON.stringify(data_);\n const base64String = btoa(jsonString);\n sessionStorage.setItem(this._prefix + key_, base64String);\n }\n return data_;\n }\n\n get(key_: string) {\n if (key_.length > 0) {\n const base64String = sessionStorage.getItem(this._prefix + key_);\n if (base64String) {\n const jsonString = atob(base64String);\n try {\n return JSON.parse(jsonString);\n }\n catch {\n return null;\n }\n }\n }\n }\n\n has(key_: string) {\n if (key_.length > 0) {\n return !!sessionStorage.getItem(this._prefix + key_);\n }\n }\n\n remove(key_: string) {\n sessionStorage.removeItem(this._prefix + key_);\n }\n}\nexport const SessionStorageService = new SessionStorageServiceClass();\n","import { ComponentService } from \"../../../../utils/component.service\";\nimport type { BaseCardContainer } from \"../base/base-card-container\";\n\nexport class CardContainersSharedData {\n private _CardContainerTagNames = new Array<string>();\n public get CardContainerTagNames(): Array<string> {\n return this._CardContainerTagNames;\n }\n public AddTagName(value: string): void {\n if (this._CardContainerTagNames.includes(value)) return;\n this._CardContainerTagNames.push(value);\n }\n public get AllContainers(): Array<BaseCardContainer> {\n const result = new Array<BaseCardContainer>();\n for (const tagName of this._CardContainerTagNames) {\n result.push(...(ComponentService.findAll(tagName) as Array<BaseCardContainer>));\n }\n return result;\n }\n}\n\n// Module-level singleton — lets services access the shared registry without\n// importing BaseCardContainer at runtime.\nexport const CardContainersShared = new CardContainersSharedData();","import { DecimalDivider } from \"../../components/standard/informationals/dimension-information.component\";\nimport { DimensionInformation } from \"../../components/standard/informationals/dimensions-information.component\";\nimport { IDimensionInputData } from \"../../components/standard/informationals/dimension-inputs.component\";\nimport { PriceDisplayData } from \"../../components/price/price-display/price-display.component\";\nimport {\n CardContainerFilterSelection,\n CardContainerSettings,\n CardContainerStates\n} from \"../../components/standard/card-container/internals\";\nimport { EventHandlerEvent } from \"../event-handler/event.handler.model\";\nimport { IModuleElement } from \"@dh-software/webui-configuration-parser\";\nimport { CardContainerAsyncEvent, CardContainerBaseEventDetail } from \"./card-container-events\";\n\n// types\nexport type CardDataLevelKey = string | number;\nexport type CardDataLevel = {\n title: string,\n cards: Array<CardData>,\n additional?: { [key: string]: unknown }\n};\nexport type CardDataLevelMap = Map<CardDataLevelKey, CardDataLevel>;\n\nexport type CardDataGroup<T> = {\n title?: string,\n items: Array<T>,\n style?: { [key: string]: string }\n}\nexport type CardDataButtonGroupItem = {\n active?: boolean,\n bordered?: boolean,\n icon?: string,\n \"click-data\"?: { [key: string]: unknown }\n}\n\nexport type CardDataDropdownGroupItem = {\n value?: string\n values?: string[];\n name?: string\n placeholder?: string\n\n suffix?: string\n}\n\nexport type CardDataInputGroupItem = {\n value?: any;\n type?: string\n readonly?: boolean\n placeholder?: string\n required?: boolean\n classes?: { [className: string]: any }\n name?: string\n min?: number\n max?: number\n\n suffix?: string\n}\n\nexport interface ICardDataInputSource {\n value: string\n name: string\n}\n\nexport function isCardDataSource(element: any): element is ICardDataInputSource {\n return \"value\" in element && \"name\" in element;\n}\n\nexport type CardContainerChildWildcard = {\n tag: string\n query?: string\n}\n\n// enums\nexport enum CardFetchMethod {\n ArticlesByCategories = \"articles-by-categories\",\n ArticlesByCategoriesConfiguratorForm = \"articles-by-categories-configurator-form\",\n ArticlesByCategoriesDimensions = \"articles-by-categories-dimensions\",\n ArticlesByCategoriesCategorySelection = \"articles-by-categories-category-selection\",\n CrossArticleHostSelection = \"cross-article-host-selection\",\n KataPageSelection = \"kata-page-selection\",\n PropertySelection = \"property-selection\",\n PropertyValueSelection = \"property-value-selection\",\n PropertyContextSelection = \"property-context-selection\",\n PropertyContextValueSelection = \"property-context-value-selection\",\n PropertyUiGroupSelection = \"property-group-selection\",\n LandingPageView = \"landing-page-view\",\n CardsFromConfiguration = \"cards-from-configuration\",\n WallElements = \"wall-elements\",\n WallSelection = \"wall-selection\",\n ConfiguratorFormFilter = \"configurator-form-filter\",\n ProgramSelection = \"program-selection\",\n PlacerGroupSelection = \"placer-group-selection\",\n MaterialSelection = \"material-selection\",\n NONE = \"\"\n}\n\nexport enum FilterSelectionStrategy {\n OR = \"or\",\n AND = \"and\",\n NONE = \"none\"\n}\n\nexport enum CardContainerUpdate {\n FETCH = \"fetch\",\n FILTER = \"filter\",\n NONE = \"none\"\n}\n\nexport enum CardContainerSpecialInteractionContext {\n ENABLED = \"enabled\",\n DISABLED = \"disabled\",\n NONE = \"none\",\n ERROR = \"error\"\n}\n\n// interfaces\nexport interface CardClick {\n \"previous-level-key\": CardDataLevelKey,\n \"level-key\": CardDataLevelKey,\n \"next-level-key\": CardDataLevelKey,\n strategy?: FilterSelectionStrategy,\n priority?: number,\n\n [key: string]: unknown\n}\n\nexport interface CardDataImage {\n prefix: string,\n file: string\n}\n\nexport interface CardDataText {\n txt?: string,\n title?: string,\n subtitle?: string,\n tooltip?: string,\n additional?: string[]\n}\n\nexport interface CardData {\n image?: CardDataImage,\n icon?: string\n txt?: CardDataText\n dimensions?: Array<DimensionInformation>\n price?: PriceDisplayData\n click?: CardClick\n active?: boolean,\n disabled?: boolean,\n modules?: Array<IModuleElement>,\n dragable?: boolean,\n translate?: boolean,\n tooltip?: boolean,\n \"button-groups\"?: Array<CardDataGroup<CardDataButtonGroupItem>>,\n inputs?: Array<CardDataGroup<CardDataInputGroupItem>>,\n dropdowns?: Array<CardDataGroup<CardDataDropdownGroupItem>>,\n \"dimension-ranges\"?: Array<IDimensionInputData>,\n children?: CardData[]\n persistent?: { [key: string]: unknown }\n additional?: {\n \"card-tag\"?: string,\n \"style-type\"?: string,\n [key: string]: unknown\n }\n}\n\n// ─── CardData.additional marker keys ─────────────────────────────────────────\n/** FixedCards-defined clickEvents for the card. */\nexport const FIXED_CARD_CLICK_EVENTS_KEY = \"fixed-card-click-events\";\n/** Side-view key in the enclosing fv-card-container-view to switch to on click. */\nexport const CARD_VIEW_KEY = \"card-view-key\";\n/** Truthy → dispatch a CardMagnifiedEvent on click. */\nexport const CARD_MAGNIFY_KEY = \"magnify\";\n/** Optional id targeting a specific fv-card-magnifier-view. */\nexport const CARD_MAGNIFY_TARGET_KEY = \"magnify-query\";\n\nexport interface FilterSelectionData {\n filter: Array<CardDataLevelKey>,\n strategy: FilterSelectionStrategy,\n priority?: number,\n \"additional-params\"?: unknown\n}\n\nexport interface CardFetchFilters {\n \"level-key-filter\"?: Array<CardDataLevelKey>,\n\n [filterKey: string]: unknown\n}\n\nexport interface CardFetch {\n method: CardFetchMethod,\n parameters?: { [key: string]: unknown },\n manufacturer?: string,\n program?: string,\n \"root-level\"?: string,\n filter?: CardFetchFilters,\n \"suspend-until-triggered\"?: boolean\n}\n\nexport interface CardSettings {\n notranslate?: boolean\n dimensions?: {\n icon?: string,\n src?: string,\n prefixes?: {\n width?: string,\n height?: string,\n depth?: string\n },\n divider?: string,\n unit?: string,\n decimals?: number,\n \"decimal-divider\"?: DecimalDivider,\n \"prevent-zero-decimals\"?: boolean\n },\n price?: {\n \"whole-suffix\"?: string,\n \"currency-before\"?: boolean\n }\n}\n\nexport type FetchResult = any\n\nexport interface CardContainerContext {\n settings: CardContainerSettings,\n states: CardContainerStates,\n filter: CardContainerFilterSelection | undefined,\n cards: CardDataLevelMap | undefined,\n dispatchAsyncEvent: (eventFactory: (resolve: () => Promise<void> | void) => Event) => Promise<boolean>,\n dispatchEvent: (event: Event) => boolean\n}\n\nexport interface CardContainerCustomEvents {\n hide?: Array<EventHandlerEvent>,\n show?: Array<EventHandlerEvent>,\n \"hide-show-only-after-first-fill\"?: boolean,\n \"hide-show-ignore-parent-change\"?: boolean,\n \"hide-show-skip-if-self-hidden\"?: boolean,\n \"fill-state-empty\"?: Array<EventHandlerEvent>,\n \"fill-state-filled\"?: Array<EventHandlerEvent>,\n \"fill-state-on-change\"?: boolean,\n\n \"special-interaction-opened\"?: Array<EventHandlerEvent>,\n \"special-interaction-closed\"?: Array<EventHandlerEvent>,\n\n \"card-clicked\"?: Array<EventHandlerEvent>\n}\n\nexport interface CardContainerSelectionChangeEvent {\n rev: number,\n count: number,\n objectInfo: Array<{\n instanceIdent: number,\n dimension: number,\n planType: string,\n planTypeText: string\n }>\n}\n\nexport interface CardContainerCustomIconButtonEvent {\n command: string,\n instanceIdent: number;\n parameters?: any;\n}\n","import { BaseCardContainer } from \"../../components/standard/card-container/base/base-card-container\";\nimport { CardContainerContext, CardData, CardDataLevelKey } from \"./card-container-definitions\";\n\nexport enum CardContainerEvents {\n CardContainerPreFill = \"cardcontainerprefill\",\n CardContainerPostFill = \"cardcontainerpostfill\",\n Updated = \"updated\",\n Back = \"cardcontainerback\",\n TriggerCardClick = \"cardcontainertriggercardclick\",\n BackToStart = \"cardcontainerbacktostart\",\n UpdateAdditionalData = \"updateadditionaldata\",\n ResetFilter = \"resetfilter\",\n Refetch = \"refetch\",\n CardMagnified = \"cardmagnified\"\n}\n\nexport interface CardContainerBaseEventDetail {\n 'post-event': () => Promise<void> | void,\n [key: string]: unknown\n}\nexport interface CardContainerBaseEventInit extends CustomEventInit {\n detail?: {\n 'post-event': () => Promise<void> | void,\n [key: string]: unknown\n }\n}\n\nexport class CardContainerAsyncEventDispatcher {\n private _dispatchFn: (event: Event) => boolean;\n constructor(dispatchFn: (event: Event) => boolean) {\n this._dispatchFn = dispatchFn;\n }\n\n public async dispatch(eventFactory: (resolve: () => Promise<void> | void) => Event): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n let event: Event;\n event = eventFactory(async () => {\n resolve(!event.defaultPrevented);\n });\n this._dispatchFn(event);\n });\n }\n\n public callPostEvent(event: CardContainerBaseEventInit) {\n if (event.detail === undefined || event.detail[\"post-event\"] === undefined) {\n return;\n }\n event.detail[\"post-event\"]();\n }\n}\nexport class CardContainerAsyncEvent<T extends CardContainerBaseEventDetail> extends CustomEvent<T> {\n constructor(type: string, detail: T) {\n super(type, {\n detail,\n bubbles: true\n });\n }\n}\n\nexport class CardContainerPreFillEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n constructor(postEvents: () => Promise<void> | void) {\n super(CardContainerEvents.CardContainerPreFill, { 'post-event': postEvents });\n }\n}\n\n\nexport class CardContainerPostFillEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n constructor(postEvent: () => Promise<void> | void) {\n super(CardContainerEvents.CardContainerPostFill, { 'post-event': postEvent });\n }\n}\n\n\nexport interface UpdatedEventInit extends CardContainerBaseEventInit {\n detail?: {\n 'post-event': () => Promise<void> | void,\n 'container': BaseCardContainer\n }\n}\nexport class UpdatedEvent extends CardContainerAsyncEvent<{ 'post-event': () => Promise<void> | void, 'container': BaseCardContainer }> {\n constructor(postEvent: () => Promise<void> | void, container_: BaseCardContainer) {\n super(CardContainerEvents.Updated, { 'post-event': postEvent, 'container': container_ });\n }\n}\n\n\nexport class CardContainerBackEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n constructor(postEvent: () => Promise<void> | void) {\n super(CardContainerEvents.Back, { 'post-event': postEvent });\n }\n}\n\n\nexport interface CardContainerBackToStartEventInit extends CardContainerBaseEventInit {\n detail?: { 'post-event': ()=>void }\n}\nexport class CardContainerBackToStartEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n constructor(postEvent: ()=>void) {\n super(CardContainerEvents.BackToStart, { 'post-event': postEvent });\n }\n}\n\nexport interface CardContainerTriggerCardClickEventInit extends CardContainerBaseEventInit {\n detail?: {\n 'keys-to-open': Array<CardDataLevelKey>,\n 'post-event': ()=>void\n }\n}\nexport class CardContainerTriggerCardClickEvent extends CardContainerAsyncEvent<{ 'keys-to-open': Array<CardDataLevelKey>, 'post-event': ()=>void }> {\n constructor(targetCardDataLevelKey: Array<CardDataLevelKey>, postEvent: ()=>void) {\n super(CardContainerEvents.TriggerCardClick, { 'keys-to-open': targetCardDataLevelKey, 'post-event': postEvent });\n }\n}\n\n\nexport interface UpdateAdditionalDataEventInit extends CardContainerBaseEventInit {\n detail?: { 'post-event': ()=>void, key: string }\n}\nexport class UpdateAdditionalDataEvent extends CardContainerAsyncEvent<{ 'post-event': ()=>void, key: string }> {\n constructor(key: string, postEvent: ()=>void) {\n super(CardContainerEvents.UpdateAdditionalData, { 'post-event': postEvent, key });\n }\n}\n\nexport interface CardContainerResetFilterEventInit extends CustomEventInit {\n detail?: { 'post-event': ()=>void, \"restore-defaults\": boolean, context: CardContainerContext }\n}\nexport class CardContainerResetFilterEvent extends CardContainerAsyncEvent<{ 'post-event': ()=>void, \"restore-defaults\": boolean, context: CardContainerContext }> {\n constructor(detail: { 'post-event': ()=>void, \"restore-defaults\": boolean, context: CardContainerContext }) {\n super(CardContainerEvents.ResetFilter, detail);\n }\n}\n\nexport class CardContainerRefetchEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n constructor(postEvent: ()=>void) {\n super(CardContainerEvents.Refetch, { 'post-event': postEvent });\n }\n}\n\n\n/** `target` filters which magnifier responds; omit for catch-all magnifiers. */\nexport interface CardMagnifiedEventInit extends CardContainerBaseEventInit {\n detail?: { 'post-event': () => Promise<void> | void, data: CardData, target?: string }\n}\nexport class CardMagnifiedEvent extends CardContainerAsyncEvent<{ 'post-event': () => Promise<void> | void, data: CardData, target?: string }> {\n constructor(data: CardData, target?: string, postEvent: () => Promise<void> | void = () => {}) {\n super(CardContainerEvents.CardMagnified, { 'post-event': postEvent, data, target });\n }\n}\n","export enum CardDataUpdateEvent {\n LastPOLoaded = \"last-po-loaded\",\n RefreshPropertyPanel = \"refresh-property-panel\",\n SelectionChanged = \"selection-changed\",\n DeleteLO_after = \"delete-lo-after\",\n PropTransfer_afterDelete = \"prop-transfer-after-delete\",\n PropTransfer_afterSet = \"prop-transfer-after-set\",\n PropTransfer_beforeDelete = \"prop-transfer-before-delete\",\n PropTransfer_beforeSet = \"prop-transfer-before-set\",\n WallFitting_begin = \"wall-fitting-begin\",\n WallFitting_end = \"wall-fitting-end\",\n WallFitting_cancel = \"wall-fitting-cancel\",\n ChangePrice = \"change-price\",\n DeleteLO_before = \"delete-lo-before\",\n CameraOnDirty = \"camera-on-dirty\",\n CameraOnStart = \"camera-on-start\",\n CameraOnEnd = \"camera-on-end\",\n SendEvent = \"send-event\",\n ModalWindowShown = \"modal-window-shown\",\n ModalWindowHidden = \"modal-window-hidden\",\n CustomIcon_ExecuteCustomEvent = \"custom-icon-execute-custom-event\",\n OpenModal = \"open-modal\",\n CardContainerVisible = \"card-container-visible\",\n VPlacerCancel = \"vplacer-cancel\"\n}","import {\n CardContainerContext,\n CardContainerCustomIconButtonEvent,\n CardContainerSelectionChangeEvent,\n CardContainerSpecialInteractionContext,\n CardContainerUpdate,\n CardDataLevel,\n CardDataLevelKey,\n CardDataUpdateEvent,\n CardFetchMethod,\n FetchResult,\n FilterSelectionStrategy,\n ICardDataInputSource\n} from \"../models/card-container\";\nimport { BaseCardDataAppConnection } from \"./card-app-connections/base.card.app.connection\";\nimport { BaseCardContainer } from \"../components/standard/card-container/base/base-card-container\";\nimport { CardData } from \"../models/card-container\";\nimport { EventFactoryService, EventService, WebViewerService } from \"@dh-software/webui-api\";\nimport { IDragOptions } from \"@dh-software/webui-types\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport { EventHandlerEvent } from \"models/event-handler/event.handler.model\";\nimport { BaseInput } from \"../components/standard/input/base/base-input\";\nimport { RootLevelSelectionCardContainerComponent } from \"../components/standard/card-container/containers/root-level-selection-card-container.component\";\n\nexport interface CheckUpdateParameters {\n event: CardDataUpdateEvent,\n eventParameters: unknown,\n context: CardContainerContext\n}\nexport interface FetchParameters {\n context: CardContainerContext\n}\nexport interface FilterParameters {\n unfiltered: FetchResult,\n context: CardContainerContext,\n active: Array<CardDataLevelKey>\n}\nexport interface CreateCardsParameters {\n filtered: FetchResult,\n context: CardContainerContext\n}\nexport interface GetFilterSelectionAdditionalParamsParameters {\n context: CardContainerContext\n}\nexport interface GetFilterSelectionStrategyParameters {\n context: CardContainerContext\n}\nexport interface InitFilterSelectionParamsParameters {\n context: CardContainerContext\n}\nexport interface ClickCardParameters {\n card: CardData,\n context: CardContainerContext\n}\nexport interface ClickCardButtonParameters {\n data: { [key: string]: unknown } | undefined,\n card: CardData,\n context: CardContainerContext\n}\nexport interface TextFieldChangedParameters {\n card: CardData,\n context: CardContainerContext,\n field: BaseInput<any>\n}\nexport interface CheckSpecialInteractionContextParameters {\n context: CardContainerContext\n}\nexport type CardDataServiceActionParameters = CheckUpdateParameters | FetchParameters | FilterParameters | CreateCardsParameters | GetFilterSelectionAdditionalParamsParameters | GetFilterSelectionStrategyParameters | InitFilterSelectionParamsParameters | ClickCardParameters | ClickCardButtonParameters | TextFieldChangedParameters | CheckSpecialInteractionContextParameters;\nexport enum CardDataServiceAction {\n CheckUpdate = \"CheckUpdate\",\n Fetch = \"Fetch\",\n Filter = \"Filter\",\n CreateCards = \"CreateCards\",\n GetFilterSelectionAdditionalParams = \"GetFilterSelectionAdditionalParams\",\n GetFilterSelectionStrategy = \"GetFilterSelectionStrategy\",\n InitFilterSelectionParams = \"InitFilterSelectionParams\",\n ClickCard = \"ClickCard\",\n ClickCardButton = \"ClickCardButton\",\n TextFieldChanged = \"TextFieldChanged\",\n CheckSpecialInteractionContext = \"CheckSpecialInteractionContext\"\n}\n\nclass CardDataServiceClass {\n private _Connections = new Map<string, BaseCardDataAppConnection>();\n private _Containers = new Array<BaseCardContainer>();\n private _dragActive = false;\n\n constructor() {\n this._RegisterUpdateEvents();\n }\n\n private async _RegisterUpdateEvents(): Promise<void> {\n const call = async (event: CardDataUpdateEvent, eventParameters: unknown) => {\n // TODO PH [2025|April|16] - add option to sort the container that are filtering each other and await fetches of those\n\n // Drop/placer completion always re-enables refreshes (defensive against a missed end-drag)\n // and is itself never suppressed — this is the single refresh that reflects the placed article.\n // if (event === CardDataUpdateEvent.VPlacerCancel) {//event === CardDataUpdateEvent.LastPOLoaded || \n // console.log(\"defensively disabled by\", event);\n // this._dragActive = false;\n // }\n\n // While an article is dragged the placer fires SelectionChanged/DeleteLO/price events on\n // every tick; refreshing a card list on each rebuilds its card DOM and resets the\n // scroll-aware container, causing the constant top<->previous jitter. Refresh once after the drop.\n if (this._dragActive) {\n return;\n }\n\n for (const container of this._Containers) {\n const connection = this._Connections.get(container.Settings.Fetch.method);\n if (connection == undefined) continue;\n const update = await connection.CheckUpdate(event, eventParameters, container.Context);\n await container.CheckUpdate(update);\n }\n };\n const RegisterEvent = (event: {\n register: (callback: (parameters?: unknown) => void) => void;\n unregister: (callback: (parameters?: unknown) => void) => void;\n }, name: CardDataUpdateEvent, additionalEvent?: (eventParameters: unknown) => void) => {\n event.register((parameters: unknown) => {\n call(name, parameters);\n if (additionalEvent) {\n additionalEvent(parameters);\n }\n });\n };\n\n await WebViewerService.IsAppReady;\n\n WebViewerService.on(\"webui.start-drag\", () => { console.log(\"drag start\"); this._dragActive = true; });\n WebViewerService.on(\"webui.end-drag\", () => { console.log(\"drag end\"); this._dragActive = false; });\n\n RegisterEvent(EventFactoryService.LastPOLoaded, CardDataUpdateEvent.LastPOLoaded);\n RegisterEvent(EventFactoryService.VPlacerCancel, CardDataUpdateEvent.VPlacerCancel);\n RegisterEvent(EventFactoryService.RefreshPropertyPanel, CardDataUpdateEvent.RefreshPropertyPanel);\n RegisterEvent(EventFactoryService.SelectionChanged, CardDataUpdateEvent.SelectionChanged, async (eventParameters: unknown) => {\n for (const container of this._Containers) {\n if (container.Settings.Behaviour[\"connection-defined-interaction-on-selection-change\"] == false) {\n continue;\n }\n\n const connection = this._Connections.get(container.Settings.Fetch.method);\n if (connection == undefined) {\n continue;\n }\n\n const preEvents = container.Settings.Card[\"app-connection-settings\"][\"pre-selection-change-events\"] as Array<EventHandlerEvent> | undefined;\n if (preEvents && preEvents.length > 0) {\n for (const e of preEvents) await EventService.emitAsync(e.id as never, (e.data ?? {}) as never);\n }\n\n connection.InteractionOnSelectionChange(container.Context, eventParameters as CardContainerSelectionChangeEvent);\n\n const postEvents = container.Settings.Card[\"app-connection-settings\"][\"post-selection-change-events\"] as Array<EventHandlerEvent> | undefined;\n if (postEvents && postEvents.length > 0) {\n for (const e of postEvents) await EventService.emitAsync(e.id as never, (e.data ?? {}) as never);\n }\n }\n });\n RegisterEvent(EventFactoryService.CustomIcon_ExecuteCustomEvent, CardDataUpdateEvent.CustomIcon_ExecuteCustomEvent, async (eventParameters: unknown) => {\n for (const container of this._Containers) {\n if (container.Settings.Behaviour[\"connection-defined-interaction-on-icon-button\"] == false) {\n continue;\n }\n\n const connection = this._Connections.get(container.Settings.Fetch.method);\n if (connection == undefined) {\n continue;\n }\n\n const preEvents = container.Settings.Card[\"app-connection-settings\"][\"pre-icon-button-events\"] as Array<EventHandlerEvent> | undefined;\n const postEvents = container.Settings.Card[\"app-connection-settings\"][\"post-icon-button-events\"] as Array<EventHandlerEvent> | undefined;\n connection.InteractionOnIconButton(container.Context, eventParameters as CardContainerCustomIconButtonEvent, preEvents, postEvents);\n }\n });\n RegisterEvent(EventFactoryService.DeleteLO_after, CardDataUpdateEvent.DeleteLO_after);\n RegisterEvent(EventFactoryService.PropTransfer_afterDelete, CardDataUpdateEvent.PropTransfer_afterDelete);\n RegisterEvent(EventFactoryService.PropTransfer_afterSet, CardDataUpdateEvent.PropTransfer_afterSet);\n RegisterEvent(EventFactoryService.PropTransfer_beforeDelete, CardDataUpdateEvent.PropTransfer_beforeDelete);\n RegisterEvent(EventFactoryService.PropTransfer_beforeSet, CardDataUpdateEvent.PropTransfer_beforeSet);\n RegisterEvent(EventFactoryService.WallFitting_begin, CardDataUpdateEvent.WallFitting_begin);\n RegisterEvent(EventFactoryService.WallFitting_end, CardDataUpdateEvent.WallFitting_end);\n RegisterEvent(EventFactoryService.WallFitting_cancel, CardDataUpdateEvent.WallFitting_cancel);\n RegisterEvent(EventFactoryService.ChangePrice, CardDataUpdateEvent.ChangePrice);\n RegisterEvent(EventFactoryService.DeleteLO_before, CardDataUpdateEvent.DeleteLO_before);\n RegisterEvent(EventFactoryService.CameraOnDirty, CardDataUpdateEvent.CameraOnDirty);\n RegisterEvent(EventFactoryService.CameraOnStart, CardDataUpdateEvent.CameraOnStart);\n RegisterEvent(EventFactoryService.CameraOnEnd, CardDataUpdateEvent.CameraOnEnd);\n RegisterEvent(EventFactoryService.SendEvent, CardDataUpdateEvent.SendEvent);\n RegisterEvent(EventFactoryService.ModalWindowShown, CardDataUpdateEvent.ModalWindowShown);\n RegisterEvent(EventFactoryService.ModalWindowHidden, CardDataUpdateEvent.ModalWindowHidden);\n // RegisterEvent(EventFactoryService.OpenModal, CardDataUpdateEvent.OpenModal);\n }\n\n public get Containers(): Array<BaseCardContainer> {\n return this._Containers;\n }\n\n public Register(cardContainer: BaseCardContainer): void {\n //todo Update Events\n //todo clean up\n if (!this._Containers.includes(cardContainer)) {\n this._Containers.push(cardContainer);\n }\n }\n\n public Remove(cardContainer: BaseCardContainer): void {\n const index = this._Containers.indexOf(cardContainer);\n if (index < 0) return;\n this._Containers.splice(index, 1);\n }\n\n public RegisterAppConnection(service: BaseCardDataAppConnection) {\n if (this._Connections.has(service.Method)) {\n console.error(\"CardDataService> RegisterAppConnection failed! The same AppConnection can not be registered twice!\");\n return;\n }\n this._Connections.set(service.Method, service);\n }\n\n public GetAppConnection(method_: string): BaseCardDataAppConnection | undefined {\n return this._Connections.get(method_);\n }\n public TriggerAction(method_: string | undefined | unknown, action_: CardDataServiceAction, parameters_: CardDataServiceActionParameters): any {\n if (method_ == undefined) {\n return undefined;\n }\n if (typeof method_ != \"string\") {\n return undefined;\n }\n const connection = this.GetAppConnection(method_);\n if (connection == undefined) {\n return undefined;\n }\n\n switch (action_) {\n case CardDataServiceAction.CheckUpdate:\n return this.TriggerCheckUpdate(connection, parameters_ as CheckUpdateParameters);\n case CardDataServiceAction.Fetch:\n return this.TriggerFetch(connection, parameters_ as FetchParameters);\n case CardDataServiceAction.Filter:\n return this.TriggerFilter(connection, parameters_ as FilterParameters);\n case CardDataServiceAction.CreateCards:\n return this.TriggerCreateCards(connection, parameters_ as CreateCardsParameters);\n case CardDataServiceAction.GetFilterSelectionAdditionalParams:\n return this.TriggerGetFilterSelectionAdditionalParams(connection, parameters_ as GetFilterSelectionAdditionalParamsParameters);\n case CardDataServiceAction.GetFilterSelectionStrategy:\n return this.TriggerGetFilterSelectionStrategy(connection, parameters_ as GetFilterSelectionStrategyParameters);\n case CardDataServiceAction.InitFilterSelectionParams:\n return this.TriggerInitFilterSelectionParams(connection, parameters_ as InitFilterSelectionParamsParameters);\n case CardDataServiceAction.ClickCard:\n return this.TriggerClickCard(connection, parameters_ as ClickCardParameters);\n case CardDataServiceAction.ClickCardButton:\n return this.TriggerClickCardButton(connection, parameters_ as ClickCardButtonParameters);\n case CardDataServiceAction.TextFieldChanged:\n return this.TriggerTextFieldChanged(connection, parameters_ as TextFieldChangedParameters);\n case CardDataServiceAction.CheckSpecialInteractionContext:\n return this.TriggerCheckSpecialInteractionContext(connection, parameters_ as CheckSpecialInteractionContextParameters);\n default:\n return undefined;\n }\n }\n\n public async TriggerCheckUpdate(connection: BaseCardDataAppConnection, parameters_: CheckUpdateParameters): Promise<CardContainerUpdate> {\n return await connection.CheckUpdate(parameters_.event, parameters_.eventParameters, parameters_.context);\n }\n public async TriggerFetch(connection: BaseCardDataAppConnection, parameters_: FetchParameters): Promise<FetchResult> {\n return await connection.Fetch(parameters_.context);\n }\n public TriggerFilter(connection: BaseCardDataAppConnection, parameters_: FilterParameters): FetchResult {\n return connection.Filter(parameters_.unfiltered, parameters_.context, parameters_.active);\n }\n public TriggerCreateCards(connection: BaseCardDataAppConnection, parameters_: CreateCardsParameters): Map<CardDataLevelKey, CardDataLevel> {\n return connection.CreateCards(parameters_.filtered, parameters_.context);\n }\n public TriggerGetFilterSelectionAdditionalParams(connection: BaseCardDataAppConnection, parameters_: GetFilterSelectionAdditionalParamsParameters): { [key: string]: unknown } | undefined {\n return connection.GetFilterSelectionAdditionalParams(parameters_.context);\n }\n public TriggerGetFilterSelectionStrategy(connection: BaseCardDataAppConnection, parameters_: GetFilterSelectionStrategyParameters): FilterSelectionStrategy {\n return connection.GetFilterSelectionStrategy(parameters_.context);\n }\n public TriggerInitFilterSelectionParams(connection: BaseCardDataAppConnection, parameters_: InitFilterSelectionParamsParameters): void {\n return connection.InitFilterSelectionParams(parameters_.context);\n }\n public TriggerClickCard(connection: BaseCardDataAppConnection, parameters_: ClickCardParameters) {\n return connection.Click(parameters_.card, parameters_.context);\n }\n public TriggerClickCardButton(connection: BaseCardDataAppConnection, parameters_: ClickCardButtonParameters) {\n return connection.ClickCardButton(parameters_.data, parameters_.card, parameters_.context);\n }\n public TriggerTextFieldChanged(connection: BaseCardDataAppConnection, parameters_: TextFieldChangedParameters) {\n return connection.TextFieldChanged(parameters_.card, parameters_.context, parameters_.field);\n }\n public async TriggerCheckSpecialInteractionContext(connection: BaseCardDataAppConnection, parameters_: CheckSpecialInteractionContextParameters): Promise<CardContainerSpecialInteractionContext> {\n return await connection.CheckSpecialInteractionContext(parameters_.context);\n }\n\n\n public GetMethod(context: CardContainerContext): CardFetchMethod {\n if (context.settings.Fetch.method == CardFetchMethod.ConfiguratorFormFilter) {\n if (context.settings.Fetch.parameters.method != undefined && (context.settings.Fetch.parameters.method as string).length > 0) {\n return context.settings.Fetch.parameters.method as CardFetchMethod;\n }\n }\n return context.settings.Fetch.method;\n }\n\n\n\n public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n const connection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (connection == undefined) return CardContainerUpdate.NONE;\n return connection.CheckUpdate(event, eventParameters, context);\n }\n\n public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (fetchConnection == undefined) {\n console.error(\"Fetch Method does not exist!: \" + context.settings.Fetch.method);\n return {};\n }\n\n try {\n const result = await fetchConnection.Fetch(context);\n return result;\n } catch (error) {\n console.warn(\"Fetch Failed! error: \" + error);\n }\n return {};\n }\n\n public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n const filterConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (filterConnection == undefined) return {};\n\n const filtered = filterConnection.Filter(unfiltered, context, active);\n return filtered;\n }\n\n public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const createConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (createConnection == undefined) return new Map<CardDataLevelKey, CardDataLevel>();\n\n const cards = createConnection.CreateCards(filtered, context);\n return cards;\n }\n\n public GetFilterSelectionAdditionalParams(context: CardContainerContext): { [key: string]: unknown } | undefined {\n const connection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (connection == undefined) return undefined;\n\n return connection.GetFilterSelectionAdditionalParams(context);\n }\n\n public GetFilterSelectionStrategy(context: CardContainerContext): FilterSelectionStrategy {\n const connection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (connection == undefined) return FilterSelectionStrategy.NONE;\n\n return connection.GetFilterSelectionStrategy(context);\n }\n\n public InitFilterSelectionParams(context: CardContainerContext): void {\n const connection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (connection) {\n connection.InitFilterSelectionParams(context);\n }\n }\n\n public async WaitForAllCardContainerFetchPromises(): Promise<void> {\n for (const container of this._Containers) {\n await container.CheckFetchPromise();\n await container.updateComplete;\n }\n }\n\n public GetFormattedCardDragData(card: CardData, context: CardContainerContext): IDragOptions | undefined {\n if (context.settings.Fetch.method.length < 1) {\n console.error(\"FetchCardDragData Error! No method in fetch settings!\", \"settings:\", context.settings, \"card:\", card);\n return undefined;\n }\n\n const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (fetchConnection) {\n return fetchConnection.GetFormattedDragData(card, context);\n }\n }\n\n public async ClickCard(card: CardData, context: CardContainerContext) {\n if (!context.states.PreventAppConnectionClick) {\n const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (fetchConnection) {\n await fetchConnection.Click(card, context);\n }\n }\n }\n\n public async ClickCardButton(data: { [key: string]: unknown } | undefined, card: CardData, context: CardContainerContext) {\n const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (fetchConnection) {\n await fetchConnection.ClickCardButton(data, card, context);\n }\n }\n\n public async TextFieldChanged(card: CardData, context: CardContainerContext, input: ICardDataInputSource) {\n const fetchConnection = this._Connections.get(context.settings.Fetch.method);\n if (fetchConnection) {\n await fetchConnection.TextFieldChanged(card, context, input);\n }\n }\n\n private MakeCardClickString(data_: unknown): string {\n if (data_ == undefined) return \"\";\n if (typeof data_ == \"object\" && data_ != undefined) return JSON.stringify(data_);\n if (typeof data_ != \"string\") return data_.toString();\n return data_;\n }\n\n public PrepareClickedCardEventData(data: EventHandlerEventData, clickData: {\n [key: string]: unknown\n }, additionalClickDataKeys?: Array<{ key: string, data: unknown }>): EventHandlerEventData {\n if (clickData == undefined) return data;\n\n const replaceData = clickData as { [key: string]: unknown };\n const clickDataKeys = [\"level-key\", \"next-level-key\", \"previous-level-key\", \"priority\", \"strategy\"];\n if (additionalClickDataKeys != undefined) {\n for (const data of additionalClickDataKeys) {\n clickDataKeys.push(data.key);\n replaceData[data.key] = data.data;\n }\n }\n\n let dataString = JSON.stringify(data);\n for (const key of clickDataKeys) {\n dataString = dataString.replaceAll(\"|\" + key + \"|\", this.MakeCardClickString(clickData[key]));\n }\n dataString = dataString.replaceAll(new RegExp(\"[|][a-z]+[|]\", \"gi\"), \"\");//remove any replacers without value. i to make it ignore case (shorten & simplify regular expression)\n data = JSON.parse(dataString);\n return data;\n }\n\n public PrepareClickedCardEventsData(event: Array<EventHandlerEvent>, clickData: {\n [key: string]: unknown\n }, additionalClickDataKeys?: Array<{ key: string, data: unknown }>) {\n const newArray = new Array<EventHandlerEvent>();\n for (const cardAccordionEvent of event) {\n if (cardAccordionEvent.data) {\n newArray.push({\n id: cardAccordionEvent.id,\n data: this.PrepareClickedCardEventData(cardAccordionEvent.data, clickData, additionalClickDataKeys)\n });\n }\n }\n return newArray;\n }\n\n public async CheckSpecialInteractionContext(context: CardContainerContext): Promise<CardContainerSpecialInteractionContext> {// check though app connection if any of the elements displayed in cards represents an object planned in the scene (or more specific constraints through parameters)\n if (context.states.HandleAppConnectionPlanningSituationState) {\n const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n if (fetchConnection) {\n return fetchConnection.CheckSpecialInteractionContext(context);\n }\n }\n return CardContainerSpecialInteractionContext.ERROR;\n }\n}\n\nexport const CardDataService = new CardDataServiceClass();\n","import type { CardContainerBackButtonComponent } from \"../components/standard/card-container/controls\";\nimport type { BaseCardContainer } from \"../components/standard/card-container/base/base-card-container\";\nimport { CardContainersShared } from \"../components/standard/card-container/internals/card-containers-shared-data\";\nimport { ComponentService } from \"./component.service\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport { CardContainerChildWildcard } from \"../models/card-container\";\nimport { CardDataService } from \"./card.data.service\";\nimport type { RootLevelSelectionCardContainerComponent } from \"../components/standard/card-container/containers/root-level-selection-card-container.component\";\n\nexport interface RefreshCardContainersParams {\n refetch?: boolean\n includeHidden?: boolean,\n awaitFetches?: boolean\n forceSwapSelectedProgramBeforeRefetch?: string\n selectionResultFilterResetTargets?: CardContainerChildWildcard[]\n selectionResultFilterResetExcludes?: CardContainerChildWildcard[]\n}\n\nexport class CardContainerEventContainer {\n\n public static async RefreshAll(params: RefreshCardContainersParams) {\n const {\n refetch,\n awaitFetches = true,\n includeHidden,\n forceSwapSelectedProgramBeforeRefetch = \"\",\n selectionResultFilterResetTargets = [],\n selectionResultFilterResetExcludes = []\n } = params;\n\n if(awaitFetches) {\n await CardDataService.WaitForAllCardContainerFetchPromises();\n }\n\n let components = CardContainersShared.AllContainers;\n if (selectionResultFilterResetTargets) {\n const resetTargetElements = new Array<BaseCardContainer>();\n for (const resetTarget of selectionResultFilterResetTargets) {\n resetTargetElements.push(...(ComponentService.findAll(resetTarget.tag, resetTarget.query) as Array<BaseCardContainer>));\n }\n for (const resetTargetElement of resetTargetElements) {\n if (resetTargetElement.Filter != undefined) {\n resetTargetElement.Filter.Reset(false, resetTargetElement.Context);\n }\n }\n }\n if (selectionResultFilterResetExcludes) {\n const excluded: HTMLElement[] = [];\n for (const excludedResetTarget of selectionResultFilterResetExcludes) {\n excluded.push(...(ComponentService.findAll(excludedResetTarget.tag, excludedResetTarget.query) as Array<BaseCardContainer>));\n }\n components = components.filter(x => !excluded.includes(x));\n }\n\n for (const component of components) {\n if (component.hideElement && includeHidden == false) continue;\n\n if (refetch) {\n if (forceSwapSelectedProgramBeforeRefetch !== undefined && forceSwapSelectedProgramBeforeRefetch !== \"\") {\n component.Settings.Program = forceSwapSelectedProgramBeforeRefetch;\n }\n component.Refetch();\n } else {\n component.requestUpdate();\n }\n }\n }\n\n public static RefreshBackButtons(): void {\n const backButtons = ComponentService.findAll(\"fv-card-container-back-button\") as Array<CardContainerBackButtonComponent>;\n for (const backButton of backButtons) {\n backButton.requestUpdate();\n }\n }\n public static ResetSelectionResultFilter(data: EventHandlerEventData): void {\n const query: string | undefined = data.query ? data.query as string : undefined;\n const cardContainer = ComponentService.find((data.tag as string), query) as BaseCardContainer;\n if (cardContainer && cardContainer.Filter != undefined) {\n cardContainer.Filter.Reset(true, cardContainer.Context);\n }\n }\n public static SetShowBeforeSlot(data: EventHandlerEventData): void {\n const query: string | undefined = data.query ? data.query as string : undefined;\n const cardContainer = ComponentService.find((data.tag as string), query) as BaseCardContainer;\n if (cardContainer) {\n cardContainer.ShowBeforeSlot = data.state as boolean | undefined;\n }\n }\n public static SetShowIdSlot(data: EventHandlerEventData): void {\n const query: string | undefined = data.query ? data.query as string : undefined;\n const cardContainer = ComponentService.find((data.tag as string), query) as BaseCardContainer;\n if (cardContainer) {\n cardContainer.ShowIdSlot = data.state as boolean | undefined;\n }\n }\n public static Clear(data: EventHandlerEventData): void {\n const query: string | undefined = data.query ? data.query as string : undefined;\n const containers = ComponentService.findAll((data.tag as string), query) as Array<BaseCardContainer>;\n if (containers) {\n for (const container of containers) {\n if (container.Filter) {\n container.Filter.Reset(true, container.Context);\n }\n container.requestUpdate();\n }\n }\n }\n public static ReTriggerSingleEntrySkip(data: EventHandlerEventData): void {\n const query: string | undefined = data.query ? data.query as string : undefined;\n const containers = ComponentService.findAll((data.tag as string), query) as Array<BaseCardContainer>;\n if (containers) {\n for (const container of containers) {\n if ((container as RootLevelSelectionCardContainerComponent).ReTriggerSingleEntrySkip) {\n (container as RootLevelSelectionCardContainerComponent).ReTriggerSingleEntrySkip();\n }\n }\n }\n }\n public static Refetch(data: EventHandlerEventData): void {\n const query: string | undefined = data.query ? data.query as string : undefined;\n const containers = ComponentService.findAll((data.tag as string), query) as Array<BaseCardContainer>;\n if (containers) {\n for (const container of containers) {\n const previousValue = container?.Context?.settings?.Fetch?.parameters[\"clear-cache\"];// previousValue usually == undefined is intended behaviour!\n if (data[\"clear-cache\"]) {\n container.Context.settings.Fetch.parameters[\"clear-cache\"] = true;\n }\n container.Refetch().then(()=>{\n if (data[\"clear-cache\"]) {\n container.Context.settings.Fetch.parameters[\"clear-cache\"] = previousValue;\n }\n });\n }\n }\n }\n public static ClickCard(data: EventHandlerEventData) {\n if (data[\"indexInList\"] == undefined) {\n console.warn(\"triggered card-containers:click-card without providing the card-index to click!\");\n return;\n }\n const index = data[\"indexInList\"] as number;\n const query: string | undefined = data.query ? data.query as string : undefined;\n const containers = ComponentService.findAll((data.tag as string), query) as Array<BaseCardContainer>;\n if (containers && containers.length > 0) {\n for (const container of containers) {\n container.TriggerCardClick(index, data[\"ensure-inactive\"] as boolean);\n }\n return;\n }\n console.warn(\"[card-containers:click-card]: Target(s) could not be found! tag:\", data.tag, \"query:\", data.query);\n }\n}\n","export interface IGetTextParams {\n TID?: string; // TextID\n GTN?: string; // GlobalTableName\n Manu?: string\n Prog?: string\n\n isArticle?: number;\n onlyManufacturerText?: number;\n}\n\nexport interface IImageResponse {\n imgPath: string;\n}\n\nexport interface ITextResponse {\n T: string;\n key?: string;\n}\n\nexport interface IDimensionInfo {\n dimensions: {\n width: Array<number>\n height: Array<number>\n depth: Array<number>\n }\n}\n\nexport interface IEquipmentData {\n Active: boolean,\n ArtNr: string,\n artText: string,\n bg: string,\n Cats: Array<string>,\n CatString: string,\n EntryValidID: string,\n frontState: number,\n HasLighting: number,\n hideDelete: number,\n hideEquipment: number,\n hideFront: number,\n hideInsert: number,\n hideMove: number,\n hideRefresh: number,\n id: string,\n imgName: string,\n InsertType: string,\n isNewArticle: number,\n jsAN: string,\n jsaNumber: string,\n NotClickable: number,\n PT_ID: string,\n ShowArtNo: number,\n typG: string,\n}\n\nexport interface ICategoryData {\n id: string\n name: string\n priority: number,\n children?: Array<ICategoryData>,\n parent?: string,\n order?: number\n}\n\nexport interface IKataTreeData {\n definedEquipmentFilterCategories: Array<ICategoryData>;\n definedFilterCategories: Array<ICategoryData>;\n FittingInfo: Array<IFittingData>;\n allKataPages: Array<ICategoryData>;\n kataPages: Array<ICategoryData>;\n distinctProgCatsFromDb: Array<string>;\n}\n\nexport interface IRangeInDimensions {\n groups: {\n categories: string[];\n articles: string[];\n dx: number;\n dy: number;\n dz: number;\n }[]\n}\n\nexport interface IProgramLevelTree {\n level1: Array<{\n id: string\n level2?: Array<{\n id: string\n program: string\n name: string\n order: number\n }>\n program?: string\n name: string\n order: number\n }>\n}\n\nexport interface IFittingData {\n artNr: string\n jsAN: string\n}\n\nexport interface IPlaceWallElementNextCenterParams {\n type: \"DOOR\" | \"WINDOW\" | \"ELECTRICAL\" | \"PLUMBING\" | \"VENTILATION\" | \"COMMUNICATION\" | \"HEATING\",\n wallinstanceident: number,\n article: string,\n width?: number,\n height?: number,\n parapet?: number,\n hinge?: \"L\" | \"R\",\n frame?: \"I\" | \"A\"\n}\n\nexport interface IStartKataPageFilterOptions {\n filterBySceneArticles: boolean;\n}\n\nexport interface IKataPageData {\n Modules: Array<IModuleData<IArticleData>> | Array<IModuleData<IEquipmentData>>;\n}\n\nexport interface IModuleData<T> {\n Articles: Array<Array<T>>;\n Index: number;\n ModuleCaption: string;\n UserVal: string;\n infoText: string;\n labelTextB: string;\n labelTextH: string;\n labelTextT: string;\n moduleId: string;\n templ: string;\n}\n\nexport interface IArtValue {\n id: string\n text: string\n unit: string\n values: string[]\n}\n\nexport interface IArticleData {\n Allowed: string\n Anschl: string\n ArtCategories: string[]\n ArtNr: string\n ArtNrAlternativeERP: string\n ArtNrAnschlag: string\n artPropVars: any[]\n artText: string\n artPrice: number\n artTextLong: string\n ArtTexts: string[]\n ArtValues: IArtValue[]\n CatRel: string\n CatString: string\n CftCL: string\n CftCR: string\n CftType: string\n CftTypeUnique: string\n ClassID: string\n Des: string\n Dispdx: string\n Dispdy: string\n Dispdz: string\n dxma: string\n dxmi: string\n dyma: string\n dymi: string\n dzma: string\n dzmi: string\n entityT: string\n EntryValidID: string\n FilterByArtFilter: string\n FittingString: string\n forceAutoGenImages: number\n GA: string\n HasClassValue: string\n HasCrossArticle: string\n hasHingeChange: number\n HasLighting: number\n HideByCategory: string\n hideEquipment: number\n hideXbyArtpropDataVars: number\n hideYbyArtpropDataVars: number\n hideZbyArtpropDataVars: number\n id: string\n IDM: string\n imgName: string\n InsertType: string\n InternalArt: string\n KataConstGroup: string\n kataDepth: string // removed?\n kataHeight: string // removed?\n kataWidth: string // removed?\n Manu: string\n ManuName: string\n MMdx: string\n MMdy: string\n MMdz: string\n NotClickable: number\n OffsetDx: string\n OffsetDy: string\n OffsetDz: string\n PoString: string\n Prog: string\n ProgName: string\n PropTransString: string\n ShoppingCartString: string\n ShowArtNo: number\n TypG: string\n VPlacerID: string\n}\n\nexport interface ICatalogEnvironment {\n association: string,\n associationList: Array<{ id: string, name: string }>,\n catalogPage: string,\n catalogPages: Array<{ id: string, indention: number, name: string, page: string, style: string }>,\n catalogTitle: string,\n hasBigCalcInfo: number,\n language: string,\n languageList: Array<string>,\n level1: string,\n level1Entries: Array<{ id: string, name: string }>,\n level2: string,\n level2Entries: Array<{ id: string, name: string }>,\n logoImagePath: string,\n manufacturer: string,\n manufacturerHash: string,\n manufacturerList: Array<{ id: string, name: string }>,\n pricingCountries: Array<string>,\n pricingCountry: string,\n program: string,\n programHash: string\n}\n\nexport interface IRawCatConfig {\n cat_config: Array<string>\n}\n\nexport interface ICatConfig {\n category: string\n module: string,\n attributes: string[],\n defaultArt: string\n group: string\n}\n\nexport interface IProgListProg {\n fromManu: string,\n fromManuHash: string\n fromProg: string\n fromProgHash: string\n manu: string\n manuHash: string\n name: string\n pageKata: string\n progHash: string\n refs: unknown\n text: string\n}\n\nexport interface ILoadArticleParams {\n artNr: string\n placingDirection?: string\n objectHandling?: string\n program?: string\n manufacturer?: string\n extraWidth?: string\n extraDepth?: string\n extraHeight?: string\n additionalInfo_0?: string\n additionalInfo_1?: string\n additionalInfo_2?: string\n additionalInfo_3?: string\n additionalInfo_4?: string\n tableID?: string\n hingeChanged?: string\n}\n\nexport enum eCatalogFilterState {\n DISABLED = 0,\n SELECTED = 1,\n IMPLICIT = 2,\n EXPLICIT = 3\n};\n\nexport interface ICreateStdCatalogFilterCtxRequest {\n ctx: string;\n items: [string, string[]][];\n filter: [string, string[]][];\n selection?: string[]\n}\n\nexport interface IDisposeCatalogFilterCtxRequest {\n ctx: string;\n}\n\nexport interface IRunStdCatalogFilterCtxRequest {\n ctx: string;\n selection: string[]\n}\n\nexport interface ICreateStdCatalogFilterCtxResponse extends Partial<IRunStdCatalogFilterCtxResponse> {\n ctx: string;\n}\n\nexport interface IRunStdCatalogFilterCtxResponse {\n filterGroups: {\n [groupId: string]: {\n id: string;\n state: eCatalogFilterState;\n }[];\n };\n itemGroups: {\n filter: string[],\n items: string[];\n }[];\n}\n\nexport interface IDisposeCatalogFilterCtxResponse {\n succsess: boolean;\n}\n","import {IModifyPropertyOptions} from \"./index\";\n\nexport interface IDragOptions {\n id: string;\n type: string | number;\n\n dragType?: number;\n mode?: string | number;\n pickLevel?: number | string;\n size?: any,\n extData?: any;\n options?: IModifyPropertyOptions\n}\n\nexport enum DragDirection {\n NONE,\n Horizontal,\n Vertical\n}\n\nexport enum DragType {\n ARTICLE = 0,\n PROPTRANSFER = 1,\n BY_MODE = 2,\n FITTING = 3,\n WALL_FITTING = 4,\n PROGPROPERTY = 5\n}\n","export const VIH_PLANTYPE_ZUSATZINFO_0 = \"10580\";\nexport const VIH_PLANTYPE_ZUSATZINFO_1 = \"10581\";\nexport const VIH_PLANTYPE_ZUSATZINFO_2 = \"10582\";\nexport const VIH_PLANTYPE_ZUSATZINFO_3 = \"10583\";\nexport const VIH_PLANTYPE_ZUSATZINFO_4 = \"10584\";\nexport const VIH_PLANTYPE_DX = \"10514\";\nexport const VIH_PLANTYPE_DY = \"10515\";\nexport const VIH_PLANTYPE_DZ = \"10516\";\nexport const VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L = \"11205\";\n\nexport interface IPlacerExtParam {\n [VIH_PLANTYPE_ZUSATZINFO_0]?: any;\n [VIH_PLANTYPE_ZUSATZINFO_1]?: any;\n [VIH_PLANTYPE_ZUSATZINFO_2]?: any;\n [VIH_PLANTYPE_ZUSATZINFO_3]?: any;\n [VIH_PLANTYPE_ZUSATZINFO_4]?: any;\n [VIH_PLANTYPE_DX]?: any;\n [VIH_PLANTYPE_DY]?: any;\n [VIH_PLANTYPE_DZ]?: any;\n [VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L]?: any;\n}\n\nexport interface IExternalPlacerParameter {\n manufacturer: string\n program: string\n extParameter?: IPlacerExtParam\n articleNumber: string\n preventVPlacer?: boolean\n once?: boolean\n}\n\nexport enum OverrideMode {\n NONE = 0,\n RESET = 1,\n RESET_MANUFACTURER = 2,\n RESET_ALL = 3\n}\n\nexport interface IPlacerReplaceData {\n categories: Array<string>,\n \"replace-limit-manufacturer\"?: Array<string>,\n \"replace-limit-program\"?: Array<string>,\n \"align-to-front\": boolean\n}\n\nexport interface IPlacerGroup {\n id: string;\n components: string[];\n}\n\nexport interface IPlacerGroupProgramComponent {\n article: string;\n cat: string;\n}\n\nexport interface IPlacerGroupProgram {\n manu: string;\n prog: string;\n components: IPlacerGroupProgramComponent[];\n}\n\nexport interface ICreatePlacerGroupRequest {\n groupId: string;\n components: {\n [key: string]: {\n manu: string;\n prog: string;\n article: string;\n }\n };\n resetScene?: boolean;\n}\n\nexport interface IPossiblePlacerGroupResponse {\n groups: IPlacerGroup[];\n programs: IPlacerGroupProgram[];\n}\n","import {IProgPropertyManufacturer} from \"./properties.types\";\n\nexport interface IContextTargetFilter {\n article: string;\n}\n\nexport interface IContextInitializer {\n type: string;\n}\n\nexport interface IArticleInitializer extends IContextInitializer {\n type: \"art\";\n article: string;\n}\n\nexport interface IVirtualArticleInitializer extends IContextInitializer {\n type: \"vart\";\n article: string;\n}\n\nexport interface IPropTransferInitializer extends IContextInitializer {\n type: \"ptm\";\n ptId: string;\n}\n\nexport interface IAllInitializer extends IContextInitializer {\n type: \"all\";\n}\n\nexport interface IContextInitOptions {\n initializer?: IVirtualArticleInitializer | IArticleInitializer | IPropTransferInitializer | IAllInitializer;\n filter?: IContextTargetFilter;\n}\n\nexport enum ContextFilterStrategy {\n ALL = 0,\n GLOBAL = 1,\n LOCAL = 2\n}\n\nexport interface IProgContextInitData {\n contextId: string,\n initializer?: IContextInitializer\n manufacturer?: string\n program?: string\n filter?: IContextTargetFilter\n}\n\nexport interface IInitProgContextParameters {\n manufacturer?: string\n program?: string\n contextInfo?: IProgContextInitData[],\n useRelevant?: boolean\n useSelection?: boolean\n instanceIdents?: Array<number>\n ignoreAccess?: boolean,\n}\n\nexport interface IGetProgContextParameters extends IInitProgContextParameters{\n filterStrategy?: ContextFilterStrategy\n}\n\nexport interface IDisposeContextParameters {\n contextIds: Array<string>;\n}\n\nexport interface IProgPropertyContext extends IProgPropertyManufacturer {\n contextId: string;\n}\n","export enum ZoomType {\n ZOOMAUTO_EXTENDEDAPOINT,\n ZOOMAUTO_EXTENDEDDIR,\n ZOOMAUTO_FRONTCLIP,\n ZOOMAUTO_ROTATE2PI,\n ZOOMAUTO_ORTHOCLIP,\n ZOOMAUTO_ZOOMFACTOR,\n ZOOMAUTO_ORTHOFRONT,\n ZOOMAUTO_PANUPDOWN,\n ZOOMAUTO_EXTENDEDCURDIR,\n ZOOMAUTO_CAM_ROTATEMPV,\n ZOOMAUTO_CAM_ROTATEMPH,\n ZOOMAUTO_CAM_ROTATEABOUTMARKED,\n ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT,\n ZOOMAUTO_CAM_ROTATEEYEUPDOWN,\n ZOOMAUTO_CAM_ROTATELEFTRIGHT,\n ZOOMAUTO_CAM_MOVELEFTRIGHT,\n ZOOMAUTO_CAM_MOVEAXIS3D,\n ZOOMAUTO_CAM_MOVEUPDOWN,\n ZOOMAUTO_CAM_SETVIEWPOINTMODE\n}\n\nexport enum Perspectives {\n TopLeftFront = -1000109,\n TopRightFront = -1000110,\n TopLeftBack = -1000108,\n TopRightBack = -1000107,\n Left = -1000102,\n Right = -1000101,\n Front = -1000106,\n Back = -1000105,\n Top = -1000103\n}\n\nexport interface IZoomParameters {\n Perspective: Perspectives\n direction?: Array<number>,\n type?: ZoomType,\n animated?: boolean,\n offset?: number\n}\n\nexport interface ICameraFitParameters {\n instanceIdents?: number[]\n includePOs?: boolean;\n onlyPrimaryWalls?: boolean;\n offset?: number;\n}\n\nexport interface IPanCameraParameters {\n deltaX: number;\n deltaY: number;\n}\n","import { Perspectives } from \"@dh-software/webui-types\";\n\nexport interface SearchPerspectives {\n [key: string]: Perspectives;\n}\n\nexport const SEARCH_PERSPECTIVES: SearchPerspectives = {\n \"TopLeftFront\": Perspectives.TopLeftFront,\n \"TopRightFront\": Perspectives.TopRightFront,\n \"TopLeftBack\": Perspectives.TopLeftBack,\n \"TopRightBack\": Perspectives.TopRightBack,\n \"Left\": Perspectives.Left,\n \"Right\": Perspectives.Right,\n \"Front\": Perspectives.Front,\n \"Back\": Perspectives.Back,\n \"Top\": Perspectives.Top,\n};\n","import {\n CommunicationMessageService,\n ConfiguratorApiService,\n EventDeclaration,\n EventService,\n GoogleAnalyticsService,\n LocaleService,\n UtilityService,\n WebViewerService,\n} from \"@dh-software/webui-api\";\nimport { ConstructionService, EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport {\n ICameraFitParameters,\n IConfiguratorApiDataValue,\n IModifyPropertyOptions,\n ISwitchTransferLevelOptions,\n IZoomParameters,\n} from \"@dh-software/webui-types\";\nimport { ConfiguratorApiDataService, IConfiguratorApiFetchEventData } from \"../../utils/configurator-api.data.service\";\nimport { ISetManuProgData, ManuProgService } from \"../../utils/manu-prog.service\";\nimport { DispatchStatePayload } from \"./component-state-event\";\nimport { ComponentService } from \"../../utils/component.service\";\nimport { UtilService } from \"../../utils/util.service\";\nimport { CloudIdService } from \"../../utils/cloud-id.service\";\nimport { SessionStorageService } from \"../../utils/session-storage.service\";\nimport { CardContainerEventContainer } from \"../../utils/card-container-event.service\";\nimport { CardDataService } from \"../../utils/card.data.service\";\nimport { SEARCH_PERSPECTIVES } from \"../perspective/search-perspectives\";\nimport { ISendToCartParameter } from \"../../define/interface\";\nimport { DhElement } from \"../../components/standard/base/base.component\";\n\ndeclare module \"@dh-software/webui-api\" {\n export interface Events extends EventDeclaration {\n \"send-cloud-id-to-owner\": never;\n \"send-to-owner\": EventHandlerEventData;\n \"camera-zoom-in\": never;\n \"camera-zoom-out\": never;\n \"reset-camera\": never;\n \"undo\": never;\n \"redo\": never;\n \"save\": EventHandlerEventData;\n \"download-generated-file\": EventHandlerEventData;\n \"download-furncloud-file\": EventHandlerEventData;\n \"trigger-animation\": never;\n \"toggle-front-state\": EventHandlerEventData;\n \"front-state\": EventHandlerEventData;\n \"toggle-accessoires\": EventHandlerEventData;\n \"show-ar-modal\": never;\n \"toggle-dimensions\": never;\n \"take-screenshot\": EventHandlerEventData;\n \"show-share-component\": never;\n \"communicator-message\": EventHandlerEventData;\n \"open-modal\": EventHandlerEventData;\n \"close-modal\": EventHandlerEventData;\n \"toggle-modal\": EventHandlerEventData;\n \"toggle-classes\": EventHandlerEventData;\n \"add-classes\": EventHandlerEventData;\n \"remove-classes\": EventHandlerEventData;\n \"steps-next\": EventHandlerEventData;\n \"steps-previous\": EventHandlerEventData;\n \"steps-first\": EventHandlerEventData;\n \"activate-step\": EventHandlerEventData;\n \"activate-current-step\": EventHandlerEventData;\n \"notify-step-stage-changed\": EventHandlerEventData;\n \"toggle-toolbar\": EventHandlerEventData;\n \"update-animation-toolbar-button\": EventHandlerEventData;\n \"toolbar-button-set-active\": EventHandlerEventData;\n \"webcab-toggle-dimension-visuals\": never;\n \"webcab-refresh-cabinets-toggle-ui\": never;\n \"set-attribute\": EventHandlerEventData;\n \"toggle-attribute\": EventHandlerEventData;\n \"delete-fitting\": EventHandlerEventData;\n \"move-fitting\": EventHandlerEventData;\n \"set-selectable\": EventHandlerEventData;\n \"update-filtered-catalogs\": EventHandlerEventData;\n \"open-link\": EventHandlerEventData;\n \"scroll-to-top\": EventHandlerEventData;\n \"send-to-cart\": EventHandlerEventData;\n \"card-container-set-show-before-slot\": EventHandlerEventData;\n \"card-container-set-show-id-slot\": EventHandlerEventData;\n \"card-containers-reset-selection-result-filter\": EventHandlerEventData;\n \"refresh-all-card-containers\": EventHandlerEventData;\n \"refetch-card-container\": EventHandlerEventData;\n \"trigger-root-level-selection-single-entry-skip\": EventHandlerEventData;\n \"clear-card-container\": EventHandlerEventData;\n \"card-containers:click-card\": EventHandlerEventData;\n \"refresh-all-configurator-forms\": never;\n \"refresh-all-filtered-catalogs\": never;\n \"toggle-api-state-reset-camera-save\": EventHandlerEventData;\n \"configurator-set-api-state\": EventHandlerEventData;\n \"configurator-api-state-toggle\": EventHandlerEventData;\n \"configurator-api-fetch\": IConfiguratorApiFetchEventData;\n \"reload-window\": EventHandlerEventData;\n \"set-fp-variable\": EventHandlerEventData;\n \"set-property\": EventHandlerEventData;\n \"set-attribute-on-url-with-cloud-id\": EventHandlerEventData;\n \"gtm-push\": { event: string, [key: string]: unknown };\n \"set-camera-zoom\": EventHandlerEventData;\n \"fit-camera-viewport\": ICameraFitParameters;\n \"place-article\": EventHandlerEventData;\n \"update-visibility\": EventHandlerEventData;\n \"update-accordion-heights\": EventHandlerEventData;\n \"update-slider-ranges\": EventHandlerEventData;\n \"execute-custom-event\": EventHandlerEventData;\n \"set-element-selected\": EventHandlerEventData;\n \"set-language\": EventHandlerEventData;\n \"save-current-scene-settings\": EventHandlerEventData;\n \"reset-scene-action\": EventHandlerEventData;\n \"configurator-form-page-open-view-mode\": EventHandlerEventData;\n \"set-manu-prog\": ISetManuProgData;\n \"disable-3d-text\": EventHandlerEventData;\n \"request-fullscreen\": { query: string } & EventHandlerEventData;\n \"dispatch-state\": DispatchStatePayload;\n \"switch-transfer-level\": ISwitchTransferLevelOptions;\n }\n}\n\n\nfunction emitLegacyEvent(name: string, data: any) {\n return EventService.emitAsync(name, data);\n}\n\n\n// Legacy event-name → state/event forwards. Each entry re-emits the corresponding\n// state (or plain global event) via EventService.emitAsync, packaging the payload in\n// the { data, target } envelope the state listeners (RegisterStateHandler) expect.\n// Fixed-tag states pass an explicit target; payload-targeted states pass only { data }\n// and let the state listener derive the target from the payload (first-match).\nexport const LegacyEventAliases = new Map<string, (params: any) => Promise<void> | void>([\n // Plain global-event forward (no \"tag:action\" state form).\n [\"toggle-front-state\", async (params: EventHandlerEventData) => emitLegacyEvent(\"front-state\", params)],\n\n // ---- fixed-target component states (target tag independent of the payload) ----\n [\"save-current-scene-settings\", async () => emitLegacyEvent(\"notice-list-mask:save-current-scene-settings\", { data: {}, target: { tag: \"fv-notice-list-mask\" } })],\n [\"show-ar-modal\", async () => emitLegacyEvent(\"fv-ar-modal:show\", { data: {}, target: { tag: \"fv-ar-modal\" } })],\n [\"notify-step-stage-changed\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-step:notify-stage-changed\", { data: params, target: { tag: \"fv-step\", all: true } })],\n [\"webcab-refresh-cabinets-toggle-ui\", async () => emitLegacyEvent(\"fv-webcab-ui-cabinets-toggle:refresh\", { data: {}, target: { tag: \"fv-webcab-ui-cabinets-toggle\", all: true } })],\n [\"refresh-all-configurator-forms\", async () => emitLegacyEvent(\"fv-configurator-form:refetch\", { data: {}, target: { tag: \"fv-configurator-form\", all: true } })],\n [\"refresh-all-filtered-catalogs\", async () => emitLegacyEvent(\"fv-filtered-catalog:update\", { data: { force: true }, target: { tag: \"fv-filtered-catalog\", all: true } })], // old data carried { force: true }\n [\"configurator-form-page-open-view-mode\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-configurator-form-page:open-view-mode\", { data: params, target: { tag: \"fv-configurator-form-page\", all: true } })],\n\n // ---- modals: payload tag/query overrides the default \"fv-modal\" ----\n [\"open-modal\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-modal:open\", { data: params, target: { tag: (params?.tag as string) || \"fv-modal\", query: params?.query as string } })],\n [\"close-modal\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-modal:close\", { data: params, target: { tag: (params?.tag as string) || \"fv-modal\", query: params?.query as string } })],\n [\"toggle-modal\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-modal:toggle\", { data: params, target: { tag: (params?.tag as string) || \"fv-modal\", query: params?.query as string } })],\n\n // ---- toggle-toolbar: fixed tag, optional selector from payload ----\n [\"toggle-toolbar\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-toggle-toolbar:toggle\", { data: {}, target: { tag: \"fv-toggle-toolbar\", query: (params?.selector as string) || \"\" } })],\n\n // ---- steps + payload-targeted updates: target derived from the payload (first-match) ----\n [\"steps-next\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:next\", { data: params })],\n [\"steps-previous\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:previous\", { data: params })],\n [\"steps-first\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:activate-first\", { data: params })],\n [\"activate-step\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:activate\", { data: params })],\n [\"activate-current-step\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:activate-current\", { data: params })],\n [\"update-filtered-catalogs\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-filtered-catalog:update\", { data: params })],\n [\"update-accordion-heights\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-accordion-item:update-height\", { data: params })],\n [\"update-slider-ranges\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-slider:update-range\", { data: params })],\n [\"toolbar-button-set-active\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-toolbar-button:set-active\", { data: params })], // old target tag came from the payload component\n\n // ---- generic DOM ops, now base-mixin states (target derived from payload, first-match) ----\n [\"add-classes\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:add-class\", { data: params })],\n [\"remove-classes\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:remove-class\", { data: params })],\n [\"toggle-classes\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:toggle-class\", { data: params })],\n [\"set-attribute\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:set-attribute\", { data: params })],\n [\"toggle-attribute\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:toggle-attribute\", { data: params })],\n [\"update-visibility\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:update-visibility\", { data: params })],\n // [\"scroll-to-top\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv:scroll-to-top\", { data: params, target: { tag: params?.tag as string, query: params?.selector as string, all: true } })], // NOTE: old no-tag `document.querySelector` fallback is NOT covered\n\n // ---- card-container events → BaseCardContainer states ----\n // [\"card-container-set-show-before-slot\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:set-show-before-slot\", { data: params, target: { tag: \"fv-card-container\" } })], // old: find (first)\n // [\"card-container-set-show-id-slot\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:set-show-id-slot\", { data: params, target: { tag: \"fv-card-container\" } })], // old: find (first)\n // [\"card-containers-reset-selection-result-filter\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:reset-selection-result-filter\", { data: params, target: { tag: \"fv-card-container\" } })], // old: find (first)\n // [\"clear-card-container\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:clear\", { data: params, target: { tag: \"fv-card-container\", all: true } })], // old: findAll\n // [\"refetch-card-container\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:refetch\", { data: params, target: { tag: \"fv-card-container\", all: true } })], // old: findAll\n // [\"card-containers:click-card\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:click-card\", { data: params, target: { tag: \"fv-card-container\", all: true } })], // old: findAll\n // [\"trigger-root-level-selection-single-entry-skip\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:retrigger-single-entry-skip\", { data: params, target: { tag: \"fv-card-container\", all: true } })], // old: findAll\n]);\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------\n// Handlers with real, non-forward logic (and the shared mutable state\n// `accessoires` / `front` that two of them keep across fires), ported verbatim\n// from the old EventHandlerServiceClass. The single instance below is the home\n// for every handler whose body is more than a single delegating call; the\n// GlobalEvents map forwards into it.\n// ---------------------------------------------------------------------------\nclass GlobalEventsContainerClass {\n private accessoires = false;\n private front: boolean | undefined = true;\n\n async sendCloudIdToOwner() {\n let parent: Element | Window = window;\n while (parent.parent && parent !== parent.parent) {\n parent = parent.parent;\n }\n (parent as Window).postMessage((await UtilService.getPDF(true)).cloudID, \"*\");\n }\n\n async sendToOwner(params: EventHandlerEventData) {\n let parent: Element | Window = window;\n while (parent.parent && parent !== parent.parent) {\n parent = parent.parent;\n }\n (parent as Window).postMessage(params.message, \"*\");\n }\n\n async downloadGeneratedFile(params: EventHandlerEventData) {\n const target = params.currentTarget as HTMLElement | undefined;\n target?.classList.add(\"loading\");\n\n if (params.fileType) {\n const fileType = params.fileType as string;\n const exportExtensions: Record<string, string> = {\n dxf: \"dxf\",\n obj: \"zip\",\n skp: \"skp\",\n xml: \"xml\",\n xls: \"xls\",\n xlsx: \"xlsx\",\n };\n\n const extension = exportExtensions[fileType];\n const data = extension\n ? await UtilService.generateExport(fileType)\n : await UtilService.getPDF(!!params.lastCloudID);\n\n const { url, cloudID } = data as { url: string; cloudID: string };\n UtilityService?.SaveToDisk(url, `planning_${cloudID}.${extension ?? \"pdf\"}`);\n }\n\n target?.classList.remove(\"loading\");\n }\n\n async downloadFurncloudFile(params: EventHandlerEventData) {\n const sessionStorageKey = params.sessionStorageKey as string;\n const hasFurncloudPassword = SessionStorageService.has(sessionStorageKey);\n if (hasFurncloudPassword) {\n const cloudId = await CloudIdService.getCloudId();\n const furncloudPassword = SessionStorageService.get(sessionStorageKey)?.password as string;\n const cloudData = await UtilService.getFurncloudFile(cloudId, params.fileType as string, furncloudPassword);\n if (cloudData) {\n if (cloudData.url && cloudData.url.length > 0) {\n UtilityService?.SaveToDisk(cloudData.url, `planning_${cloudId}.${params.fileType}`);\n }\n }\n }\n }\n\n async frontState(params: EventHandlerEventData) {\n if (params[\"default-state\"] != undefined && this.front == undefined) {\n this.front = params[\"default-state\"] as boolean;\n }\n let next = params.value !== undefined ? params.value as boolean : !this.front;\n if (params[\"prioritise-accessoires\"]) {\n next = !this.accessoires;\n }\n await CommunicationMessageService.frontState(next);\n this.front = params[\"prioritise-accessoires\"] ? undefined : next;\n }\n\n async toggleAccessoires(params: EventHandlerEventData) {\n let frontState = this.accessoires;\n if (params[\"prioritise-front-state\"] && this.front != undefined) {\n frontState = this.front;\n }\n await CommunicationMessageService.frontState(frontState);\n this.front = this.front != undefined ? frontState : undefined;\n this.accessoires = !this.accessoires;\n await CommunicationMessageService.setAccessories(this.accessoires);\n }\n\n async communicatorMessage(params: EventHandlerEventData) {\n const data: { command: string, args: Array<unknown> } = {\n command: params.command as string,\n args: (params.parameters ? params.parameters as Array<unknown> : []),\n };\n if (data.command) {\n return await WebViewerService.postMessage(data.command, ...data.args);\n }\n }\n\n async updateAnimationToolbarButton() {\n const animationStatus = await CommunicationMessageService.getAnimationStatus();\n if (animationStatus == undefined) return;\n await EventService.emitAsync(\"fv-animation-toolbar-button:sync-active\", { data: { mode: animationStatus.mode }, target: { tag: \"fv-animation-toolbar-button\", all: true } });\n }\n\n async webcabToggleDimensionVisuals() {\n const webcabUis = ComponentService.findAll(\"fv-webcab-ui\");\n if (webcabUis.length > 0) {\n await EventService.emitAsync(\"fv-webcab-ui:toggle-dimension-visuals\", { data: {}, target: { tag: \"fv-webcab-ui\", all: true } });\n } else {\n await EventService.emitAsync(\"configurator-api-state-toggle\", { data: {\n group: \"webcab-global-states\",\n target: \"WEBCAB_DIMENSION_VISUALS_DISABLED_L\",\n }});\n }\n }\n\n async deleteFitting(params: EventHandlerEventData) {\n if (params.level == undefined) return;\n await CommunicationMessageService.dhTodo([\n \"1\", {\n params: [(params.level as number + 1).toString()],\n manu: window.g_article.manu,\n kataManu: window.g_article.manu,\n },\n ]);\n }\n\n async moveFitting(params: EventHandlerEventData) {\n if (params.level == undefined) return;\n await CommunicationMessageService.dhTodo([\n \"1\", {\n params: [(params.level as number + 2).toString()],\n manu: window.g_article.manu,\n kataManu: window.g_article.manu,\n },\n ]);\n }\n\n async setSelectable(params: EventHandlerEventData) {\n if (params.type && Array.isArray(params.type)) {\n await CommunicationMessageService.setSelectableMultiTypes(params.type);\n return;\n }\n if (params.type && (params.type as string).length > 0) {\n await CommunicationMessageService.setSelectable(params.type as string);\n if (params.action && (params.action as string).length > 0) {\n await CommunicationMessageService.setSelectionActionGroup(params.action as string);\n }\n } else {\n await CommunicationMessageService.setSelectable();\n }\n }\n\n async openLink(params: EventHandlerEventData) {\n if (params[\"new-tab\"] && params.link) {\n window.open(params.link as string);\n return;\n }\n if (params.link) {\n window.location = params.link as string & Location;\n }\n }\n\n async sendToCart(params: EventHandlerEventData) {\n const externalParameters = params?.[\"external-parameters\"] as Array<{\n name: string,\n tag: string,\n property: string\n }>;\n let parameters: Array<{ parameter: string, value: string }> = [];\n\n if (externalParameters) {\n parameters = externalParameters.map((descriptor) => {\n const element = ComponentService.find(descriptor.tag) as unknown as ISendToCartParameter;\n return { parameter: descriptor.name, value: element[descriptor.property] as string };\n });\n }\n\n await CommunicationMessageService.addToCart(parameters);\n }\n\n async refreshAllCardContainers(params: EventHandlerEventData) {\n const refetch = params[\"refetch\"] == undefined ? false : params[\"refetch\"] as boolean;\n const includeHidden = params[\"include-hidden\"] == undefined ? false : params[\"include-hidden\"] as boolean;\n const selectionResultFilterResetTargets = params[\"selection-result-filter-reset-targets\"] as Array<{\n tag: string,\n query: string\n }>;\n const selectionResultFilterResetExcludes = params[\"selection-result-filter-reset-excludes\"] as Array<{\n tag: string,\n query: string\n }>;\n CardContainerEventContainer.RefreshAll({\n refetch, includeHidden, selectionResultFilterResetTargets, selectionResultFilterResetExcludes,\n });\n }\n\n async toggleApiStateResetCameraSave(params: EventHandlerEventData) {\n if (params.group && params.target) {\n const groupName = params.group as string;\n const targetName = params.target as string;\n\n const apiData = ConfiguratorApiDataService.Data;\n const groupData = apiData[groupName];\n\n if (groupData) {\n const targetData = groupData[targetName] as IConfiguratorApiDataValue;\n if (targetData && targetData.state !== undefined) {\n await ConfiguratorApiService.SetApiData({\n groups: [{\n name: groupName,\n modifications: [{\n target: targetName,\n type: \"int\",\n value: 1,\n }],\n }],\n });\n\n await CommunicationMessageService.resetCameraView(false);\n\n setTimeout(async () => {\n await CommunicationMessageService.frontState(true);\n await CommunicationMessageService.downloadPDF(params && params.custom ? params.custom as boolean : false);\n\n await ConfiguratorApiService.SetApiData({\n groups: [{\n name: groupName,\n modifications: [{\n target: targetName,\n type: \"int\",\n value: targetData.state ? 1 : 0,\n }],\n }],\n });\n }, 1000);\n }\n }\n }\n }\n\n async configuratorSetApiState(params: EventHandlerEventData) {\n if (params.group && params.target) {\n const groupName = params.group as string;\n const targetName = params.target as string;\n\n const apiData = ConfiguratorApiDataService.Data;\n const groupData = apiData[groupName];\n\n if (groupData) {\n if (Object.keys(groupData).includes(targetName)) {\n await ConfiguratorApiService.SetApiData({\n groups: [{\n name: groupName,\n modifications: [{\n target: targetName,\n type: \"int\",\n value: params.state as boolean ? 1 : 0,\n }],\n }],\n });\n }\n }\n }\n }\n\n async configuratorApiStateToggle(params: EventHandlerEventData) {\n if (params.group && params.target) {\n const groupName = params.group as string;\n const targetName = params.target as string;\n\n const apiData = ConfiguratorApiDataService.Data;\n const groupData = apiData[groupName];\n\n if (groupData) {\n const targetData = groupData[targetName] as IConfiguratorApiDataValue;\n if (targetData && targetData.state !== undefined) {\n await ConfiguratorApiService.SetApiData({\n groups: [{\n name: groupName,\n modifications: [{\n target: targetName,\n type: \"int\",\n value: targetData.state ? 0 : 1,\n }],\n }],\n });\n await EventService.emitAsync(\"refresh-all-configurator-forms\");\n }\n }\n }\n }\n\n async reloadWindow(params: EventHandlerEventData) {\n if (params && params.preventLeaveConfirmation !== undefined) {\n ConstructionService.PreventLeaveConfirmation = params.preventLeaveConfirmation as boolean;\n }\n window.location.reload();\n }\n\n async setFpVariable(params: EventHandlerEventData) {\n await WebViewerService.IsAppReady;\n await CommunicationMessageService.dhTodo([\"3\", {\n params: [\"-1\", \"0\", params.key, params.type, params.value],\n manu: window.g_article.manu,\n kataManu: window.g_article.manu,\n }]);\n }\n\n async setAttributeOnUrlWithCloudId(params: EventHandlerEventData) {\n const url = new URL(window.location.href);\n if (url.searchParams.has(\"cloudId\")) {\n await EventService.emitAsync(\"set-attribute\", params);\n\n }\n }\n\n async gtmPush(params: { event: string, [key: string]: unknown }) {\n const pushData: { event: string, [key: string]: unknown } = {\n event: params.event,\n };\n Object.keys(params)\n .forEach((key) => {\n if (key !== \"event\") {\n let dotSplit = (params[key] as string).split(\".\");\n let bufferValue = window.g_dataInterface[dotSplit[0]];\n dotSplit = dotSplit.slice(1);\n dotSplit.forEach(dotKey => {\n if (bufferValue) {\n bufferValue = bufferValue[dotKey];\n }\n });\n pushData[key] = bufferValue || params[key];\n }\n });\n GoogleAnalyticsService?.push(pushData);\n }\n\n async setCameraZoom(params: EventHandlerEventData) {\n const zoomData = params[\"zoom\"] as IZoomParameters;\n if (typeof zoomData.Perspective === \"string\") {\n const newPerspective = SEARCH_PERSPECTIVES[zoomData.Perspective];\n if (newPerspective) {\n zoomData.Perspective = newPerspective;\n }\n }\n await CommunicationMessageService.setCameraZoom(zoomData);\n }\n\n async setLanguage(params: EventHandlerEventData) {\n const langCode = params?.langCode as string;\n if (langCode) {\n await CommunicationMessageService.setLanguage(langCode);\n await LocaleService.setLanguage(langCode);\n CardContainerEventContainer.RefreshAll({\n refetch: true,\n includeHidden: false,\n });\n await CardDataService.WaitForAllCardContainerFetchPromises();\n await EventService.emitAsync(\"fv-equipment-list:reload\", { data: {}, target: { tag: \"fv-equipment-list\", query: \"*\" } });\n\n window.dispatchEvent(new CustomEvent(\"language-changed\", {\n detail: langCode,\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n async requestFullscreen(params: { query: string } & EventHandlerEventData) {\n let element: HTMLElement | null;\n if (params.query && (element = document.querySelector(params.query))) {\n try {\n if (!document.fullscreenElement) {\n await element.requestFullscreen();\n } else {\n await document.exitFullscreen();\n }\n } catch (err: unknown) {\n if (err instanceof Error) console.error(`Error attempting to enable full-screen mode: ${err.message}`);\n }\n }\n }\n\n async dispatchStateEvent(params: DispatchStatePayload) {\n if (!params || !params.state) return;\n await EventService.emitAsync(params.state, { data: params.data, target: params.target });\n }\n\n scrollToTop(params: EventHandlerEventData) {\n const scroll = (target: Element) => {\n const options = {\n top: 0,\n left: 0,\n behavior: params.behavior ? params.behavior as ScrollBehavior : \"auto\"\n };\n target.scrollTo(options);\n };\n\n if (params[\"tag\"] && (params[\"tag\"] as string).length > 0) {\n if (params[\"selector\"] && (params[\"selector\"] as string).length > 0) {\n const components: Array<DhElement> = ComponentService.findAll((params[\"tag\"] as string), (params[\"selector\"] as string)) as Array<DhElement>;\n for (const component of components) {\n scroll(component);\n }\n }\n } else if (params[\"selector\"] && (params[\"selector\"] as string).length > 0) {\n const target = document.querySelector(params[\"selector\"] as string);\n if (target) {\n scroll(target);\n }\n }\n }\n}\nconst globalEventsContainer = new GlobalEventsContainerClass();\n\n\n// ---------------------------------------------------------------------------\n// Global events — handlers with real, non-forward logic, ported verbatim from\n// the old EventHandlerServiceClass constructor. Calls back into the service via\n// the EventHandlerService singleton (dispatch / dispatchState / dispatchAsyncEvent).\n// ---------------------------------------------------------------------------\nexport const GlobalEvents = new Map<string, (params: any) => Promise<void> | void>([\n [\"send-cloud-id-to-owner\", () => globalEventsContainer.sendCloudIdToOwner()],\n [\"send-to-owner\", (params: EventHandlerEventData) => globalEventsContainer.sendToOwner(params)],\n [\"camera-zoom-in\", async () => {\n await CommunicationMessageService.cameraZoom(1);\n }],\n [\"camera-zoom-out\", async () => {\n await CommunicationMessageService.cameraZoom(-1);\n }],\n [\"reset-camera\", async (params: EventHandlerEventData) => {\n await CommunicationMessageService.resetCameraView(params && params.animate !== undefined ? params.animate as boolean : true);\n }],\n [\"undo\", async () => {\n await CommunicationMessageService.undo();\n }],\n [\"redo\", async () => {\n alert(\"TODO: implement redo!\");\n // CommunicationMessageService.redo();\n }],\n [\"save\", async (params: EventHandlerEventData) => {\n await CommunicationMessageService.downloadPDF(params && params.custom ? params.custom as boolean : false);\n }],\n [\"download-generated-file\", (params: EventHandlerEventData) => globalEventsContainer.downloadGeneratedFile(params)],\n [\"download-furncloud-file\", (params: EventHandlerEventData) => globalEventsContainer.downloadFurncloudFile(params)],\n [\"trigger-animation\", async () => {\n await CommunicationMessageService.triggerAnimation();\n }],\n [\"front-state\", (params: EventHandlerEventData) => globalEventsContainer.frontState(params)],\n [\"toggle-accessoires\", (params: EventHandlerEventData) => globalEventsContainer.toggleAccessoires(params)],\n [\"toggle-dimensions\", async () => {\n await CommunicationMessageService.toggleMeasurement();\n }],\n [\"take-screenshot\", async (params: EventHandlerEventData) => {\n // @ts-ignore\n await CommunicationMessageService.downloadScreenshot(params.logo ? params.logo : undefined);\n }],\n [\"show-share-component\", async () => {\n await CommunicationMessageService.showShareComponent();\n }],\n [\"communicator-message\", (params: EventHandlerEventData) => globalEventsContainer.communicatorMessage(params)],\n [\"update-animation-toolbar-button\", () => globalEventsContainer.updateAnimationToolbarButton()],\n [\"webcab-toggle-dimension-visuals\", () => globalEventsContainer.webcabToggleDimensionVisuals()],\n [\"delete-fitting\", (params: EventHandlerEventData) => globalEventsContainer.deleteFitting(params)],\n [\"move-fitting\", (params: EventHandlerEventData) => globalEventsContainer.moveFitting(params)],\n [\"set-selectable\", (params: EventHandlerEventData) => globalEventsContainer.setSelectable(params)],\n [\"open-link\", (params: EventHandlerEventData) => globalEventsContainer.openLink(params)],\n [\"send-to-cart\", (params: EventHandlerEventData) => globalEventsContainer.sendToCart(params)],\n [\"toggle-api-state-reset-camera-save\", (params: EventHandlerEventData) => globalEventsContainer.toggleApiStateResetCameraSave(params)],\n [\"configurator-set-api-state\", (params: EventHandlerEventData) => globalEventsContainer.configuratorSetApiState(params)],\n [\"configurator-api-state-toggle\", (params: EventHandlerEventData) => globalEventsContainer.configuratorApiStateToggle(params)],\n [\"configurator-api-fetch\", async () => {\n // Not implemented - STUB\n }],\n [\"reload-window\", (params: EventHandlerEventData) => globalEventsContainer.reloadWindow(params)],\n [\"set-fp-variable\", (params: EventHandlerEventData) => globalEventsContainer.setFpVariable(params)],\n [\"set-property\", async (params: EventHandlerEventData) => {\n await CommunicationMessageService.modifyProperty(JSON.stringify(params.property), params.options as IModifyPropertyOptions);\n }],\n [\"set-attribute-on-url-with-cloud-id\", (params: EventHandlerEventData) => globalEventsContainer.setAttributeOnUrlWithCloudId(params)],\n [\"gtm-push\", (params: { event: string, [key: string]: unknown }) => globalEventsContainer.gtmPush(params)],\n [\"set-camera-zoom\", (params: EventHandlerEventData) => globalEventsContainer.setCameraZoom(params)],\n [\"fit-camera-viewport\", async (params: ICameraFitParameters) => {\n await CommunicationMessageService.fitCamera(params);\n }],\n [\"place-article\", async (params: EventHandlerEventData) => {\n await CommunicationMessageService.placePO({\n manufacturer: window.g_article.manu,\n program: params.program as string,\n extParameter: {},\n articleNumber: params[\"article-number\"] as string,\n });\n }],\n [\"execute-custom-event\", async (params: EventHandlerEventData) => {\n await CommunicationMessageService.executeCustomEvent(params?.command as string, params?.instanceIdent as number, params?.parameters);\n }],\n [\"set-element-selected\", async (params: EventHandlerEventData) => {\n await CommunicationMessageService.selectObjectInScene(params.instanceIdent as number);\n }],\n [\"set-language\", (params: EventHandlerEventData) => globalEventsContainer.setLanguage(params)],\n [\"reset-scene-action\", async () => {\n await CommunicationMessageService.resetSceneAction();\n }],\n [\"set-manu-prog\", async (params: ISetManuProgData) => {\n await ManuProgService.setManuProg(params?.manu as string, params?.calcManu as string, params?.prog as string, false);\n }],\n [\"disable-3d-text\", async (params: EventHandlerEventData) => {\n await CommunicationMessageService.setDisable3DText(params.value != undefined ? params.value as boolean : false);\n }],\n [\"request-fullscreen\", (params: { query: string } & EventHandlerEventData) => globalEventsContainer.requestFullscreen(params)],\n [\"dispatch-state\", (params: DispatchStatePayload) => globalEventsContainer.dispatchStateEvent(params)],\n [\"switch-transfer-level\", async (params: ISwitchTransferLevelOptions) => {\n CommunicationMessageService.switchTransferLevel(params);\n }],\n\n // ---- generic DOM ops, not base-mixin states (target derived from payload, first-match) ----\n [\"scroll-to-top\", (params: EventHandlerEventData) => globalEventsContainer.scrollToTop(params)],\n\n // ---- card-container events → no BaseCardContainer states ----\n [\"refresh-all-card-containers\", async (params: EventHandlerEventData) => globalEventsContainer.refreshAllCardContainers(params)],\n [\"card-container-set-show-before-slot\", (data: EventHandlerEventData) => CardContainerEventContainer.SetShowBeforeSlot(data)],\n [\"card-container-set-show-id-slot\", (data: EventHandlerEventData) => CardContainerEventContainer.SetShowIdSlot(data)],\n [\"card-containers-reset-selection-result-filter\", (data_: EventHandlerEventData) => CardContainerEventContainer.ResetSelectionResultFilter(data_)],\n [\"clear-card-container\", (data: EventHandlerEventData) => CardContainerEventContainer.Clear(data)],\n [\"refetch-card-container\", (data_: EventHandlerEventData) => CardContainerEventContainer.Refetch(data_)],\n [\"card-containers:click-card\", (data: EventHandlerEventData) => CardContainerEventContainer.ClickCard(data)],\n [\"trigger-root-level-selection-single-entry-skip\", async (data_: EventHandlerEventData) => CardContainerEventContainer.ReTriggerSingleEntrySkip(data_)]\n]);","import { EventService } from \"@dh-software/webui-api\";\nimport { Events } from \"@dh-software/webui-api\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport { ComponentStateEvent, StateEventTarget } from \"../models/event-handler/component-state-event\";\nimport { EventHandlerEvent, EventHandlerEventCallDataInit } from \"../models/event-handler/event.handler.model\";\nimport { ComponentService, ComponentServiceSearchParams } from \"./component.service\";\nimport { GlobalEvents, LegacyEventAliases } from \"../models/event-handler/global-events\";\n\nclass EventHandlerServiceClass {\n private async _dispatchPostEvents(\n data?: EventHandlerEventData | undefined,\n ) {\n if (data && data[\"post-events\"]) {\n const events = data[\"post-events\"] as Array<EventHandlerEvent>;\n for (let index = 0; index < events.length; ++index) {\n const event = events[index];\n if (\n data[\"dispatch-post-events-synchronized-in-order\"] ||\n data[\"post-events-sync\"]\n ) {\n await this.dispatchAsyncEvent(\n event.id,\n event.data ? event.data : {},\n );\n continue;\n }\n return this.dispatch(event.id, event.data ? event.data : {});\n }\n }\n }\n /**\n * Reads the element-selection out of an event payload, regardless of which\n * naming convention it uses, and normalises it to ComponentServiceSearchParams.\n *\n * tag â†� \"tag\" | \"component\" | \"steps-component\" | components[0].name\n * query â†� \"query\" | \"selector\"\n *\n * Returns undefined when no tag can be resolved.\n */\n private _readLegacySelection(data?: EventHandlerEventData): ComponentServiceSearchParams[] | undefined {\n if (!data) return undefined;\n\n const str = (value: unknown): string | undefined =>\n typeof value === \"string\" && value.length > 0 ? value : undefined;\n\n const pick = (...keys: string[]): string | undefined => {\n for (const key of keys) {\n const value = str(data[key]);\n if (value) return value;\n }\n return undefined;\n };\n\n const targets = [];\n if (data.components && Array.isArray(data.components)) {\n for (const component of data.components) {\n targets.push({\n tag: component.name,\n query: component.selector,\n all: component.all\n });\n }\n }\n\n const tag = pick(\"tag\", \"component\", \"steps-component\");\n if (!tag) return targets;\n const all = data.all != undefined ? data.all : undefined;\n const query = pick(\"query\", \"selector\");\n targets.push({ tag, query, all });\n return targets;\n }\n\n private _unwrapEnvelope(e: any): any {\n if (e && typeof e === \"object\" && !Array.isArray(e)) {\n const keys = Object.keys(e);\n if (keys.length === 2 && keys.includes(\"data\") && keys.includes(\"target\")) {\n return e.data;\n }\n }\n return e;\n }\n\n constructor() {\n window.addEventListener(\"triggereventhandlereventevent\", (event: EventHandlerEventCallDataInit) => {\n if (event.detail && event.detail.events) {\n EventHandlerService.dispatchEventList(\n event.detail.events,\n event.detail.async,\n );\n }\n },\n );\n\n EventService.on(\"shared:event-fired\", async (event) => {\n await this._dispatchPostEvents(\n event.data.data as EventHandlerEventData,\n );\n });\n\n for (const [key, handler] of GlobalEvents) {\n EventService.on(key, async (e) => await handler(this._unwrapEnvelope(e)));\n }\n\n for (const [key, handler] of LegacyEventAliases) {\n if (EventService.has(key)) {\n console.warn(\"duplicate event in LegacyEventAliases\");\n continue;\n }\n EventService.on(key, async (e) => {\n await handler(this._unwrapEnvelope(e));\n });\n }\n }\n\n public async dispatchAsyncEvent<Key extends keyof Events>(key: Key, data_: EventHandlerEventData): Promise<void> {\n await EventService.emitAsync(key, data_);\n }\n public dispatch<Key extends keyof Events>(key: Key, data_: EventHandlerEventData): boolean {\n if (!EventService.has(key)) {\n return false;\n }\n EventService.emitAsync(key, data_);\n return true;\n }\n public async dispatchEventList(events: Array<EventHandlerEvent>, asynchronously: boolean) {\n if (events && events.length > 0) {\n if (asynchronously) {\n for (const event of events) {\n this.dispatch(event.id, event.data ? event.data : {});\n }\n return;\n }\n for (const event of events) {\n await this.dispatchAsyncEvent(\n event.id,\n event.data ? event.data : {},\n );\n }\n }\n }\n\n /** Dispatch a typed component-state event. Target: window (default), an EventTarget, or a tag/query lookup. */\n public async dispatchState<K extends keyof ComponentStates>(\n state: K,\n data: ComponentStates[K],\n target?: EventTarget | StateEventTarget,\n ): Promise<void> {\n const events: ComponentStateEvent<K>[] = [];\n const dispatchOn = (el: EventTarget) => {\n if ((el as any).ListensToState != undefined && !(el as any).ListensToState(state)) {\n console.warn(\"event triggered on element that does not listen to it! element:\", el, \"event:\", state, \"data:\", data);\n return;\n }\n const ev = new ComponentStateEvent(state, data);\n el.dispatchEvent(ev); // sync; listeners call ev.waitUntil(...)\n events.push(ev);\n };\n\n if (target == undefined) {\n dispatchOn(window);\n } else if (typeof (target as EventTarget).dispatchEvent === \"function\") {\n dispatchOn(target as EventTarget);\n } else {\n const t = target as StateEventTarget;\n if (!t.tag || t.tag.length < 1) {\n console.warn(\"target tag for state empty!\", state, data, target);\n return;\n }\n const components = ComponentService.findAll(t.tag, t.query ?? \"\");\n if (components.length < 1) {\n console.warn(\"no valid target elements for state\", state, data, target);\n return;\n }\n if (!t.all) dispatchOn(components[0]);\n else components.forEach((c) => dispatchOn(c)); // collect across ALL\n }\n\n await Promise.allSettled(events.map((e) => e.whenSettled()));\n }\n\n public RegisterStateHandler(state: string) {\n if (EventService.has(state)) {\n return;\n }\n EventService.on(state, async (params)=>{\n let event = params as { state?: string, data: any, target?: ComponentServiceSearchParams };\n if (event.data && event.data.data) {\n event = event.data;\n }\n\n /////// legacy support ////////\n if (event.target == undefined || event.target.tag == undefined) {\n let targets = this._readLegacySelection(event.data);\n if (targets != undefined) {\n for (const target of targets) {\n await this.dispatchState(\n state as keyof ComponentStates,\n event.data,\n target,\n );\n }\n return;\n }\n }\n /////// legacy support ////////\n\n const targets = Array.isArray(event.target) ? event.target : [event.target];\n for (const target of targets) {\n await this.dispatchState(\n state as keyof ComponentStates,\n event.data,\n target,\n );\n }\n });\n }\n}\nexport const EventHandlerService = new EventHandlerServiceClass();","import {css, unsafeCSS, CSSResultGroup, PropertyValueMap, PropertyValues, LitElement} from \"lit\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { property } from \"lit/decorators.js\";\nimport style from \"./base.component.sass?inline\";\nimport { StepTargetSelectorData } from \"../steps/steps.component\";\nimport {\n CommunicationMessageService,\n EventService,\n LocaleService,\n UtilityService,\n WebViewerService\n} from \"@dh-software/webui-api\";\n\nimport { Fonts, SimpleIcons, MultiIcons, injectStylesheets } from '@dh-software/furnview-icons';\nimport {HideableElement, HideBaseElement, HideMixin} from \"./hide.base\";\nimport {EventHandlerEvent} from \"../../../models/event-handler/event.handler.model\";\nimport {\n ComponentStateEvent,\n ComponentStateEventDetail,\n type ComponentStateHandler,\n type ComponentStateHandlerMap,\n} from \"../../../models/event-handler/component-state-event\";\nimport { Constructor } from \"./mixin\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\ninjectStylesheets(true)\n\nimport dhComponentThemeStyles from \"@dh-software/dh-components-themes/styles.css?inline\";\n\ndeclare global {\n // Generic \"standard HTML interaction\" states answered by every DhElement via\n // the base mixin. Legacy events (add-classes, set-attribute, …) alias onto these.\n interface ComponentStates {\n \"fv:add-class\": { classes: string[] };\n \"fv:remove-class\": { classes: string[] };\n \"fv:toggle-class\": { classes: string[] };\n \"fv:set-attribute\": { attribute: string; value: unknown };\n \"fv:toggle-attribute\": { attribute: string; value: unknown };\n \"fv:update-visibility\": Record<string, never>;\n \"fv:scroll-to-top\": { behavior?: ScrollBehavior };\n }\n}\n\ntype MobileMode = \"hide\" | \"show\" | \"\";\nexport type Units = \"cm\" | \"mm\" | \"dm\" | \"m\" | \"error\";\n\nexport type VisibleSelectorData = StepTargetSelectorData & {\n}\n\nexport interface WillUpdateEventInit extends CustomEventInit {\n detail?: LitElement\n}\nexport class WillUpdateEvent extends CustomEvent<LitElement> {\n constructor(element: LitElement) {\n super(\"willupdate\", { detail: element, bubbles: true });\n }\n}\n\nexport interface UpdatedEventInit extends CustomEventInit {\n detail?: LitElement\n}\nexport class UpdatedEvent extends CustomEvent<LitElement> {\n constructor(element: LitElement) {\n super(\"updated\", { detail: element, bubbles: true });\n }\n}\n\ninterface BaseDOMEvents {\n connected?: Array<EventHandlerEvent>;\n disconnected?: Array<EventHandlerEvent>;\n}\n\ninterface BaseElementOptions {\n registerLocalesModel: boolean\n updateWhileDisconnected: boolean\n}\n\ninterface IStateHandler {\n stateHandlers?: ComponentStateHandlerMap;\n}\n\nexport interface IBaseElement extends IStateHandler, HideableElement {\n baseOptions: BaseElementOptions\n domEvents: BaseDOMEvents;\n mobileMode: MobileMode;\n visibleSelectors?: VisibleSelectorData;\n readonly mobile: boolean;\n readonly isIOS: boolean;\n AddConnectedCallbackAction(action: () => Promise<void>): void;\n ResetConnectedCallbackAction(): void;\n updateVisibility(): void;\n isEmpty(): boolean;\n Unit: Units;\n DimensionScale: number;\n Digits: number;\n isPartOfHiddenSubtree(): boolean;\n VerifyStepStageChange(): boolean;\n ApplyStepStage(stage_: number): Promise<void>;\n DetermineStepStageEnvironment(): Promise<{ current: number, first: number, last: number } | undefined>;\n}\n\nexport const BaseMixin = <T extends ReturnType<typeof HideMixin>>(Base: T): T & Constructor<IBaseElement> => {\n class BaseMixinClass extends Base implements IBaseElement {\n static styles: CSSResultGroup[] = [\n unsafeCSS(style),\n unsafeCSS(`${Fonts}${SimpleIcons}${MultiIcons}`),\n unsafeCSS(dhComponentThemeStyles)\n ];\n\n baseOptions: BaseElementOptions = {\n registerLocalesModel: true,\n updateWhileDisconnected: false,\n }\n\n @property({ type: Object, reflect: true })\n public domEvents: BaseDOMEvents = {};\n\n private fireDOMEvents(registry: keyof BaseDOMEvents) {\n const events = this.domEvents?.[registry] || [];\n if(events.length > 0) {\n events.forEach(({id, data}) => {\n EventService.emit(id, data);\n })\n }\n }\n\n constructor(...args: any[]) {\n super(...args);\n ComponentService.register(this);\n\n this.addEventListener('keydown', ((e: KeyboardEvent) => {\n if (e.key === 'Enter' && e.composedPath()[0] === this) {\n e.preventDefault();\n e.stopPropagation();\n this.click();\n }\n }) as EventListener);\n\n this.TriggerLocalesModelLoaded();\n }\n\n @property({ type: String, reflect: true, attribute: 'mobile-mode' })\n public mobileMode: MobileMode = '';\n\n @property({ type: Object, reflect: true, attribute: 'visible-selectors' })\n public visibleSelectors?: VisibleSelectorData;\n\n private static _mobile: boolean | undefined = undefined;\n\n public get mobile(): boolean {\n if (BaseMixinClass._mobile === undefined) {\n BaseMixinClass._mobile = UtilityService.isMobileDevice();\n }\n return BaseMixinClass._mobile || false;\n }\n\n private static _isIOS: boolean | undefined = undefined;\n\n public get isIOS(): boolean {\n if (BaseMixinClass._isIOS === undefined) {\n BaseMixinClass._isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent)\n || (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1);\n }\n return BaseMixinClass._isIOS;\n }\n\n private _connectedCallbackActions: Array<() => Promise<void>> = [];\n\n public AddConnectedCallbackAction(action: () => Promise<void>): void {\n this._connectedCallbackActions.push(action);\n }\n\n public ResetConnectedCallbackAction(): void {\n this._connectedCallbackActions = [];\n }\n\n private async TriggerConnectedCallbackActions(): Promise<void> {\n for (const action of this._connectedCallbackActions) {\n await action();\n }\n }\n\n private async TriggerLocalesModelLoaded(): Promise<void> {\n await LocaleService.IsFileRead();\n this.localesModelLoaded();\n }\n\n protected localesModelLoaded(): void {}\n\n connectedCallback(): void {\n if(this.baseOptions.registerLocalesModel) {\n LocaleService.Register(this);\n }\n super.connectedCallback?.();\n this.setAttribute(\"isfv\", \"\");\n if (this.isIOS) this.setAttribute(\"ios\", \"\");\n this.TriggerConnectedCallbackActions();\n this._installDeclaredStateHandlers();\n this.fireDOMEvents(\"connected\");\n }\n\n disconnectedCallback(): void {\n this.fireDOMEvents(\"disconnected\");\n super.disconnectedCallback?.();\n }\n\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (type === 'click') {\n this.AddConnectedCallbackAction(async () => {\n this.tabIndex = 0;\n this.role = \"button\";\n });\n }\n super.addEventListener(type, listener, options);\n }\n\n protected willUpdate(changedProps: PropertyValues): void {\n super.willUpdate?.(changedProps);\n this.dispatchEvent(new WillUpdateEvent(this));\n }\n\n protected updated(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n super.updated?.(changedProps);\n this.dispatchEvent(new UpdatedEvent(this));\n }\n\n private furnviewLoaded = false;\n private async checkFurnview(): Promise<void> {\n await WebViewerService.IsAppReady;\n this.furnviewLoaded = true;\n }\n\n protected firstUpdated(changedProps: PropertyValues): void {\n super.firstUpdated?.(changedProps);\n this.checkFurnview();\n }\n\n public isEmpty(): boolean {\n let nonSlotChildren = 0;\n if (this.shadowRoot) {\n for (const child of Array.from(this.shadowRoot.children)) {\n if (child.tagName !== 'SLOT') nonSlotChildren++;\n }\n }\n return (this.children.length + nonSlotChildren) <= 0;\n }\n\n private static _dimensionScale: number | undefined = undefined;\n\n public get Unit(): Units {\n switch (BaseMixinClass._dimensionScale) {\n case 1.0: return 'mm';\n case 0.1: return 'cm';\n case 0.01: return 'dm';\n case 0.001: return 'm';\n default: return 'error';\n }\n }\n\n public get DimensionScale(): number {\n return BaseMixinClass._dimensionScale ?? 0.1;\n }\n\n private static _dimensionDigits: number | undefined = undefined;\n\n public get Digits(): number {\n return BaseMixinClass._dimensionDigits ?? 1;\n }\n\n public isPartOfHiddenSubtree(): boolean {\n return ComponentService.isPartOfHiddenSubtree(this);\n }\n\n protected shouldUpdate(changedProperties: PropertyValues): boolean {\n // Guard against rendering into a disconnected component. Async awaits in\n // scheduleUpdate (and elsewhere) can resolve after the element has been\n // detached from the DOM, at which point committing template parts throws\n // \"ChildPart has no parentNode\". Components that need updated() to fire\n // even while disconnected can opt out via baseOptions.updateWhileDisconnected.\n if (!this.baseOptions.updateWhileDisconnected && !this.isConnected) return false;\n return super.shouldUpdate?.(changedProperties) ?? true;\n }\n\n protected async scheduleUpdate(): Promise<unknown> {\n if (this.furnviewLoaded) {\n await WebViewerService.IsAppReady;\n if (BaseMixinClass._dimensionScale == undefined) {\n BaseMixinClass._dimensionScale = await CommunicationMessageService.getDimensionScale();\n }\n\n if (BaseMixinClass._dimensionDigits == undefined) {\n BaseMixinClass._dimensionDigits = await CommunicationMessageService.getDimensionDigits();\n }\n }\n if (!this.baseOptions.updateWhileDisconnected && !this.isConnected) return;\n return super.scheduleUpdate?.();\n }\n\n public updateVisibility(): void {\n if (this.visibleSelectors) {\n const targetContents: (LitElement & IBaseElement)[] = [];\n\n const elementConfig = this.visibleSelectors.element;\n if (!elementConfig['ignore-default-target-content']) {\n const targets = (elementConfig.all\n ? ComponentService.findAll(elementConfig.name, elementConfig.selector)\n : [ComponentService.find(elementConfig.name, elementConfig.selector)]\n ).filter(Boolean) as BaseMixinClass[];\n targetContents.push(...targets);\n }\n\n for (const alt of elementConfig['additional-target-contents'] || []) {\n const altTarget = ComponentService.find(alt.name, alt.selector);\n if (altTarget) targetContents.push(altTarget);\n }\n this.hideElement = targetContents.every(x => x.isEmpty());\n }\n }\n\n public ListensToState(state: keyof ComponentStates): boolean {\n return this._installedStateListeners.has(state);\n }\n\n stateHandlers?: ComponentStateHandlerMap;\n private _installedStateListeners: Set<keyof ComponentStates> = new Set();\n\n // State-event handlers — receive events from EventHandlerService.dispatchState.\n // Subclasses can use `this.onState(...)` or set the `stateHandlers` map declaratively.\n\n /** Declarative state→handler map; installed once on connectedCallback. */\n /** Register a typed state-event handler. Safe to call multiple times. */\n private onState<K extends keyof ComponentStates>(\n state: K,\n handler: ComponentStateHandler<K>,\n ): void {\n EventHandlerService.RegisterStateHandler(state as string);\n this.addEventListener(state as string, ((e: Event) => {\n const ev = e as ComponentStateEvent<K>;\n const detail = ev.detail as ComponentStateEventDetail<K> | undefined;\n try {\n ev.waitUntil(handler(detail?.data as ComponentStates[K]));\n } catch (err) {\n // Surface a sync throw so whenSettled() observes it; keep other listeners running.\n ev.waitUntil(Promise.reject(err));\n }\n }) as EventListener);\n this._installedStateListeners.add(state);\n }\n\n // Generic DOM ops installed on every DhElement, alongside (not replacing)\n // the subclass's own `stateHandlers`. See the ComponentStates augmentation above.\n private _builtinStateHandlers: ComponentStateHandlerMap = {\n \"fv:add-class\": ({ classes }) => { for (const c of classes) this.classList.add(c); },\n \"fv:remove-class\": ({ classes }) => { for (const c of classes) this.classList.remove(c); },\n \"fv:toggle-class\": ({ classes }) => {\n for (const c of classes) {\n if (this.classList.contains(c)) this.classList.remove(c);\n else this.classList.add(c);\n }\n },\n \"fv:set-attribute\": ({ attribute, value }) => {\n if (typeof value === \"boolean\" && value) this.setAttribute(attribute, \"\");\n else if (typeof value === \"boolean\" && !value) this.removeAttribute(attribute);\n else if (typeof value === \"object\") this.setAttribute(attribute, JSON.stringify(value));\n else this.setAttribute(attribute, value as string);\n },\n \"fv:toggle-attribute\": ({ attribute, value }) => {\n if (typeof value === \"boolean\" && value) { this.toggleAttribute(attribute); return; }\n let attributeValue: unknown = value;\n if (typeof value === \"object\") attributeValue = JSON.stringify(value);\n if (this.getAttribute(attribute) == attributeValue) this.removeAttribute(attribute);\n else this.setAttribute(attribute, attributeValue as string);\n },\n \"fv:update-visibility\": () => { this.updateVisibility(); },\n \"fv:scroll-to-top\": ({ behavior }) => { this.scrollTo({ top: 0, left: 0, behavior: behavior ?? \"auto\" }); },\n };\n\n private _installDeclaredStateHandlers(): void {\n for (const map of [this._builtinStateHandlers, this.stateHandlers]) {\n if (!map) continue;\n for (const k of Object.keys(map) as Array<keyof ComponentStates>) {\n if (this._installedStateListeners.has(k)) continue;\n const h = map[k];\n if (h) {\n this.onState(k, h as ComponentStateHandler<typeof k>);\n }\n }\n }\n }\n\n public VerifyStepStageChange(): boolean {\n return true\n }\n\n public async ApplyStepStage(stage_: number): Promise<void> {\n return;\n }\n public async DetermineStepStageEnvironment(): Promise<{ current: number, first: number, last: number } | undefined> {\n return undefined;\n }\n }\n return BaseMixinClass as T & Constructor<IBaseElement>;\n};\nexport type DhElement = LitElement & IBaseElement;\nexport const BaseElement = BaseMixin(HideBaseElement);\n","import {html, PropertyValueMap, unsafeCSS} from \"lit\";\nimport {BaseElement} from \"../standard/base/base.component\";\nimport style from './additonal-positons.style.sass?inline';\nimport {customElement, query, state} from \"lit/decorators.js\";\nimport {InputComponent, LabeledInputComponent} from \"../standard/input\";\nimport { AddNeutralAdditionalPositionParams, AdditionalPosition, AdditionalPositionsResult, IPriceData } from \"@dh-software/webui-types\"\nimport {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\nimport { BaseInput } from \"components/standard/input/base/base-input\";\n\n@customElement(\"fv-additonal-positons\")\nexport class AdditionalPositionsComponent extends BaseElement {\n\n static styles = [super.styles || [], unsafeCSS(style)]\n\n @query(\"#artDescField\")\n private artDescField!: LabeledInputComponent<InputComponent>;\n\n @query(\"#artPriceField\")\n private artPriceField!: LabeledInputComponent<InputComponent>;\n\n @state()\n private additionalPositions: AdditionalPositionsResult = {articles: []};\n\n @state()\n private currency = \"\";\n\n\n constructor() {\n super();\n WebViewerService?.on(\"furnview.changePrice\", async (data_: unknown): Promise<void> => {\n const priceData = data_ as IPriceData;\n this.currency = priceData.currency;\n });\n }\n\n render() {\n return html`\n <div class=\"overview\">\n <fv-label i18n=\"507\"></fv-label>\n <div class=\"row\">\n <fv-labeled-input id=\"artDescField\" name=\"artDesc\" type=\"text\" moveable-placeholder value=\"\" i18n-placeholder=\"3102\"></fv-labeled-input>\n <fv-labeled-input id=\"artPriceField\" name=\"artPrice\" @change=\"${this.ensureNumber}\" type=\"text\" moveable-placeholder value=\"\" i18n-placeholder=\"3104\">\n <div class=\"currency-name\">${this.currency}</div>\n </fv-labeled-input>\n <fv-button i18n=\"539\" @click=\"${this.addPositon}\"></fv-button>\n </div>\n\n ${this.additionalPositions?.articles?.map((position, index) => {\n return html`\n <div class=\"row space-between\">\n <div class=\"column\">\n <span>${index + 1}.</span>\n </div>\n <div class=\"column content\">\n <span><span i18n=\"3102\"></span>:</span>\n <span>${position.artDesc}</span>\n </div>\n <div class=\"column content\">\n <span><span i18n=\"3104\"></span>:</span>\n <span>${position.artPrice} ${this.currency}</span>\n </div>\n <div class=\"icon-container\" @click=\"${() => { this.deletePositon(position) }}\">\n <fv-icon class=\"fv-icon-delete\"></fv-icon>\n </div>\n </div>\n `\n })}\n </div>\n `;\n }\n\n async addPositon() {\n const article = <AddNeutralAdditionalPositionParams>{\n artDesc: this.artDescField?.value || \"\",\n artNr: ' ',\n artPrice: this.artPriceField?.value || \"\",\n artQty: '1',\n }\n if(!article.artDesc || !article.artPrice) {\n return;\n }\n this.artDescField.value = \"\";\n this.artPriceField.value = \"\";\n await CommunicationMessageService.AddNeutralArticle(article);\n this.additionalPositions = await CommunicationMessageService.GetArticleList();\n }\n\n async deletePositon(position: AdditionalPosition) {\n await CommunicationMessageService.DeleteArticle({\n artPosIds: [position.id]\n });\n this.additionalPositions = await CommunicationMessageService.GetArticleList();\n }\n\n ensureNumber(ev: Event) {\n const input = ev.currentTarget as (BaseInput<any> & { getInputElement?: <T>() => T | undefined });\n if (!input) {\n console.warn(\"no input found!\", this);\n return;\n }\n const raw = String(input.value ?? \"\");\n let cleaned = raw.replace(/[^0-9.]/g, \"\");\n const firstDot = cleaned.indexOf(\".\");\n if (firstDot !== -1) {\n cleaned = cleaned.slice(0, firstDot + 1) + cleaned.slice(firstDot + 1).replace(/\\./g, \"\");\n }\n if (cleaned === raw) return;\n\n input.value = cleaned;\n const native = input.getInputElement?.<HTMLInputElement>();\n if (native && native.value !== cleaned) native.value = cleaned;\n }\n\n}\n","import {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../base/base.component\";\nimport {html, unsafeCSS} from \"lit\";\n\nimport style from './dropdown-item.component.sass?inline';\nimport {LocaleService} from \"@dh-software/webui-api\";\n\nexport interface IDropdownItem {\n\n value: string;\n text?: string;\n active?: boolean;\n\n divider?: boolean;\n icon?: string;\n trailingIcon?: string;\n\n items?: IDropdownItem[]; // UNUSED\n}\n\n@customElement(\"fv-dropdown-item\")\nexport class DropdownItemComponent extends BaseElement {\n\n static styles = [super.styles || [], unsafeCSS(style)]\n\n constructor() {\n super();\n }\n\n @property({ type: String, reflect: true }) value = \"\";\n @property({ type: String, reflect: true }) text?: string;\n @property({ type: Boolean, reflect: true }) active = false;\n @property({ type: Boolean, reflect: true }) divider = false;\n @property({ type: Boolean, reflect: true}) placeholder = false;\n @property({ type: String }) icon?: string;\n @property({ type: String }) trailingIcon?: string;\n\n set dropdownItemOptions(config: Partial<IDropdownItem>) {\n Object.assign(this, config);\n }\n\n get dropdownItemOptions(): IDropdownItem {\n return {\n value: this.value,\n text: this.text,\n active: this.active,\n divider: this.divider,\n icon: this.icon,\n trailingIcon: this.trailingIcon\n };\n }\n\n render() {\n if (this.divider) {\n return html`<div class=\"divider\"></div>`;\n }\n return html`\n <div id=\"container\">\n ${this.icon ? html`<fv-icon .icon=${this.icon}></fv-icon>` : ''}\n ${this.text ? html`<fv-label i18n=${this.text} locales-model-no-translation=${this.text}></fv-label>` : ''}\n ${this.trailingIcon ? html`<fv-icon .icon=${this.trailingIcon}></fv-icon>` : ''}\n </div>\n `;\n }\n\n}\n","import {css, html, nothing, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./dropdown.component.sass?inline\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../base/base.component\";\nimport {IDropdownItem} from \"../dropdown-item/dropdown-item.component\";\nimport {event, EventRef} from \"@dh-software/lit-extensions\";\n\nexport interface IDropdownOptions {\n placeholder?: string\n allowEmpty?: boolean\n\n items?: IDropdownItem[];\n}\n\n@customElement(\"fv-dropdown\")\nexport class DropDownComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: Object, reflect: true})\n dropdownOptions: IDropdownOptions = {};\n\n @property({type: Object})\n get selectedItem(): IDropdownItem | undefined {\n return this._selectedItem\n }\n set selectedItem(value: IDropdownItem) {\n this.value = value.value;\n this._selectedItem = value;\n }\n _selectedItem?: IDropdownItem;\n\n @property({type: Boolean, reflect: true})\n active: boolean = false\n\n @property({type: String, reflect: true})\n value: string = \"\";\n\n @property({type: String, reflect: true})\n name: string = \"\";\n\n @property({type: Boolean, reflect: true})\n scrollbar = false\n\n @property({type: Boolean, reflect: true})\n grow = false;\n\n @property({type: Boolean, reflect: true})\n compact = false;\n\n private boundGlobalClickHandler = this.globalClickHandler.bind(this);\n\n private onFocus() {\n this.active = true;\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener(\"click\", this.boundGlobalClickHandler);\n }\n\n disconnectedCallback() {\n document.removeEventListener(\"click\", this.boundGlobalClickHandler);\n super.disconnectedCallback();\n }\n\n private globalClickHandler(ev: MouseEvent) {\n if (this.active) {\n this.active = false;\n }\n }\n\n private onBlur() {\n this.active = false;\n const textContent: HTMLDivElement | null = this.shadowRoot ? this.shadowRoot.querySelector(\".text-content\") as HTMLDivElement : null;\n textContent?.classList.remove(\"hidden\");\n }\n\n private async onClick(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n this.active = !this.active;\n }\n\n @event({composed: true, bubbles: true}, \"dropdown-item-changed\")\n readonly changedEvent!: EventRef<IDropdownItem>\n\n private onDropdownItemClick(item: IDropdownItem, event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n this.dropdownOptions.items?.forEach((option) => {\n option.active = item.value === option.value;\n });\n\n this.requestUpdate(\"dropdownOptions\");\n this.selectedItem = item;\n this.active = false;\n this.changedEvent.dispatch(item);\n }\n\n update(changedProperties: PropertyValues<this>) {\n if (!this.dropdownOptions.allowEmpty) {\n if (this.dropdownOptions.items?.length && !this.dropdownOptions.items?.some(x => x.active)) {\n this.dropdownOptions.items[0].active = true;\n }\n }\n const activeItem = this.dropdownOptions.items?.find(item => item.active);\n if (activeItem) {\n this.selectedItem = activeItem;\n }\n this.requestUpdate(\"dropdownOptions\");\n super.update(changedProperties);\n }\n\n public clearItems() {\n this.dropdownOptions.items = [];\n this.dropdownOptions = {...this.dropdownOptions};\n }\n\n public addItem(text: string, value: string): void {\n this.addItems([{text, value}]);\n }\n\n public addItems(items: Array<IDropdownItem>, addEmpty: boolean = false): void {\n if (addEmpty) {\n this.dropdownOptions.items = (this.dropdownOptions.items || [])?.concat([{\n text: '*',\n value: ''\n }], items);\n } else {\n this.dropdownOptions.items = (this.dropdownOptions.items || []).concat(items);\n }\n this.dropdownOptions = {...this.dropdownOptions};\n }\n\n private buildSearchField() {\n if (!this.classList.contains(\"search\")) {\n return nothing\n }\n return html`<input @input=${this.onSearch} .value=\"${this.selectedItem ? this.selectedItem.text : \"\"}\"\n @blur=${this.onBlur} @focus=\"${this.onFocus}\" id=\"selection-input\"/>`\n }\n\n private buildHeader() {\n let selectedItem = this.selectedItem || {\n text: this.dropdownOptions.placeholder || \"\",\n value: \"\"\n }\n selectedItem = Object.assign(JSON.parse(JSON.stringify(selectedItem)), {active: false});\n return html`\n <div @click=${this.onClick} class=\"dropdown-header\">\n <fv-dropdown-item placeholder .dropdownItemOptions=\"${selectedItem}\"></fv-dropdown-item>\n </div>\n `\n }\n\n private buildDropdownItems() {\n return html`\n <div class=\"accordion-items\">\n <fv-accordion-content class=\"invisible-scroll\" ?active=\"${this.active}\">\n <div class=\"scroll-content\">\n ${this.dropdownOptions.items?.map((item: IDropdownItem) => {\n return html`\n <fv-dropdown-item\n .dropdownItemOptions=\"${item}\"\n @click=\"${(e: Event) => this.onDropdownItemClick(item, e)}\">\n </fv-dropdown-item>\n `\n })}\n </div>\n </fv-accordion-content>\n </div>\n `\n }\n\n render(): TemplateResult<1> {\n return html`\n ${this.buildHeader()}\n ${this.buildDropdownItems()}\n `;\n }\n\n //Experimentell\n private onSearch(e: Event) {\n // const input = e.currentTarget as HTMLInputElement;\n //\n // const items = this.shadowRoot?.querySelectorAll<DropdownItemComponent>(\"fv-dropdown-item\") || undefined;\n // const headerDiv = this.shadowRoot?.querySelector(\".dropdown-header\") || undefined\n // if (items) {\n // let regex: RegExp | null = null;\n // if (input.value.trim().length > 0) {\n // headerDiv?.classList.add(\"hidden\");\n // regex = new RegExp(input.value, \"g\");\n // } else {\n // regex = null;\n // headerDiv?.classList.remove(\"hidden\");\n // }\n // items.forEach((item) => {\n // if (regex) {\n // item.classList.add(\"hidden\");\n // const testText = item.data.text && regex.test(item.data.text);\n // const testValue = item.data.value && regex.test(item.data.value)\n // if (testText || testValue) {\n // item.classList.remove(\"hidden\");\n // }\n // } else {\n // item.classList.remove(\"hidden\");\n // }\n // });\n // }\n }\n}\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface IMediaImage {\n url: string,\n image: HTMLImageElement | null\n}\n\nexport interface IProgramImage {\n images?: Array<IMediaImage>\n text?: string,\n heading?: string,\n subheading?: string,\n program?: string\n}\n\nexport interface IProgramImageFilter {\n program: string,\n kataId?: string\n}\n\nexport class ImageServiceClass {\n\n private _imageCache = new Map<string, any>();\n private _globalImageMedia: Promise<Array<IMediaImage>> = Promise.resolve([]);\n\n async getProgramSelectionImages(imageFilter: IProgramImageFilter[]): Promise<{ [program: string]: IProgramImage }> {\n const programImages: { [program: string]: IProgramImage } = {};\n\n this._globalImageMedia = this.getProgramMediaImages(imageFilter, \"milieu\");\n await this._globalImageMedia;\n\n imageFilter.forEach((programFilterEntry) => {\n const cacheKey = `${window.g_article.manu.toLowerCase()}_${programFilterEntry.program.toLowerCase()}${programFilterEntry.kataId && programFilterEntry.kataId.length > 0 ? `_${programFilterEntry.kataId.toLowerCase()}` : ''}_milieu`;\n const programData = this._imageCache.has(cacheKey) ? this._imageCache.get(cacheKey) : null;\n if (programData) {\n programImages[programFilterEntry.program] = programData;\n }\n });\n return programImages;\n }\n\n async getProgramMediaImages(imageFilter: IProgramImageFilter[], imageType = \"milieu\"): Promise<Array<IMediaImage>> {\n await this._globalImageMedia;\n const result: Array<IMediaImage> = [];\n const programImageFilterToRequest: IProgramImageFilter[] = [];\n for (const progImageFilterData of imageFilter) {\n const cacheKey = `${window.g_article.manu.toLowerCase()}_${progImageFilterData.program.toLowerCase()}${progImageFilterData.kataId && progImageFilterData.kataId.length > 0 ? `_${progImageFilterData.kataId.toLowerCase()}` : ''}_${imageType.toLowerCase()}`;\n if (!this._imageCache.has(cacheKey)) {\n programImageFilterToRequest.push(progImageFilterData);\n }\n else {\n const data: IProgramImage = this._imageCache.get(cacheKey)!;\n result.push(...data.images!);\n }\n }\n if (programImageFilterToRequest.length > 0) {\n const programArray = programImageFilterToRequest.map(item => item.program);\n const kataIdArray = programImageFilterToRequest.map(item => item.kataId !== undefined ? item.kataId : \"\");\n const progImagesFetch = await CommunicationMessageService.getProgImages(window.g_article.manu, programArray, kataIdArray);\n for (const progKey in progImagesFetch) {\n const imageProgram = progImagesFetch[progKey]?.prog || progKey;\n const cacheKey = `${window.g_article.manu.toLowerCase()}_${progKey.toLowerCase()}_${imageType.toLowerCase()}`;\n const images: IMediaImage[] = [];\n const imageList = progImagesFetch[progKey].images;\n for (let i = 0; i < imageList.length; i++) {\n const imageName = imageList[i];\n if (imageName && imageProgram) {\n const preloadImage = i === 0;\n images.push(await this.getImage(window.g_article.manu, imageProgram, imageName, imageType, preloadImage));\n }\n }\n const data: IProgramImage = {\n images: images,\n heading: progImagesFetch[progKey].heading,\n program: imageProgram,\n subheading: progImagesFetch[progKey].subheading,\n text: progImagesFetch[progKey].text\n };\n this._imageCache.set(cacheKey, data);\n result.push(...data.images!);\n }\n }\n return result;\n }\n\n async getKataLevelOneMediaImages(kataIds: string[]): Promise<Array<IMediaImage>> {\n await this._globalImageMedia;\n const result: Array<IMediaImage> = [];\n const kataLevelsToRequest: string[] = [];\n for (const levelOne of kataIds) {\n const cacheKey = `${window.g_article.manu.toLowerCase()}_${levelOne.toLowerCase()}_art`;\n if (!this._imageCache.has(cacheKey)) {\n kataLevelsToRequest.push(levelOne);\n }\n else {\n const data: { images: Array<IMediaImage> } = this._imageCache.get(cacheKey)!;\n result.push(...data.images!);\n }\n }\n if (kataLevelsToRequest.length > 0) {\n const levelOneKataInfo = await CommunicationMessageService.loadLevel1KataInfo(window.g_article.manu, \"\", kataLevelsToRequest, false);\n for (const levelOne in levelOneKataInfo) {\n\n const kataImages = [];\n const cacheKey = `${window.g_article.manu.toLowerCase()}_${levelOne.toLowerCase()}_art`;\n for (const imageName of levelOneKataInfo[levelOne].images) {\n if (imageName) {\n kataImages.push(await this.getImage(window.g_article.manu, \"\", imageName, \"art\"));\n }\n }\n const data = {\n images: kataImages\n };\n this._imageCache.set(cacheKey, data);\n result.push(...data.images!);\n }\n }\n return result;\n }\n\n private async getImage(manufacturer: string, program: string, name: string, type = \"milieu\", preloadImageBuffer: boolean = false): Promise<IMediaImage> {\n const imgURL = await CommunicationMessageService.getMediaUrl(manufacturer, program, type, name, true);\n if (preloadImageBuffer) {\n return new Promise(resolve => {\n const bufferImage = new Image();\n bufferImage.onload = () => {\n resolve({ image: bufferImage, url: imgURL });\n };\n bufferImage.onerror = () => {\n resolve({ image: null, url: imgURL });\n };\n bufferImage.src = imgURL;\n });\n }\n return { image: null, url: imgURL };\n }\n\n public clearCache() {\n this._imageCache.clear();\n }\n\n public getExtension(url_: string) {\n return url_.substring(url_.lastIndexOf(\".\") + 1);\n }\n}\n\nexport const ImageService = new ImageServiceClass();\n","import { css, html, HTMLTemplateResult, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./article-item.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { ImageService } from \"../../../utils/image.service\";\n\n@customElement(\"fv-article-item\")\nexport class ArticleItemComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true })\n number = \"\"\n\n @property({ type: String })\n width = \"0\"\n\n @property({ type: String })\n height = \"0\"\n\n @property({ type: String })\n depth = \"0\"\n\n @property({ type: String })\n image = \"\"\n\n constructor() {\n super();\n this.addEventListener(\"click\", this.onClickEvent);\n }\n\n private onClickEvent(e: Event) {\n this.dispatchEvent(new CustomEvent(\"onArticleClick\", {}));\n }\n\n protected getDefaultImageIcon(): string {\n const styles = getComputedStyle(this);\n return styles.getPropertyValue(\"--default-image\");\n }\n\n render(): TemplateResult<1> {\n const arrSize = [];\n +this.width !== 0.0 ? arrSize.push(this.width) : null;\n +this.height !== 0.0 ? arrSize.push(this.height) : null;\n +this.depth !== 0.0 ? arrSize.push(this.depth) : null;\n\n const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n let imageTemplate: HTMLTemplateResult\n\n const image = this.image || iconURL\n if (image) {\n const extension = ImageService.getExtension(image);\n if (extension.indexOf(\"svg\") !== -1) {\n imageTemplate = html`<svg-icon class=\"image\" src=\"${image}\"></svg-icon>`\n } else if (image.startsWith('fv-icon')) {\n imageTemplate = html`<fv-icon class=\"image iconimage\" icon=\"${image}\"></fv-icon>`\n } else {\n imageTemplate = html`<fv-icon class=\"image\" src=\"${image}\"></fv-icon>`\n }\n }\n\n return html`\n <div id=\"product-image\">\n ${imageTemplate!}\n </div>\n <div id=\"product-info\">\n <div><label id=\"product-number\">${this.number}</label></div>\n <div>\n <label id=\"product-dimensions\">\n ${arrSize.join(\"x\")} \n </label>\n </div>\n </div>\n `;\n }\n}\n","import {css, html, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./article-list.component.sass?inline\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport \"../../standard/dropdown/dropdown/dropdown.component\";\nimport \"../article-item/article-item.component\";\nimport {ArticleItemComponent} from \"../article-item\";\nimport {DropDownComponent} from \"../../standard/dropdown\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {ButtonComponent} from \"../../standard/button\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\nimport {IArticleData, ICategoryData, IKataPageData, IKataTreeData} from \"@dh-software/webui-types\";\n\nfunction convertDecimalNCRtoUTF8(ncr: string) {\n if (ncr && ncr.length > 0) {\n return ncr.replace(/&#([0-9]+);/g, function (b) {\n return String.fromCodePoint(parseInt(b.slice(2, -1)));\n });\n }\n return ncr;\n}\n\ninterface IListArticleData extends IArticleData {\n Cats: string[]\n}\n\n@customElement(\"fv-article-list\")\nexport class ArticleListComponent extends BaseElement {\n private _manufacturer = \"\";\n private _program = \"\";\n private _selectedCategories: Array<string> = [];\n private _valuesWidth: Array<string> = [];\n private _valuesHeight: Array<string> = [];\n private _valuesDepth: Array<string> = [];\n private _categoriesFilter: Array<ICategoryData> = [];\n private _offset = 0;\n private _showWildCardFilter = true;\n private _selectedDimensions: { [key: string]: string } = {\n width: \"0.0\",\n height: \"0.0\",\n depth: \"0.0\"\n }\n\n private listAll: Array<IListArticleData> = [];\n\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n\n @property()\n dimensionScale = 0.1\n\n @property()\n fractionDigits = 2\n\n @property()\n limit = 50\n\n @property()\n img_url_prefix = \"\"\n\n @property({type: Array})\n list: Array<IListArticleData> = []\n\n private onArticleClick = async (e: Event, component: ArticleItemComponent) => {\n if (component.number) {\n await CommunicationMessageService?.loadArticle(this._manufacturer, this._program, component.number);\n }\n }\n\n constructor() {\n super();\n }\n\n\n public async initialize(manufacturer: string, program: string, level: string, mod: string, showWildcardFilter: boolean): Promise<void> {\n this._showWildCardFilter = showWildcardFilter;\n this._manufacturer = manufacturer;\n this._program = program;\n\n const kataTreeData: IKataTreeData = await CommunicationMessageService?.getKataTreeJson();\n\n const widthDD: DropDownComponent | null = this.shadowRoot ? this.shadowRoot.querySelector(\"#width-dropdown\") : null;\n const heightDD: DropDownComponent | null = this.shadowRoot ? this.shadowRoot.querySelector(\"#height-dropdown\") : null;\n const depthDD: DropDownComponent | null = this.shadowRoot ? this.shadowRoot.querySelector(\"#depth-dropdown\") : null;\n\n widthDD?.addItem(\"*\", \"\");\n heightDD?.addItem(\"*\", \"\");\n depthDD?.addItem(\"*\", \"\");\n\n const articleDataMod: IKataPageData = await CommunicationMessageService?.getKataPage(mod, level);\n\n if (articleDataMod && articleDataMod.Modules && articleDataMod.Modules[0].Articles && articleDataMod.Modules[0].Articles[0] && Array.isArray(articleDataMod.Modules[0].Articles[0])) {\n articleDataMod.Modules[0].Articles[0].forEach((article) => {\n const art = article as IListArticleData;\n if (art.dxma) {\n art.kataWidth = art.dxma;\n }\n if (art.dzma) {\n art.kataHeight = art.dzma;\n }\n if (art.dyma) {\n art.kataDepth = art.dyma;\n }\n\n if (art.MMdx) {\n art.kataWidth = art.MMdx;\n }\n if (art.MMdz) {\n art.kataHeight = art.MMdz;\n }\n if (art.MMdy) {\n art.kataDepth = art.MMdy;\n }\n\n if (art.Dispdx) {\n art.kataWidth = art.Dispdx;\n }\n if (art.Dispdz) {\n art.kataHeight = art.Dispdz;\n }\n if (art.Dispdy) {\n art.kataDepth = art.Dispdy;\n }\n\n if (this._valuesWidth.indexOf(art.kataWidth) === -1) {\n this._valuesWidth.push(art.kataWidth);\n }\n if (this._valuesHeight.indexOf(art.kataHeight) === -1) {\n this._valuesHeight.push(art.kataHeight);\n }\n if (this._valuesDepth.indexOf(art.kataDepth) === -1) {\n this._valuesDepth.push(art.kataDepth);\n }\n this.listAll.push(article as IListArticleData);\n });\n }\n this._valuesWidth.sort(this.sortValues);\n this._valuesWidth.forEach(function (value) {\n widthDD?.addItem(value, value);\n });\n\n this._valuesHeight.sort(this.sortValues);\n this._valuesHeight.forEach(function (value) {\n heightDD?.addItem(value, value);\n });\n\n this._valuesDepth.sort(this.sortValues);\n this._valuesDepth.forEach(function (value) {\n depthDD?.addItem(value, value);\n });\n\n const tmpCatList: Array<string> = [];\n this.listAll.forEach((value, index) => {\n value.Cats = value.CatString.split(\",\");\n value.Cats.forEach((cat: string, index1: number) => {\n if (tmpCatList.indexOf(cat) === -1) {\n if (cat !== \"\") {\n tmpCatList.push(cat);\n }\n }\n });\n });\n\n tmpCatList.forEach((value, index) => {\n const findObj = kataTreeData.definedFilterCategories.find(element => element.id === value);\n if (findObj) {\n const findCat = this._categoriesFilter.find(element => element.id === value);\n if (!findCat) {\n if (findObj.priority === 1000) {\n this._categoriesFilter.push({name: findObj.name, id: findObj.id, priority: findObj.priority});\n }\n }\n }\n });\n\n if (this._categoriesFilter.length === 0) {\n tmpCatList.forEach((value, index) => {\n const findObj = kataTreeData.definedFilterCategories.find(element => element.id === value);\n if (findObj) {\n const findCat = this._categoriesFilter.find(element => element.id === value);\n if (!findCat) {\n if (findObj.priority === 2000) {\n this._categoriesFilter.push({\n name: findObj.name,\n id: findObj.id,\n priority: findObj.priority\n });\n }\n }\n }\n });\n }\n\n this.list = this.list.concat(this.listAll);\n\n if (this.shadowRoot) {\n const wildCardBtn: ButtonComponent | null = this.shadowRoot.querySelector(\"#wildCardFilterButton\") as ButtonComponent;\n if (!this._showWildCardFilter) {\n wildCardBtn.classList.add(\"hidden\");\n }\n\n }\n\n }\n\n private sortValues(a: string, b: string) {\n if (+a < +b) return -1;\n if (+a > +b) return 1;\n return 0;\n }\n\n private async filterButtonClick(event: Event) {\n const button = event.target as ButtonComponent;\n const category = button.getAttribute(\"category\");\n\n const activeButtons: NodeListOf<ButtonComponent> = this.renderRoot.querySelectorAll(\".active\");\n activeButtons.forEach((value, key) => {\n value.classList.remove(\"active\");\n });\n button.classList.add(\"active\");\n\n if (category) {\n this._selectedCategories[0] = category;\n } else {\n this._selectedCategories = [];\n }\n\n await this.filterArticles();\n }\n\n private async onChangeDropDown(e: CustomEvent) {\n const dropDown = (e.currentTarget as DropDownComponent);\n this._selectedDimensions[dropDown.name] = dropDown.value || \"0.0\";\n await this.filterArticles();\n }\n\n private async filterArticles() {\n this.list = [];\n this.listAll.forEach((article, index) => {\n let add = true;\n if (this._selectedCategories.length > 0) {\n if (!article.Cats.includes(this._selectedCategories[0])) {\n add = false;\n }\n }\n if (this._selectedDimensions.height !== \"0.0\") {\n if (article.kataHeight !== this._selectedDimensions.height) {\n add = false;\n }\n }\n if (this._selectedDimensions.width !== \"0.0\") {\n if (article.kataWidth !== this._selectedDimensions.width) {\n add = false;\n }\n }\n if (this._selectedDimensions.depth !== \"0.0\") {\n if (article.kataDepth !== this._selectedDimensions.depth) {\n add = false;\n }\n }\n if (add) {\n this.list.push(article);\n }\n });\n this.requestUpdate(\"list\");\n await this.updateComplete;\n }\n\n render(): TemplateResult<1> {\n const dropDownClassMap = {\n bordered: this.classList.contains(\"bordered\") && this.classList.contains(\"dropdown\"),\n fluid: true\n };\n return html`\n <div id=\"filter-container\">\n <fv-button id=\"wildCardFilterButton\" @click=${this.filterButtonClick} part=\"filter-button\"\n class=\"active\" style=\"width: 23px\">*\n </fv-button>\n ${\n this._categoriesFilter.map((category) => {\n return html`\n <fv-button category=${category.id} @click=${this.filterButtonClick}\n part=\"filter-button\">${convertDecimalNCRtoUTF8(category.name)}\n </fv-button>`;\n })\n }\n\n </div>\n <div id=\"filter-container-size\">\n <fv-dropdown @onChange=${this.onChangeDropDown} class=${classMap(dropDownClassMap)} name=\"width\"\n i18n-placeholder=\"181\" placeholder=\"Breite\" id=\"width-dropdown\"></fv-dropdown>\n <fv-dropdown @onChange=${this.onChangeDropDown} class=${classMap(dropDownClassMap)} name=\"height\"\n i18n-placeholder=\"183\" placeholder=\"Höhe\" id=\"height-dropdown\"></fv-dropdown>\n <fv-dropdown @onChange=${this.onChangeDropDown} class=${classMap(dropDownClassMap)} name=\"depth\"\n i18n-placeholder=\"182\" placeholder=\"Tiefe\" id=\"depth-dropdown\"></fv-dropdown>\n </div>\n\n <fv-list-box id=\"article-list-container\">\n ${\n this.list.map((article) => {\n const articleComponent: ArticleItemComponent = document.createElement(\"fv-article-item\") as ArticleItemComponent;\n articleComponent.number = article.ArtNr;\n // articleComponent.width = ((+article.kataWidth) * this.dimensionScale).toFixed(this.fractionDigits);\n // articleComponent.height = ((+article.kataHeight) * this.dimensionScale).toFixed(this.fractionDigits);\n // articleComponent.depth = ((+article.kataDepth) * this.dimensionScale).toFixed(this.fractionDigits);\n articleComponent.width = article.dxma;\n articleComponent.height = article.dzma;\n articleComponent.depth = article.dyma;\n articleComponent.addEventListener(\"onArticleClick\", (e: Event) => {\n const component = e.currentTarget as ArticleItemComponent;\n this.onArticleClick(e, component);\n });\n if (this.img_url_prefix && article.imgName) {\n articleComponent.image = this.img_url_prefix + convertDecimalNCRtoUTF8(article.imgName);\n }\n return articleComponent;\n })\n }\n <slot></slot>\n </fv-list-box>\n `;\n }\n}\n","import {css, html, HTMLTemplateResult, PropertyDeclaration, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./fitting-item.component.sass?inline\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {ImageService} from \"../../../utils/image.service\";\nimport {ConfigurationService, DragDropService} from \"@dh-software/webui-api\";\nimport {DragType} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-fitting-item\")\nexport class FittingItemComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: String, reflect: true})\n number = \"\"\n\n @property({type: String, reflect: true})\n jsaNumber = \"\"\n\n @property({type: String})\n artText = \"\"\n\n @property({type: String})\n image = \"\"\n\n private renderActionButtons = false;\n\n constructor() {\n super();\n this.addEventListener(\"click\", this.onClickEvent);\n }\n\n private onClickEvent(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent(\"onArticleClick\", {bubbles: false}));\n }\n\n private onDeleteClick(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent(\"onDeleteClick\", {bubbles: false}));\n }\n\n private onMoveClick(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent(\"onMoveClick\", {bubbles: false}));\n }\n\n private onResetClick(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent(\"onResetClick\", {bubbles: false}));\n }\n\n protected firstUpdated() {\n DragDropService.removeElement(this);\n DragDropService.addElement(this, {\n id: this.jsaNumber,\n type: DragType.FITTING\n });\n }\n\n async requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n this.renderActionButtons = !(await ConfigurationService.Configuration)[\"enable_depth_selection\"] as boolean;\n super.requestUpdate(name, oldValue, options);\n }\n\n protected getDefaultImageIcon(): string {\n const styles = getComputedStyle(this);\n return styles.getPropertyValue(\"--default-image\");\n }\n\n render(): TemplateResult<1> {\n const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n let imageTemplate: HTMLTemplateResult\n\n const image = this.image || iconURL\n if (image) {\n const extension = ImageService.getExtension(image);\n if (extension.indexOf(\"svg\") !== -1) {\n imageTemplate = html`\n <svg-icon class=\"image\" src=\"${image}\"></svg-icon>`\n } else if (image.startsWith('fv-icon')) {\n imageTemplate = html`\n <fv-icon class=\"image iconimage\" icon=\"${image}\"></fv-icon>`\n } else {\n imageTemplate = html`\n <fv-icon class=\"image\" src=\"${image}\"></fv-icon>`\n }\n }\n\n return html`\n <div id=\"product-image\">\n ${imageTemplate!}\n </div>\n <div id=\"product-info\">\n <div><label id=\"product-artText\">${this.artText}</label></div>\n </div>\n\n ${this.renderActionButtons ? html`\n <div class=\"product-actions\">\n <div class=\"product-move circle-number-symbol\" @click=\"${this.onMoveClick}\">\n <div class=\"icon fv-icon-move3d\"></div>\n </div>\n <div class=\"product-delete circle-number-symbol\" @click=\"${this.onDeleteClick}\">\n <div class=\"icon fv-icon-plus\"></div>\n </div>\n <div class=\"product-reset circle-number-symbol\" @click=\"${this.onResetClick}\">\n <div class=\"icon fv-icon-reload\"></div>\n </div>\n </div>` : \"\"}\n `;\n }\n}\n","import { css, html, HTMLTemplateResult, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./proptrans-item.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { ImageService } from \"../../../utils/image.service\";\nimport { DragDropService } from \"@dh-software/webui-api\";\nimport {DragType} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-proptrans-item\")\nexport class ProptransItemComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String })\n ptid = \"\"\n\n @property({ type: String, reflect: true })\n number = \"\"\n\n @property({ type: String })\n artText = \"\"\n\n @property({ type: String })\n image = \"\"\n\n constructor() {\n super();\n this.addEventListener(\"click\", this.onClickEvent);\n }\n\n private onDeleteClick(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent(\"onDeleteClick\", { bubbles: false }));\n }\n\n private onClickEvent(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent(\"onArticleClick\", { bubbles: false }));\n }\n\n protected firstUpdated() {\n DragDropService.removeElement(this);\n DragDropService.addElement(this, {\n id: this.ptid,\n type: DragType.PROPTRANSFER\n });\n }\n\n protected getDefaultImageIcon(): string {\n const styles = getComputedStyle(this);\n return styles.getPropertyValue(\"--default-image\");\n }\n\n render(): TemplateResult<1> {\n const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n let imageTemplate: HTMLTemplateResult\n\n const image = this.image || iconURL\n if (image) {\n const extension = ImageService.getExtension(image);\n if (extension.indexOf(\"svg\") !== -1) {\n imageTemplate = html`<svg-icon class=\"image\" src=\"${image}\"></svg-icon>`\n } else if (image.startsWith('fv-icon')) {\n imageTemplate = html`<fv-icon class=\"image iconimage\" icon=\"${image}\"></fv-icon>`\n } else {\n imageTemplate = html`<fv-icon class=\"image\" src=\"${image}\"></fv-icon>`\n }\n }\n\n return html`\n <div id=\"product-image\">\n ${imageTemplate!}\n </div>\n <div id=\"product-info\">\n <div><label id=\"product-artText\">${this.artText}</label></div>\n </div>\n <div class=\"product add circle-number-symbol\">\n <div class=\"icon fv-icon-plus\"></div>\n </div>\n <div class=\"product delete circle-number-symbol\" @click=\"${this.onDeleteClick}\">\n <div class=\"icon fv-icon-plus\"></div>\n </div>\n `;\n }\n\n}\n","import { css, html, HTMLTemplateResult, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./shoppingcart-item.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { ImageService } from \"../../../utils/image.service\";\n\n@customElement(\"fv-shoppingcart-item\")\nexport class ShoppingcartItemComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true })\n number = \"\"\n\n @property({ type: String })\n artText = \"\"\n\n @property({ type: String })\n image = \"\"\n\n constructor() {\n super();\n this.addEventListener(\"click\", this.onClickEvent);\n }\n\n private onClickEvent(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent(\"onArticleClick\", { bubbles: false }));\n }\n\n protected getDefaultImageIcon(): string {\n const styles = getComputedStyle(this);\n return styles.getPropertyValue(\"--default-image\");\n }\n\n render(): TemplateResult<1> {\n const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n let imageTemplate: HTMLTemplateResult\n\n const image = this.image || iconURL\n if (image) {\n const extension = ImageService.getExtension(image);\n if (extension.indexOf(\"svg\") !== -1) {\n imageTemplate = html`<svg-icon class=\"image\" src=\"${image}\"></svg-icon>`\n } else if (image.startsWith('fv-icon')) {\n imageTemplate = html`<fv-icon class=\"image iconimage\" icon=\"${image}\"></fv-icon>`\n } else {\n imageTemplate = html`<fv-icon class=\"image\" src=\"${image}\"></fv-icon>`\n }\n }\n\n return html`\n <div id=\"product-image\">\n ${imageTemplate!}\n </div>\n <div id=\"product-info\">\n <div><label id=\"product-artText\">${this.artText}</label></div>\n </div>\n `;\n }\n}\n","class StyleHelperClass {\n\n private _updateMaxContentHeightPromise = Promise.resolve();\n private _updateInstance = -1e+10;\n public async updateMaxTransitionHeight(content: HTMLElement, maxHeightOverwrite?: string, force = false): Promise<void> {\n const instance = ++this._updateInstance;\n await this._updateMaxContentHeightPromise;\n\n if (content && instance >= this._updateInstance) {\n this._updateMaxContentHeightPromise = new Promise((resolve) => {\n content.style.setProperty(\"max-height\", maxHeightOverwrite != undefined ? maxHeightOverwrite : \"none\");\n const contentSize = this.getSize(content as HTMLElement);\n content.style.removeProperty(\"max-height\");\n const _proceedUpdate = () => {\n content.style.setProperty(\"--max-transition-height\", contentSize.height + \"px\");\n return resolve();\n }\n force ? _proceedUpdate() : requestAnimationFrame(_proceedUpdate);\n });\n }\n return this._updateMaxContentHeightPromise;\n }\n\n public hexToRgb(hex: string) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n getSize(element_: HTMLElement): {width: number, height: number} {\n\n const style = window.getComputedStyle(element_);\n const width = element_.offsetWidth;\n const height = element_.offsetHeight;\n const marginLR: number = parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n const marginTB: number = parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n const paddingLR: number = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n const paddingTB: number = parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n const borderLR: number = parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n const borderTB: number = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n return { width: (width + marginLR - paddingLR + borderLR), height: (height + marginTB - paddingTB + borderTB)};\n }\n\n isElementInView(element_: HTMLElement, parent_: HTMLElement, fullyInView_?: boolean) {\n const style = window.getComputedStyle(element_);\n const marginLeft: number = parseFloat(style.marginLeft);\n const marginTop: number = parseFloat(style.marginTop);\n\n const pageTop = parent_.scrollTop;\n const pageBottom = pageTop + this.getSize(parent_).height;\n const elementTop = element_.offsetTop - parent_.offsetTop - marginTop;\n const elementBottom = elementTop + this.getSize(element_).height;\n\n const pageLeft = parent_.scrollLeft;\n const pageRight = pageLeft + this.getSize(parent_).width;\n const elementLeft = element_.offsetLeft - parent_.offsetLeft - marginLeft;\n const elementRight = elementLeft + this.getSize(element_).width;\n\n if (fullyInView_) {\n return ((pageTop < elementTop) && (pageBottom > elementBottom)) && ((pageLeft < elementLeft) && (pageRight > elementRight));\n }\n else {\n return ((elementTop <= pageBottom) && (elementBottom >= pageTop)) && ((elementLeft <= pageRight) && (elementRight >= pageLeft));\n }\n }\n\n public getVar(element: HTMLElement, varName: string, fallback = \"\"): string {\n if (element && element.style) {\n const varValue = element.style.getPropertyValue(varName);\n if (varValue) {\n return varValue;\n }\n }\n return fallback;\n }\n\n public requestAnimationFrame(): Promise<any> {\n return new Promise((r) => requestAnimationFrame(() => requestAnimationFrame(() => r(void 0))));\n }\n\n}\n\nexport const StyleHelper = new StyleHelperClass();\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./button.component.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport { BaseElement } from \"../base/base.component\";\r\nimport { StyleHelper } from \"../../../utils/style.helper\";\r\n\r\n@customElement(\"fv-button\")\r\nexport class ButtonComponent extends BaseElement {\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n @property({ type: Boolean, reflect: true })\r\n disabled = false\r\n\r\n @property({ type: Boolean, reflect: true })\r\n toggleable = false;\r\n\r\n @property({ type: String, reflect: true })\r\n public icon = \"\";\r\n\r\n @property({ type: String, reflect: true })\r\n type: string = \"button\";\r\n\r\n constructor() {\r\n super();\r\n this.addEventListener(\"click\", (e: Event) => {\r\n if (this.classList.contains(\"disabled\")) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n });\r\n this.addEventListener(\"click\", () => {\r\n if (this.toggleable) {\r\n if (this.classList.contains(\"active\")) {\r\n this.classList.remove(\"active\");\r\n }\r\n else {\r\n this.classList.add(\"active\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n private buildIcon() {\r\n if (this.icon.length > 0) {\r\n return html`<i part=\"icon\" class=\"icon ${this.icon}\"></i>`;\r\n }\r\n const btnImg = StyleHelper.getVar(this, \"--button-image\");\r\n if(btnImg && btnImg.endsWith(\".svg\")) {\r\n return html`<svg-icon part=\"icon\" src=\"${btnImg}\"></svg-icon>`\r\n }\r\n return html`${StyleHelper.getVar(this, \"--button-image\") ? html`<img part=\"icon\" src=\"${btnImg}\">` : \"\"}`;\r\n }\r\n\r\n render(): TemplateResult<1> {\r\n return html`\r\n <button part=\"button\" type=\"${this.type}\"tabindex=\"-1\">\r\n <span>\r\n ${this.buildIcon()}\r\n <slot></slot>\r\n <slot name=\"inactive\"></slot>\r\n <slot name=\"active\"></slot>\r\n <slot class=\"loader-slot\" name=\"loader\"></slot>\r\n </span>\r\n </button>\r\n `;\r\n }\r\n}\r\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport style from \"./confirming-button.component.sass?inline\";\nimport {LocaleService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-confirming-button\")\nexport class ConfirmingButtonComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n constructor() {\n super();\n }\n\n @property({ type: String, reflect: true, attribute: \"txt\" })\n public _txt = \"\";\n @property({ type: String, reflect: true, attribute: \"confirm-txt\" })\n public _confirmTxt = \"\";\n // @property({ type: Boolean, reflect: true, attribute: \"\" })\n // public\n @property({ type: Boolean, reflect: true, attribute: \"disabled\" })\n public _disabled = false;\n\n\n\n\n @query(\".button-container\")\n private _buttonContainer: HTMLDivElement | undefined;\n @query(\".button-text-send\")\n private _buttonTextSend: HTMLSpanElement | undefined;\n @query(\".checkmark\")\n private _checkmark: HTMLDivElement | undefined;\n @query(\".loader-slot\")\n private _loaderElement: HTMLSlotElement | undefined;\n\n\n private _wasSend = false;\n public get confirmed(): boolean {\n return this._wasSend;\n }\n\n public set loaderState(value: boolean) {\n if (value) {\n this._loaderElement?.classList.remove(\"hidden\");\n }\n else {\n this._loaderElement?.classList.add(\"hidden\");\n }\n }\n\n\n public reset() {\n this._buttonTextSend?.classList.add(\"hidden\");\n this._checkmark?.classList.add(\"hidden\");\n this._buttonContainer?.classList.remove(\"send\");\n this._wasSend = false;\n this.requestUpdate();\n }\n\n public confirm(triggerAnimation = true) {\n if (this._wasSend) return;\n this._buttonContainer?.classList.add(\"send\");\n this._wasSend = true;\n if (triggerAnimation) {\n this.triggerAnimation();\n }\n }\n\n\n private hideCheckMark() {\n if (this.classList.contains(\"hide-checkmark\")) {\n const styles = getComputedStyle(this);\n let delayProperty = styles.getPropertyValue(\"--share-link-per-mail-mask-checkmark-hide-delay\");\n delayProperty = delayProperty.length > 0 ? delayProperty : \"1500ms\";\n let delay = 0;\n if (delayProperty.includes(\"ms\")) {\n delayProperty = delayProperty.replace(\"ms\", \"\");\n delay = parseInt(delayProperty);\n }\n if (delayProperty.includes(\"s\")) {\n delayProperty = delayProperty.replace(\"s\", \"\");\n delay = parseFloat(delayProperty) * 1000;\n }\n setTimeout(()=>{\n this._checkmark?.classList.add(\"hidden\");\n }, delay);\n }\n }\n private showCheckMark() {\n this._checkmark?.classList.remove(\"hidden\");\n }\n public triggerAnimation() {\n this.showCheckMark();\n this.hideCheckMark();\n this._buttonTextSend?.classList.remove(\"hidden\");\n }\n\n\n private createButton(content: TemplateResult<1>): TemplateResult<1> {\n if (this._disabled) {\n return html`<fv-button class=\"button-container\" disabled>${content}</fv-button>`;\n }\n return html`<fv-button class=\"button-container\">${content}</fv-button>`;\n }\n\n protected render(): TemplateResult<1> {\n const confirmText = LocaleService.translate(this._confirmTxt);\n const text = LocaleService.translate(this._txt);\n\n return html`\n ${this.createButton(html`\n <div class=\"button\">\n <span class=\"button-text-animation-container\">\n <span class=\"button-text-send-space\">${confirmText.length > text.length ? confirmText : text}</span>\n <span class=\"button-text\" i18n=\"${this._txt}\">${text}</span>\n </span>\n <span><slot class=\"loader-slot hidden\" name=\"loader\"></slot></span>\n </div>\n <div class=\"button-send-text-container\">\n <div class=\"animation-container\">\n <span class=\"button-text-send hidden\" i18n=\"${this._confirmTxt}\">${confirmText}</span>\n </div>\n </div>\n <div class=\"checkmark hidden\">\n <svg class=\"checkmark-svg\" viewBox=\"0 0 24 24\">\n <path d=\"M4.1 12.7L9 17.6 20.3 6.3\" fill=\"none\"/>\n </svg>\n </div>\n `)}\n `;\n }\n\n protected localesModelLoaded(): void {\n this.requestUpdate();\n }\n}\n","import {BaseElement} from \"./base.component\";\nimport {CatalogService} from \"../../../utils/catalog.service\";\nimport {property} from \"lit/decorators.js\";\nimport {PropertyValueMap, PropertyValues, unsafeCSS} from \"lit\";\n\nimport style from './step-child.component.sass?inline'\nimport {StepsComponent} from \"../steps\";\nimport {EventFactoryService} from \"@dh-software/webui-api\";\n\nexport abstract class StepChildComponent extends BaseElement {\n\n @property({type: Boolean, reflect: true, attribute: \"disable-if-scene-empty\"})\n disableIfSceneEmpty = false;\n\n static styles = [super.styles || [], unsafeCSS(style)];\n\n protected async firstUpdated(_changedProperties: PropertyValues<this>) {\n\n EventFactoryService.LastPOLoaded.register(async () => {\n await this._checkSceneEmptyState();\n });\n EventFactoryService.DeleteLO_after.register(async () => {\n await this._checkSceneEmptyState();\n });\n EventFactoryService.SelectionChanged.register(async () => {\n await this._checkSceneEmptyState();\n });\n EventFactoryService.ChangePrice.register(async () => {\n await this._checkSceneEmptyState();\n });\n await this._checkSceneEmptyState();\n super.firstUpdated(_changedProperties);\n }\n\n protected updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n this._checkSceneEmptyState();\n }\n\n private async _checkSceneEmptyState() {\n this.classList.remove(\"step-disabled\")\n if (this.disableIfSceneEmpty && await CatalogService.shouldDisableOnSceneEmpty(this.disableIfSceneEmpty)) {\n this.classList.add(\"step-disabled\");\n }\n }\n\n}\n","import { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\n\nexport interface EventHandlerEvent {\n id: string,\n data?: EventHandlerEventData\n}\n\nexport interface EventHandlerEventCallData {\n async: boolean,\n events: Array<EventHandlerEvent>\n}\n\nexport interface EventHandlerEventCallDataInit extends CustomEventInit {\n detail?: EventHandlerEventCallData\n}\n\nexport class EventHandlerDispatchEvent extends CustomEvent<EventHandlerEventCallData> {\n constructor(callbackData_: EventHandlerEventCallData) {\n super(\"triggereventhandlereventevent\", { detail: callbackData_, bubbles: true });\n }\n}\n\nexport type EventHandlerEventFunction = <T = EventHandlerEventData>(data: T) => Promise<void>;\n","import {css, html, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./equipment-list.component.sass?inline\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport {IFittingSceneData, IFittingSceneDataArti} from \"../../../define/interface\";\nimport \"../../standard/button\";\nimport \"../fitting-item/fitting-item.component\";\nimport \"../proptrans-item/proptrans-item.component\";\nimport \"../shoppingcart-item/shoppingcart-item.component\";\nimport {ButtonComponent} from \"../../standard/button\";\nimport {FittingItemComponent} from \"../fitting-item\";\nimport {ProptransItemComponent} from \"../proptrans-item\";\nimport {ShoppingcartItemComponent} from \"../shoppingcart-item\";\nimport {ManuProgService} from \"../../../utils/manu-prog.service\";\nimport {ComponentService} from \"../../../utils/component.service\";\nimport {IContextInitOptions} from \"../../../define/context-initializer\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {StepChildComponent} from \"../../standard/base/step-child.component\";\nimport {EventHandlerDispatchEvent} from \"../../../models/event-handler/event.handler.model\";\nimport type {ComponentStateHandlerMap} from \"../../../models/event-handler/component-state-event\";\nimport {\n CommunicationMessageService,\n EventFactoryService,\n ProgContextModel,\n WebViewerService\n} from \"@dh-software/webui-api\";\nimport {\n ICategoryData,\n IEquipmentData,\n IGetProgContextParameters,\n IKataPageData,\n IKataTreeData,\n IProgContextInitData,\n IProgProperty,\n IProgPropertyContext,\n IProgPropertyRootList,\n IPropTransferItem,\n} from \"@dh-software/webui-types\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-equipment-list:reload\": any;\n }\n}\n\nfunction convertDecimalNCRtoUTF8(ncr: string) {\n if (ncr && ncr.length > 0) {\n return ncr.replace(/&#([0-9]+);/g, function (b) {\n return String.fromCodePoint(parseInt(b.slice(2, -1)));\n });\n }\n return ncr;\n}\n\ninterface IEquipmentListCategory extends ICategoryData {\n\n active?: boolean\n visible?: boolean\n childCount: number;\n\n}\n\n@customElement(\"fv-equipment-list\")\nexport class EquipmentListComponent extends StepChildComponent {\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-equipment-list:reload\": async () => {\n const manufacturer = await ManuProgService.getManufacturer();\n const program = await ManuProgService.getProgram();\n await this.Reset();\n await this.initialize(manufacturer, program, \"\", this._showWildCardFilter);\n },\n };\n\n private _finishedLoading = false;\n private _manufacturer = \"\";\n private _program = \"\";\n private _offset = 0;\n\n private _registeredEquipmentArtNos: Set<string> = new Set();\n private _categoryFilter: Array<IEquipmentListCategory> = [];\n\n private _isScrolling = false;\n private _showWildCardFilter = true;\n private _contextData?: IProgPropertyRootList<IProgPropertyContext>;\n\n private filteredList: Array<IEquipmentData> = [];\n private listAll: Array<IEquipmentData> = [];\n\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: Boolean, reflect: true, attribute: \"hide-shopping-cart-items\"})\n private _hideShoppingCartItems = false;\n\n @property()\n limit = 2000;\n\n @property()\n img_url_prefix = \"\";\n\n @property({type: Boolean, reflect: true, attribute: \"highlight-scene-items\"})\n highlightSceneElements = false;\n\n @property({type: Boolean, reflect: true, attribute: \"hide-single-category\"})\n hideSingleCategory = false;\n\n @property({type: Boolean, reflect: true, attribute: \"bordered-filters\"})\n private _borderedFilters = false;\n\n @state()\n list: Array<IEquipmentData> = [];\n\n @property({type: Boolean, reflect: true, attribute: \"self-initialize\"})\n public selfInitialize = false;\n private selfInitialized = false;\n\n public isEmpty(): boolean {\n return !this.filteredList || this.filteredList.length <= 0\n }\n\n constructor() {\n super();\n this.baseOptions.updateWhileDisconnected = true;\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues<this>): Promise<void> {\n super.firstUpdated(_changedProperties);\n EventFactoryService.ChangePrice.register(() => {\n this.SelfInitialize();\n })\n }\n\n public getContextInitializationData(initialize = false) {\n return this.filteredList.filter(equipment => equipment.InsertType === \"P\").map(equipment => {\n const id = equipment.PT_ID || equipment.id;\n let result: IProgContextInitData = {\n contextId: `${this._manufacturer}#${this._program}#${id}`,\n }\n if (initialize) {\n result = Object.assign(result, {\n manufacturer: this._manufacturer,\n program: this._program,\n initializer: {\n type: \"ptm\",\n ptId: id,\n }\n } as IContextInitOptions);\n }\n return result\n })\n }\n\n public async initialize(manufacturer: string, program: string, level: string, showWildcardFilter: boolean): Promise<void> {\n this._showWildCardFilter = showWildcardFilter;\n this._manufacturer = manufacturer;\n this._program = program;\n const articleData: IKataPageData = await CommunicationMessageService?.getKataPage(\"equipment\", level);\n const kataTreeData: IKataTreeData = await CommunicationMessageService?.getKataTreeJson();\n // const distinctFittingList: Array<string> = [];\n const tmpCatList: Array<string> = [];\n\n articleData?.Modules[0]?.Articles[0]?.forEach((equipment) => {\n const data = (equipment as IEquipmentData);\n if (data.InsertType !== \"S\" && !data.hideEquipment) {\n this.listAll.push(data);\n }\n });\n\n this.listAll.forEach((value, index) => {\n value.Cats = value.CatString.split(\",\");\n value.Cats.forEach((cat: string, index1: number) => {\n if (tmpCatList.indexOf(cat) === -1) {\n if (cat !== \"\") {\n tmpCatList.push(cat);\n }\n }\n });\n });\n\n tmpCatList.forEach((value, index) => {\n const findObj = kataTreeData.definedEquipmentFilterCategories.find(element => element.id === value);\n if (findObj) {\n const findCat = this._categoryFilter.find(element => element.id === value);\n if (!findCat) {\n this._categoryFilter.push({\n name: findObj.name,\n id: findObj.id,\n priority: findObj.priority,\n childCount: 0\n });\n }\n }\n });\n await this.onScroll(null, true);\n try {\n const initContext: IGetProgContextParameters = {\n ignoreAccess: true,\n useRelevant: false,\n manufacturer: this._manufacturer,\n program: this._program,\n contextInfo: this.getContextInitializationData(true)\n };\n this._contextData = await ProgContextModel.initialize(initContext);\n } catch (ex) {\n this._contextData = undefined;\n }\n }\n\n public async SelfInitialize() {\n if (this.selfInitialize == false || this.selfInitialized == true) {\n return;\n }\n\n EventFactoryService.LastPOLoaded.register(() => {\n this.onScroll(null, true);\n });\n EventFactoryService.SelectionChanged.register(() => {\n this.onScroll(null, true);\n });\n EventFactoryService.ChangePrice.register(() => {\n this.onScroll(null, true);\n });\n EventFactoryService.PropTransfer_afterDelete.register(() => {\n this.onScroll(null, true);\n });\n EventFactoryService.PropTransfer_afterStart.register(() => {\n this.onScroll(null, true);\n });\n EventFactoryService.PossibleDestinationValues_afterSet.register(() => {\n this.onScroll(null, true);\n });\n\n this.selfInitialized = true;\n\n this.img_url_prefix = await CommunicationMessageService.getNodePrefix();\n await WebViewerService.IsAppReady;\n const manufacturer = await ManuProgService.getManufacturer();\n const program = await ManuProgService.getProgram();\n const level = window.g_article?.level1 || \"\";\n this.initialize(manufacturer, program, level, this.hasAttribute(\"wildcard-filter\"));\n }\n\n public async Reset() {\n CommunicationMessageService.disposePropertyContext({contextIds: this.getContextInitializationData(false).map(x => x.contextId)}).then();\n\n this._categoryFilter = [];\n this.filteredList = [];\n this.listAll = [];\n }\n\n public static async Reload() {\n const _equipmentList = ComponentService.find(\"fv-equipment-list\", \"*\") as EquipmentListComponent;\n if (_equipmentList) {\n const manufacturer = await ManuProgService.getManufacturer();\n const program = await ManuProgService.getProgram();\n await _equipmentList.Reset();\n await _equipmentList.initialize(manufacturer, program, \"\", _equipmentList._showWildCardFilter);\n }\n }\n\n private async onScroll(e: CustomEvent | null, reset_: boolean) {\n if (!this._isScrolling && (!this._finishedLoading || reset_)) {\n let updateData = false;\n this._isScrolling = true;\n if (reset_) {\n this.filteredList = [];\n this._offset = 0;\n updateData = true;\n this._finishedLoading = false;\n }\n if (e && e.detail.distanceToBottom < 0) {\n updateData = true;\n }\n if (updateData) {\n await this.refreshBySelection();\n this.requestUpdate(\"list\");\n await this.updateComplete;\n }\n this._isScrolling = false;\n }\n if (this.shadowRoot) {\n const wildCardBtn: ButtonComponent | null = this.shadowRoot.querySelector(\"#wildCardFilterButton\") as ButtonComponent;\n if (!this._showWildCardFilter) {\n wildCardBtn.classList.add(\"hidden\");\n }\n }\n }\n\n public async refreshBySelection() {\n this.filteredList = [];\n const activeFilters = this.getActiveFilters();\n if (activeFilters.length > 0) {\n this.listAll.forEach((value, index) => {\n if (index >= this._offset && index <= (this._offset + this.limit)) {\n if (activeFilters.some(x => value.Cats?.includes(x.id))) {\n this.filteredList.push(value);\n }\n }\n });\n } else {\n this.filteredList = this.filteredList.concat(this.listAll.slice(this._offset, this.limit));\n }\n\n\n this._contextData = await ProgContextModel.get({\n useRelevant: true,\n manufacturer: this._manufacturer,\n program: this._program,\n contextInfo: this.getContextInitializationData(false)\n });\n const validPropTransfer = await CommunicationMessageService.getPropTransfer({\n manufacturer: this._manufacturer,\n program: this._program,\n useSelection: true\n }) as Array<IPropTransferItem>;\n let validFittings = await CommunicationMessageService.GetAvailableFittingElementsFromScene() as Array<IFittingSceneData>;\n validFittings = validFittings.filter(x => x.manu === this._manufacturer && x.prog === this._program);\n\n const enabledFilters = (validFittings && validFittings.length !== 0) || (validPropTransfer && validPropTransfer.length !== 0)\n\n this._registeredEquipmentArtNos.clear();\n this._categoryFilter.forEach(x => {\n x.visible = false\n x.childCount = 0\n });\n validPropTransfer?.forEach((ptItem: IPropTransferItem) => {\n if (ptItem.Cat) {\n ptItem.Cat.filter(x => !!x).forEach((value: string, index: number) => {\n const filter = this.getFilter(value)\n if (filter) {\n filter.visible = true;\n filter.childCount++;\n }\n });\n }\n if (ptItem.articleNr) {\n this._registeredEquipmentArtNos.add(ptItem.articleNr);\n }\n if (ptItem.id) {\n this._registeredEquipmentArtNos.add(ptItem.id);\n }\n });\n validFittings?.forEach((fItem: IFittingSceneData) => {\n fItem.Artis.forEach((fItemArti: IFittingSceneDataArti) => {\n if (fItemArti.Cat) {\n fItemArti.Cat.filter(x => !!x).forEach((value: string) => {\n const filter = this.getFilter(value)\n if (filter) {\n filter.visible = true;\n filter.childCount++;\n }\n });\n }\n if (fItemArti.J) {\n this._registeredEquipmentArtNos.add(fItemArti.J);\n }\n });\n });\n\n if (enabledFilters) {\n if (this.filteredList.length > 0) {\n this._categoryFilter.forEach(x => {\n x.visible = x.visible && x.childCount >= 1;\n })\n }\n\n for (let i = this.filteredList.length - 1; i >= 0; i--) {\n const item = this.filteredList[i];\n const jsaNumberRegistered = !!item.jsaNumber && this._registeredEquipmentArtNos.has(item.jsaNumber);\n const artNoRegistered = this._registeredEquipmentArtNos.has(item.ArtNr);\n const ptIdRegistered = this._registeredEquipmentArtNos.has(item.PT_ID)\n\n const cats = item.Cats.filter(x => !!x)\n let categoryRelevant = cats.length !== 0 ? cats.some(x => this.getFilter(x)?.visible || false) : false;\n if (!jsaNumberRegistered && !artNoRegistered && !ptIdRegistered) {\n categoryRelevant = false;\n }\n if (!(jsaNumberRegistered || artNoRegistered || ptIdRegistered || categoryRelevant)) {\n this.filteredList.splice(i, 1);\n } else if (this.highlightSceneElements && validPropTransfer) {\n const propTransfer = validPropTransfer.find(x => x.id == item.PT_ID);\n if (propTransfer) {\n item.Active = propTransfer.deletable.length != 0;\n this.filteredList[i] = item;\n }\n }\n }\n }\n this.list = ([] as Array<IEquipmentData>).concat(this.filteredList).filter(equipment => this.shouldShowEquipment(equipment));\n }\n\n private async filterButtonClick(event: Event) {\n const button = event.target as ButtonComponent;\n const catString = button.getAttribute(\"category\");\n\n if (!catString) return;\n\n const category = this._categoryFilter.find(x => x.id === catString);\n const active = this.getActiveFilters();\n\n active.forEach(x => x.active = false)\n if (category) {\n category.active = true;\n }\n if (!category || category.active) {\n active.forEach(x => x.active = false)\n }\n this.filteredList = [];\n this._offset = 0;\n CommunicationMessageService.startPropTransfer(\"\");\n await this.onScroll(null, true);\n }\n\n protected updated(changedProperties: PropertyValueMap<any>): void {\n super.updated(changedProperties);\n window.dispatchEvent(new CustomEvent(\"onUpdated\", {detail: this}));\n }\n\n private getContextById(contextId: string) {\n if (!this._contextData || !this._contextData.children) {\n return undefined;\n }\n // @ts-ignore\n return Array.from(Object.values(this._contextData?.children)).find(x => x.contextId.toLowerCase().endsWith(contextId.toLowerCase()));\n }\n\n isContextInAccordion(context?: IProgPropertyContext) {\n const items = this.getPropertyList(context);\n return context?.children && items.length !== 0;\n }\n\n shouldShowEquipment(equipment: IEquipmentData) {\n if (equipment.InsertType === \"P\") {\n const context = this.getContextById(equipment.PT_ID);\n return !this.isContextInAccordion(context)\n }\n return true;\n }\n\n hasContextData(context = this.getContextInitializationData(false).map(x => x.contextId)) {\n return context && context.length > 0 && context.some(x => {\n let context = this.getContextById(x)\n return this.getPropertyList(context).length > 0;\n })\n }\n\n render(): TemplateResult<1> {\n const context = this.getContextInitializationData(false).map(x => x.contextId);\n const hideFilter = this._categoryFilter.filter(x => x.visible).length === 1 && this.hideSingleCategory === true;\n return html`\n <div id=\"filter-container\">\n <fv-button id=\"wildCardFilterButton\" @click=${this.filterButtonClick} part=\"filter-button\"\n class=\"active ${this._borderedFilters ? \"bordered\" : \"\"}\"\n style=\"width: 23px\">*\n </fv-button>\n ${\n !hideFilter ?\n this._categoryFilter.map((category) => {\n const btnClass = classMap({\n \"bordered\": this._borderedFilters,\n \"active\": category?.active || false,\n \"hidden\": category.visible !== true\n });\n return html`\n <fv-button\n category=${category.id}\n @click=${this.filterButtonClick}\n class=\"${btnClass}\"\n part=\"filter-button\">\n ${convertDecimalNCRtoUTF8(category.name)}\n </fv-button>`;\n })\n : ''\n }\n </div>\n <fv-list-box @scroll=${this.onScroll} id=\"article-list-container\">\n <fv-pp-container\n style=\"height: unset; flex: 1; border-bottom: unset; --pp-component-overflow-y: hidden;\"\n .contexts=\"${context}\" hide-single-value-properties></fv-pp-container>\n ${\n this.list.map((equipment) => {\n if (equipment.InsertType === \"A\") {\n const component: FittingItemComponent = document.createElement(\"fv-fitting-item\") as FittingItemComponent;\n if (this.img_url_prefix && equipment.imgName) {\n component.image = this.img_url_prefix + convertDecimalNCRtoUTF8(equipment.imgName);\n }\n component.jsaNumber = equipment.jsaNumber;\n component.number = equipment.ArtNr;\n component.artText = equipment.artText;\n if (equipment.Active) {\n component.classList.add(\"active\");\n }\n component.addEventListener(\"onArticleClick\", (e: Event) => {\n const component = e.currentTarget as FittingItemComponent;\n this.onFittingClick(e, component, equipment);\n });\n\n component.addEventListener(\"onDeleteClick\", (e: Event) => {\n const component = e.currentTarget as FittingItemComponent;\n this.onFittingDeleteClick(e, component);\n });\n\n component.addEventListener(\"onResetClick\", (e: Event) => {\n const component = e.currentTarget as FittingItemComponent;\n this.onFittingResetClick(e, component);\n });\n\n component.addEventListener(\"onMoveClick\", (e: Event) => {\n const component = e.currentTarget as FittingItemComponent;\n this.onFittingMoveClick(e, component);\n });\n return component;\n }\n if (equipment.InsertType === \"P\") {\n const component: ProptransItemComponent = document.createElement(\"fv-proptrans-item\") as ProptransItemComponent;\n if (this.img_url_prefix && equipment.imgName) {\n component.image = this.img_url_prefix + convertDecimalNCRtoUTF8(equipment.imgName);\n }\n component.ptid = equipment.PT_ID;\n component.number = equipment.ArtNr;\n component.artText = equipment.artText;\n if (equipment.Active) {\n component.classList.add(\"active\");\n }\n component.addEventListener(\"onArticleClick\", (e: Event) => {\n const component = e.currentTarget as ProptransItemComponent;\n this.onProptransferClick(e, component, equipment);\n });\n\n component.addEventListener(\"onDeleteClick\", (e: Event) => {\n const component = e.currentTarget as ProptransItemComponent;\n this.onProptransferDeleteClick(e, component);\n });\n return component\n }\n if (equipment.InsertType === \"S\" && !this._hideShoppingCartItems) {\n const component: ShoppingcartItemComponent = document.createElement(\"fv-shoppingcart-item\") as ShoppingcartItemComponent;\n if (this.img_url_prefix && equipment.imgName) {\n component.image = this.img_url_prefix + convertDecimalNCRtoUTF8(equipment.imgName);\n }\n component.number = equipment.ArtNr;\n component.artText = equipment.artText;\n if (equipment.Active) {\n component.classList.add(\"active\");\n }\n component.addEventListener(\"onArticleClick\", (e: Event) => {\n const component = e.currentTarget as ShoppingcartItemComponent;\n this.onShoppingCartClick(e, component);\n });\n return component;\n }\n // articleComponent.onArticleClick = (e: Event, component: FittingItemComponent) => {\n // this.onArticleClick(e, component);\n // };\n })\n }\n <slot></slot>\n </fv-list-box>\n `;\n }\n\n private getActiveFilters() {\n return this._categoryFilter.filter(x => x.active)\n }\n\n private getFilter(id: string) {\n return this._categoryFilter.find(x => x.id === id);\n }\n\n private getPropertyList(context?: IProgPropertyContext): IProgProperty[] {\n let children = context?.children || {};\n return Object.values(children)?.flatMap(program => {\n return Object.values(program.children)?.flatMap(property => {\n return property;\n }) || [];\n }) || [];\n }\n\n private focusSceneAfterClick() {\n WebViewerService.FurnviewWebViewer?.focus();\n }\n\n private onFittingClick = async (e: Event, component: FittingItemComponent, data: IEquipmentData) => {\n if (data?.frontState !== undefined) {\n this.setFrontState(data.frontState == 1, \".toggle-front-button\");\n }\n if (component.jsaNumber) {\n await CommunicationMessageService?.loadArticle(this._manufacturer, this._program, component.jsaNumber);\n }\n };\n\n private onFittingDeleteClick = async (e: Event, component: FittingItemComponent) => {\n await CommunicationMessageService?.fittingRemove();\n };\n\n private onFittingMoveClick = async (e: Event, component: FittingItemComponent) => {\n await CommunicationMessageService?.fittingMove();\n };\n\n private onFittingResetClick = async (e: Event, component: FittingItemComponent) => {\n await CommunicationMessageService?.fittingReset();\n };\n\n private onProptransferClick = async (e: Event, component: ProptransItemComponent, data: IEquipmentData) => {\n if (data?.frontState !== undefined) {\n this.setFrontState(data.frontState == 1, \".toggle-front-button\");\n }\n if (component.ptid) {\n await CommunicationMessageService?.startPropTransfer(component.ptid);\n this.focusSceneAfterClick();\n }\n };\n\n private onProptransferDeleteClick = async (e: Event, component: ProptransItemComponent) => {\n if (component.ptid) {\n await CommunicationMessageService?.deletePropTransfer(component.ptid, this._manufacturer, this._program);\n this.focusSceneAfterClick();\n }\n };\n\n private onShoppingCartClick = async (e: Event, component: ShoppingcartItemComponent) => {\n if (component.number) {\n await CommunicationMessageService?.loadArticle(this._manufacturer, this._program, component.number);\n this.focusSceneAfterClick();\n }\n };\n\n private setFrontState(showFront_: boolean, toolbarButtonSelector_: string) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: true,\n events: [\n {\n id: \"front-state\",\n data: {\n value: showFront_\n },\n },\n {\n id: \"toolbar-button-set-active\",\n data: {\n components: [\n {\n name: \"fv-toolbar-button\",\n selector: toolbarButtonSelector_,\n all: true\n }\n ],\n value: !showFront_\n }\n }\n ]\n }));\n }\n}\n","import {css, html, PropertyValueMap, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../standard/base/base.component\";\nimport style from \"./catalog-selector.component.sass?inline\";\nimport {FilteredCatalogComponent} from \"../filtered-catalog\";\nimport {CatalogSelectorOptionComponent} from \"./catalog-selector-option.component\";\n\n\nexport interface CatalogAttributesList {\n [key: string]: string | number | Record<string, unknown> | Array<unknown>\n}\n\ninterface CatalogSelectorOptionData {\n catalog: string,\n tag: string,\n txt: string,\n attributes: CatalogAttributesList\n}\n\n\n@customElement(\"fv-catalog-selector\")\nexport class CatalogSelectorComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: Array, reflect: true, attribute: \"options\"})\n catalogOptions: Array<CatalogSelectorOptionData> = [];\n\n @property({type: Boolean, reflect: true, attribute: \"disable-empty-catalogs\"})\n disabledEmptyCatalogs = false;\n\n constructor() {\n super();\n\n this.addEventListener(\"filtered-catalog-filled\", (e: CustomEventInit<{\n empty: boolean,\n catalog: FilteredCatalogComponent\n }>) => {\n const selectorOption = this.querySelector<CatalogSelectorOptionComponent>(`:scope > fv-catalog-selector-option[catalog=\"${e.detail?.catalog.getAttribute(\"catalog-name\")}\"]`)\n if(this.disabledEmptyCatalogs && selectorOption) {\n selectorOption.disabled = e.detail?.empty ?? false\n if(selectorOption.disabled) {\n this.dispatchEvent(new CustomEvent(\"enable-first-catalog\"));\n }\n }\n });\n\n this.addEventListener(\"enable-first-catalog\", (e) => {\n e.stopPropagation();\n e.preventDefault();\n const options = this.querySelectorAll<CatalogSelectorComponent>(':scope > fv-catalog-selector-option');\n options.forEach((options, i) => {\n options.classList.remove(\"active\");\n if (i === 0) {\n options.classList.add(\"active\");\n const catalog = options.getAttribute(\"catalog\");\n if (catalog) {\n this.dispatchEvent(new CustomEvent(\"show-catalog\", {bubbles: false, detail: {catalog}}));\n }\n }\n })\n })\n\n this.addEventListener(\"disable-all-options\", (e) => {\n e.stopPropagation();\n e.preventDefault();\n\n const options = this.querySelectorAll(\":scope > fv-catalog-selector-option\");\n options.forEach((option) => {\n option.classList.remove(\"active\");\n });\n });\n\n this.addEventListener(\"show-catalog\", (e) => {\n e.stopPropagation();\n e.preventDefault();\n\n const event = e as CustomEventInit<{ catalog: string, properties: CatalogAttributesList }>;\n const catalogName = event.detail?.catalog ? event.detail?.catalog : \"\";\n const catalogs = this.querySelectorAll(\":scope > [catalog-name]\");\n catalogs.forEach((catalog) => {\n\n if (event.detail && event.detail.properties) {\n const propertyNames = Object.keys(event.detail.properties);\n for (const propertyName of propertyNames) {\n const property = event.detail.properties[propertyName];\n\n if (typeof property === \"boolean\" && property) catalog.setAttribute(propertyName, \"\");\n else if (typeof property === \"boolean\" && !property) catalog.removeAttribute(propertyName);\n else if (typeof property === \"object\") catalog.setAttribute(propertyName, JSON.stringify(property));\n else {\n catalog.setAttribute(propertyName, property as string);\n }\n }\n }\n\n\n if (catalog.getAttribute(\"catalog-name\") === catalogName) {\n catalog.classList.remove(\"hidden\");\n return;\n }\n catalog.classList.add(\"hidden\");\n });\n });\n }\n\n private createGeneratedOptions() {\n const generated = document.querySelectorAll(\"[generated]\");\n generated.forEach((el) => {\n this.removeChild(el);\n });\n this.catalogOptions.forEach((option: CatalogSelectorOptionData) => {\n const optionElement = document.createElement(option.tag);\n optionElement.setAttribute(\"generated\", \"\");\n optionElement.setAttribute(\"catalog\", option.catalog);\n optionElement.setAttribute(\"slot\", \"options\");\n optionElement.setAttribute(\"catalog-attributes\", JSON.stringify(option.attributes));\n optionElement.setAttribute(\"i18n\", option.txt);\n this.appendChild(optionElement);\n });\n }\n\n render(): TemplateResult<1> {\n this.createGeneratedOptions();\n\n return html`\n <div class=\"title-container\">\n <slot class=\"title\" name=\"title\"></slot>\n </div>\n <div class=\"options-container\">\n <div class=\"options-inner-container\">\n <slot class=\"options\" name=\"options\"></slot>\n </div>\n </div>\n <div class=\"post-options-space-container\">\n <slot class=\"divider\" name=\"post-options-space\"></slot>\n </div>\n <div class=\"divider-container\">\n <slot class=\"divider\" name=\"divider\"></slot>\n </div>\n <div class=\"catalogs-container\">\n <div class=\"catalogs-inner-container\">\n <slot class=\"catalogs\" name=\"catalogs\"></slot>\n </div>\n </div>\n `;\n }\n\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.updated(_changedProperties);\n\n const optionsElement = this.renderRoot.querySelector(\".options\");\n if (optionsElement) {\n let anyActive = false;\n for (let index = 0; index < optionsElement.children.length; ++index) {\n anyActive = optionsElement.children[index].classList.contains(\"active\");\n }\n if (anyActive == false) {\n const first = optionsElement.firstElementChild;\n if (first) {\n (first as HTMLElement).click();\n }\n }\n }\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { CatalogAttributesList } from \"./catalog-selector.component\";\nimport style from \"./catalog-selector-option.component.sass?inline\";\n\n\n@customElement(\"fv-catalog-selector-option\")\nexport class CatalogSelectorOptionComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true })\n public catalog = \"\";\n\n @property({ type: Object, reflect: true, attribute: \"catalog-attributes\" })\n public catalogAttributes: CatalogAttributesList = {};\n\n @property({type: Boolean, reflect: true, attribute: \"disabled\"})\n public disabled = false;\n\n constructor() {\n super();\n\n this.addEventListener(\"click\", ()=>{\n this.dispatchEvent(new CustomEvent(\"disable-all-options\", { bubbles: true }));\n this.classList.add(\"active\");\n this.dispatchEvent(new CustomEvent(\"show-catalog\", { bubbles: true, detail: { catalog: this.catalog, properties: this.catalogAttributes } }));\n });\n }\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n}\n","class PriceFormatServiceClass {\n\n private readonly localeMap: Record<string, string> = {\n CHF: \"de-CH\",\n };\n\n formatPrice(price: number, decimalSeparator: string = \",\", thousandsSeparator?: string): string {\n if (price === undefined || price === null || isNaN(price)) {\n return \"\";\n }\n\n const [integerPart, decimalPart] = price.toFixed(2).split(\".\");\n const formattedInteger = thousandsSeparator ? integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator) : integerPart;\n return decimalSeparator ? `${formattedInteger}${decimalSeparator}${decimalPart}` : `${formattedInteger}${decimalPart}`;\n }\n\n formatPriceForCurrency(price: number, currency?: string, thousandsSeparator?: string): string {\n if (price === undefined || price === null || isNaN(price)) {\n return \"\";\n }\n\n const locale = currency ? this.localeMap[currency] : undefined;\n if (locale) {\n return new Intl.NumberFormat(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(price);\n }\n return this.formatPrice(price, \",\", thousandsSeparator);\n }\n\n formatPriceStringForCurrency(value: string, currency?: string): string {\n if (!value) {\n return \"\";\n }\n\n const locale = currency ? this.localeMap[currency] : undefined;\n if (!locale) {\n return value;\n }\n\n const normalized = value.toString().replace(/\\./g, \"\").replace(\",\", \".\");\n const num = parseFloat(normalized);\n if (isNaN(num)) {\n return value;\n }\n\n return new Intl.NumberFormat(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(num);\n }\n\n}\nexport const PriceFormatService = new PriceFormatServiceClass();\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from \"./total-price.component.sass?inline\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { LoadingComponent } from \"../../standard/loading/loading.component\";\nimport { PriceFormatService } from \"../../../utils/price-format.service\";\nimport { WebViewerService } from \"@dh-software/webui-api\";\nimport { IPriceData } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-total-price\")\nexport class TotalPriceComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean })\n public showUVP = false;\n\n @property({ type: String })\n private priceText = \"0,00\";\n\n @property({ type: String })\n private currency = \"\";\n\n @property({ type: String, reflect: true, attribute: \"config-id\" })\n protected configId = \"\";\n\n @query(\"fv-loading\")\n public fvLoading !: LoadingComponent;\n\n constructor() {\n super();\n }\n\n openModal(): void {\n return;\n }\n\n setPrice(price_: string, currency_: string): void {\n currency_ = this.currency || currency_;\n this.priceText = PriceFormatService.formatPriceStringForCurrency(price_, currency_) + \" \" + currency_;\n this.requestUpdate(\"priceText\");\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.translate = false;\n\n WebViewerService?.on(\"furnview.changePrice\", async (data_: unknown): Promise<void> => {\n const priceData = data_ as IPriceData;\n window.g_dataInterface[\"current_price\"] = priceData;\n this.setPrice(priceData.totalPrice, priceData.currency);\n this.fvLoading.active = false;\n });\n WebViewerService?.on(\"furnview.pending_change\", async (data_: unknown): Promise<void> => {\n this.fvLoading.active = true;\n });\n\n this.configId = \"show_price\";\n }\n\n render(): TemplateResult<1> {\n const iconClass = { hidden: this.classList.contains(\"no-icon\") };\n const uvpText = this.showUVP && window.g_configuration.show_price_uvp_text;\n return html`\n ${uvpText ? html`<span class=\"uvp-text\" i18n=\"fv.konfigurator.landing.page.basis.price.uvp\"></span>` : \"\"}\n <span class=\"price-text\" @click=\"${this.openModal}\">${this.priceText}</span>\n <fv-loading slot=\"loader-slot\"></fv-loading>\n <slot name=\"icon\" class=\"${classMap(iconClass)}\">\n <svg version=\"1.1\" class=\"icon cart\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 122.9 107.5\" xml:space=\"preserve\">\n <g>\n <path d=\"M3.9,7.9C1.8,7.9,0,6.1,0,3.9C0,1.8,1.8,0,3.9,0h10.2c0.1,0,0.3,0,0.4,0c3.6,0.1,6.8,0.8,9.5,2.5c3,1.9,5.2,4.8,6.4,9.1 c0,0.1,0,0.2,0.1,0.3l1,4H119c2.2,0,3.9,1.8,3.9,3.9c0,0.4-0.1,0.8-0.2,1.2l-10.2,41.1c-0.4,1.8-2,3-3.8,3v0H44.7 c1.4,5.2,2.8,8,4.7,9.3c2.3,1.5,6.3,1.6,13,1.5h0.1v0h45.2c2.2,0,3.9,1.8,3.9,3.9c0,2.2-1.8,3.9-3.9,3.9H62.5v0 c-8.3,0.1-13.4-0.1-17.5-2.8c-4.2-2.8-6.4-7.6-8.6-16.3l0,0L23,13.9c0-0.1,0-0.1-0.1-0.2c-0.6-2.2-1.6-3.7-3-4.5 c-1.4-0.9-3.3-1.3-5.5-1.3c-0.1,0-0.2,0-0.3,0H3.9L3.9,7.9z M96,88.3c5.3,0,9.6,4.3,9.6,9.6c0,5.3-4.3,9.6-9.6,9.6 c-5.3,0-9.6-4.3-9.6-9.6C86.4,92.6,90.7,88.3,96,88.3L96,88.3z M53.9,88.3c5.3,0,9.6,4.3,9.6,9.6c0,5.3-4.3,9.6-9.6,9.6 c-5.3,0-9.6-4.3-9.6-9.6C44.3,92.6,48.6,88.3,53.9,88.3L53.9,88.3z M33.7,23.7l8.9,33.5h63.1l8.3-33.5H33.7L33.7,23.7z\"/>\n </g>\n </svg>\n </slot>\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from \"./price-summary.component.sass?inline\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { LoadingComponent } from \"../../standard/loading/loading.component\";\nimport { PriceFormatService } from \"../../../utils/price-format.service\";\nimport { WebViewerService } from \"@dh-software/webui-api\";\nimport { IPriceData } from \"@dh-software/webui-types\";\n\ninterface IProgramSummary {\n key: string;\n total: number;\n manuLongName: string;\n progLongName: string;\n}\n\n@customElement(\"fv-price-summary\")\nexport class PriceSummaryComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String })\n private currency = \"\";\n\n @property({ type: String })\n private totalPriceText = \"\";\n\n @property({ type: Array })\n private programs: Array<IProgramSummary> = [];\n\n @property({ type: String, reflect: true, attribute: \"config-id\" })\n protected configId = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"show-total-when-empty\" })\n public showTotalWhenEmpty = false;\n\n @property({ type: String, attribute: \"total-label-text-id\" })\n public totalLabelTextId = \"total_price_inclusive_vat\";\n\n @property({ type: String, reflect: true, attribute: \"thousands-separator\" })\n public thousandsSeparator?: string;\n\n @property({ type: Object, attribute: \"info-label-text-overrides\" })\n public infoLabelTextOverrides?: { [manuProgKey: string]: string };\n\n @query(\"fv-loading\")\n public _loadingElement !: LoadingComponent;\n\n constructor() {\n super();\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.translate = false;\n\n WebViewerService?.on(\"furnview.changePrice\", async (data_: unknown) => {\n const priceData = data_ as IPriceData;\n window.g_dataInterface[\"current_price\"] = priceData;\n this.updatePrograms(priceData);\n this._loadingElement.active = false;\n });\n WebViewerService?.on(\"furnview.pending_change\", async (data_: unknown) => {\n this._loadingElement.active = true;\n });\n\n this.configId = \"show_price\";\n }\n\n private updatePrograms(data_: IPriceData) {\n this.currency = data_.currency || this.currency;\n this.totalPriceText = PriceFormatService.formatPriceStringForCurrency(data_.totalPrice, this.currency) + \" \" + this.currency;\n\n const grouped = (data_.Articles ?? []).reduce((acc_, group_) => {\n const key = `${group_.DH_Manu}_${group_.DH_Prog}`;\n const total = (group_.Articles ?? []).reduce((sum_, item_) => {\n return sum_ + (item_.DiscountedTotalPriceOfSale || item_.TotalPriceOfSale);\n }, 0);\n const existing = acc_.get(key);\n if (existing) {\n existing.total += total;\n } else {\n acc_.set(key, {\n key,\n total,\n manuLongName: group_.Manu,\n progLongName: group_.Prog,\n });\n }\n return acc_;\n }, new Map<string, IProgramSummary>());\n this.programs = Array.from(grouped.values());\n }\n\n private formatTotal(total_: number): string {\n return PriceFormatService.formatPriceForCurrency(total_, this.currency, this.thousandsSeparator) + \" \" + this.currency;\n }\n\n private renderProgramRow(data_: IProgramSummary) {\n const overrideText = this.infoLabelTextOverrides?.[data_.key];\n const label = overrideText\n ? html`<fv-label class=\"prog-label\" i18n=\"${overrideText}\"></fv-label>`\n : html`<fv-label class=\"prog-label\">${data_.manuLongName} · ${data_.progLongName}</fv-label>`;\n\n return html`\n <div class=\"prog-row\">\n ${label}\n <fv-label class=\"prog-price\">${this.formatTotal(data_.total)}</fv-label>\n </div>\n `;\n }\n\n private renderTotalFallback(): TemplateResult<1> {\n return html`\n <div class=\"prog-row prog-row-total-only\">\n <fv-label class=\"prog-price\">${this.totalPriceText}</fv-label>\n </div>\n `;\n }\n\n private renderTotalRow(): TemplateResult<1> {\n return html`\n <div class=\"prog-row prog-row-total\">\n <fv-label class=\"prog-label\" i18n=\"${this.totalLabelTextId}\">Gesamtpreis</fv-label>\n <fv-label class=\"prog-price\">${this.totalPriceText}</fv-label>\n </div>\n `;\n }\n\n render(): TemplateResult<1> {\n const isEmpty = this.programs.length === 0;\n return html`\n <fv-loading slot=\"loader-slot\"></fv-loading>\n <div class=\"prog-list\">\n ${isEmpty && this.showTotalWhenEmpty\n ? this.renderTotalFallback()\n : html`\n ${this.programs.map((prog_) => this.renderProgramRow(prog_))}\n ${!isEmpty ? this.renderTotalRow() : \"\"}\n `}\n </div>\n `;\n }\n}\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nclass SceneHelperServiceClass {\n\n\tprivate _highlightTimeout: number | undefined = undefined;\n\n\tconstructor() {\n\t}\n\n\tpublic isHighlightTimeoutActive(): boolean {\n\t\treturn this._highlightTimeout ? true : false\n\t}\n\n\tpublic async addHighlightBox(ii: number): Promise<void> {\n\t\tif (this.isHighlightTimeoutActive()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._highlightTimeout = setTimeout(async (): Promise<void> => {\n\t\t\tawait CommunicationMessageService.addHighlightBox(ii);\n\t\t}, 200);\n\t}\n\n\tpublic async removeHighlightBox(ii: number): Promise<void> {\n\t\tif (this.isHighlightTimeoutActive()) {\n\t\t\tclearTimeout(this._highlightTimeout);\n\t\t\tthis._highlightTimeout = undefined;\n\t\t\tawait CommunicationMessageService.removeMarker(ii);\n\t\t}\n\t}\n\n\tpublic async updateHighlightBox(ii: number): Promise<void> {\n\t\tif (this.isHighlightTimeoutActive()) {\n\t\t\tawait CommunicationMessageService.removeMarker(ii);\n\t\t\tawait CommunicationMessageService.addHighlightBox(ii);\n\t\t}\n\t}\n\n\tpublic async selectObject(ii: number): Promise<void> {\n\t\tawait CommunicationMessageService.selectObjectInScene(ii);\n\t}\n\n\tpublic async deselectObject(ii: number): Promise<void> {\n\t\tawait CommunicationMessageService.deselectObjectInScene(ii);\n\t}\n\n\tpublic async clearSelection(): Promise<void> {\n\t\tawait CommunicationMessageService.clearSelectionHandler();\n\t}\n}\n\nexport const SceneHelperService = new SceneHelperServiceClass();\n","import { TemplateResult, html, css, unsafeCSS } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\nimport { BaseElement } from \"../../standard/base/base.component\";\r\nimport { IPriceItemData } from \"../../../define/interface\";\r\nimport style from \"./base-price-item.sass?inline\";\r\nimport { PriceFormatService } from \"../../../utils/price-format.service\";\r\nimport { SceneHelperService } from \"../../../utils/scene-helper.service\";\r\n\r\n\r\n\r\nexport class BasePriceItemComponent extends BaseElement {\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n @property({ type: Number })\r\n instanceIdent = -1;\r\n\r\n @property({ type: String })\r\n description = \"\";\r\n\r\n @property({ type: Number })\r\n quantity = 0;\r\n\r\n @property({ type: String })\r\n totalPriceOfSale = \"\";\r\n\r\n @property({ type: String })\r\n discountedTotalPriceOfSale = \"\";\r\n\r\n @property({ type: Number })\r\n discountedPriceOfSaleRelative = 0;\r\n\r\n @property({ type: Boolean })\r\n hasPositionalDiscounts = false;\r\n\r\n @property({ type: String })\r\n currency = \"\";\r\n\r\n @property({ type: String })\r\n articleId = \"\";\r\n\r\n @property({ type: Array })\r\n remarks: Array<string> = [];\r\n\r\n @property({ type: String, reflect: true, attribute: \"remarks-prefix\" })\r\n remarksPrefix = \"\";\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"hide-price\" })\r\n hidePrice = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"zero-price\" })\r\n showZeroPrice = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"zero-prices-as-subposition-total\" })\r\n zeroPricesAsSubpositionTotal = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"show-position\" })\r\n showPosition = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"show-article-id\" })\r\n showArticleId = false;\r\n\r\n @property({ type: Number, reflect: true, attribute: \"dim-float-digits\" })\r\n dimFloatDigits = 2;\r\n\r\n @property({ type: String, reflect: true, attribute: \"dimension-suffix\" })\r\n dimensionSuffix = \"\";\r\n\r\n @property({ type: String, reflect: true, attribute: \"thousands-separator\" })\r\n thousandsSeparator?: string;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"highlight-element-on-hover\" })\r\n highlightElementOnHover = false;\r\n\r\n @property({ type: Object, reflect: true, attribute: \"price-item-data\" })\r\n priceItemData: IPriceItemData = {\r\n ArticleDescription: \"\",\r\n TotalPriceOfSale: 0,\r\n Quantity: 0,\r\n DiscountedTotalPriceOfSale: 0,\r\n DiscountedPriceOfSaleRelative: 0,\r\n Article_ID: \"\",\r\n Positions_NR: \"\",\r\n GUID: \"\",\r\n Remarks: [],\r\n DimX: \"\",\r\n DimY: \"\",\r\n DimZ: \"\",\r\n PriceOfSale: 0,\r\n PurchasePrice: 0,\r\n PurchasePriceCalc: 0,\r\n PlannedManufacturer: \"\",\r\n PlannedProg: \"\",\r\n DH_Manu: \"\",\r\n DH_Prog: \"\"\r\n };\r\n\r\n @property({ type: Number, reflect: true, attribute: \"total-price-position\" })\r\n totalPricePosition: number | undefined = undefined;\r\n\r\n @property({ type: String, reflect: false, attribute: \"webshop-link\"})\r\n webshopLink: string | undefined = undefined;\r\n\r\n protected async onMouseEnter() {\r\n if (this.highlightElementOnHover) {\r\n await SceneHelperService.addHighlightBox(this.instanceIdent);\r\n }\r\n }\r\n\r\n protected async onMouseLeave() {\r\n if (this.highlightElementOnHover) {\r\n await SceneHelperService.removeHighlightBox(this.instanceIdent);\r\n }\r\n }\r\n\r\n protected getPriceFormatText(price: number): string {\r\n return PriceFormatService.formatPriceForCurrency(price, this.currency, this.thousandsSeparator);\r\n }\r\n protected getDimensionFormatText(dimension: string): string {\r\n return parseFloat(dimension).toFixed(this.dimFloatDigits).replace(\".\", \",\") + \" \" + this.dimensionSuffix;\r\n }\r\n\r\n protected renderPositionLabel(): TemplateResult<1> {\r\n if (this.showPosition) {\r\n return html`<label class=\"position-nr\">${this.priceItemData.Positions_NR}</label>`;\r\n }\r\n return html``;\r\n }\r\n\r\n protected renderArticleId(): TemplateResult<1> {\r\n if (this.showArticleId) {\r\n return html`<label class=\"articleid\">${this.articleId}</label>`;\r\n }\r\n return html``;\r\n }\r\n\r\n protected renderRemarks(remarkPrefix_ = \"\"): TemplateResult<1> {\r\n const remarkPrefix = remarkPrefix_.length > 0 ? remarkPrefix_ : this.remarksPrefix;\r\n\r\n if (this.remarks == undefined || this.remarks.length < 1) return html``;\r\n return html`\r\n <div class=\"remarks\">${this.remarks.map((remark) => html`\r\n <div class=\"remark-line\">\r\n <div class=\"remark-prefix\">${remarkPrefix}</div>\r\n <div class=\"remark\">${remark}</div>\r\n </div>\r\n `)}</div>\r\n `;\r\n }\r\n\r\n protected renderTotalPriceOfSaleLabel(): TemplateResult<1> {\r\n\r\n if (this.hidePrice) {\r\n return html``;\r\n }\r\n if (this.zeroPricesAsSubpositionTotal && this.totalPricePosition && parseFloat(this.totalPriceOfSale) < 0.1) {\r\n return html`<label>${this.getPriceFormatText(this.totalPricePosition) + \" \" + this.currency}</label>`;\r\n }\r\n return html`<label>${this.totalPriceOfSale + \" \" + this.currency}</label>`;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-item.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n@customElement(\"fv-price-item\")\nexport class PriceItemComponent extends BasePriceItemComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n render() {\n if (+this.totalPriceOfSale <= 0 && !this.showZeroPrice) {\n this.remove();\n return html``;\n }\n if (this.hasPositionalDiscounts) {\n return html`\n <div class=\"fullWidth\">\n <div class=\"price-info\">\n <div class=\"description\">${this.renderPositionLabel()}<label >${this.description}</label></div>\n <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n </div>\n <div class=\"price-info\">\n <div class=\"description\"><label i18n=\"20444\">Rabatt</label></div>\n <div class=\"discounted-relative\"><label>${this.discountedPriceOfSaleRelative}%</label></div>\n </div>\n <div class=\"price-info bottomBorder\">\n <div class=\"description\"><label i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</label></div>\n <div class=\"price-discounted\"><label>${this.discountedTotalPriceOfSale + \" \" + this.currency}</label></div>\n </div>\n </div>\n `;\n }\n else {\n return html`\n <div class=\"fullWidth\">\n <div class=\"price-info bottomBorder\">\n <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n </div>\n </div>\n `;\n }\n }\n\n}\n","import { css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-item-2.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n\n@customElement(\"fv-price-item-2\")\nexport class PriceItem2Component extends BasePriceItemComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n render() {\n const singlePrice: number = this.priceItemData.TotalPriceOfSale / this.quantity;\n if (singlePrice <= 0 && !this.showZeroPrice) {\n this.remove();\n return html``;\n }\n return html`\n <div class=\"fullWidth\" @mouseenter=\"${this.onMouseEnter}\" @mouseleave=\"${this.onMouseLeave}\">\n <div class=\"price-info\">\n <div class=\"articleid\">${this.renderArticleId()}</div>\n <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n <div class=\"price-single-element\"><label>${this.hidePrice ? \"\" : this.getPriceFormatText(singlePrice) + \" \" + this.currency}</label></div>\n <div class=\"quantity-total-price-line\">\n <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n </div>\n </div>\n </div>\n `;\n\n\n // if (this.hasPositionalDiscounts) {\n // return html`\n // <div class=\"fullWidth\">\n // <div class=\"price-info\">\n // <div class=\"description\"><label >${this.description}</label></div>\n // <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n // <div class=\"price-of-sale\"><label>${this.totalPriceOfSale + \" \" + this.currency}</label></div>\n // </div>\n // <div class=\"price-info\">\n // <div class=\"description\"><label i18n=\"20444\">Rabatt</label></div>\n // <div class=\"discounted-relative\"><label>${this.discountedPriceOfSaleRelative}%</label></div>\n // </div>\n // <div class=\"price-info bottomBorder\">\n // <div class=\"description\"><label i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</label></div>\n // <div class=\"price-discounted\"><label>${this.discountedTotalPriceOfSale + \" \" + this.currency}</label></div>\n // </div>\n // </div>\n // `;\n // }\n // else {\n // return html`\n // <div class=\"fullWidth\">\n // <div class=\"price-info bottomBorder\">\n // <div class=\"description\"><label>${this.description}</label></div>\n // <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n // <div class=\"price-of-sale\"><label>${this.totalPriceOfSale + \" \" + this.currency}</label></div>\n // </div>\n // </div>\n // `;\n // }\n }\n}\n","import { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-item-3.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n\n@customElement(\"fv-price-item-3\")\nexport class PriceItem3Component extends BasePriceItemComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n render(): TemplateResult<1> {\n const singlePrice: number = parseFloat(this.totalPriceOfSale) / this.quantity;\n if (+singlePrice <= 0 && !this.showZeroPrice) {\n this.remove();\n return html``;\n }\n return html`\n <div class=\"fullWidth\">\n <div class=\"price-item-grid-container\">\n <div class=\"articleid\">${this.renderPositionLabel()}${this.articleId}</div>\n <div class=\"quantity\"><lable> x ${this.quantity}</lable></div>\n <div class=\"singlePrice\">${this.hidePrice ? \"\" : this.getPriceFormatText(singlePrice)}</div>\n <div class=\"description\">${this.description}</div>\n ${this.renderRemarks(\" - \")}\n </div>\n </div>\n `;\n }\n}","import { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-item-4.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n\n@customElement(\"fv-price-item-4\")\nexport class PriceItem4Component extends BasePriceItemComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n render(): TemplateResult<1> {\n const singlePrice: number = parseFloat(this.totalPriceOfSale) / this.quantity;\n if (+singlePrice <= 0 && !this.showZeroPrice) {\n this.remove();\n return html``;\n }\n return html`\n <div class=\"fullWidth\">\n <div class=\"price-item-grid-container\">\n <div class=\"articleid\">${this.renderPositionLabel()}${this.articleId}</div>\n <div class=\"quantity\"><lable> x ${this.quantity}</lable></div>\n <div class=\"singlePrice\">${this.hidePrice ? \"\" : this.getPriceFormatText(singlePrice)}</div>\n <div class=\"description\">${this.description}</div>\n ${this.renderRemarks()}\n </div>\n </div>\n `;\n }\n}","import { css, html, unsafeCSS, TemplateResult } from \"lit\";\nimport style from \"./price-item-5.component.sass?inline\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n@customElement(\"fv-price-item-5\")\nexport class PriceItem5Component extends BasePriceItemComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true, attribute: \"remarks-expandable\" })\n remarksExpandable = false;\n\n @state()\n private remarksExpanded = false;\n\n constructor() {\n super();\n }\n\n private toggleRemarks(e: Event): void {\n e.stopPropagation();\n this.remarksExpanded = !this.remarksExpanded;\n }\n\n private renderRemarksToggleButton(): TemplateResult<1> {\n if (!this.remarksExpandable || !this.remarks || this.remarks.length < 1) return html``;\n return html`\n <div class=\"remarks-toggle-wrapper\">\n <fv-button\n class=\"remarks-toggle-button\"\n icon=\"fv-icon-arrow-down-2${this.remarksExpanded ? \" mirrored-y\" : \"\"}\"\n @click=\"${(e: Event) => this.toggleRemarks(e)}\">\n </fv-button>\n </div>\n `;\n }\n\n private renderRemarksPanel(): TemplateResult<1> {\n if (!this.remarksExpandable || !this.remarks || this.remarks.length < 1) return html``;\n return html`\n <div class=\"remarks-panel ${this.remarksExpanded ? \"open\" : \"\"}\">\n <div class=\"remarks-panel-inner\">\n ${this.remarks.map(r => html`<div class=\"remarks-panel-line\">${r}</div>`)}\n </div>\n </div>\n `;\n }\n\n private CreateArticleIdLabel(): TemplateResult<1> {\n if (this.webshopLink !== undefined) {\n return html`<a class=\"linkLabel\" href=\"${this.webshopLink + this.articleId}\" target=\"_blank\">${this.articleId}</a>`;\n }\n return html`<label>${this.articleId}</label>`;\n }\n\n\n private _shown = false;\n protected async toggleHighlightBox() {\n if (!this._shown) {\n super.onMouseEnter();\n this._shown = true;\n }\n else {\n super.onMouseLeave();\n this._shown = false;\n }\n }\n\n render(): TemplateResult<1> {\n if (+this.totalPriceOfSale <= 0 && !this.showZeroPrice) {\n this.remove();\n return html``;\n }\n if (this.hasPositionalDiscounts) {\n return html`\n <div class=\"fullWidth\" @click=\"${this.toggleHighlightBox}\">\n <div class=\"price-info\">\n <div class=\"articleid\">${this.renderPositionLabel()}${this.CreateArticleIdLabel()}</div>\n ${this.renderRemarksToggleButton()}\n </div>\n <div class=\"price-info\">\n <div class=\"description\">${this.renderPositionLabel()}<label >${this.description}</label></div>\n <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n </div>\n ${this.renderRemarksPanel()}\n <div class=\"price-info\">\n <div class=\"description\"><label i18n=\"20444\">Rabatt</label></div>\n <div class=\"discounted-relative\"><label>${this.discountedPriceOfSaleRelative}%</label></div>\n </div>\n <div class=\"price-info bottomBorder\">\n <div class=\"description\"><label i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</label></div>\n <div class=\"price-discounted\"><label>${this.discountedTotalPriceOfSale + \" \" + this.currency}</label></div>\n </div>\n </div>\n `;\n }\n else {\n return html`\n <div class=\"fullWidth\" @click=\"${this.toggleHighlightBox}\">\n <div class=\"price-info\">\n <div class=\"articleid\">${this.renderPositionLabel()}${this.CreateArticleIdLabel()}</div>\n ${this.renderRemarksToggleButton()}\n </div>\n <div class=\"price-info bottomBorder\">\n <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n </div>\n ${this.renderRemarksPanel()}\n </div>\n `;\n }\n }\n}\n","import {html, nothing, unsafeCSS} from \"lit\";\nimport {BasePriceItemComponent} from \"../price-item-base/base-price-item\";\n\nimport style from './price-item-6.component.sass?inline'\nimport {customElement} from \"lit/decorators.js\";\n\n@customElement('fv-price-item-6')\nexport class PriceItem6Component extends BasePriceItemComponent {\n\n static styles = [super.styles || [], unsafeCSS(style)]\n\n protected render(): unknown {\n const data = this.priceItemData;\n return html`\n <div class=\"line bold\">\n <fv-label class=\"bold\">${data.Quantity} x ${data.ArticleDescription}</fv-label>\n <fv-label class=\"bold\">${data.PriceOfSale} ${this.currency}</fv-label>\n </div>\n <div class=\"line\">\n <fv-label>${data.Article_ID}</fv-label>\n <fv-label>â €</fv-label> <!-- Empty -->\n </div>\n <!-- \n <div class=\"line\">\n ${this.hasDimensions() ? html`<fv-label>Maße H/B/T</fv-label>` : nothing}\n ${this.hasDimensions() ? html`<fv-label>${this.roundDimension(data.DimZ)}/${this.roundDimension(data.DimX)}/${this.roundDimension(data.DimY)}</fv-label>` : nothing}\n </div>\n <div class=\"line\">\n <fv-label>EAN-Nummer</fv-label>\n <fv-label>${this.getEAN()}</fv-label>\n </div> \n -->\n `\n }\n\n hasDimensions() {\n return !(isNaN(parseFloat(this.priceItemData.DimX)) || isNaN(parseFloat(this.priceItemData.DimY)) || isNaN(parseFloat(this.priceItemData.DimZ)))\n }\n\n roundDimension(value: string | number) {\n if(typeof value === \"string\") {\n value = parseFloat(value);\n }\n return `${value.toFixed(this.dimFloatDigits)}`\n }\n\n getEAN() {\n const result = this.priceItemData.Remarks?.find(x => x.includes(\"EAN: \"))\n if(result){\n return result.replace(\"EAN: \", \"\");\n }\n return \"\";\n }\n\n}\n","import {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\n\nexport interface IDimensionSortItem {\n key: string;\n value: any;\n params: { [key: string]: unknown };\n}\n\nconst UNIT_BY_SCALE: Record<number, string> = {\n 1: \"mm\",\n 0.1: \"cm\",\n 0.01: \"dm\",\n 0.001: \"m\"\n};\n\nclass DimensionHelperClass {\n private _currentDimensionsOrder = \"HBT\"\n private isInitialized: Promise<void> = new Promise<void>((res, rej) => res());\n\n constructor() {\n this.isInitialized = this.initialize();\n }\n\n private async initialize() {\n await WebViewerService.IsAppReady;\n const countryInfo = await CommunicationMessageService.getCountryInfo();\n if (countryInfo) {\n this._currentDimensionsOrder = countryInfo?.currentDimensionsorder || this._currentDimensionsOrder;\n window.dispatchEvent(new CustomEvent(\"country-info\", {detail: countryInfo, bubbles: true, composed: true}));\n }\n }\n\n public get IsInitialized(): Promise<void> {\n return this.isInitialized;\n }\n\n public get DimensionsOrder(): string {\n return this._currentDimensionsOrder;\n }\n\n public sortDimensionsByOrder(dimensions: IDimensionSortItem[]): IDimensionSortItem[] {\n return dimensions.sort((a, b) => {\n const indexA = this.DimensionsOrder.indexOf(a.key);\n const indexB = this.DimensionsOrder.indexOf(b.key);\n return indexA - indexB;\n });\n }\n\n public getDimensionTypeFromIndex(index: number): string {\n const order = this.DimensionsOrder;\n if (index < 0 || index >= order.length) {\n return 'unknown';\n }\n return order[index];\n }\n\n public getUnitByDimScale(scale: number): string | undefined {\n return UNIT_BY_SCALE[scale];\n }\n\n public getDimensionNameFromIndex(index: number): string {\n switch (this.getDimensionTypeFromIndex(index)) {\n case 'H':\n return 'height';\n case 'B':\n return 'width';\n case 'T':\n return 'depth';\n default:\n return 'unknown';\n }\n }\n}\n\nexport const DimensionHelper = new DimensionHelperClass();\n","import { css, html, unsafeCSS, TemplateResult, nothing } from \"lit\";\r\nimport style from \"./price-item-fp.component.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\r\nimport { IDimensionSortItem, DimensionHelper } from \"../../../utils/dimension-helper.class\";\r\n\r\n@customElement('fp-price-item')\r\nexport class PriceItemFpComponent extends BasePriceItemComponent {\r\n\r\n\tstatic styles = [\r\n\t\tsuper.styles || [],\r\n\t\tcss`${unsafeCSS(style)}`\r\n\t];\r\n\r\n\tprivate dimensionDelimeter: string = \"/\";\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprotected renderDimensionText(dimension: string) {\r\n\t\treturn parseFloat(dimension).toFixed(1).replace(\".\", \",\");\r\n\t}\r\n\r\n\tprotected renderDimensionLine(): TemplateResult<1> {\r\n\t\tif (this.priceItemData.DimX.length == 0 || this.priceItemData.DimY.length == 0 || this.priceItemData.DimZ.length == 0) {\r\n\t\t\treturn html``;\r\n\t\t}\r\n\t\tconst dimensionItems: IDimensionSortItem[] = [\r\n\t\t\t{ key: \"B\", value: this.priceItemData.DimX, params: { label: \"fv.generickatatree.b\" } },\r\n\t\t\t{ key: \"T\", value: this.priceItemData.DimY, params: { label: \"fv.generickatatree.t\" } },\r\n\t\t\t{ key: \"H\", value: this.priceItemData.DimZ, params: { label: \"fv.generickatatree.h\" } },\r\n\t\t];\r\n\r\n\t\tDimensionHelper.sortDimensionsByOrder(dimensionItems);\r\n\r\n\t\treturn html`\r\n\t\t<div class=\"price-dimensions\">\r\n\t\t\t<div class=\"dimensions-headline\">\r\n\t\t\t\t${dimensionItems.map((item_, index_) => {\r\n\t\t\t\t\tconst isDelimeterNeed = index_ !== dimensionItems.length - 1;\r\n\t\t\t\t\treturn html`\r\n\t\t\t\t\t\t<label i18n = \"${item_.params.label}\"></label> ${isDelimeterNeed ? this.dimensionDelimeter: ''}\r\n\t\t\t\t\t`;\r\n\t\t\t\t})}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"dimensions\">\r\n\t\t\t\t${dimensionItems.map((item, index) => {\r\n\t\t\tconst isDelimeterNeed = index !== dimensionItems.length - 1;\r\n\t\t\treturn html`\r\n\t\t\t\t\t\t<div class=\"dimension\">\r\n\t\t\t\t\t\t\t${this.renderDimensionText(item.value)} ${isDelimeterNeed ? this.dimensionDelimeter : ''}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t`;\r\n\t\t})}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t`;\r\n\t}\r\n\r\n\tprotected renderArticleDescription() {\r\n\t\treturn html`\r\n\t\t\t<div class=\"article-description\">\r\n\t\t\t\t<label>${this.description}</label>\r\n\t\t\t</div>\r\n\t\t`;\r\n\t}\r\n\r\n\tprotected renderArticleQuantity() {\r\n\t\treturn html`\r\n \t<div class=\"quantity\"><label>${this.quantity} x</label></div>\r\n\t\t`;\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn html`\r\n\t\t\t<div class=\"price-item-group\" @mouseenter=\"${this.onMouseEnter}\" @mouseleave=\"${this.onMouseLeave}\">\r\n\r\n\t\t\t\t<div class=\"article-info\">\r\n\t\t\t\t\t${this.renderArticleQuantity()}\r\n\r\n\t\t\t\t\t<label class=\"articleid\">${this.articleId}</label>\r\n\t\t\t\t\t<div class=\"dimensions-container\">\r\n\t\t\t\t\t\t${this.renderDimensionLine()}\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"total-price-of-sale\">\r\n\t\t\t\t\t\t${this.renderTotalPriceOfSaleLabel()}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t${this.renderArticleDescription()}\r\n\t\t\t\t<div class=\"remarks-container\">\r\n\t\t\t\t\t${this.renderRemarks()}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n `;\r\n\t}\r\n}\r\n","import { css, html, nothing, unsafeCSS } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport style from \"./price-list.component.sass?inline\";\r\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\r\nimport { PriceFormatService } from \"../../../utils/price-format.service\";\r\nimport { StepChildComponent } from \"../../standard/base/step-child.component\";\r\nimport { IPriceItemData, IProgramDetails } from \"../../../define/interface\";\r\nimport { IPriceData } from \"@dh-software/webui-types\";\r\nimport { CommunicationMessageService, WebViewerService } from \"@dh-software/webui-api\";\r\n\r\n\r\n@customElement(\"fv-price-list\")\r\nexport class PriceListComponent extends StepChildComponent {\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n @property({ type: Array })\r\n articleList: Array<IPriceItemData> = [];\r\n\r\n @property({ type: Object })\r\n planningObjects: any = {};\r\n\r\n @property({ type: Number })\r\n discountRelative = 0;\r\n\r\n @property({ type: String })\r\n discountAbsolute = \"\";\r\n\r\n @property({ type: Number })\r\n vatRelative = 0;\r\n\r\n @property({ type: String })\r\n vatAbsolute = \"\";\r\n\r\n @property({ type: String })\r\n totalPrice = \"\";\r\n\r\n @property({ type: String })\r\n totalPriceWithoutVat = \"\";\r\n\r\n @property({ type: String })\r\n totalDiscountedPrice = \"\";\r\n\r\n @property({ type: String })\r\n currency = \"\";\r\n\r\n @property({ type: Boolean })\r\n hasPositionalDiscounts = false;\r\n\r\n @property({ type: Boolean })\r\n showFurnrayModule = false;\r\n\r\n @property({ type: Boolean })\r\n showShippingCostsNotice = false;\r\n\r\n @property({ type: Boolean })\r\n webUiHandlesShoppingCart = false;\r\n\r\n @property({ type: Boolean, attribute: \"prevent-add-to-cart\" })\r\n preventAddToCart = false;\r\n\r\n @property({ type: Boolean, attribute: \"prevent-empty-cart-text\" })\r\n preventEmptyCartText = false;\r\n\r\n @property({ type: String, reflect: true, attribute: \"price-item-tag\" })\r\n priceItemTag = \"fv-price-item\";\r\n\r\n @property({ type: String, reflect: true, attribute: \"total-price-txt-id\" })\r\n totalPriceTextId = \"total_price_inclusive_vat\";\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"total-price-divider\" })\r\n totalPriceDivider = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"prevent-total\" })\r\n preventTotal = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"show-total-without-vat\" })\r\n showTotalWithoutVat = false;\r\n\r\n @property({ type: String, reflect: true, attribute: \"show-total-without-vat-txt\" })\r\n totalPriceWithoutVatTextId = \"\";\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"hide-price\" })\r\n hidePrice = false;\r\n\r\n @property({ type: String, reflect: true, attribute: \"remarks-prefix\" })\r\n remarksPrefix = \"\";\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"zero-prices\" })\r\n showZeroPrices = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"zero-prices-as-subposition-total\" })\r\n zeroPricesAsSubpositionTotal = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"show-positions\" })\r\n showPositions = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"show-article-id\" })\r\n showArticleId = false;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"show-subtotals\" })\r\n showSubtotals = false;\r\n\r\n @property({ type: String, reflect: false, attribute: \"webshop-link\" })\r\n webshopLink: string | undefined = undefined;\r\n\r\n @property({ type: Number, reflect: true, attribute: \"dim-float-digits\" })\r\n dimFloatDigits = 2;\r\n\r\n @property({ type: String, reflect: true, attribute: \"thousands-separator\" })\r\n thousandsSeparator?: string;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"highlight-element-on-hover\" })\r\n highlightElementOnHover = false;\r\n\r\n @property({ type: Array })\r\n programCollection: Array<IProgramDetails> = [];\r\n\r\n @property({ type: Array })\r\n totalPerProg: Array<{ prog: string, total: number }> = [];\r\n\r\n @property({ type: Object })\r\n currentObjArr: any = {};\r\n\r\n @property({ type: Object, attribute: \"price-item-attributes\" })\r\n priceItemAttributes?: { [attribute: string]: unknown };\r\n\r\n @property({ type: Object, attribute: \"info-label-text-overrides\" })\r\n infoLabelTextOverrides?: { [manuProgKey: string]: string };\r\n\r\n @property({ type: Boolean, reflect: true })\r\n private accordion: boolean = false;\r\n\r\n\r\n private furnrayClicked(): void {\r\n const event = new CustomEvent(\"furnrayclicked\", { bubbles: true, composed: true });\r\n\r\n this.dispatchEvent(event);\r\n }\r\n\r\n private shoppingCartClicked(): void {\r\n const event = new CustomEvent(\"shoppingcartclicked\", { bubbles: true, composed: true });\r\n\r\n this.dispatchEvent(event);\r\n }\r\n\r\n formatCurrency(price: number): string {\r\n return PriceFormatService.formatPriceForCurrency(price, this.currency, this.thousandsSeparator);\r\n }\r\n\r\n formatPrice(value: string): string {\r\n return PriceFormatService.formatPriceStringForCurrency(value, this.currency);\r\n }\r\n\r\n private static dimensionSuffix: \"mm\" | \"cm\" | \"m\" = \"mm\";\r\n\r\n public get DimensionSuffix(): \"mm\" | \"cm\" | \"m\" {\r\n return PriceListComponent.dimensionSuffix;\r\n }\r\n\r\n private async initDimensionSuffix() {\r\n await WebViewerService.IsAppReady;\r\n const dimScale = await CommunicationMessageService.getDimensionScale();\r\n\r\n switch (dimScale) {\r\n case 1.0:\r\n PriceListComponent.dimensionSuffix = \"mm\";\r\n break;\r\n case 0.1:\r\n PriceListComponent.dimensionSuffix = \"cm\";\r\n break;\r\n case 0.001:\r\n PriceListComponent.dimensionSuffix = \"m\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.requestUpdate();\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.initDimensionSuffix();\r\n }\r\n\r\n async preparePriceData(data: IPriceData) {\r\n await this.updateComplete;\r\n let priceGuids = new Array<string>();\r\n this.articleList = new Array<IPriceItemData>();\r\n for (let i = 0; i < data.Articles.length; ++i) {\r\n for (let y = 0; y < data.Articles[i].Articles.length; ++y) {\r\n const art = data.Articles[i].Articles[y] as IPriceItemData;\r\n art.PlannedManufacturer = data.Articles[i].Manu;\r\n art.PlannedProg = data.Articles[i].Prog;\r\n art.DH_Manu = data.Articles[i].DH_Manu;\r\n art.DH_Prog = data.Articles[i].DH_Prog;\r\n this.articleList.push(art);\r\n priceGuids.push(art.GUID);\r\n if ((art.DiscountedTotalPriceOfSale ?? 0) > 0) {\r\n this.hasPositionalDiscounts = true;\r\n }\r\n }\r\n }\r\n if (this.highlightElementOnHover) {\r\n this.planningObjects = await CommunicationMessageService.getPlanningObjectByGuid(priceGuids);\r\n }\r\n\r\n this.discountRelative = data.discountRelative;\r\n this.discountAbsolute = data.discountAbsolute;\r\n this.vatRelative = data.vatRelative;\r\n this.vatAbsolute = data.vatAbsolute;\r\n this.totalPriceWithoutVat = data.totalPriceWithoutVat;\r\n this.totalPrice = data.totalPrice;\r\n this.totalDiscountedPrice = data.totalDiscountedPrice;\r\n this.currency = data.currency;\r\n this.currentObjArr = data.Articles;\r\n\r\n\r\n this.hidePrice = !window.g_configuration[\"show_price\"];\r\n\r\n await this.updateComplete;\r\n }\r\n\r\n public async initialize(showFurnrayModule: boolean, showShippingCostsNotice: boolean, webUiHandlesShoppingCart: boolean) {\r\n this.showFurnrayModule = showFurnrayModule;\r\n this.showShippingCostsNotice = showShippingCostsNotice;\r\n this.webUiHandlesShoppingCart = webUiHandlesShoppingCart;\r\n\r\n this.requestUpdate(\"articleList\");\r\n await this.updateComplete;\r\n }\r\n\r\n render() {\r\n return html`\r\n ${this.renderEmptyCart()}\r\n ${this.renderArticleList()}\r\n ${this.renderTotalWithoutVat()}\r\n ${this.renderTotal()}\r\n ${this.renderShippingCost()}\r\n ${this.renderAddToCart()}\r\n ${this.renderFurnrayModule()}\r\n `;\r\n }\r\n\r\n renderShippingCost() {\r\n if (this.showShippingCostsNotice && this.articleList.length > 0) {\r\n return html`\r\n <div i18n=\"plus_shipping_costs\">zzgl. Versandkosten</div>`;\r\n }\r\n }\r\n\r\n renderAddToCart() {\r\n if (this.preventAddToCart) return html``;\r\n if (this.articleList.length > 0) {\r\n return html`\r\n <fv-button id=\"addToCart\" @click=${this.shoppingCartClicked} i18n=\"fv.wizard.addToCart\">In den\r\n Warenkorb\r\n </fv-button>`;\r\n }\r\n }\r\n\r\n renderFurnrayModule() {\r\n if (this.showFurnrayModule && this.articleList.length > 0) {\r\n return html`\r\n <fv-button id=\"furnrayModule\" @click=\"${this.furnrayClicked}\" i18n=\"fv.create_furnray_upload.action\">\r\n Fotorealistisches Bild erzeugen\r\n </fv-button>`;\r\n }\r\n }\r\n\r\n renderEmptyCart() {\r\n if (this.preventEmptyCartText) return html``;\r\n if (this.articleList.length < 1) {\r\n return html`\r\n <div i18n=\"fv.generickatatree.nothingFound\">Keine Artikel gefunden.</div>`;\r\n }\r\n }\r\n\r\n renderTotalWithoutVat() {\r\n if (this.preventTotal) return html``;\r\n if (this.showTotalWithoutVat == false) return html``;\r\n\r\n if (this.articleList.length > 0) {\r\n return html`\r\n ${this.totalPriceDivider ? html`\r\n <div class=\"divider-row\">\r\n <div class=\"description-divider\"></div>\r\n <div class=\"price-divider\"></div>\r\n </div>` : html``}\r\n <div class=\"totalRow\">\r\n <div class=\"description\"\r\n ${this.totalPriceWithoutVatTextId ? html`i18n=\"${this.totalPriceWithoutVatTextId}` : html``}\r\n \">Gesamtsumme (exkl. MwSt.)\r\n </div>\r\n <div class=\"price\">${this.formatPrice(this.totalPriceWithoutVat) + \" \" + this.currency}</div>\r\n </div>\r\n `;\r\n }\r\n }\r\n\r\n renderTotal() {\r\n if (this.preventTotal) return html``;\r\n if (this.articleList.length > 0) {\r\n if (this.hasPositionalDiscounts) {\r\n return html`\r\n ${this.totalPriceDivider ? html`\r\n <div class=\"divider-row\">\r\n <div class=\"description-divider\"></div>\r\n <div class=\"price-divider\"></div>\r\n </div>` : html``}\r\n <div class=\"totalRow\">\r\n <div class=\"description\" i18n=\"${this.totalPriceTextId}\">Gesamtsumme (inkl. MwSt.)</div>\r\n <div class=\"price\">${this.formatPrice(this.totalPrice) + \" \" + this.currency}</div>\r\n </div>\r\n ${this.totalPriceDivider ? html`\r\n <div class=\"divider-row\">\r\n <div class=\"description-divider\"></div>\r\n <div class=\"price-divider\"></div>\r\n </div>` : html``}\r\n <div class=\"totalRow\">\r\n <div class=\"description\" i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</div>\r\n <div class=\"price\">${this.formatPrice(this.totalDiscountedPrice) + \" \" + this.currency}</div>\r\n </div>\r\n `;\r\n } else {\r\n return html`\r\n ${this.totalPriceDivider ? html`\r\n <div class=\"divider-row\">\r\n <div class=\"description-divider\"></div>\r\n <div class=\"price-divider\"></div>\r\n </div>` : html``}\r\n <div class=\"totalRow\">\r\n <div class=\"description\" i18n=\"${this.totalPriceTextId}\">Gesamtsumme (inkl. MwSt.)</div>\r\n <div class=\"price\">${this.formatPrice(this.totalPrice) + \" \" + this.currency}</div>\r\n </div>\r\n `;\r\n }\r\n }\r\n }\r\n\r\n private createPriceItemComponent(position: {\r\n price: IPriceItemData,\r\n \"sub-positions\": Array<IPriceItemData>\r\n }, last: boolean, mainPosition: {\r\n price: IPriceItemData,\r\n \"sub-positions\": Array<IPriceItemData>\r\n } | undefined = undefined, buildTotalPositionPrice = false) {\r\n const priceComponent: BasePriceItemComponent = document.createElement(this.priceItemTag) as BasePriceItemComponent;\r\n priceComponent.instanceIdent = Object.keys(this.planningObjects).length > 0 ? this.planningObjects[position.price.GUID] : -1;\r\n priceComponent.description = position.price.ArticleDescription.length < 1 ? position.price.Article_ID : position.price.ArticleDescription;\r\n priceComponent.totalPriceOfSale = this.formatCurrency(position.price.TotalPriceOfSale);\r\n priceComponent.quantity = position.price.Quantity;\r\n priceComponent.hasPositionalDiscounts = (position.price.DiscountedTotalPriceOfSale ?? 0) > 0;\r\n priceComponent.discountedTotalPriceOfSale = this.formatCurrency(position.price.DiscountedTotalPriceOfSale ?? 0);\r\n priceComponent.discountedPriceOfSaleRelative = position.price.DiscountedPriceOfSaleRelative ?? 0;\r\n priceComponent.currency = this.currency;\r\n priceComponent.articleId = position.price.Article_ID;\r\n priceComponent.remarks = position.price.Remarks || [];\r\n priceComponent.hidePrice = this.hidePrice;\r\n priceComponent.priceItemData = position.price;\r\n priceComponent.remarksPrefix = this.remarksPrefix;\r\n priceComponent.showZeroPrice = this.showZeroPrices;\r\n priceComponent.zeroPricesAsSubpositionTotal = this.zeroPricesAsSubpositionTotal;\r\n priceComponent.showPosition = this.showPositions;\r\n priceComponent.showArticleId = this.showArticleId;\r\n priceComponent.dimFloatDigits = this.dimFloatDigits;\r\n priceComponent.dimensionSuffix = this.DimensionSuffix;\r\n priceComponent.thousandsSeparator = this.thousandsSeparator;\r\n priceComponent.highlightElementOnHover = this.highlightElementOnHover;\r\n priceComponent.webshopLink = this.webshopLink;\r\n\r\n if (this.priceItemAttributes) {\r\n const attributes = Object.keys(this.priceItemAttributes);\r\n for (const attribute of attributes) {\r\n const attributeValue = this.priceItemAttributes[attribute];\r\n\r\n if (typeof attributeValue === \"boolean\" && attributeValue) {\r\n priceComponent.setAttribute(attribute, \"\");\r\n }\r\n else if (typeof attributeValue === \"boolean\" && !attributeValue) {\r\n priceComponent.removeAttribute(attribute);\r\n }\r\n else if (typeof attributeValue === \"object\") {\r\n priceComponent.setAttribute(attribute, JSON.stringify(attributeValue));\r\n }\r\n else {\r\n priceComponent.setAttribute(attribute, attributeValue as string);\r\n }\r\n }\r\n }\r\n\r\n priceComponent.classList.add(\"price-item\")\r\n if (last) {\r\n priceComponent.classList.add(\"last\");\r\n }\r\n if (position.price && position.price.Positions_NR && position.price.Positions_NR.includes(\".\")) {\r\n priceComponent.classList.add(\"sub-position\");\r\n }\r\n\r\n if (mainPosition != undefined && buildTotalPositionPrice) {\r\n const lastIndex = mainPosition[\"sub-positions\"].length - 1;\r\n const lastSubPosition = mainPosition[\"sub-positions\"].at(lastIndex);\r\n if (lastSubPosition == position.price) {\r\n priceComponent.classList.add(\"last-of-position\");\r\n\r\n let total = mainPosition.price.TotalPriceOfSale;\r\n for (const subPosition of mainPosition[\"sub-positions\"]) {\r\n total += subPosition.TotalPriceOfSale;\r\n }\r\n priceComponent.totalPricePosition = total;\r\n }\r\n } else if (position[\"sub-positions\"].length > 0) {\r\n priceComponent.classList.add(\"has-sub-positions\");\r\n\r\n let total = position.price.TotalPriceOfSale;\r\n for (const subPosition of position[\"sub-positions\"]) {\r\n total += subPosition.TotalPriceOfSale;\r\n }\r\n priceComponent.totalPricePosition = total;\r\n }\r\n return priceComponent;\r\n }\r\n\r\n\r\n private calculateTotalProgsPrice() {\r\n const groupMap: Record<string, IPriceItemData[]> = {};\r\n\r\n this.articleList.forEach(item => {\r\n\r\n const prog = item.PlannedProg;\r\n\r\n if (!groupMap[prog]) {\r\n groupMap[prog] = [];\r\n }\r\n groupMap[prog].push(item);\r\n });\r\n\r\n this.programCollection = Object.keys(groupMap).map(progName => ({\r\n progname: progName,\r\n progData: groupMap[progName],\r\n }));\r\n\r\n this.totalPerProg = this.programCollection.map(group => {\r\n const total = group.progData.reduce(\r\n (sum, item) => sum + (item.DiscountedTotalPriceOfSale || item.TotalPriceOfSale),\r\n 0\r\n );\r\n return { prog: group.progname, total };\r\n });\r\n }\r\n\r\n private createPriceItemsFromMainPosition(mainPosition: {\r\n\r\n price: IPriceItemData,\r\n \"sub-positions\": Array<IPriceItemData>\r\n }, index: number, lastIndex: number) {\r\n return html`\r\n ${(window.g_configuration.furnplan_REG_PrintManufacName === \"1\" || this.showSubtotals) ? this.renderInfoLabel(mainPosition) : \"\"}\r\n ${window.g_configuration.furnplan_REG_PrintProperty === \"1\" ? this.renderProgRemarks(mainPosition) : \"\"}\r\n\r\n ${this.createPriceItemComponent(mainPosition, index == lastIndex && mainPosition[\"sub-positions\"].length < 1)}\r\n ${mainPosition[\"sub-positions\"].map((subPosition: IPriceItemData, positionIndex: number) => this.createPriceItemComponent({\r\n price: subPosition,\r\n \"sub-positions\": []\r\n }, index == lastIndex && positionIndex == mainPosition[\"sub-positions\"].length - 1, mainPosition, lastIndex != 0))}\r\n\r\n ${window.g_configuration.furnplan_REG_PrintTotalPrice === \"1\" ? this.renderTotalGroupPrice(mainPosition) : \"\"}\r\n ${this.showSubtotals ? this.renderAlternativeSubtotal(mainPosition) : nothing}\r\n `;\r\n }\r\n\r\n private renderProgRemarks(mainPosition: { price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }) {\r\n if (!mainPosition || !this.currentObjArr || !Array.isArray(this.currentObjArr)) {\r\n return html``;\r\n }\r\n\r\n const data = this.programCollection.find((item) => item.progname == mainPosition.price.PlannedProg) as IProgramDetails;\r\n const searchedItem = data.progData.find((item) => item.GUID == mainPosition.price.GUID) as IPriceItemData;\r\n\r\n const searchedItemIndex = data.progData.indexOf(searchedItem);\r\n\r\n for (const item of this.currentObjArr) {\r\n if (item.Prog == data.progname) {\r\n data.remarks = item.Remarks;\r\n }\r\n }\r\n\r\n if (searchedItemIndex == 0) {\r\n return html`\r\n <div class=\"prog-remarks-container\">\r\n ${this.articleList.length > 0 ? html`\r\n ${data.remarks?.map((remark) => {\r\n return html`\r\n <label class=\"prog-remark-label\"> ${remark}</label>\r\n `;\r\n })}\r\n\r\n ` : \"\"}\r\n <div>\r\n `;\r\n }\r\n }\r\n\r\n private fillProgRemarks(programCollection: IProgramDetails) {\r\n if (!this.currentObjArr || !Array.isArray(this.currentObjArr)) {\r\n return ''\r\n }\r\n for (const item of this.currentObjArr) {\r\n if (item.Prog == programCollection.progname) {\r\n programCollection.remarks = item.Remarks;\r\n }\r\n }\r\n }\r\n\r\n private renderTotalGroupPrice(mainPosition: { price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }) {\r\n if (!mainPosition) {\r\n return html``;\r\n }\r\n const data = this.programCollection.find((item) => item.progname == mainPosition.price.PlannedProg) as IProgramDetails;\r\n let searchedItem: IPriceItemData = {\r\n ArticleDescription: \"\",\r\n TotalPriceOfSale: 0,\r\n Quantity: 0,\r\n DiscountedTotalPriceOfSale: 0,\r\n DiscountedPriceOfSaleRelative: 0,\r\n Article_ID: \"\",\r\n Positions_NR: \"\",\r\n GUID: \"\",\r\n Remarks: [],\r\n DimX: \"\",\r\n DimY: \"\",\r\n DimZ: \"\",\r\n PriceOfSale: 0,\r\n PurchasePrice: 0,\r\n PurchasePriceCalc: 0,\r\n PlannedManufacturer: \"\",\r\n PlannedProg: \"\",\r\n DH_Manu: \"\",\r\n DH_Prog: \"\"\r\n };\r\n\r\n if (mainPosition[\"sub-positions\"].length != 0) {\r\n for (const I of mainPosition[\"sub-positions\"]) {\r\n searchedItem = data.progData.find((item) => item.GUID == I.GUID) as IPriceItemData;\r\n }\r\n } else {\r\n searchedItem = data.progData.find((item) => item.GUID == mainPosition.price.GUID) as IPriceItemData;\r\n }\r\n const searchedItemIndex = data.progData.indexOf(searchedItem);\r\n\r\n if (data.progData.length - 1 == searchedItemIndex) {\r\n let progPrice = this.totalPerProg.find((item) => item.prog == data.progname)?.total;\r\n return html`\r\n <div class=\"total-price-container\">\r\n ${this.discountRelative ? html`\r\n <div>\r\n <fv-label>\r\n <span i18n=\"20444\" class=\"colon\">Rabatt</span>\r\n <span>${this.discountRelative}%</span>\r\n </fv-label>\r\n <fv-label>\r\n <span i18n=\"20445\" class=\"colon\"></span>\r\n </fv-label>\r\n </div>\r\n ` : nothing}\r\n <div>\r\n <label class=\"total-price-label\"><label style=\"white-space: pre\" i18n=\"20112\">Gesamtpreis</label>: ${progPrice?.toFixed(2)} ${this.currency}</label>\r\n </div>\r\n </div>\r\n `;\r\n\r\n }\r\n }\r\n\r\n private renderAlternativeSubtotal(mainPosition_: { price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }) {\r\n if (!mainPosition_) {\r\n return nothing;\r\n }\r\n const data = this.programCollection.find((item_) => item_.progname == mainPosition_.price.PlannedProg) as IProgramDetails;\r\n if (!data) {\r\n return nothing;\r\n }\r\n\r\n const subPositions = mainPosition_[\"sub-positions\"];\r\n const lastPositionGuid = subPositions.length > 0\r\n ? subPositions[subPositions.length - 1]?.GUID\r\n : mainPosition_.price.GUID;\r\n\r\n const searchedItem = data.progData.find((item_) => item_.GUID == lastPositionGuid) as IPriceItemData;\r\n const searchedItemIndex = data.progData.indexOf(searchedItem);\r\n\r\n if (data.progData.length - 1 != searchedItemIndex) {\r\n return nothing;\r\n }\r\n\r\n const subTotal = this.totalPerProg.find((item_) => item_.prog == data.progname)?.total ?? 9999;\r\n return html`\r\n <div class=\"totalRow subtotal-row\">\r\n <div class=\"description\" i18n=\"20400\"></div>\r\n <div class=\"price\">${this.formatCurrency(subTotal)} ${this.currency}</div>\r\n </div>\r\n `;\r\n }\r\n\r\n isNumber(value: any) {\r\n return !isNaN(value) && isFinite(value);\r\n }\r\n\r\n private renderInfoLabel(mainPosition: { price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }) {\r\n if (!mainPosition) {\r\n return html``;\r\n }\r\n const data = this.programCollection.find((item) => item.progname == mainPosition.price.PlannedProg) as IProgramDetails;\r\n const searchedItem = data.progData.find((item) => item.GUID == mainPosition.price.GUID) as IPriceItemData;\r\n\r\n const searchedItemIndex = data.progData.indexOf(searchedItem);\r\n\r\n if (searchedItemIndex == 0) {\r\n const manuLongName = mainPosition.price.PlannedManufacturer;\r\n const progLongName = mainPosition.price.PlannedProg;\r\n const lookupKey = `${mainPosition.price.DH_Manu}_${mainPosition.price.DH_Prog}`;\r\n const overrideText = this.infoLabelTextOverrides?.[lookupKey];\r\n\r\n const label = overrideText\r\n ? html`<label class=\"group-info-label\" i18n=\"${overrideText}\">${overrideText}</label>`\r\n : html`<label class=\"group-info-label\">${manuLongName} · ${progLongName}</label>`;\r\n\r\n return html`\r\n <div class=\"info-label-container\">\r\n ${this.articleList.length > 0 ? label : \"\"}\r\n </div>\r\n `;\r\n }\r\n }\r\n\r\n get hasVat(): boolean {\r\n const val = parseFloat(this.vatAbsolute);\r\n return !isNaN(val) && val > 0;\r\n }\r\n\r\n get hasDiscountRelative() {\r\n return this.discountRelative > 0;\r\n }\r\n\r\n renderArticlesPriceInfo() {\r\n if (this.totalPrice && this.accordion && window.g_configuration.furnplan_REG_PrintTotalPrice === \"1\") {\r\n return html`\r\n <div class=\"articles-price-info\">\r\n <label class=\"total-price-label\">\r\n ${this.totalPriceWithoutVat === this.totalPrice ? html`\r\n <div >\r\n <span i18n = \"3112\"></span>:\r\n </div>\r\n `: html`\r\n <span i18n=\"total_price_inclusive_vat\" ></span>\r\n `}\r\n <span >${this.totalPrice}<span>\r\n <span >${this.currency}</span>\r\n </label>\r\n\r\n ${this.hasDiscountRelative ? html`\r\n\r\n <div class=\"row\">\r\n <div class=\"left\">\r\n <label class=\"price-discount-relative\">\r\n <span i18n =\"discount_relative\"></span>:\r\n <span style=\"padding-left: 5px\">${this.discountRelative} % </span>\r\n </label>\r\n </div>\r\n <div class=\"right\">\r\n <label class=\"price-discount-relative\">\r\n <span>${\"-\" + this.discountAbsolute}</span>\r\n </label>\r\n </div>\r\n </div>\r\n ` : nothing}\r\n\r\n ${this.totalDiscountedPrice !== this.totalPrice && this.discountRelative !== 0 ? html`\r\n <label class=\"discountet-price-label\">\r\n <div>\r\n ${this.hasVat ? html`\r\n <span i18n=\"discounted_price_inclusive_vat\" style = \"font-weight: 600;\"></span>:\r\n ` : html`\r\n <span i18n=\"20445\" style = \"font-weight: 600;\"></span>:\r\n `}\r\n </div>\r\n <span style = \"font-weight: 600;\">${this.totalDiscountedPrice}<span>\r\n <span style = \"font-weight: 600;\">${this.currency}</span>\r\n </label>\r\n ` : nothing}\r\n </div>\r\n `;\r\n }\r\n }\r\n\r\n renderArticleList() {\r\n const mainPositions = new Array<{ price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }>();\r\n for (const articlePrice of this.articleList) {\r\n if (articlePrice.Positions_NR && articlePrice.Positions_NR.includes(\".\")) {\r\n const currentMainPosition = mainPositions.at(mainPositions.length - 1);\r\n if (currentMainPosition) {\r\n currentMainPosition[\"sub-positions\"].push(articlePrice);\r\n }\r\n } else {\r\n mainPositions.push({\r\n price: articlePrice,\r\n \"sub-positions\": []\r\n });\r\n }\r\n }\r\n\r\n const lastIndex = mainPositions.length - 1;\r\n\r\n this.calculateTotalProgsPrice();\r\n return html`\r\n ${this.renderArticlesPriceInfo()}\r\n <div id=\"price-list-container\">\r\n ${this.accordion ? html`\r\n ${this.programCollection?.map((collection) => {\r\n this.fillProgRemarks(collection);\r\n return html`\r\n <price-level-accordion-component\r\n .plannedManufacturer=\"${mainPositions.at(mainPositions.length - 1)?.price.PlannedManufacturer}\"\r\n .collection= \"${collection}\"\r\n .totalPerProg= \"${this.totalPerProg}\"\r\n .highlightElementOnHover=\"${this.highlightElementOnHover}\"\r\n .planningObjects = \"${this.planningObjects}\"\r\n ?hide-price=\"${this.hidePrice}\"\r\n .currency = \"${this.currency}\">\r\n </price-level-accordion-component>\r\n `;\r\n })}\r\n ` :\r\n html`\r\n ${mainPositions.map((mainPosition: {\r\n price: IPriceItemData,\r\n \"sub-positions\": Array<IPriceItemData>\r\n }, index: number) => this.createPriceItemsFromMainPosition(mainPosition, index, lastIndex))}\r\n\r\n `\r\n }\r\n <slot ></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { css, html, unsafeCSS, TemplateResult, nothing, PropertyValues } from \"lit\";\r\nimport style from \"./price-level-accordion.component.sass?inline\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\nimport { PriceListComponent } from \"../price-list/price-list.component\";\r\nimport { IProgramDetails } from \"../../../define/interface\";\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { SceneHelperService } from \"../../../utils/scene-helper.service\";\r\n\r\n@customElement('price-level-accordion-component')\r\nexport class PriceLevelAccordionComponent extends PriceListComponent {\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n @state()\r\n private open: boolean = true;\r\n\r\n @state()\r\n priceMap: Map<string, string> = new Map();\r\n\r\n @property({type: String})\r\n plannedManufacturer = \"\";\r\n\r\n @property({type: Object})\r\n planningObjects:any = {};\r\n\r\n @property({type: Boolean, reflect: true, attribute: \"hide-price\"})\r\n hidePrice = false;\r\n\r\n @property({ type: String})\r\n public currency = \"\";\r\n\r\n private symbol: string = \"â–¾\";\r\n\r\n @property({ type: Object })\r\n collection: IProgramDetails = {\r\n progname: \"\",\r\n progData: [],\r\n remarks: []\r\n };\r\n\r\n @property({type: Boolean, reflect: true, attribute: \"highlight-element-on-hover\"})\r\n highlightElementOnHover = false;\r\n\r\n @property({ type: Array })\r\n totalPerProg: Array<{ prog: string, total: number }> = [];\r\n\r\n protected willUpdate(changedProperties: PropertyValues) {\r\n if (changedProperties.has('totalPerProg')) {\r\n this.priceMap = new Map(\r\n this.totalPerProg.map(item => [item.prog, item.total.toFixed(2)])\r\n );\r\n }\r\n }\r\n\r\n private toggle() {\r\n this.open = !this.open;\r\n }\r\n\r\n private getTotalProgPrice(prog: string): string {\r\n return this.priceMap.get(prog) || \"0.00\";\r\n }\r\n\r\n private renderPositionQuantity(): TemplateResult {\r\n return html`\r\n <div class=\"position-quantity\">\r\n ${this.collection.progData.length} <label i18n = \"fv.positionen.text\"></label>\r\n </div>\r\n `;\r\n }\r\n\r\n private createInstanceIdent(articleGUID: string): number {\r\n if(this.planningObjects){\r\n return Object.keys(this.planningObjects)?.length > 0 ? this.planningObjects?.[articleGUID] : -1;\r\n }\r\n return -1;\r\n }\r\n\r\n protected async onMouseEnter(instanseIdent: number, highlightElementOnHover?: boolean) {\r\n if (highlightElementOnHover || this.highlightElementOnHover) {\r\n await SceneHelperService.addHighlightBox(instanseIdent);\r\n }\r\n }\r\n\r\n protected async onMouseLeave(instanceIdent: number, highlightElementOnHover?: boolean) {\r\n if (highlightElementOnHover || this.highlightElementOnHover) {\r\n await SceneHelperService.removeHighlightBox(instanceIdent);\r\n }\r\n }\r\n\r\n private createPriceItem() {\r\n return html`\r\n ${repeat(\r\n this.collection.progData,\r\n (priceItem) => priceItem.GUID || priceItem.Article_ID,\r\n (priceItem) => html`\r\n <price-accordion-item\r\n .instanceIdent= \"${this.createInstanceIdent(priceItem.GUID)}\"\r\n .priceItem=\"${priceItem}\"\r\n .highlightElementOnHover=\"${this.highlightElementOnHover}\"\r\n ?hide-price=\"${this.hidePrice}\"\r\n .currency = \"${this.currency}\"></price-accordion-item>\r\n `\r\n )}\r\n `;\r\n }\r\n\r\n private renderRemarks() {\r\n return html`\r\n <div class=\"remarks-container\">\r\n ${this.collection.remarks?.map(remark => {\r\n return html`\r\n <label class= \"remark\"> ${remark}</label>\r\n `\r\n })}\r\n </div>\r\n `;\r\n }\r\n\r\n private renderPositionPrice() {\r\n if(this.hidePrice){\r\n return nothing\r\n }\r\n return html`\r\n <span class=\"price\">\r\n ${this.getTotalProgPrice(this.collection.progname)} ${this.currency}\r\n </span>\r\n `\r\n }\r\n\r\n render() {\r\n return html`\r\n <div class=\"accordion\">\r\n <div class=\"header\" @click=\"${this.toggle}\">\r\n <div>\r\n <div class=\"title\">\r\n ${this.plannedManufacturer} ${this.collection.progname}\r\n </div>\r\n\r\n ${this.collection.remarks && this.collection.remarks.length > 0 ? html`\r\n <div class=\"subtitle\">\r\n ${this.renderRemarks()}\r\n </div>\r\n ` : nothing}\r\n </div>\r\n\r\n <div class=\"right-arrow\">\r\n <div class=\"right\">\r\n ${this.renderPositionQuantity()}\r\n ${this.renderPositionPrice()}\r\n </div>\r\n\r\n <span class=\"arrow ${this.open ? 'open' : ''}\">\r\n ${this.symbol}\r\n </span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"grid-wrapper ${this.open ? 'open' : ''}\">\r\n <div class=\"content\">\r\n ${this.collection.progData.length > 0 ? html`\r\n ${this.createPriceItem()}\r\n ` : nothing}\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { css, html, nothing, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./price-accordion-item.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport { DimensionHelper, IDimensionSortItem } from \"../../../utils/dimension-helper.class\";\r\nimport { IPriceItemData } from \"../../../define/interface\";\r\nimport { PriceLevelAccordionComponent } from \"./price-level-accordion.component\";\r\n\r\n@customElement('price-accordion-item')\r\nexport class PriceAccordionItem extends PriceLevelAccordionComponent {\r\n @property({ type: Object })\r\n priceItem: IPriceItemData = {\r\n ArticleDescription: \"\",\r\n TotalPriceOfSale: 0,\r\n Quantity: 0,\r\n DiscountedTotalPriceOfSale: 0,\r\n DiscountedPriceOfSaleRelative: 0,\r\n Article_ID: \"\",\r\n Positions_NR: \"\",\r\n GUID: \"\",\r\n Remarks: [],\r\n DimX: \"\",\r\n DimY: \"\",\r\n DimZ: \"\",\r\n PriceOfSale: 0,\r\n PurchasePrice: 0,\r\n PurchasePriceCalc: 0,\r\n PlannedManufacturer: \"\",\r\n PlannedProg: \"\",\r\n DH_Manu: \"\",\r\n DH_Prog: \"\"\r\n };\r\n\r\n @property({ type: Number })\r\n instanceIdent = -1;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"hide-price\" })\r\n hidePrice = false;\r\n\r\n @property({ type: String })\r\n public currency = \"\";\r\n\r\n private dimensionDelimeter: string = \"/\";\r\n\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n @property({ type: Boolean, reflect: true })\r\n highlightElementOnHover = false;\r\n\r\n override connectedCallback() {\r\n super.connectedCallback();\r\n this.addEventListener('mouseenter', this.handleHostMouseEnter);\r\n this.addEventListener('mouseleave', this.handleHostMouseLeave);\r\n }\r\n\r\n override disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this.removeEventListener('mouseenter', this.handleHostMouseEnter);\r\n this.removeEventListener('mouseleave', this.handleHostMouseLeave);\r\n }\r\n\r\n private handleHostMouseEnter = () => {\r\n this.onMouseEnter(this.instanceIdent, this.highlightElementOnHover);\r\n };\r\n\r\n private handleHostMouseLeave = () => {\r\n this.onMouseLeave(this.instanceIdent, this.highlightElementOnHover);\r\n };\r\n\r\n private renderHeaderLine() {\r\n const { Quantity, Article_ID, TotalPriceOfSale, DimX, DimY, DimZ } = this.priceItem;\r\n\r\n const isLongId = Article_ID.length > 9;\r\n const isPriceLong = String(TotalPriceOfSale).length > 8;\r\n const hasDimensions = DimX.length > 0 || DimY.length > 0 || DimZ.length > 0;\r\n const isMobile = window.innerWidth <= 520;\r\n\r\n const articleNameTemplate = html`\r\n <div class=\"article-name\">\r\n <label class=\"article-label\">\r\n <span>${Quantity}</span>\r\n <span> x </span>\r\n <span>${Article_ID}</span>\r\n </label>\r\n </div>\r\n `;\r\n\r\n if (isLongId || isPriceLong || isMobile) {\r\n return html`\r\n <div class=\"large-content\">\r\n <div class=\"large-content-header\">\r\n ${articleNameTemplate}\r\n ${this.renderArticlePrice()}\r\n </div>\r\n <div class=\"footer\">\r\n ${this.renderDimensionLine()}\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n const containerClass = hasDimensions ? 'header-default' : 'dimensionless-header';\r\n\r\n return html`\r\n <div class=\"${containerClass}\">\r\n ${articleNameTemplate}\r\n ${this.renderDimensionLine()}\r\n ${this.renderArticlePrice()}\r\n </div>\r\n `;\r\n }\r\n\r\n private renderDimensionLine(): TemplateResult<1> | typeof nothing {\r\n const { DimX, DimY, DimZ } = this.priceItem;\r\n\r\n if ([DimX, DimY, DimZ].some(dim => !dim || dim.length === 0)) {\r\n return nothing;\r\n }\r\n\r\n const items: IDimensionSortItem[] = [\r\n { key: \"B\", value: DimX, params: { label: \"fv.generickatatree.b\" } },\r\n { key: \"T\", value: DimY, params: { label: \"fv.generickatatree.t\" } },\r\n { key: \"H\", value: DimZ, params: { label: \"fv.generickatatree.h\" } },\r\n ];\r\n DimensionHelper.sortDimensionsByOrder(items);\r\n\r\n const renderList = (contentFn: (item: IDimensionSortItem) => TemplateResult) =>\r\n items.map((item, i) => html`\r\n ${contentFn(item)}${i < items.length - 1 ? this.dimensionDelimeter : ''}\r\n `);\r\n\r\n return html`\r\n <div class=\"price-dimensions-wrapper\">\r\n <div class=\"price-dimensions\">\r\n <div class=\"dimensions-label\">\r\n ${renderList(item => html`<label i18n=\"${item.params.label}\"></label>`)}\r\n </div>\r\n <div class=\"dimensions\">\r\n ${renderList(item => html`\r\n <div class=\"dimension\">${this.renderDimensionText(item.value)}</div>`)}\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n private renderArticlePrice(): TemplateResult<1> {\r\n if (this.hidePrice) {\r\n return html``\r\n }\r\n return html`\r\n <span class=\"article-price\">${this.priceItem.TotalPriceOfSale} ${this.currency}</span>\r\n `;\r\n }\r\n\r\n private renderDimensionText(dimension: string) {\r\n return parseFloat(dimension).toFixed(2).replace(\".\", \",\");\r\n }\r\n\r\n private renderArticleDescription(): TemplateResult<1> {\r\n return html`\r\n <div class=\"article-description\">${this.priceItem.ArticleDescription}</div>\r\n `;\r\n }\r\n\r\n private renderArticleRemarks(): TemplateResult<1> {\r\n return html`\r\n <div class=\"article-remarks\">\r\n ${this.priceItem.Remarks?.length ? this.priceItem.Remarks.map((remark) => {\r\n return html`\r\n <div class=\"remark-row\">\r\n <label class=\"remark\">${remark}</label>\r\n </div>\r\n `;\r\n }) : html``}\r\n </div>\r\n `;\r\n }\r\n\r\n protected updated(_changedProperties: PropertyValues) {\r\n super.updated(_changedProperties);\r\n const isIndented = this.priceItem.Positions_NR.includes(\".\");\r\n this.classList.toggle(\"indented\", isIndented);\r\n }\r\n\r\n render(): TemplateResult<1> {\r\n return html`\r\n ${this.renderHeaderLine()}\r\n <div class=\"price-content\">\r\n ${this.renderArticleDescription()}\r\n ${this.renderArticleRemarks()}\r\n </div>\r\n\r\n `;\r\n }\r\n}\r\n","import { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-dimensions-item.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\nimport { IDimensionSortItem, DimensionHelper } from \"../../../utils/dimension-helper.class\";\n\n\n@customElement(\"fv-price-dimensions-item\")\nexport class PriceDimensionsItemComponent extends BasePriceItemComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n protected renderDimensionLine(): TemplateResult<1> {\n if (this.priceItemData.DimX.length == 0 || this.priceItemData.DimY.length == 0 || this.priceItemData.DimZ.length == 0) {\n return html``;\n }\n\n const dimensionItems: IDimensionSortItem[] = [\n { key: \"B\", value: this.priceItemData.DimX, params: { label: \"181\" } },\n { key: \"T\", value: this.priceItemData.DimY, params: { label: \"182\" } },\n { key: \"H\", value: this.priceItemData.DimZ, params: { label: \"183\" } },\n ];\n DimensionHelper.sortDimensionsByOrder(dimensionItems);\n\n return html`\n <div class=\"price-info dimensions\">\n ${dimensionItems.map(item => html`\n <div class=\"dimension\">\n <fv-label i18n=\"${item.params.label as string}\"></fv-label>: ${this.getDimensionFormatText(item.value)}\n </div>\n `)}\n </div>\n `;\n }\n\n private renderSinglePriceQuantityLine(singlePrice: number) {\n if (this.hidePrice) {\n return html`<div class=\"quantity\"><label> x ${this.quantity}</label></div>`;\n }\n if (this.zeroPricesAsSubpositionTotal && singlePrice < 0.1) {\n return html`<div class=\"quantity\"><label>${this.quantity} x</label></div>`;\n }\n return html`<div class=\"quantity\"><label>${this.quantity} x ${(singlePrice + \" \" + this.currency)}</label></div>`;\n }\n\n render() {\n // this.priceItemData.Positions_NR\n // totalPricePosition\n\n const totalPrice = parseFloat(this.totalPriceOfSale);\n const singlePrice: number = totalPrice / this.quantity;\n if (!this.showZeroPrice) {\n if (singlePrice < 0.1 || totalPrice < 0.1) {\n this.remove();\n return html``;\n }\n }\n\n if (this.hasPositionalDiscounts) {\n return html`\n <div class=\"fullWidth\">\n <div class=\"price-info\">\n <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n ${this.renderSinglePriceQuantityLine(singlePrice)}\n <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n </div>\n <div class=\"price-info\">\n <div class=\"description\"><label i18n=\"20444\">Rabatt</label></div>\n <div class=\"discounted-relative\"><label>${this.discountedPriceOfSaleRelative}%</label></div>\n </div>\n <div class=\"price-info bottomBorder\">\n <div class=\"description\"><label i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</label></div>\n <div class=\"price-discounted\"><label>${this.discountedTotalPriceOfSale + \" \" + this.currency}</label></div>\n </div>\n ${this.renderDimensionLine()}\n ${this.renderRemarks()}\n </div>\n `;\n }\n else {\n return html`\n <div class=\"fullWidth\">\n <div class=\"price-info bottomBorder\">\n <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n ${this.renderSinglePriceQuantityLine(singlePrice)}\n <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n </div>\n ${this.renderDimensionLine()}\n ${this.renderRemarks()}\n </div>\n `;\n }\n }\n}","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./dimmer.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-dimmer\")\nexport class DimmerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n protected render(): TemplateResult<1> {\n return html`\n <slot></slot>\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./loading.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport \"../dimmer/dimmer.component\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-loading\")\nexport class LoadingComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true })\n dimmed = true\n\n @property({ type: Boolean, reflect: true })\n active = false\n\n constructor() {\n super();\n }\n\n public show(): void {\n this.active = true;\n }\n\n public hide(): void {\n this.active = false;\n }\n\n render(): TemplateResult<1> {\n return html`\n <div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n ${ this.dimmed ? html`<fv-dimmer></fv-dimmer>` : \"\"}\n `;\n }\n}\n","class KeyFrameEffectServiceClass {\n constructor() {\n //Empty\n }\n\n addAnimation(id_: string, element_: Element, effects_: Array<{[style: string]: string}>, onFinish_?:(this: Animation, ev: AnimationPlaybackEvent) => unknown, onCancel_?:(this: Animation, ev: AnimationPlaybackEvent) => unknown, onRemove_?:(this: Animation, ev: Event) => unknown) {\n const effects: Keyframe[] = effects_.map((effect)=>{\n return Object.assign(effect, { easing: \"ease-in\", composite: \"replace\" }) as Keyframe;\n });\n const keyFrame = new KeyframeEffect(element_, effects, { duration: 1000, fill: \"forwards\" });\n const animation = new Animation(keyFrame, document.timeline);\n animation.id = id_;\n animation.onfinish = onFinish_ || null;\n animation.oncancel = onCancel_ || null;\n animation.onremove = onRemove_ || null;\n return animation;\n }\n}\nexport const KeyFrameEffectService = new KeyFrameEffectServiceClass();","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from \"./modal.component.sass?inline\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { BaseMaskElement } from \"../base/mask.component\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { LoadingComponent } from \"../loading/loading.component\";\nimport \"../loading/loading.component\";\nimport { KeyFrameEffectService } from \"../../../utils/key-frame-effect.service\";\nimport { UtilService } from \"../../../utils/util.service\";\nimport {EventFactoryService, WebViewerService} from \"@dh-software/webui-api\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport type { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-modal:open\": EventHandlerEventData;\n \"fv-modal:close\": EventHandlerEventData | undefined;\n \"fv-modal:toggle\": EventHandlerEventData;\n }\n}\n\n@customElement(\"fv-modal\")\nexport class ModalComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n protected hasBackground = false;\n\n @property({type: Boolean, reflect: true})\n public active = false;\n\n @property({type: Boolean, reflect: true})\n public cancelable = false;\n public cancelableOnce?: boolean;\n private cancelableOverwrite: boolean | undefined = undefined;\n public get Cancelable() {\n let cancelable = this.cancelable;\n if (this.cancelableOnce != undefined) {\n cancelable = this.cancelableOnce;\n }\n else if (this.cancelableOverwrite != undefined) {\n cancelable = this.cancelableOverwrite;\n }\n return cancelable;\n\n }\n\n @property({type: Boolean, reflect: true, attribute: \"close-on-vplacer-cancel\"})\n public closeOnVPlacerCancel = false;\n\n @property({type: Boolean, reflect: true})\n public dimmed = false;\n\n @property({type: Boolean})\n public fade = false;\n\n @property({type: Boolean, reflect: true})\n protected fullScreen = false;\n\n @property({type: String, reflect: true, attribute: \"logo-url\"})\n public logoUrl = \"\";\n\n @property({type: Object, reflect: true, attribute: \"on-close-event\"})\n public onCloseEvent: EventHandlerEvent | undefined = undefined;\n\n @property({ type: Boolean, attribute: \"show-masks-once\" })\n public showMasksOnce = false;\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-modal:open\": (data_) => { this.openFromState(data_); },\n \"fv-modal:close\": (data_) => { this.closeFromState(data_); },\n \"fv-modal:toggle\": (data_) => { this.toggleFromState(data_); },\n };\n\n private openFromState(data_: EventHandlerEventData): void {\n if (!data_) return;\n const skipDisabledModal = (data_[\"skip-disabled-modal\"] as boolean) || false;\n if (skipDisabledModal && this.hasAttribute(\"disabled\")) return;\n const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : this.dimmed;\n const fade = data_.fade != undefined ? data_.fade as boolean : this.fade;\n const maskQuery = ModalComponent.ReadQueryFromContainer(\n data_[\"mask-query-container-tag\"] as string,\n data_[\"mask-query-container-query\"] as string,\n data_[\"mask-query\"] as string,\n );\n this.open(data_[\"mask\"] as string, data_[\"data\"] as { [key: string]: unknown }, maskQuery, dimmed, fade, data_.cancelable as boolean | undefined, data_.force as boolean | undefined);\n }\n\n private closeFromState(data_: EventHandlerEventData | undefined): void {\n const dimmed = data_?.dimmed != undefined ? data_.dimmed as boolean : this.dimmed;\n const fade = data_?.fade != undefined ? data_.fade as boolean : this.fade;\n this.hide(dimmed, fade);\n }\n\n private toggleFromState(data_: EventHandlerEventData): void {\n if (!data_ || !data_[\"mask\"]) return;\n const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : this.dimmed;\n const fade = data_.fade != undefined ? data_.fade as boolean : this.fade;\n const maskQuery = ModalComponent.ReadQueryFromContainer(\n data_[\"mask-query-container-tag\"] as string,\n data_[\"mask-query-container-query\"] as string,\n data_[\"mask-query\"] as string,\n );\n this.toggle(data_[\"mask\"] as string, data_[\"data\"] as { [key: string]: unknown }, maskQuery, dimmed, fade, data_.cancelable as boolean | undefined, data_.force as boolean | undefined);\n }\n\n private isLoading = false;\n\n private _fadeIn: Animation;\n\n private closedModals: string[] = [];\n\n private async initEventFactoryEvents() {\n await WebViewerService.IsAppReady;\n EventFactoryService.VPlacerCancel.register(()=>{\n if (!this.closeOnVPlacerCancel) return;\n this.hide();\n });\n }\n\n constructor() {\n super();\n\n this.hiddenClasses = [];\n\n this.addEventListener(\"close-modal\", () => {\n this.hide();\n });\n this.addEventListener(\"logo-url-updated\", (event_: CustomEventInit) => {\n this.logoUrl = event_.detail;\n });\n this._fadeIn = KeyFrameEffectService.addAnimation(\"fadeIn\", this, [\n {\n \"visiblity\": \"hidden\", \"opacity\": \"0\"\n },\n {\n \"visiblity\": \"visible\", \"opacity\": \"1\"\n }], (ev) => {\n this.style.removeProperty(\"visibility\");\n this.style.setProperty(\"visibility\", \"visible\");\n });\n\n this.initEventFactoryEvents();\n }\n\n cancel(userCancel = true) {\n this.dispatchEvent(new Event(\"close-modal\"));\n // this.hide();\n if (userCancel) {\n const allMasks = this.querySelectorAll(\"[mask][active]\");\n for (let index = 0; index < allMasks.length; ++index) {\n const mask = allMasks.item(index);\n const maskName = mask.getAttribute(\"class\");\n if (maskName && this.closedModals.indexOf(maskName) === -1) {\n this.closedModals.push(maskName);\n }\n }\n }\n }\n\n\n\n protected build(content: TemplateResult): TemplateResult<1> {\n const contentClass = { cancelable: this.cancelable, content: true };\n const contentContainerClass = {\n fullScreen: this.fullScreen,\n \"content-container\": true,\n \"bg-image\": this.hasBackground\n };\n return html`\n ${this.dimmed ? html`<fv-dimmer></fv-dimmer>` : \"\"}\n <div class=\"center-container\">\n <div class=\"${classMap(contentContainerClass)}\">\n <fv-loading class=\"loading\"></fv-loading>\n <div class=\"modal-header\">\n ${this.logoUrl.length > 0 ? html`\n <div class=\"manufacturer-logo-container\">\n <img class=\"manufacturer-logo\" src=\"${this.logoUrl}\">\n </div>` : html``}\n ${this.Cancelable ? html`\n <div class=\"cancel-button\" @click=\"${this.cancel}\">\n <span class=\"close-symbol\"></span>\n </div>` : \"\"}\n </div>\n <div class=\"${classMap(contentClass)}\" part=\"content\">\n ${content}\n </div>\n </div>\n </div>\n <div class=\"background-blur hidden\"></div>\n `;\n }\n\n public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n super.attributeChangedCallback(name, _old, value);\n\n if (name === \"active\") {\n // this.setAttribute(\"hide-element\", !value);\n this.hideElement = value == undefined ? true : false;\n }\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n // EventFactoryService?.OpenModal?.register((parameters) => {\n // window.dispatchEvent(new EventHandlerDispatchEvent({\n // async: false,\n // events: [{\n // id: \"open-modal\",\n // data: Object.assign({}, parameters)\n // }]\n // }));\n // });\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <slot></slot>`);\n }\n\n public setContent(element: Element) {\n const content = this.shadowRoot ? this.shadowRoot.querySelector(\".content\") : null;\n if (content) {\n content.innerHTML = \"\";\n content.appendChild(element);\n }\n }\n\n public setLoading(visible_?: boolean) {\n this.isLoading = !!visible_;\n let loadingComponent: LoadingComponent | null = this.querySelector(\".loading\");\n let closeSymbol: HTMLSpanElement | null = this.querySelector(\".close-symbol\");\n if (!closeSymbol && this.shadowRoot) {\n closeSymbol = this.shadowRoot.querySelector(\".close-symbol\");\n }\n if (!loadingComponent && this.shadowRoot) {\n loadingComponent = this.shadowRoot.querySelector(\".loading\");\n }\n if (loadingComponent) {\n if (visible_) {\n if (closeSymbol) closeSymbol.classList.add(\"loading\");\n loadingComponent.show();\n }\n else {\n if (closeSymbol) closeSymbol.classList.remove(\"loading\");\n loadingComponent.hide();\n }\n }\n }\n\n\n private getMask(mask_: string): BaseMaskElement | undefined {\n const allMasks = this.querySelectorAll(\"[mask-data]\");\n for (let index = 0; index < allMasks.length; ++index) {\n const mask = allMasks.item(index);\n if (mask instanceof BaseMaskElement && mask.mask === mask_) {\n return mask as BaseMaskElement;\n }\n }\n return undefined;\n }\n\n public selectMask(mask_: string, maskData_?: { [key: string]: unknown }, maskQuery_?: string): boolean {\n const allMasks = this.querySelectorAll(\"[mask-data]\");\n allMasks.forEach((mask) => {\n (mask as BaseMaskElement).hide();\n });\n\n let result = false;\n allMasks.forEach((mask) => {\n if (mask instanceof BaseMaskElement && mask.mask !== mask_) return;\n\n const query: string = maskQuery_ ? maskQuery_ : \"*\";\n if (!UtilService.checkCssQuerySyntax(query) || !mask.matches(query)) return;\n\n (mask as BaseMaskElement).maskData = maskData_ ? maskData_ : (mask as BaseMaskElement).maskData;\n (mask as BaseMaskElement).show();\n result = true;\n });\n return result;\n }\n\n public open(mask_: string, maskData_: { [key: string]: unknown }, maskQuery_: string | undefined, dimmed_: boolean = this.dimmed, fade_ = this.fade, cancelableOverwrite_: boolean | undefined = undefined, force_: boolean | undefined = undefined) {\n if (this.showMasksOnce && maskQuery_ && !force_) {\n const className = maskQuery_.split(\".\").join(\"\");\n if (className && this.closedModals.indexOf(className) > -1) {\n this.cancel(false);\n return;\n }\n }\n if (mask_) {\n if (this.selectMask(mask_, maskData_, maskQuery_)) {\n this.cancelableOverwrite = cancelableOverwrite_;\n this.show(dimmed_, fade_); // only show if mask exists\n }\n }\n else {\n this.cancelableOverwrite = cancelableOverwrite_;\n this.show(dimmed_, fade_);\n }\n }\n\n public toggle(mask_: string, maskData_: { [key: string]: unknown }, maskQuery_: string | undefined, dimmed_: boolean = this.dimmed, fade_ = this.fade, cancelableOverwrite_: boolean | undefined = undefined, force_: boolean | undefined = undefined) {\n if (this.active) {\n const mask = this.getMask(mask_);\n if (mask && mask.active) {\n this.hide(dimmed_, fade_);\n return;\n }\n }\n this.open(mask_, maskData_, maskQuery_, dimmed_, fade_, cancelableOverwrite_, force_);\n }\n\n public show(dimmed: boolean = this.dimmed, fade = this.fade): void {\n if (!this.active) {\n this.classList.remove(\"fade-out\");\n if (fade) {\n this.classList.add(\"fade-in\");\n }\n this.dimmed = dimmed;\n this.active = true;\n }\n this.requestUpdate();\n }\n\n public hide(dimmed: boolean = this.dimmed, fade = this.fade) {\n if (this.active) {\n if (this.onCloseEvent) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: [{\n id: this.onCloseEvent.id,\n data: this.onCloseEvent.data ? this.onCloseEvent.data : {}\n }]\n }));\n }\n this.cancelableOverwrite = undefined;\n this.cancelableOnce = undefined;\n\n this.classList.remove(\"fade-in\");\n if (fade) {\n this.classList.add(\"fade-out\");\n }\n this.dimmed = dimmed;\n this.active = false;\n this.dispatchEvent(new CustomEvent(\"onHide\", {}));\n }\n }\n\n private static ReadQueryFromContainer(tag: string | undefined, query: string | undefined, defaultReturn: string): string {\n if (tag == undefined || query == undefined) return defaultReturn;\n\n const container = ComponentService.find(tag, query);\n if (container == undefined) return defaultReturn;\n\n const maskQuery = container.getAttribute(\"modal-mask-query\");\n if (maskQuery && maskQuery.length > 0) return maskQuery;\n return defaultReturn;\n }\n\n public static openModal(data_: EventHandlerEventData) {\n if (data_) {\n const query: string | undefined = data_.query ? data_.query as string : undefined;\n const modal = ComponentService.find((data_.tag as string) || \"fv-modal\", query) as ModalComponent;\n if (modal) {\n const skipDisabledModal = data_[\"skip-disabled-modal\"] as boolean || false;\n if (skipDisabledModal && modal.hasAttribute(\"disabled\")) {\n return;\n }\n\n const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : modal.dimmed;\n const fade = data_.fade != undefined ? data_.fade as boolean : modal.fade;\n\n const query = ModalComponent.ReadQueryFromContainer(data_[\"mask-query-container-tag\"] as string, data_[\"mask-query-container-query\"] as string, data_[\"mask-query\"] as string);\n modal.open(data_[\"mask\"] as string, data_[\"data\"] as { [key:string]: unknown }, query, dimmed, fade, data_.cancelable as boolean | undefined, data_.force as boolean | undefined);\n }\n }\n }\n\n public static closeModal(data_?: EventHandlerEventData) {\n if (data_) {\n const query: string | undefined = data_.query ? data_.query as string : undefined;\n const modal: ModalComponent = ComponentService.find((data_.tag as string) || \"fv-modal\", query) as ModalComponent;\n if (modal) {\n const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : modal.dimmed;\n const fade = data_.fade != undefined ? data_.fade as boolean : modal.fade;\n modal.hide(dimmed, fade);\n }\n }\n }\n\n public static toggleModal(data_: EventHandlerEventData) {\n if (data_) {\n const query: string | undefined = data_.query ? data_.query as string : undefined;\n const modal = ComponentService.find((data_.tag as string) || \"fv-modal\", query) as ModalComponent;\n if (modal && data_[\"mask\"]) {\n const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : modal.dimmed;\n const fade = data_.fade != undefined ? data_.fade as boolean : modal.fade;\n\n const query = ModalComponent.ReadQueryFromContainer(data_[\"mask-query-container-tag\"] as string, data_[\"mask-query-container-query\"] as string, data_[\"mask-query\"] as string);\n modal.toggle(data_[\"mask\"] as string, data_[\"data\"] as { [key:string]: unknown }, query, dimmed, fade, data_.cancelable as boolean | undefined, data_.force as boolean | undefined);\n }\n }\n }\n}\n","import {css, CSSResultGroup, html, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS,} from \"lit\";\r\nimport {BaseElement} from \"./base.component\";\r\nimport {property, state} from \"lit/decorators.js\";\r\nimport style from \"./mask.component.sass?inline\";\r\nimport {ModalComponent} from \"../modal/modal.component\";\r\n\r\n\r\nexport interface MaskElementData {\r\n [key: string]: unknown\r\n}\r\n\r\nexport class BaseMaskElement extends BaseElement {\r\n static styles: CSSResultGroup[] = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n protected _modal: ModalComponent | undefined;\r\n\r\n @property({type: Boolean, reflect: true})\r\n public active = false\r\n\r\n @property({type: String, reflect: true})\r\n public mask : string = \"\";\r\n\r\n @property()\r\n public configMaskData?: MaskElementData;\r\n\r\n @property({type: Object, reflect: true, attribute: \"mask-data\"})\r\n public maskData: MaskElementData = {};\r\n\r\n public get Modal(): ModalComponent | undefined {\r\n return this._modal;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public show(showModal_?: boolean): void {\r\n this.active = true;\r\n }\r\n\r\n public hide(closeModal = false): void {\r\n this.active = false;\r\n this._modal?.hide();\r\n }\r\n\r\n protected build(content?: TemplateResult): TemplateResult<1> {\r\n return this.active ? html`${content ? content : html``}` : html``;\r\n }\r\n\r\n willUpdate(_changedProperties: PropertyValues) {\r\n if(this.parentNode instanceof ModalComponent) {\r\n this._modal = <ModalComponent>this.parentNode\r\n }\r\n super.willUpdate(_changedProperties);\r\n }\r\n\r\n protected render(): TemplateResult<1> {\r\n return this.build(html`<slot></slot>`);\r\n }\r\n\r\n}\r\n","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport { ModalComponent } from \"../../modal.component\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\nimport style from \"./information.mask.component.sass?inline\";\n\n\n\n@customElement(\"fv-information-mask\")\nexport class InformationMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n public mask = \"information\";\n\n @property({type: Boolean, reflect: true, attribute: \"acknowledge-button\"})\n public acknowledgeButton = false;\n\n @property({type: String, reflect: true, attribute: \"information-text\"})\n public informationTextDefault = \"\";\n\n @property({type: String, reflect: true, attribute: \"heading-text\"})\n public headingTextDefault = \"\";\n\n private collectTexts(): string[] {\n if (this.maskData[\"information-text\"] != undefined) {\n if (Array.isArray(this.maskData[\"information-text\"])) {\n const arr: string[] = [];\n for (let index = 0; index < this.maskData[\"information-text\"].length; ++index) {\n arr.push(LocaleService.translate(this.maskData[\"information-text\"][index], this.maskData[\"information-text\"][index]));\n }\n return arr;\n }\n if (typeof this.maskData[\"information-text\"] === \"string\") {\n return [LocaleService.translate(this.maskData[\"information-text\"], this.maskData[\"information-text\"])];\n }\n }\n return [LocaleService.translate(this.informationTextDefault, this.informationTextDefault)];\n }\n\n private get informationText(): TemplateResult<1> {\n const texts = this.collectTexts();\n if (texts.length === 1) {\n return html`<div class=\"text\">${texts[0]}</div>`;\n }\n return html`<div class=\"text list\">${texts.map((text: string) => {\n return html`<div>${text}</div>`;\n })}</div>`;\n\n // if (this.maskData && this.maskData[\"information-text\"]) {\n // if (Array.isArray(this.maskData[\"information-text\"])) {\n // return html`<div class=\"text list\">${this.maskData[\"information-text\"].map((text: string) => {\n // return html`<div i18n=\"${text}\">${text}</div>`;\n // })}</div>`;\n // }\n // return html`<div class=\"text\" i18n=\"${this.maskData[\"information-text\"] as string}\">${this.maskData[\"information-text\"] as string}</div>`;\n // }\n\n // return html`<div class=\"text\" i18n=\"${this.informationTextDefault}\">${this.informationTextDefault}</div>`;\n }\n private get headingText(): string {\n if (this.maskData && this.maskData[\"heading-text\"]) return this.maskData[\"heading-text\"] as string;\n return this.headingTextDefault;\n }\n\n constructor() {\n super();\n }\n\n protected acknowledge(e_: Event) {\n const modal = this.parentElement as ModalComponent;\n if (modal && modal.hide) {\n modal.hide();\n }\n\n e_.preventDefault();\n e_.stopImmediatePropagation();\n e_.stopPropagation();\n }\n\n protected render(): TemplateResult<1> {\n const acknowledgeButton: TemplateResult<1> = this.acknowledgeButton ? html`<div @click=\"${this.acknowledge}\" class=\"button\" i18n=\"information.mask.ok.button\"></div>` : html``;\n return this.build(html`\n <div class=\"container\">\n ${this.headingText.length > 0 ? html`<div class=\"heading\" i18n=\"${this.headingText}\">${this.headingText}</div>` : html``}\n ${this.informationText}\n <div class=\"buttons-container\">\n ${acknowledgeButton}\n </div>\n </div>\n `);\n }\n\n}\n","import { css, html, unsafeCSS, TemplateResult, nothing } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport style from \"./price-overview.component.sass?inline\";\nimport { PriceListComponent } from \"../price-list\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { InformationMaskComponent } from \"../../standard/modal/masks/information/information.mask.component\";\nimport { IPriceData } from \"@dh-software/webui-types\";\nimport { CommunicationMessageService, WebViewerService } from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-price-overview\")\nexport class PriceOverviewComponent extends PriceListComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private data: IPriceData | undefined = undefined;\n private articlesInSceneCount: number | undefined = undefined;\n\n @property({ type: Boolean, reflect: true })\n withoutContainer = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"use-additional-empty-check\" })\n useAdditionalEmptyCheck = false;\n\n @property({ type: Object, reflect: false, attribute: \"webshop-link-info\" })\n webshopLinkInfo: { txt: string, \"information-mask-query\": string } = {\n txt: \"\",\n \"information-mask-query\": \"\"\n };\n\n private emptySceneDisableAdditionalEmptyCheck = false;\n\n constructor() {\n super();\n\n WebViewerService.on(\"furnview.changePrice\", async (data_: unknown): Promise<void> => {\n this.data = data_ as IPriceData;\n const plannedArticles = await CommunicationMessageService.getPlannedArticles();\n this.emptySceneDisableAdditionalEmptyCheck = (window.g_configuration.enable_app_connection_data as boolean);\n this.articlesInSceneCount = plannedArticles.length;\n this.webshopLink = await CommunicationMessageService.getWebshopLink();\n\n if (this.offsetParent === null || this.classList.contains(\"hidden\")) return;\n this.changePrice();\n });\n\n this.addHideStateUpdatedEventListener((value: boolean) => {\n if (value == false) {\n this.changePrice();\n }\n });\n }\n\n public isEmpty(): boolean {\n if (this.useAdditionalEmptyCheck) {\n if (this.emptySceneDisableAdditionalEmptyCheck) {\n if (this.articlesInSceneCount == undefined || this.articlesInSceneCount < 1) {\n return super.isEmpty();\n }\n }\n if (this.data == undefined) {\n return true;\n }\n if (this.data.Articles == undefined || this.data.Articles.length < 1) {\n return true;\n }\n }\n return super.isEmpty();\n }\n\n private changePrice() {\n if (this.data != undefined) {\n this.preparePriceData(this.data);\n }\n }\n\n private openWebshopInfoInformationMask() {\n const txt = this.webshopLinkInfo.txt;\n const query = this.webshopLinkInfo[\"information-mask-query\"];\n if (txt == undefined || txt.length < 1) {\n return;\n }\n if (query == undefined || query.length < 1) {\n return;\n }\n\n const infoValues = [txt];\n const elements = ComponentService.findAll(\"fv-information-mask\", query);\n for (const element of elements) {\n if (element instanceof InformationMaskComponent) {\n if (element.Modal == undefined) {\n continue;\n }\n\n const currentInfo = element.maskData[\"information-text\"] as string[] | undefined;\n const isSameInfo = element.Modal.hideElement == false && element.active && Array.isArray(currentInfo) && currentInfo.length === infoValues.length && currentInfo.every((t: string, i: number) => t === infoValues[i]);\n if (isSameInfo) {\n element.hide();\n }\n else {\n element.Modal.open(element.mask, { \"information-text\": infoValues }, query);\n }\n }\n }\n }\n private get webShopLinkInfo(): TemplateResult<1> {\n if (this.webshopLink === undefined || this.webshopLinkInfo == undefined || this.webshopLinkInfo.txt == undefined || this.webshopLinkInfo.txt.length < 1 || this.webshopLinkInfo[\"information-mask-query\"] == undefined || this.webshopLinkInfo[\"information-mask-query\"].length < 1) {\n this.classList.remove(\"showing-webshop-link-info-button\");\n return html``;\n }\n this.classList.add(\"showing-webshop-link-info-button\");\n return html`<fv-button @click=\"${this.openWebshopInfoInformationMask}\" class=\"webshop-link-info\" icon=\"fv-icon-question-mark\"></fv-button>`;\n }\n\n render(): TemplateResult<1> {\n return html`\n ${this.webShopLinkInfo}\n ${!this.withoutContainer ? html`\n\n <div class=\"title-container\">\n <slot name=\"title\"></slot>\n </div>\n <div class=\"overview-container\">\n <slot name=\"overview\"></slot>\n </div>\n\n ` : nothing}\n ${super.render()}\n `;\n }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-display.component.sass?inline\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface PriceDisplayData {\n value?: number | undefined,\n uvp?: number | undefined,\n overrideCurrency: string | undefined,\n \"whole-suffix\"?: string | undefined,\n \"currency-before\"?: boolean\n}\n\n\n@customElement(\"fv-price-display\")\nexport class PriceDisplayComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Object, reflect: true, attribute: \"price\" })\n public price: PriceDisplayData = {\n value: undefined,\n uvp: undefined,\n overrideCurrency: undefined,\n \"whole-suffix\": \"\",\n \"currency-before\": false,\n };\n\n private currency = \"EUR\";\n private updataCurrency() {\n CommunicationMessageService.getCurrency().then((value)=>{\n if (this.currency != value) {\n this.currency = value;\n this.requestUpdate();\n }\n });\n }\n\n constructor() {\n super();\n }\n\n private get display_currency(): string {\n this.updataCurrency();\n if(this.price.overrideCurrency) {\n return this.price.overrideCurrency;\n }\n return this.currency;\n }\n\n private get wholeSuffix(): TemplateResult<1> {\n if (this.price[\"whole-suffix\"] && this.price[\"whole-suffix\"].length > 0) {\n return html`${this.price[\"whole-suffix\"]}`;\n }\n return html``;\n }\n private buildPriceLine(price: number | undefined, priceClass: string, prefixTxtId: string | undefined) {\n if (price != undefined) {\n const isInt = Number.isInteger(price);\n return html`\n <div class=\"${priceClass}\" part=\"${priceClass}\">\n ${prefixTxtId && prefixTxtId.length > 0 ? html`<span class=\"prefix-txt\" i18n=\"${prefixTxtId}\">${prefixTxtId}</span>` : html``}\n ${this.price[\"currency-before\"] ? html`<span class=\"currency-before\">${this.display_currency}</span>` : html``}\n <span>${price.toFixed(isInt ? 0 : 2).replace(\".\", \",\")}${isInt ? this.wholeSuffix : html``}</span>\n ${this.price[\"currency-before\"] ? html`` : html`<span class=\"currency-after\">${this.display_currency}</span>`}\n </div>\n `;\n }\n return html``;\n }\n\n protected render(): TemplateResult<1> {\n return html`\n ${this.buildPriceLine(this.price.value, `price ${this.price.uvp ? \"price-cut\" : \"\"}`, \"\")}\n ${this.buildPriceLine(this.price.uvp, \"uvp-price\", \"price-uvp-txt\")}\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport style from \"./flex-container.component.sass?inline\";\nimport {StepChildComponent} from \"../../base/step-child.component\";\n\n\n@customElement(\"fv-flex-container\")\nexport class FlexContainerComponent extends StepChildComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n}\n","import {css, html, nothing, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {styleMap} from \"lit/directives/style-map.js\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {event, EventRef} from \"@dh-software/lit-extensions\";\nimport {BaseElement} from \"../base/base.component\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport style from \"./tab-control.component.sass?inline\";\nimport \"../button/button.component\";\nimport \"../arrange/flex-container/flex-container.component\";\nimport {EventHandlerEvent} from \"../../../models/event-handler/event.handler.model\";\nimport {EventHandlerService} from \"../../../utils/event.handler.service\";\n\nexport interface TabDefinition {\n key: string;\n text?: string;\n icon?: string;\n classes?: string[];\n \"active-classes\"?: string[];\n events?: EventHandlerEvent[];\n styleVars?: { [key: string]: string };\n}\n\nexport interface TabChangedEventDetail {\n key: string;\n previous: string | null;\n}\n\n@customElement(\"fv-tab-control\")\nexport class TabControlComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`,\n ];\n\n @property({type: Array, reflect: false, attribute: \"tabs\"})\n public tabs: TabDefinition[] = [];\n\n @property({type: String, reflect: true, attribute: \"active-key\"})\n public activeKey = \"\";\n\n @event({bubbles: true, composed: true}, \"tabChanged\")\n readonly tabChangedEvent!: EventRef<TabChangedEventDetail>;\n\n protected willUpdate(changedProps: PropertyValues): void {\n super.willUpdate?.(changedProps);\n if (!this.activeKey && this.tabs.length > 0) {\n this.activeKey = this.tabs[0].key;\n }\n }\n\n protected updated(changedProps: PropertyValues): void {\n super.updated?.(changedProps);\n if (changedProps.has(\"activeKey\")) {\n const previous = (changedProps.get(\"activeKey\") as string | undefined) ?? null;\n if (previous !== this.activeKey) {\n this.tabChangedEvent.dispatch({key: this.activeKey, previous});\n }\n }\n }\n\n private selectTab(key: string): void {\n if (this.activeKey === key) return;\n this.activeKey = key;\n }\n\n private buttonClasses(tab: TabDefinition, active: boolean): string {\n const parts = [\"tab-button\", ...(tab.classes ?? [])];\n if (active) parts.push(\"active\", ...(tab[\"active-classes\"] ?? []));\n return parts.join(\" \");\n }\n\n private buildButton(tab: TabDefinition): TemplateResult<1> {\n const active = tab.key === this.activeKey;\n\n const onSelect = ({key, events}: TabDefinition) => {\n this.selectTab(key);\n if (events && events.length > 0) {\n EventHandlerService.dispatchEventList(events, false);\n }\n }\n\n return html`\n <fv-button\n class=\"${this.buttonClasses(tab, active)}\"\n style=\"${styleMap(tab.styleVars || {})}\"\n part=\"${active ? \"button button-active\" : \"button\"}\"\n data-tab-key=\"${tab.key}\"\n i18n=\"${tab.text}\"\n icon=\"${tab.icon ?? \"\"}\"\n @click=\"${() => onSelect(tab)}\"\n >\n </fv-button>\n `;\n }\n\n private buildContentSlot(tab: TabDefinition): TemplateResult<1> {\n const active = tab.key === this.activeKey;\n return html`\n <slot\n name=\"${tab.key}\"\n part=\"${active ? \"content-slot content-slot-active\" : \"content-slot\"}\"\n class=\"${classMap({\"tab-content-slot\": true, active, hidden: !active})}\"\n ></slot>\n `;\n }\n\n render(): TemplateResult<1> {\n return html`\n <fv-flex-container class=\"tab-buttons\" part=\"buttons\">\n ${this.tabs.map(tab => this.buildButton(tab))}\n </fv-flex-container>\n <div class=\"tab-content\" part=\"content\">\n ${this.tabs.map(tab => this.buildContentSlot(tab))}\n </div>\n `;\n }\n}\n","import { css, html, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./label.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-label\")\nexport class LabelComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"text-tag\" })\n private _textTag?: string;\n\n @query(\"slot\")\n private _labelSlot?: HTMLSlotElement\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n if (this._textTag) {\n return html`${Object.assign(document.createElement(this._textTag), { innerHTML: \"<slot></slot>\" })}`;\n }\n return html`\n <slot></slot>\n `;\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n // this.computeSize();\n }\n\n attributeChangedCallback(name: string, _old: string | null, value: string | null) {\n // if (name.includes(\"i18n\")) {\n // this.computeSize();\n // }\n super.attributeChangedCallback(name, _old, value);\n }\n\n private computeSize() {\n this.style.minWidth = `${this.getBoldWidth()}px`;\n }\n\n private getBoldWidth(weight = \"bold\") {\n let boldWidth = 0;\n const contentElement = this._labelSlot?.assignedNodes()?.[0] || undefined\n if (contentElement) {\n const content = contentElement.textContent || \"\";\n const tempSpan = document.createElement(\"span\");\n tempSpan.style.visibility = \"hidden\";\n tempSpan.style.whiteSpace = \"nowrap\";\n tempSpan.style.fontWeight = weight;\n tempSpan.innerHTML = content;\n\n this.appendChild(tempSpan);\n boldWidth = tempSpan.offsetWidth;\n this.removeChild(tempSpan);\n }\n return boldWidth;\n }\n\n}\n","import { BaseElement } from \"../base/base.component\";\nimport style from \"./dimension-change.component.sass?inline\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { DhInput } from \"@dh-software/dh-components\";\nimport { IDimChangeInfo } from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport { DimensionHelper } from \"../../../utils/dimension-helper.class\";\n\nexport interface IAxisData {\n key: string;\n hint: string;\n label: string;\n\n min: number;\n max: number;\n decimals: number;\n\n value: number;\n values?: number[];\n\n editable: boolean;\n infoTexts: string[];\n}\n\nconst AXES: Array<{ key: string; label: string; hint: string; index: number }> = [\n {\n key: \"width\",\n hint: \"fv.dimchange.description.short.width\",\n label: \"fv.dimchange.width\",\n index: 0\n },\n {\n key: \"height\",\n hint: \"fv.dimchange.description.short.height\",\n label: \"fv.dimchange.height\",\n index: 2\n },\n {\n key: \"depth\",\n hint: \"fv.dimchange.description.short.depth\",\n label: \"fv.dimchange.depth\",\n index: 1\n }\n];\n\n@customElement(\"fv-dimension-change\")\nexport class DimensionChangeComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Object })\n public dimData?: IDimChangeInfo;\n\n @property({ type: Array })\n public axes: IAxisData[] = [];\n\n @state()\n private unit = \"cm\";\n\n constructor() {\n super();\n }\n\n protected willUpdate(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"dimData\")) {\n this.initDimData(this.dimData);\n }\n super.willUpdate(changedProperties);\n }\n\n private async cancel(): Promise<void> {\n this.dispatchEvent(new CustomEvent(\"dimchange-cancel\", { bubbles: true, composed: true }));\n }\n\n private async confirm(): Promise<void> {\n const scale = this.dimData?.dimScale ?? 1;\n const toMm = (key_: string): number => {\n const axis = this.axes.find(axis_ => axis_.key === key_);\n return axis ? Math.round(axis.value / scale) : 0;\n };\n const width = toMm(\"width\");\n const depth = toMm(\"depth\");\n const height = toMm(\"height\");\n\n await CommunicationMessageService.setLoDimensionExt(width, height, depth, []);\n this.dispatchEvent(new CustomEvent(\"dimchange-confirm\", { bubbles: true, composed: true }));\n }\n\n private roundValue(value_: number, decimals_: number): number {\n const factor = Math.pow(10, Math.max(0, decimals_));\n return Math.round(value_ * factor) / factor;\n }\n\n private formatValue(value_: number, decimals_: number): string {\n return value_.toFixed(Math.max(0, decimals_)).replace(\".\", \",\");\n }\n\n private isAdjustable(axis_: IAxisData): boolean {\n return axis_.values ? axis_.values.length > 1 : axis_.max > axis_.min;\n }\n\n private isInputReadonly(axis_: IAxisData): boolean {\n return !axis_.editable || !this.isAdjustable(axis_);\n }\n\n private isIndexSlider(axis_: IAxisData): boolean {\n return !!axis_.values && !axis_.editable;\n }\n\n private valueStep(axis_: IAxisData): number {\n return Math.pow(10, -axis_.decimals);\n }\n\n private sliderConfig(axis_: IAxisData): { min: number; max: number; step: number; value: number } {\n if (this.isIndexSlider(axis_)) {\n return { min: 0, max: Math.max(1, axis_.values!.length - 1), step: 1, value: this.nearestIndex(axis_.values!, axis_.value) };\n }\n return { min: axis_.min, max: axis_.max, step: this.valueStep(axis_), value: axis_.value };\n }\n\n private initDimData(info_?: IDimChangeInfo): void {\n if (!info_) {\n return;\n }\n this.unit = DimensionHelper.getUnitByDimScale(info_.dimScale) ?? this.unit;\n this.axes = this.buildAxes(info_);\n }\n\n private buildAxes(info_: IDimChangeInfo): IAxisData[] {\n const scale = info_.dimScale;\n const decimals = info_.decimalPlaces > -1 ? info_.decimalPlaces : 1;\n const toDisplay = (mm_: number): number => this.roundValue(mm_ * scale, decimals);\n\n return AXES.map(axis_ => {\n const idx = axis_.index;\n const std = info_.stdDim[idx];\n const onlyStd = std.onlyStd === 1;\n const hasStdValues = std.dims.length > 0;\n\n return {\n key: axis_.key,\n hint: axis_.hint,\n label: axis_.label,\n\n min: toDisplay(info_.min[idx]),\n max: toDisplay(info_.max[idx]),\n decimals: decimals,\n\n value: toDisplay(info_.dim[idx]),\n values: hasStdValues ? std.dims.map(toDisplay) : undefined,\n\n editable: !onlyStd,\n infoTexts: [...info_.infoTexts[idx]],\n };\n });\n }\n\n private nearestIndex(values_: number[], value_: number): number {\n let nearest = 0;\n let nearestDistance = Number.POSITIVE_INFINITY;\n values_.forEach((candidate_, index_) => {\n const distance = Math.abs(candidate_ - value_);\n if (distance < nearestDistance) {\n nearestDistance = distance;\n nearest = index_;\n }\n });\n return nearest;\n }\n\n private updateAxis(axisIndex_: number, patch_: Partial<IAxisData>) {\n this.axes = this.axes.map((axis_, index_) =>\n index_ === axisIndex_ ? { ...axis_, ...patch_ } : axis_\n );\n }\n\n private onSliderInput(axisIndex_: number, e_: Event) {\n const axis = this.axes[axisIndex_];\n const input = e_.target as DhInput;\n const raw = Number(input.value);\n if (Number.isNaN(raw)) return;\n\n let value: number;\n if (this.isIndexSlider(axis)) {\n value = axis.values![Math.round(raw)];\n } else if (axis.values) {\n value = axis.values[this.nearestIndex(axis.values, raw)];\n input.value = value.toString();\n } else {\n value = this.roundValue(raw, axis.decimals);\n }\n\n if (value === axis.value) return;\n this.updateAxis(axisIndex_, { value });\n }\n\n private onInputCommit(axisIndex_: number, e_: Event) {\n const axis = this.axes[axisIndex_];\n if (this.isInputReadonly(axis)) {\n return;\n }\n\n const input = e_.target as DhInput;\n const raw = parseFloat(input.value.replace(\",\", \".\"));\n if (Number.isNaN(raw)) {\n input.value = axis.value.toFixed(axis.decimals);\n return;\n }\n\n const value = this.roundValue(Math.max(axis.min, Math.min(axis.max, raw)), axis.decimals);\n input.value = value.toFixed(axis.decimals);\n if (value === axis.value) {\n return;\n }\n this.updateAxis(axisIndex_, { value });\n }\n\n private onInputKeydown(axisIndex_: number, e_: KeyboardEvent) {\n if (e_.key === \"Enter\") {\n this.onInputCommit(axisIndex_, e_);\n }\n }\n\n private renderAxis(axis_: IAxisData, index_: number): TemplateResult<1> {\n const adjustable = this.isAdjustable(axis_);\n const inputReadonly = this.isInputReadonly(axis_);\n const slider = this.sliderConfig(axis_);\n\n return html`\n <div class=\"axis ${adjustable ? \"adjustable\" : \"fixed\"}\">\n <div class=\"axis-grid\">\n <fv-label class=\"axis-label\" i18n=\"${axis_.label}\">${axis_.key}</fv-label>\n\n <dh-input\n class=\"axis-slider\"\n type=\"range\"\n track-fill\n min=\"${slider.min}\"\n max=\"${slider.max}\"\n step=\"${slider.step}\"\n .value=\"${slider.value.toString()}\"\n ?disabled=\"${!adjustable}\"\n @input=\"${(e_: Event) => this.onSliderInput(index_, e_)}\">\n </dh-input>\n\n <div class=\"axis-input\">\n <dh-input\n type=\"number\"\n i18n-placeholder=\"${axis_.hint}\"\n min=\"${axis_.min}\"\n max=\"${axis_.max}\"\n step=\"${this.valueStep(axis_)}\"\n .value=\"${axis_.value.toFixed(axis_.decimals)}\"\n .readOnly=\"${inputReadonly}\"\n @keydown=\"${(e_: KeyboardEvent) => this.onInputKeydown(index_, e_)}\"\n @inputfocusout=\"${(e_: Event) => this.onInputCommit(index_, e_)}\">\n </dh-input>\n </div>\n\n <div class=\"axis-bounds\">\n <div class=\"bound\">\n <fv-label class=\"bound-label\" i18n=\"fv.dimchange.minimal\"></fv-label>\n <fv-label class=\"bound-value\">${this.formatValue(axis_.min, axis_.decimals)} ${this.unit}</fv-label>\n </div>\n <div class=\"bound max\">\n <fv-label class=\"bound-label\" i18n=\"fv.dimchange.maximal\"></fv-label>\n <fv-label class=\"bound-value\">${this.formatValue(axis_.max, axis_.decimals)} ${this.unit}</fv-label>\n </div>\n </div>\n </div>\n\n ${axis_.infoTexts.length > 0 ? html`\n <div class=\"axis-info\">\n ${axis_.infoTexts.map(text_ => html`<fv-label>${text_}</fv-label>`)}\n </div>\n ` : html``}\n\n </div>\n `;\n }\n\n protected render(): TemplateResult<1> {\n return html`\n <div class=\"container\">\n <fv-label class=\"title\" i18n=\"fv.dimchange.caption\"></fv-label>\n ${this.axes.map((axis_, index_) => html`\n ${index_ > 0 ? html`<div class=\"axis-divider\"></div>` : html``}\n ${this.renderAxis(axis_, index_)}\n `)}\n <div class=\"footer\">\n <dh-button class=\"cancel\" variant=\"outlined\" @click=\"${this.cancel}\" i18n-buttontext=\"1939\"></dh-button>\n <dh-button class=\"confirm\" variant=\"filled\" @click=\"${this.confirm}\" i18n-buttontext=\"fv.dimchange.confirm\"></dh-button>\n </div>\n </div>\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./basic.slider.component.sass?inline\";\n\n@customElement(\"fv-basic-slider\")\nexport class BasicSliderComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Number, reflect: true })\n public min = 0;\n\n @property({ type: Number, reflect: true })\n public max = 100;\n\n @property({ type: Number, reflect: true })\n public step = 1;\n\n @property({ type: Number, reflect: true })\n public value = 0;\n\n private onInput(e: Event) {\n e.stopPropagation();\n const input = e.target as HTMLInputElement;\n this.value = parseFloat(input.value);\n this.dispatchEvent(new CustomEvent<{ value: number }>(\"slider-input\", {\n detail: { value: this.value },\n bubbles: true,\n composed: true\n }));\n }\n\n private onChange(e: Event) {\n e.stopPropagation();\n const input = e.target as HTMLInputElement;\n this.value = parseFloat(input.value);\n this.dispatchEvent(new CustomEvent<{ value: number }>(\"slider-change\", {\n detail: { value: this.value },\n bubbles: true,\n composed: true\n }));\n }\n\n protected render(): TemplateResult<1> {\n return html`\n <input\n type=\"range\"\n min=\"${this.min}\"\n max=\"${this.max}\"\n step=\"${this.step}\"\n .value=\"${this.value.toString()}\"\n @input=\"${this.onInput}\"\n @change=\"${this.onChange}\"\n />\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./constrained.input.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement, Units } from \"../../base/base.component\";\n\n@customElement(\"fv-constrained-input\")\nexport class ConstrainedInputComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Number, reflect: true })\n public min = 0;\n @property({ type: Number, reflect: true })\n public max = 99999999999;\n @property({ type: Number, reflect: true })\n public value = 1;\n @property({ type: Number, reflect: true })\n public step = 1;\n @property({ type: Boolean, reflect: true, attribute: \"no-min-max-check\" })\n public noMinMaxCheck = false;\n\n\n @property({ type: Number, reflect: true, attribute: \"decimals\" })\n public decimals = 0;\n @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n public decimalDivider: \".\" | \",\" = \".\";// when adding possible dividers: DO NOT FORGET TO HANDLE IN getNoUnitValue() (in all inputs!)\n\n @property({ type: String, reflect: true, attribute: \"unit\" })\n public unit: Units = \"error\";\n @property({ type: Number, reflect: true, attribute: \"unit-length\" })\n public unitLength = 0;// 0 == auto\n @property({ type: Boolean, reflect: true, attribute: \"hide-unused-unit-container\" })\n public hideUnusedUnitContainer = false;\n @property({ type: Boolean, reflect: true, attribute: \"hide-unused-unit-container-when-disabled\" })\n public hideUnusedUnitContainerWhenDisabled = false;\n\n\n @property({ type: Boolean, reflect: true, attribute: \"show-increase-decrease\" })\n public showIncreaseDecrease = false;\n @property({ type: Boolean, reflect: true, attribute: \"pool-repeated-button-clicks\" })\n public poolRepeatedButtonClicks = false;\n @property({ type: Number, reflect: true })\n public timeoutms = 500;\n\n public set FinalizeClickPromise(finalizePromise: Promise<unknown>) {\n this._finalizeClickPromise = finalizePromise;\n }\n private _finalizeClickPromise : Promise<unknown> | undefined = undefined;\n private buttonTimeout: number | undefined = undefined;\n private timeoutAddClicks = 0;\n private finalizingClick = false;\n private async pooledButtonClick(addClickModification_: number) {\n if (this.finalizingClick) { // add to next stack\n return;\n }\n\n const finalizeClick = async ()=>{\n this.finalizingClick = true;\n if (this.timeoutAddClicks == 0) return;\n const modifications = this.timeoutAddClicks * this.step;\n this.final_value = this.getDisplayValue(this.value + modifications);\n if (this._finalizeClickPromise != undefined) {\n await this._finalizeClickPromise;\n }\n this.finalizingClick = false;\n this._finalizeClickPromise = undefined;\n };\n\n if (this.poolRepeatedButtonClicks == false) {\n this.timeoutAddClicks = addClickModification_;\n await finalizeClick();\n this.timeoutAddClicks = 0;\n return;\n }\n this.display_value = this.constrainValue(this.display_value + (addClickModification_ * this.step));\n\n this.timeoutAddClicks += addClickModification_;\n if (this.buttonTimeout) { // reset timeout if it already was set once\n clearTimeout(this.buttonTimeout);\n this.buttonTimeout = undefined;\n }\n this.buttonTimeout = setTimeout(async ()=>{\n if ( this.buttonTimeout ) {\n clearTimeout(this.buttonTimeout);\n this.buttonTimeout = undefined;\n await finalizeClick();\n this.timeoutAddClicks = 0;\n }\n }, this.timeoutms);\n }\n\n\n @query(\"input\")\n private input: HTMLInputElement | undefined;\n\n\n constructor() {\n super();\n }\n\n private constrainValue(value_: number): number {\n let toleranceString = \"0\";\n if (this.decimals > 0) {\n toleranceString += \".\";\n for (let index = 0; index < this.decimals; ++index) toleranceString += index == this.decimals - 1 ? \"1\" : \"0\";\n }\n const tolerance = parseFloat(toleranceString);\n if (value_ < this.min + tolerance) {\n value_ = this.min;\n }\n else if (value_ > this.max - tolerance) {\n value_ = this.max;\n }\n return value_;\n }\n private get display_value(): number {\n if (this.input == undefined) return this.value;//escape there is no input!\n return this.getNoUnitValue(this.input.value);\n }\n private set display_value(value_: number) {\n if (this.input == undefined) return;//escape there is no input!\n this.input.value = this.getDisplayValue(value_);\n }\n private set final_value(value_: string) {\n if (this.input == undefined) return;//escape there is no input!\n\n // check NaN etc\n if (value_ == \"NaN\" || value_ == \"\") {\n this.display_value = this.value;\n return;\n }\n\n // set value\n this.value = this.getNoUnitValue(value_);\n\n // constrain to min max\n if (this.noMinMaxCheck == false) {\n this.value = this.constrainValue(this.value);\n }\n\n // ensure decimals, set value to input\n this.display_value = this.value;\n\n this.dispatchEvent(new CustomEvent(\"change\", {\n bubbles: true,\n detail: {\n min: this.min,\n max: this.max,\n value: this.value\n }\n }));\n }\n\n private change(e: Event) {\n if (this.input == undefined) return;//escape there is no input!\n this.final_value = this.input.value;\n }\n\n private increase() {\n if (this.input == undefined) return;//escape there is no input!\n this.pooledButtonClick(1);\n }\n private decrease() {\n if (this.input == undefined) return;//escape there is no input!\n this.pooledButtonClick(-1);\n }\n\n\n private modificationIntervalTimeout = 150;\n private modificationInterval: number | undefined = undefined;\n private modificationTimeout: number | undefined = undefined;\n\n private recursiveInterval(interval: ()=>void) {\n clearTimeout(this.modificationInterval);\n this.modificationInterval = setTimeout(() => {\n interval();\n if (this.modificationIntervalTimeout > 60) {\n this.modificationIntervalTimeout -= 10;\n }\n this.recursiveInterval(interval);\n }, this.modificationIntervalTimeout);\n }\n\n private mousedown(interval: ()=>void) {\n if (this.modificationTimeout == undefined) {\n this.modificationTimeout = setTimeout(() => {\n this.recursiveInterval(()=>{\n interval();\n });\n }, 250.0);\n }\n }\n private mousedownIncrease() {\n this.mousedown(()=>{\n this.display_value = this.constrainValue(this.display_value + (1 * this.step));\n });\n }\n private mousedownDecrease() {\n this.mousedown(()=>{\n this.display_value = this.constrainValue(this.display_value + (-1 * this.step));\n });\n }\n private mouseupIncrease() {\n if (this.modificationInterval == undefined && this.modificationTimeout != undefined) {\n clearTimeout(this.modificationTimeout);\n this.modificationTimeout = undefined;\n this.increase();\n return;\n }\n\n clearInterval(this.modificationInterval);\n this.modificationInterval = undefined;\n this.final_value = this.input ? this.input.value : this.getDisplayValue(this.value);\n this.modificationIntervalTimeout = 150;\n }\n private mouseupDecrease() {\n if (this.modificationInterval == undefined) {\n clearTimeout(this.modificationTimeout);\n this.modificationTimeout = undefined;\n this.decrease();\n return;\n }\n\n clearInterval(this.modificationInterval);\n this.modificationInterval = undefined;\n this.final_value = this.input ? this.input.value : this.getDisplayValue(this.value);\n this.modificationIntervalTimeout = 150;\n }\n\n\n private get unitifier(): number {\n switch (this.unit) {\n case \"cm\":\n return 0.1;\n case \"m\":\n return 0.001;\n case \"mm\":\n default:\n return 1;\n }\n }\n private get unitremover(): number {\n switch (this.unit) {\n case \"cm\":\n return 10;\n case \"m\":\n return 1000;\n case \"mm\":\n default:\n return 1;\n }\n }\n\n private getNoUnitValue(value: string): number {\n const valueString = value.replace(\",\", \".\");// allways support all possible Values for this.decimalDivider\n return this.decimals > 0 ? parseFloat(valueString) * this.unitremover : parseInt(valueString) * this.unitremover;\n }\n private getDisplayValue(value: number): string {\n const result = (value * this.unitifier).toFixed(this.decimals);\n return result.replace(\".\", this.decimalDivider);\n }\n\n\n private markFocus() {\n this.classList.add(\"focused\");\n }\n private unMarkFocus() {\n this.classList.remove(\"focused\");\n }\n private GetInput(): TemplateResult<1> {\n let unitLengthToUse = this.unitLength;\n if (this.unitLength == 0) {\n unitLengthToUse = this.unit.length;\n }\n\n const disableInput = this.min === this.max;\n const hideUnitContainer = ((this.hideUnusedUnitContainer || (this.hideUnusedUnitContainerWhenDisabled && disableInput)) && this.unit == \"error\");\n if (disableInput) {\n this.classList.add(\"disabled\");\n }\n else {\n this.classList.remove(\"disabled\");\n }\n\n this.style.setProperty(\"--auto-constrained-input-max-unit-length\", unitLengthToUse.toFixed(0) + \"em\");\n\n return html`\n <div class=\"input-container\">\n <input @focus=${this.markFocus}\n @blur=${this.unMarkFocus}\n @change=${this.change}\n value=\"${this.getDisplayValue(this.value)}\"\n min=\"${this.getDisplayValue(this.min)}\"\n max=\"${this.getDisplayValue(this.max)}\"\n step=\"${this.step}\"\n placeholder=\"${this.getDisplayValue(this.min)} - ${this.getDisplayValue(this.max)}\"\n ?disabled=\"${disableInput}\"\n />\n ${hideUnitContainer ? html`` : html`<span class=\"unit-container${this.unit == \"error\" ? \" number-unit\" : \"\"}\"><fv-label>${this.unit}</fv-label></span>`}\n </div>\n `;\n }\n private GetIncreaseDecrease(): TemplateResult<1> {\n if (this.showIncreaseDecrease) {\n return html`\n <button class=\"button increase\" @mousedown=\"${this.mousedownIncrease}\" @mouseup=\"${this.mouseupIncrease}\">\n <slot name=\"increase\"></slot>\n </button>\n <button class=\"button decrease\" @mousedown=\"${this.mousedownDecrease}\" @mouseup=\"${this.mouseupDecrease}\">\n <slot name=\"decrease\"></slot>\n </button>\n `;\n }\n return html``;\n }\n\n\n render(): TemplateResult<1> {\n return html`\n <div class=\"input-increase-decrease\">\n ${this.GetInput()}\n ${this.GetIncreaseDecrease()}\n </div>\n `;\n }\n}\n","import { BaseElement } from \"../../base/base.component\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport style from \"./base-input.sass?inline\";\r\nimport { PropertyValues, unsafeCSS } from \"lit\";\r\n\r\nexport abstract class BaseInput<T extends HTMLElement> extends BaseElement {\r\n\r\n static formAssociated = true;\r\n\r\n private readonly internals: ElementInternals;\r\n\r\n static styles = [\r\n super.styles || [],\r\n unsafeCSS(style)\r\n ]\r\n\r\n @query(\".base-input\")\r\n public _inputElement?: T;\r\n\r\n @property({ reflect: true, type: String })\r\n name = \"\";\r\n\r\n @property({ reflect: true, type: String })\r\n value = \"\";\r\n\r\n @property({ reflect: true, type: String })\r\n type = \"\";\r\n\r\n @property({ reflect: true, type: Boolean })\r\n readonly = false;\r\n\r\n @property({ reflect: true, type: String })\r\n placeholder = \"\";\r\n\r\n @property({ reflect: true, type: Boolean })\r\n required = false;\r\n\r\n @property({ reflect: true, type: String })\r\n label = \"\";\r\n\r\n @property({ reflect: true, type: String })\r\n min: string = \"\"\r\n\r\n @property({ reflect: true, type: String })\r\n max: string = \"\"\r\n\r\n @property({ reflect: true, type: String })\r\n autocomplete: string = \"\";\r\n\r\n constructor() {\r\n super();\r\n this.internals = this.attachInternals();\r\n }\r\n\r\n protected updated(changedProperties: PropertyValues): void {\r\n super.updated(changedProperties);\r\n if (changedProperties.has('autocomplete')) {\r\n this.setAttribute('autocomplete', this.autocomplete);\r\n }\r\n }\r\n\r\n @property()\r\n onChange = (e: Event, component: BaseInput<T>): void => {\r\n //empty\r\n };\r\n\r\n @property()\r\n onBlurChange = (e: Event, component: BaseInput<T>): void => {\r\n //empty\r\n };\r\n\r\n firstUpdated(_changedProperties: PropertyValues) {\r\n super.firstUpdated(_changedProperties);\r\n this.onChange(new Event(\"change\"), this);\r\n this.internals.setFormValue(this.value);\r\n }\r\n\r\n get Button(): Element | null {\r\n return this.querySelector(\"fv-button\");\r\n }\r\n\r\n protected OnChange(e: Event) {\r\n this.value = (e.target as HTMLInputElement).value;\r\n this.internals.setFormValue(this.value);\r\n this.onChange(e, this);\r\n this.dispatchEvent(new Event(\"change\"));\r\n }\r\n\r\n protected OnBlurChange(e: Event) {\r\n this.onBlurChange(e, this);\r\n this.dispatchEvent(new Event(\"blur\"));\r\n }\r\n\r\n focus(options?: FocusOptions): void {\r\n this._inputElement?.focus(options);\r\n }\r\n\r\n}\r\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./input.component.sass?inline\";\r\nimport { customElement, query, property } from \"lit/decorators.js\";\r\nimport { BaseInput } from \"../base/base-input\";\r\nimport { LabelComponent } from \"../../label/label.component\";\r\n\r\n@customElement(\"fv-input\")\r\nexport class InputComponent extends BaseInput<HTMLInputElement> {\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n @query(\".placeholder\")\r\n public _placeholder?: LabelComponent;\r\n\r\n @property({ type: Boolean, reflect: true, attribute: \"moveable-placeholder\" })\r\n public moveablePlaceholder = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected OnChange(e: Event) {\r\n if ((e.target as HTMLInputElement).value.length > 0) {\r\n this._placeholder?.setAttribute(\"has-value\", \"\");\r\n }\r\n else {\r\n this._placeholder?.removeAttribute(\"has-value\");\r\n }\r\n super.OnChange(e);\r\n }\r\n\r\n render(): TemplateResult<1> {\r\n return html`\r\n <input\r\n class=\"base-input\"\r\n @change=\"${this.OnBlurChange}\"\r\n @input=${this.OnChange}\r\n .type=\"${this.type}\"\r\n ?readonly=${this.readonly}\r\n ?required=${this.required}\r\n .value=\"${this.value}\"\r\n i18n-aria-label=\"${this.label}\"\r\n min=\"${this.min}\"\r\n max=\"${this.max}\"\r\n placeholder=\"${this.moveablePlaceholder ? \"\" : this.placeholder}\"\r\n autocomplete=\"${this.autocomplete}\"/>\r\n ${this.moveablePlaceholder ? html`\r\n <fv-label\r\n class=\"placeholder\"\r\n ?has-value=\"${this.value.length > 0}\"\r\n i18n=\"${this.placeholder}\">\r\n ${this.placeholder}\r\n </fv-label>\r\n ` : html``}\r\n <slot></slot>\r\n `;\r\n }\r\n}\r\n","import {BaseInput} from \"../base/base-input\";\r\nimport {customElement, property} from \"lit/decorators.js\";\r\nimport {html, unsafeStatic} from \"lit/static-html.js\";\r\nimport {TemplateResult, unsafeCSS} from \"lit\";\r\n\r\nimport style from \"./labeled-input.component.sass?inline\";\r\n\r\n@customElement(\"fv-labeled-input\")\r\nexport class LabeledInputComponent<T extends HTMLElement> extends BaseInput<T> {\r\n\r\n static styles = [super.styles || [], unsafeCSS(style)];\r\n\r\n @property({type: String, reflect: true, attribute: true})\r\n private inputTag: string = \"fv-input\";\r\n\r\n @property({type: String, reflect: true, attribute: true})\r\n private textId?: string;\r\n\r\n static formAssociated = true;\r\n\r\n @property({type: Boolean, reflect: true, attribute: \"moveable-placeholder\"})\r\n public moveablePlaceholder = false;\r\n\r\n protected render(): TemplateResult {\r\n if (this.moveablePlaceholder) {\r\n return html`\r\n <${unsafeStatic(this.inputTag)}\r\n class=\"input-field\"\r\n @change=\"${this.OnBlurChange}\"\r\n @input=${this.OnChange}\r\n ?readonly=${this.readonly}\r\n type=\"${this.type}\"\r\n min=\"${this.min}\"\r\n max=\"${this.max}\"\r\n .value=\"${this.value}\"\r\n ?moveable-placeholder=${this.moveablePlaceholder}\r\n placeholder=\"${this.placeholder}\"\r\n autocomplete=\"${this.autocomplete}\">\r\n <slot></slot>\r\n </${unsafeStatic(this.inputTag)}>\r\n `;\r\n }\r\n return html`\r\n <${unsafeStatic(this.inputTag)} class=\"input-field\"\r\n @change=\"${this.OnBlurChange}\"\r\n @input=${this.OnChange}\r\n ?readonly=${this.readonly}\r\n type=\"${this.type}\"\r\n min=\"${this.min}\"\r\n max=\"${this.max}\"\r\n .value=\"${this.value}\"\r\n autocomplete=\"${this.autocomplete}\"\r\n >\r\n <div class=\"placeholder-container\">\r\n <fv-label i18n=\"${this.textId}\">${this.placeholder}</fv-label>\r\n ${\r\n this.required ? html`<fv-label>*</fv-label>` : html ``\r\n }\r\n </div>\r\n <slot></slot>\r\n </${unsafeStatic(this.inputTag)}>\r\n `;\r\n }\r\n\r\n getInputElement<T>(): T | undefined {\r\n const baseElement = this.shadowRoot?.querySelector(this.inputTag);\r\n if (baseElement && baseElement instanceof BaseInput) {\r\n return baseElement._inputElement;\r\n }\r\n return undefined;\r\n }\r\n\r\n}\r\n","import {CSSResultGroup, TemplateResult, css, html, PropertyValues, unsafeCSS, LitElement} from \"lit\";\nimport style from \"./range.slider.input.component.sass?inline\";\nimport { BaseElement, Units } from \"../../base/base.component\";\nimport { customElement, property, query } from \"lit/decorators.js\";\n\n\n@customElement(\"fv-range-slider-input\")\nexport class RangeSliderInputComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n // _ _\n // _ __ _ __ ___ _ __ ___ _ __| |_(_) ___ ___\n // | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n // | |_) | | | (_) | |_) | __/ | | |_| | __/\\__ \\\n // | .__/|_| \\___/| .__/ \\___|_| \\__|_|\\___||___/\n // |_| |_|\n @property({ type: Number, reflect: true })\n public min = 0;\n @property({ type: Number, reflect: true })\n public max = 99999999999;\n @property({ type: Number, reflect: true })\n public value = 1;\n @property({ type: Number, reflect: true, attribute: \"decimals\" })\n public decimals = 0;\n @property({ type: String, reflect: true, attribute: \"unit\" })\n public unit: Units = \"error\";\n\n\n // _\n // __ _ _ _ ___ _ __(_) ___ ___\n // / _` | | | |/ _ \\ '__| |/ _ \\/ __|\n // | (_| | |_| | __/ | | | __/\\__ \\\n // \\__, |\\__,_|\\___|_| |_|\\___||___/\n // |_|\n @query(\"input\")\n private input: HTMLInputElement | undefined;\n\n @query(\".slider-min-display\")\n private minDisplay: HTMLDivElement | undefined;\n\n @query(\".slider-max-display\")\n private maxDisplay: HTMLDivElement | undefined;\n\n @query(\".slider-value-display-container\")\n private valueDisplayContainer: HTMLDivElement | undefined;\n\n @query(\".slider-value-display\")\n private valueDisplay: HTMLDivElement | undefined;\n\n @query(\".slider-value-display-spacer\")\n private valueDisplaySpacer: HTMLDivElement | undefined;\n\n @query(\".slider-value-display-background\")\n private valueDisplayBackground: HTMLDivElement | undefined;\n\n @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n public decimalDivider: \".\" | \",\" = \".\";// when adding possible dividers: DO NOT FORGET TO HANDLE IN values setter (in all inputs!)\n\n\n // _ _\n // ___ ___ _ __ ___| |_ _ __ _ _ ___| |_ ___ _ __\n // / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n // | (_| (_) | | | \\__ \\ |_| | | |_| | (__| || (_) | |\n // \\___\\___/|_| |_|___/\\__|_| \\__,_|\\___|\\__\\___/|_|\n constructor() {\n super();\n new ResizeObserver(()=>{\n this.resize(this);\n }).observe(this);\n }\n\n\n private resize(target: LitElement) {\n target.requestUpdate();\n }\n\n\n // _ _\n // _ _ _ __ (_) |_ ___\n // | | | | '_ \\| | __/ __|\n // | |_| | | | | | |_\\__ \\\n // \\__,_|_| |_|_|\\__|___/\n private get unitifier(): number {\n switch (this.unit) {\n case \"cm\":\n return 0.1;\n case \"m\":\n return 0.001;\n case \"mm\":\n default:\n return 1;\n }\n }\n private get unitremover(): number {\n return 1 / this.unitifier;\n }\n\n // _ _ __ _ _ _\n // _ __ ___ ___ __| (_)/ _(_) ___ __ _| |_(_) ___ _ __\n // | '_ ` _ \\ / _ \\ / _` | | |_| |/ __/ _` | __| |/ _ \\| '_ \\\n // | | | | | | (_) | (_| | | _| | (_| (_| | |_| | (_) | | | |\n // |_| |_| |_|\\___/ \\__,_|_|_| |_|\\___\\__,_|\\__|_|\\___/|_| |_|\n private getDisplayValue(value_: number) {\n const result = (value_ * this.unitifier).toFixed(this.decimals);\n return result.replace(\".\", this.decimalDivider);\n }\n private constrainValue(value_: number): number {\n let toleranceString = \"0\";\n if (this.decimals > 0) {\n toleranceString += \".\";\n for (let index = 0; index < this.decimals; ++index) toleranceString += index == this.decimals - 1 ? \"1\" : \"0\";\n }\n const tolerance = parseFloat(toleranceString);\n if (value_ < this.min + tolerance) {\n value_ = this.min;\n }\n else if (value_ > this.max - tolerance) {\n value_ = this.max;\n }\n return value_;\n }\n private set values(value_: string) {\n if (this.input && this.valueDisplay && this.valueDisplaySpacer) {\n const decimalDividerCleanValueString = value_.replace(\",\", \".\");// allways support all possible Values for this.decimalDivider\n if (this.decimals > 0) {\n this.value = parseFloat(decimalDividerCleanValueString) * this.unitremover;\n }\n else {\n this.value = parseInt(decimalDividerCleanValueString) * this.unitremover;\n }\n this.value = this.constrainValue(this.value);\n\n\n this.valueDisplay.innerText = this.getDisplayValue(this.value);\n this.valueDisplaySpacer.innerText = this.valueDisplay.innerText + (this.unit == \"error\" ? \"\" : \" \" + this.unit);\n }\n }\n private valueDisplayInput() {\n if (this.valueDisplay == undefined || this.valueDisplaySpacer == undefined) return;\n if (this.valueDisplay.innerText != \"\") {\n const value = this.decimals > 0 ? parseFloat(this.valueDisplay.innerText) : parseInt(this.valueDisplay.innerText);\n if (Number.isNaN(value)) {\n this.valueDisplay.innerText = this.getDisplayValue(this.value);\n }\n this.valueDisplaySpacer.innerText = this.valueDisplay.innerText + (this.unit == \"error\" ? \"\" : \" \" + this.unit);\n }\n }\n private valueDisplayBlur() {\n if (this.input == undefined || this.valueDisplay == undefined) return;\n if (this.valueDisplay.innerText == \"\") {\n this.values = this.input.value;\n this.updateThumbPosition();\n return;\n }\n this.values = this.valueDisplay.innerText;\n this.input.value = this.valueDisplay.innerText;\n this.updateThumbPosition();\n this.release();\n }\n private valueDisplayKeyDown(e: KeyboardEvent) {\n if (e.key == \"Enter\") {\n e.preventDefault();\n if (this.valueDisplay) {\n this.valueDisplay.blur();\n }\n }\n }\n private move() {\n if (this.input == undefined) return;\n this.values = this.input.value;\n this.updateThumbPosition();\n }\n private change() {\n if (this.input == undefined) return;\n this.values = this.input.value;\n this.release();\n }\n private release() {\n this.dispatchEvent(new CustomEvent(\"slider-release\", {\n bubbles: true,\n composed: true,\n detail: {\n min: this.min,\n max: this.max,\n value: this.value\n }\n }));\n this.requestUpdate();\n }\n\n // _ ___ _ _\n // _ __ ___ _ __ __| | ___ _ __ ( _ ) _ _ _ __ __| | __ _| |_ ___\n // | '__/ _ \\ '_ \\ / _` |/ _ \\ '__| / _ \\/\\ | | | | '_ \\ / _` |/ _` | __/ _ \\\n // | | | __/ | | | (_| | __/ | | (_> < | |_| | |_) | (_| | (_| | || __/\n // |_| \\___|_| |_|\\__,_|\\___|_| \\___/\\/ \\__,_| .__/ \\__,_|\\__,_|\\__\\___|\n // |_|\n protected render(): TemplateResult<1> {\n const min = this.getDisplayValue(this.min);\n const max = this.getDisplayValue(this.max);\n const value = this.getDisplayValue(this.value);\n const unit = this.unit == \"error\" ? \"\" : \" \" + this.unit;\n\n return html`\n <div class=\"slider-min-display\">${min + unit}</div>\n <div class=\"inputs-container\">\n <div class=\"slider-value-display-container\">\n <div class=\"fv-icon-arrow-down left\"></div>\n <div class=\"slider-value-display-background\">\n <div class=\"slider-value-display-spacer\">${value + unit}</div>\n <div class=\"slider-value-display\" contenteditable @keydown=\"${this.valueDisplayKeyDown}\" @input=\"${this.valueDisplayInput}\" @blur=\"${this.valueDisplayBlur}\">${value}</div>\n <div class=\"slider-value-display-suffix\">${unit}</div>\n </div>\n <div class=\"fv-icon-arrow-down right\"></div>\n </div>\n <input @change=\"${this.change}\" @input=\"${this.move}\" type=\"range\" min=\"${min.replace(this.decimalDivider, \".\")}\" max=\"${max.replace(this.decimalDivider, \".\")}\" value=\"${value.replace(this.decimalDivider, \".\")}\" class=\"slider\">\n </div>\n <div class=\"slider-max-display\">${max + unit}</div>\n `;\n }\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n this.updateThumbPosition();\n }\n\n private updateThumbPosition() {\n if (this.valueDisplayContainer) {\n this.valueDisplayContainer.style.left = this.thumb_pos + \"px\";\n }\n }\n\n private get thumb_pos(): number {\n if (this.input && this.valueDisplayBackground) {\n const inputStyles = getComputedStyle(this.input);\n\n const thumbArrowWidth = parseFloat(inputStyles.getPropertyValue(\"--range-slider-thumb-arrow-width\"));\n let additionalwidth = Number.isNaN(thumbArrowWidth) ? parseFloat(inputStyles.fontSize) * 2.0 : thumbArrowWidth * 2.0;\n\n const thumbArrowSpacing = parseFloat(inputStyles.getPropertyValue(\"--range-slider-thumb-arrow-spacing\"));\n additionalwidth += Number.isNaN(thumbArrowSpacing) ? parseFloat(inputStyles.fontSize) * 2.0 : thumbArrowSpacing * 4.0;\n\n const valueDisplayBackgroundStyles = getComputedStyle(this.valueDisplayBackground);\n if (Number.isNaN(valueDisplayBackgroundStyles.paddingLeft) == false) {\n additionalwidth += parseFloat(valueDisplayBackgroundStyles.paddingLeft);\n }\n if (Number.isNaN(valueDisplayBackgroundStyles.paddingRight) == false) {\n additionalwidth += parseFloat(valueDisplayBackgroundStyles.paddingRight);\n }\n\n const thumb = this.max_display_width + additionalwidth;\n this.style.setProperty(\"--auto-range-slider-thumb-width\", thumb.toFixed(2) + \"px\");\n\n const range = this.max - this.min;\n const filledRange = this.value - this.min;\n\n const startPosAreaAdjustedByThumb = (thumb * 0.5);\n const currentWidthPercentOfMaxWidth = (filledRange / range);\n const areaWidthWithoutThumb = parseFloat(inputStyles.width) - thumb;\n return startPosAreaAdjustedByThumb + currentWidthPercentOfMaxWidth * areaWidthWithoutThumb;\n }\n return 0.0;\n }\n private get max_display_width(): number {\n if (this.maxDisplay) {\n const maxDisplayStyles = getComputedStyle(this.maxDisplay);\n return Number.isNaN(maxDisplayStyles.width) ? 100.0 : parseFloat(maxDisplayStyles.width);\n }\n return 100.0;\n }\n}\n","import { CSSResultGroup, TemplateResult, css, unsafeCSS, html, PropertyValues, PropertyValueMap } from \"lit\";\nimport style from \"./shared.range.slider.input.component.sass?inline\";\nimport { BaseElement, Units } from \"../../base/base.component\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { InputComponent } from \"../input/input.component\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\n\nexport interface SharedRangeSliderInputChangeData {\n left: number,\n right: number,\n \"triggered-from-move\": boolean\n}\nexport class SharedRangeSliderInputChanged extends CustomEvent<SharedRangeSliderInputChangeData> {\n constructor(data_: SharedRangeSliderInputChangeData) {\n super(\"sharedrangesliderinputchange\", { detail: data_, bubbles: true, composed: true });\n }\n}\n\n@customElement(\"fv-shared-range-slider-input\")\nexport class SharedRangeSliderInputComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private documentMouseUp: (this: Document, ev: MouseEvent) => void;\n private documentMouseMove: (this: Document, ev: MouseEvent) => void;\n private documentMouseLeave: (this: Document, ev: MouseEvent) => void;\n private documentPointerMove: (this: Document, ev: PointerEvent) => void;\n private sceneMouseUp: (this: Window, ev: MouseEvent) => void;\n\n @property({ type: Number, reflect: true, attribute: \"left-value\" })\n public leftValue = 0;\n @property({ type: Number, reflect: true, attribute: \"left-min\" })\n public leftMin = 0;\n @property({ type: Number, reflect: true, attribute: \"left-max\" })\n public leftMax = 99999999;\n @property({ type: String, reflect: true, attribute: \"left-placeholder\" })\n public leftPlaceholder = \"\";\n\n\n @property({ type: Number, reflect: true, attribute: \"right-value\" })\n public rightValue = 0;\n @property({ type: Number, reflect: true, attribute: \"right-min\" })\n public rightMin = 0;\n @property({ type: Number, reflect: true, attribute: \"right-max\" })\n public rightMax = 99999999;\n @property({ type: String, reflect: true, attribute: \"right-placeholder\" })\n public rightPlaceholder = \"\";\n\n\n @property({ type: Boolean, reflect: true, attribute: \"trigger-change-on-mousemove\" })\n public triggerChangeOnMousemove = false;\n @property({ type: Number, reflect: true, attribute: \"mousemove-change-trigger-distance\" })\n public mousemoveChangeTriggerDistance = 10.0;\n\n\n\n public set FinalizeChangePromise(finalizePromise: Promise<unknown>) {\n this._finalizeChangePromise = finalizePromise;\n }\n private _finalizeChangePromise: Promise<unknown> | undefined = undefined;\n private _finalizingChange = false;\n\n\n @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n public decimalDivider: \".\" | \",\" = \".\";\n\n @query(\".input-left\")\n private leftInput?: InputComponent;\n @query(\".input-right\")\n private rightInput?: InputComponent;\n @query(\".label-container.left\")\n private labelContainerLeft?: HTMLDivElement;\n @query(\".label-container.right\")\n private labelContainerRight?: HTMLDivElement;\n\n @query(\".input-overwrite-slot.left\")\n private inputOverwriteSlotLeft?: HTMLSlotElement;\n @query(\".input-overwrite-slot.right\")\n private inputOverwriteSlotRight?: HTMLSlotElement;\n\n private lastLeftValue: number | undefined = undefined;\n private lastMouseMoveChangeEventFulfilled = true;\n\n constructor() {\n super();\n\n const _this = this;\n this.documentMouseUp = async function (this: Document, ev: MouseEvent) {\n if (_this._finalizingChange) {\n return;\n }\n if (!_this.mouseDown && !_this.engageDocument) {\n return;\n }\n _this.mouseDown = false;\n _this.EngageDocument = false;\n await _this.triggerChangeEvent();\n _this.requestUpdate();\n };\n this.documentMouseMove = function (this: Document, ev: MouseEvent) {\n // if (_this._finalizingChange) {\n // return;\n // }\n if (!_this.mouseDown && !_this.engageDocument) {\n return;\n }\n _this.updateSliderPosition(ev.clientX ? ev.clientX : 0);\n _this.changeOnMousemove();\n };\n\n this.documentMouseLeave = function (this: Document, ev: MouseEvent) {\n if (_this._finalizingChange) {\n return;\n }\n if (!_this.mouseDown && !_this.engageDocument) {\n return;\n }\n _this.updateSliderPosition(ev.clientX ? ev.clientX : 0);\n };\n this.documentPointerMove = function (this: Document, ev: PointerEvent) {\n if (_this._finalizingChange) {\n return;\n }\n if (!_this.mouseDown && !_this.engageDocument) {\n return;\n }\n _this.updateSliderPosition(ev.clientX ? ev.clientX : 0);\n _this.changeOnMousemove();\n };\n this.sceneMouseUp = async function (this: Window, ev: MouseEvent) {\n if (_this._finalizingChange) {\n return;\n }\n if (!_this.mouseDown || !_this.engageDocument) {\n return;\n }\n _this.mouseDown = false;\n _this.EngageDocument = false;\n await _this.triggerChangeEvent();\n _this.requestUpdate();\n };\n\n document.addEventListener(\"mouseup\", this.documentMouseUp);\n //document.addEventListener(\"mousemove\", this.documentMouseMove);\n document.addEventListener(\"mouseleave\", this.documentMouseLeave);\n document.addEventListener(\"pointermove\", this.documentPointerMove);\n this.attachSceneEvent();\n }\n\n\n private changeOnMousemove(): void {\n if (this.triggerChangeOnMousemove) {\n if (this.lastLeftValue == undefined) {\n this.lastLeftValue = this.leftValue;\n return;\n }\n\n const distance = Math.abs(this.leftValue - this.lastLeftValue);\n if (distance < this.mousemoveChangeTriggerDistance + 0.1) {\n return;\n }\n\n if (!this.lastMouseMoveChangeEventFulfilled) {\n this.lastLeftValue = this.leftValue;\n return;\n }\n\n this.lastMouseMoveChangeEventFulfilled = false;\n const lastMouseMoveChangeEvent = this.triggerChangeEvent(true);\n lastMouseMoveChangeEvent.then(()=>{\n this.lastMouseMoveChangeEventFulfilled = true;\n });\n this.lastLeftValue = this.leftValue;\n }\n }\n\n\n private engageDocument = false;\n private set EngageDocument(value: boolean) {\n this.engageDocument = value;\n }\n private mouseDown = false;\n private dotPosition = 0;\n private updateSliderPosition(mousePosition_: number) {\n if (!this.mouseDown) return;\n this.updateValuesFromDotPosition(mousePosition_);\n this.updateDotPositionFromValues();\n this.requestUpdate();\n }\n private async triggerChangeEvent(triggeredFromMove_ = false) {\n if (this.leftInput == undefined || this.rightInput == undefined) {\n return;\n }\n this._finalizingChange = true;\n this.dispatchEvent(new SharedRangeSliderInputChanged({ left: this.leftValue, right: this.rightValue, \"triggered-from-move\": triggeredFromMove_ }));\n if (this._finalizeChangePromise) {\n await this._finalizeChangePromise;\n }\n this._finalizingChange = false;\n }\n\n private onSliderLinePointerDown(e: PointerEvent) {\n if (this._finalizingChange) {\n return;\n }\n this.mouseDown = true;\n this.updateSliderPosition(e.clientX ? e.clientX : 0);\n }\n private async onSliderLinePointerUp(e: PointerEvent) {\n if (this._finalizingChange) {\n if (this.triggerChangeOnMousemove) {\n this.mouseDown = false;\n }\n return;\n }\n this.mouseDown = false;\n await this.triggerChangeEvent();\n this.requestUpdate();\n }\n private onSliderMouseLeave(e: PointerEvent) {\n if (this._finalizingChange) {\n if (this.mouseDown) {\n this.EngageDocument = true;\n }\n return;\n }\n if (this.mouseDown) {\n this.updateSliderPosition(e.clientX ? e.clientX : 0);\n this.EngageDocument = true;\n }\n }\n private onSliderMouseEnter(e: PointerEvent) {\n this.EngageDocument = false;\n }\n private onSliderMouseMove(e: PointerEvent) {\n if (this._finalizingChange) {\n return;\n }\n this.updateSliderPosition(e.clientX ? e.clientX : 0);\n this.changeOnMousemove();\n if (!this.mouseDown) {\n this.EngageDocument = false;\n }\n }\n\n private leftBlur(e: Event) {\n if (this._finalizingChange) {\n return;\n }\n if (this.leftInput == undefined) {\n return;\n }\n\n if (this.leftInput.value.length > 0) {\n if (this.makeDisplayValue(this.leftValue) != this.leftInput.value) {\n this.leftValue = this.makeValue(this.leftInput.value);\n\n if (this.leftValue < this.leftMin - 0.000001) {\n this.leftValue = this.leftMin;\n }\n if (this.leftValue > this.leftMax + 0.000001) {\n this.leftValue = this.leftMax;\n }\n\n this.rightValue = this.sliderTotal - this.leftValue;\n this.dispatchEvent(new SharedRangeSliderInputChanged({ left: this.leftValue, right: this.rightValue, \"triggered-from-move\": false }));\n }\n }\n return;\n }\n private leftChange(e: Event) {\n if (this._finalizingChange) {\n return;\n }\n if (this.leftInput == undefined) {\n return;\n }\n\n if (this.leftInput.value.length > 0) {\n this.leftInput.value = this.leftInput.value.replaceAll(/[^0-9.,]/g, \"\");\n this.leftInput.value = this.leftInput.value.replaceAll(\",\", this.decimalDivider);\n this.leftInput.value = this.leftInput.value.replaceAll(\".\", this.decimalDivider);\n return;\n }\n }\n private rightBlur(e: Event) {\n if (this._finalizingChange) {\n return;\n }\n if (this.rightInput == undefined) {\n return;\n }\n\n if (this.rightInput.value.length > 0) {\n if (this.makeDisplayValue(this.rightValue) != this.rightInput.value) {\n const total = this.sliderTotal;\n\n this.rightValue = this.makeValue(this.rightInput.value);\n if (this.rightValue < this.rightMin - 0.000001) {\n this.rightValue = this.rightMin;\n }\n if (this.rightValue > this.rightMax + 0.000001) {\n this.rightValue = this.rightMax;\n }\n\n this.leftValue = total - this.rightValue;\n this.dispatchEvent(new SharedRangeSliderInputChanged({ left: this.leftValue, right: this.rightValue, \"triggered-from-move\": false }));\n }\n }\n return;\n }\n private rightChange(e: Event) {\n if (this._finalizingChange) {\n return;\n }\n if (this.rightInput == undefined) {\n return;\n }\n\n if (this.rightInput.value.length > 0) {\n this.rightInput.value = this.rightInput.value.replaceAll(/[^0-9.,]/g, \"\");\n this.rightInput.value = this.rightInput.value.replaceAll(\",\", this.decimalDivider);\n this.rightInput.value = this.rightInput.value.replaceAll(\".\", this.decimalDivider);\n return;\n }\n }\n\n\n private async attachSceneEvent() {\n await WebViewerService.IsAppReady;\n WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener(\"mouseup\", this.sceneMouseUp);\n }\n\n private makeDisplayValue(value_: number): string {\n const value = value_;\n const result = (value * this.DimensionScale).toFixed(this.Digits);\n return result.replace(\".\", this.decimalDivider);\n }\n private makeValue(displayValue: string): number {\n const value = parseFloat(displayValue.replace(this.decimalDivider, \".\")) * (1 / this.DimensionScale);\n return value;\n }\n\n private get sliderTotal(): number {\n return this.leftValue + this.rightValue;\n }\n private get positionValue(): number {\n return this.leftValue;\n }\n private get dotWidth(): number {\n const style = getComputedStyle(this);\n const dotWidthStyle = style.getPropertyValue(\"--slider-dot-size\");\n return dotWidthStyle.length > 0 ? parseInt(dotWidthStyle) : 20;\n }\n\n private updateDotPositionFromMousePosition(mousePosition_: number, dotWidth: number): number {\n const sliderLine = this.renderRoot.querySelector(\".slider-line\") as HTMLElement;\n if (!sliderLine) return 0;\n\n const sliderLineRect = sliderLine.getBoundingClientRect();\n const sliderLinePosition = sliderLineRect.left;\n this.dotPosition = mousePosition_ - sliderLinePosition - dotWidth * 0.5;\n\n if (this.dotPosition < 0) {\n this.dotPosition = 0;\n }\n if (this.dotPosition > sliderLineRect.width - dotWidth) {\n this.dotPosition = sliderLineRect.width - dotWidth;\n }\n return sliderLineRect.width;\n }\n\n private updateValuesFromDotPosition(mousePosition_: number): void {\n const dotWidth = this.dotWidth;\n const sliderLineWidth = this.updateDotPositionFromMousePosition(mousePosition_, dotWidth);\n\n if (this.leftInput && this.rightInput) {\n const percentile = this.dotPosition / (sliderLineWidth - dotWidth);\n const total = this.sliderTotal;\n const adjustedLeft = total * percentile;\n const adjustedRight = total - adjustedLeft;\n\n this.leftValue = adjustedLeft;\n this.rightValue = adjustedRight;\n\n if (this.leftValue < this.leftMin - 0.000001) {\n this.leftValue = this.leftMin;\n }\n if (this.leftValue > this.leftMax + 0.000001) {\n this.leftValue = this.leftMax;\n }\n\n if (this.rightValue < this.rightMin - 0.000001) {\n this.rightValue = this.rightMin;\n }\n if (this.rightValue > this.rightMax + 0.000001) {\n this.rightValue = this.rightMax;\n }\n\n this.leftInput.value = this.makeDisplayValue(this.leftValue);\n this.rightInput.value = this.makeDisplayValue(this.rightValue);\n }\n }\n\n private updateDotPositionFromValues(): void {\n const sliderLine = this.renderRoot.querySelector(\".slider-line\") as HTMLElement;\n if (sliderLine) {\n const style = getComputedStyle(this);\n const dotWidthStyle = style.getPropertyValue(\"--slider-dot-size\");\n const dotWidth = dotWidthStyle.length > 0 ? parseInt(dotWidthStyle) : 20;\n const sliderLineRect = sliderLine.getBoundingClientRect();\n\n if (sliderLineRect.width !== 0 && sliderLineRect.height !== 0) {\n const percentile = this.positionValue / this.sliderTotal;\n this.dotPosition = percentile * (sliderLineRect.width - dotWidth);\n }\n }\n }\n\n protected render(): TemplateResult<1> {\n this.updateDotPositionFromValues();\n\n return html`\n <div\n class=\"slider-container${this.mouseDown ? \" moving-dot\" : \"\"}\"\n @mousemove=\"${this.onSliderMouseMove}\"\n @mouseleave=\"${this.onSliderMouseLeave}\"\n @mouseenter=\"${this.onSliderMouseEnter}\"\n @pointerdown=\"${this.onSliderLinePointerDown}\"\n @pointerup=\"${this.onSliderLinePointerUp}\">\n <div class=\"slider-label\">\n <slot></slot>\n </div>\n <div class=\"slider-line\">\n <div class=\"slider-dot\" style=\"left: ${this.dotPosition}px;\"></div>\n </div>\n </div>\n <div class=\"inputs-container\">\n <div class=\"input-container left\">\n <div class=\"label-container left\">\n <span>${this.leftPlaceholder}</span>\n </div>\n <fv-input\n class=\"input-left\"\n placeholder=\"${this.leftPlaceholder}\"\n @blur=${this.leftBlur}\n @change=${this.leftChange}\n value=\"${this.makeDisplayValue(this.leftValue)}\"\n min=\"${this.makeDisplayValue(this.leftMin)}\"\n max=\"${this.makeDisplayValue(this.leftMax)}\">\n <div class=\"unit-suffix\">${this.Unit}</div>\n </fv-input>\n <slot class=\"input-overwrite-slot left\" name=\"left-input-overwrite-slot\"></slot>\n </div>\n <div class=\"input-container right\">\n <div class=\"label-container right\">\n <span>${this.rightPlaceholder}</span>\n </div>\n <fv-input\n class=\"input-right\"\n placeholder=\"${this.rightPlaceholder}\"\n @blur=${this.rightBlur}\n @change=${this.rightChange}\n value=\"${this.makeDisplayValue(this.rightValue)}\"\n min=\"${this.makeDisplayValue(this.rightMin)}\"\n max=\"${this.makeDisplayValue(this.rightMax)}\">\n <div class=\"unit-suffix\">${this.Unit}</div>\n </fv-input>\n <slot class=\"input-overwrite-slot right\" name=\"right-input-overwrite-slot\"></slot>\n </div>\n </div>\n `;\n }\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n const dot = this.renderRoot.querySelector(\".slider-dot\") as HTMLDivElement;\n if (dot) {\n this.updateDotPositionFromValues();\n dot.style.left = this.dotPosition + \"px\";\n }\n super.firstUpdated(_changedProperties);\n }\n\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.updated(_changedProperties);\n\n if (this.inputOverwriteSlotLeft != undefined && this.inputOverwriteSlotLeft.assignedNodes().length > 0) {\n this.labelContainerLeft?.classList.add(\"hidden\");\n this.leftInput?.classList.add(\"hidden\");\n }\n else {\n this.labelContainerLeft?.classList.remove(\"hidden\");\n this.leftInput?.classList.remove(\"hidden\");\n }\n\n if (this.inputOverwriteSlotRight && this.inputOverwriteSlotRight.assignedNodes().length > 0) {\n this.labelContainerRight?.classList.add(\"hidden\");\n this.rightInput?.classList.add(\"hidden\");\n }\n else {\n this.labelContainerRight?.classList.remove(\"hidden\");\n this.rightInput?.classList.remove(\"hidden\");\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n document.removeEventListener(\"mouseup\", this.documentMouseUp);\n //document.removeEventListener(\"mousemove\", this.documentMouseMove);\n document.removeEventListener(\"mouseleave\", this.documentMouseLeave);\n document.removeEventListener(\"pointermove\", this.documentPointerMove);\n WebViewerService.FurnviewWebViewer?.contentWindow?.removeEventListener(\"mouseup\", this.sceneMouseUp);\n }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./slider.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { SliderRange } from \"../../../../define/interface\";\nimport { InputComponent } from \"../input/input.component\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-slider:update-range\": Record<string, never>;\n }\n}\n\ninterface Position {\n x: number;\n y: number;\n}\n\ninterface Area extends Position {\n width: number;\n height: number;\n}\n\n@customElement(\"fv-slider\")\nexport class SliderComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Number, reflect: true, attribute: \"direction\" })\n public _direction?: number;\n\n @query(\".min-slider\")\n private _minSlider?: HTMLDivElement;\n\n @query(\".max-slider\")\n private _maxSlider?: HTMLDivElement;\n\n @query(\".slider\")\n private _slider?: HTMLDivElement;\n\n private _maxValue?: HTMLElement | HTMLInputElement | null;\n private _minValue?: HTMLElement | HTMLInputElement | null;\n\n @property({ type: Object, reflect: true, attribute: \"range\" })\n private _range?: SliderRange;\n\n @property({ type: Object, reflect: true, attribute: \"val\" })\n private _value?: SliderRange | number;\n\n @property({ type: Function, reflect: true, attribute: \"formatDisplayValue\" })\n private _formatDisplayValueFunction = (value: number): string => {\n return value.toFixed(2);\n };\n\n public set FormatDisplayValueFunction(value: (value: number) => string) {\n this._formatDisplayValueFunction = value;\n }\n\n private _currentActionElement?: HTMLDivElement | null = null;\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-slider:update-range\": () => { this.requestUpdate(); },\n };\n\n private _minPosition: Area;\n private _maxPosition: Area;\n private _startPosition: Position;\n private _currentPosition: Position;\n\n constructor() {\n super();\n this._startPosition = { x: 0, y: 0 };\n this._currentPosition = { x: 0, y: 0 };\n this._minPosition = { x: -1, y: -1, height: 0, width: 0 };\n this._maxPosition = { x: -1, y: -1, height: 0, width: 0 };\n }\n\n //region Lifecycle\n\n protected updated(_changedProperties: PropertyValues) {\n if (!this._value) {\n this._value = this._range;\n }\n\n if (typeof this._value === \"number\") {\n this.updateDisplayValues({ min: this._value, max: this._value });\n }\n else {\n this.updateDisplayValues(this._value!);\n }\n super.updated(_changedProperties);\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n window.addEventListener(\"resize\", this.onWindowResized.bind(this), { passive: true });\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"resize\", this.onWindowResized.bind(this));\n super.disconnectedCallback();\n }\n\n onWindowResized() {\n this.requestUpdate();\n }\n\n render(): TemplateResult<1> {\n if (!this._range || !this._value) {\n return html``;\n }\n const _value = this._value!;\n\n const width = this.MaxV;\n const points = this.updateDotStyles(_value, this._range, width);\n const rangeBetween = this.updateRangeStyles(_value, this._range, width);\n\n return html`\n <div class=\"slider\">\n <div class=\"min-slider\" style=\"left: ${points.min}px;\"\n @pointerdown=\"${this.onMinSliderPointerDown}\"></div>\n <div class=\"slider-line\" @pointerdown=\"${this.onSliderLinePointerDown}\">\n <div class=\"range-between\"\n style=\"left: ${rangeBetween.min}px; right: ${this.MaxV - rangeBetween.max}px\"></div>\n </div>\n <div class=\"max-slider\" style=\"left: ${points.max}px;\"\n @pointerdown=\"${this.onMaxSliderPointerDown}\"></div>\n </div>\n <div class=\"sliderValues\">\n <slot name=\"min\"></slot>\n <slot name=\"max\"></slot>\n </div>\n `;\n }\n\n //endregion\n //region Getter / Setter\n\n public set Value(range: SliderRange | number | undefined) {\n this._value = range;\n if (!range) {\n this._value = this.Range;\n }\n }\n\n private get MaxV(): number {\n if (this._direction && this._direction == 1) {\n return parseFloat(window.getComputedStyle(this._slider || this).height);\n }\n else {\n return parseFloat(window.getComputedStyle(this._slider || this).width);\n }\n }\n\n public get Range(): SliderRange | undefined {\n return this._range;\n }\n\n public set Range(range: SliderRange | undefined) {\n this._range = range;\n }\n\n //endregion\n //region Events\n\n private handlePointerDown = (e: PointerEvent, position: Position) => {\n document.body.style.touchAction = \"none\";\n e.preventDefault();\n if (this._currentActionElement) {\n this._startPosition = { x: this._currentActionElement.offsetLeft, y: this._currentActionElement.offsetTop };\n this._currentPosition = position;\n }\n };\n\n private handlePointerMove = (e: PointerEvent) => {\n if (!this._currentActionElement) return;\n\n const mousePosition = this.getPointerPosition(e);\n e.preventDefault();\n const position: Position = {\n x: this._startPosition.x + mousePosition.x - this._currentPosition.x,\n y: this._startPosition.y + mousePosition.y - this._currentPosition.y,\n };\n if (this._direction && this._direction === 1) {\n this.handleVerticalMovement(position);\n }\n else {\n this.handleHorizontalMovement(position);\n }\n };\n\n private handlePointerClick = (e: PointerEvent, mousePosition: Position) => {\n if (!this._currentActionElement) return;\n e.preventDefault();\n const position: Position = {\n x: mousePosition.x - this.getBoundingClientRect().x,\n y: mousePosition.y - this.getBoundingClientRect().y,\n };\n if (this._direction && this._direction === 1) {\n this.handleVerticalMovement(position);\n }\n else {\n this.handleHorizontalMovement(position);\n }\n }\n\n private handlePointerUp = () => {\n if (this._currentActionElement) {\n this._currentActionElement = null;\n document.body.style.touchAction = \"auto\";\n document.removeEventListener(\"pointermove\", this.handlePointerMove, false);\n document.removeEventListener(\"pointerup\", this.handlePointerUp, false);\n WebViewerService.FurnviewWebViewer?.contentWindow?.removeEventListener(\"pointerup\", this.globalPointerUp);\n }\n this.dispatchChange(true);\n };\n\n private globalPointerUp = (event: PointerEvent) => {\n this.handlePointerUp();\n };\n\n private dispatchChange(dispatch = true) {\n if (this._range) {\n if (dispatch) {\n this.dispatchEvent(new CustomEvent(\"change\", {\n detail: {\n value: this._value,\n range: this.Range,\n actionElement: this._currentActionElement\n },\n bubbles: true,\n composed: true\n }));\n }\n }\n }\n\n // endregion\n // region SliderMovement\n\n private getPointerPosition(e: PointerEvent) {\n let posx = 0, posy = 0;\n if (e.clientX) {\n posx = e.clientX;\n posy = e.clientY;\n }\n return { x: posx, y: posy };\n }\n\n private handleHorizontalMovement(position: Position) {\n const width = 0;\n const maxWidth = this.MaxV;\n\n const clampedX = this.clamp(position.x, 0, maxWidth - width);\n const currentActionPosition = this.applyMinMaxXConstraints(clampedX, maxWidth);\n\n const range: SliderRange = {\n min: this._minPosition.x !== -1 ? this._minPosition.x : currentActionPosition,\n max: this._maxPosition.x !== -1 ? this._maxPosition.x + width : currentActionPosition + width\n };\n\n if (this._range) {\n this._value = this.getInterpolatedRange(range, maxWidth, this._range);\n }\n }\n\n private handleVerticalMovement(position: Position) {\n const height = 0;\n const maxHeight = this.MaxV;\n\n const clampedY = this.clamp(position.y, -height, maxHeight - height);\n const currentActionPosition = this.applyMinMaxYConstraints(clampedY, maxHeight);\n\n this._currentActionElement!.style.top = (currentActionPosition) + \"px\";\n\n const range: SliderRange = {\n min: this._minPosition.y !== -1 ? this._minPosition.y : currentActionPosition,\n max: this._maxPosition.y !== -1 ? this._maxPosition.y + height : currentActionPosition + height\n };\n\n if (this._range) {\n this._value = this.getInterpolatedRange(range, maxHeight, this._range);\n }\n }\n\n // endregion\n //region Math\n\n private clamp(value: number, min: number, max: number) {\n return Math.max(min, Math.min(value, max));\n }\n\n private applyMinMaxXConstraints(position: number, width: number): number {\n position = this._minPosition.x !== -1 ? position > this._minPosition.x + this._minPosition.width ? position : this._minPosition.x + this._minPosition.width : position;\n position = this._maxPosition.x !== -1 ? position < this._maxPosition.x - this._maxPosition.width ? position : this._maxPosition.x - this._maxPosition.width : position;\n return this.clamp(position, 0, width);\n }\n\n private applyMinMaxYConstraints(position: number, height: number): number {\n position = this._minPosition.y !== -1 ? position > this._minPosition.y + this._minPosition.height ? position : this._minPosition.y + this._minPosition.height : position;\n position = this._maxPosition.y !== -1 ? position < this._maxPosition.y - this._maxPosition.height ? position : this._maxPosition.y - this._maxPosition.height : position;\n return this.clamp(position, 0, height);\n }\n\n private interpolateRangeValue(value: number, maxV: number, range: SliderRange): number {\n const _range = range.max - range.min;\n return this.clamp(range.min + (_range * (value / maxV)), range.min, range.max);\n }\n\n private getInterpolatedRange(value: SliderRange, maxV: number, range: SliderRange) {\n return {\n min: this.interpolateRangeValue(value.min, maxV, range),\n max: this.interpolateRangeValue(value.max, maxV, range)\n };\n }\n\n private projectValue(value: number, maxV: number, range: SliderRange): number {\n const _range = range.max - range.min;\n const scaled_value = (value - range.min) / _range;\n\n if (scaled_value >= 1 / maxV) {\n value = scaled_value * maxV;\n }\n else {\n value = scaled_value;\n }\n return value;\n }\n\n private getProjectedValues(values: SliderRange, maxV: number, range: SliderRange): SliderRange {\n return {\n min: this.projectValue(values.min, maxV, range),\n max: this.projectValue(values.max, maxV, range)\n };\n }\n\n //endregion\n //region Frontend update\n\n private updateRangeStyles(values: SliderRange | number, range: SliderRange, size: number): SliderRange {\n if (typeof values === \"number\") {\n return {\n min: this.projectValue(values, size, range),\n max: this.projectValue(values, size, range)\n };\n }\n return {\n min: this.projectValue(values.min, size, range),\n max: this.projectValue(values.max, size, range)\n };\n }\n\n private updateDotStyles(value: SliderRange | number, range: SliderRange, size: number) {\n let min, max;\n if (typeof value === \"number\") {\n min = max = this.projectValue(value, size - 20, range);\n //TODO: Fix hardcoded Slider drag size\n if (min > max) {\n min -= 20;\n }\n else {\n max += 20;\n }\n }\n else {\n min = this.projectValue(value.min, size, range);\n max = this.projectValue(value.max, size, range);\n min = this.clamp(min, 0, max);\n max = this.clamp(max, min, size);\n }\n return {\n min, max\n };\n }\n\n private updateDisplayValues(range: SliderRange) {\n if (!this._maxValue) {\n const element = this.querySelector(\"[slot=max].sliderValue\") || this.querySelector(\"[slot=max] .sliderValue\");\n if (element) {\n this._maxValue = element as HTMLElement;\n }\n }\n if (!this._minValue) {\n const element = this.querySelector(\"[slot=min].sliderValue\") || this.querySelector(\"[slot=min] .sliderValue\");\n if (element) {\n this._minValue = element as HTMLElement;\n }\n }\n if (this._maxValue) {\n const maxValue = this._formatDisplayValueFunction(Math.round(range.max));\n this.setInputValue(this._maxValue, maxValue);\n this.addChangeListener(this._maxValue, (ev, value) => {\n if (this._range && this._value && value && !isNaN(parseFloat(value))) {\n const multiplier = 1 / parseFloat(this._formatDisplayValueFunction(1));\n const newValue = multiplier * parseFloat(value);\n if (typeof this._value === \"object\") {\n this._value = {\n min: this._value.min,\n max: Math.min(Math.max(newValue, this._value.min), this._range.max)\n };\n }\n else if (typeof this._value === \"number\") {\n if (this._range) {\n this._value = {\n min: this._range.min,\n max: Math.min(Math.max(newValue, this._range.min), this._range.max)\n };\n }\n }\n this.dispatchChange(true);\n this.requestUpdate();\n }\n });\n }\n if (this._minValue) {\n const minValue = this._formatDisplayValueFunction(Math.round(range.min));\n this.setInputValue(this._minValue, minValue);\n this.addChangeListener(this._minValue, (ev, value) => {\n if (this._range && this._value && value && !isNaN(parseFloat(value))) {\n const multiplier = 1 / parseFloat(this._formatDisplayValueFunction(1));\n const newValue = multiplier * parseFloat(value);\n if (typeof this._value === \"object\") {\n this._value = {\n min: Math.max(Math.min(newValue, this._value.max), this._range.min),\n max: this._value.max\n };\n }\n else if (typeof this._value === \"number\") {\n this._value = {\n min: Math.max(Math.min(newValue, this._range.max), this._range.min),\n max: this._range.max,\n };\n }\n this.dispatchChange(true);\n this.requestUpdate();\n }\n });\n }\n }\n\n private inputRegex = /[0-9].,+/;\n\n checkInputFormat(ev: InputEvent) {\n if (ev.data && !this.inputRegex.test(ev.data)) {\n ev.preventDefault();\n }\n }\n\n setInputValue(element: HTMLElement, value: string) {\n if (element instanceof HTMLInputElement || element instanceof InputComponent) {\n element.value = value;\n }\n else {\n element.textContent = value;\n }\n }\n\n addChangeListener(element: HTMLElement, listener: (ev: InputEvent, value: string) => void) {\n if (element instanceof HTMLInputElement) {\n element.addEventListener(\"change\", (e) => listener(e as InputEvent, element.value));\n }\n else if (element instanceof InputComponent) {\n element.onBlurChange = (ev, component) => {\n listener(ev as InputEvent, element.value);\n };\n }\n }\n\n // endregion\n\n // region Listener\n\n private onMinSliderPointerDown(e: PointerEvent) {\n this._currentActionElement = this._minSlider;\n this._maxPosition = { x: -1, y: -1, height: 0, width: 0 };\n this._minPosition = { x: -1, y: -1, height: 0, width: 0 };\n if (this._maxSlider) {\n const style = window.getComputedStyle(this._maxSlider);\n this._maxPosition = {\n width: +style.width.replace(\"px\", \"\"),\n height: +style.height.replace(\"px\", \"\"),\n x: +style.left.replace(\"px\", \"\"),\n y: +style.top.replace(\"px\", \"\"),\n };\n this._maxPosition.x = this._maxPosition.x < 0 ? 0 : this._maxPosition.x;\n this._maxPosition.y = this._maxPosition.y < 0 ? 0 : this._maxPosition.y;\n }\n const pos = this.getPointerPosition(e);\n this.handlePointerDown(e, pos);\n WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener(\"pointerup\", this.globalPointerUp, {\n passive: true,\n capture: true\n });\n document.addEventListener(\"pointerup\", this.handlePointerUp, false);\n document.addEventListener(\"pointermove\", this.handlePointerMove, false);\n }\n\n private onMaxSliderPointerDown(e: PointerEvent) {\n this._currentActionElement = this._maxSlider;\n this._maxPosition = { x: -1, y: -1, height: 0, width: 0 };\n this._minPosition = { x: -1, y: -1, height: 0, width: 0 };\n if (this._minSlider) {\n const style = window.getComputedStyle(this._minSlider);\n this._minPosition = {\n width: +style.width.replace(\"px\", \"\"),\n height: +style.height.replace(\"px\", \"\"),\n x: +style.left.replace(\"px\", \"\"),\n y: +style.top.replace(\"px\", \"\"),\n };\n if (this._minPosition.x < 0) {\n this._minPosition.width = (this._minPosition.x * -1);\n this._minPosition.x = 0;\n }\n if (this._minPosition.y < 0) {\n this._minPosition.height = (this._minPosition.y * -1);\n this._minPosition.y = 0;\n }\n }\n const pos = this.getPointerPosition(e);\n this.handlePointerDown(e, pos);\n WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener(\"pointerup\", this.globalPointerUp, {\n passive: true,\n capture: true\n });\n document.addEventListener(\"pointerup\", this.handlePointerUp, false);\n document.addEventListener(\"pointermove\", this.handlePointerMove, false);\n }\n\n private onSliderLinePointerDown(e: PointerEvent) {\n const mousePosition = this.getPointerPosition(e);\n const boundingRect = this.getBoundingClientRect();\n\n let isUsingMinSlider = true;\n this._currentActionElement = this._minSlider;\n this._maxPosition = { x: -1, y: -1, height: 0, width: 0 };\n this._minPosition = { x: -1, y: -1, height: 0, width: 0 };\n\n if (this._minSlider && this._maxSlider) {\n let clickRelative = mousePosition.x - boundingRect.x;\n let offsetToMinSlider = Math.abs(clickRelative - this._minSlider.offsetLeft);\n let offsetToMaxSlider = Math.abs(clickRelative - this._maxSlider.offsetLeft);\n\n if (this._direction && this._direction == 1) {\n clickRelative = mousePosition.y - boundingRect.y;\n offsetToMinSlider = Math.abs(clickRelative - this._minSlider.offsetTop);\n offsetToMaxSlider = Math.abs(clickRelative - this._maxSlider.offsetTop);\n }\n\n if (offsetToMaxSlider > offsetToMinSlider) {\n isUsingMinSlider = true;\n this._currentActionElement = this._minSlider;\n }\n else {\n isUsingMinSlider = false;\n this._currentActionElement = this._maxSlider;\n }\n }\n if (isUsingMinSlider) {\n if (this._maxSlider) {\n const style = window.getComputedStyle(this._maxSlider);\n this._maxPosition = {\n width: +style.width.replace(\"px\", \"\"),\n height: +style.height.replace(\"px\", \"\"),\n x: +style.left.replace(\"px\", \"\"),\n y: +style.top.replace(\"px\", \"\"),\n };\n this._maxPosition.x = this._maxPosition.x < 0 ? 0 : this._maxPosition.x;\n this._maxPosition.y = this._maxPosition.y < 0 ? 0 : this._maxPosition.y;\n }\n }\n else {\n if (this._minSlider) {\n const style = window.getComputedStyle(this._minSlider);\n this._minPosition = {\n width: +style.width.replace(\"px\", \"\"),\n height: +style.height.replace(\"px\", \"\"),\n x: +style.left.replace(\"px\", \"\"),\n y: +style.top.replace(\"px\", \"\"),\n };\n if (this._minPosition.x < 0) {\n this._minPosition.width = (this._minPosition.x * -1);\n this._minPosition.x = 0;\n }\n if (this._minPosition.y < 0) {\n this._minPosition.height = (this._minPosition.y * -1);\n this._minPosition.y = 0;\n }\n }\n }\n this.handlePointerClick(e, mousePosition);\n WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener(\"pointerup\", this.globalPointerUp, {\n passive: true,\n capture: true\n });\n document.addEventListener(\"pointerup\", this.handlePointerUp, false);\n }\n\n // endregion\n\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./validating-input.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { BaseInput } from \"../base/base-input\";\nimport { InputComponent } from \"../input/input.component\";\n\n@customElement(\"fv-validating-input\")\nexport class ValidatingInputComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n\n // input default\n @property({ reflect: true, type: String })\n name = \"\";\n @property({ reflect: true, type: String })\n value = \"\";\n @property({ reflect: true, type: String })\n placeholder = \"\";\n @property()\n onChange = (e: Event, component: ValidatingInputComponent): void => {\n //empty\n };\n\n // validation - behaviour additional\n @property({ reflect: true, type: Boolean, attribute: \"required\" })\n required = false;\n @property({ type: String, reflect: true, attribute: \"empty-information-text\" })\n emptyInformationText: string | undefined = undefined;\n @property({ type: String, reflect: true, attribute: \"invalid-information-text\" })\n invalidInformationText: string | undefined = undefined;\n\n // validation\n @property({ type: String, reflect: true, attribute: \"input-validation\" })\n inputValidation: string | undefined = undefined;\n @property({ type: String, reflect: true, attribute: \"result-validation\" })\n resultValidation: string | undefined = undefined;\n\n @query(\"fv-input\")\n inputElement: InputComponent | undefined;\n @query(\".invalid-information-container\")\n invalidInformationContainer: HTMLDivElement | undefined;\n @query(\".empty-information-container\")\n emptyInformationContainer: HTMLDivElement | undefined;\n\n\n private set valid(value: boolean) {\n if (value) {\n this.classList.remove(\"invalid\");\n }\n else {\n this.classList.add(\"invalid\");\n }\n }\n\n public get valid() {\n if (this.required) {\n return this.value.length > 0 && this.classList.contains(\"invalid\") == false;\n }\n return this.classList.contains(\"invalid\") == false;\n }\n\n constructor() {\n super();\n\n this.addEventListener(\"blur\", () => {\n if (this.resultValidation && this.resultValidation.length > 0) {\n const resultValidation = new RegExp(this.resultValidation);\n if (resultValidation) {\n if (this.value.length < 1) {\n if (this.required) {\n this.invalidInformationContainer?.classList.add(\"hidden\");\n this.emptyInformationContainer?.classList.remove(\"hidden\");\n }\n this.valid = this.required == false;\n }\n else {\n if (this.required) {\n this.invalidInformationContainer?.classList.remove(\"hidden\");\n this.emptyInformationContainer?.classList.add(\"hidden\");\n }\n this.valid = resultValidation.test(this.value);\n }\n }\n }\n else {\n this.valid = this.value.length > 0;\n }\n\n this.dispatchEvent(new CustomEvent(\"validating-input-updated\", {}));\n });\n }\n\n private OnChange(e: Event) {\n this.valid = true;\n\n const target = (e.target as BaseInput<HTMLInputElement>);\n const possibleValue = target.value;\n // handle inputValidation\n if (this.inputValidation && this.inputValidation.length > 0) {\n const inputValidation = new RegExp(this.inputValidation);\n if (inputValidation) {\n let valid = false;\n if (possibleValue.length < 1) {\n valid = true;\n }\n else {\n valid = inputValidation.test(possibleValue);\n }\n if (valid == false) {\n target.value = this.value;\n const input = target._inputElement;\n if (input != undefined) {\n input.value = this.value;\n }\n return; // do not allow input...\n }\n }\n }\n this.value = possibleValue;\n this.onChange(e, this);\n this.dispatchEvent(new Event(\"change\"));\n this.dispatchEvent(new CustomEvent(\"validating-input-updated\", {}));\n }\n\n render(): TemplateResult<1> {\n return html`\n <div class=\"container\">\n <fv-input name=\"${this.name}\" .value=\"${this.value}\"\n placeholder=\"${this.placeholder + (this.required ? \"*\" : \"\")}\" @change=\"${this.OnChange}\">\n <slot></slot>\n </fv-input>\n ${this.invalidInformationText && this.invalidInformationText.length > 0 ? html`\n <div class=\"invalid-information-container\">${this.invalidInformationText}</div>` : html``}\n ${this.emptyInformationText && this.emptyInformationText.length > 0 ? html`\n <div class=\"empty-information-container\">${this.emptyInformationText}</div>` : html``}\n </div>\n `;\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n if (this.inputElement) {\n const styleSheet = window.getComputedStyle(this.inputElement);\n this.style.setProperty(\"--internal-auto-input-outline-size\", styleSheet.outlineWidth);\n }\n }\n\n focus(options?: FocusOptions): void {\n this.inputElement?.focus(options);\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./text-box.component.sass?inline\";\r\nimport { customElement, query } from \"lit/decorators.js\";\r\nimport { BaseInput } from \"../input/base/base-input\";\r\n\r\n@customElement(\"fv-text-box\")\r\nexport class TextBoxComponent extends BaseInput<HTMLTextAreaElement> {\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n declare _inputElement? : HTMLTextAreaElement;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n render(): TemplateResult<1> {\r\n return html`\r\n <textarea class=\"base-input\" @change=\"${this.OnBlurChange}\" @input=${this.OnChange} ?readonly=${this.readonly}\r\n .value=\"${this.value}\" placeholder=\"${this.placeholder}\" autocomplete=\"${this.autocomplete}\"></textarea>\r\n <slot></slot>\r\n `;\r\n }\r\n\r\n getInputElement(): HTMLTextAreaElement | undefined {\r\n return this._inputElement;\r\n }\r\n\r\n}\r\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./list-box.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-list-box\")\nexport class ListBoxComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property()\n list = [];\n\n @property()\n OnScroll = (e: Event): void => {\n const scrollDiv = (e.currentTarget as HTMLDivElement);\n this.dispatchEvent(new CustomEvent(\"scroll\", {\n detail: {\n distanceToBottom: (scrollDiv.scrollHeight - this.clientHeight) - scrollDiv.scrollTop,\n clientHeight: this.clientHeight,\n containerHeight: scrollDiv.clientHeight,\n scrollHeight: scrollDiv.scrollHeight,\n scrollTop: scrollDiv.scrollTop\n }\n }));\n //Emtpy\n }\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return html`\n <div @scroll=${this.OnScroll}>\n ${this.list.map((item, index) => \n html`\n ${item}\n `\n )}\n <slot></slot>\n </div>\n `;\n }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./icon.component.sass?inline\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\n@customElement(\"fv-icon\")\nexport class IconComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"icon\" })\n public icon = \"\";\n @property({ type: String, reflect: true, attribute: \"src\" })\n public src = \"\";\n\n constructor() {\n super();\n }\n\n private get srcUTF8(): string {\n if (this.src && this.src.length > 0) {\n return this.src.replace(/&#([0-9]+);/g, function (b) {\n return String.fromCodePoint(parseInt(b.slice(2, -1)));\n });\n }\n return this.src;\n }\n\n private get imageContent() {\n const overrideImage = StyleHelper.getVar(this, \"--icon-image\");\n if (overrideImage) {\n return html`\n <div class=\"icon img\" style=\"background-image: url('${overrideImage}');\"></div>\n `;\n }\n if (this.icon.length > 0) {\n return html`\n <fv-label class=\"icon ${this.icon}\"></fv-label>\n `;\n }\n return html`\n <div class=\"icon img\" style=\"background-image: url('${this.srcUTF8}');\"></div>\n `;\n }\n\n protected render(): TemplateResult<1> {\n return html`\n ${this.imageContent}\n <slot></slot>\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./dealer.component.sass?inline\";\r\nimport defaultStyle from \"../common.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport { classMap } from \"lit/directives/class-map.js\";\r\nimport \"../standard/button/button.component\";\r\nimport \"../standard/label/label.component\";\r\nimport { BaseElement } from \"../standard/base/base.component\";\r\n\r\n@customElement(\"fv-dealer\")\r\nexport class DealerComponent extends BaseElement {\r\n\r\n static formAccosiated = true;\r\n\r\n private internals: ElementInternals;\r\n\r\n static styles = [\r\n super.styles || [],\r\n css`\r\n ${unsafeCSS(style)}\r\n ${unsafeCSS(defaultStyle)}\r\n `\r\n ];\r\n\r\n @property({ type: Boolean, reflect: true })\r\n selected = \"\"\r\n\r\n @property({ type: String, reflect: true })\r\n name = \"\"\r\n\r\n @property({ type: String, reflect: true })\r\n address = \"\"\r\n\r\n @property({ type: Boolean, reflect: true })\r\n disabled = false;\r\n\r\n @property({ type: String, reflect: true })\r\n type: string = \"button\";\r\n\r\n @property()\r\n onClick = (e: Event, component: DealerComponent): void => {\r\n //Empty\r\n };\r\n\r\n private OnClick(e: Event) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n const form = this.closest(\"form\");\r\n if(form) form.requestSubmit();\r\n this.onClick(e, this);\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.internals = this.attachInternals()\r\n }\r\n render(): TemplateResult<1> {\r\n const classes = {\r\n disabled: this.disabled,\r\n bordered: !this.selected\r\n };\r\n return html`\r\n <div class=\"container column fluid\">\r\n <fv-label class=\"title space after\">${this.name}</fv-label>\r\n <fv-label class=\"space after\">${this.address}</fv-label>\r\n </div>\r\n <div class=\"container row reverse\">\r\n <fv-button @click=${this.OnClick} type=\"${this.type}\" class=${classMap(classes)}><slot>Anfrage stellen</slot></fv-button>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { css, html, TemplateResult, CSSResultGroup, unsafeCSS } from \"lit\";\nimport style from \"./modal.step.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-modal-step\")\nexport class ModalStepComponent extends BaseElement {\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n \n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n render(): TemplateResult<1> {\n return html`<span @click=\"${this.changeStep}\"><slot></slot></span>`;\n }\n\n changeStep(): void {\n if (this.id) {\n if (this.parentNode) {\n const step = this.parentNode.querySelector(\"fv-modal-step[active]\") as ModalStepComponent;\n if (step) step.active = false;\n this.active = true;\n const activeStep = this.parentNode.querySelector(\".active\");\n if (activeStep) activeStep.classList.remove(\"active\");\n const stepContent = this.parentNode.querySelector(\"[for=\" + this.id + \"]\");\n if (stepContent) stepContent.classList.add(\"active\");\n }\n }\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./message.component.sass?inline\";\r\nimport defaultStyle from \"../../../common.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport \"../../button/button.component\";\r\nimport \"../../label/label.component\";\r\nimport { BaseElement } from \"../../base/base.component\";\r\nimport { event, EventRef } from \"@dh-software/lit-extensions\";\r\nimport {LocaleService} from \"@dh-software/webui-api\";\r\n\r\n\r\n\r\n@customElement(\"fv-message\")\r\nexport class MessageComponent extends BaseElement {\r\n static styles = [\r\n super.styles || [],\r\n css`\r\n ${unsafeCSS(style)}\r\n ${unsafeCSS(defaultStyle)}\r\n `\r\n ];\r\n\r\n @event({bubbles: true, composed: true}, \"back-to-start\")\r\n private backToStartEvent!: EventRef<never>\r\n\r\n @property({ type: Boolean, reflect: true })\r\n active = false;\r\n\r\n @property({ type: String })\r\n message = \"fv.message.message\";\r\n\r\n @property({ type: String })\r\n title = \"fv.message.title\";\r\n\r\n @property({ type: String, attribute: \"button-title\" })\r\n buttonTitle = \"20245\";\r\n\r\n @property({type: Number})\r\n await = 0;\r\n\r\n @property()\r\n onClick = (e: Event): void => { /* Empty */ };\r\n\r\n private async OnClick(e: Event) {\r\n this.backToStartEvent.dispatch();\r\n setTimeout( () => {\r\n this.onClick(e);\r\n }, this.await)\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.baseOptions.registerLocalesModel = true;\r\n }\r\n\r\n render(): TemplateResult<1> {\r\n return html`\r\n <div class=\"container column\">\r\n <fv-label class=\"space after\" class=\"header\">\r\n <slot style = \"font-weight: 700; font-size: 20px;\" name=\"title\">${LocaleService.translate(this.title, this.title)}</slot>\r\n </fv-label>\r\n <fv-label class=\"space after\">\r\n <slot style=\"font-size: 15px; color: #4a4a4a;\" name=\"message\">\r\n ${LocaleService.translate(this.message, this.message)}\r\n </slot>\r\n </fv-label>\r\n </div>\r\n <div class=\"container row reverse\">\r\n <fv-button @click=${this.OnClick}><slot name=\"button-title\">${LocaleService.translate(this.buttonTitle, this.buttonTitle)}</slot></fv-button>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { css, html, unsafeCSS } from \"lit\";\nimport style from \"./search-dealer.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport \"../dealer.component\";\nimport \"../../standard/button/button.component\";\nimport \"../../standard/input/input/input.component\";\nimport \"../../standard/label/label.component\";\nimport \"../../standard/list/list-box.component\";\n\nimport { DealerComponent } from \"../dealer.component\";\nimport { RequestComponent } from \"../request\";\nimport { BaseElement } from \"../../standard/base/base.component\";\n\n@customElement(\"fv-search-dealer\")\nexport class SearchDealerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true })\n active = true;\n\n constructor() {\n super();\n }\n\n private onClick (e: Event, component: DealerComponent) {\n const requestComponent = this.parentNode ? this.parentNode.querySelector(\"fv-request\") as RequestComponent : null;\n if (requestComponent) {\n this.active = false;\n requestComponent.name = component.name;\n requestComponent.address = component.address;\n requestComponent.active = true;\n }\n }\n\n render() {\n return html`\n <div class=\"container column\">\n <fv-label class=\"space after\">Ihre Postleitzahl</fv-label>\n <fv-input placeholder=\"12345\">\n <fv-button>Suchen</fv-button>\n </fv-input>\n </div>\n <fv-list-box>\n <fv-dealer name=\"Händlername 1\"\n address=\"Musterstraße 1, 12345 Musterstadt\"></fv-dealer>\n <fv-dealer name=\"Händlername 2\"\n address=\"Musterstraße 1, 12345 Musterstadt\"></fv-dealer>\n <fv-dealer name=\"Händlername 3\"\n address=\"Musterstraße 1, 12345 Musterstadt\"></fv-dealer>\n <fv-dealer name=\"Händlername 4\"\n address=\"Musterstraße 1, 12345 Musterstadt\"></fv-dealer>\n </fv-list-box>\n `;\n }\n\n firstUpdated() {\n if (this.shadowRoot) {\n const dealerComponents = this.shadowRoot.querySelectorAll(\"fv-dealer\");\n dealerComponents.forEach((value) => {\n const dealerComponent = value as DealerComponent;\n dealerComponent.onClick = (e, component) => this.onClick(e, component);\n });\n }\n }\n}\n","import {css, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./checkbox.component.sass?inline\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport \"../label/label.component\";\nimport {BaseElement} from \"../base/base.component\";\nimport {event, EventRef} from \"@dh-software/lit-extensions\"\n\nimport {CheckboxVariantType, DhCheckbox} from \"@dh-software/dh-components\"\nimport {EventHandlerEvent} from \"../../../models/event-handler/event.handler.model\";\nimport {EventHandlerService} from \"../../../utils/event.handler.service\";\n\nexport interface CheckboxEvents {\n on?: EventHandlerEvent[]\n off?: EventHandlerEvent[]\n}\n\n@customElement(\"fv-checkbox\")\nexport class CheckboxComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({reflect: true, type: String})\n name = \"\"\n\n @property({reflect: true, type: Boolean})\n checked = false\n\n @property({type: String, reflect: true})\n variant: CheckboxVariantType = \"checkbox\";\n\n @property({type: Object, reflect: true})\n events: CheckboxEvents = {};\n\n @event({bubbles: false, composed: true})\n changeEvent!: EventRef<boolean>\n\n @query(\"dh-checkbox\")\n private checkbox!: DhCheckbox;\n\n @property()\n onChange = (e: Event, component: CheckboxComponent): void => {\n //empty\n };\n\n protected updated(changedProperties: PropertyValues<this>) {\n if (changedProperties.has(\"checked\")) {\n this.changeEvent.dispatch(this.checked)\n this.onChange(new Event(\"change\"), this);\n const events = this.events[this.checked ? \"on\" : \"off\"] ?? [];\n EventHandlerService.dispatchEventList(events, false);\n }\n super.updated(changedProperties);\n }\n\n protected render(): TemplateResult<1> {\n return html`\n <fv-label>\n <slot @slotchange=\"${this.onSlotChanged}\"></slot>\n </fv-label>\n <dh-checkbox variant=\"${this.variant}\" ?checked=\"${this.checked}\"\n @isChange=\"${({detail}: CustomEvent<boolean>) => this.checked = detail}\"></dh-checkbox>\n `;\n }\n\n onSlotChanged({target}: Event) {\n if (target instanceof HTMLSlotElement) {\n target.assignedElements().forEach((node) => {\n node.addEventListener(\"click\", (ev) => {\n if (!(ev.target instanceof HTMLLinkElement)) {\n this.checked = !this.checked\n }\n });\n })\n }\n }\n}\n","import{unsafeCSS as c,LitElement as h,html as a}from\"lit\";import{state as d,property as g,customElement as b}from\"lit/decorators.js\";const x=`:host {\n display: flex;\n justify-items: center;\n}\n\n.header-label {\n padding: 12px;\n --label-font-weight:bold;\n}\n\n.configuration-container {\n justify-items: center;\n border-radius: 0.9rem;\n width: fit-content;\n height: auto;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n border: solid #EEEEEE 2px;\n background: #f0f0f0;\n display: grid;\n}\n.configuration-container .reset-conf {\n width: fit-content;\n padding: 5px;\n border: none;\n border-radius: 8px;\n font-size: 12px;\n background-color: red;\n cursor: pointer;\n color: white;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n margin: 7px;\n}\n\n.field-input {\n width: 240px;\n}\n\n.row-option-container {\n display: flex;\n justify-content: center;\n padding: 2px 0;\n column-gap: 10px;\n}\n\n.buttons-container {\n display: flex;\n gap: 10px;\n}\n\n.add-item-button {\n width: 55px;\n padding: 2px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n}\n\n.delete-item-button {\n width: 55px;\n padding: 2px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n cursor: pointer;\n background-color: red;\n color: white;\n transition: all 0.2s ease;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n}\n\n.add-group-button {\n width: 55px;\n padding: 2px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n background-color: #c5c5c5;\n}\n\n.delete-group-button {\n width: 100px;\n padding: 2px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n background-color: #f7931e;\n color: white;\n}\n\n.add-group-button {\n background-color: #c5c5c5;\n color: white;\n}\n.add-group-button:hover {\n background-color: #aaaaaa;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n transform: translateY(-1px);\n}\n\n.delete-item-button:hover {\n background-color: #c70404;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n transform: translateY(-1px);\n}\n\n.delete-group-button:hover {\n background-color: #f7931e;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n transform: translateY(-1px);\n}\n\n.row {\n padding: 5px;\n margin: 9px;\n display: flex;\n gap: 10px;\n background: #e6e6e6;\n border: none;\n border-radius: 7px;\n justify-content: center;\n}\n\n.row-item {\n display: grid;\n gap: 10px;\n}\n\n.buttons-container {\n display: flex;\n justify-content: center;\n}\n\ndialog {\n border: none;\n border-radius: 10px;\n padding: 20px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n width: 320px;\n}\n\nform {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.dialog-buttons {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 12px;\n}\n\n.configuraion-container {\n margin: 10px;\n}\n\n.configuration-group {\n border: none;\n padding: 5px;\n background: #fffdfd;\n border-radius: 4px;\n margin: 5px;\n}`;var m=Object.defineProperty,f=Object.getOwnPropertyDescriptor,l=(e,t,n,o)=>{for(var r=o>1?void 0:o?f(t,n):t,s=e.length-1,p;s>=0;s--)(p=e[s])&&(r=(o?p(t,n,r):p(r))||r);return o&&r&&m(t,n,r),r};const u={entries:[[{name:\"name\",i18n:\"20322\",placeholder:\"Vorname*\",required:!0,autocomplete:\"given-name\"},{name:\"surname\",i18n:\"20323\",placeholder:\"Nachname*\",required:!0,autocomplete:\"family-name\"}],[{name:\"phone\",i18n:\"20381\",placeholder:\"Telefon*\",required:!0,autocomplete:\"tel\"},{name:\"email\",i18n:\"fv.email.homeviewer.send_request_customer.email\",placeholder:\"E-Mail*\",required:!0,autocomplete:\"email\"}],[{name:\"customerNo\",i18n:\"1610\",placeholder:\"Kundennummer\",autocomplete:\"section-customerNo\"},{name:\"adress\",i18n:\"20228\",placeholder:\"Adresse\",autocomplete:\"street-address\"}],[{name:\"companyName\",i18n:\"25024\",placeholder:\"Firmenname\",autocomplete:\"organization\"},{name:\"postcode\",i18n:\"25026\",placeholder:\"Postleitzahl\",autocomplete:\"postal-code\"}],[{name:\"city\",i18n:\"aiImageGen.city\",autocomplete:\"address-level2\",placeholder:\"Stadt\"}],[{inputTag:\"fv-text-box\",name:\"message\",i18n:\"60099\",placeholder:\"Ihre Nachricht\",autocomplete:\"off\"}]]};let i=class extends h{constructor(){super(...arguments),this.showDialog=!1,this.currentRowIndex=null,this.currentFieldInsertIndex=null,this.showInputTagField=!0,this.propertyData={entries:[]}}renderField(e,t,n){return a`\n <div class=\"row-item\">\n <div>${e.placeholder}</div>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n ${this.decideInputType(e.inputTag)}\n <button\n class=\"add-item-button\"\n @click=${()=>this.openDialog(t,n+1,!1)}\n >\n Add\n </button>\n </div>\n <div class=\"buttons-container\">\n <button\n class=\"delete-item-button\"\n @click=${()=>this.deleteRowItem(t,n)}\n >\n Delete\n </button>\n <label style=\"display: flex; align-items: center; gap: 4px; font-size: 13px;\">\n <input\n type=\"checkbox\"\n .checked=${e.required||!1}\n @change=${o=>this.toggleRequired(o,t,n)}\n />\n Required\n </label>\n </div>\n </div>\n `}set PropertyData(e){this.propertyData=e,this.requestUpdate()}setDefaultPropData(){this.propertyData=structuredClone(u),console.log(this.propertyData),this.requestUpdate()}decideInputType(e){return e===\"fv-text-box\"?a`<input style=\"width:300px; height:100px;\"></input>`:a`\n <dh-input></dh-input>`}addNewGroup(e){this.propertyData.entries.splice(e,0,[]),this.currentRowIndex=e,this.showInputTagField=!0,this.requestUpdate(),this.openDialog(this.currentRowIndex)}deleteGroup(e){this.propertyData.entries.splice(e,1),this.requestUpdate()}toggleRequired(e,t,n){const o=e.target.checked;this.propertyData.entries[t][n].required=o,this.requestUpdate()}renderGroups(){return this.propertyData.entries.length===0?a`\n <div style=\"display:flex; justify-items:center;\">\n <button class=\"add-group-button\" @click=${()=>this.addNewGroup(0)}> +</button>\n </div>\n `:a`${this.propertyData.entries.map((e,t)=>this.renderRow(e,t))}`}renderRow(e,t){return e.length===0?a`\n <div class=\"configuration-group\">\n <div class=\"row\">\n <button class=\"add-item-button\" @click=${()=>this.openDialog(t,0,!1)}>Add</button>\n </div>\n <div class=\"row-option-container\">\n <button class=\"add-group-button\" @click=${()=>this.addNewGroup(t+1)}> +</button>\n <button class=\"delete-group-button\" @click=${()=>this.deleteGroup(t)}>Delete group\n </button>\n </div>\n </div>\n `:a`\n <div class=\"configuration-group\">\n <div class=\"row\">\n ${e.map((n,o)=>this.renderField(n,t,o))}\n </div>\n <div class=\"row-option-container\">\n <button class=\"add-group-button\" @click=${()=>this.addNewGroup(t+1)}> +</button>\n <button class=\"delete-group-button\" @click=${()=>this.deleteGroup(t)}>Delete group\n </button>\n </div>\n </div>\n `}openDialog(e,t=null,n=!0){this.currentRowIndex=e,this.currentFieldInsertIndex=t,this.showDialog=!0,this.showInputTagField=n,this.renderRoot.querySelector(\"dialog\").showModal()}closeDialog(){this.renderRoot.querySelector(\"dialog\").close(),this.showDialog=!1}handleSubmit(e){e.preventDefault();const t=e.target,n=Object.fromEntries(new FormData(t).entries()),o={name:String(n.name||\"\"),placeholder:n.placeholder?String(n.placeholder):void 0,i18n:n.i18n?String(n.i18n):void 0,required:n.required===\"true\"};let r;if(n.inputTag?n.inputTag===\"input\"?r=o:r={...o,...this.showInputTagField?{inputTag:String(n.inputTag)}:{}}:r=o,n.autocomplete&&String(n.autocomplete).length>0&&(r={...o,autocomplete:String(n.autocomplete)}),this.currentRowIndex!=null){const s=this.currentFieldInsertIndex??this.propertyData.entries[this.currentRowIndex].length;this.propertyData.entries[this.currentRowIndex].splice(s,0,r),this.requestUpdate()}t.reset(),this.closeDialog()}deleteRowItem(e,t){this.propertyData.entries[e].splice(t,1),this.requestUpdate()}render(){return a`\n <div class=\"configuration-container\">\n <fv-label class=\"header-label\">Request-Configurator-Json</fv-label>\n ${this.renderGroups()}\n <div>\n <button @click=\"${this.setDefaultPropData}\" class=\"reset-conf\">Reset Configuration</button>\n </div>\n </div>\n\n <dialog>\n <form @submit=${this.handleSubmit}>\n <label>\n Name:\n <input name=\"name\" required/>\n </label>\n <label>\n i18n:\n <input name=\"i18n\" required/>\n </label>\n <label>\n Placeholder:\n <input name=\"placeholder\" required/>\n </label>\n <label>\n Required:\n <select name=\"required\">\n <option value=\"true\">true</option>\n <option value=\"false\" selected>false</option>\n </select>\n </label>\n <label>\n Autocomplete id:\n <input name=\"autocomplete\" required/>\n <a href=\"https://developer.mozilla.org/de/docs/Web/HTML/Attributes/autocomplete\"\n target=\"_blank\"\n style=\"\n\t\t\t\t\t\tdisplay:inline-block;\n\t\t\t\t\t\tmargin-left:6px;\n\t\t\t\t\t\tcursor:pointer;\n\t\t\t\t\t\tfont-weight:bold;\n\t\t\t\t\t\tbackground:#ddd;\n\t\t\t\t\t\tborder-radius:50%;\n\t\t\t\t\t\tpadding:0 6px;\n\t\t\t\t\t\ttext-decoration:none;\n\t\t\t\t\t\tcolor:black;\n\t\t\t\t\t\t\"\n title=\"Alle autocomplete IDs auf Deutsch ansehen\">\n ?\n </a>\n\n </label>\n\n ${this.showInputTagField?a`\n <label>\n InputTag:\n <select name=\"inputTag\" required>\n <option value=\"input\" selected>Input</option>\n <option value=\"fv-text-box\">fv-text-box</option>\n </select>\n </label>`:null}\n\n <div class=\"dialog-buttons\">\n <button type=\"button\" class=\"cancel-btn\" @click=${this.closeDialog}>Cancel</button>\n <button type=\"submit\" class=\"save-btn\">Save</button>\n </div>\n </form>\n </dialog>\n `}};i.styles=c(x),l([d()],i.prototype,\"showDialog\",2),l([d()],i.prototype,\"currentRowIndex\",2),l([d()],i.prototype,\"currentFieldInsertIndex\",2),l([d()],i.prototype,\"showInputTagField\",2),l([g({type:Array})],i.prototype,\"propertyData\",2),i=l([b(\"request-configuration-component\")],i);export{u as DEFAULT_DEFINES,i as RequestConfigurationComponent};\n","import {css, html, unsafeCSS} from \"lit\";\nimport style from \"./request.component.sass?inline\";\nimport {customElement, property, queryAll} from \"lit/decorators.js\";\nimport {ifDefined} from \"lit/directives/if-defined.js\";\nimport \"../dealer.component\";\nimport \"../../standard/modal/message/message.component\";\nimport \"../search-dealer/search-dealer.component\";\nimport \"../../standard/input/input/input.component\";\nimport \"../../standard/button/button.component\";\nimport \"../../standard/label/label.component\";\nimport \"../../standard/text-box/text-box.component\";\nimport \"../../standard/checkbox/checkbox.component\";\n\nimport {DealerComponent} from \"../dealer.component\";\nimport {MessageComponent} from \"../../standard/modal/message/message.component\";\nimport {SearchDealerComponent} from \"../search-dealer/search-dealer.component\";\nimport {InputComponent} from \"../../standard/input/input/input.component\";\nimport {CheckboxComponent} from \"../../standard/checkbox/checkbox.component\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {BaseInput} from \"../../standard/input/base/base-input\";\nimport {CloudIdService} from \"../../../utils/cloud-id.service\";\nimport {CommunicationMessageService, LocaleService, MailerService, RequestService} from \"@dh-software/webui-api\";\nimport {ConstructionService} from \"@dh-software/webui-configuration-parser\";\nimport {FormDefine, InputFieldDefine, IStore, IStoreTree} from \"@dh-software/webui-types\"\nimport {LabeledInputComponent} from \"../../standard/input\";\nimport { DEFAULT_DEFINES } from \"@dh-software/request-configurator-ui\";\n\n@customElement(\"fv-request\")\nexport class RequestComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`\n ${unsafeCSS(style)}\n `\n ];\n\n\n @queryAll(\"fv-labeled-input\")\n _inputBoxes?: NodeListOf<LabeledInputComponent<any>>;\n\n @queryAll(\"fv-labeled-input[required]\")\n _requiredInputBoxes?: NodeListOf<LabeledInputComponent<any>>;\n\n get inputBoxes() {\n return Array.from(this._inputBoxes || []);\n }\n\n get requiredInputBoxes() {\n return Array.from(this._requiredInputBoxes || []);\n }\n\n @property({type: Array})\n propertyData = DEFAULT_DEFINES;\n\n @property({type: Boolean, reflect: true})\n active = false;\n\n @property({type: String})\n name = \"\";\n\n @property({type: String})\n address = \"\";\n\n @property({type: String, reflect: true})\n privacyLink = \"#\";\n\n @property({type: String, reflect: true})\n templateName = \"request-mail\"\n\n @property({type: Boolean, reflect: true})\n sendCopy = false;\n\n @property()\n onSubmit = async (e: Event, nameValueList: { [key: string]: string }): Promise<void> => {\n const email = nameValueList[\"email\"] || undefined;\n if (!email) {\n return;\n }\n const cloudId = await CloudIdService.getCloudId();\n nameValueList[\"cloudId\"] = cloudId;\n await RequestService.Initialized;\n const customMailService = ConstructionService.CustomMailService || undefined;\n MailerService.sendConfiguredMail({\n name: this.templateName,\n values: Object.entries(nameValueList).map(x => {\n return {key: x[0], value: x[1]}\n }),\n cloudIds: [cloudId],\n customMailService: customMailService ? customMailService : undefined,\n to: this.sendCopy ? email : \"\",\n buyingGroup: window.g_configuration.furnplan_article_url_configurator_verband,\n language: LocaleService.language\n });\n }\n\n //Workaround autosave Chrome\n // private fillRequiredInputs(id: string): void {\n // const input = this.renderRoot.querySelector(`input#${id}`) as HTMLInputElement | null;\n // if (input) {\n // input.value = \"Ersetzen Sie durch Ihren eigenen Wert\";\n // }\n // }\n\n private renderRows() {\n return html`\n ${this.propertyData?.entries?.map(row => html`\n <div class=\"row\">\n ${row.map(field => this.renderField(field))}\n </div>\n `\n )} \n `;\n }\n\n private renderField(field: InputFieldDefine) {\n return html`\n <fv-labeled-input\n name=${field.name}\n textid=${field.i18n}\n placeholder=${field.placeholder}\n ?required=${field.required ?? false}\n inputTag=${ifDefined(field.inputTag)}\n autocomplete=\"${field.autocomplete && field.autocomplete.length > 0 ? field.autocomplete : field.name}\">\n </fv-labeled-input>\n `;\n }\n\n onMessageClickDefault() {\n const dealerComponent = this.renderRoot.querySelector(\"fv-dealer\") as DealerComponent;\n const searchDealerComponent = this.parentNode ? this.parentNode.querySelector(\"fv-search-dealer\") as SearchDealerComponent : null;\n const messageComponent = this.parentNode ? this.parentNode.querySelector(\"fv-message\") as MessageComponent : null;\n const divElements = this.parentNode ? this.parentNode.querySelectorAll(\"div\") : null;\n const submitButton = this.renderRoot.querySelector(\"fv-button\") as DealerComponent;\n\n if (messageComponent) {\n if (divElements) {\n divElements.forEach((value) => {\n value.classList.remove(\"hidden\");\n });\n }\n\n this.reset();\n messageComponent.active = false;\n\n if (dealerComponent && searchDealerComponent) {\n searchDealerComponent.active = true;\n } else {\n this.active = true;\n }\n }\n }\n\n onMessageClick?: (e: Event) => void;\n\n // alias\n onmessageclick?: (e: Event) => void;\n\n constructor() {\n super();\n this.initDealerStores();\n }\n\n private _dealerStoreTree: IStoreTree | undefined = undefined;\n private _selectedStore: IStore | undefined = undefined;\n\n private async initDealerStores() {\n const dealerStoreTree = await CommunicationMessageService.getStoreTree();\n this._dealerStoreTree = dealerStoreTree;\n if (this._dealerStoreTree?.Stores?.length === 1) {\n this._selectedStore = this._dealerStoreTree.Stores[0];\n }\n\n this.requestUpdate();\n }\n\n get StoreSelection(): boolean {\n return !!(this._dealerStoreTree && this._dealerStoreTree.Stores && this._dealerStoreTree.Stores.length > 1);\n }\n\n private selectStoreLocation(store_: IStore) {\n this._selectedStore = store_;\n }\n\n private toggleRadio(ev: Event) {\n const div = ev.currentTarget as HTMLElement;\n const radio = div.querySelector(\"fv-radio\") as HTMLElement;\n\n if (radio) {\n radio.click();\n }\n }\n\n render() {\n const fvDealer = this.name && this.address;\n return html`\n <iframe name=\"hidden_frame\" style=\"display:none;\"></iframe>\n <form autocomplete=\"on\" action=\"/submit\" method=\"POST\" target=\"hidden_frame\">\n ${this.renderRows()}\n ${this.StoreSelection ? html`\n <div class=\"container row\">\n <fv-list-box class=\"store-tree flex\">\n ${this._dealerStoreTree?.Stores?.map((store: IStore) => html`\n <div class=\"store-location\" @click=\"${this.toggleRadio}\">\n <fv-radio\n name=\"store\"\n class=\"store-selection mask-image\"\n closest-query=\".store-tree\"\n @click=\"${() => this.selectStoreLocation(store)}\"\n mark-parent\n >\n </fv-radio>\n <div class=\"store-location-info\">\n <fv-label>${store.firma.trim()}</fv-label>\n <fv-label>${store.strasse_haus.trim()} • ${store.plz.trim()} •\n ${store.ort.trim()}\n </fv-label>\n </div>\n </div>`\n )}\n </fv-list-box>\n </div>` : html``\n }\n\n <div class=\"container column\">\n <fv-checkbox>\n <span><span i18n=\"i_have_read\">Ich habe die</span> <a target=\"_blank\" i18n=\"privacy_policy\"\n .href=\"${this.privacyLink}\"> Datenschutzerklärung</a> <span\n i18n=\"and_agree_with_this\"> gelesen und stimme dieser zu.</span></span>\n </fv-checkbox>\n </div>\n\n <div>\n ${fvDealer ?\n html`\n <fv-dealer type=\"submit\" name=\"${this.name}\" address=\"${this.address}\"\n i18n=\"send_inquiry\" disabled>Anfrage absenden\n </fv-dealer>` :\n html`\n <button type=\"submit\" i18n=\"send_inquiry\" disabled>Anfrage absenden</button>`\n }\n </div>\n </form>\n `;\n }\n\n onSubmitPreventReload(ev: Event) {\n ev.preventDefault();\n }\n\n firstUpdated() {\n let requestData = window.g_configuration?.sendRequestJSON?.entries;\n if (requestData) {\n this.propertyData.entries = requestData;\n }\n if (this.renderRoot) {\n\n const dealerComponent = this.renderRoot.querySelector(\"fv-dealer\") as DealerComponent;\n const submitButton = this.renderRoot.querySelector(\"fv-button\") as DealerComponent;\n const checkboxComponent = this.renderRoot.querySelector(\"fv-checkbox\") as CheckboxComponent;\n\n const validateData = () => {\n if (dealerComponent) dealerComponent.disabled = true;\n else if (submitButton) submitButton.disabled = true;\n if (this.StoreSelection && this._selectedStore == undefined) return;\n if (checkboxComponent.checked) {\n for (let i = 0; i < this.requiredInputBoxes.length; i++) {\n const requiredInput = this.requiredInputBoxes[i];\n if (requiredInput.value.trim().length === 0) {\n break;\n }\n if (i + 1 === this.requiredInputBoxes.length) {\n if (dealerComponent) dealerComponent.disabled = false;\n else if (submitButton) submitButton.disabled = false;\n }\n }\n }\n };\n\n checkboxComponent.onChange = (e: Event, component: CheckboxComponent) => {\n validateData();\n };\n this.requiredInputBoxes.forEach((input: BaseInput<HTMLInputElement>) => {\n input.onChange = (e: Event, component: BaseInput<HTMLInputElement>) => {\n validateData();\n };\n });\n\n this.addEventListener(\"radio-click\", () => {\n validateData();\n });\n\n const submitFunction = async (e: Event) => {\n if (checkboxComponent && checkboxComponent.checked) {\n this.active = false;\n const messageComponent = this.parentNode ? this.parentNode.querySelector(\"fv-message\") as MessageComponent : null;\n const nameValueList: { [key: string]: string } = {};\n this.inputBoxes.forEach((value: BaseInput<HTMLInputElement>) => {\n if (value.name) nameValueList[value.name] = value.value;\n });\n\n if (this._selectedStore) {\n nameValueList[\"branchName\"] = this._selectedStore.firma.trim();\n nameValueList[\"branchAddress\"] = `${this._selectedStore.strasse_haus.trim()} - ${this._selectedStore.plz.trim()} - ${this._selectedStore.ort.trim()}`;\n }\n\n await this.onSubmit(e, nameValueList);\n if (messageComponent) {\n const divElements = this.parentNode ? this.parentNode.querySelectorAll(\"div\") : null;\n if (divElements) {\n divElements.forEach((value) => {\n value.classList.add(\"hidden\");\n });\n }\n messageComponent.active = true;\n messageComponent.onClick = (e: Event) => {\n const handler = this.onmessageclick || this.onMessageClick;\n\n this.onMessageClickDefault();\n\n if (handler) {\n handler.call(this, e);\n }\n\n this.dispatchEvent(new CustomEvent(\"messageclick\"));\n };\n }\n }\n };\n if (dealerComponent) dealerComponent.onClick = submitFunction;\n else if (submitButton) submitButton.addEventListener(\"click\", submitFunction);\n }\n // this.fillRequiredInputsWithId(\"city\")\n\n }\n\n public reset() {\n if (this.renderRoot) {\n const dealerComponent = this.renderRoot.querySelector(\"fv-dealer\") as DealerComponent;\n const submitButton = this.renderRoot.querySelector(\"fv-button\") as DealerComponent;\n const inputBoxes = this.renderRoot.querySelectorAll(\"fv-labeled-input\") as NodeListOf<InputComponent>;\n const checkboxComponent = this.renderRoot.querySelector(\"fv-checkbox\") as CheckboxComponent;\n checkboxComponent.checked = false;\n inputBoxes.forEach((input: BaseInput<HTMLInputElement>) => {\n input.value = \"\";\n });\n if (submitButton) submitButton.disabled = true;\n if (dealerComponent) dealerComponent.disabled = true;\n }\n }\n}\n","import { css, html, LitElement, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./dot-flashing-loader.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\n\n@customElement(\"fv-dot-flashing-loader\")\nexport class DotFlashingLoaderComponent extends LitElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n className = \"dot-flashing\";\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return html``;\n }\n}\n","import { ReactiveController, ReactiveControllerHost } from \"lit\";\n\nexport class ClockController implements ReactiveController {\n private _host: ReactiveControllerHost;\n private _timeout: number;\n private _timerID?: number;\n private _callback: () => Promise<boolean>;\n constructor(host_: ReactiveControllerHost, timeout_ = 1000, callback_: () => Promise<boolean>) {\n (this._host = host_).addController(this);\n this._timeout = timeout_;\n this._callback = callback_;\n }\n hostConnected() {\n // Start a timer when the host is connected\n this._timerID = +setInterval(async () => {\n if (await this._callback()) {\n this._host.requestUpdate();\n }\n }, this._timeout);\n }\n hostDisconnected() {\n // Clear the timer when the host is disconnected\n clearInterval(this._timerID);\n this._timerID = undefined;\n }\n}\n","export interface IDeferHelperClass extends Promise<any> {\n resolve: Function\n reject: Function\n}\n\nexport function DeferHelperClass(): IDeferHelperClass {\n let resolveExternally: (value?: any) => void;\n let rejectExternally: (value?: any) => void;\n\n const promise: any = new Promise((resolve, reject) => {\n resolveExternally = resolve;\n rejectExternally = reject;\n });\n\n promise.resolve = function (parameters: any) {\n resolveExternally.apply(this, parameters);\n return promise;\n }\n\n promise.reject = function (error: any) {\n rejectExternally.apply(this, error);\n return promise;\n }\n\n return promise;\n}\n","\nimport { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./loading-modal.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { ModalComponent } from \"../../modal/modal.component\";\nimport \"../loader/dot-flashing/dot-flashing-loader.component\";\nimport { ClockController } from \"../controller/clock.controller\";\nimport {EventService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../../utils/configurator-api.data.service\";\nimport { DeferHelperClass } from \"../../../../utils/defer-helper.class\";\n\n@customElement(\"fv-loading-modal\")\nexport class LoadingModalComponent extends ModalComponent {\n private _clockController: ClockController;\n public clockInterval = 5000;\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private _textIndex = 0;\n\n @query(\".head-text\")\n private headText?: HTMLSpanElement;\n\n @query(\".main-text\")\n private mainText?: HTMLSpanElement;\n\n @property({type: Boolean, attribute: \"auto-hide\"})\n autoHide: boolean = true;\n\n protected fullScreen = true;\n protected hasBackground = true;\n\n constructor() {\n EventService.on(\"construction:initialize\", ()=>{\n this._constructionDefer.resolve();\n });\n\n super();\n this._clockController = new ClockController(this, this.clockInterval, this.changeText);\n }\n\n private changeText = async () => {\n if (this.active) {\n this._textIndex++;\n if (!LocaleService.exists(\"modal.loading.main-text.\" + this._textIndex)) {\n this._textIndex = 0;\n }\n if (this.mainText) {\n this.mainText.classList.add(\"fade-out\");\n this.mainText.textContent = LocaleService.translate(\"modal.loading.main-text.\" + this._textIndex, \"\");\n this.mainText.classList.remove(\"fade-out\");\n }\n\n if (this.headText) {\n this.headText.classList.add(\"fade-out\");\n this.headText.textContent = LocaleService.translate(\"modal.loading.head-text.\" + this._textIndex, \"\");\n this.headText.classList.remove(\"fade-out\");\n }\n }\n return this.active;\n }\n\n private _constructionDefer = DeferHelperClass();\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n\n await WebViewerService.IsAppReady;\n await this._constructionDefer;\n await ConfiguratorApiDataService.DataPromise;\n if(this.autoHide) {\n this.hide(true, true);\n }\n }\n\n render(): TemplateResult<1> {\n return super.build(html`\n <div class=\"content\" part=\"loadingContent\">\n <slot>\n <div part=\"loadingHeadText\" class=\"head-text\" i18n=\"modal.loading.head-text.0\"></div>\n <div part=\"loadingMainText\" class=\"main-text\" i18n=\"modal.loading.main-text.0\"></div>\n </slot>\n </div>\n <div class=\"footer\">\n <div class=\"text\" i18n=\"modal.loading.footer-text\"></div>\n <slot name=\"loader-slot\">\n <fv-dot-flashing-loader></fv-dot-flashing-loader>\n </slot>\n </div>\n `);\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./rotating-dots-loader.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../../base/base.component\";\n\n@customElement(\"fv-rotating-dots-loader\")\nexport class RotatingDotsLoaderComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return html`<div class=\"loader\"></div>`;\n }\n}","import { customElement, property } from \"lit/decorators.js\";\r\nimport style from './configurator-form-loading.component.sass?inline'\r\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport { ModalComponent } from \"../../modal/modal.component\";\r\nimport { CommunicationMessageService, EventHandler, EventService } from \"@dh-software/webui-api\";\r\nimport { IConfiguratorApiFetchEventData } from \"../../../../utils/configurator-api.data.service\";\r\n\r\n@customElement(\"fv-configurator-form-loading-modal\")\r\nexport class ConfiguratorFormLoadingModalComponent extends ModalComponent {\r\n\r\n\tstatic styles = [\r\n\t\tsuper.styles || [],\r\n\t\tcss`${unsafeCSS(style)}`\r\n\t];\r\n\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tEventService.register(this);\r\n\t}\r\n\r\n\t@EventHandler('configurator-api-fetch')\r\n\tasync onConfiguratorAPIFetch(data: IConfiguratorApiFetchEventData){\r\n\t\tthis.active = true;\r\n\t\ttry{\r\n\t\t\tawait data.promise;\r\n\t\t\tawait CommunicationMessageService.getSceneFullyLoaded();\r\n\t\t}\r\n\t\tfinally{\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\trender(): TemplateResult<1> {\r\n\tif (!this.active) {\r\n\t return html``;\r\n }\r\n return html`\r\n\t\t<div class=\"loader-content\">\r\n\t\t\t<div class=\"spinner\"></div>\r\n\t\t <span class=\"label\" i18n=\"fv-form-loading-text\"></span>\r\n\t\t</div>\r\n `;\r\n }\r\n}\r\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./progress.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\n\n@customElement(\"fv-progress\")\nexport class ProgressComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true })\n active = false\n\n @property({ type: Boolean, reflect: true })\n finished = false\n\n constructor() {\n super();\n }\n\n public show(): void {\n this.active = true;\n this.finished = false;\n }\n\n public hide(): void {\n this.active = false;\n this.finished = false;\n }\n\n\n\n render(): TemplateResult<1> {\n const classes = {\n \"circle\": true,\n \"load-complete\": this.finished\n };\n return html`\n <div class=${classMap(classes)}>\n <div class=\"checkmark draw\"></div>\n </div>\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./popup.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-popup\")\nexport class PopupComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n @property({ type: Boolean, reflect: true })\n public pointer = true;\n\n @property({ type: HTMLElement })\n private _owner: HTMLElement | undefined;\n public set owner(element_: HTMLElement) {\n this._owner = element_;\n this.requestUpdate();\n }\n\n @property({ type: Boolean, reflect: true })\n public transparent = false;\n\n get IsActive(): boolean {\n return this.classList.contains(\"active\");\n }\n\n constructor(owner_?: HTMLElement) {\n super();\n if (owner_) this._owner = owner_;\n\n this.addEventListener(\"click\", (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n window.addEventListener(\"resize\", () => {\n this.requestUpdate();\n });\n }\n\n public show(): void {\n this.classList.add(\"active\");\n this.requestUpdate();\n }\n\n public hide(): void {\n this.classList.remove(\"active\");\n this.requestUpdate();\n }\n\n\n render(): TemplateResult<1> {\n if (this._owner) {\n const bb = this._owner.getBoundingClientRect();\n const height = Number.parseFloat(getComputedStyle(this)[\"height\"].replace(\"px\", \"\"));\n this.style.setProperty(\"top\", (bb.top - height) + \"px\");\n if (this.pointer) {\n this.classList.add(\"pointer\", \"bottom\");\n const width = Number.parseFloat(getComputedStyle(this)[\"width\"].replace(\"px\", \"\"));\n this.style.setProperty(\"left\", (bb.left + (bb.width / 2 - width / 2)) + \"px\");\n }\n else {\n this.classList.remove(\"pointer\", \"bottom\");\n this.style.removeProperty(\"left\");\n }\n }\n return html`\n <slot></slot>\n <div>\n </div>\n `;\n }\n}\n\n\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./popup-closer.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { PopupComponent } from \"./popup.component\";\nimport { ComponentService } from \"../../../utils/component.service\";\n\nimport { BaseElement } from \"../base/base.component\";\n\n\n@customElement(\"fv-popup-closer\")\nexport class PopupCloserComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"popup-selector\" })\n public popupSelector = \"\";\n\n constructor() {\n super();\n\n this.addEventListener(\"mousedown\", (e) => {\n const popupComponent: PopupComponent = ComponentService.find(\"FV-POPUP\", this.popupSelector ? this.popupSelector : \"\") as PopupComponent;\n if (popupComponent) {\n popupComponent.hide();\n this.hide();\n }\n });\n }\n\n render(): TemplateResult<1> {\n return html``;\n }\n\n public show() {\n this.classList.add(\"active\");\n }\n public hide() {\n this.classList.remove(\"active\");\n }\n}","import { css, html, unsafeCSS } from \"lit\";\nimport style from \"./hr-item.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-hr-item\")\nexport class HRItemComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private readonly _hash: string;\n\n constructor(hash_: string, parameters_: { previewImageFile: string }) {\n super();\n this._hash = hash_;\n if (hash_ === \"none\") {\n this.classList.add(\"return\");\n }\n else {\n this.style.setProperty(\"background-image\", `url(${parameters_.previewImageFile})`);\n }\n this.addEventListener(\"click\", async(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (this._hash) {\n await CommunicationMessageService.setHRThemes(this._hash);\n this.dispatchEvent(new CustomEvent(\"onChange\", { detail: { reset: this._hash === \"none\" } }));\n }\n });\n }\n\n render() {\n return html`\n `;\n }\n}\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface IARExportData {\n qr: string;\n url: string;\n}\n\nclass HRThemeModelClass {\n async get(): Promise<{ [key: string]: { previewImageFile: string } }> {\n return CommunicationMessageService?.getHRThemes();\n }\n}\n\nexport const HRThemeModel = new HRThemeModelClass();\n","import { css, html, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./hr-list.component.sass?inline\";\nimport { property, customElement, query, queryAll } from \"lit/decorators.js\";\nimport { HRThemeModel } from \"../../models/hr/hr-theme.model\";\nimport { HRItemComponent } from \"./hr-item.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { StyleHelper } from \"../../utils/style.helper\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-hr-list\")\nexport class HRListComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\".content\")\n private _content: HTMLDivElement | undefined;\n @queryAll(\".arrow\")\n private _arrows: Array<HTMLDivElement> | undefined;\n @queryAll(\".arrow-button\")\n private _arrowButtons: Array<HTMLDivElement> | undefined;\n\n\n @property({ type: Boolean, reflect: true, attribute: \"reset-camera-view\" })\n public resetCameraView = false;\n\n private _list: {[key: string]: { previewImageFile: string }} = { \"none\": { previewImageFile: \"\" } };\n\n constructor() {\n super();\n window.addEventListener(\"resize\", () => {\n this.onResize();\n });\n }\n\n\n public onResize() {\n this._arrows?.forEach((arrow) => {\n arrow.classList[this._content && this._content.scrollWidth > this._content.clientWidth ? \"remove\" : \"add\"](\"invisible\");\n });\n }\n\n async connectedCallback() {\n this._list = Object.assign(this._list, await HRThemeModel.get());\n super.connectedCallback();\n }\n\n protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n return super.shouldUpdate(_changedProperties);\n }\n\n protected updated(_changedProperties: PropertyValues) {\n super.updated(_changedProperties);\n this.onResize();\n }\n\n private onWheel(evt: WheelEvent) {\n evt.preventDefault();\n (evt.currentTarget as HTMLDivElement).scrollLeft += evt.deltaY;\n }\n\n private onRightArrowClick() {\n if (this._content) {\n for (let i = this._content.children.length - 1; i >= 0; i--) {\n if (StyleHelper.isElementInView(this._content.children[i] as HTMLElement, this._content as HTMLElement)) {\n if (StyleHelper.isElementInView(this._content.children[i] as HTMLElement, this._content as HTMLElement, true)) {\n if (this._content.children[i + 1]) {\n this._content.children[i + 1].scrollIntoView({ inline: \"center\", block: \"end\", behavior: \"smooth\" });\n }\n }\n else {\n if (this._content.children[i]) {\n this._content.children[i].scrollIntoView({ inline: \"center\", block: \"end\", behavior: \"smooth\" });\n }\n }\n break;\n }\n }\n }\n }\n\n private onLeftArrowClick() {\n if (this._content) {\n for (let i = 0; i < this._content.children.length; i++) {\n if (StyleHelper.isElementInView(this._content.children[i] as HTMLElement, this._content as HTMLElement)) {\n if (StyleHelper.isElementInView(this._content.children[i] as HTMLElement, this._content as HTMLElement, true)) {\n if (this._content.children[i - 1]) {\n this._content.children[i - 1].scrollIntoView({ inline: \"center\", block: \"end\", behavior: \"smooth\" });\n }\n }\n else {\n if (this._content.children[i]) {\n this._content.children[i].scrollIntoView({ inline: \"center\", block: \"end\", behavior: \"smooth\" });\n }\n }\n break;\n }\n }\n }\n }\n\n\n render() {\n const arrowClass = {\n arrow: true,\n invisible: true\n };\n return html`\n <div class=\"${classMap(arrowClass)}\">\n <div class=\"arrow-button\" @click=\"${this.onLeftArrowClick}\">\n <i class=\"arrow-icon left\"></i>\n </div>\n </div>\n <div class=\"content\" @wheel=\"${this.onWheel}\">\n ${\n Object.keys(this._list).map((hash: string ) => {\n return (()=>{\n const item = new HRItemComponent(hash, this._list[hash]);\n item.addEventListener(\"onChange\", (e:unknown) => {\n const event: CustomEvent = e as CustomEvent;\n this.dispatchEvent(new CustomEvent(\"onChange\", { \"detail\": event.detail }));\n\n if (this.resetCameraView) {\n if (event.detail && event.detail.reset) {\n CommunicationMessageService.resetCameraView(false);\n }\n }\n });\n return item;\n })();\n })\n}\n </div>\n <div class=\"${classMap(arrowClass)}\">\n <div class=\"arrow-button\" @click=\"${this.onRightArrowClick}\">\n <i class=\"arrow-icon right\"></i>\n </div>\n </div>\n `;\n }\n}\n","import {customElement, property, query} from \"lit/decorators.js\";\nimport {css, html, nothing, PropertyValueMap, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./pp-container.component.sass?inline\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {DropDownComponent, DropdownItemComponent} from \"../../standard/dropdown\";\nimport {AccordionComponent, AccordionItemComponent} from \"../../standard/accordion\";\nimport {ConfigurationService, RequestService, WebViewerService} from \"@dh-software/webui-api\";\nimport {IGetPropTransferParams, IModifyPropertyOptions} from \"@dh-software/webui-types\";\nimport {IDropdownItem} from \"../../standard/dropdown/dropdown-item/dropdown-item.component\";\n\nexport enum PPTheme {\n WEBUI = 0,\n FURNVIEW = 1,\n COMBINE = 99\n}\n\nexport enum PPMode {\n ALL = \"0\",\n ELEMENT = \"1\",\n COMPONENT = \"2\"\n}\n\n@customElement(\"fv-pp-container\")\nexport class PPContainerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\"#mode-dropdown\")\n private _ppModeDropdown?: DropDownComponent;\n\n @query(\"fv-accordion\")\n private accordion?: AccordionComponent\n\n @property({type: Boolean, reflect: true})\n IsBusy = false;\n\n @property({type: Number, reflect: true})\n theme = -1;\n\n @property({type: Boolean, reflect: true})\n halfSize = true;\n\n @property({type: Boolean, reflect: true})\n grouped = true;\n\n @property({type: Boolean, reflect: true})\n draggable = true;\n\n @property({type: Boolean, reflect: true, attribute: \"mode-selection\"})\n private _ppModeSelection = false;\n\n @property({type: Boolean, reflect: true, attribute: \"hide-single-value-properties\"})\n public hideSingleValueProperties = false;\n\n @property({type: Array, reflect: true, attribute: \"accordion-item-classes\"})\n public accordionItemClasses = new Array<string>();\n\n private _ppMode: PPMode = PPMode.ALL;\n\n get PPOptions(): IModifyPropertyOptions {\n const propertyOptions: IModifyPropertyOptions = {};\n switch (this._ppMode) {\n default:\n case PPMode.ALL:\n break;\n case PPMode.ELEMENT:\n propertyOptions.modifyElement = true;\n break;\n case PPMode.COMPONENT:\n propertyOptions.modifyComponent = true;\n break;\n }\n return propertyOptions;\n }\n\n @property({type: Boolean, reflect: true})\n hideItemCount = false; //deprecated?\n\n @property({type: Boolean, reflect: true})\n disableNotSettable = false; // deprecated, use hideSingleValueProperties\n\n @property({type: Boolean, reflect: true})\n hideNotSettable = false; // deprecated, use hideSingleValueProperties\n\n @property({type: Array, reflect: true})\n public contexts?: string[];\n\n constructor() {\n super();\n this.baseOptions.updateWhileDisconnected = true;\n }\n\n private async initializeLevelDropdown() {\n if (this._ppModeSelection && this._ppModeDropdown) {\n const config = await ConfigurationService.Configuration;\n if (!config.disable_properties_on_selection) {\n this._ppModeDropdown.addEventListener(\"dropdown-item-changed\", ((evt: CustomEvent<IDropdownItem>) => {\n this._ppMode = evt.detail.value as PPMode;\n }) as EventListener);\n this._ppModeDropdown.clearItems();\n this._ppModeDropdown.addItems([\n {\n text: \"1701\", value: PPMode.ALL,\n },\n {\n text: \"1702\", value: PPMode.ELEMENT\n },\n {\n text: \"1703\", value: PPMode.COMPONENT\n },\n ], false);\n //await LocalesModel.get(\"1704\") // TODO CHECK IF NECESSARY\n }\n }\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues<this>) {\n super.firstUpdated(_changedProperties);\n await RequestService.Initialized;\n await WebViewerService.IsAppReady;\n await this.initializeLevelDropdown();\n }\n\n protected updated(_changedProperties: PropertyValues) {\n super.updated(_changedProperties);\n\n if(_changedProperties.has(\"_ppModeSelection\")) {\n this.initializeLevelDropdown();\n }\n\n window.dispatchEvent(new CustomEvent(\"onUpdated\", {detail: this}));\n }\n\n get Children(): AccordionItemComponent[] {\n return <AccordionItemComponent[]>Array.from(this.accordion?.children || [])\n }\n\n public isEmpty(): boolean {\n return this.Children.every(x => x.isEmpty());\n }\n\n protected async getUpdateComplete(): Promise<boolean> {\n const result = await super.getUpdateComplete();\n if(result) {\n await Promise.all(this.Children.map(x => x.updateComplete));\n }\n return result;\n }\n\n render() {\n return html`\n ${this._ppModeSelection ? html`\n <fv-dropdown class=\"centered\" id=\"mode-dropdown\"></fv-dropdown>\n ` : \"\"}\n <fv-scroll-aware-container>\n <fv-accordion>\n ${this.getProgContextAccordionLayer()}\n\n ${this.getProgPropertyAccordionLayer()}\n </fv-accordion>\n </fv-scroll-aware-container>\n `;\n }\n\n getProgContextAccordionLayer() {\n if (!this.contexts) return nothing;\n return html`\n <fv-prog-context-accordion-layer .contexts=\"${this.contexts}\"></fv-prog-context-accordion-layer>\n `\n }\n\n getProgPropertyWebUITheme() {\n if (this.contexts || this.theme !== PPTheme.WEBUI) return nothing\n return html`\n <fv-prog-property-webui-accordion-layer></fv-prog-property-webui-accordion-layer>\n `;\n }\n\n getProgPropertyCombineAccordionLayer() {\n if (this.contexts || this.theme !== PPTheme.COMBINE) return nothing\n const parameters = {\n grouped: this.grouped,\n useSelection: true\n } as IGetPropTransferParams\n return html`\n <fv-prog-property-combine-accordion-layer .parameters=\"${parameters}\"></fv-prog-property-combine-accordion-layer>\n `;\n }\n\n getProgPropertyAccordionLayer() {\n if (this.contexts || this.theme !== -1) return nothing\n return html`\n <fv-prog-property-accordion-layer></fv-prog-property-accordion-layer>\n `;\n }\n}\n\n","import { customElement, property } from \"lit/decorators.js\";\nimport { css, html, unsafeCSS } from \"lit\";\nimport style from \"./pt-property-item.component.sass?inline\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport { IPropTransferItem } from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\n\nexport interface IPPMenu {\n title?: string\n}\n\n@customElement(\"fv-pt-property-item\")\nexport class PTPropertyItemComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true })\n currentImage = \"\";\n\n @property({ type: String, reflect: true })\n titleText = \"\";\n\n @property({ type: Boolean, reflect: true })\n deletable = false;\n\n @property({ type: String, reflect: true })\n itemId = \"\";\n\n @property({ type: String, reflect: true })\n manufacturer = \"\";\n\n @property({ type: String, reflect: true })\n program = \"\";\n\n /** @deprecated pass props directly via the template instead. */\n constructor(options?: IPropTransferItem) {\n super();\n if (options) {\n this.titleText = options.text || options.id;\n this.currentImage = options.image || \"\";\n this.deletable = (options.deletable || []).length > 0;\n this.itemId = options.id || \"\";\n this.manufacturer = options.manufacturer || \"\";\n this.program = options.program || \"\";\n }\n this.addEventListener(\"click\", this.startPropTransfer);\n }\n\n /** Back-compat alias for old `.Deletable` accessor. */\n get Deletable(): boolean { return this.deletable; }\n set Deletable(v: boolean) { this.deletable = v; }\n\n private startPropTransfer = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n CommunicationMessageService?.startPropTransfer(this.itemId);\n };\n\n private deletePropTransfer = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n CommunicationMessageService?.deletePropTransfer(this.itemId, this.manufacturer, this.program);\n };\n\n render() {\n const classMapCurrentImage = {\n \"not-found\": !this.currentImage,\n \"pt-image\": true,\n };\n return html`\n <div class=\"pp-item-content\">\n <div class=\"pt-current-image\">\n <div class=${classMap(classMapCurrentImage)} style=\"${this.currentImage ? `background-image: url(${this.currentImage})` : \"\"}\"></div>\n </div>\n <div class=\"pt-info\">\n <div class=\"pt-group-title\">\n <span>${this.titleText}</span>\n </div>\n </div>\n </div>\n ${this.deletable ? html`<div @click=${this.deletePropTransfer} id=\"deleteButton\" class=\"delete-button\">\n <span>Löschen</span>\n </div>` : \"\"}\n `;\n }\n}\n","import { PTPropertyItemComponent } from \"./pt-property-item.component\";\nimport { customElement } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pt-property-group.component.sass?inline\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport {IPropTransferItem} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-pt-group\")\nexport class PTPropertyGroupComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n\n addItem(item_: IPropTransferItem): PTPropertyItemComponent {\n const item = new PTPropertyItemComponent(item_);\n return item;\n }\n}\n\n","import { PTContainerComponent } from \"../pt-container.component\";\nimport { PTPropertyGroupComponent } from \"./pt-property-group.component\";\nimport {PropTransferModel} from \"@dh-software/webui-api\";\nimport {IGetPropTransferParams, IPropTransferItem} from \"@dh-software/webui-types\";\n\nclass PTThemeIndexClass {\n\n async build(ppComponent: HTMLDivElement, containerComponent: PTContainerComponent, options: IGetPropTransferParams) {\n const values: Array<PTPropertyGroupComponent> = [];\n await PropTransferModel.traverse({\n groupCallback: async (manufacturer, program, group, items) => {\n const valuesComponent = new PTPropertyGroupComponent();\n if (items && options.grouped) {\n items.forEach((item: IPropTransferItem) => {\n valuesComponent.addItem(item);\n });\n }\n values.push(valuesComponent);\n },\n itemsCallback: async (item: IPropTransferItem) => {\n if (!options.grouped) {\n const valuesComponent = new PTPropertyGroupComponent();\n if (item) {\n valuesComponent.addItem(item);\n }\n values.push(valuesComponent);\n }\n }\n }, options);\n ppComponent.innerHTML = \"\";\n values.forEach((valueComponent) => {\n ppComponent.appendChild(valueComponent);\n });\n }\n}\n\nexport const PTFurnviewThemeIndex = new PTThemeIndexClass();\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface IRalPickerData {\n colors: { [key: string ]: { RGB: string, \"Bez\": string } }\n blacklist: Array<string>\n whitelist: Array<string>\n}\nexport interface INcsPickerData {\n colors: { [key: string ]: {[key: string]: string} }\n blacklist: Array<string>\n whitelist: Array<string>\n}\nexport interface ISikkensPickerData {\n colors: {[key: string]: { [key: string]: { R: number, G: number, B: number, HEX: string} }}\n blacklist: Array<string>\n whitelist: Array<string>\n}\n\n\nconst rgbToHsv = function (rgb_str: string) {\n const rgb = rgb_str.split(\",\").map((s)=>+s);\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n\n let h, s;\n\n if (delta === 0) {\n h = 0;\n }\n else if (max === r) {\n h = 60 * (((g - b) / delta) % 6);\n }\n else if (max === g) {\n h = 60 * (((b - r) / delta) + 2);\n }\n else {\n h = 60 * (((r - g) / delta) + 4);\n }\n\n if (h < 0) {\n h += 360;\n }\n\n if (max === 0) {\n s = 0;\n }\n else {\n s = delta / max;\n }\n\n const v = max;\n\n return [h, s, v];\n};\n\nclass ColorPickerModelClass {\n\n //TODO Sort Colors\n private sortColor(colors: Array<{code: string, key: string}>) {\n const hsvlColors = colors.map(function(color: {code: string, key: string}): Array<{code: string, key: string} | number> {\n const hsv = rgbToHsv(color.code);\n return [hsv[0], hsv[1], hsv[2], color];\n });\n const count: Array<Array<Array<Array<{code: string, key: string}>>>> = [];\n for (let h = 0; h <= 360; h++) {\n count.push([]);\n for (let s = 0; s <= 100; s++) {\n count[h].push([]);\n for (let v = 0; v <= 100; v++) {\n count[h][s].push([]);\n }\n }\n }\n\n // Zähle das Vorkommen jeder Kombination von Hue-, Saturation- und Luminanzwerten im Eingabearray\n hsvlColors.forEach((color: Array<number | {code: string, key: string}>) => {\n const h = Math.round(color[0] as number);\n const s = Math.round(color[1] as number * 100);\n const v = Math.round(color[2] as number * 100);\n count[h][s][v].push(color[3] as {code: string, key: string});\n });\n\n // Erstelle ein neues Array, um die sortierten Farben zu speichern\n const sortedColors = [];\n\n // Füge jede Farbe in sortierter Reihenfolge zum neuen Array hinzu\n for (let h = 0; h <= 360; h++) {\n for (let s = 0; s <= 100; s++) {\n for (let v = 0; v <= 100; v++) {\n sortedColors.push(count[h][s][v]);\n }\n }\n }\n\n return sortedColors;\n\n }\n\n public async getRal(options?: {manufacturer?: string}): Promise<IRalPickerData> {\n options = options || {};\n return await (CommunicationMessageService?.getColorPickerInfo({\n manufacturer: options.manufacturer,\n type: \"ral\"\n }) as Promise<IRalPickerData>).then((data)=> {\n return data;\n }) as IRalPickerData;\n\n }\n\n public async getNCS(options?: {manufacturer?: string}): Promise<INcsPickerData> {\n options = options || {};\n return await (CommunicationMessageService?.getColorPickerInfo({\n manufacturer: options.manufacturer,\n type: \"ncs\"\n }) as Promise<INcsPickerData>).then((data)=> {\n return data;\n }) as INcsPickerData;\n }\n\n public async getSikkens(options?: {manufacturer?: string}): Promise<ISikkensPickerData> {\n options = options || {};\n return await (CommunicationMessageService?.getColorPickerInfo({\n manufacturer: options.manufacturer,\n type: \"sikkens\"\n }) as Promise<ISikkensPickerData>).then((data) => {\n //SORT\n return data;\n }) as ISikkensPickerData;\n }\n}\n\nexport const ColorPickerModel = new ColorPickerModelClass();\n","class TransitionHelperClass {\n\n private async TransitionWaiter(element: HTMLElement, seconds: number) {\n return new Promise((resolve, reject) => {\n let cleanupTimeout: number | undefined = setTimeout(() => {\n if (cleanupTimeout) clearTimeout(cleanupTimeout);\n cleanupTimeout = undefined;\n transitionEnd();\n }, (seconds * 1000) + 100);\n const transitionEnd = (ev?: Event) => {\n if (cleanupTimeout) clearTimeout(cleanupTimeout);\n cleanupTimeout = undefined;\n element.removeEventListener(\"transitionend\", transitionEnd);\n element.removeEventListener(\"transitioncancel\", transitionEnd);\n resolve(true);\n };\n element.addEventListener(\"transitionend\", transitionEnd);\n element.addEventListener(\"transitioncancel\", transitionEnd);\n });\n }\n\n\n async fadeOut(element: HTMLElement, seconds= 0.8) {\n element.style.transition = seconds +\"s\";\n element.style.opacity = \"0\";\n await this.TransitionWaiter(element, seconds);\n element.style.transition = \"initial\";\n }\n\n async fadeIn(element: HTMLElement, seconds= 0.8) {\n element.style.transition = seconds +\"s\";\n element.style.opacity = \"1\";\n await this.TransitionWaiter(element, seconds);\n element.style.transition = \"initial\";\n }\n}\n\nexport const TransitionHelper = new TransitionHelperClass();\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./ral-picker.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { IRalPickerData, ColorPickerModel } from \"../../../models/color-picker/color-picker.model\";\nimport { TransitionHelper } from \"../../../utils/transition.helper\";\nimport { BaseElement } from \"../../standard/base/base.component\";\n\n@customElement(\"fv-ral-picker\")\nexport class RalPickerComponent extends BaseElement {\n private _ralModel: IRalPickerData | undefined;\n private _ralCode: string | undefined;\n private _ralRGB: string | undefined;\n private _isSearching = false;\n private _currentGroup: number | undefined;\n private _preventEvent = false;\n\n @query(\".colorGrid\")\n private colorGrid: HTMLDivElement | undefined;\n\n @query(\"#colorInput\")\n private colorInput: HTMLInputElement | undefined;\n\n @query(\"#errorMsgWrap\")\n private errorMsgWrap: HTMLElement | undefined;\n\n @query(\"#colorCurrent\")\n private colorCurrent: HTMLDivElement | undefined;\n\n @property({ type: String, reflect: true })\n currentCode = \"\";\n\n @property({ type: String, reflect: true })\n manufacturer = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"disable-fade\" })\n private _disableFade = \"\";\n\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n public async getColorByCode(code_: string): Promise<string | undefined> {\n await this.getRalColors();\n return this._ralModel?.colors[code_]?.RGB;\n }\n\n\n private dispatchColorChange() {\n if (this._preventEvent) {\n this._preventEvent = false;\n return;\n }\n if (this._ralCode) {\n const rgb = this._ralModel?.colors[this._ralCode].RGB.split(\",\");\n const text = this._ralModel?.colors[this._ralCode].Bez;\n if (rgb) {\n const colorChangeEvent = new CustomEvent(\"colorChange\", {\n detail: {\n code: this._ralCode,\n rgba: {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n a: 1\n },\n text: text\n },\n bubbles: false\n });\n this.dispatchEvent(colorChangeEvent);\n }\n }\n }\n\n\n private ShowErrorMessage(Message: string) {\n if (this.shadowRoot) {\n let ralWrongFormat = this.shadowRoot.querySelector(\"#ralWrongFormat\");\n let ralNotFound = this.shadowRoot.querySelector(\"#ralNotFound\");\n switch (Message.toUpperCase()) {\n case \"RALWRONGFORMAT\":\n if (!ralWrongFormat) {\n ralWrongFormat = document.createElement(\"p\");\n ralWrongFormat.id = \"ralWrongFormat\";\n ralWrongFormat.classList.add(\"errorMsg\");\n ralWrongFormat.textContent = \"RAL Code hat ein falsches Format.\";\n this.errorMsgWrap?.appendChild(ralWrongFormat);\n this.colorInput?.classList.add(\"error\");\n }\n break;\n case \"RALNOTFOUND\":\n if (!ralNotFound) {\n ralNotFound = document.createElement(\"p\");\n ralNotFound.id = \"ralNotFound\";\n ralNotFound.classList.add(\"errorMsg\");\n ralNotFound.textContent = \"RAL Code wurde nicht gefunden.\";\n this.errorMsgWrap?.appendChild(ralNotFound);\n this.colorInput?.classList.add(\"error\");\n }\n break;\n }\n\n if (ralWrongFormat && ralNotFound) {\n this.colorInput?.classList.remove(\"error\");\n }\n }\n }\n\n private RemoveErrorMessage(Message:string) {\n if (this.shadowRoot) {\n let ralWrongFormat = this.shadowRoot.querySelector(\"#ralWrongFormat\");\n let ralNotFound = this.shadowRoot.querySelector(\"#ralNotFound\");\n switch (Message.toUpperCase()) {\n case \"RALWRONGFORMAT\":\n ralWrongFormat?.remove();\n break;\n case \"RALNOTFOUND\":\n ralNotFound?.remove();\n break;\n default:\n ralWrongFormat = null;\n ralNotFound = null;\n if (this.errorMsgWrap) this.errorMsgWrap.innerHTML = \"\";\n break;\n }\n if (!ralWrongFormat && !ralNotFound) {\n this.colorInput?.classList.remove(\"error\");\n }\n }\n }\n\n private CheckRALCodeIsValid(RALCode: string) {\n const RgxTest = /RAL[0-9]{4}/;\n RALCode = RALCode.toUpperCase();\n if (!RgxTest.test(RALCode)) {\n // ral doesn't match the right formatation\n this.ShowErrorMessage(\"ralWrongFormat\");\n return false;\n }\n else {\n this.RemoveErrorMessage(\"ralWrongFormat\");\n\n if (this._ralModel?.colors[RALCode]) {\n this.RemoveErrorMessage(\"ralNotFound\");\n return true;\n }\n else {\n this.ShowErrorMessage(\"ralNotFound\");\n return false;\n }\n }\n return false;\n }\n\n private async GenerateColorGrid(group_?: number, force_ = false) {\n if (this.colorGrid) {\n let currentColorField;\n const groupChanged = this._currentGroup !== group_;\n if (groupChanged || force_) {\n this._currentGroup = group_;\n if (!this._disableFade) await TransitionHelper.fadeOut(this.colorGrid, 0.3);\n this.colorGrid.innerHTML = \"\";\n for (const color in this._ralModel?.colors) {\n const Group = parseInt(color.substr(3, 1));\n\n if (!group_ || Group == group_) {\n const colorField = document.createElement(\"div\");\n colorField.classList.add(\"colorField\");\n colorField.style.backgroundColor = `rgb(${this._ralModel?.colors[color][\"RGB\"]})`;\n colorField.setAttribute(\"data-ralValue\", color);\n colorField.addEventListener(\"click\", this.onColorFieldClick);\n if (this._isSearching && this._ralCode === color) currentColorField = colorField;\n else if (!this._isSearching && (color === this.currentCode || color === this._ralCode)) currentColorField = colorField;\n this.colorGrid.appendChild(colorField);\n }\n }\n }\n else {\n if (this._isSearching && this._ralCode) currentColorField = this.colorGrid.querySelector(`.colorField[data-ralValue=${this._ralCode}]`) as HTMLElement;\n else if (!this._isSearching && (this.currentCode || this._ralCode)) currentColorField = this.colorGrid.querySelector(`.colorField[data-ralValue=${this.currentCode || this._ralCode}]`) as HTMLElement;\n }\n if (currentColorField) {\n this.colorGrid.querySelectorAll(\".colorField.highlight\")\n .forEach((value) => {\n value.classList.remove(\"highlight\");\n });\n if (this.colorCurrent) this.colorCurrent.style.background = `rgb(${this._ralRGB})`;\n if (!this._isSearching) {\n currentColorField.click();\n }\n else {\n\n currentColorField.classList.add(\"highlight\");\n }\n }\n else {\n this._preventEvent = false;\n }\n if (groupChanged || force_) {\n if (!this._disableFade) await TransitionHelper.fadeIn(this.colorGrid, 0.3);\n }\n }\n }\n\n private updateColorSelection() {\n let group = this.colorInput?.value.toUpperCase().replace(/\\s|RAL/gi, \"\");\n this._ralCode = \"RAL\" + group;\n this._ralRGB = this._ralModel?.colors[this._ralCode] ? this._ralModel?.colors[this._ralCode][\"RGB\"] : \"\";\n if (group && this.CheckRALCodeIsValid(this._ralCode)) {\n group = group?.substr(0, 1);\n this.shadowRoot ?\n (this.shadowRoot.querySelector(\".colorGroup[data-ralGroup='\" + group + \"']\") as HTMLElement).click()\n : null;\n\n this.dispatchColorChange();\n }\n }\n\n\n\n private onColorFieldClick = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n const element = e.currentTarget as HTMLElement;\n const ralCode = element.getAttribute(\"data-ralvalue\") || \"\";\n this._ralCode = ralCode;\n this.currentCode = this._ralCode;\n this._ralRGB = this._ralModel?.colors[this._ralCode] ? this._ralModel?.colors[this._ralCode][\"RGB\"] : \"\";\n if (this.colorCurrent) this.colorCurrent.style.background = `rgb(${this._ralRGB})`;\n const activeFields = this.shadowRoot ? this.shadowRoot.querySelectorAll(\".colorField.active\") : null;\n if (activeFields) {\n activeFields.forEach((value) => {\n value.classList.remove(\"active\");\n });\n }\n element.classList.add(\"active\");\n this.colorInput ? this.colorInput.value = \"\" : null;\n this.RemoveErrorMessage(\"all\");\n this.dispatchColorChange();\n }\n\n private onClickColorGroup(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n const element: HTMLElement = e.currentTarget as HTMLElement;\n const ralGroup = element.getAttribute(\"data-ralGroup\");\n const activeGroups = this.shadowRoot ? this.shadowRoot.querySelectorAll(\".colorGroup.active\") : null;\n if (activeGroups) {\n activeGroups.forEach((value) => {\n value.classList.remove(\"active\");\n });\n }\n element.classList.add(\"active\");\n this.GenerateColorGrid(ralGroup ? +ralGroup : undefined)\n .then(()=>{\n this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n })\n }\n\n private onSearchColor() {\n this._isSearching = true;\n if (this.colorInput?.value && this.colorInput?.value.length > 0) {\n this.updateColorSelection();\n }\n else {\n this.RemoveErrorMessage(\"all\");\n }\n }\n\n private onColorInputChange(e: Event) {\n this.currentCode = \"\";\n this._isSearching = false;\n this.updateColorSelection();\n }\n\n private async getRalColors() {\n const ralModel = await ColorPickerModel.getRal({ manufacturer: this.manufacturer });\n const ralModelFiltered: {[key: string ]: { RGB: string, \"Bez\": string }} = { };\n if (ralModel.colors) {\n if (ralModel.blacklist) {\n ralModel.blacklist.forEach((item: string) => {\n if (ralModel.colors[item]) {\n delete ralModel.colors[item];\n }\n });\n }\n\n if (ralModel.whitelist) {\n ralModel.whitelist.forEach((item: string) => {\n if (ralModel.colors[item]) {\n ralModelFiltered[item] = ralModel.colors[item];\n }\n });\n ralModel.colors = ralModelFiltered;\n }\n }\n\n this._ralModel = ralModel;\n return this._ralModel;\n }\n\n\n render(): TemplateResult<1> {\n return html`\n <div class=\"colorInputWrap\">\n <div class=\"inputContainer\">\n <div id=\"colorCurrent\"></div>\n <input type=\"text\" id=\"colorInput\" @input=${this.onSearchColor} @change=${this.onColorInputChange} value=\"\" i18n-placeholder=\"enter_RAL_code\" placeholder=\"RAL-Code eingeben\" onfocus=\"this.select()\"/>\n <button id=\"colorInputSubmit\"><span>≻</span></button>\n </div>\n <div id=\"errorMsgWrap\"><!-- Hier werden Fehlermeldungen reingeschrieben --></div>\n </div>\n\n <!-- Farb-Gruppen -->\n <div class=\"colorGroups\">\n <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"1\">\n <div class=\"colorTile\" style=\"background-color: rgb(255,255,0);\"> </div>\n <p>\n Gelb\n </p>\n </div><!-- Gelb-->\n <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"2\">\n <div class=\"colorTile\" style=\"background-color: rgb(255,164,32);\"> </div>\n <p>\n Orange\n </p>\n </div><!--Orange-->\n <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"3\">\n <div class=\"colorTile\" style=\"background-color: rgb(248,0,0);\"> </div>\n <p>\n Rot\n </p>\n </div><!--Rot-->\n <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"4\">\n <div class=\"colorTile\" style=\"background-color: rgb(125,31,122);\"> </div>\n <p>\n Violett\n </p>\n </div><!--Violett-->\n <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"5\">\n <div class=\"colorTile\" style=\"background-color: rgb(59,131,189);\"> </div>\n <p>\n Blau\n </p>\n </div><!--Blau-->\n <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"8\">\n <div class=\"colorTile\" style=\"background-color: rgb(91,58,41);\"> </div>\n <p>\n Braun\n </p>\n </div><!--Braun-->\n <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"6\">\n <div class=\"colorTile\" style=\"background-color: rgb(0,187,45);\"> </div>\n <p>\n Grün\n </p>\n </div><!--Grün-->\n <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"7\">\n <div class=\"colorTile\" style=\"background-color: rgb(71,75,81);\"> </div>\n <p>\n Grau\n </p>\n </div><!--Grau-->\n <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"9\">\n <div class=\"colorTile\" style=\"background: linear-gradient(315deg, black, white);\"> </div>\n <p>\n Schwarz / Weiß\n </p>\n </div><!--Weiss/Schwarz-->\n <div @click=${this.onClickColorGroup} class=\"colorGroup active\" data-ralGroup=\"\">\n <div class=\"colorTile\" style=\"background: linear-gradient(135deg, red, yellow, lime, cyan, blue, mediumvioletred);\"> </div>\n <p>\n Alle\n </p>\n </div><!--Alle-->\n </div>\n\n <!-- Farben -->\n <div class=\"colorGrid\"></div>\n `;\n }\n\n async updated(_changedProperties: PropertyValues): Promise<void> {\n super.updated(_changedProperties);\n this._preventEvent = true;\n if (_changedProperties.has(\"manufacturer\")) {\n this._ralModel = await this.getRalColors();\n this._ralCode = undefined;\n this._ralRGB = undefined;\n this._currentGroup = undefined;\n this.currentCode = \"\";\n\n await this.GenerateColorGrid(this._currentGroup, true);\n }\n this._ralRGB = this._ralModel?.colors[this.currentCode] ? this._ralModel?.colors[this.currentCode][\"RGB\"] : \"\";\n let group = this.currentCode?.toUpperCase().replace(/\\s|RAL/gi, \"\");\n group = group?.substr(0, 1);\n this.shadowRoot ?\n (this.shadowRoot.querySelector(\".colorGroup[data-ralGroup='\" + group + \"']\") as HTMLElement).click()\n : null;\n\n }\n\n async firstUpdated(): Promise<void> {\n await this.getRalColors();\n }\n}\n","import { css, html, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./ncs-picker.component.sass?inline\";\nimport { customElement, property, query, queryAll } from \"lit/decorators.js\";\nimport { ColorPickerModel, INcsPickerData } from \"../../../models/color-picker/color-picker.model\";\nimport { TransitionHelper } from \"../../../utils/transition.helper\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\n@customElement(\"fv-ncs-picker\")\nexport class NcsPickerComponent extends BaseElement {\n private _ncsModel: INcsPickerData | undefined;\n private _ncsCode: string | undefined;\n private _ncsRGB: string | undefined;\n private _preventEvent = false;\n private _ncsMap: {[key: string]: string} = {};\n\n @property({ type: String, reflect: true })\n currentCode = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"disable-fade\" })\n private _disableFade = \"\";\n\n @property({ type: String, reflect: true })\n manufacturer = \"\";\n\n @query(\"#colorWheelCursor\")\n colorWheelCursor: HTMLImageElement | undefined;\n\n @query(\".colorGrid\")\n private colorGrid: HTMLDivElement | undefined;\n\n @query(\"#colorInput\")\n private colorInput: HTMLInputElement | undefined;\n\n @query(\"#errorMsgWrap\")\n private errorMsgWrap: HTMLElement | undefined;\n\n @query(\"#colorCurrent\")\n private colorCurrent: HTMLDivElement | undefined;\n\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n public async getColorByCode(code_: string): Promise<string | undefined> {\n const codeDefine = code_.replace(\"NCS_\", \"\");\n await this.getNcsColors();\n return this._ncsMap[codeDefine];\n }\n\n private dispatchColorChange() {\n if (this._preventEvent) {\n this._preventEvent = false;\n return;\n }\n if (this._ncsCode) {\n const ncsDefine = this._ncsCode.replace(\"NCS_\", \"\");\n const rgb = this._ncsMap[ncsDefine].split(\",\");\n if (rgb) {\n const colorChangeEvent = new CustomEvent(\"colorChange\", {\n detail: {\n code: this._ncsCode,\n rgba: {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n a: 1\n }\n },\n bubbles: false\n });\n this.dispatchEvent(colorChangeEvent);\n }\n }\n }\n\n private async GenerateColorGrid (group?: string) {\n if (this.colorGrid && this._ncsModel) {\n let currentColorField: HTMLElement | undefined;\n const currentNCSDefine = this._ncsCode?.substr(4);\n if (!this._disableFade) await TransitionHelper.fadeOut(this.colorGrid, 0.3);\n this.colorGrid.innerHTML = \"\";\n if (group) {\n for (const color in this._ncsModel.colors[group]) {\n const colorField = document.createElement(\"div\");\n colorField.classList.add(\"colorField\");\n colorField.style.backgroundColor = `rgb(${this._ncsModel.colors[group][color]})`;\n colorField.setAttribute(\"data-ncsValue\", color);\n colorField.innerHTML = \" \";\n colorField.addEventListener(\"click\", this.onColorFieldClick);\n if (currentNCSDefine && color === currentNCSDefine) {\n currentColorField = colorField;\n }\n this.colorGrid.appendChild(colorField);\n }\n }\n if (currentColorField) {\n currentColorField.click();\n }\n if (!this._disableFade) await TransitionHelper.fadeIn(this.colorGrid, 0.3);\n }\n }\n\n private CheckNCSCodeIsValid(NCSCode: string, showErrors = true) {\n if (!this._ncsModel) return false;\n const RgxTest = /(S[0-9]{4}-[YRBGN])([0-9]{2}[YRBG])?(\\[#TZ#\\](.*))?$/;\n NCSCode = NCSCode.toUpperCase();\n\n if (!RgxTest.test(NCSCode)) {\n // ncs doesn't match the right formatation\n if (showErrors) this.ShowErrorMessage(\"ncsWrongFormat\");\n return false;\n }\n else {\n this.RemoveErrorMessage(\"ncsWrongFormat\");\n let ncsFound = false;\n\n NCSCode = NCSCode.split(\"[#TZ#]\")[0];\n\n for (const i in this._ncsModel.colors) {\n for (const b in this._ncsModel.colors[i]) {\n if (NCSCode === b) {\n ncsFound = true;\n }\n }\n }\n\n if (ncsFound) {\n this.RemoveErrorMessage(\"ncsNotFound\");\n return true;\n }\n else {\n if (showErrors) this.ShowErrorMessage(\"ncsNotFound\");\n return false;\n }\n }\n return false;\n }\n\n private SetColorWheel() {\n if (this.colorWheelCursor && this._ncsCode) {\n const Farbe = this._ncsCode.split(\"-\")[1];\n const FistCharacter = Farbe.substr(0, 1);\n // change color-wheel rotation\n if (FistCharacter != \"N\") {\n this.colorWheelCursor?.classList.remove(\"hidden\");\n const anteil = parseInt(Farbe.substr(1, 2));\n let deg = anteil / 10 * 9;\n\n if (FistCharacter == \"R\") deg += 90;\n else if (FistCharacter == \"B\") deg += 180;\n else if (FistCharacter == \"G\") deg += 270;\n\n this.colorWheelCursor.style.transform = `rotate(${deg}deg)`;\n\n }\n else {\n this.colorWheelCursor?.classList.add(\"hidden\");\n }\n\n this.GenerateColorGrid(Farbe);\n }\n }\n\n private ShowErrorMessage(Message: string) {\n if (this.shadowRoot) {\n let ncsWrongFormat = this.shadowRoot.querySelector(\"#ncsWrongFormat\");\n let ncsNotFound = this.shadowRoot.querySelector(\"#ncsNotFound\");\n switch (Message.toUpperCase()) {\n case \"NCSWRONGFORMAT\":\n if (!ncsWrongFormat) {\n ncsWrongFormat = document.createElement(\"p\");\n ncsWrongFormat.id = \"ncsWrongFormat\";\n ncsWrongFormat.classList.add(\"errorMsg\");\n ncsWrongFormat.textContent = LocaleService.translate(\"51115\", \"NCS-Code hat das Falsche Format! Beispiel Format: NCS S0300-N\");\n this.errorMsgWrap?.appendChild(ncsWrongFormat);\n this.colorInput?.classList.add(\"error\");\n }\n break;\n case \"NCSNOTFOUND\":\n if (!ncsNotFound) {\n ncsNotFound = document.createElement(\"p\");\n ncsNotFound.id = \"ncsNotFound\";\n ncsNotFound.classList.add(\"errorMsg\");\n ncsNotFound.textContent = LocaleService.translate(\"51117\", \"NCS-Code konnte nicht gefunden werden!\");\n this.errorMsgWrap?.appendChild(ncsNotFound);\n this.colorInput?.classList.add(\"error\");\n }\n break;\n }\n\n if (ncsWrongFormat && ncsNotFound) {\n this.colorInput?.classList.remove(\"error\");\n }\n }\n }\n\n private RemoveErrorMessage(Message:string) {\n if (this.shadowRoot) {\n let ncsWrongFormat = this.shadowRoot.querySelector(\"#ncsWrongFormat\");\n let ncsNotFound = this.shadowRoot.querySelector(\"#ncsNotFound\");\n switch (Message.toUpperCase()) {\n case \"NCSWRONGFORMAT\":\n ncsWrongFormat?.remove();\n break;\n case \"NCSNOTFOUND\":\n ncsNotFound?.remove();\n break;\n default:\n ncsWrongFormat = null;\n ncsNotFound = null;\n if (this.errorMsgWrap) this.errorMsgWrap.innerHTML = \"\";\n break;\n }\n if (!ncsWrongFormat && !ncsNotFound) {\n this.colorInput?.classList.remove(\"error\");\n }\n }\n }\n\n private async getNcsColors() {\n this._ncsModel = await ColorPickerModel.getNCS({ manufacturer: this.manufacturer });\n if (this._ncsModel) {\n const keys = Object.keys(this._ncsModel.colors);\n keys.forEach((key) => {\n if (this._ncsModel) {\n Object.keys(this._ncsModel.colors[key]).forEach((rgbKey)=>{\n if (this._ncsModel) this._ncsMap[rgbKey] = this._ncsModel.colors[key][rgbKey];\n });\n }\n });\n }\n }\n\n private onColorFieldClick = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n if (this.shadowRoot && this._ncsModel) {\n const currentElement: HTMLElement = (e.currentTarget as HTMLElement);\n this._ncsCode = \"NCS_\" + currentElement.getAttribute(\"data-ncsvalue\");\n this.shadowRoot.querySelectorAll(\".colorField.active\").forEach((value)=> {\n value.classList.remove(\"active\");\n });\n currentElement.classList.add(\"active\");\n this.RemoveErrorMessage(\"all\");\n this._ncsRGB = this._ncsMap[this._ncsCode.replace(\"NCS_\", \"\")];\n if (this.colorInput) {\n this.colorInput.value = this._ncsCode.replace(\"NCS_\", \"\");\n }\n\n if (this.colorCurrent) this.colorCurrent.style.background = `rgb(${this._ncsRGB})`;\n this.dispatchColorChange();\n }\n }\n\n private onWheelAreaClick = (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (!this.colorWheelCursor) return;\n const boundingClientRect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const x = (e.x - boundingClientRect.top) + window.scrollX;\n const y = (e.y - boundingClientRect.left) + window.scrollY;\n\n const MiddleX = (boundingClientRect.left) + (boundingClientRect.width / 2);\n const MiddleY = (boundingClientRect.top) + (boundingClientRect.height / 2);\n const MouseX = e.pageX;\n const MouseY = e.pageY;\n const rad = Math.atan2(MouseX - MiddleX, MouseY - MiddleY);\n let deg = (rad * (180 / Math.PI) * -1) + 180;\n deg = Math.round(deg / 9) * 9;\n\n const AbstandMitte = Math.sqrt(Math.pow(MouseX - MiddleX, 2) + Math.pow(MouseY - MiddleY, 2));\n let group = \"N\";\n\n if (AbstandMitte <= 10) {\n this.colorWheelCursor.classList.add(\"hidden\");\n group = \"N\";\n }\n else {\n let NCSColorClear = false;\n this.colorWheelCursor.classList.remove(\"hidden\");\n\n if (deg % 90 == 0) {\n NCSColorClear = true;\n }\n\n const ceilDeg = Math.ceil(deg / 10) * 10;\n\n\n if (deg < 90 || deg == 360) {\n if (NCSColorClear) {\n group = \"Y\";\n }\n else {\n group = \"Y\" + ceilDeg + \"R\";\n }\n }\n else if (deg < 180) {\n if (NCSColorClear) {\n group = \"R\";\n }\n else {\n group = \"R\" + Math.abs(90 - ceilDeg) + \"B\";\n }\n }\n else if (deg < 270) {\n if (NCSColorClear) {\n group = \"B\";\n }\n else {\n group = \"B\" + Math.abs(180 - ceilDeg) + \"G\";\n }\n }\n else if (deg < 360) {\n if (NCSColorClear) {\n group = \"G\";\n }\n else {\n group = \"G\" + Math.abs(270 - ceilDeg) + \"Y\";\n }\n }\n\n this.colorWheelCursor.style.transform = `rotate(${deg}deg)`;\n }\n this.GenerateColorGrid(group)\n .then(()=>{\n this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n });\n }\n\n private onColorInputSubmit = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n if (!this.colorInput) return;\n const InputValue = this.colorInput.value.toUpperCase().replace(/\\s|NCS/gi, \"\");\n if (this.CheckNCSCodeIsValid(InputValue)) {\n this._ncsCode = \"NCS_\" + InputValue;\n this.SetColorWheel();\n this._ncsRGB = this._ncsMap[InputValue];\n\n }\n }\n\n private onFocusColorInput = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n (e.currentTarget as HTMLInputElement).select();\n }\n\n private onColorInput = async (e: Event) => {\n if (!this.colorInput) return;\n const InputValue = this.colorInput.value.toUpperCase().replace(/\\s|NCS/gi, \"\");\n if (this.CheckNCSCodeIsValid(InputValue, true)) {\n this._ncsCode = \"NCS_\" + InputValue;\n this.SetColorWheel();\n this._ncsRGB = this._ncsMap[InputValue];\n }\n }\n\n render() {\n return html`\n <!-- NCS Eingabe -->\n <div class=\"colorInputWrap\">\n <div class=\"inputContainer\">\n <div id=\"colorCurrent\"></div>\n <input type=\"text\" id=\"colorInput\" @input=${this.onColorInput} @focus=${this.onFocusColorInput} @change=${this.onColorInput} value=\"\" placeholder=\"${LocaleService.translate(\"enter_NCS_code\", \"NCS-Code eingeben\")}\"/>\n <button id=\"colorInputSubmit\" @click=${this.onColorInputSubmit}><span>≻</span></button>\n </div>\n <div id=\"errorMsgWrap\"><!-- Hier werden Fehlermeldungen reingeschrieben --></div>\n </div>\n <!-- Farbton-Kreis -->\n <div class=\"colorWheelWrap\">\n <div class=\"colorWheelclickArea\" @click=${this.onWheelAreaClick}></div>\n <div class=\"colorWheelCursorContainer\">\n <div id=\"colorWheelCursor\"></div>\n </div>\n <div class=\"colorWheel\"></div>\n </div>\n <!-- Farb-Nuancen -->\n <div class=\"colorGrid\"><!-- Hier werden Farb-Nuancen reingeschrieben --></div>\n `;\n }\n\n async updated(_changedProperties: PropertyValues) {\n super.updated(_changedProperties);\n this._preventEvent = true;\n if (_changedProperties.has(\"manufacturer\")) {\n await this.getNcsColors();\n this._ncsCode = \"\";\n this._ncsRGB = undefined;\n this.currentCode = \"\";\n await this.GenerateColorGrid();\n }\n this._ncsCode = this.currentCode;\n await this.SetColorWheel();\n this._preventEvent = false;\n }\n\n async firstUpdated() {\n await this.getNcsColors();\n this.SetColorWheel();\n }\n}\n","import { css, html, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./sikkens-picker.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { ColorPickerModel, ISikkensPickerData } from \"../../../models/color-picker/color-picker.model\";\nimport { TransitionHelper } from \"../../../utils/transition.helper\";\nimport { BaseElement } from \"../../standard/base/base.component\";\n\n@customElement(\"fv-sikkens-picker\")\nexport class SikkensPickerComponent extends BaseElement {\n private _sikkensModel: ISikkensPickerData | undefined;\n private _sikkensCode: string | undefined;\n private _sikkensRGB: string | undefined;\n private _preventEvent = false;\n private _sikkensMap: {[key: string]: string} = {};\n\n @property({ type: String, reflect: true })\n currentCode = \"\";\n\n @property({ type: String, reflect: true })\n manufacturer = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"disable-fade\" })\n private _disableFade = \"\";\n\n @query(\"#colorWheelCursor\")\n colorWheelCursor: HTMLImageElement | undefined;\n\n @query(\".colorGrid\")\n private colorGrid: HTMLDivElement | undefined;\n\n @query(\"#colorInput\")\n private colorInput: HTMLInputElement | undefined;\n\n @query(\"#errorMsgWrap\")\n private errorMsgWrap: HTMLElement | undefined;\n\n @query(\"#colorCurrent\")\n private colorCurrent: HTMLDivElement | undefined;\n\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n public async getColorByCode(code_: string): Promise<string | undefined> {\n const codeDefine = code_.replace(\"SIKKENS_\", \"\");\n await this.getSikkensColors();\n return this._sikkensMap[codeDefine];\n }\n\n private dispatchColorChange() {\n if (this._preventEvent) {\n this._preventEvent = false;\n return;\n }\n if (this._sikkensCode) {\n const sikkensDefine = this._sikkensCode.replace(\"SIKKENS_\", \"\");\n const rgb = this._sikkensMap[sikkensDefine].split(\",\");\n if (rgb) {\n const colorChangeEvent = new CustomEvent(\"colorChange\", {\n detail: {\n code: this._sikkensCode,\n rgba: {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n a: 1\n }\n },\n bubbles: false\n });\n this.dispatchEvent(colorChangeEvent);\n }\n }\n }\n\n private async GenerateColorGrid (group?: string) {\n if (this.colorGrid && this._sikkensModel) {\n let currentColorField: HTMLElement | undefined;\n const currentSIKKENSDefine = this._sikkensCode?.replace(\"SIKKENS_\", \"\");\n if (!this._disableFade) await TransitionHelper.fadeOut(this.colorGrid, 0.3);\n this.colorGrid.innerHTML = \"\";\n if (group) {\n for (const color in this._sikkensModel.colors[group]) {\n const hexVal = this._sikkensModel.colors[group][color].HEX;\n const colorField = document.createElement(\"div\");\n colorField.classList.add(\"colorField\");\n colorField.style.backgroundColor = hexVal;\n colorField.setAttribute(\"data-SikkensValue\", color);\n colorField.innerHTML = \" \";\n colorField.addEventListener(\"click\", this.onColorFieldClick);\n if (currentSIKKENSDefine && color === currentSIKKENSDefine) {\n currentColorField = colorField;\n }\n this.colorGrid.appendChild(colorField);\n }\n }\n if (currentColorField) {\n currentColorField.click();\n }\n if (!this._disableFade) await TransitionHelper.fadeIn(this.colorGrid, 0.3);\n }\n }\n\n private CheckSikkensCodeIsValid(SikkensCode: string, showErrors = true) {\n if (!this._sikkensModel) return false;\n const RgxTest = /^[a-hj-zA-HJ-Z][nN0-9].[0-9]{2}.[0-9]{2}$/;\n if (!RgxTest.test(SikkensCode)) {\n if (showErrors) this.ShowErrorMessage(\"SIKKENSWRONGFORMAT\");\n return false;\n }\n else {\n this.RemoveErrorMessage(\"SikkensWRONGFORMAT\");\n let SikkensFound = false;\n\n const Farbton = (SikkensCode.split(\".\")[0]).substr(0, 1);\n if (this._sikkensModel.colors[Farbton][SikkensCode]) SikkensFound = true;\n\n if (SikkensFound) {\n this.RemoveErrorMessage(\"SikkensNOTFOUND\");\n return true;\n }\n else {\n if (showErrors) this.ShowErrorMessage(\"SIKKENSNOTFOUND\");\n return false;\n }\n }\n return false;\n }\n\n private SetColorWheel() {\n if (this.colorWheelCursor && this._sikkensCode) {\n const grundfarbe = this._sikkensCode.replace(\"SIKKENS_\", \"\").split(\".\")[0];\n const grundbuchstabe = grundfarbe.substr(0, 1);\n let group = 0;\n if (grundbuchstabe === \"O\") {\n this.colorWheelCursor?.classList.add(\"hidden\");\n }\n else {\n this.colorWheelCursor?.classList.remove(\"hidden\");\n switch (grundbuchstabe) {\n case \"A\":\n group = 0;\n break;\n case \"B\":\n group = 1;\n break;\n case \"C\":\n group = 2;\n break;\n case \"D\":\n group = 3;\n break;\n case \"E\":\n group = 4;\n break;\n case \"F\":\n group = 5;\n break;\n case \"G\":\n group = 6;\n break;\n case \"H\":\n group = 7;\n break;\n case \"J\":\n group = 8;\n break;\n case \"K\":\n group = 9;\n break;\n case \"L\":\n group = 10;\n break;\n case \"M\":\n group = 11;\n break;\n case \"N\":\n group = 12;\n break;\n case \"P\":\n group = 13;\n break;\n case \"Q\":\n group = 14;\n break;\n case \"R\":\n group = 15;\n break;\n case \"S\":\n group = 16;\n break;\n case \"T\":\n group = 17;\n break;\n case \"U\":\n group = 18;\n break;\n case \"V\":\n group = 19;\n break;\n case \"W\":\n group = 20;\n break;\n case \"X\":\n group = 21;\n break;\n case \"Y\":\n group = 22;\n break;\n case \"Z\":\n group = 23;\n break;\n default:\n break;\n }\n this.colorWheelCursor.style.transform = `rotate(${group * 15}deg)`;\n }\n\n this.GenerateColorGrid(grundbuchstabe)\n .then(()=>{\n this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n })\n }\n }\n\n private ShowErrorMessage(Message: string) {\n if (this.shadowRoot) {\n let sikkensWrongFormat = this.shadowRoot.querySelector(\"#SikkensWrongFormat\");\n let sikkensNotFound = this.shadowRoot.querySelector(\"#SikkensNotFound\");\n switch (Message.toUpperCase()) {\n case \"SIKKENSWRONGFORMAT\":\n if (!sikkensWrongFormat) {\n sikkensWrongFormat = document.createElement(\"p\");\n sikkensWrongFormat.id = \"SikkensWrongFormat\";\n sikkensWrongFormat.classList.add(\"errorMsg\");\n sikkensWrongFormat.textContent = \"sikkens Code hat ein falsches Format.\";\n this.errorMsgWrap?.appendChild(sikkensWrongFormat);\n this.colorInput?.classList.add(\"error\");\n }\n break;\n case \"SIKKENSNOTFOUND\":\n if (!sikkensNotFound) {\n sikkensNotFound = document.createElement(\"p\");\n sikkensNotFound.id = \"SikkensNotFound\";\n sikkensNotFound.classList.add(\"errorMsg\");\n sikkensNotFound.textContent = \"sikkens Code wurde nicht gefunden.\";\n this.errorMsgWrap?.appendChild(sikkensNotFound);\n this.colorInput?.classList.add(\"error\");\n }\n break;\n }\n\n if (sikkensWrongFormat && sikkensNotFound) {\n this.colorInput?.classList.remove(\"error\");\n }\n }\n }\n\n private RemoveErrorMessage(Message:string) {\n if (this.shadowRoot) {\n let sikkensWrongFormat = this.shadowRoot.querySelector(\"#SikkensWrongFormat\");\n let sikkensNotFound = this.shadowRoot.querySelector(\"#SikkensNotFound\");\n switch (Message.toUpperCase()) {\n case \"SikkensWRONGFORMAT\":\n sikkensWrongFormat?.remove();\n break;\n case \"SikkensNOTFOUND\":\n sikkensNotFound?.remove();\n break;\n default:\n sikkensWrongFormat = null;\n sikkensNotFound = null;\n if (this.errorMsgWrap) this.errorMsgWrap.innerHTML = \"\";\n break;\n }\n if (!sikkensWrongFormat && !sikkensNotFound) {\n this.colorInput?.classList.remove(\"error\");\n }\n }\n }\n\n private async getSikkensColors() {\n this._sikkensModel = await ColorPickerModel.getSikkens({ manufacturer: this.manufacturer });\n if (this._sikkensModel) {\n const keys = Object.keys(this._sikkensModel.colors);\n keys.forEach((key) => {\n if (this._sikkensModel) {\n Object.keys(this._sikkensModel.colors[key]).forEach((rgbKey)=>{\n if (this._sikkensModel) this._sikkensMap[rgbKey] = `${this._sikkensModel.colors[key][rgbKey].R},${this._sikkensModel.colors[key][rgbKey].G},${this._sikkensModel.colors[key][rgbKey].B}`;\n });\n }\n });\n }\n }\n\n private onColorFieldClick = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n if (this.shadowRoot && this._sikkensModel) {\n const currentElement: HTMLElement = (e.currentTarget as HTMLElement);\n const colorCode = currentElement.getAttribute(\"data-SikkensValue\") + \"\";\n this._sikkensCode = \"SIKKENS_\" + colorCode;\n this.shadowRoot.querySelectorAll(\".colorField.active\").forEach((value)=> {\n value.classList.remove(\"active\");\n });\n currentElement.classList.add(\"active\");\n this.RemoveErrorMessage(\"all\");\n const colorCodeSnippet = (colorCode.split(\".\")[0]).substr(0, 1);\n const sikkensObj = this._sikkensModel.colors[colorCodeSnippet][this._sikkensCode.replace(\"SIKKENS_\", \"\")];\n this._sikkensRGB = `${sikkensObj.R + \",\" + sikkensObj.G + \",\" + sikkensObj.B}`;\n\n if (this.colorCurrent) this.colorCurrent.style.background = `rgb(${this._sikkensRGB})`;\n this.dispatchColorChange();\n }\n }\n\n private onWheelAreaClick = (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (!this.colorWheelCursor) return;\n const boundingClientRect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const x = (e.x - boundingClientRect.top) + window.scrollX;\n const y = (e.y - boundingClientRect.left) + window.scrollY;\n\n const MiddleX = (boundingClientRect.left) + (boundingClientRect.width / 2);\n const MiddleY = (boundingClientRect.top) + (boundingClientRect.height / 2);\n const MouseX = e.pageX;\n const MouseY = e.pageY;\n const ErgX = MouseX - MiddleX;\n const ErgY = MouseY - MiddleY;\n const rad = Math.atan2(ErgX, ErgY);\n let deg = (rad * (180 / Math.PI) * -1) + 180;\n deg = Math.round(deg / 15) * 15;\n\n const AbstandMitte = Math.sqrt(Math.pow(ErgX, 2) + Math.pow(ErgY, 2));\n\n let SikkensColorGroup = \"\";\n\n if (AbstandMitte <= 10) {\n this.colorWheelCursor.classList.add(\"hidden\");\n SikkensColorGroup = \"O\";\n }\n else {\n this.colorWheelCursor.classList.remove(\"hidden\");\n const group: number = Math.floor((deg / 360) * 24);\n\n switch (group) {\n case 0:\n case 24:\n SikkensColorGroup = \"A\";\n break;\n case 1:\n SikkensColorGroup = \"B\";\n break;\n case 2:\n SikkensColorGroup = \"C\";\n break;\n case 3:\n SikkensColorGroup = \"D\";\n break;\n case 4:\n SikkensColorGroup = \"E\";\n break;\n case 5:\n SikkensColorGroup = \"F\";\n break;\n case 6:\n SikkensColorGroup = \"G\";\n break;\n case 7:\n SikkensColorGroup = \"H\";\n break;\n case 8:\n SikkensColorGroup = \"J\";\n break;\n case 9:\n SikkensColorGroup = \"K\";\n break;\n case 10:\n SikkensColorGroup = \"L\";\n break;\n case 11:\n SikkensColorGroup = \"M\";\n break;\n case 12:\n SikkensColorGroup = \"N\";\n break;\n case 13:\n SikkensColorGroup = \"P\";\n break;\n case 14:\n SikkensColorGroup = \"Q\";\n break;\n case 15:\n SikkensColorGroup = \"R\";\n break;\n case 16:\n SikkensColorGroup = \"S\";\n break;\n case 17:\n SikkensColorGroup = \"T\";\n break;\n case 18:\n SikkensColorGroup = \"U\";\n break;\n case 19:\n SikkensColorGroup = \"V\";\n break;\n case 20:\n SikkensColorGroup = \"W\";\n break;\n case 21:\n SikkensColorGroup = \"X\";\n break;\n case 22:\n SikkensColorGroup = \"Y\";\n break;\n case 23:\n SikkensColorGroup = \"Z\";\n break;\n default:\n break;\n }\n\n\n this.colorWheelCursor.style.transform = `rotate(${deg}deg)`;\n }\n\n this.GenerateColorGrid(SikkensColorGroup)\n .then(()=>{\n this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n })\n\n }\n\n private onColorInputSubmit = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n if (!this.colorInput) return;\n const InputValue = this.colorInput.value.toUpperCase().replace(/\\s|SIKKENS/gi, \"\");\n if (this.CheckSikkensCodeIsValid(InputValue)) {\n this._sikkensCode = \"SIKKENS_\" + InputValue;\n this.SetColorWheel();\n this._sikkensRGB = this._sikkensMap[InputValue];\n\n }\n }\n\n private onFocusColorInput = (e: Event) => {\n (e.currentTarget as HTMLInputElement).select();\n }\n\n private onColorInput = async (e: Event) => {\n if (!this.colorInput) return;\n const InputValue = this.colorInput.value.toUpperCase().replace(/\\s|SIKKENS/gi, \"\");\n if (this.CheckSikkensCodeIsValid(InputValue, true)) {\n this._sikkensCode = \"SIKKENS_\" + InputValue;\n this.SetColorWheel();\n this._sikkensRGB = this._sikkensMap[InputValue];\n }\n }\n\n render() {\n return html`\n <!-- SIKKES Eingabe -->\n <div class=\"colorInputWrap\">\n <div class=\"inputContainer\">\n <div id=\"colorCurrent\"></div>\n <input type=\"text\" id=\"colorInput\" @input=${this.onColorInput} @focus=${this.onFocusColorInput} @change=${this.onColorInput} value=\"\" placeholder=\"SIKKENS-Code eingeben\"/>\n <button id=\"colorInputSubmit\" @click=${this.onColorInputSubmit}><span>≻</span></button>\n </div>\n <div id=\"errorMsgWrap\"><!-- Hier werden Fehlermeldungen reingeschrieben --></div>\n </div>\n <!-- Farbton-Kreis -->\n <div class=\"colorWheelWrap\">\n <div class=\"colorWheelclickArea\" @click=${this.onWheelAreaClick}></div>\n <div class=\"colorWheelCursorContainer\">\n <div id=\"colorWheelCursor\"></div>\n </div>\n <div class=\"colorWheel\"></div>\n </div>\n \n <!-- Farb-Nuancen --> \n <div class=\"colorGrid\"><!-- Hier werden Farb-Nuancen reingeschrieben --></div>\n `;\n }\n\n async updated(_changedProperties: PropertyValues) {\n super.updated(_changedProperties);\n this._preventEvent = true;\n if (_changedProperties.has(\"manufacturer\")) {\n await this.getSikkensColors();\n this._sikkensCode = \"\";\n this._sikkensRGB = undefined;\n this.currentCode = \"\";\n await this.GenerateColorGrid();\n this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n }\n this._sikkensCode = this.currentCode;\n await this.SetColorWheel();\n this._preventEvent = false;\n }\n\n async firstUpdated() {\n await this.getSikkensColors();\n this.SetColorWheel();\n }\n}\n","import {PPContainerComponent} from \"../pp-container.component\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {css, html, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./pp-property-value.component.sass?inline\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {PTContainerComponent} from \"../../prop-transfer/pt-container.component\";\nimport {RalPickerComponent} from \"../../../colorpicker/ral/ral-picker.component\";\nimport {NcsPickerComponent} from \"../../../colorpicker/ncs/ncs-picker.component\";\nimport {SikkensPickerComponent} from \"../../../colorpicker/sikkens/sikkens-picker.component\";\nimport {BaseElement} from \"../../../standard/base/base.component\";\nimport {ProgressComponent} from \"../../../standard/loading/progress\";\nimport {CommunicationMessageService, DragDropService} from \"@dh-software/webui-api\";\nimport {DragType} from \"@dh-software/webui-types\";\n\nexport interface IPPItem {\n imgUrl: string\n name: string\n manufacturer: string\n program: string\n key: string\n property: string\n propertyKey: string,\n containerComponent: PPContainerComponent | PTContainerComponent\n colorPicker?: { type?: string, rgb?: string, code?: string }\n}\n\ntype PickerComponent = RalPickerComponent | NcsPickerComponent | SikkensPickerComponent;\n\n@customElement(\"fv-pp-value\")\nexport class PPPropertyValueComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({attribute: false})\n PPContainerComponent: PPContainerComponent | PTContainerComponent | null = null;\n\n @property({type: String, reflect: true})\n itemName = \"\";\n\n @property({type: String, reflect: true})\n image = \"\";\n\n @property({type: String}) manufacturer = \"\";\n @property({type: String}) program = \"\";\n @property({type: String}) propertyId = \"\";\n @property({type: String}) propertyKeyValue = \"\";\n @property({type: String}) propertyKey = \"\";\n @property({type: Object}) colorPicker?: { type?: string, code?: string, rgb?: string };\n\n @property({type: Boolean, reflect: true})\n draggable = false;\n\n @property({type: Boolean, reflect: true, attribute: \"half-size\"})\n halfSize = false;\n\n @query(\".color-picker\")\n private colorPickerDiv: HTMLDivElement | undefined;\n\n @query(\"fv-progress\")\n private _progress: ProgressComponent | undefined;\n\n private _progressTimer: number | undefined;\n private _colorPickerInstance?: PickerComponent;\n\n public get ColorPicker(): PickerComponent | undefined {\n return this._colorPickerInstance;\n }\n\n public set Image(val_: string) {\n this.image = val_ ? `background-${\n val_.startsWith(\"#\") ?\n `color: ${val_}` :\n val_.split(\",\").length >= 2 ?\n `color: rgba(${val_})`\n : `image: url(${val_})`\n }` : this.image;\n }\n\n /** @deprecated pass reactive props directly via the template instead. */\n constructor(options?: IPPItem) {\n super();\n if (options) {\n this.itemName = options.name || \"\";\n this.manufacturer = options.manufacturer || \"\";\n this.program = options.program || \"\";\n this.propertyId = options.key || \"\";\n this.propertyKeyValue = options.property || \"\";\n this.propertyKey = options.propertyKey || \"\";\n this.halfSize = !!options.containerComponent?.halfSize;\n this.PPContainerComponent = options.containerComponent;\n this.draggable = !!options.containerComponent?.draggable\n || options.containerComponent?.getAttribute(\"draggable\") !== null;\n this.Image = options.imgUrl;\n if (options.colorPicker) this.colorPicker = options.colorPicker;\n }\n }\n\n protected willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n if (changed.has(\"colorPicker\") && this.colorPicker?.type) {\n this.classList.add(\"color-picker\");\n this._ensurePicker(this.colorPicker.type);\n }\n if (changed.has(\"halfSize\")) this.classList.toggle(\"halfSize\", this.halfSize);\n }\n\n private _ensurePicker(type: string): void {\n if (this._colorPickerInstance) return;\n switch (type) {\n case \"RAL\": this._colorPickerInstance = new RalPickerComponent(); break;\n case \"NCS\": this._colorPickerInstance = new NcsPickerComponent(); break;\n case \"SIKKENS\": this._colorPickerInstance = new SikkensPickerComponent(); break;\n default: return;\n }\n this._colorPickerInstance.getColorByCode(this.propertyKeyValue.replace(/\\[CP\\].*\\[CP\\]/g, \"\")).then(imgUrl => {\n if (imgUrl) this.Image = imgUrl;\n });\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n this.addEventListener(\"click\", this._onClick);\n if (this._colorPickerInstance) {\n this.colorPickerDiv?.appendChild(this._colorPickerInstance);\n this._colorPickerInstance.classList.add(\"color-picker\");\n this._colorPickerInstance.addEventListener(\"colorChange\", this._onColorChange);\n }\n }\n\n private _onClick = (e: Event) => {\n e.stopPropagation();\n if (!this.PPContainerComponent || this.PPContainerComponent.IsBusy) return;\n if (this._progressTimer) {\n clearTimeout(this._progressTimer);\n this._progressTimer = undefined;\n }\n this._progress?.show?.();\n if (this._colorPickerInstance) {\n const isActive = this.classList.contains(\"active\");\n if (isActive) return;\n this.classList.add(\"active\");\n this.colorPickerDiv?.classList.remove(\"hidden\");\n this.parentNode?.childNodes.forEach((child: ChildNode) => {\n (child as HTMLElement).classList[child !== this ? \"add\" : \"remove\"](\"hidden\");\n });\n this.previousElementSibling?.scrollIntoView();\n (this.parentNode as HTMLDivElement)?.classList.add(\"is-color-picker\");\n return;\n }\n this.PPContainerComponent.IsBusy = true;\n CommunicationMessageService.modifyProperty(JSON.stringify([{\n manufacturer: this.manufacturer,\n program: this.program,\n key: this.propertyId,\n property: this.propertyKeyValue,\n propertyKey: this.propertyKey,\n }]), this.PPContainerComponent.PPOptions).then(async () => {\n if (this._progress) this._progress.finished = true;\n this.PPContainerComponent?.requestUpdate();\n this._progressTimer = setTimeout(() => this._progress?.hide?.(), 1000) as unknown as number;\n });\n };\n\n private _onColorChange = (e: Event) => {\n this.classList.add(\"hidden\");\n const detail = (e as CustomEvent).detail as {\n code: string;\n rgba: { r: number; g: number; b: number; a: 1 };\n };\n CommunicationMessageService.modifyProperty(JSON.stringify([{\n manufacturer: this.manufacturer,\n program: this.program,\n key: this.propertyId,\n property: this.propertyKeyValue,\n propertyKey: this.propertyKey,\n }]), Object.assign({\n modifyColorPicker: {\n code: detail.code,\n rgb: `${detail.rgba.r},${detail.rgba.g},${detail.rgba.b}`,\n key: this.propertyKey,\n id: this.propertyId,\n },\n }, this.PPContainerComponent?.PPOptions)).then(async () => {\n if (this._progress) this._progress.finished = true;\n this.PPContainerComponent?.requestUpdate();\n setTimeout(() => this._progress?.hide?.(), 1000);\n });\n };\n\n render() {\n DragDropService.removeElement(this);\n if (this.draggable) {\n DragDropService.addElement(this, {\n extData: {\n manufacturer: this.manufacturer,\n program: this.program,\n key: this.propertyId,\n property: this.propertyKeyValue,\n propertyKey: this.propertyKey,\n },\n id: this.propertyId,\n type: DragType.PROGPROPERTY,\n });\n }\n const imageVisibility = !!this.image || this.halfSize || !!this._colorPickerInstance;\n const classMapImage = {\n \"not-found\": !this.image,\n \"transparent\": !this.image && imageVisibility && !this._colorPickerInstance,\n \"pp-image\": true,\n };\n return html`\n <div class=\"pp-item-content\">\n ${imageVisibility ? html`\n <div class=\"pp-item-image\">\n <div class=${classMap(classMapImage)} style=\"${this.image ? `${this.image}` : \"\"}\">\n <fv-progress></fv-progress>\n </div>\n </div>` : \"\"}\n <div class=\"pp-item-name\">\n <span>${this.itemName}</span>\n </div>\n </div>\n <div class=\"color-picker hidden\"></div>\n `;\n }\n}\n","import { IPPItem, PPPropertyValueComponent } from \"./pp-property-value.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pp-property-values.component.sass?inline\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\n\n@customElement(\"fv-pp-values\")\nexport class PPPropertyValuesComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true })\n active = false;\n\n @property({ type: Boolean, reflect: true })\n noTransition = false;\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n\n addItem(item_: IPPItem): PPPropertyValueComponent {\n const item = new PPPropertyValueComponent(item_);\n return item;\n }\n}\n\n","import { customElement, property } from \"lit/decorators.js\";\nimport { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pp-property.component.sass?inline\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\n\nexport interface IPPMenu {\n title?: string\n hideItemCount?: boolean\n halfSize?: boolean\n}\n\n@customElement(\"fv-pp-property\")\nexport class PPPropertyComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true })\n currentImage = \"\";\n\n @property({ type: String, reflect: true })\n currentName = \"\";\n\n @property({ type: Number, reflect: true })\n itemCount = 0;\n\n @property({ type: Boolean, reflect: true })\n active = false;\n\n @property({ type: String, reflect: true })\n titleText = \"\";\n\n @property({ type: Boolean, reflect: true })\n transparentPlaceholder = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-item-count\" })\n hideItemCount = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"half-size\" })\n halfSize = false;\n\n /** @deprecated kept for back-compat — pass `.titleText` / `.hideItemCount` / `.halfSize` directly instead. */\n constructor(options?: IPPMenu) {\n super();\n if (options) {\n this.titleText = options.title || \"\";\n this.hideItemCount = !!options.hideItemCount;\n this.halfSize = !!options.halfSize;\n }\n }\n\n protected updated(changed: PropertyValues): void {\n super.updated(changed);\n if (changed.has(\"halfSize\")) this.classList.toggle(\"halfSize\", this.halfSize);\n }\n\n protected render(): TemplateResult<1> {\n const imageVisibility = (!this.active || this.currentImage) || this.halfSize;\n const classMapCurrentImage = {\n \"not-found\": !this.currentImage,\n \"transparent\": this.transparentPlaceholder,\n \"pp-image\": true,\n };\n return html`${imageVisibility ? html`<div class=\"pp-current-image\">\n <div class=${classMap(classMapCurrentImage)} style=\"${this.currentImage ? `background-${\n this.currentImage.startsWith(\"#\") ?\n `color: ${this.currentImage}` :\n this.currentImage.split(\",\").length >= 2 ?\n `color: rgba(${this.currentImage})` :\n `image: url(${this.currentImage})`}` : \"\"}\"></div>\n </div>` : \"\"}\n <div class=\"pp-info\">\n <div class=\"pp-group-title\">\n <span>${this.titleText}</span>\n </div>\n <div class=\"pp-current-name\">\n <span>${this.currentName}</span>\n </div>\n ${!this.hideItemCount && this.halfSize ? html`\n <div class=\"pp-items-counter\">\n <span>${this.itemCount}</span>\n </div>` : \"\"}\n </div>\n ${!this.hideItemCount && !this.halfSize ? html`\n <div class=\"pp-items-counter\">\n <span>${this.itemCount}</span>\n </div>` : \"\"}\n `;\n }\n}\n","import { PTContainerComponent } from \"../pt-container.component\";\nimport { PTPropertyGroupComponent } from \"../furnview_theme/pt-property-group.component\";\nimport { PPPropertyValuesComponent } from \"../../prog-property/furnview_theme/pp-property-values.component\";\nimport { PPPropertyComponent } from \"../../prog-property/furnview_theme/pp-property.component\";\nimport {ProgPropertyModel, PropTransferModel} from \"@dh-software/webui-api\";\nimport {\n IGetPropTransferParams,\n IProgPropertyExt,\n IProgPropertyValue,\n IPropTransferItem\n} from \"@dh-software/webui-types\";\n\nclass PTThemeIndexClass {\n async build(ppComponent: HTMLDivElement, containerComponent: PTContainerComponent, options: IGetPropTransferParams) {\n const values: Array<PTPropertyGroupComponent | PPPropertyValuesComponent | PPPropertyComponent> = [];\n await PropTransferModel.traverse({\n groupCallback: async (manufacturer, program, group, items) => {\n const valuesComponent = new PTPropertyGroupComponent();\n const progProperties: string[] = [];\n items.forEach((item) => {\n for (let i = 0; i < item.progProperties.length; i++) {\n progProperties.indexOf(item.progProperties[i]) === -1 ? progProperties.push(item.progProperties[i]) : null;\n }\n });\n\n if (items && options.grouped) {\n items.forEach((item: IPropTransferItem) => {\n valuesComponent.addItem(item);\n });\n }\n values.push(valuesComponent);\n const filteredProgProperties = await ProgPropertyModel.findMany(manufacturer, program, progProperties);\n Object.values(filteredProgProperties).forEach((progPropertyModel: IProgPropertyExt) => {\n const ppMenu: PPPropertyComponent = new PPPropertyComponent({ title: progPropertyModel.name, hideItemCount: containerComponent.hideItemCount });\n const progPropertyValueList = Object.values(progPropertyModel.children);\n const currentValue: IProgPropertyValue = (progPropertyModel.currentValue as unknown) as IProgPropertyValue;\n if (currentValue) {\n ppMenu.currentName = currentValue.name;\n ppMenu.currentImage = currentValue.alternativeImageUrl;\n }\n\n const ppItems: PPPropertyValuesComponent = new PPPropertyValuesComponent();\n ppItems.id = \"item_\" + progPropertyModel.id;\n values.push(ppMenu);\n values.push(ppItems);\n ppMenu.addEventListener(\"click\", () => {\n if (!ppMenu.active) {\n (ppComponent.querySelectorAll(\"fv-pp-property\") as NodeListOf<PPPropertyComponent>)\n .forEach((property: PPPropertyComponent) => {\n if (ppMenu !== property) {\n property.classList.add(\"hidden\");\n }\n });\n ppMenu.active = true;\n ppItems.active = true;\n }\n });\n\n ppMenu.itemCount = progPropertyValueList.length;\n for (let ppvI = 0; ppvI < progPropertyValueList.length; ppvI++) {\n const progPropertyValueModel = progPropertyValueList[ppvI];\n ppItems.addItem({\n colorPicker: progPropertyModel.colorPicker,\n imgUrl: progPropertyValueModel.alternativeImageUrl,\n name: progPropertyValueModel.name,\n manufacturer: progPropertyModel.manufacturerName.toLowerCase(),\n program: progPropertyModel.programName.toLowerCase(),\n key: progPropertyModel.id,\n property: progPropertyValueModel.key,\n propertyKey: progPropertyValueModel.propertyKey,\n containerComponent: containerComponent\n });\n }\n });\n\n },\n itemsCallback: async (item: IPropTransferItem) => {\n if (!options.grouped) {\n const valuesComponent = new PTPropertyGroupComponent();\n if (item) {\n valuesComponent.addItem(item);\n }\n values.push(valuesComponent);\n }\n }\n }, options);\n ppComponent.innerHTML = \"\";\n values.forEach((valueComponent) => {\n ppComponent.appendChild(valueComponent);\n });\n }\n}\n\nexport const PTCombineThemeIndex = new PTThemeIndexClass();\n","import { customElement, property, query } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pt-container.component.sass?inline\";\nimport { PTFurnviewThemeIndex } from \"./furnview_theme/pt-theme.index\";\nimport { PTCombineThemeIndex } from \"./combine_theme/pt-theme.index\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { PPMode } from \"../prog-property/pp-container.component\";\nimport { DropDownComponent } from \"../../standard/dropdown\";\nimport {ConfigurationService, EventFactoryService, LocaleService, RequestService, WebViewerService} from \"@dh-software/webui-api\";\nimport {IModifyPropertyOptions} from \"@dh-software/webui-types\";\n\nenum PPTheme {\n FURNVIEW = 1,\n COMBINE = 99\n}\n\n@customElement(\"fv-pt-container\")\nexport class PTContainerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\"#mode-dropdown\")\n private _ppModeDropdown?: DropDownComponent;\n\n @query(\".pt-component\")\n private _ptComponent: HTMLDivElement | undefined;\n\n @property({ type: Boolean, reflect: true })\n IsBusy = false;\n\n @property({ type: PPTheme, reflect: true })\n theme = PPTheme.FURNVIEW\n\n @property( { type: Boolean, reflect: true })\n halfSize = false\n\n @property( { type: Boolean, reflect: true })\n grouped = true\n\n @property({ type: Boolean, reflect: true })\n hideItemCount = false;\n\n @property( { type: Boolean, reflect: true, attribute: \"mode-selection\" })\n private _ppModeSelection = false;\n\n private _ppMode : PPMode = PPMode.ALL;\n\n get PPOptions() : IModifyPropertyOptions {\n const propertyOptions: IModifyPropertyOptions = {};\n switch (this._ppMode) {\n default:\n case PPMode.ALL:\n break;\n case PPMode.COMPONENT:\n propertyOptions.modifyComponent = true;\n break;\n case PPMode.ELEMENT:\n propertyOptions.modifyElement = true;\n break;\n }\n return propertyOptions;\n }\n\n constructor() {\n super();\n }\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n EventFactoryService.RefreshPropertyPanel.register(() => {\n this.loadPropertyPanel();\n });\n await RequestService.Initialized;\n\n await WebViewerService.IsAppReady;\n\n if (this._ppModeSelection && this._ppModeDropdown) {\n const config = await ConfigurationService.Configuration;\n if (!config.disable_properties_on_selection) {\n if (this._ppModeDropdown.parentElement) this._ppModeDropdown.parentElement.classList.remove(\"hidden\");\n this._ppModeDropdown.addEventListener(\"onChange\", ((evt: CustomEvent) => {\n this._ppMode = evt.detail.item.value as PPMode;\n }) as EventListener);\n this._ppModeDropdown.clearItems();\n this._ppModeDropdown.addItems([\n {\n text: await LocaleService.get(\"1701\"), value: PPMode.ALL\n },\n {\n text: await LocaleService.get(\"1702\"), value: PPMode.ELEMENT\n },\n {\n text: await LocaleService.get(\"1703\"), value: PPMode.COMPONENT\n }\n ], false);\n //await LocalesModel.get(\"1704\") // TODO CHECK IF NECESSARY\n }\n }\n\n await this.loadPropertyPanel();\n }\n\n async loadPropertyPanel(): Promise<void> {\n this.IsBusy = true;\n\n const oldScrollTop = this._ptComponent?.scrollTop;\n\n if (this._ptComponent) {\n switch (+this.theme) {\n case PPTheme.FURNVIEW:\n await PTFurnviewThemeIndex.build(this._ptComponent, this, { grouped: this.grouped, useSelection: true });\n break;\n case PPTheme.COMBINE:\n await PTCombineThemeIndex.build(this._ptComponent, this, { grouped: this.grouped, useSelection: true });\n break;\n }\n }\n\n await this.updateComplete;\n if (this._ptComponent && typeof oldScrollTop === \"number\") this._ptComponent.scrollTop = oldScrollTop;\n this.IsBusy = false;\n }\n\n render(): TemplateResult<1> {\n return html`\n ${ this._ppModeSelection ? html`\n <div class=\"hidden\">\n <fv-dropdown id=\"mode-dropdown\"></fv-dropdown>\n </div>\n ` : \"\" }\n <div class=\"pt-component\">\n <slot></slot>\n </div>`;\n }\n}\n\n","import {BaseElement} from \"../standard/base/base.component\";\nimport {html, PropertyValues, unsafeCSS} from \"lit\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {DropDownComponent, IDropdownOptions} from \"../standard/dropdown/dropdown/dropdown.component\";\n\nimport style from './language-picker.component.sass?inline';\nimport {DropdownItemComponent, IDropdownItem} from \"../standard/dropdown/dropdown-item/dropdown-item.component\";\nimport {EventHandlerService} from \"../../utils/event.handler.service\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {CommunicationMessageService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-language-picker\")\nexport class LanguagePickerComponent extends BaseElement {\n\n static styles = [super.styles || [], unsafeCSS(style)]\n\n @property({type: String, reflect: true, attribute: 'template-id'})\n private templateId: string = \"language_picker\";\n\n @property()\n private _dropdownOptions: IDropdownOptions = {\n items: []\n };\n\n @property({type: Boolean, reflect: true})\n hiddenByDefault: boolean = true;\n\n constructor() {\n super();\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues<this>) {\n super.firstUpdated(_changedProperties);\n await WebViewerService.IsAppReady;\n\n const languages = await CommunicationMessageService.getAvailableLanguages();\n this._dropdownOptions = {\n ...this._dropdownOptions,\n items: languages.map(x => {\n return {\n value: x.langCode,\n text: x.name,\n active: x.langCode === LocaleService.getLanguage()\n }\n })\n }\n }\n\n private getHideState() {\n const items = this._dropdownOptions?.items || []\n return this.hiddenByDefault && items.length <= 1;\n }\n\n private onDropdownChanged(ev: CustomEvent<IDropdownItem>) {\n const data = ev.detail;\n const langCode = data.value;\n if(langCode) {\n EventHandlerService.dispatch(\"set-language\", {\n langCode,\n })\n }\n }\n\n render() {\n const dropdownClasses = classMap({\n hidden: this.getHideState()\n })\n return html`\n <fv-dropdown @dropdown-item-changed=\"${this.onDropdownChanged}\" class=\"${dropdownClasses}\" .dropdownOptions=\"${this._dropdownOptions}\"></fv-dropdown>\n `\n }\n\n}\n","import { html, unsafeCSS, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\n\nimport { map } from \"lit/directives/map.js\";\nimport { range } from \"lit/directives/range.js\";\n\nimport { BaseElement } from \"../standard/base/base.component\";\n\nimport defaultStyle from \"../common.sass?inline\";\nimport style from \"./datepicker.component.sass?inline\";\n\ntype DateRangeDescriptor = {\n min: string,\n max: string,\n exact: string\n}\n\nconst weekdays = new Map<string, number>([\n [\"MONDAY\", 0],\n [\"TUESDAY\", 1],\n [\"WEDNESDAY\", 2],\n [\"THURSDAY\", 3],\n [\"FRIDAY\", 4],\n [\"SATURDAY\", 5],\n [\"SUNDAY\", 6],\n]);\n\nfunction toShortDate(year: number, month: number, day: number) {\n const formatter = new Intl.NumberFormat(navigator.languages[0], { minimumIntegerDigits: 2, useGrouping: false });\n\n return `${formatter.format(year)}-${formatter.format(month + 1)}-${formatter.format(day)}`;\n}\n\nfunction toDisplayDate(year: number, month: number, day: number) {\n const formatter = new Intl.DateTimeFormat(navigator.languages[0], { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" });\n\n return formatter.format(new Date(year, month, day));\n}\n\n@customElement(\"fv-datepicker\")\nexport class DatepickerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n unsafeCSS(style),\n unsafeCSS(defaultStyle)\n ];\n\n @state()\n private date: Date = new Date();\n\n @state()\n private day: number = (new Date()).getDate();\n\n @state()\n private month: number = (new Date()).getMonth();\n\n @state()\n private year: number = (new Date()).getFullYear();\n\n @state()\n private open = false;\n\n @state()\n private parsedValidDates: Array<DateRangeDescriptor> = [];\n\n @state()\n private parsedRestrictedDates: Array<DateRangeDescriptor> = [];\n\n @property({type: String, attribute: \"valid-dates\"})\n validDates = \"\";\n\n @property({type: String, attribute: \"restricted-dates\"})\n restrictedDates = \"\";\n\n private dispatchChange() {\n this.dispatchEvent(new Event(\"change\", { bubbles: true, composed: true, cancelable: true }));\n }\n\n private close() {\n this.open = false;\n }\n\n private clickDay(event: Event) {\n const element = event.target as HTMLElement;\n\n if (element.tagName === \"SPAN\") {\n if (element.hasAttribute(\"day\") && !element.hasAttribute(\"disabled\")) {\n this.day = parseInt(element.innerText);\n\n this.date = new Date(this.year, this.month, this.day);\n\n this.close();\n\n this.dispatchChange();\n }\n }\n }\n\n private getDayOfWeek(date: string): number\n private getDayOfWeek(year: number, month: number, day: number): number\n private getDayOfWeek(dateOrYear: number | string, month?: number | undefined, day?: number | undefined): number {\n let dow;\n\n if (typeof month !== \"undefined\" && typeof day !== \"undefined\") {\n dow = (new Date(dateOrYear as number, month, day)).getDay() - 1;\n }\n else {\n dow = (new Date(dateOrYear)).getDay() - 1;\n }\n\n return dow >= 0 ? dow : 6;\n }\n\n private getFirstDayOfTheMonth(year: number, month: number) {\n return this.getDayOfWeek(year, month, 1);\n }\n\n private getDayCount(year: number, month: number) {\n return (new Date(year, month + 1, 0)).getDate();\n }\n\n private isValidDate(date: string) {\n return this.isDateInValidRange(date) && !this.isDateInInvalidRange(date);\n }\n\n private renderCalendar() {\n return html`\n <div id='calendar'>\n <div class='header'>\n <div class='year control'>\n <button @click='${this.decreaseYear}'><</button>\n <span class='year display'>${this.year}</span>\n <button @click='${this.increaseYear}'>></button>\n </div>\n <div class='month control'>\n <button @click='${this.decreaseMonth}'><</button>\n <span class='month display'>${this.getPrettyMonth()}</span>\n <button @click='${this.increaseMonth}'>></button>\n </div>\n </div>\n <div class='content' @click='${this.clickDay}'>\n ${map(range(1, 8), (i) => html`<span>${this.getPrettyDay(i)}</span>`)}\n ${map(range(this.getFirstDayOfTheMonth(this.year, this.month)), () => html`<span></span>`)}\n ${map(range(1, this.getDayCount(this.year, this.month) + 1), i => html`<span day part='day' ?disabled='${!this.isValidDate(toShortDate(this.year, this.month, i))}'>${i}</span>`)}\n </div>\n </div>`;\n }\n\n click() {\n this.open = !this.open;\n\n if (this.open) {\n this.year = this.date.getFullYear();\n this.month = this.date.getMonth();\n this.day = this.date.getDate();\n }\n }\n\n private decreaseYear() {\n this.year--;\n }\n\n private increaseYear() {\n this.year++;\n }\n\n private decreaseMonth() {\n this.month--;\n\n if (this.month < 0) {\n this.month = 11;\n this.decreaseYear();\n }\n }\n\n private increaseMonth() {\n this.month++;\n\n if (this.month > 11) {\n this.month = 0;\n this.increaseYear();\n }\n }\n\n private getPrettyMonth() {\n const formatter = new Intl.DateTimeFormat(navigator.languages[0], { month: \"short\" });\n\n return formatter.format(new Date(this.year, this.month));\n }\n\n private getPrettyDay(day: number) {\n const formatter = new Intl.DateTimeFormat(navigator.languages[0], { weekday: \"short\" });\n\n // Luckily 01.01.2024 is a Monday, so it's a perfect date to derive weekdays from\n return formatter.format(new Date(2024, 0, day));\n }\n\n private parseDates(value: string | null) {\n if (!value) {\n return [];\n }\n\n const values = value.split(\",\");\n\n return values.map((value) => {\n const split = value.split(\":\");\n\n if (split.length === 1) {\n return { min: \"\", max: \"\", exact: split[0] };\n }\n else if (split.length >= 2) {\n // alpha numerical sorting; any date will always be larger than 0_infinity and smaller than 9_infinity. Empty values are interpreted as infinite past or future\n return { min: split[0] || \"0_infinity\", max: split[1] || \"9_infinity\", exact: \"\" };\n }\n else {\n return { min: \"0_infinity\", max: \"9_infinity\", exact: \"\" };\n }\n });\n }\n\n private isDateInRange(date: string, validRanges: Array<DateRangeDescriptor> = []) {\n if (validRanges.length > 0) {\n return validRanges.some((range) => range.exact === date || weekdays.has(range.exact.toUpperCase()) && weekdays.get(range.exact.toUpperCase()) === this.getDayOfWeek(date)) || validRanges.some((range) => range.min <= date && range.max >= date);\n }\n\n return true;\n }\n\n private isDateInInvalidRange(date: string) {\n if (this.parsedRestrictedDates.length > 0) {\n return this.isDateInRange(date, this.parsedRestrictedDates);\n }\n\n return false;\n }\n\n private isDateInValidRange(date: string) {\n if (this.parsedValidDates.length > 0) {\n return this.isDateInRange(date, this.parsedValidDates);\n }\n\n return true;\n }\n\n get value() {\n return toShortDate(this.date.getFullYear(), this.date.getMonth(), this.date.getDate());\n }\n\n set value(date: string) {\n this.date = new Date(date);\n\n this.dispatchChange();\n }\n\n get valueAsDate() {\n return this.date;\n }\n\n set valueAsDate(date: Date) {\n this.date = date;\n\n this.dispatchChange();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.setAttribute(\"tabindex\", \"-1\");\n this.addEventListener(\"focusout\", () => this.close());\n }\n\n override attributeChangedCallback(name: string, _old: string | null, value: string | null) {\n super.attributeChangedCallback(name, _old, value);\n\n if (name === \"valid-dates\") {\n this.parsedValidDates = this.parseDates(value);\n }\n else if (name === \"restricted-dates\") {\n this.parsedRestrictedDates = this.parseDates(value);\n }\n }\n\n override render() {\n return html`\n <div id=\"container\">\n <div id='input-container' @click='${this.click}'>\n <input id='input' readonly .value='${toDisplayDate(this.date.getFullYear(), this.date.getMonth(), this.date.getDate())}'/><button>📆</button>\n </div>\n ${this.open ? this.renderCalendar() : nothing}\n </div>\n `;\n }\n}\n","import { customElement, query } from \"lit/decorators.js\";\nimport { html, PropertyValues, unsafeCSS } from \"lit\";\n\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { DatepickerComponent } from \"../datepicker/datepicker.component\";\n\nimport style from \"./delivery-datepicker.component.sass?inline\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-delivery-datepicker\")\nexport class DeliveryDatepickerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n unsafeCSS(style)\n ];\n\n @query(\"#earliest-date\")\n private earliestElement!: DatepickerComponent;\n\n @query(\"#latest-date\")\n private latestElement!: DatepickerComponent;\n\n private async refreshDeliveryDates() {\n let earliestDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_GetFirstPossibleDeliveryDate\", 0) as string;\n\n earliestDate = earliestDate.split(\"T\")[0];\n\n this.earliestElement.value = earliestDate;\n this.earliestElement.setAttribute(\"valid-dates\", `${earliestDate}:`);\n }\n\n private async setLatestDate() {\n // default date and holidays need to be corrected?\n let earliestDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_GetFirstPossibleLastDeliveryDate\", 0, (this.earliestElement.valueAsDate || new Date()).toISOString()) as string;\n let latestDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_GetLastPossibleLastDeliveryDate\", 0, (this.earliestElement.valueAsDate || new Date()).toISOString()) as string;\n //let defaultDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_GetDefaultDeliveryDate\", 0) as string;\n let defaultDate = earliestDate;\n //let holidayStartDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_DeliveryCalcVar_KELLERAnnualClosingBegin\", 0) as string;\n //let holidayEndDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_DeliveryCalcVar_KELLERAnnualClosingEnd\", 0) as string;\n\n earliestDate = earliestDate.split(\"T\")[0];\n latestDate = latestDate.split(\"T\")[0];\n defaultDate = defaultDate.split(\"T\")[0];\n //holidayStartDate = holidayStartDate.split(\"T\")[0];\n //holidayEndDate = holidayEndDate.split(\"T\")[0];\n\n this.latestElement.value = defaultDate;\n\n this.latestElement.setAttribute(\"valid-dates\", `${earliestDate}:${latestDate}`);\n //this.latestElement.setAttribute(\"restricted-dates\", `saturday,sunday,${holidayStartDate}:${holidayEndDate}`);\n this.latestElement.setAttribute(\"restricted-dates\", \"saturday,sunday\");\n }\n\n get earliestDate() {\n return this.earliestElement.valueAsDate;\n }\n\n get earliestDateAsShortString() {\n return this.earliestElement.value;\n }\n\n get latestDate() {\n return this.latestElement.valueAsDate;\n }\n\n get latestDateAsShortString() {\n return this.latestElement.value;\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n\n this.refreshDeliveryDates();\n }\n\n render() {\n return html`\n <div class=\"container\">\n <div id=\"title\" i18n=\"1509\"></div>\n <span id=\"earliest-label\" i18n=\"20342\" class=\"lowercase\"></span>\n <fv-datepicker id=\"earliest-date\" @change=\"${this.setLatestDate}\" restricted-dates=\"saturday,sunday\"></fv-datepicker>\n <span id=\"latest-label\" i18n=\"fv.right.panel.catalogue.dimensions.to\" class=\"lowercase\"></span>\n <fv-datepicker id=\"latest-date\"></fv-datepicker>\n </div>\n `;\n }\n}\n\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface IARExportData {\n qr: string;\n url: string;\n}\n\nclass ARUploadModelClass {\n async create() {\n return await CommunicationMessageService?.getARExport() as IARExportData;\n }\n}\n\nexport const ARUploadModel = new ARUploadModelClass();\n","import {css, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./ar-modal.component.sass?inline\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {ARUploadModel, IARExportData} from \"../../models/ar/ar-upload.model\";\nimport {ModalComponent} from \"../standard/modal/modal.component\";\nimport {CommunicationMessageService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\nimport type { IExternalWindow } from \"@dh-software/webui-types\";\nimport type { ComponentStateHandlerMap } from \"../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-ar-modal:show\": Record<string, never>;\n }\n}\n\nexport interface ARModalText {\n [key: string]: string\n}\n\n@customElement(\"fv-ar-modal\")\nexport class ARModalComponent extends ModalComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\"#url\")\n private url: HTMLAnchorElement | undefined;\n\n @query(\"#qrCode\")\n private qrCode: HTMLImageElement | undefined;\n\n @query(\".ar-buttons\")\n private buttonsContainer!: HTMLDivElement;\n\n @property({type: Object})\n private modalTexts: ARModalText = {\n heading: \"modal.ar.heading\",\n information: \"\",\n information1: \"modal.ar.qrcode.information.one\",\n information2: \"modal.ar.qrcode.information.two\",\n alternative: \"modal.ar.alternative\",\n open: \"7222\",\n }\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-ar-modal:show\": () => { this.show(); },\n };\n\n constructor() {\n super();\n }\n\n public show(dimmed: boolean = this.dimmed, fade: boolean = this.fade): void {\n super.show(dimmed, fade);\n this.setLoading(true);\n ARUploadModel.create()\n .then((arData: IARExportData) => {\n if (this.qrCode) this.qrCode.src = arData.qr;\n if (this.url) this.url.href = arData.url;\n this.setLoading();\n })\n .catch(() => {\n this.setLoading();\n });\n CommunicationMessageService.preloadARModel();\n }\n\n private async onOpenClick(event: MouseEvent) {\n if (await CommunicationMessageService.startAR()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues): Promise<void> {\n super.firstUpdated(_changedProperties);\n await LocaleService.IsFileRead();\n for(const [key, value] of Object.entries(this.modalTexts)) {\n if(value) {\n this.modalTexts[key] = LocaleService.translate(value, \"\");\n }\n }\n CommunicationMessageService.isARCapable().then((result) => {\n this.buttonsContainer.classList.toggle(\"hidden\", !result);\n })\n this.requestUpdate(\"modalTexts\");\n }\n\n render(): TemplateResult<1> {\n return super.build(html`\n <div class=\"content\">\n <div class=\"additional-content\">\n <slot></slot>\n </div>\n <div class=\"ar-header\">\n <span>${this.modalTexts?.heading}</span>\n </div>\n <div class=\"ar-information\">\n <span >${this.modalTexts?.information}</span>\n </div>\n <div class=\"ar-qrcode-information\">\n <ul>\n <li>${this.modalTexts?.information1}</li>\n <li>${this.modalTexts?.information2}</li>\n </ul>\n </div>\n <div class=\"qrCode-container\">\n <img id=\"qrCode\" src=\"#\"/>\n </div>\n <div class=\"ar-buttons\">\n <span class=\"only-desktop\">${this.modalTexts?.alternative}</span>\n <a target=\"_blank\" id=\"url\" href=\"#\" @click=${(e: MouseEvent) => this.onOpenClick(e)}>\n <fv-button class=\"bordered image-button\">${this.modalTexts?.open}\n </fv-button>\n </a>\n </div>\n </div>\n `);\n }\n\n protected updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n if (this.shadowRoot)\n this.shadowRoot.querySelectorAll(\".ar-qrcode-information\")?.forEach((div) => {\n div.querySelectorAll(\"li\")\n .forEach((li) => {\n if (li && li.textContent !== null) {\n if (li.textContent.length === 0) {\n li.classList.add(\"hidden\");\n } else {\n li.classList.remove(\"hidden\");\n }\n }\n });\n });\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./info.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport \"../modal-step/modal.step.component\";\nimport { ModalStepComponent } from \"../modal-step/modal.step.component\";\nimport { ModalComponent } from \"./modal.component\";\n\n@customElement(\"fv-info-modal\")\nexport class InfoModalComponent extends ModalComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property()\n image = \"\"\n\n constructor() {\n super();\n }\n\n changeStep(id: string): void {\n if (id && this.shadowRoot) {\n const steps = this.querySelectorAll(\"fv-modal-step\") as NodeListOf<ModalStepComponent>;\n\n if (steps && steps.length > 0) {\n const stepExists = Array.from(steps).some((step) => step.id === id);\n\n if (stepExists) {\n const stepToActivate = this.querySelector(`fv-modal-step#${id}`) as ModalStepComponent;\n\n steps.forEach((step: ModalStepComponent) => step.active = false);\n\n stepToActivate.changeStep();\n }\n }\n }\n }\n\n render(): TemplateResult<1> {\n return super.build(html`\n <div class=\"container\">\n <div class=\"step-container\">\n <h1><slot name=\"main-titel\" i18n=\"remember\">Merken</slot></h1>\n <div class=\"steps\">\n <slot name=\"steps\"></slot>\n </div>\n <div class=\"step-content\">\n <slot name=\"stepContent\"></slot>\n </div>\n </div>\n <div class=\"info-container\">\n <h1><slot name=\"side-titel\" i18n=\"your_selection\">Ihre Auswahl</slot></h1>\n <div class=\"text\"><slot name=\"side-text\"></slot></div>\n <div class=\"current-scene-image\" style=\"background-image: url('${this.image}')\">\n </div>\n </div>\n </div>\n `);\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./option-selection.component.sass?inline\";\nimport { property, customElement } from \"lit/decorators.js\";\nimport { ModalComponent } from \"./modal.component\";\n\n\n@customElement(\"fv-option-selection-modal\")\nexport class OptionSelectionModalComponent extends ModalComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property()\n public settings: OptionSelectionModalSettings = { options: {}, \"template-selector\": \"\" };\n\n constructor() {\n super();\n }\n\n public hide(): void {\n this.active = false;\n this.dispatchEvent(new OptionSelectionOptionsHideEvent());\n }\n\n protected buildContent(content: TemplateResult): TemplateResult<1> {\n const templateSelector: string | null = this.settings[\"template-selector\"] && this.settings[\"template-selector\"].length > 0 ? this.settings[\"template-selector\"] : this.getAttribute(\"option-template-selector\");\n const templateElement: HTMLTemplateElement | null = this.querySelector(templateSelector ? templateSelector : \"\");\n if ( !templateElement ) return super.build(html`<div class=\"options-container\" part=\"options-container\"></div>`);\n const template = templateElement.innerHTML;\n\n const keys = Object.keys(this.settings.options);\n const modalContent = super.build(html`\n <div class=\"options-container\" part=\"options-container\">\n ${keys.map((key: string) => html`\n <div class=\"option\" id=\"${key}\" option=\"${key}\" @click=\"${this.createOptionClick(key)}\">\n ${this.createOption(key, template)}\n </div>\n `)}\n </div>\n ${content}\n `);\n this.dispatchEvent(new OptionSelectionOptionsCreatedEvent());\n return modalContent;\n }\n\n render(): TemplateResult<1> {\n return this.buildContent(html``);\n }\n\n private createOption(key: string, template: string): DocumentFragment {\n const option = this.settings.options[key];\n\n let html = template;\n const replacers = Object.keys(option.replacers);\n for ( const replacer of replacers ) {\n const pieces = html.split(replacer);\n html = pieces.join(option.replacers[replacer]);\n }\n return document.createRange().createContextualFragment(html);\n }\n\n private removeIndicationFromAllChildren(target_: HTMLElement, indication: string) {\n for ( let index = 0; index < target_.children.length; ++index ) {\n const child: HTMLElement = target_.children[index] as HTMLElement;\n child.classList.remove(indication);\n child.part.remove(indication);\n this.removeIndicationFromAllChildren(child, indication);\n }\n }\n private addIndicationToAllChildren(target_: HTMLElement, indication: string) {\n for ( let index = 0; index < target_.children.length; ++index ) {\n const child: HTMLElement = target_.children[index] as HTMLElement;\n child.classList.add(indication);\n child.part.add(indication);\n this.addIndicationToAllChildren(child, indication);\n }\n }\n private createOptionClick(key: string) {\n return ()=>{\n // read option-element\n const optionElement: HTMLDivElement | null | undefined = this.shadowRoot?.querySelector(\"#\"+key);\n if ( !optionElement ) return;\n\n this.setAttribute(\"selected-option\", key);\n\n // dispatch additional event\n this.dispatchEvent(new OptionSelectionOptionClickedEvent({\n key: key,\n option: this.settings.options[key],\n \"option-element\": optionElement\n }));\n // disable all options\n const container: HTMLDivElement | null = this.shadowRoot ? this.shadowRoot.querySelector(\".options-container\") : null;\n if ( container ) {\n const options = container.querySelectorAll(\".option\");\n options.forEach((value) =>{\n const element: HTMLDivElement = value as HTMLDivElement;\n element.classList.remove(\"active\");\n element.part.remove(\"option-active\");\n this.removeIndicationFromAllChildren(element, \"active\");\n });\n }\n // enable clicked option\n optionElement.classList.add(\"active\");\n optionElement.part.add(\"option-active\");\n this.addIndicationToAllChildren(optionElement, \"active\");\n };\n }\n}\n\nexport interface OptionSelectionModalSettings{\n options: OptionSelectionModalOptions,\n \"template-selector\"?: string\n}\nexport interface OptionSelectionDataReplacers {\n [key: string]: string\n}\n\nexport interface OptionSelectionModalOptions {\n [key: string]: OptionSelectionModalOption\n}\nexport interface OptionSelectionModalOption {\n \"additional-data\"?: {[key: string]: unknown},\n active?: boolean,\n replacers: OptionSelectionDataReplacers\n}\n\nexport class OptionSelectionOptionsHideEvent extends CustomEvent<unknown> {\n constructor() {\n super(\"option-selection-options-hidden\", { detail: {}, bubbles: true });\n }\n}\nexport class OptionSelectionOptionsCreatedEvent extends CustomEvent<unknown> {\n constructor() {\n super(\"option-selection-options-created\", { detail: {}, bubbles: true });\n }\n}\nexport interface OptionSelectionOptionClickedEventData {\n key: string,\n option: OptionSelectionModalOption,\n \"option-element\": HTMLDivElement\n}\nexport class OptionSelectionOptionClickedEvent extends CustomEvent<OptionSelectionOptionClickedEventData> {\n constructor(callbackData_: OptionSelectionOptionClickedEventData) {\n super(\"option-selection-option-clicked\", { detail: callbackData_, bubbles: true });\n }\n}","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport {customElement, property, query, state} from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./input.mask.component.sass?inline\";\n\n\n@customElement(\"fv-input-mask\")\nexport class InputMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\"input\")\n private input: HTMLInputElement | undefined;\n\n @property({reflect: true, type: String, attribute: \"input-type\"})\n public inputType: string = \"number\";\n\n @property({reflect: true, type: String, attribute: \"title-i18n\"})\n public titleI18N?: string;\n\n @property({reflect: true, type: String, attribute: \"button-i18n\"})\n public buttonI18N?: string;\n\n @property({reflect: true, type: String, attribute: \"placeholder-i18n\"})\n public placeholderI18N?: string;\n\n @state()\n public mask = \"input-mask\";\n\n constructor() {\n super();\n this.active = true;\n }\n\n private clickEvent(e: Event) {\n this.dispatchEvent(new CustomEvent(\"input-submit\", {\n detail: { value: this.input?.value || \"\" }\n }));\n this.hide(true);\n }\n\n async show(showModal_?: boolean) {\n super.show(showModal_);\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <div class=\"mask-container\">\n <div class=\"text\" i18n=\"${this.titleI18N ? this.titleI18N : \"\"}\"></div>\n <div class=\"input-container\">\n <input type=\"${this.inputType}\" i18n-placeholder=\"${this.placeholderI18N ? this.placeholderI18N : \"\"}\" placeholder=\"\"/>\n </div>\n <div class=\"button-container\">\n <div id=\"submit\" @click=${this.clickEvent} class=\"button\" i18n=\"${this.buttonI18N ? this.buttonI18N : \"\"}\"></div>\n </div>\n </div>\n `);\n }\n}\n\n","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, query, state } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./restart-check.mask.component.sass?inline\";\nimport { EventHandlerService } from \"../../../../../utils/event.handler.service\";\n\n\n@customElement(\"fv-restart-check-mask\")\nexport class RestartCheckMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"restart-check\";\n\n @query(\".container\")\n private container: HTMLDivElement | undefined;\n\n @query(\".loader-slot\")\n private saveButtonLoader: HTMLDivElement | undefined;\n\n constructor() {\n super();\n\n window.addEventListener(\"keydown\", (e_: KeyboardEvent) => {\n if (window.g_configuration?.request_leave_confirmation && (e_.key === \"F5\" || (e_.key === \"r\" && e_.ctrlKey))) {\n e_.preventDefault();\n e_.stopImmediatePropagation();\n e_.stopPropagation();\n\n this.show();\n this.Modal?.show();\n }\n });\n }\n\n private leave(e_: Event) {\n EventHandlerService.dispatchAsyncEvent(\"reload-window\", { preventLeaveConfirmation: true });\n\n e_.preventDefault();\n e_.stopImmediatePropagation();\n e_.stopPropagation();\n }\n private async save(e_: Event) {\n e_.preventDefault();\n e_.stopImmediatePropagation();\n e_.stopPropagation();\n\n if (this.saveButtonLoader) {\n this.saveButtonLoader.classList.remove(\"hidden\");//no add needed since page will be reloaded anyway\n }\n await EventHandlerService.dispatchAsyncEvent(\"save\", {});\n await EventHandlerService.dispatchAsyncEvent(\"reload-window\", { preventLeaveConfirmation: true });\n }\n private async cancel(e_: Event) {\n e_.preventDefault();\n e_.stopImmediatePropagation();\n e_.stopPropagation();\n this.Modal?.hide();\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <div class=\"container\">\n <div class=\"text\" i18n=\"fv.modal.reload.text\"></div>\n <div class=\"buttons-container\">\n <div class=\"button save-button\" @click=\"${this.save}\"><span i18n=\"1008\"></span><span><slot class=\"loader-slot hidden\" name=\"loader\"></slot></span></div>\n <div class=\"button\" @click=\"${this.leave}\" i18n=\"21016\"></div>\n <div class=\"button\" @click=\"${this.cancel}\" i18n=\"1939\"></div>\n </div>\n </div>\n `);\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n\n if (this.container && this.container.hasAttribute(\"listening\") == false) {\n this.container.setAttribute(\"listening\", \"true\");\n this.container.addEventListener(\"click\", (e) => {\n e.preventDefault();\n e.stopImmediatePropagation();\n e.stopPropagation();\n });\n }\n }\n}\n","import {BaseMaskElement} from \"../../../base/mask.component\";\nimport {customElement, property, query, state} from \"lit/decorators.js\";\nimport {css, CSSResultGroup, html, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./open-cloud-id.mask.component.sass?inline\";\nimport {EventHandlerDispatchEvent, EventHandlerEvent} from \"../../../../../models/event-handler/event.handler.model\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-open-cloud-id-mask\")\nexport class OpenCloudIdMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\"input\")\n private input: HTMLInputElement | undefined;\n\n @property({type: Array, reflect: true, attribute: \"post-click-events\"})\n public events: Array<EventHandlerEvent> = [];\n\n @state()\n public mask = \"open-cloud-id\";\n\n constructor() {\n super();\n }\n\n private async clickEvent(e: Event) {\n if (this.input && this.input.value.length > 0) {\n await CommunicationMessageService.openCloudId(this.input.value);\n if (this.events) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.events\n }));\n }\n }\n this.hide(true);\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <div class=\"mask-container\">\n <div class=\"text\" i18n=\"open.cloud.id.mask.title\"></div>\n <div class=\"input-container\">\n <input i18n-placeholder=\"open.cloud.id.mask.open.input.placeholder\" placeholder=\"\"/>\n </div>\n <div class=\"button-container\">\n <div @click=\"${this.clickEvent}\" class=\"button\" i18n=\"open.cloud.id.mask.open.button.text\"></div>\n </div>\n </div>\n `);\n }\n}\n\n","import { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, query, queryAll, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport style from \"./share-link-per-mail.component.sass?inline\";\nimport { ConfirmingButtonComponent } from \"../../../button/confirming-button.component\";\nimport {CommunicationMessageService, RequestService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-share-link-per-mail\")\nexport class ShareLinkPerMailComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"share-link-per-mail\";\n\n @property({ type: Boolean, reflect: true, attribute: \"custom\" })\n public custom = false;\n @property({ type: Boolean, reflect: true, attribute: \"loader\" })\n public loader = false;\n\n @query(\".mask-container\")\n private container: HTMLDivElement | undefined;\n @query(\"input\")\n private input: HTMLInputElement | undefined;\n\n @query(\"fv-confirming-button\")\n private confirmButton: ConfirmingButtonComponent | undefined;\n\n\n\n\n\n\n constructor() {\n super();\n }\n\n private removeClassEach(classstr: string, list: NodeList | undefined) {\n list?.forEach((node: Node)=>{\n (node as HTMLElement).classList.remove(classstr);\n });\n }\n private addClassEach(classstr: string, list: NodeList | undefined) {\n list?.forEach((node: Node)=>{\n (node as HTMLElement).classList.add(classstr);\n });\n }\n\n private reset() {\n this.confirmButton?.reset();\n }\n\n public show(): void {\n super.show();\n this.reset();\n }\n\n\n private validate(mail: string) {\n const res = RegExp(/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/);\n return res.test(mail.toLowerCase());\n }\n\n private async sendMail(receiver: string): Promise<boolean> {\n if (this.confirmButton && receiver.length > 0 && this.validate(receiver)) { // validate receiver\n if (this.loader) {\n this.confirmButton.loaderState = true;\n const pdf = await (CommunicationMessageService.printPDF() as Promise<{ cloudId: string }>);\n const url = await RequestService.GetFurncloudShortUrl(window.location.href, pdf.cloudId);\n await CommunicationMessageService.sendMail(receiver, this.custom ? \"custom\": \"default\", [{ key: \"url\", value: url }]);\n this.confirmButton.loaderState = false;\n }\n else {\n const pdf = await (CommunicationMessageService.printPDF() as Promise<{ cloudId: string }>);\n const url = await RequestService.GetFurncloudShortUrl(window.location.href, pdf.cloudId);\n await CommunicationMessageService.sendMail(receiver, this.custom ? \"custom\": \"default\", [{ key: \"url\", value: url }]);\n }\n this.confirmButton.triggerAnimation();\n\n this.confirmButton.loaderState = true;\n return true;\n }\n return false;\n }\n private async send() {\n if (this.confirmButton && this.confirmButton.confirmed == false) {\n if (this.input) {\n if (await this.sendMail(this.input.value) == false) {\n this.input.classList.add(\"error\");\n return;\n }\n this.input.classList.remove(\"error\");\n }\n this.confirmButton?.confirm(false);\n }\n }\n\n protected render(): TemplateResult<1> {\n // const isSendText = LocalesModel.translate(\"share.link.per.mail.mask.send.button.text.send\");\n // const text = LocalesModel.translate(\"share.link.per.mail.mask.send.button.text\");\n\n return this.build(html`\n <div class=\"mask-container\">\n <div class=\"text\" i18n=\"share.link.per.mail.mask.title\"></div>\n <div class=\"content-container\">\n <div class=\"input-container\">\n <input i18n-placeholder=\"share.link.per.mail.mask.send.input.placeholder\" placeholder=\"\"/>\n </div>\n <fv-confirming-button confirm-txt=\"share.link.per.mail.mask.send.button.text.send\" txt=\"share.link.per.mail.mask.send.button.text\" @click=\"${this.send}\"></fv-confirming-button>\n </div>\n </div>\n `);\n }\n // <div @click=\"${this.send}\" class=\"button-container\">\n // <div class=\"button\">\n // <span class=\"button-text-animation-container\">\n // <span class=\"button-text-send-space\">${isSendText.length > text.length ? isSendText : text}</span>\n // <span class=\"button-text\" i18n=\"share.link.per.mail.mask.send.button.text\">${text}</span>\n // </span>\n // <span><slot class=\"loader-slot hidden\" name=\"loader\"></slot></span>\n // </div>\n // <div class=\"button-send-text-container\">\n // <div class=\"animation-container\">\n // <span class=\"button-text-send hidden\" i18n=\"share.link.per.mail.mask.send.button.text.send\">${isSendText}</span>\n // </div>\n // </div>\n // <div class=\"checkmark hidden\">\n // <svg class=\"checkmark-svg\" viewBox=\"0 0 24 24\">\n // <path d=\"M4.1 12.7L9 17.6 20.3 6.3\" fill=\"none\"/>\n // </svg>\n // </div>\n // </div>\n\n private oldInputValue = \"\";\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n\n if (this.container && this.container.hasAttribute(\"listening\") == false) {\n this.container.setAttribute(\"listening\", \"true\");\n this.container.addEventListener(\"click\", (e)=>{\n e.preventDefault();\n e.stopImmediatePropagation();\n e.stopPropagation();\n });\n }\n if (this.input && this.input.hasAttribute(\"listening\") == false) {\n this.input.setAttribute(\"listening\", \"true\");\n this.input.addEventListener(\"click\", (e)=>{\n this.input?.classList.remove(\"error\");\n });\n this.input.addEventListener(\"input\", ()=>{\n if (this.oldInputValue != this.input?.value) {\n this.reset();\n }\n this.oldInputValue = this.input?.value ? this.input?.value : \"\";\n });\n\n this.input.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\") {\n this.send();\n }\n });\n }\n }\n}\n","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, query, queryAll, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport style from \"./request-appointment.component.sass?inline\";\nimport { ValidatingInputComponent } from \"../../../input/validating-input/validating-input.component\";\nimport { ButtonComponent } from \"../../../button/button.component\";\nimport {CommunicationMessageService, LocaleService, MailerService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-request-appointment\")\nexport class RequestAppointmentComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"request-appointment\";\n\n constructor() {\n super();\n\n this.addEventListener(\"validating-input-updated\", ()=>{\n this.send = false;\n });\n this.addHideStateUpdatedEventListener((value: boolean)=>{\n if (value == false && this.shadowRoot) {\n const firstInput = this.shadowRoot.querySelector(\"fv-validating-input\") as ValidatingInputComponent;\n firstInput.focus();\n }\n });\n }\n\n @query(\".name\")\n nameInput: ValidatingInputComponent | undefined;\n @query(\".first-name\")\n firstNameInput: ValidatingInputComponent | undefined;\n @query(\".email\")\n emailInput: ValidatingInputComponent | undefined;\n @query(\".phone\")\n phoneInput: ValidatingInputComponent | undefined;\n @query(\".zip\")\n zipInput: ValidatingInputComponent | undefined;\n @query(\".place\")\n placeInput: ValidatingInputComponent | undefined;\n @query(\".message\")\n messageTextArea: HTMLTextAreaElement | undefined;\n\n @query(\".send-button-container\")\n private buttonContainer: HTMLDivElement | undefined;\n @query(\".send-button-text-send\")\n private buttonTextSend: HTMLSpanElement | undefined;\n @queryAll(\".checkmark\")\n private checkmarks: NodeList | undefined;\n\n @query(\".loader-slot\")\n private loaderSlot: HTMLSlotElement | undefined;\n\n\n private removeClassEach(classstr: string, list: NodeList | undefined) {\n list?.forEach((node: Node)=>{\n (node as HTMLElement).classList.remove(classstr);\n });\n }\n private addClassEach(classstr: string, list: NodeList | undefined) {\n list?.forEach((node: Node)=>{\n (node as HTMLElement).classList.add(classstr);\n });\n }\n\n private set send(value: boolean) {\n if (value) {\n this.buttonTextSend?.classList.remove(\"hidden\");\n this.removeClassEach(\"hidden\", this.checkmarks);\n this.buttonContainer?.classList.add(\"send\");\n }\n else {\n this.buttonTextSend?.classList.add(\"hidden\");\n this.addClassEach(\"hidden\", this.checkmarks);\n this.buttonContainer?.classList.remove(\"send\");\n }\n }\n\n private async sendMail() {\n this.loaderSlot?.classList.remove(\"hidden\");\n if (this.nameInput && this.firstNameInput && this.emailInput && this.phoneInput && this.zipInput && this.messageTextArea /*this.placeInput*/) {\n if (this.nameInput.valid && this.firstNameInput.valid && this.emailInput.valid && this.phoneInput.valid && this.zipInput.valid /*&& this.placeInput*/) {\n const pdf = await (CommunicationMessageService.printPDF() as Promise<{ cloudId: string }>);\n const values = [\n { key: \"lastName\", value: this.nameInput.value },\n { key: \"firstName\", value: this.firstNameInput.value },\n { key: \"email\", value: this.emailInput.value },\n { key: \"phone\", value: this.phoneInput.value },\n { key: \"zip\", value: this.zipInput.value },\n // { key: \"\", value: this.placeInput.value },\n { key: \"cloudId\", value: pdf.cloudId },\n { key: \"message\", value: this.messageTextArea.value }\n ];\n const url = new URL(window.location.href);\n const language = url.searchParams.get(\"lang\") || \"de\";\n MailerService.sendConfiguredMail({\n name: \"anfrage\",\n language,\n values,\n to: \"\"\n });\n this.loaderSlot?.classList.add(\"hidden\");\n this.send = true;\n return;\n }\n }\n this.loaderSlot?.classList.add(\"hidden\");\n }\n\n private createInput(json: { placeholderI18n: string, required: boolean, resultValidation?: string | undefined, inputValidation?: string | undefined, emptyInformationI18n?: string | undefined, invalidInformationI18n?: string | undefined, className?: string | undefined }): TemplateResult<1> {\n return html`\n <fv-validating-input\n ?required=${json.required}\n class=\"${json.className ? json.className : \"\"}\"\n i18n-placeholder=\"${json.placeholderI18n}\"\n input-validation=\"${json.inputValidation}\"\n result-validation=\"${json.resultValidation}\"\n i18n-empty-information-text=\"${json.emptyInformationI18n}\"\n i18n-invalid-information-text=\"${json.invalidInformationI18n}\">\n </fv-validating-input>\n `;\n }\n private createSendButton(): TemplateResult<1> {\n const isSendText = LocaleService.translate(\"share.link.per.mail.mask.send.button.text.send\");\n const text = LocaleService.translate(\"send_inquiry\");\n return html`\n <div @click=\"${this.sendMail}\" class=\"send-button-container\">\n <div class=\"send-button\">\n <span class=\"send-button-text-animation-container\">\n <span class=\"send-button-text-send-space\">${isSendText.length > text.length ? isSendText : text}</span>\n <span class=\"send-button-text\" i18n=\"send_inquiry\">${text}</span>\n </span>\n <span><slot class=\"loader-slot hidden\" name=\"loader\"></slot></span>\n </div>\n <div class=\"send-button-send-text-container\">\n <div class=\"animation-container\">\n <span class=\"send-button-text-send hidden\" i18n=\"share.link.per.mail.mask.send.button.text.send\">${isSendText}</span>\n </div>\n </div>\n <div class=\"checkmark hidden\">\n <svg class=\"checkmark-svg\" viewBox=\"0 0 24 24\">\n <path d=\"M4.1 12.7L9 17.6 20.3 6.3\" fill=\"none\"/>\n </svg>\n </div>\n </div>\n `;\n }\n\n private emailRegex = \"[-A-Za-z0-9!#$%&'*+/=?^_`{|}~]+(?:\\\\.[-A-Za-z0-9!#$%&'*+/=?^_`{|}~]+)*@(?:[A-Za-z0-9](?:[-A-Za-z0-9]*[A-Za-z0-9])?\\\\.)+[A-Za-z0-9](?:[-A-Za-z0-9]*[A-Za-z0-9])?\";\n private phoneInputRegex = \"^[0-9\\\\+\\\\-\\\\\\\\(\\\\(0\\\\))\\\\ ]+$\";\n private zipRegex = \"^[0-9]{5}$\"\n private zipInputRegex = \"^[0-9]{0,5}$\"\n protected render(): TemplateResult<1> {\n return this.build(html`\n <div class=\"mask-container\">\n <div class=\"text\" i18n=\"fv.make.an.appointment\"></div>\n <div class=\"content-container\">\n ${this.createInput({ className: \"name\", placeholderI18n: \"1528\", required: true, emptyInformationI18n: \"1621\" })}\n ${this.createInput({ className: \"first-name\", placeholderI18n: \"20322\", required: true, emptyInformationI18n: \"1621\" })}\n ${this.createInput({ className: \"email\", placeholderI18n: \"fv.email.homeviewer.send_request_customer.email\", required: true, resultValidation: this.emailRegex, emptyInformationI18n: \"1621\", invalidInformationI18n: \"fv.invalid.input\" })}\n ${this.createInput({ className: \"phone\", placeholderI18n: \"fv.email.contactPhone\", required: false, resultValidation: undefined, inputValidation: this.phoneInputRegex, invalidInformationI18n: \"fv.invalid.input\" })}\n ${this.createInput({ className: \"zip\", placeholderI18n: \"25026\", required: true, resultValidation: this.zipRegex, inputValidation: this.zipInputRegex, invalidInformationI18n: \"fv.invalid.input\", emptyInformationI18n: \"1621\" })}\n ${this.createInput({ className: \"place\", placeholderI18n: \"25027\", required: false })}\n </div>\n <textarea class=\"message\" i18n-placeholder=\"your_message\"></textarea>\n ${this.createSendButton()}\n </div>\n `);\n }\n\n public show(): void {\n super.show();\n this.send = false;\n }\n}\n","import { css, CSSResultGroup, html, nothing, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport style from \"./select-property.mask.component.sass?inline\";\nimport { ModalComponent } from \"../../modal.component\";\nimport { EventHandlerEvent } from \"../../../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../../../utils/event.handler.service\";\nimport {CommunicationMessageService, EventFactoryService, LocaleService, ProgPropertyModel} from \"@dh-software/webui-api\";\nimport {IProgProperty, IProgPropertyProgram, IProgPropertyValue} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-select-property-mask\")\nexport class SelectPropertyMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"select-property\";\n\n @property({type: String, reflect: true, attribute: \"program\"})\n program = \"\";\n\n @property({type: Boolean, reflect: true, attribute: \"property-use-relevant\"})\n propertyUseRelevant = false;\n\n @property({type: Array, reflect: true, attribute: \"filter\"})\n filter: Array<string> = [];\n\n @property({type: Boolean, reflect: true})\n loading = true;\n\n @property({type: Array, reflect: true, attribute: \"close-events\"})\n closeEvents: Array<EventHandlerEvent> = [];\n\n private properties: Array<IProgProperty> = [];\n\n\n private checkFilter(source?: Array<string>, filter?: Array<string>): boolean {\n if (filter === undefined) return false;\n if (filter.length < 1) return true;\n if (source === undefined) return false;\n\n for (let index = 0; index < source.length; ++index) {\n if (filter.includes(source[index])) return true;\n }\n return false;\n }\n\n private async FindProperties() {\n if (this.program.length < 1) this.program = window.g_article.prog;\n const propertiesHirarchy = await ProgPropertyModel.find(window.g_article.manu, this.program, false, this.propertyUseRelevant, false) as IProgPropertyProgram;\n\n this.properties = [];\n propertiesHirarchy.propertyKeyOrder?.forEach((propertykey)=>{\n const property = propertiesHirarchy.children[propertykey];\n if (this.checkFilter([property.id], this.filter)) {\n this.properties.push(property);\n }\n });\n this.loading = false;\n }\n\n constructor() {\n super();\n this.FindProperties();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n EventFactoryService.LastPOLoaded.register(async () => {\n await this.FindProperties();\n this.requestUpdate();\n });\n\n EventFactoryService.RefreshPropertyPanel.register(async () => {\n await this.FindProperties();\n this.requestUpdate();\n });\n\n }\n\n public show(showModal_?: boolean): void {\n this.FindProperties();\n super.show(showModal_);\n }\n\n private getPropertyButtonClick(key: string, property: string, propertyKey: string) {\n return async (event: Event)=>{\n this.loading = true;\n\n await CommunicationMessageService.modifyProperty(JSON.stringify({\n manufacturer: window.g_article.manu,\n program: this.program,\n key: key,\n property: property,\n propertyKey: propertyKey\n }));\n\n const modal = this.parentElement as ModalComponent;\n if (modal && modal.hide) {\n modal.hide();\n }\n\n for (const event of this.closeEvents) {\n await EventHandlerService.dispatchAsyncEvent(event.id, event.data ? event.data : {});\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n\n this.loading = false;\n };\n }\n\n private createPropertyButton(propertyValue: IProgPropertyValue, id: string) {\n const propertytext = LocaleService.exists(\"property.text.above.\" + propertyValue.key);\n const propertyname = LocaleService.exists(\"property.name.prefix.\" + propertyValue.key);\n return html`\n <div class=\"property-button\"\n @click=\"${this.getPropertyButtonClick(id, propertyValue.key, propertyValue.propertyKey)}\">\n ${propertyValue.alternativeImageUrl.length !== 0 ? html`<div class=\"img-container\"><img src=\"${propertyValue.alternativeImageUrl}\"/></div>`:nothing} \n <div class=\"txt-container\">\n ${propertytext ? html`\n <div class=\"text-above\" i18n=\"property.text.above.${propertyValue.key}\"></div>` : nothing}\n <div class=\"text-inline\">\n ${propertyname ? html`\n <div class=\"prefix\" i18n=\"property.name.prefix.${propertyValue.key}\"></div>` : nothing}\n <div class=\"property-name\">${propertyValue.name}</div>\n </div>\n </div>\n </div>\n `;\n }\n\n private createPropertyButtons(property: IProgProperty) {\n const propertyKeys = Object.keys(property.children);\n return html`\n <div class=\"property-values-container\">\n ${propertyKeys.map((propertyKey) => this.createPropertyButton(property.children[propertyKey], property.id))}\n </div>\n `;\n }\n\n protected render(): TemplateResult<1> {\n if (this.properties.length < 1 || this.loading) return html`<slot name=\"loader\"></slot>`;\n return html`\n <div class=\"properties-container\">\n ${this.properties.map((property) => this.createPropertyButtons(property))}\n </div>\n `;\n }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport style from \"./select-article.mask.component.sass?inline\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { ModalComponent } from \"../../modal.component\";\nimport { EventHandlerEvent } from \"../../../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../../../utils/event.handler.service\";\nimport { DimensionInformation } from \"../../../informationals/dimensions-information.component\";\nimport {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\nimport {IArticleData} from \"@dh-software/webui-types\";\n\n\ninterface EmptyPlanningOption {\n i18nDes: string,\n img: string\n}\ninterface EmptyPlanningOptionSettings {\n show: boolean,\n last?: boolean,\n index?: number,\n i18nDes?: string,\n img?: string\n}\n\ninterface ArticleDimensionsGroup {\n dimension?: Array<\"x\" | \"y\" | \"z\">,\n \"axis-divider\"?: string,\n \"icon-class\"?: string,\n \"icon-img-src\"?: string\n}\ninterface ArticleDimensionsSwitches {\n groups?: Array<ArticleDimensionsGroup>,\n unit?: \"cm\" | \"mm\",\n digits?: number\n}\n\n\n@customElement(\"fv-select-article-mask\")\nexport class SelectArticleMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Array, reflect: true, attribute: \"categories\" })\n public categories: Array<string> = [];\n @property({ type: String, reflect: true, attribute: \"program\" })\n public _program = \"\";\n @property({ type: Boolean, reflect: true, attribute: \"close-without-options\" })\n public closeWithoutOptions = false;\n\n\n @property({ type: Object, reflect: true, attribute: \"article-dimensions\" })\n public articleDimensions: ArticleDimensionsSwitches = {\n unit: \"cm\",\n digits: 1\n }\n\n private getValueInArticleDimensionUnit(value: number) {\n switch (this.articleDimensions.unit) {\n case \"cm\":\n return value * 0.1;\n case \"mm\":\n default:\n return value;\n }\n }\n\n @property({ type: Object, reflect: true, attribute: \"new-article-option-settings\" })\n public newArticleOptionSettings: EmptyPlanningOptionSettings = {\n show: false\n };\n @property({ type: Object, reflect: true, attribute: \"vplacer-context\" })\n public vplacerContext: Record<string, unknown> | undefined = undefined;\n @property({ type: Boolean, reflect: true, attribute: \"clear-scene\" })\n public clearScene = false;\n @property({ type: Boolean, reflect: true, attribute: \"new-scene\" })\n public newScene = false;\n @property({type: Boolean, reflect: true, attribute: \"prevent-further-placements\"})\n public preventFurtherPlacements = false;\n\n public set program(prog: string) {\n this._program = prog;\n }\n public get program() {\n return this._program.length > 0 ? this._program : window.g_article.prog;\n }\n\n @state()\n public mask = \"select-article-mask\";\n\n private articles: Array<IArticleData | EmptyPlanningOption> = [];\n private nodePrefix = \"\";\n\n @property({type: Array, reflect: true, attribute: \"close-events\"})\n closeEvents: Array<EventHandlerEvent> = [];\n @property({ type: Boolean, reflect: true, attribute: \"show-loader\" })\n public showLoader = false;\n\n private async init() {\n await WebViewerService.IsAppReady;\n if (this.categories.length > 0) {\n const articles = await CommunicationMessageService.getArticleByCategories(window.g_article.manu, this.program, this.categories);\n this.nodePrefix = await CommunicationMessageService.getNodePrefix();\n\n if (articles) {\n this.articles = articles;\n\n if (this.newArticleOptionSettings && this.newArticleOptionSettings.show) {\n if (this.newArticleOptionSettings.last) {\n this.articles.push({\n i18nDes: this.newArticleOptionSettings.i18nDes ? this.newArticleOptionSettings.i18nDes : \"fv-select-article-no-article-option-description\",\n img: this.newArticleOptionSettings.img ? this.newArticleOptionSettings.img : \"\"\n });\n }\n else if (this.newArticleOptionSettings.index != undefined) {\n this.articles.splice(this.newArticleOptionSettings.index, 0, {\n i18nDes: this.newArticleOptionSettings.i18nDes ? this.newArticleOptionSettings.i18nDes : \"fv-select-article-no-article-option-description\",\n img: this.newArticleOptionSettings.img ? this.newArticleOptionSettings.img : \"\"\n });\n }\n }\n }\n else if (this.closeWithoutOptions) {\n await this.close();\n }\n this.requestUpdate();\n }\n }\n\n private async close(clearScene = false, newPlaning = false) {\n if (newPlaning) {\n await CommunicationMessageService.newPlanning();\n }\n else if (clearScene) {\n await CommunicationMessageService.clearScene();\n }\n\n for (const event of this.closeEvents) {\n await EventHandlerService.dispatchAsyncEvent(event.id, event.data ? event.data : {});\n }\n const modal = this.parentElement as ModalComponent;\n if (modal && modal.hide) {\n modal.hide();\n this.showLoader = false;\n }\n if (this.preventFurtherPlacements) {\n await CommunicationMessageService.resetSceneAction();\n await CommunicationMessageService.resetCameraView(false);\n }\n }\n\n constructor() {\n super();\n this.init();\n }\n\n private async loadArticle(event: Event) {\n const articleNumber = (event.target as HTMLElement).getAttribute(\"article\");\n if (articleNumber && articleNumber.length > 0) {\n this.showLoader = true;\n\n if (this.vplacerContext) {\n await CommunicationMessageService.setVPlacerContextInfoData(this.vplacerContext);\n }\n\n if (this.clearScene) {\n await CommunicationMessageService.clearScene();\n }\n await CommunicationMessageService.loadArticle(window.g_article.manu, this.program, articleNumber);\n await this.close();\n }\n }\n private getArticleText(article: IArticleData): string {\n if (article.Des && article.Des.length > 0) {\n return article.Des;\n }\n else if (article.artText && article.artText.length > 0) {\n return article.artText;\n }\n else if (article.ArtNr && article.ArtNr.length > 0) {\n return article.ArtNr;\n }\n return \"\";\n }\n\n\n private getDimensionInformation(group: ArticleDimensionsGroup, article: IArticleData) {\n const dimension: Array<number> = [];\n if (group && group.dimension) {\n for (const axis of group.dimension) {\n switch (axis) {\n case \"x\":\n dimension.push(this.getValueInArticleDimensionUnit(parseFloat(article.kataWidth)));\n break;\n case \"y\":\n dimension.push(this.getValueInArticleDimensionUnit(parseFloat(article.kataDepth)));\n break;\n case \"z\":\n dimension.push(this.getValueInArticleDimensionUnit(parseFloat(article.kataHeight)));\n break;\n default:\n break;\n }\n }\n }\n return {\n dimension: dimension,\n icon: group && group[\"icon-class\"] ? group[\"icon-class\"] : \"\",\n src: group && group[\"icon-img-src\"] ? group[\"icon-img-src\"] : \"\",\n divider: group && group[\"axis-divider\"] ? group[\"axis-divider\"] : \"\"\n };\n }\n\n private createArticleOption(option_: IArticleData | EmptyPlanningOption): TemplateResult<1> {\n const article: IArticleData = option_ as IArticleData;\n if (article && article.ArtNr) {\n\n const dimensionInfomations: Array<DimensionInformation> = [];\n\n if (this.articleDimensions.groups && this.articleDimensions.groups.length > 0) {\n for (const group of this.articleDimensions.groups) {\n dimensionInfomations.push(this.getDimensionInformation(group, article));\n }\n }\n\n return html`\n <fv-card @click=\"${this.loadArticle}\"\n article=\"${article.ArtNr}\"\n data=\"${JSON.stringify({ image: { prefix: this.nodePrefix, file: article.imgName }, dimensions: dimensionInfomations, txt: { txt: this.getArticleText(article) } })}\">\n <slot name=\"button\" slot=\"button\"></slot>\n <slot name=\"additional\" slot=\"additional\"></slot>\n </fv-card>\n `;\n //price=\"${JSON.stringify({ value: 0, uvp: 0, \"whole-suffix\": \",-\", \"currency-before\": true })}\">\n }\n const option: EmptyPlanningOption = option_ as EmptyPlanningOption;\n if (option && option.i18nDes) {\n const emptyOptionClick = ()=>{\n this.close(this.clearScene, this.newScene);\n };\n return html`\n <fv-card @click=\"${emptyOptionClick}\"\n article=\"\"\n data=\"${JSON.stringify({ image: { prefix: \"\", file: option.img }, txt: { title: option.i18nDes, subtitle: \"\", txt: \"\" } })}\">\n </fv-card>\n `;\n }\n return html``;\n }\n\n private createArticleOptions(): TemplateResult<1> {\n return html`\n ${this.articles.map((article)=>{\n return this.createArticleOption(article);\n })}\n `;\n }\n\n private createHeadline(): TemplateResult<1> {\n return html`\n <div class=\"headline-container\">\n <div class=\"headline-back-button\"><slot name=\"back-button\"></slot></div>\n <div class=\"headline-logo\"><slot name=\"logo\"></slot></div>\n <div class=\"headline-title\"><slot name=\"title\"></slot></div>\n </div>\n `;\n }\n\n protected render(): TemplateResult<1> {\n if (this.articles == undefined || (this.articles && this.articles.length < 1) || this.showLoader) {\n return html`<div class=\"loading-container\"><slot name=\"loader\"></slot></div>`;\n }\n return html`\n ${this.createHeadline()}\n <div class=\"articles-container\">${this.createArticleOptions()}</div>\n `;\n }\n}\n","import {css, CSSResultGroup, html, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./perspective-control.mask.component.sass?inline\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport {BaseMaskElement} from \"../../../base/mask.component\";\nimport {ButtonComponent} from \"../../../button\";\nimport {ModalComponent} from \"../../modal.component\";\nimport {EventHandlerEvent} from \"../../../../../models/event-handler/event.handler.model\";\nimport {EventHandlerService} from \"../../../../../utils/event.handler.service\";\nimport {IZoomParameters, Perspectives, ZoomType} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService, EventFactoryService} from \"@dh-software/webui-api\";\nimport { SEARCH_PERSPECTIVES, SearchPerspectives } from \"../../../../../models/perspective/search-perspectives\";\n\n\ninterface PerspectiveSettings {\n animated: boolean,\n \"zoom-type\": ZoomType\n}\n\n@customElement(\"fv-perspective-control-mask\")\nexport class PerspectiveControlMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"perspective-control\";\n\n static SearchPerspectives: SearchPerspectives = SEARCH_PERSPECTIVES;\n\n @property({type: Array, reflect: true})\n public perspectives: Array<string> = [];\n\n @property({type: Object, reflect: true})\n public settings: PerspectiveSettings = {\n animated: true,\n \"zoom-type\": ZoomType.ZOOMAUTO_FRONTCLIP,\n };\n\n @property({type: Boolean, reflect: true})\n public loading = false;\n @property({type: Boolean, reflect: true, attribute: \"close-after-choice\"})\n public closeAfterChoice = false;\n\n @property({type: Array, reflect: true, attribute: \"apply-events\"})\n applyEvents: Array<EventHandlerEvent> = [];\n\n @property({type: Boolean, reflect: true, attribute: \"reset-on-change\"})\n public resetOnChange = false;\n\n private activePerspective: Perspectives = Perspectives.Front;\n\n private async ApplyPerspective(perspective_: Perspectives) {\n this.loading = true;\n const zoomparams: IZoomParameters = {\n Perspective: perspective_,\n direction: [0.0, 0.0, 0.0],\n type: this.settings[\"zoom-type\"],\n animated: this.settings.animated\n };\n await CommunicationMessageService.setCameraZoom(zoomparams);\n\n this.loading = false;\n if (this.closeAfterChoice) {\n for (const event of this.applyEvents) {\n await EventHandlerService.dispatchAsyncEvent(event.id, event.data ? event.data : {});\n }\n\n const modal = this.parentElement as ModalComponent;\n if (modal && modal.hide) {\n modal.hide();\n this.active = false;\n }\n }\n\n this.activePerspective = perspective_;\n }\n\n\n static windowKeyListenerRegistered = false;\n\n constructor() {\n super();\n\n EventFactoryService.ChangePrice.register(() => {\n if (this.resetOnChange) {\n this.ApplyPerspective(this.activePerspective);\n }\n });\n\n if (PerspectiveControlMaskComponent.windowKeyListenerRegistered === false) {\n window.addEventListener(\"keydown\", (e) => {\n if (this.active && (this.perspectives.length == 0 || this.perspectives.length == Object.keys(PerspectiveControlMaskComponent.SearchPerspectives).length)) {\n if (e.location == e.DOM_KEY_LOCATION_NUMPAD) {\n switch (e.key) {\n case \"5\":\n case \"Clear\":\n this.ApplyPerspective(Perspectives.Top);\n break;\n\n case \"2\":\n case \"ArrowDown\":\n this.ApplyPerspective(Perspectives.Front);\n break;\n\n case \"8\":\n case \"ArrowUp\":\n this.ApplyPerspective(Perspectives.Back);\n break;\n\n case \"6\":\n case \"ArrowRight\":\n this.ApplyPerspective(Perspectives.Right);\n break;\n\n case \"4\":\n case \"ArrowLeft\":\n this.ApplyPerspective(Perspectives.Left);\n break;\n\n case \"1\":\n case \"End\":\n this.ApplyPerspective(Perspectives.TopLeftFront);\n break;\n\n case \"3\":\n case \"PageDown\":\n this.ApplyPerspective(Perspectives.TopRightFront);\n break;\n\n case \"7\":\n case \"Home\":\n this.ApplyPerspective(Perspectives.TopLeftBack);\n break;\n\n case \"9\":\n case \"PageUp\":\n this.ApplyPerspective(Perspectives.TopRightBack);\n break;\n\n default:\n break;\n }\n }\n }\n });\n PerspectiveControlMaskComponent.windowKeyListenerRegistered = true;\n }\n }\n\n private PerspectiveButtonClick(e: Event) {\n if (e.target) {\n const perspective: string | null = (e.target as ButtonComponent).getAttribute(\"perspective\");\n if (perspective) {\n const perspectiveValue = PerspectiveControlMaskComponent.SearchPerspectives[perspective];\n if (perspectiveValue) {\n this.ApplyPerspective(PerspectiveControlMaskComponent.SearchPerspectives[perspective]);\n } else {\n console.error(\"perspective (\" + perspective + \") does not exist!\");\n }\n } else {\n console.error(\"perspective not set on PerspectiveButton\");\n }\n }\n }\n\n private createPerspectiveButton(perspective: string): TemplateResult<1> {\n return html`\n <fv-button perspective=\"${perspective}\" @click=\"${this.PerspectiveButtonClick}\"\n i18n=\"perspective-${perspective}\">\n ${perspective}\n </fv-button>\n `;\n }\n\n private CreateAllPerspectiveButtons(): TemplateResult<1> {\n const allPerspectives = Object.keys(PerspectiveControlMaskComponent.SearchPerspectives);\n return html`${allPerspectives.map(perspective => this.createPerspectiveButton(perspective))}`;\n }\n\n protected build(content?: TemplateResult): TemplateResult<1> {\n if (this.loading) {\n super.build(html`\n <slot name=\"loader\"></slot>${content ? content : html``}`);\n }\n return super.build(content);\n }\n\n protected render(): TemplateResult<1> {\n if (this.perspectives.length < 1) {\n return this.build(html`\n <div>${this.CreateAllPerspectiveButtons()}</div>`);\n }\n return this.build(html`\n <div>${this.perspectives.map(perspective => this.createPerspectiveButton(perspective))}</div>`);\n }\n}\n","import {BaseMaskElement} from \"../../../base/mask.component\";\nimport {customElement} from \"lit/decorators.js\";\nimport {css, CSSResultGroup, html, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./reset.mask.component.sass?inline\";\nimport {ConfigurationService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-reset-mask\")\nexport class ResetMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private _isStarted = false;\n private _lastInteraction = 0;\n private _resetAfter = 0;\n private _active = false;\n private _resetTimeSpan?: HTMLSpanElement | null;\n private _timerHandle = 0;\n private _isReloading = false;\n private _textArray: Array<string> = [];\n private _resumeText?: string;\n\n\n constructor() {\n super();\n this.mask = \"reset-mask\";\n\n WebViewerService?.on(\"furnview.setLastInteraction\", async () => {\n this.setLastInteraction();\n });\n\n WebViewerService?.on(\"furnview.startResetTimer\", async () => {\n this.startTimer();\n this.setLastInteraction();\n });\n }\n\n\n private get ResetTimeSpan(): HTMLSpanElement | null | undefined {\n this._resetTimeSpan = this.shadowRoot?.querySelector(\".resetTimeSpan\");\n return this._resetTimeSpan;\n }\n\n public setLastInteraction() {\n this._lastInteraction = Date.now();\n }\n\n public async startTimer() {\n if (!this._isStarted) {\n this._isStarted = true;\n const configuration = await ConfigurationService.Configuration;\n if (((configuration?.sessionResetSettings as { [key: string]: unknown }).showModalTime as number) > 0 &&\n configuration?.sessionResetSettings && (configuration?.sessionResetSettings as {\n [key: string]: unknown\n }).enabled) {\n this._isReloading = false;\n this.setLastInteraction();\n this._timerHandle = setInterval(async () => {\n this.hasToBeShown();\n }, 100);\n }\n }\n }\n\n public stopTimer() {\n if (this._timerHandle) {\n this._isReloading = false;\n clearInterval(this._timerHandle);\n }\n }\n\n private hasToBeReloaded() {\n if (!this._isReloading && this.getTimeLeft() === 0) {\n this._isReloading = true;\n clearInterval(this._timerHandle);\n window.onbeforeunload = null;\n window.location.href = window.location.href.replace(/(&|\\?)session=[a-f0-9]{8}-([a-f0-9]{4}-){3}[a-f0-9]{12}/g, \"\");\n }\n }\n\n private async hasToBeShown() {\n const configuration = await ConfigurationService.Configuration;\n if (!this._active) {\n const distance = Date.now() - this._lastInteraction;\n if (distance / 1000 >= ((configuration?.sessionResetSettings as {\n [key: string]: unknown\n }).showModalTime as number)) {\n if (((configuration?.sessionResetSettings as { [key: string]: unknown }).resetTime as number) > 0) {\n this.Modal?.show(true, false);\n this.show();\n } else {\n this.hasToBeReloaded();\n }\n }\n } else {\n this.hasToBeReloaded();\n }\n }\n\n async show() {\n const configuration = await ConfigurationService.Configuration;\n this._isReloading = false;\n this._resetAfter = Date.now() + (((configuration?.sessionResetSettings as {\n [key: string]: unknown\n }).resetTime as number) * 1000);\n this._active = true;\n this.classList.remove(\"hidden\");\n this.getTimeLeft();\n super.show();\n this.Modal?.setAttribute(\"fullScreen\", \"\");\n this.Modal?.setAttribute(\"dimmed\", \"\");\n this.Modal?.style.setProperty(\"--modal-background\", \"transparent\");\n this.Modal?.show(true, false);\n }\n\n hide(stopTimer_ = true) {\n this._isReloading = false;\n this.classList.add(\"hidden\");\n this.setLastInteraction();\n this._active = false;\n if (stopTimer_) {\n this.stopTimer();\n }\n super.hide(true);\n }\n\n private getTimeLeft() {\n let timeLeft = Math.floor((this._resetAfter - Date.now()) / 1000);\n timeLeft = timeLeft >= 0 ? timeLeft : 0;\n if (this.ResetTimeSpan) {\n this.ResetTimeSpan.textContent = timeLeft.toString();\n }\n return timeLeft;\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n }\n\n requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n LocaleService?.get(\"fv.text.resume_planning\")\n .then((value) => {\n this._resumeText = value;\n LocaleService?.get(\"fv.konfigurator.optionen.session.settings.reset-message\")\n .then((value: string) => {\n this._textArray = value.split(\"<@TIME@>\");\n super.requestUpdate(name, oldValue, options);\n });\n });\n\n }\n\n private cancelClick() {\n this.hide(false);\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <div class=\"modal-center-container\">\n <div class=\"content-container\">\n <div class=\"message-container\">\n <h1 class=\"first-text-segment\">${this._textArray[0]}</h1>\n <h1 class=\"resetTimeSpan\">0</h1>\n <h1 class=\"second-text-segment\">${this._textArray[1]}</h1>\n </div>\n <div class=\"cancel-button\" @click=\"${this.cancelClick}\">\n <span i18n=\"fv.text.resume_planning\">${this._resumeText}</span>\n </div>\n </div>\n </div>\n `);\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n }\n}\n","import {css, CSSResultGroup, html, PropertyValueMap, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property, query, state} from \"lit/decorators.js\";\nimport {BaseMaskElement} from \"../../../base/mask.component\";\nimport {ModalComponent} from \"../../modal.component\";\nimport style from \"./step-based.mask.component.sass?inline\";\nimport {ButtonComponent} from \"../../../../standard/button/button.component\";\nimport {StepsComponent} from \"../../../steps/steps.component\";\nimport {CheckboxComponent} from \"../../../checkbox/checkbox.component\";\nimport {InputComponent} from \"../../../input/input/input.component\";\nimport {TextBoxComponent} from \"../../../text-box/text-box.component\";\nimport {CloudIdComponent} from \"../../../../extension\";\nimport {ITemplateConfig} from \"@dh-software/webui-types\";\nimport {MailerService, TemplateLoaderService} from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-step-based-mask\")\nexport class StepBasedMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"step-based-mask\";\n\n @property({type: Boolean, reflect: true, attribute: \"disable-info\"})\n private _disableInfoContainer = false;\n\n @property({type: Boolean, reflect: true, attribute: \"no-title\"})\n private _noTitle = false;\n\n @query(\"#share-submit\")\n private _shareSubmitButton?: ButtonComponent;\n\n @query(\"#data-protection-checkbox\")\n private _dataProtectionCheckbox?: CheckboxComponent;\n\n @query(\"#data-Proc-Link\")\n private _dataProcLink?: HTMLElement;\n\n @query(\"#share-mail-input\")\n private _shareMailInput?: InputComponent\n\n @query(\"#share-message-text\")\n private _shareMessageInput?: TextBoxComponent\n\n @query(\"#send-render-image\")\n private _renderImageSend?: ButtonComponent\n\n @query(\"#send-render-image-input\")\n private _renderImageEmail?: InputComponent\n\n @query(\"fv-steps\")\n private _steps ?: StepsComponent\n\n @query(\"fv-cloud-id[readonly]\")\n private _cloudIDComponent?: CloudIdComponent;\n @query(\".open-cloud-id\")\n private _openCloudIDComponent?: CloudIdComponent;\n\n private _renderImageBase64 = \"\";\n\n @property()\n private image = \"\"\n\n\n constructor() {\n super();\n }\n\n\n public show(showModal_?: boolean): void {\n super.show(showModal_);\n const modal = this.parentElement as ModalComponent;\n\n if (this._cloudIDComponent) {\n modal?.setLoading(true);\n this._cloudIDComponent.updateData()\n .then(() => {\n modal?.setLoading(false);\n });\n }\n if (this._openCloudIDComponent) {\n this._openCloudIDComponent.removeAttribute(\"loading\");\n }\n const stepid = this.maskData[\"step-id\"] as number;\n if (stepid && this._steps) {\n this._steps.activate(stepid);\n }\n\n }\n\n\n protected firstUpdated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.firstUpdated(_changedProperties);\n }\n\n\n private onceSuccessful = false;\n private getTemplatePromise: Promise<ITemplateConfig> | undefined = undefined;\n\n protected updated(_changedProperties: Map<string, unknown>) {\n if (this.onceSuccessful == false) {\n if (this._dataProtectionCheckbox && this._dataProcLink) {\n if (this._dataProtectionCheckbox) {\n this._dataProtectionCheckbox.onChange = () => {\n this.dataProtectionCheck();\n };\n }\n\n if (this.getTemplatePromise == undefined) {\n // @ts-ignore\n this.getTemplatePromise = TemplateLoaderService.getTemplateConfig(\"privacy-link\");\n if (this.getTemplatePromise) {\n this.getTemplatePromise.then((privacyLink: ITemplateConfig) => {\n if (privacyLink && this._dataProcLink) {\n this._dataProcLink.setAttribute(\"href\", privacyLink.value);\n this.onceSuccessful = true;\n }\n });\n }\n }\n }\n }\n super.updated(_changedProperties);\n }\n\n\n private dataProtectionCheck() {\n if (this._dataProtectionCheckbox && this._shareSubmitButton) {\n if (this._dataProtectionCheckbox.checked && this._shareSubmitButton) {\n this._shareSubmitButton.disabled = false;\n } else {\n this._shareSubmitButton.disabled = true;\n }\n }\n }\n\n\n private shareByMail() {\n if (this._cloudIDComponent && this._shareMailInput && this._shareMessageInput) {\n if (this._shareSubmitButton) {\n this._shareSubmitButton.disabled = true;\n if (this._cloudIDComponent.CloudID.length > 0 && this._shareMailInput.value.length > 0) {\n MailerService.shareByMail(this._shareMailInput.value, this._shareMessageInput.value, this._cloudIDComponent.CloudID);\n this._shareMailInput.value = \"\";\n this._shareMessageInput.value = \"\";\n }\n }\n }\n }\n\n\n private renderEmailSubmit() {\n if (this._renderImageEmail && this._renderImageSend) {\n\n if (/^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/.test(this._renderImageEmail.value.trim())) {\n this._renderImageSend.removeAttribute(\"disabled\");\n } else {\n this._renderImageSend.setAttribute(\"disabled\", \"\");\n }\n }\n }\n\n\n private sendRenderingEmail() {\n if (this._renderImageEmail && this._renderImageSend) {\n\n this._renderImageSend.addEventListener(\"click\", async () => {\n MailerService.sendConfiguredMail({\n name: \"Aus konfig lesen\",\n language: \"de\",\n values: [{\n key: \"to\",\n value: this._renderImageEmail?.value || \"\"\n }],\n attachments: [{filename: \"rendering.jpg\", path: this._renderImageBase64, cid: \"\"}]\n });\n });\n this._renderImageSend.setAttribute(\"disabled\", \"\");\n }\n }\n\n private createStep(templateId: string, txtid: string, index: number) {\n return html`\n <fv-step template-id=\"${templateId}\" ${this.maskData[\"step-id\"] == templateId ? \"active\" : \"\"}\n text=\"${txtid}\" index=\"${index}\"></fv-step>`;\n }\n\n\n protected render(): TemplateResult<1> {\n\n const targetSelectors = {\n \"0\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".download\"}},\n \"1\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".link\"}},\n \"2\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".planning\"}},\n \"3\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".dealer\"}},\n \"4\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".rendering\"}}\n };\n\n let totalStepCount = 0;\n return html`\n <div class=\"content-container\">\n\n ${this._noTitle ? \"\" : html`\n <h1>\n <slot name=\"main-titel\" i18n=\"remember\">Merken</slot>\n </h1>`}\n\n <fv-steps class=\"step-button-container\" step-target-selectors=\"${JSON.stringify(targetSelectors)}\">\n ${this.createStep(\"download-step\", \"20244\", totalStepCount++)}\n ${this.createStep(\"link-step\", \"send_link\", totalStepCount++)}\n ${this.createStep(\"planning-step\", \"25019\", totalStepCount++)}\n ${this.createStep(\"dealer-step\", \"fv.terms.request\", totalStepCount++)}\n ${this.createStep(\"rendering-step\", \"fv.konfigurator.optionen.toolbar.rendering\", totalStepCount++)}\n </fv-steps>\n\n <div class=\"step-content\">\n <fv-flex-container class=\"download\" template-id=\"download-step\">\n <div class=\"container column\">\n <fv-download></fv-download>\n </div>\n </fv-flex-container>\n\n <fv-flex-container class=\"link\" template-id=\"link-step\">\n <div class=\"container column\">\n <fv-label class=\"header space after\" i18n=\"send_link\">Link senden</fv-label>\n <fv-label class=\"space after\" template-id=\"link-text\"></fv-label>\n </div>\n <div class=\"container column\">\n <div class=\"fluid space-after\">\n <fv-label class=\"space after\" i18n=\"25029\">E-Mail*</fv-label>\n <fv-input id=\"share-mail-input\" @change=\"${this.dataProtectionCheck}\"\n i18n-placeholder=\"25029\" placeholder=\"E-Mail*\">\n </fv-input>\n </div>\n <div class=\"fluid\">\n <fv-label class=\"space after\" i18n=\"1528\">Name*</fv-label>\n <fv-input id=\"share-mail-input\" i18n-placeholder=\"7156\" placeholder=\"Name*\">\n </fv-input>\n </div>\n </div>\n <div class=\"container column\">\n <fv-label class=\"space after\" i18n=\"your_message\">Ihre Nachricht</fv-label>\n <fv-text-box id=\"share-message-text\" i18n-placeholder=\"your_message\"\n placeholder=\"Ihre Nachricht\"></fv-text-box>\n </div>\n <div class=\"container column\">\n <fv-checkbox id=\"data-protection-checkbox\">\n <span><span i18n=\"i_have_read\">Ich habe die</span> <a id=\"data-Proc-Link\"\n target=\"_blank\" href=\"#\"\n i18n=\"privacy_policy\">Datenschutzerklärung</a> <span\n i18n=\"and_agree_with_this\">gelesen und stimme dieser zu.</span></span>\n </fv-checkbox>\n </div>\n <div class=\"container row reverse\">\n <fv-button id=\"share-submit\" i18n=\"20116\" @click=\"${this.shareByMail}\" disabled>Senden\n </fv-button>\n </div>\n </fv-flex-container>\n\n <fv-flex-container class=\"planning\" class=\"active\" template-id=\"planning-step\">\n <div class=\"container column\">\n <fv-label class=\"header space after\" i18n=\"25019\"><!--Planungsnummer--></fv-label>\n <fv-label class=\"space after\" i18n=\"fv.modal.planning_number.text\"></fv-label>\n </div>\n <div class=\"container column\">\n <fv-cloud-id readonly></fv-cloud-id>\n </div>\n <div class=\"container column\">\n <fv-cloud-id class=\"open-cloud-id\"></fv-cloud-id>\n </div>\n </fv-flex-container>\n\n <fv-flex-container class=\"dealer\" template-id=\"dealer-step\">\n <div class=\"container column\">\n <fv-label class=\"header space after\" i18n=\"fv.terms.request\">Anfrage</fv-label>\n <fv-label class=\"space after\" template-id=\"dealer-text\"></fv-label>\n </div>\n <!-- <fv-search-dealer></fv-search-dealer>-->\n <fv-request active></fv-request>\n <fv-message></fv-message>\n </fv-flex-container>\n\n <fv-flex-container class=\"rendering\" template-id=\"rendering-step\">\n <div class=\"container column\">\n <fv-label class=\"header space after\" i18n=\"fv.konfigurator.optionen.toolbar.rendering\">\n Rendering\n </fv-label>\n <fv-input id=\"send-render-image-input\" i18n-placeholder=\"25029\"\n @change=\"${this.renderEmailSubmit}\" placeholder=\"E-Mail-Adresse\">\n <fv-button id=\"send-render-image\" i18n=\"20116\" @click=\"${this.sendRenderingEmail}\"\n disabled>Senden\n </fv-button>\n </fv-input>\n <div id=\"render-image\" class=\"renderImage\"></div>\n </div>\n </fv-flex-container>\n </div>\n </div>\n ${!this._disableInfoContainer ? html`\n <div class=\"info-container\">\n <h1>\n <slot name=\"side-titel\" i18n=\"your_selection\">Ihre Auswahl</slot>\n </h1>\n <div class=\"text\">\n <slot name=\"side-text\"></slot>\n </div>\n <div class=\"current-scene-image\" style=\"background-image: url('${this.image}')\"></div>\n </div>` : \"\"}\n `;\n }\n}\n","import { ReactiveController, ReactiveControllerHost } from 'lit';\nimport { HideableElement } from '../base/hide.base';\n\nexport class SlotHideStateController implements ReactiveController {\n private _host: ReactiveControllerHost;\n private _tracked = new Map<Element, () => void>();\n private trackedSlot: HTMLSlotElement | undefined = undefined;\n private _propagating = false;\n private _findSlot: ()=>HTMLSlotElement | undefined;\n private _childHideStateChangedEvent: (child_: Element, value_: boolean, parentStateChanged_: boolean)=>void;\n\n constructor(host: ReactiveControllerHost, findSlot_: ()=>HTMLSlotElement | undefined, childHideStateChangedEvent: (child_: Element, value_: boolean, parentStateChanged_: boolean)=>void) {\n (this._host = host).addController(this);\n this._findSlot = findSlot_;\n this._childHideStateChangedEvent = childHideStateChangedEvent;\n }\n\n private get _slot(): HTMLSlotElement | undefined {\n return this._findSlot();\n }\n private _subscribe(child: Element): () => void {\n const hideable = child as Partial<HideableElement>;\n if (typeof hideable.addHideStateUpdatedEventListener !== \"function\") {\n // Not a HideMixin element — record a no-op disposer so this child\n // is \"tracked\" and we don't re-probe it on every slotchange.\n return () => { /* no-op */ };\n }\n return hideable.addHideStateUpdatedEventListener((value, parentStateChanged) => {\n if (this._propagating) {\n return;// prevent hide-state-change event if the change was triggered by the bridge!\n }\n this._childHideStateChangedEvent(child, value, parentStateChanged);\n });\n }\n private _trackChildren(): void {\n const current = new Set<Element>(this._slot?.assignedElements({ flatten: true }) ?? []);\n\n // Removed children\n for (const [child, dispose] of this._tracked) {\n if (!current.has(child)) {\n dispose();\n this._tracked.delete(child);\n }\n }\n\n // Added children\n for (const child of current) {\n if (!this._tracked.has(child)) {\n this._tracked.set(child, this._subscribe(child));\n }\n }\n }\n private _dispose(): void {\n for (const [child, dispose] of this._tracked) {\n dispose();\n this._tracked.delete(child);\n }\n }\n\n hostUpdated() {\n if (this.trackedSlot == undefined || this.trackedSlot != this._slot) {\n this.trackedSlot = this._slot;\n this.trackedSlot?.addEventListener(\"slotchange\", ()=>{\n this._trackChildren();\n });\n }\n }\n\n hostDisconnected() {\n this._dispose();\n }\n\n public PropagateState(state: boolean): void {\n if (this._tracked.size === 0) return;\n\n this._propagating = true;\n try {\n for (const child of this._tracked.keys()) {\n const hideable = child as Partial<HideableElement>;\n if (typeof hideable.hideElement !== \"boolean\") continue;\n if (hideable.hideElement === state) continue; // no-op write\n hideable.hideElement = state;\n }\n } catch (error) {\n console.error(error);// might as well log the error, since a try->finally is already in use here\n throw error;\n } finally { // just ensuring this state is allways reset, no matter what goes wrong on the other end\n this._propagating = false;\n }\n }\n}","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { SlotHideStateController } from \"../../../controllers\";\n\nimport style from \"./synchronised-hide-state-mask.component.sass?inline\";\n\n\n@customElement(\"fv-synchronised-hide-state-mask\")\nexport class SynchronisedHideStateMaskComponent extends BaseMaskElement {\n\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"synchronised-hide-state-mask\";\n\n @query(\"slot\")\n private _slot?: HTMLSlotElement;\n\n /**\n * Tag name of a layout container the mask builds internally around its slot\n * (e.g. \"fv-scroll-aware-container\", \"fv-flex-container\"). Unset / \"none\"\n * renders a plain <slot> (default, original behavior). Letting the mask own\n * the container keeps slotted hideable content as a DIRECT slot assignment,\n * so SlotHideStateController tracks it at depth-1.\n */\n @property({ type: String, reflect: true, attribute: \"host-container\" })\n public hostContainer?: string;\n\n private _hostContainerEl?: HTMLElement;\n\n private hideStateBridge = new SlotHideStateController(this, ()=>this._slot, this.onChildHideStateChanged.bind(this));//new HideStateBridge(()=>this._slot, this.onChildHideStateChanged.bind(this));\n\n private _slottedContent(): TemplateResult {\n const tag = this.hostContainer?.trim();\n if (!tag || tag === \"none\") {\n this._hostContainerEl = undefined; // release cache → plain slot\n return html`<slot></slot>`;\n }\n // Build once; reuse the same instance until the tag changes, so we don't\n // re-fire slotchange / reset scroll state / churn the controller per render.\n if (this._hostContainerEl?.localName !== tag) {\n try {\n const container = document.createElement(tag);\n container.appendChild(document.createElement(\"slot\"));\n this._hostContainerEl = container;\n } catch {\n this._hostContainerEl = undefined; // invalid tag name → plain slot\n return html`<slot></slot>`;\n }\n }\n return html`${this._hostContainerEl}`;\n }\n\n protected render(): TemplateResult<1> {\n return this.build(this._slottedContent());\n }\n\n protected onChildHideStateChanged(child_: Element, value_: boolean, parentStateChanged_: boolean): void {\n if (parentStateChanged_) {\n return;\n }\n\n if (!this._modal) {\n return; // something went wrong in firstUpdated of BaseMaskElement\n }\n\n if (!value_) {\n this._modal?.open(this.mask, {}, \"\", this._modal?.dimmed, this._modal?.fade);\n return;\n }\n this._modal?.hide(false, true);\n }\n\n public willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (changed.has(\"active\") && changed.get(\"active\") === true && this.active === false) {\n this.hideStateBridge.PropagateState(true);\n }\n }\n\n protected firstUpdated(c: PropertyValues): void {\n super.firstUpdated(c);\n\n this._modal?.addEventListener('onHide', ()=>{\n this.hideStateBridge.PropagateState(true);\n });\n }\n}","import {BaseMaskElement} from \"../../../base/mask.component\";\nimport {EventHandlerService} from \"../../../../../utils/event.handler.service\";\nimport {css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, query, property, state} from \"lit/decorators.js\";\nimport style from \"./program-selection-confirmation.mask.component.sass?inline\";\nimport {IDeferHelperClass} from \"../../../../../utils/defer-helper.class\";\nimport {ProgramSelectionHelper} from \"../../../../../utils/program-selection.helper\";\n\n@customElement(\"fv-program-selection-confirmation\")\nexport class ProgramSelectionConfirmationMaskComponent extends BaseMaskElement {\n\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: Object})\n private responseDefer?: IDeferHelperClass ;\n\n @state()\n public mask = \"program-selection-confirmation\";\n\n @query(\".container\")\n private container: HTMLDivElement | undefined;\n\n @query(\".loader-slot\")\n private saveButtonLoader: HTMLDivElement | undefined;\n\n private change(ev: Event) {\n this._cancel(ev);\n this.responseDefer?.resolve([true]);\n }\n\n private async saveAndChange(ev: Event) {\n this._cancel(ev);\n if (this.saveButtonLoader) {\n this.saveButtonLoader.classList.remove(\"hidden\");\n }\n await EventHandlerService.dispatchAsyncEvent(\"save\", {});\n if (this.saveButtonLoader) {\n this.saveButtonLoader.classList.add(\"hidden\");\n }\n this.change(ev);\n }\n\n private async abort(ev: Event) {\n this._cancel(ev);\n this.responseDefer?.resolve([false]);\n }\n\n private _cancel(ev: Event) {\n ev.preventDefault();\n ev.stopImmediatePropagation();\n ev.stopPropagation();\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <div class=\"container\">\n <div class=\"text\" i18n=\"fv.modal.programselection.info\"></div>\n <div class=\"buttons-container\">\n <div class=\"button\" i18n=\"fv.modal.programselection.change\" @click=\"${this.change}\"></div>\n <div class=\"button save-button\" @click=\"${this.saveAndChange}\">\n <span i18n=\"fv.modal.programselection.save\"></span>\n <span>\n <slot class=\"loader-slot hidden\" name=\"loader\"></slot>\n </span>\n </div>\n <div class=\"button\" i18n=\"fv.modal.programselection.cancel\" @click=\"${this.abort}\"></div>\n </div>\n </div>\n `);\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n\n if (this.container && this.container.hasAttribute(\"listening\") == false) {\n this.container.setAttribute(\"listening\", \"true\");\n this.container.addEventListener(\"click\", (e)=>{\n e.preventDefault();\n e.stopImmediatePropagation();\n e.stopPropagation();\n });\n }\n }\n\n public set ResponseDefer(defer: IDeferHelperClass) {\n this.responseDefer = defer;\n }\n\n}\n","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\n\nimport style from \"./container-mask.component.sass?inline\";\n\n@customElement(\"fv-container-mask\")\nexport class ContainerMaskComponent extends BaseMaskElement {\n\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"container-mask\";\n\n @property({ type: String, reflect: true, attribute: \"header-image\" })\n public headerImage: string = \"\";\n\n @property({ type: String, reflect: true, attribute: \"title-text\" })\n public titleText = \"\";\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <fv-flex-container>\n <div class=\"image-container\">\n <img class=\"image\" src=\"${this.headerImage}\">\n </div>\n <span class=\"title\">${this.titleText}</span>\n <slot class=\"slot-content\"></slot>\n </fv-flex-container>\n `);\n }\n\n}\n","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./messageNoCalc.mask.component.sass?inline\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\nimport \"../../../button/button.component\";\r\nimport { BaseMaskElement } from \"../../../base/mask.component\";\r\n\r\n\r\n@customElement(\"fv-message-no-calc-mask\")\r\nexport class MessageNoCalcMask extends BaseMaskElement {\r\n static styles: CSSResultGroup[] = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n @state()\r\n public mask = \"noCalculation\";\r\n\r\n @property()\r\n private messageText : string = \"\";\r\n\r\n constructor() {\r\n super();\r\n };\r\n\r\n public show(showModal_?: boolean | undefined): void {\r\n this.messageText = this.maskData.message as string ? this.maskData.message as string : \"\";\r\n super.show(showModal_);\r\n this.Modal?.style.setProperty(\"z-index\", \"1001\")\r\n this.Modal?.style.setProperty(\"backdrop-filter\", \"blur(10px)\")\r\n }\r\n\r\n public hide(closeModal?: boolean): void {\r\n super.hide(closeModal);\r\n this.Modal?.style.setProperty(\"z-index\", null);\r\n this.Modal?.style.setProperty(\"backdrop-filter\", null)\r\n }\r\n\r\n private cancelMessage(e_: Event) {\r\n this.dispatchEvent(new CustomEvent(\"cancel-pdf-window\", { bubbles: true, composed: true }));\r\n this.hide(true);\r\n };\r\n render(): TemplateResult<1> {\r\n return this.build(html`\r\n <div class=\"message-main-container\">\r\n <fv-label>D+H Message Error</fv-label>\r\n <p>${this.messageText}</p>\r\n <div class=\"toolbar\">\r\n <fv-button class=\"button\" @click=\"${this.cancelMessage}\">Abbrechen</fv-button>\r\n <fv-button class=\"button\" @click=\"${()=>{this.hide(true)}}\">OK</fv-button>\r\n </div>\r\n </div>\r\n `);\r\n }\r\n}","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./iwoFurn.mask.component.sass?inline\";\nimport { customElement, property, query, queryAll, state } from \"lit/decorators.js\";\nimport { ButtonComponent } from \"../../../button/button.component\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport { InputComponent } from \"../../../../standard/input/input/input.component\";\nimport \"../../../../standard/input/input/input.component\";\nimport \"../../../button/button.component\";\n\ninterface InputValues {\n name: string;\n inputValue: string;\n}\n\ninterface AdministrationValues {\n DEALER_ILN: string;\n EXPORT_IWOFURN_AUTO_SET_PLANNING_ID: string;\n EXPORT_IWOFURN_AUTO_PLANNING_ID_PREFIX: string;\n EXPORT_IWOFURN_EMPTY_FILIALID: string;\n EXPORT_IWOFURN_AUTO_SET_VENDORID: string;\n EXPORT_IWOFURN_SET_OTHER_VENDOR_TELEPHONE_NUMBER: string;\n EXPORT_WAWI_CREATE_WAWI_ID: string;\n EXPORT_IWOFURN_START_WITHOUT_PM: string;\n}\n\ninterface ProjectManagerValueInterface {\n anrede: string;\n zusatz: string;\n vorname: string;\n nachname: string;\n strasse: string;\n postleitzahl: string;\n ort: string;\n land: string;\n telefon: string;\n fax: string;\n eMail: string;\n projektname: string;\n planungsnummer: string;\n kommission: string;\n branchID: string;\n sellerID: string;\n}\n\ninterface VendorInterface {\n branchName: string;\n country: string;\n location: string;\n postalcode: string;\n street: string;\n telephone: string;\n}\n\ninterface IwoFurnResponse {\n ResponseStatus: string;\n furncloudWawiID: number;\n}\n\n@customElement(\"fv-iwofurn-mask\")\nexport class IwoFurnMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`\n ${unsafeCSS(style)}\n `,\n ];\n\n @state()\n public mask = \"iwoFurn\";\n\n @property({ type: Boolean, reflect: true, attribute: \"reduced\" })\n public reduced = false;\n\n //customer values\n @property()\n private customerSalutation : string = \"\";\n @property()\n private academicTitle : string = \"\";\n @property()\n private customerFirstName : string = \"\";\n @property()\n private customerLastName : string = \"\";\n @property()\n private customerStreet : string = \"\";\n @property()\n private customerPostalCode : string = \"\";\n @property()\n private customerLocation : string = \"\";\n @property()\n private customerCountry : string = \"\";\n @property()\n private customerTel : string = \"\";\n @property()\n private customerFax : string = \"\";\n @property()\n private customerEmail : string = \"\";\n\n //plannings values\n @property()\n private senderILN : string = \"\";\n @property()\n private receiverILN : string = \"\";\n @property()\n private plannigName : string = \"\";\n @property()\n private plannigNR : string = \"\";\n @property()\n private commission : string = \"False\";\n @property()\n private planningID : string = \"\";\n @property()\n private branchID : string = \"1\";\n @property({type: String, reflect: true})\n private wawiFlag : string = \"\";\n\n //vendor values\n @property()\n private storeSalutation : string = \"\";\n @property()\n private sellerID : string = \"\";\n @property()\n private storeFirstName : string = \"\";\n @property()\n private storeLastName : string = \"\";\n @property()\n private storeStreet : string = \"\";\n @property()\n private storePostalCode : string = \"\";\n @property()\n private storeLocation : string = \"\";\n @property()\n private storeCountry : string = \"\";\n @property()\n private storeTel : string = \"\";\n @property()\n private storeFax : string = \"\";\n @property()\n private storeEmail : string = \"\";\n @property()\n private branchName : string = \"\";\n\n //queries\n @queryAll(\".iwofurn-input\")\n _inputList!: NodeListOf<InputComponent>;\n\n @query(\".warning-container\")\n _warning!: HTMLDivElement;\n\n @query(\".iwoFurn-main-container\")\n _main!: HTMLDivElement;\n\n @query(\".response-container\")\n _responseContainer!: HTMLDivElement;\n\n @query(\".toolbar\")\n _toolbar!: HTMLDivElement;\n\n @query(\"#failure\")\n _failureLabel!: HTMLElement;\n\n @query(\"#success\")\n _successLabel!: HTMLElement;\n\n @query(\".wawiFlag-container\")\n _wawiFlagContainer!: HTMLDivElement;\n\n @query(\".iwoheader-container\")\n _iwoheaderContainer !:HTMLDivElement;\n\n private projectManagerValue: ProjectManagerValueInterface | undefined =\n undefined;\n public set projectManagerInfo(\n values: ProjectManagerValueInterface | undefined\n ) {\n this.projectManagerValue = values;\n }\n public get projectManagerInfo(): ProjectManagerValueInterface | undefined {\n return this.projectManagerValue;\n }\n\n private vendorValue: VendorInterface | undefined = undefined;\n public set vendorInfo(values: VendorInterface | undefined) {\n this.vendorValue = values;\n }\n public get vendorInfo(): VendorInterface | undefined {\n return this.vendorValue;\n }\n\n private adminValue: AdministrationValues | undefined = undefined;\n public set adminInfo(values: AdministrationValues | undefined) {\n this.adminValue = values;\n }\n public get adminInfo(): AdministrationValues | undefined {\n return this.adminValue;\n }\n\n private returnPlanningDetails() {\n const planningDetails: Array<InputComponent> = [];\n this._inputList.forEach((element) => {\n planningDetails.push(element);\n });\n return planningDetails;\n }\n\n private toogleContainer(e: Event) {\n const key = (e.target as ButtonComponent).getAttribute(\"container-key\");\n const otherButtons = this.renderRoot.querySelectorAll(\n \"fv-button:not([container-key=\" + key + \"]\"\n ) as NodeListOf<ButtonComponent>;\n const element = this.renderRoot.querySelector(\n \"div[container-key=\" + key + \"]\"\n ) as HTMLDivElement;\n if (element.style.maxHeight) {\n element.removeAttribute(\"style\");\n (e.target as ButtonComponent).classList.remove(\"active\");\n otherButtons[0].disabled = false;\n otherButtons[1].disabled = false;\n }\n else {\n element.style.maxHeight = element.scrollHeight + \"px\";\n element.style.display = \"contents\";\n (e.target as ButtonComponent).classList.add(\"active\");\n otherButtons[0].disabled = true;\n otherButtons[1].disabled = true;\n }\n }\n\n constructor() {\n super();\n }\n\n public show(showModal_?: boolean | undefined): void {\n super.show(showModal_);\n this.Modal?.style.setProperty(\"overflow\", \"auto\");\n }\n\n public hide(closeModal?: boolean | undefined): void {\n super.hide(closeModal);\n this.Modal?.style.setProperty(\"overflow\", null);\n }\n\n public setLoading(visible_?: boolean) {\n this.Modal?.setLoading(visible_);\n }\n\n private checkValidity(array: Array<InputComponent>) {\n for (let index = 0; index < array.length; index++) {\n const element = array[index];\n element.classList.remove(\"required-no-value\");\n if (element.required == true && element.value == \"\") {\n element.classList.add(\"required-no-value\");\n }\n }\n return !(array.some(element => element.classList.contains(\"required-no-value\")));\n }\n\n private hideAllLabels(inputElementArray: Array<InputComponent>) {\n inputElementArray.forEach(element => {\n element._placeholder?.classList.add(\"hidden\");\n });\n }\n\n private sendToIwoFurn() {\n const inputElementArray: Array<InputComponent> = this.returnPlanningDetails();\n if (this.checkValidity(inputElementArray)) {\n this._warning.classList.add(\"hidden\");\n const windowValues: Array<InputValues> = [];\n inputElementArray.forEach(element => {\n const inputObj: InputValues = {\n name: element.name,\n inputValue: element.value\n };\n windowValues.push(inputObj);\n });\n const branchNameObj: InputValues = {\n name: \"branchName\",\n inputValue: this.branchName\n };\n windowValues.push(branchNameObj);\n this.hideAllLabels(inputElementArray);\n this.dispatchEvent(\n new CustomEvent(\"sendToIwoFurn\", { detail: windowValues })\n );\n }\n else {\n this._warning.classList.remove(\"hidden\");\n }\n }\n\n private changeMaskState() {\n this.reduced = !this.reduced;\n this.requestUpdate();\n }\n\n public showResponse(response : IwoFurnResponse) {\n if (response.ResponseStatus == \"0\") {\n this._failureLabel.classList.remove(\"hidden\");\n }\n else if (response.furncloudWawiID) {\n this._successLabel.classList.remove(\"hidden\");\n this.wawiFlag = response.ResponseStatus;\n this._wawiFlagContainer.classList.remove(\"hidden\");\n this.requestUpdate();\n }\n else if (response.ResponseStatus == \"1\") {\n this._successLabel.classList.remove(\"hidden\");\n }\n this._main.classList.add(\"hidden\");\n this._toolbar.classList.add(\"hidden\");\n this._responseContainer.classList.remove(\"hidden\");\n this._iwoheaderContainer.classList.add(\"response\");\n }\n\n public resetDisplay() {\n this.hide(true);\n this._iwoheaderContainer.classList.remove(\"response\");\n this._main.classList.remove(\"hidden\");\n this._toolbar.classList.remove(\"hidden\");\n this._responseContainer.classList.add(\"hidden\");\n this.resetProperties();\n }\n\n private resetProperties() {\n //customer values\n this.customerSalutation = \"\";\n this.academicTitle = \"\";\n this.customerFirstName = \"\";\n this.customerLastName = \"\";\n this.customerStreet = \"\";\n this.customerPostalCode = \"\";\n this.customerLocation = \"\";\n this.customerCountry = \"\";\n this.customerTel = \"\";\n this.customerFax = \"\";\n this.customerEmail = \"\";\n //plannings values\n this.senderILN = \"\";\n this.receiverILN = \"\";\n this.plannigName = \"\";\n this.plannigNR = \"\";\n this.commission = \"False\";\n this.planningID = \"\";\n this.branchID = \"1\";\n this.wawiFlag = \"\";\n //vendor values\n this.storeSalutation = \"\";\n this.sellerID = \"\";\n this.storeFirstName = \"\";\n this.storeLastName = \"\";\n this.storeStreet = \"\";\n this.storePostalCode = \"\";\n this.storeLocation = \"\";\n this.storeCountry = \"\";\n this.storeTel = \"\";\n this.storeFax = \"\";\n this.storeEmail = \"\";\n this.branchName = \"\";\n }\n\n\n private cancel() {\n this.hide(true);\n this.resetProperties();\n }\n\n private copyToClipboard() {\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(this.wawiFlag);\n }\n }\n\n private setValues() {\n if (this.projectManagerInfo) {\n this.setCustomerValues(this.projectManagerInfo);\n }\n\n this.senderILN = this.adminValue ? this.adminValue.DEALER_ILN : this.senderILN;\n this.receiverILN = this.adminValue ? this.adminValue.DEALER_ILN : this.receiverILN;\n\n this.plannigName = this.projectManagerInfo?.projektname || this.plannigName;\n this.plannigNR = this.projectManagerInfo?.planungsnummer || this.plannigNR;\n this.branchID = this.projectManagerInfo?.branchID || this.branchID;\n this.sellerID = this.projectManagerInfo?.sellerID || this.sellerID;\n this.commission = this.projectManagerInfo?.kommission || \"False\";\n\n\n if (this.adminValue?.EXPORT_IWOFURN_START_WITHOUT_PM == \"1\") {\n this.plannigName = \"0\";\n this.plannigNR = \"0\";\n }\n\n if (this.adminValue?.EXPORT_IWOFURN_AUTO_SET_PLANNING_ID) {\n this.planningID = this.plannigNR;\n }\n if (this.adminValue?.EXPORT_IWOFURN_AUTO_PLANNING_ID_PREFIX) {\n this.planningID = this.adminValue.EXPORT_IWOFURN_AUTO_PLANNING_ID_PREFIX + this.planningID;\n }\n if (this.adminValue?.EXPORT_WAWI_CREATE_WAWI_ID == \"1\") {\n this.planningID = \"auto-gen\";\n }\n\n if (this.adminValue?.EXPORT_IWOFURN_EMPTY_FILIALID) {\n this.branchID = \"\";\n }\n\n if (this.vendorValue) {\n if (this.adminValue?.EXPORT_IWOFURN_AUTO_SET_VENDORID && this.adminValue.EXPORT_IWOFURN_AUTO_SET_VENDORID != \"\") {\n this.sellerID = this.adminValue.EXPORT_IWOFURN_AUTO_SET_VENDORID;\n }\n if (this.adminValue?.EXPORT_IWOFURN_SET_OTHER_VENDOR_TELEPHONE_NUMBER && this.adminValue.EXPORT_IWOFURN_SET_OTHER_VENDOR_TELEPHONE_NUMBER != \"\") {\n this.vendorValue.telephone = this.adminValue?.EXPORT_IWOFURN_SET_OTHER_VENDOR_TELEPHONE_NUMBER;\n }\n this.setVendorValues(this.vendorValue);\n }\n }\n\n private setCustomerValues(data: ProjectManagerValueInterface) {\n this.customerSalutation = data?.anrede ? data.anrede : \"\";\n this.academicTitle = data.zusatz ? data.zusatz : \"\";\n this.customerFirstName = data.vorname ? data.vorname : \"\";\n this.customerLastName = data.nachname ? data.nachname : \"\";\n this.customerStreet = data.strasse ? data.strasse : \"\";\n this.customerPostalCode = data.postleitzahl ? data.postleitzahl : \"\";\n this.customerLocation = data.ort ? data.ort : \"\";\n this.customerCountry = data.land ? data.land : \"\";\n this.customerTel = data.telefon ? data.telefon : \"\";\n this.customerFax = data.fax ? data.fax : \"\";\n this.customerEmail = data.eMail ? data.eMail : \"\";\n }\n\n private setVendorValues(data: VendorInterface) {\n this.branchName = data.branchName ? data.branchName : this.branchName;\n this.storeStreet = data.street ? data.street : this.storeStreet;\n this.storePostalCode = data.postalcode ? data.postalcode : this.storePostalCode;\n this.storeLocation = data.location ? data.location : this.storeLocation;\n this.storeCountry = data.country ? data.country : this.storeCountry;\n this.storeTel = data.telephone ? data.telephone : this.storeTel;\n }\n\n render(): TemplateResult<1> {\n this.setValues();\n\n return this.build(html`\n <div class=\"iwoheader-container ${this.reduced ? \"reduced\" : \"\"}\">\n <fv-icon icon=\"fv-icon-iwofurn\"></fv-icon>\n <fv-label class=\"iwoheader\">IWOfurn</fv-label>\n </div>\n <div class=\"iwoFurn-main-container ${this.reduced ? \"reduced\" : \"\"}\">\n <fv-button @click=\"${this.toogleContainer}\" container-key=\"customer\" class=\"dropdown-button\" i18n=\"25003\">Kundenanschrift</fv-button>\n <div container-key=\"customer\" class=\"forms-container ${this.reduced ? \"hidden\" : \"\"}\">\n <fv-label class=\"header\" i18n=\"25003\">Kundenanschrift</fv-label>\n <div class=\"sub-form-container\">\n <fv-input class=\"iwofurn-input\" placeholder=\"Anrede\" moveable-placeholder=\"true\" name=\"customerSalutation\" value=\"${this.customerSalutation}\" i18n-placeholder=\"25020\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Akad. Titel\" moveable-placeholder=\"true\" name=\"academicTitle\" value=\"${this.academicTitle}\" i18n-placeholder=\"25021\"></fv-input>\n </div>\n <div class=\"sub-form-container\">\n <fv-input class=\"iwofurn-input\" placeholder=\"Vorname\" moveable-placeholder=\"true\" name=\"customerFirstName\" value=\"${this.customerFirstName}\" i18n-placeholder=\"20322\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Nachname\" moveable-placeholder=\"true\" name=\"customerLastName\" value=\"${this.customerLastName}\" i18n-placeholder=\"20323\"></fv-input>\n </div>\n <fv-input class=\"iwofurn-input\" placeholder=\"Strasse\" moveable-placeholder=\"true\" name=\"customerStreet\" value=\"${this.customerStreet}\" i18n-placeholder=\"25025\"></fv-input>\n <div class=\"sub-form-container\">\n <fv-input class=\"iwofurn-input\" placeholder=\"Postleitzahl\" moveable-placeholder=\"true\" name=\"customerPostalCode\" value=\"${this.customerPostalCode}\" i18n-placeholder=\"25026\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Ort\" moveable-placeholder=\"true\" name=\"customerLocation\" value=\"${this.customerLocation}\" i18n-placeholder=\"25027\"></fv-input>\n </div>\n <fv-input class=\"iwofurn-input\" placeholder=\"Land\" moveable-placeholder=\"true\" name=\"customerCountry\" value=\"${this.customerCountry}\" i18n-placeholder=\"25028\"></fv-input>\n <div class=\"sub-form-container\">\n <fv-input class=\"iwofurn-input\" placeholder=\"Telefon\" moveable-placeholder=\"true\" name=\"customerTel\" value=\"${this.customerTel}\" i18n-placeholder=\"20381\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Fax\" moveable-placeholder=\"true\" name=\"customerFax\" value=\"${this.customerFax}\" i18n-placeholder=\"25033\"></fv-input>\n </div>\n <fv-input class=\"iwofurn-input\" placeholder=\"E-Mail\" moveable-placeholder=\"true\" name=\"customerEmail\" value=\"${this.customerEmail}\" i18n-placeholder=\"25029\"></fv-input>\n </div>\n <fv-button @click=\"${this.toogleContainer}\" container-key=\"plannings\" class=\"dropdown-button\" i18n=\"25052\">Planungsdetails</fv-button>\n <div container-key=\"plannings\" class=\"forms-container\">\n <fv-label class=\"header\" i18n=\"25052\">Planungsdetails</fv-label>\n <fv-input class=\"iwofurn-input\" placeholder=\"Sender ILN*\" moveable-placeholder=\"true\" name=\"senderILN\" value=\"${this.senderILN}\" required=\"true\" i18n-placeholder=\"25054\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Empfänger ILN*\" moveable-placeholder=\"true\" name=\"receiverILN\" value=\"${this.receiverILN}\" required=\"true\" i18n-placeholder=\"25053\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Planungsname*\" moveable-placeholder=\"true\" name=\"plannigName\" value=\"${this.plannigName}\" required=\"true\" i18n-placeholder=\"fv.iwofurn.planingname\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Planungsnummer*\" moveable-placeholder=\"true\" name=\"plannigNR\" value=\"${this.plannigNR}\" required=\"true\" i18n-placeholder=\"25019\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Kommission\" moveable-placeholder=\"true\" name=\"commission\" value=\"${this.commission}\" i18n-placeholder=\"25010\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Planungs ID*\" moveable-placeholder=\"true\" name=\"planningID\" value=\"${this.planningID}\" required=\"true\" i18n-placeholder=\"fv.iwofurn.planningID\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Filial ID*\" moveable-placeholder=\"true\" name=\"branchID\" value=\"${this.branchID}\" required=\"true\" i18n-placeholder=\"fv.iwofurn.branchID\"></fv-input>\n <button @click=\"${this.changeMaskState}\" class=\"fv-icon-arrow-down-2 changeState-button flip-vertical ${this.reduced ? \"hidden\" : \"\"}\"></button>\n </div>\n <fv-button @click=\"${this.toogleContainer}\" container-key=\"vendor\" class=\"dropdown-button\" i18n=\"1401\">Möbelhaus Adresse</fv-button>\n <div container-key=\"vendor\" class=\"forms-container ${this.reduced ? \"hidden\" : \"\"}\">\n <fv-label class=\"header\" i18n=\"1401\">Möbelhaus Adresse</fv-label>\n <div class=\"sub-form-container\">\n <fv-input class=\"iwofurn-input\" placeholder=\"Anrede\" moveable-placeholder=\"true\" name=\"storeSalutation\" value=\"${this.storeSalutation}\" i18n-placeholder=\"25020\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Verkäufer ID*\" moveable-placeholder=\"true\" name=\"sellerID\" value=\"${this.sellerID}\" required=\"true\" i18n-placeholder=\"fv.iwofurn.sellerID\"></fv-input>\n </div>\n <div class=\"sub-form-container\">\n <fv-input class=\"iwofurn-input\" placeholder=\"Vorname\" moveable-placeholder=\"true\" name=\"storeFirstName\" value=\"${this.storeFirstName}\" i18n-placeholder=\"20322\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Nachname\" moveable-placeholder=\"true\" name=\"storeLastName\" value=\"${this.storeLastName}\" i18n-placeholder=\"20323\"></fv-input>\n </div>\n <fv-input class=\"iwofurn-input\" placeholder=\"Strasse*\" moveable-placeholder=\"true\" name=\"storeStreet\" value=\"${this.storeStreet}\" required=\"true\" i18n-placeholder=\"25025\"></fv-input>\n <div class=\"sub-form-container\">\n <fv-input class=\"iwofurn-input\" placeholder=\"Postleitzahl*\" moveable-placeholder=\"true\" name=\"storePostalCode\" value=\"${this.storePostalCode}\" required=\"true\" i18n-placeholder=\"25026\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Ort*\" moveable-placeholder=\"true\" name=\"storeLocation\" value=\"${this.storeLocation}\" required=\"true\" i18n-placeholder=\"25027\"></fv-input>\n </div>\n <fv-input class=\"iwofurn-input\" placeholder=\"Land*\" moveable-placeholder=\"true\" name=\"storeCountry\" value=\"${this.storeCountry}\" required=\"true\" i18n-placeholder=\"25028\"></fv-input>\n <div class=\"sub-form-container\">\n <fv-input class=\"iwofurn-input\" placeholder=\"Telefon*\" moveable-placeholder=\"true\" name=\"storeTel\" value=\"${this.storeTel}\" required=\"true\" i18n-placeholder=\"20381\"></fv-input>\n <fv-input class=\"iwofurn-input\" placeholder=\"Fax\" moveable-placeholder=\"true\" name=\"storeFax\" value=\"${this.storeFax}\" i18n-placeholder=\"25033\"></fv-input>\n </div>\n <fv-input class=\"iwofurn-input\" placeholder=\"E-Mail\" moveable-placeholder=\"true\" name=\"storeEmail\" value=\"${this.storeEmail}\" i18n-placeholder=\"25029\"></fv-input>\n </div>\n </div>\n <div class=\"response-container hidden\">\n <fv-label class=\"reponse-label hidden\" id=\"failure\" i18n=fv.transfer.failure>Übertragung fehlgeschlagen</fv-label>\n <fv-label class=\"reponse-label hidden\" id=\"success\" i18n=fv.transfer.success>Übertragung erfolgreich</fv-label>\n <div class=\"wawiFlag-container hidden\">\n <fv-input class=\"wawiFlagIpt\" value=\"${this.wawiFlag}\"></fv-input>\n <fv-icon class=\"iwofurn-button copyIcon\" icon=\"fv-icon-content-copy\" @click=\"${this.copyToClipboard}\"></fv-icon>\n </div>\n <fv-button class=\"iwofurn-button\" @click=\"${this.resetDisplay}\" i18n=\"1938\">OK</fv-button>\n </div>\n <div class=\"warning-container hidden\">\n <fv-label i18n=fv.iwofurn.warning>Bitte überprüfen sie ihre Eingaben</fv-label>\n </div>\n <div class=\"toolbar ${this.reduced ? \"reduced\" : \"\"}\">\n <button @click=\"${this.changeMaskState}\" class=\"fv-icon-arrow-down-2 changeState-button ${this.reduced ? \"\" : \"hidden\"}\"></button>\n <fv-button @click=\"${this.cancel}\" class=\"iwofurn-button ${this.reduced ? \"reduced\" : \"\"}\" i18n=\"1939\">Abbrechen</fv-button>\n <fv-button @click=\"${this.sendToIwoFurn}\" class=\"iwofurn-button ${this.reduced ? \"reduced\" : \"\"}\" i18n=\"20116\">Senden</fv-button>\n </div>\n `);\n }\n}\n","\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./save-dialog.mask.component.sass?inline\";\nimport { LoadingComponent } from \"../../../loading\";\nimport { CheckboxComponent } from \"../../../checkbox\";\nimport { CloudIdService } from \"../../../../../utils/cloud-id.service\";\nimport {CommunicationMessageService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\n\ninterface PdfInfo {\n cloudId: string\n pdf: number\n server: string\n sessionId: string\n}\n\n@customElement(\"fv-save-dialog-mask\")\nexport class SaveDialogMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\".privacy-policy\")\n private privacyPolicy?: HTMLSpanElement;\n\n @query(\"#email-input\")\n private emailInput?: HTMLInputElement;\n\n @query(\"#cloud-input\")\n private cloudInput?: HTMLInputElement;\n\n @query('fv-checkbox')\n private checkbox?: CheckboxComponent;\n\n\n @property({type: Boolean, reflect: true, attribute: \"pdf-export\"})\n public pdfExport?: boolean;\n\n private pdfInfo?: PdfInfo;\n private _active = false;\n private _email?: string;\n\n constructor() {\n super();\n this.mask = \"save-dialog-mask\";\n }\n\n private getDependentElement(type: \"spinner\"): LoadingComponent | null {\n const elementId = this.getAttribute(type) || \"dummy\";\n const element = document.querySelector(`#${elementId}`) as LoadingComponent;\n const existsElement = !!element;\n\n if (existsElement) {\n return element;\n }\n else {\n return null;\n }\n }\n\n private savePdf() {\n if (this.pdfInfo) {\n const dummyFrame = document.createElement(\"iframe\");\n\n document.body.appendChild(dummyFrame);\n\n dummyFrame.style.display = \"none\";\n dummyFrame.setAttribute(\"src\", `${this.pdfInfo.server}/downloadPDF/${this.pdfInfo.sessionId}/${this.pdfInfo.pdf.toString()}/${this.pdfInfo.cloudId}`);\n dummyFrame.addEventListener(\"load\", () => dummyFrame.remove());\n }\n }\n\n private sendMail(receiver: string) {\n try {\n if (this.pdfInfo) {\n CommunicationMessageService.sendMail(receiver, \"default\", [], this.pdfInfo);\n }\n }\n catch (e) {\n //type\n }\n }\n\n private showSpinner() {\n this.Modal?.setLoading(true);\n }\n\n private hideSpinner() {\n this.Modal?.setLoading();\n }\n\n public setEMail(email: string) {\n this._email = email;\n const inputEmail = this.emailInput as HTMLInputElement;\n\n if (inputEmail) {\n inputEmail.value = email;\n }\n }\n\n public async addToCart(dontShow?: boolean) {\n this.showSpinner();\n const cloudInput = (this.cloudInput as HTMLInputElement);\n\n if (this.pdfExport) {\n this.pdfInfo = await CommunicationMessageService.printPDF() as PdfInfo;\n if (cloudInput) cloudInput.value = this.pdfInfo.cloudId;\n }\n else {\n if (cloudInput) cloudInput.value = await CloudIdService.createCloudId();\n }\n\n if (!dontShow) this.show();\n }\n async show() {\n this.classList.remove(\"hidden\");\n this._active = true;\n super.show();\n this.Modal?.setAttribute(\"dimmed\", \"\");\n this.Modal?.style.setProperty(\"--modal-background\", \"transparent\");\n this.Modal?.style.setProperty(\"--modal-content-margin\", \"auto\");\n this.Modal?.show(true, false);\n const hideInternal = ()=> {\n this.hide();\n };\n this.Modal?.removeEventListener(\"close-modal\", hideInternal);\n this.Modal?.addEventListener(\"close-modal\", hideInternal);\n await this.hasUpdated;\n await this.addToCart(true);\n this.hideSpinner();\n }\n\n hide() {\n this.classList.add(\"hidden\");\n this.Modal?.style.removeProperty(\"--modal-background\");\n this.Modal?.style.removeProperty(\"--modal-content-margin\");\n this._active = false;\n super.hide(true);\n }\n\n private addToCartClick () {\n const inputElement = this.emailInput as HTMLInputElement;\n const checkboxElement = this.checkbox as CheckboxComponent;\n const receiver = inputElement?.value || \"\";\n\n this.showSpinner();\n\n if (this.pdfExport && receiver.length > 0 && checkboxElement.checked) {\n this.sendMail(receiver);\n }\n\n CommunicationMessageService.addToCart();\n }\n\n private checkboxChanged (event?: Event) {\n if (event && (event.currentTarget as HTMLInputElement)?.checked) {\n this.emailInput?.removeAttribute(\"disabled\");\n }\n else {\n this.emailInput?.setAttribute(\"disabled\", \"\");\n }\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n WebViewerService.on(\"furnview.addToCartClicked\", () => this.addToCart());\n\n if (this.shadowRoot) {\n\n const replaceStr = `<a href=\"https://www.dh-software.de/kontakt/datenschutz/\" target=\"_blank\">${\n LocaleService.translate(\"ui.step.choose_models.privacy_policy_link_label\")\n }</a>`;\n if (this.privacyPolicy)\n this.privacyPolicy.innerHTML = `${(LocaleService.translate(\"ui.step.choose_models.privacy_policy_label\").replace(\"$1\", replaceStr))}`;\n }\n // this.setEMail(await SessionService.getEmail());\n this.classList.add(\"hidden\");\n }\n\n requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n super.requestUpdate(name, oldValue, options);\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <h1 i18n=\"ui.step.choose_models.save_your_draft\">ACHTUNG: SPEICHERN SIE IHREN ENTWURF</h1>\n <div class=\"text\" i18n=${ this.pdfExport ? \"ui.step.choose_models.save_your_draft.description\" : \"ui.step.choose_models.save_your_draft.description_without_pdf\"}>\n ${ this.pdfExport ? html`Speichern Sie Ihren Entwurf bevor Sie den Konfigurator verlassen und in den Warenkorb wechseln. Sie\n können Ihren Entwurf mit Ihrer Planungs-Nummer jederzeit wieder aufrufen, den Entwurf per PDF drucken\n oder sich einen Link per Mail senden.` : html`Speichern Sie Ihre Planungs-Nummer bevor Sie den Konfigurator verlassen und in den Warenkorb wechseln. Sie\n können Ihren Entwurf mit Ihrer Planungs-Nummer jederzeit wieder aufrufen.`}\n </div>\n <div class=\"space\"></div>\n <div class=\"form\">\n <div>\n <span i18n=\"ui.step.choose_models.your_plan_number\">Ihre Planungsnummer</span>\n <input id=\"cloud-input\" class=\"cloud\" autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\"\n type=\"text\" readonly/>\n </div>\n ${ this.pdfExport ? html`<div>\n <span i18n=\"ui.step.choose_models.your_email\">Ihre E-Mail-Adresse</span>\n \n <input id=\"email-input\" disabled value=\"${this._email ? this._email : \"\"}\" class=\"email\" placeholder=\"E-Mail\" autocapitalize=\"off\" autocomplete=\"off\"\n spellcheck=\"false\" type=\"email\"/> \n </div>`: \"\"}\n </div>\n <div class=\"space\"></div>\n <div class=\"consent\">\n <fv-checkbox @change=\"${this.checkboxChanged}\">\n <span class=\"privacy-policy\">Ich akzeptiere die <a\n href=\"https://www.dh-software.de/kontakt/datenschutz/\" target=\"_blank\">Datenschutzbestimmungen</a> ${ this.pdfExport ? html`, bitte senden Sie mir Informationen zu meiner Konfiguration.` : \"\" }</span>\n </fv-checkbox>\n </div>\n <div class=\"space\"></div>\n <div class=\"buttons\">\n ${this.pdfExport ? html`\n <button id=\"save-pdf-button\" class=\"highlight\" i18n=\"ui.step.choose_models.save_draft\" @click=\"${this.savePdf}\">Entwurf\n speichern\n </button>`: \"\"}\n <button id=\"back-button\" i18n=\"ui.step.choose_models.back_to_configurator\" @click=\"${this.hide}\">Zurück zum Konfigurator\n </button>\n <button id=\"add-to-cart-button\" i18n=\"ui.step.choose_models.continue_to_basket\" @click=\"${this.addToCartClick}\">Weiter in den\n Warenkorb\n </button>\n </div>\n `);\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n }\n}\n","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./send-offer-request.component.sass?inline\";\nimport { customElement, query, queryAll, property, state } from \"lit/decorators.js\";\nimport { MessageComponent } from \"../../message/message.component\";\nimport { CheckboxComponent } from \"../../../checkbox\";\nimport { InputComponent } from \"../../../input\";\n\n@customElement(\"fv-send-offer-mask\")\nexport class SendOfferRequestMaskComponent extends BaseMaskElement {\n\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"send-offer-request\";\n\n @property({ type: String, reflect: true })\n privacyLink = \"#\";\n\n @query(\"fv-checkbox\")\n private _checkboxComponent?: CheckboxComponent;\n\n @query(\"fv-message\")\n private _messageComponent?: MessageComponent;\n\n @queryAll(\"fv-input, fv-text-area\")\n private _inputFields?: NodeListOf<InputComponent>;\n\n @queryAll(\"fv-input[required]\")\n private _inputFieldsRequired?: NodeListOf<InputComponent>;\n\n @property({type: String, reflect: true, attribute: \"template-id\"})\n templateId: string = \"privacy-link\";\n\n @property()\n onSubmit = async (e: Event, nameValueList: {[key: string]: string}): Promise<void> => {\n return;\n }\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n super.firstUpdated(_changedProperties);\n this._modal?.addEventListener(\"close-modal\", this.onModalClosed.bind(this));\n }\n\n protected update(changedProperties: PropertyValues) {\n super.update(changedProperties);\n if(this.privacyLink === \"#\") {\n this.privacyLink = \"https://www.dh-software.de/kontakt/datenschutz/\";\n }\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <div class=\"container column\">\n <fv-label class=\"header space after\" i18n=\"fv.terms.request\">Anfrage</fv-label>\n <fv-label class=\"space after\" template-id=\"dealer-text\"></fv-label>\n </div>\n <fv-request privacylink=\"${this.privacyLink}\" name=\" \" address=\" \" active></fv-request>\n <fv-message await=\"1000\" @back-to-start=\"${()=> this._modal?.cancel()}\"></fv-message>\n `);\n }\n\n oldRender() {\n return html`\n <fv-label>Anfrage</fv-label>\n <fv-flex-container class=\"row\">\n ${this.buildTextField(\"firstName\", \"20322\", false)}\n ${this.buildTextField(\"lastName\", \"20323\", false)}\n </fv-flex-container>\n <fv-flex-container class=\"row\">\n ${this.buildTextField(\"phone\", \"1502\", false)}\n ${this.buildTextField(\"email\", \"fv.email.homeviewer.send_request_customer.email\", true)}\n </fv-flex-container>\n\n <fv-flex-container class= \"row\">\n ${this.buildTextField(\"customerNo\", \"1610\", true)}\n ${this.buildTextField(\"adress\", \"20228\", true)}\n </fv-flex-container>\n\n <fv-flex-container class= \"row\">\n ${this.buildTextField(\"companyName\", \"company_name\", true)}\n </fv-flex-container>\n\n <fv-flex-container class=\"row\">\n ${this.buildTextField(\"message\", \"60099\", false, true)}\n </fv-flex-container>\n <fv-checkbox>\n <span>\n <span i18n=\"i_have_read\">Ich habe die</span>\n <a target=\"_blank\" i18n=\"privacy_policy\" .href=\"${this.privacyLink}\"> Datenschutzerklärung</a> \n <span i18n=\"and_agree_with_this\"> gelesen und stimme dieser zu.</span\n </span>\n </fv-checkbox>\n <fv-message ></fv-message>\n <fv-button i18n=\"send_inquiry\"></fv-button>\n `;\n }\n\n async sendInquiry(e: Event) {\n if (this._checkboxComponent && this._checkboxComponent.checked) {\n this.active = false;\n const nameValueList: { [key: string]: string } = {};\n this._inputFields?.forEach((value: InputComponent) => {\n if (value.name) nameValueList[value.name] = value.value;\n });\n await this.onSubmit(e, nameValueList);\n }\n };\n\n buildTextField(name: string, i18n: string, mandatory: boolean, area = false) {\n if (area) {\n return html`\n <fv-text-area name=\"${name}\" type='text'>\n <fv-label class=\"text-field-label\" i18n=\"${i18n}\" ?mandatory=\"${mandatory}\"></fv-label>\n </fv-text-area>\n `;\n }\n return html`\n <fv-input name=\"${name}\" type='text'>\n <fv-label class=\"text-field-label\" i18n=\"${i18n}\" ?mandatory=\"${mandatory}\"></fv-label>\n </fv-input>\n `;\n }\n\n\n async onModalClosed(ev: Event) {\n await new Promise((resolve) => setTimeout(resolve, 1250))\n this._messageComponent?.onClick(ev);\n }\n\n\n\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./file-upload.mask.component.sass?inline\";\nimport { customElement, property, queryAsync, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\n\nimport \"../../../button/button.component\";\nimport \"../../../label/label.component\";\n\n@customElement(\"fv-file-upload-mask\")\nexport class FileUploadMaskComponent extends BaseMaskElement {\n\tstatic styles = [\n\t\tsuper.styles || [],\n\t\tcss`${unsafeCSS(style)}`\n\t];\n\n\tconstructor() {\n\t\tsuper();\n\t};\n\n\t@state()\n\tpublic mask = \"fileUpload\";\n\n\t@queryAsync(\"#fileInput\")\n\tfileInput!: HTMLInputElement;\n\n\t@queryAsync('[name=\"sizeX\"]')\n\tsizeXinput!: HTMLInputElement;\n\n\t@queryAsync('[name=\"sizeY\"]')\n\tsizeYinput!: HTMLInputElement;\n\n\t@queryAsync('.errorMessage')\n\terrorSpan!: HTMLDivElement;\n\n\tprivate async uploadImage() {\n\t\t(await this.errorSpan).classList.add(\"hidden\");\n\t\tlet file = (await this.fileInput).files?.[0];\n\t\tif(file){\n\t\t\t\tif(file.size > 5242880) {\n\t\t\t\t\t(await this.errorSpan).classList.remove(\"hidden\");\n\t\t\t\t\treturn;\n\t\t\t\t};\n\t\t\t\tlet inputValues = [] as Array<string>;\n\t\t\t\tinputValues.push((await this.sizeXinput).value);\n\t\t\t\tinputValues.push((await this.sizeYinput).value);\n\t\t\t\tconst reader = new FileReader();\n\t\t\t\treader.readAsDataURL(file);\n\t\t\t\tconst result: string = await new Promise((resolve, reject) => {\n\t\t\t\t\treader.onload = () => {\n\t\t\t\t\t\tresolve(reader.result as string)\n\t\t\t\t\t};\n\t\t\t\t\treader.onerror = () => {\n\t\t\t\t\t\treject(new Error(\"cannot read file\"));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst [type, data] = result.split(',');\n\t\t\t\tinputValues.push(type);\n\t\t\t\tinputValues.push(data);\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(\"createOTF_Material\", { detail: inputValues })\n\t\t\t\t)\n\t\t\t}\n\t}\n\n\trender(): TemplateResult<1> {\n\t\treturn html`\n\t\t\t<div>\n\t\t\t\t<fv-label class=\"header\" i18n=\"fv.fileUpload.otfMaterial\">Eigene Materialien anlegen</fv-label>\n\t\t\t\t<div class=\"file-container\">\n\t\t\t\t\t<fv-label for=\"fileInput\" i18n=\"fv.fileUpload.selectImageFile\">Wählen Sie ihre Bild Datei aus</fv-label>\n\t\t\t\t\t<input type=\"file\" id=\"fileInput\" accept=\"image/png, image/jpeg\" size=\"\" name=\"fileInput\"></input>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"input-container\">\n\t\t\t\t\t<fv-label for=\"sizeX\">SizeX:</fv-label>\n\t\t\t\t\t<input type=\"number\" min=\"1\" name=\"sizeX\" value=\"150\"></input>\n\t\t\t\t\t<fv-label>cm</fv-label>\n\t\t\t\t\t<fv-label for=\"sizeY\">SizeY:</fv-label>\n\t\t\t\t\t<input type=\"number\" min=\"1\" value=\"150\" name=\"sizeY\"></input>\n\t\t\t\t\t<fv-label>cm</fv-label>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"errorMessage hidden\" i18n=\"administrationX.print.large\">Datei zu groß</div>\n\t\t\t\t<fv-button @click=\"${this.uploadImage}\" i18n=\"51083\" class=\"submitBtn\">Hochladen</fv-button>\n\t\t\t</div>\n\t\t`\n\t}\n}","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./password-mask.component.sass?inline\"\nimport { customElement, query, property, state } from \"lit/decorators.js\";\nimport { InputComponent } from \"../../../../standard/input\";\nimport { ButtonComponent } from \"../../../../standard/button\";\nimport { SessionStorageService } from \"../../../../../utils/session-storage.service\"\nimport { EventHandlerService } from \"../../../../../utils/event.handler.service\";\nimport { EventHandlerEvent } from \"../../../../../models/event-handler/event.handler.model\";\n\n@customElement(\"fv-password-mask\")\nexport class PasswordMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"password-mask\";\n\n @property({ type: String, reflect: true, attribute: \"session-storage-key\" })\n public sessionStorageKey = \"\";\n\n @property({ type: String, reflect: true, attribute: \"title-text\" })\n public titleText = \"fv.prompt.enter_cloud_password\";\n\n @property({ type: String, reflect: true, attribute: \"button-text\" })\n public buttonText = \"60078\";\n\n @property({ type: String, reflect: true, attribute: \"placeholder-text\" })\n public placeholderText = \"1613\";\n\n @property({ type: Boolean, reflect: true, attribute: \"close-after-confirm\" })\n public closeAfterConfirm = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"furncloud-password-mask\" })\n public furncloudPasswordMask = false;\n\n @query(\"#password-input\")\n private _passwordInput?: InputComponent;\n\n @query(\".confirm-button\")\n private _confirmButton?: ButtonComponent;\n\n private _errorMessage: string = \"\";\n\n constructor() {\n super();\n\n window.addEventListener(\"furncloud-status\", ((ev: CustomEvent) => {\n if (this.furncloudPasswordMask === false) {\n return;\n }\n\n const httpStatus = ev.detail.httpStatus;\n const responseBody = ev.detail.responseBody;\n\n if (httpStatus == 200) {\n this.clearErrorMessage();\n this.Modal?.hide();\n return;\n }\n if (responseBody && responseBody.toLowerCase().includes(\"request could not be decrypted\")) {\n if (this.StorageKey.length > 0) {\n SessionStorageService.remove(this.StorageKey);\n }\n this.ErrorMessage = \"fv.prompt.wrong_cloud_password\";\n this.Modal?.show();\n this.requestUpdate();\n }\n }) as EventListener);\n }\n\n get Password(): string {\n return this._passwordInput?.value || \"\";\n }\n\n set Password(password_: string) {\n if (this._passwordInput) {\n this._passwordInput.value = password_;\n }\n }\n\n get ErrorMessage(): string {\n return this._errorMessage;\n }\n\n set ErrorMessage(errorMessage_: string) {\n this._errorMessage = errorMessage_;\n }\n\n private get EventsToDispatch(): Array<EventHandlerEvent> {\n const eventsArray = this.maskData?.[\"eventsToDispatch\"];\n if (eventsArray && Array.isArray(eventsArray)) {\n return eventsArray;\n }\n return [];\n }\n\n private get StorageKey(): string {\n const sessionStorageKey = this.maskData[\"sessionStorageKey\"];\n if (sessionStorageKey && typeof sessionStorageKey === \"string\") {\n return sessionStorageKey;\n }\n return this.sessionStorageKey;\n }\n\n private clearInput() {\n this.Password = \"\";\n this.onInputChange();\n }\n\n private clearErrorMessage() {\n this.ErrorMessage = \"\";\n }\n\n private async onInputChange() {\n if (this._confirmButton) {\n if (this.Password.length > 0) {\n this._confirmButton.removeAttribute(\"disabled\");\n }\n else {\n this._confirmButton.setAttribute(\"disabled\", \"\");\n }\n }\n }\n\n private async onButtonClick() {\n this.clearErrorMessage();\n if (this.StorageKey.length > 0) {\n SessionStorageService.update(this.StorageKey, { password: this.Password });\n }\n if (this.EventsToDispatch.length > 0) {\n await EventHandlerService.dispatchEventList(this.EventsToDispatch, false);\n }\n if (this.closeAfterConfirm) {\n this.Modal?.hide();\n }\n this.clearInput();\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <div class=\"container\">\n <fv-label\n class=\"title\"\n i18n=\"${this.titleText}\">\n ${this.titleText}\n </fv-label>\n <fv-input\n @change=\"${this.onInputChange}\"\n class=\"input\"\n type=\"password\"\n id=\"password-input\"\n moveable-placeholder\n placeholder=\"${this.placeholderText}\">\n </fv-input>\n ${this.ErrorMessage && this.ErrorMessage.length > 0 ? html`\n <fv-label\n class=\"error-message\"\n i18n=\"${this.ErrorMessage}\">\n ${this.ErrorMessage}\n </fv-label>` : html``\n }\n <fv-button\n @click=\"${this.onButtonClick}\"\n class=\"confirm-button bordered\"\n i18n=\"${this.buttonText}\"\n disabled>\n ${this.buttonText}\n </fv-button>\n </div>\n `);\n }\n}\n","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport style from \"./dimension-change.mask.component.sass?inline\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { WebViewerService } from \"@dh-software/webui-api\";\nimport { IDimChangeInfo } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-dimension-change-mask\")\nexport class DimensionChangeMaskComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true })\n public mask = \"dimension-change\";\n\n @state()\n private dimData?: IDimChangeInfo;\n\n constructor() {\n super();\n\n WebViewerService?.on(\"furnview.openDimChange\", async (data_: unknown) => {\n this.openDimChangeMask(data_ as IDimChangeInfo);\n });\n }\n\n private close(): void {\n this.Modal?.cancel();\n }\n\n private openDimChangeMask(info_?: IDimChangeInfo): void {\n this.dimData = info_;\n this.Modal?.open(this.mask, {}, undefined);\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`\n <fv-dimension-change\n .dimData=\"${this.dimData}\"\n @dimchange-cancel=\"${this.close}\"\n @dimchange-confirm=\"${this.close}\">\n </fv-dimension-change>\n `);\n }\n}\n","import { BaseElement } from \"../../standard/base/base.component\";\nimport style from \"./base-action-button.sass?inline\";\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\n\nexport class ActionButtonBase extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n protected build(inner: TemplateResult<1>): TemplateResult<1> {\n return html`\n <fv-button class=\"action-button cover\">\n ${inner}\n </fv-button>\n `;\n }\n}","import { customElement, property } from \"lit/decorators.js\";\nimport { ActionButtonBase } from \"../base/base-action-button\";\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./show-on-target-scrollable-action-button.sass?inline\";\nimport { ComponentService } from \"../../../utils/component.service\";\n\n@customElement(\"fv-show-on-target-scrollable-action-button\")\nexport class ShowOnTargetScrollableActionButtonComponent extends ActionButtonBase {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Object, reflect: true, attribute: \"target-info\"})\n targetInfo = {\n tag: \"\",\n query: \"\"\n };\n\n @property({ type: Number, reflect: true, attribute: \"scroll-tolerance\" })\n scrollTolerance = 10;\n\n private targetScroll(target: HTMLElement | undefined) {\n if (target) {\n if (target.scrollTop < this.scrollTolerance) {\n this.hideElement = true;\n }\n else {\n this.hideElement = false;\n }\n }\n else {// no scrolltarget\n this.hideElement = true;\n }\n }\n private get ScrollTarget(): HTMLElement | undefined {\n if (this.targetInfo.tag && this.targetInfo.tag.length > 0) {\n return ComponentService.find(this.targetInfo.tag, this.targetInfo.query);\n }\n if (this.targetInfo.query && this.targetInfo.query.length > 0) {\n return document.querySelector(this.targetInfo.query) as HTMLElement;\n }\n console.error(\"show-on-target-scrollable-action-button> targetInfo invalid! target-info:\", this.targetInfo);\n return undefined;\n }\n\n constructor() {\n super();\n }\n\n\n public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n super.attributeChangedCallback(name, _old, value);\n if (name === \"target-info\") {\n const target = this.ScrollTarget;\n if (target) {\n target.addEventListener(\"scroll\", (event: Event)=>{\n this.targetScroll((event.target as HTMLElement));\n });\n }\n else {\n console.error(\"show-on-target-scrollable-action-button> no target found! target-info:\", this.targetInfo);\n }\n this.targetScroll(target);\n }\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`<slot></slot>`);\n }\n}","import {html, LitElement, TemplateResult} from \"lit\";\nimport { Task } from \"@lit/task\";\nimport { property } from \"lit/decorators.js\";\nimport {BaseElement} from \"./base.component\";\n\n\nexport interface FetchParameters {\n [key: string]: unknown\n}\n\nexport abstract class AsyncBaseElement<T, K> extends BaseElement {\n // _ _\n // _ __ _ __ ___ _ __ ___ _ __| |_(_) ___ ___\n // | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n // | |_) | | | (_) | |_) | __/ | | |_| | __/\\__ \\\n // | .__/|_| \\___/| .__/ \\___|_| \\__|_|\\___||___/\n // |_| |_|\n @property({ type: Object, reflect: false, attribute: \"fetch-parameters\" })\n private _fetchParameters: FetchParameters = {};\n public set FetchParameters(value_: T) {\n const previousSerialized = JSON.stringify(this._fetchParameters);\n this._fetchParameters = Object.assign(this._fetchParameters, value_);\n if (JSON.stringify(this._fetchParameters) != previousSerialized) {\n this.Refetch();\n }\n }\n public get FetchParameters(): T {\n return this._fetchParameters as T;\n }\n\n\n // _\n // _ __ ___ ___ _ __ ___ | |__ ___ _ __ ___\n // | '_ ` _ \\ / _ \\ '_ ` _ \\| '_ \\ / _ \\ '__/ __|\n // | | | | | | __/ | | | | | |_) | __/ | \\__ \\\n // |_| |_| |_|\\___|_| |_| |_|_.__/ \\___|_| |___/\n private _renderTask: Task;\n private _completedRender: TemplateResult<1> | undefined;\n private _fetchPromise: Promise<K | undefined> | undefined = undefined;\n\n protected get LastRenderResult(): TemplateResult<1> | undefined {\n return this._completedRender;\n }\n\n\n // _ _\n // ___ ___ _ __ ___| |_ _ __ _ _ ___| |_ ___ _ __\n // / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n // | (_| (_) | | | \\__ \\ |_| | | |_| | (__| || (_) | |\n // \\___\\___/|_| |_|___/\\__|_| \\__,_|\\___|\\__\\___/|_|\n constructor() {\n super();\n this._renderTask = new Task(this, {\n task: async ([_this]) => {\n if (this._fetchPromise == undefined) {\n this._fetchPromise = _this.Fetch(_this.FetchParameters);\n }\n return await this._fetchPromise;\n },\n args: () => [this]\n });\n }\n\n\n // ____ _____ _ _ ____ _____ ____ ___ _ _ ____\n // | _ \\| ____| \\ | | _ \\| ____| _ \\|_ _| \\ | |/ ___|\n // | |_) | _| | \\| | | | | _| | |_) || || \\| | | _\n // | _ <| |___| |\\ | |_| | |___| _ < | || |\\ | |_| |\n // |_| \\_\\_____|_| \\_|____/|_____|_| \\_\\___|_| \\_|\\____|\n protected render(): TemplateResult<1> {\n return this._renderTask.render({\n pending: () => this.renderPending(),\n complete: (result: unknown) => this.renderComplete(result as K, undefined),\n error: (e: unknown) => this.renderError(e as Error),\n initial: () => this.renderInitial()\n }) as TemplateResult<1>;\n }\n protected renderInitial(): TemplateResult<1> {\n return html`<slot name=\"loader\"></slot>`;\n }// render loader if not overloaded\n protected renderPending(): TemplateResult<1> {\n if (this.LastRenderResult != undefined) {\n return this.LastRenderResult;\n }\n return html`<slot name=\"loader\"></slot>`;\n }// simply display last completed render or loader(if last completet == undefined) while pending if not overloaded\n protected renderComplete(result: K | undefined, renderResult: TemplateResult<1> | undefined): TemplateResult<1> {\n if (renderResult == undefined) {\n return this.renderPending();\n }\n this._completedRender = renderResult;\n return renderResult;\n }// simply display the fetch result if not overloaded!\n protected renderError(e: Error): TemplateResult<1> {\n return html`Error: ${e}`;\n }// simply display error if not overloaded\n\n\n // _____ _____ _____ ____ _ _\n // | ___| ____|_ _/ ___| | | |\n // | |_ | _| | || | | |_| |\n // | _| | |___ | || |___| _ |\n // |_| |_____| |_| \\____|_| |_|\n protected async Fetch(parameters: T): Promise<K | undefined> {\n console.error(\"No Fetch Method defined for\", this);\n return undefined;\n }\n public async CheckFetchPromise(): Promise<boolean> {\n if (this._fetchPromise == undefined) {\n return false;\n }\n await this._fetchPromise;\n return true;\n }\n public async Refetch(): Promise<void> {\n this._fetchPromise = undefined;// reset fetchResult to ensure refetch\n this._renderTask.run();\n await this.CheckFetchPromise();\n await this.updateComplete;\n }\n\n\n // _ _ _ _ _ __ _\n // | (_) |_ | (_)/ _| ___ ___ _ _ ___| | ___\n // | | | __| | | | |_ / _ \\/ __| | | |/ __| |/ _ \\\n // | | | |_ | | | _| __/ (__| |_| | (__| | __/\n // |_|_|\\__| |_|_|_| \\___|\\___|\\__, |\\___|_|\\___|\n // |___/\n // protected async getUpdateComplete(): Promise<boolean> {\n // // await this.CheckFetchPromise();// not doing this yet, since it somewhere keeps this from working correctly..\n // return await super.getUpdateComplete();\n // }\n}\n","import { property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./base.card.sass?inline\";\nimport { TemplateResult, css, unsafeCSS, html } from \"lit\";\n// import { DimensionInformation } from \"../../informationals/dimensions-information.component\";\n// import { PriceDisplayData } from \"../../../price/price-display/price-display.component\";\nimport {\n FilterSelectionData, CardDataLevelKey, FilterSelectionStrategy, CardContainerContext, CardData,\n CARD_VIEW_KEY, FIXED_CARD_CLICK_EVENTS_KEY,\n CARD_MAGNIFY_KEY, CARD_MAGNIFY_TARGET_KEY,\n CardMagnifiedEvent,\n} from \"../../../../models/card-container/\";\nimport { EventHandlerService } from \"../../../../utils/event.handler.service\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { BaseCardContainer } from \"../../card-container/base/base-card-container\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { CardContainerSettings } from \"../../card-container/internals\";\nimport { DragDropService, LocaleService } from \"@dh-software/webui-api\";\n// import {IModuleElement} from \"@dh-software/webui-configuration-parser\";\n\nexport interface CardClick {\n \"previous-level-key\": string | number,\n \"level-key\": string | number,\n \"next-level-key\": string | number,\n strategy?: FilterSelectionStrategy,\n priority?: number,\n [key: string]: unknown\n}\n\n// export interface CardData {\n// image?: { prefix: string, file: string },\n// icon?: string,\n// txt?: { [key: string]: string },\n// dimensions?: Array<DimensionInformation>,\n// price?: PriceDisplayData,\n// click?: CardClick,\n// active?: boolean,\n// disabled?: boolean,\n// modules?: Array<IModuleElement>,\n// dragable?: boolean,\n// translate?: boolean,\n// tooltip?: boolean,\n// buttonGroups?: Array<CardDataButtonGroup>,\n// additional?: {[key: string]: unknown}\n// }\n\nexport interface CardClickData {\n data: CardData,\n settings: CardContainerSettings\n}\nexport interface CardClickEventInit extends CustomEventInit {\n detail?: CardClickData\n}\n\nexport class CardClickEvent extends CustomEvent<CardClickData> {\n constructor(data: CardClickData) {\n super(\"cardclick\", { detail: data, bubbles: true });\n }\n}\nexport class CardClickedEvent extends CustomEvent<CardClickData> {\n constructor(data: CardClickData) {\n super(\"cardclicked\", { detail: data, bubbles: true });\n }\n}\n\n\nexport class BaseCard extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Object, reflect: true, attribute: \"data\" })\n public data: CardData = {};\n\n protected get imageSrc(): string {\n let src = \"\";\n if (this.data.image != undefined) {\n if (this.data.image.prefix != undefined && this.data.image.prefix.length > 0) {\n src += this.data.image.prefix;\n }\n if (this.data.image.file != undefined && this.data.image.file.length > 0) {\n src += this.data.image.file;\n }\n }\n return src;\n }\n\n\n\n private _cardContainerClickData: {context: CardContainerContext, \"handle-click\": boolean, container: BaseCardContainer } | undefined = undefined;\n public set cardContainerClickData(data: {context: CardContainerContext, \"handle-click\": boolean, container: BaseCardContainer } | undefined) {\n this._cardContainerClickData = data;\n }\n public get cardContainerClickData(): {context: CardContainerContext, \"handle-click\": boolean, container: BaseCardContainer } | undefined {\n return this._cardContainerClickData;\n }\n\n private async UpdatePostLocalesModelRead() {\n await LocaleService.IsFileRead();\n this.requestUpdate();\n }\n private UpdateDrag() {\n DragDropService.removeElement(this);\n if (this.data.dragable && this._cardContainerClickData != undefined && this.data != undefined) {\n const dragData = CardDataService.GetFormattedCardDragData(this.data, this._cardContainerClickData.context);\n if (dragData != undefined) {\n let imgSrc = this.imageSrc;\n if (imgSrc.length < 1) {\n imgSrc = \"nix\";\n }\n this.setAttribute(\"drag-image\", imgSrc);\n DragDropService.addElement(this, dragData, ComponentService.findScrollableParent(this));\n }\n }\n }\n\n\n private collectAdditionalCardClickEventKeyValuePairs(): Array<{key: string, data: unknown}> {\n if (this.data.additional == undefined || this.data.additional[\"selected-filters\"] == undefined) return new Array<{key: string, data: unknown}>;\n if (this._cardContainerClickData == undefined) return new Array<{key: string, data: unknown}>;\n\n const buttonsFilter = this.data.additional[\"selected-filters\"] as FilterSelectionData[] | undefined;\n if (buttonsFilter == undefined) return new Array<{key: string, data: unknown}>;\n\n let relevantValues = this._cardContainerClickData.context.settings.Card[\"card-click-events-relevant-selection-filter-values\"];\n if (relevantValues == undefined) {\n relevantValues = this._cardContainerClickData.context.settings.Card[\"card-click-events-relevant-buttons-filter-values\"];// PH [2025|April|09] - support for legacy-jsons before it was renamed to differentiate it from other forms of filtering\n console.warn(\"'card-click-events-relevant-buttons-filter-values' was replaced with 'card-click-events-relevant-selection-filter-values'! Still works (fow now), but do not use in new projects!\");\n if (relevantValues == undefined) return new Array<{key: string, data: unknown}>;\n }\n\n const additional = new Array<{key: string, data: unknown}>;\n for (const buttonFilter of buttonsFilter) {\n for (const levelKey of buttonFilter.filter) {\n const relevantValue = relevantValues.find((value: { placeholder: string, \"card-data-level-key\": CardDataLevelKey })=>{\n return levelKey == value[\"card-data-level-key\"];\n });\n\n if (relevantValue == undefined) continue;\n\n additional.push({\n key: relevantValue.placeholder,\n data: relevantValue[\"card-data-level-key\"].toString()\n });\n }\n }\n return additional;\n }\n\n private async clicked(): Promise<void> {\n if (this._cardContainerClickData == undefined || !this._cardContainerClickData[\"handle-click\"]) return;\n\n // A `card-view-key` on additional opens a side view in the enclosing fv-card-container-view\n // and ALWAYS short-circuits the normal navigation pipeline — works for fixed and dynamic cards.\n const cardViewKey = this.data.additional?.[CARD_VIEW_KEY];\n if (typeof cardViewKey === \"string\" && cardViewKey.length > 0) {\n this._cardContainerClickData.container.dispatchEvent(new CardClickEvent({ data: this.data, settings: this._cardContainerClickData.context.settings }));\n return;\n }\n\n // Fixed cards with only clickEvents (no data.click) — emit cardclick so the container fires them.\n const fixedClickEvents = this.data.additional?.[FIXED_CARD_CLICK_EVENTS_KEY];\n if (Array.isArray(fixedClickEvents) && fixedClickEvents.length > 0 && !this.data.click) {\n this._cardContainerClickData.container.dispatchEvent(new CardClickEvent({ data: this.data, settings: this._cardContainerClickData.context.settings }));\n return;\n }\n\n if (this.data.click) {\n const additionalKeys = this.collectAdditionalCardClickEventKeyValuePairs();\n\n for (const preCardClickEvent of this._cardContainerClickData.context.settings.Card[\"pre-click-events\"]) {\n const preClickEventData = preCardClickEvent.data ? CardDataService.PrepareClickedCardEventData(preCardClickEvent.data, this.data.click, additionalKeys) : {};\n preClickEventData[\"clicked-card\"] = { \"data\": this.data };\n await EventHandlerService.dispatchAsyncEvent(preCardClickEvent.id, preClickEventData);\n }\n\n this._cardContainerClickData.container.dispatchEvent(new CardClickEvent({ data: this.data, settings: this._cardContainerClickData.context.settings }));\n await CardDataService.ClickCard(this.data, this._cardContainerClickData.context);\n this._cardContainerClickData.container.dispatchEvent(new CardClickedEvent({ data: this.data, settings: this._cardContainerClickData.context.settings }));\n\n if (this._cardContainerClickData.context.settings.Behaviour[\"mark-selected\"]) {\n this.classList.add(\"selected\");\n }\n\n for (const postCardClickEvent of this._cardContainerClickData.context.settings.Card[\"post-click-events\"]) {\n const postClickEventData = postCardClickEvent.data ? CardDataService.PrepareClickedCardEventData(postCardClickEvent.data, this.data.click, additionalKeys) : {};\n postClickEventData[\"clicked-card\"] = { \"data\": this.data };\n await EventHandlerService.dispatchAsyncEvent(postCardClickEvent.id, postClickEventData);\n }\n }\n }\n\n constructor() {\n super();// call baseElement constructor, do not register into locales model\n this.baseOptions.registerLocalesModel = false;\n this.UpdatePostLocalesModelRead();\n\n this.addEventListener(\"click\", (e: MouseEvent)=>{\n this.clicked();\n });\n }\n\n protected render(): TemplateResult<1> {\n this.UpdateDrag();\n return html``;\n }\n\n /** Corner button that magnifies the card — rendered when `data.additional.magnify` is truthy. */\n protected get magnifyButtonHtml(): TemplateResult<1> {\n if (!this.data.additional?.[CARD_MAGNIFY_KEY]) return html``;\n return html`\n <div class=\"magnify-button\" part=\"magnify-button\" @click=\"${this.onMagnifyClick}\">\n <fv-icon icon=\"fv-icon-maximize\">\n </div>\n `;\n }\n\n private onMagnifyClick(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n const rawTarget = this.data.additional?.[CARD_MAGNIFY_TARGET_KEY];\n const target = typeof rawTarget === \"string\" && rawTarget.length > 0 ? rawTarget : undefined;\n window.dispatchEvent(new CardMagnifiedEvent(this.data, target));\n }\n\n protected updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n\n if (this.data.active) {\n this.classList.add(\"active\");\n }\n else {\n this.classList.remove(\"active\");\n }\n\n if (this.data.disabled) {\n this.classList.add(\"disabled-card\");\n }\n else {\n this.classList.remove(\"disabled-card\");\n }\n }\n}\n","import { FilterSelectionData, FilterSelectionStrategy, CardDataLevelKey, CardContainerContext, CardDataLevelMap, CardDataLevel } from \"../../../../models/card-container\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { CardContainerResetFilterEvent } from \"../../../../models/card-container\";\n\nexport class CardContainerFilterSelection {\n private filter: FilterSelectionData = {\n filter: [],\n strategy: FilterSelectionStrategy.AND,\n priority: 0,\n \"additional-params\": undefined\n };\n\n // constructor() {}\n\n public Init(context: CardContainerContext): void {\n this.filter[\"additional-params\"] = CardDataService.GetFilterSelectionAdditionalParams(context);\n this.filter.strategy = CardDataService.GetFilterSelectionStrategy(context);\n }\n public Reset(restoreDefaults = true, context: CardContainerContext): void {\n this.filter.filter = [];\n if (restoreDefaults) {\n this.filter.priority = 0;\n this.Init(context);\n }\n CardDataService.InitFilterSelectionParams(context);\n context.dispatchAsyncEvent(done => new CardContainerResetFilterEvent({\n \"restore-defaults\": restoreDefaults,\n context: context,\n \"post-event\": done\n }));\n }\n public Clear(): void {\n this.filter.filter = [];\n }\n\n public set Strategy(value: FilterSelectionStrategy) {\n this.filter.strategy = value;\n }\n public get Strategy(): FilterSelectionStrategy {\n return this.filter.strategy;\n }\n\n public set Prio(value: number) {\n this.filter.priority = value;\n }\n public get Prio(): number {\n return this.filter.priority ? this.filter.priority : 0;\n }\n\n public get Filter(): Array<CardDataLevelKey> {\n return this.filter.filter;\n }\n\n public set AdditionalParams(params: unknown) {\n this.filter[\"additional-params\"] = params;\n }\n public get AdditionalParams(): unknown | undefined {\n return this.filter[\"additional-params\"];\n }\n\n public Add(key: CardDataLevelKey): boolean {\n if (this.filter.filter.includes(key)) return false;\n\n this.filter.filter.push(key);\n return true;\n }\n\n public Remove(key: CardDataLevelKey): boolean {\n const index = this.filter.filter.indexOf(key);\n if (index < 0) return false;\n\n this.filter.filter.splice(index, 1);\n return true;\n }\n\n public Toggle(key: CardDataLevelKey): void {\n if (this.Add(key)) return;\n this.Remove(key);\n }\n\n public Contains(key: CardDataLevelKey): boolean {\n return this.filter.filter.includes(key);\n }\n\n public Set(filter: FilterSelectionData): void {\n this.filter = filter;\n }\n\n public PurgeRemovedCards(cards: CardDataLevelMap | undefined): void {\n if (cards == undefined) return;\n\n const keysToRemove = new Array<CardDataLevelKey>();\n for (const key of this.filter.filter) {\n if (cards.has(key) == undefined) {\n keysToRemove.push(key);\n }\n }\n\n for (const key of keysToRemove) {\n const index = keysToRemove.indexOf(key);\n this.filter.filter.splice(index, 1);\n }\n }\n\n public Join(separator?: string | undefined): string {\n return this.filter.filter.join(separator);\n }\n}","import { IModuleElement, IProperty } from \"@dh-software/webui-configuration-parser\";\r\nimport { CardFetchFilters, FilterSelectionStrategy, CardData, CardDataLevelKey, CardFetchMethod, CardSettings } from \"../../../../models/card-container/card-container-definitions\";\r\nimport { EventHandlerEvent } from \"../../../../models/event-handler/event.handler.model\";\r\nimport { ComponentServiceSearchParams } from \"../../../../utils/component.service\";\r\nimport { FetchParameters } from \"../../base/async.base.component\";\r\nimport { BaseCardDataAppConnection } from \"../../../../utils/card-app-connections/base.card.app.connection\";\r\n\r\n\r\n// TODO: Turn this interface into a class of getters...\r\nexport interface CardFetch {\r\n method: CardFetchMethod,\r\n parameters: { [key: string]: unknown },\r\n manufacturer: string,\r\n program: string,\r\n \"root-level\": string,\r\n filter: CardFetchFilters,\r\n \"suspend-until-triggered\": boolean\r\n}\r\nexport interface CardCreateSettings {\r\n \"tag\": string,\r\n \"classes\": Array<string>,\r\n \"mobile-classes\": Array<string>,\r\n \"settings\": CardSettings,\r\n \"pre-click-events\": Array<EventHandlerEvent>,\r\n \"post-click-events\": Array<EventHandlerEvent>,\r\n \"dragable\": boolean,\r\n \"translate\": boolean,\r\n \"tooltip\": boolean,\r\n \"app-connection-settings\": { [key: string]: unknown },\r\n \"card-click-events-relevant-buttons-filter-values\": Array<{ placeholder: string, \"card-data-level-key\": CardDataLevelKey }>,\r\n \"card-click-events-relevant-selection-filter-values\": Array<{ placeholder: string, \"card-data-level-key\": CardDataLevelKey }>,\r\n \"modules\": Array<IModuleElement>,\r\n \"additional\": { [key: string]: unknown }\r\n}\r\n/** Fixed (pinned) card entry. `view-key`, when set, switches an enclosing fv-card-container-view to that side view on click. */\r\nexport interface FixedCardEntry {\r\n data: CardData,\r\n clickEvents: Array<EventHandlerEvent>,\r\n \"view-key\"?: string\r\n}\r\nexport interface FixedCards {\r\n \"before\": Array<FixedCardEntry>,\r\n \"after\": Array<FixedCardEntry>\r\n}\r\nexport interface LevelSettings {\r\n \"tag\": string,\r\n \"style-vars\": { [levelKey: CardDataLevelKey]: { [styleVar: string]: string } },\r\n \"style-vars-all\": { [styleVar: string]: string },\r\n \"titled\": boolean,\r\n \"single-value-invisible\": boolean\r\n}\r\nexport interface FilterSettings {\r\n \"selection-strategy\": FilterSelectionStrategy,\r\n \"source-elements-selectors\": Array<ComponentServiceSearchParams>,\r\n \"determine-priorities-by-suspended-disable-sources\": boolean,\r\n mobile: {\r\n \"selection-strategy\": FilterSelectionStrategy,\r\n \"source-elements-selectors\": Array<ComponentServiceSearchParams>,\r\n \"determine-priorities-by-suspended-disable-sources\": boolean\r\n }\r\n}\r\n\r\nexport interface AutomaticContainerDefinition {\r\n tag: string,\r\n classes: Array<string>,\r\n \"style-vars\": { [styleVar: string]: string },\r\n properties: IProperty[]\r\n}\r\n\r\nexport interface AutomaticContainerProperties extends AutomaticContainerDefinition {\r\n subContainer?: AutomaticContainerDefinition[]\r\n}\r\n\r\nexport interface AutomaticContainerSettings extends AutomaticContainerProperties {\r\n mobile: AutomaticContainerProperties\r\n}\r\nexport interface BehaviourSettings {\r\n \"mark-selected\": boolean,\r\n \"single-card-hide\": boolean,\r\n \"connection-defined-interaction-on-icon-button\": boolean,\r\n \"connection-defined-interaction-on-selection-change\": boolean,\r\n \"connection-defined-hide-show\": boolean,\r\n \"auto-hide-after-click\": boolean,\r\n \"placer-once\": {\r\n \"all\": boolean\r\n \"categories\": Array<string>\r\n }\r\n}\r\n\r\nexport interface SpecialInteractionContext {\r\n \"data-sources\": ComponentServiceSearchParams[]\r\n mobile: {\r\n \"data-sources\": ComponentServiceSearchParams[]\r\n }\r\n}\r\n\r\ninterface _InternalCardContainerSettings {\r\n \"fetch\": CardFetch,\r\n \"card\": CardCreateSettings,\r\n \"fixed-cards\": FixedCards,\r\n \"levels\": LevelSettings,\r\n \"filter\": FilterSettings,\r\n \"automatic-container\": AutomaticContainerSettings,\r\n \"behaviour\": BehaviourSettings,\r\n \"special-interaction-context\": SpecialInteractionContext\r\n}\r\n\r\nexport class CardContainerSettings {\r\n private _initialized = false;\r\n private _settings: _InternalCardContainerSettings = {\r\n \"fetch\": {\r\n method: CardFetchMethod.NONE,\r\n parameters: {},\r\n manufacturer: \"\",\r\n program: \"\",\r\n \"root-level\": \"root\",\r\n filter: {},\r\n \"suspend-until-triggered\": false\r\n },\r\n\r\n \"card\": {\r\n tag: \"fv-card\",\r\n classes: new Array<string>(),\r\n \"mobile-classes\": new Array<string>(),\r\n \"settings\": {},\r\n \"pre-click-events\": new Array<EventHandlerEvent>(),\r\n \"post-click-events\": new Array<EventHandlerEvent>(),\r\n dragable: false,\r\n translate: true,\r\n tooltip: false,\r\n \"app-connection-settings\": {},\r\n \"card-click-events-relevant-buttons-filter-values\": [],\r\n \"card-click-events-relevant-selection-filter-values\": [],\r\n \"modules\": new Array<IModuleElement>(),\r\n \"additional\": {}\r\n },\r\n\r\n \"fixed-cards\": {\r\n \"before\": new Array<{ data: CardData, clickEvents: Array<EventHandlerEvent> }>(),\r\n \"after\": new Array<{ data: CardData, clickEvents: Array<EventHandlerEvent> }>()\r\n },\r\n\r\n \"levels\": {\r\n tag: \"fv-grid-container\",\r\n \"style-vars\": {},\r\n \"style-vars-all\": {},\r\n titled: false,\r\n \"single-value-invisible\": false\r\n },\r\n\r\n \"filter\": {\r\n \"selection-strategy\": FilterSelectionStrategy.NONE,\r\n \"source-elements-selectors\": new Array<ComponentServiceSearchParams>(),\r\n \"determine-priorities-by-suspended-disable-sources\": false,\r\n \"mobile\": {\r\n \"selection-strategy\": FilterSelectionStrategy.NONE,\r\n \"source-elements-selectors\": new Array<ComponentServiceSearchParams>(),\r\n \"determine-priorities-by-suspended-disable-sources\": false\r\n }\r\n },\r\n\r\n \"automatic-container\": {\r\n tag: \"fv-flex-container\",\r\n classes: new Array<string>(),\r\n \"style-vars\": {},\r\n properties: [],\r\n mobile: {\r\n tag: \"fv-flex-container\",\r\n classes: new Array<string>(),\r\n \"style-vars\": {},\r\n properties: []\r\n }\r\n },\r\n\r\n \"behaviour\": {\r\n \"mark-selected\": false,\r\n \"single-card-hide\": false,\r\n \"connection-defined-hide-show\": false,\r\n \"connection-defined-interaction-on-icon-button\": false,\r\n \"connection-defined-interaction-on-selection-change\": false,\r\n \"placer-once\": {\r\n \"all\": false,\r\n \"categories\": new Array<string>()\r\n }\r\n },\r\n\r\n \"special-interaction-context\": {\r\n \"data-sources\": [],\r\n mobile: {\r\n \"data-sources\": []\r\n }\r\n }\r\n };\r\n\r\n private _fill(incomplete: FetchParameters, defaults: FetchParameters): _InternalCardContainerSettings {\r\n for (const key in defaults) {\r\n if (incomplete[key] == undefined) {\r\n incomplete[key] = defaults[key];\r\n continue;\r\n }\r\n\r\n if (typeof incomplete[key] === \"object\" && typeof defaults[key] === \"object\") {\r\n incomplete[key] = this._fill(incomplete[key] as FetchParameters, defaults[key] as FetchParameters);\r\n }\r\n }\r\n return incomplete as {\r\n \"fetch\": CardFetch,\r\n \"card\": CardCreateSettings,\r\n \"fixed-cards\": FixedCards,\r\n \"levels\": LevelSettings,\r\n \"filter\": FilterSettings,\r\n \"automatic-container\": AutomaticContainerSettings,\r\n \"behaviour\": BehaviourSettings,\r\n \"special-interaction-context\": SpecialInteractionContext\r\n };\r\n }\r\n\r\n public Initialize(parameters: FetchParameters): void {\r\n if (!this.Initialized) {\r\n this.parameters = parameters;\r\n }\r\n }\r\n\r\n public set parameters(parameters: FetchParameters) {\r\n this._settings = this._fill(parameters, this._settings as unknown as FetchParameters);\r\n this._initialized = true;\r\n }\r\n public set fetchFilter(filter: CardFetchFilters) {\r\n this._settings.fetch.filter = filter;\r\n }\r\n\r\n public get Initialized(): boolean {\r\n return this._initialized;\r\n }\r\n\r\n public get Fetch(): CardFetch {\r\n return this._settings[\"fetch\"];\r\n }\r\n public get Card(): CardCreateSettings {\r\n return this._settings[\"card\"];\r\n }\r\n public get FixedCards(): FixedCards {\r\n return this._settings[\"fixed-cards\"];\r\n }\r\n public get Levels(): LevelSettings {\r\n return this._settings[\"levels\"];\r\n }\r\n public get Filter(): FilterSettings {\r\n return this._settings[\"filter\"];\r\n }\r\n public get AutomaticContainer(): AutomaticContainerSettings {\r\n return this._settings[\"automatic-container\"];\r\n }\r\n public get Behaviour(): BehaviourSettings {\r\n return this._settings[\"behaviour\"];\r\n }\r\n public get SpecialInteractionContext(): SpecialInteractionContext {\r\n return this._settings[\"special-interaction-context\"];\r\n }\r\n\r\n\r\n public set Program(value: string) {\r\n this._settings.fetch.program = value;\r\n }\r\n\r\n\r\n\r\n public ToJson(): _InternalCardContainerSettings {\r\n return JSON.parse(JSON.stringify(this._settings));\r\n }\r\n}\r\n","import { FetchParameters } from \"../../base/async.base.component\";\nimport { CardData } from \"../../../../models/card-container\";\nimport type { BaseCardContainer } from \"../base/base-card-container\";\nimport { CardContainerSettings } from \"./card-container-settings\";\nimport {ConstructionService, IModuleElement} from \"@dh-software/webui-configuration-parser\";\n\nexport class InternalCardContainerList {\n private _containers = new Array<BaseCardContainer | HTMLSlotElement>();\n public Get(id: string): BaseCardContainer | undefined | HTMLSlotElement {\n for (const container of this._containers) {\n if (container.id == id || container.id == (\"slot-\" + id)) {\n return container;\n }\n }\n return undefined;\n }\n private Remove(container: BaseCardContainer | HTMLSlotElement): void {\n this._containers.splice(this._containers.indexOf(container), 1);\n }\n\n private _CreateSlot(id: string, card: CardData, details: {\n tag: string,\n settings: undefined | FetchParameters,\n \"fetch-parameters\": undefined | FetchParameters,\n \"style-vars\": { [styleVar: string]: string },\n modules: Array<IModuleElement>,\n classes: Array<string>,\n \"slot-name\": string\n }): HTMLSlotElement {\n const slot = document.createElement(\"slot\");\n slot.id = \"slot-\" + id;\n if (details[\"slot-name\"].length > 0) {\n slot.name = details[\"slot-name\"];\n }\n else {\n slot.name = card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"\";\n }\n this._containers.push(slot);\n return slot;\n }\n\n private _updateElementDetails(container: BaseCardContainer, card: CardData, createModules: boolean, details: {\n tag: string,\n settings: undefined | FetchParameters,\n \"fetch-parameters\": undefined | FetchParameters,\n \"style-vars\": { [styleVar: string]: string },\n modules: Array<IModuleElement>,\n classes: Array<string>,\n \"slot-name\": string\n }): void {\n if (details.settings != undefined) {\n const settings = new CardContainerSettings();\n if (details[\"fetch-parameters\"]) {\n settings.parameters = details[\"fetch-parameters\"];\n }\n else {\n settings.parameters = details.settings;\n }\n\n settings.fetchFilter = {\n \"level-key-filter\": settings.Fetch.filter[\"level-key-filter\"],\n \"property-keys\": {\n keys: [card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"\"]\n },\n \"suspend-until-triggered\": settings.Fetch[\"suspend-until-triggered\"]\n };\n container.FetchParameters = settings.ToJson() as unknown as FetchParameters;\n }\n\n if (details[\"style-vars\"] != undefined) {\n const newContainerStyleVarsKeys = Object.keys(details[\"style-vars\"]);\n newContainerStyleVarsKeys.forEach(key=>{\n if (key.startsWith(\"--\")) {\n if (container && details[\"style-vars\"]) {\n container.style.setProperty(key, details[\"style-vars\"][key]);\n }\n }\n });\n }\n\n if (createModules && details.modules) {\n for (const module of details.modules) {\n ConstructionService.loadModule(module, container);\n }\n }\n\n if (details.classes) {\n container.classList.add(...details.classes);\n }\n }\n private _CreateElement(id: string, card: CardData, details: {\n tag: string,\n settings: undefined | FetchParameters,\n \"fetch-parameters\": undefined | FetchParameters,\n \"style-vars\": { [styleVar: string]: string },\n modules: Array<IModuleElement>,\n classes: Array<string>,\n \"slot-name\": string\n }): BaseCardContainer {\n const container = document.createElement(details.tag) as BaseCardContainer;\n container.id = id;\n this._updateElementDetails(container, card, true, details);\n this._containers.push(container);\n return container;\n }\n\n public Add(id: string, card: CardData, details: {\n tag: string,\n settings: undefined | FetchParameters,\n \"fetch-parameters\": undefined | FetchParameters,\n \"style-vars\": { [styleVar: string]: string },\n modules: Array<IModuleElement>,\n classes: Array<string>,\n \"slot-name\": string\n }): BaseCardContainer | HTMLSlotElement {\n if (details.tag.length < 1) {\n return this._CreateSlot(id, card, details);\n }\n return this._CreateElement(id, card, details);\n }\n\n public Update(container: BaseCardContainer | HTMLSlotElement, card: CardData, details: {\n tag: string,\n settings: undefined | FetchParameters,\n \"fetch-parameters\": undefined | FetchParameters,\n \"style-vars\": { [styleVar: string]: string },\n modules: Array<IModuleElement>,\n classes: Array<string>,\n \"slot-name\": string\n }): void {\n if (container instanceof HTMLSlotElement) {\n if (details.tag.length > 0) {\n this.Remove(container);\n container = this.Add(container.id, card, details);\n return;\n }\n if (details[\"slot-name\"].length > 0) {\n container.name = details[\"slot-name\"];\n }\n else {\n container.name = card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"\";\n }\n return;\n }\n\n // container is BaseCardContainer\n if (details.tag.length < 1) {\n this.Remove(container);\n container = this.Add(container.id, card, details);\n return;\n }\n this._updateElementDetails(container as BaseCardContainer, card, false, details);\n (container as BaseCardContainer).Refetch();\n }\n}\n","import {CardContainerContext, CardData, CardDataLevelKey, CardDataLevelMap} from \"../../../../models/card-container/\";\nimport type {BaseCardContainer} from \"../base/base-card-container\";\nimport type {CardAccordionContainerComponent} from \"../containers/card-accordion-container.component\";\nimport type {CardContainerSliderFilterComponent} from \"../containers/card-container-slider-filter.component\";\nimport {BaseCard} from \"../../cards/base/base.card\";\nimport {html, TemplateResult} from \"lit\";\nimport {EventHandlerDispatchEvent} from \"../../../../models/event-handler/event.handler.model\";\nimport {InternalCardContainerList} from \"../internals/internal-card-container-list\";\nimport {AccordionItemComponent} from \"../../../../components/standard/accordion\";\nimport {CardDataService} from \"../../../../utils/card.data.service\";\nimport {ConstructionService, IProperty} from \"@dh-software/webui-configuration-parser\";\nimport {AutomaticContainerDefinition, AutomaticContainerSettings} from \"./card-container-settings\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\n\nexport class CardElementCreator {\n /** undefined = never rendered yet; reset when the container is hidden so the next show always fires. */\n private _wasFilled: boolean | undefined = undefined;\n public ResetFillState(): void { this._wasFilled = undefined; }\n\n private createUniqueCardIdentifierFromKeys(levelKey: CardDataLevelKey, nextLevelKey: CardDataLevelKey, debugData: CardData | string) {\n let key = levelKey != undefined ? levelKey as string : \"\";\n if (typeof levelKey === \"number\") {\n key = levelKey.toFixed(0);\n }\n if (key.length > 0) {\n key = key.replaceAll(\" \", \"\");\n }\n\n let nextKey = nextLevelKey != undefined ? nextLevelKey as string : \"\";\n if (typeof nextLevelKey === \"number\") {\n nextKey = nextLevelKey.toFixed(0);\n }\n if (nextKey.length > 0) {\n nextKey = nextKey.replaceAll(\" \", \"\");\n }\n\n if (key.length < 1 && nextKey.length < 1) {\n console.error(\"BaseCardContainer - Error! could not create UniqueCardIdentifier debug-data:\", debugData);\n }\n return key + \"-\" + nextKey;\n }\n\n private loadProperties(properties: IProperty[], element: Element) {\n const setProperty = (property: IProperty) => {\n if (typeof property.value === \"boolean\" && property.attribute && property.value) element.setAttribute(property.key, \"\");\n else if (typeof property.value === \"boolean\" && property.attribute && !property.value) element.removeAttribute(property.key);\n else if (typeof property.value === \"object\" && property.attribute) element.setAttribute(property.key, JSON.stringify(property.value));\n else {\n if (!property.attribute) {\n // @ts-ignore\n element[property.key] = property.value;\n } else {\n element.setAttribute(property.key, property.value);\n }\n }\n };\n if (properties.length && element) {\n for (let property of properties) {\n const readyValue = property.readyValue;\n if (readyValue) {\n WebViewerService.IsAppReady.then(() => {\n setProperty(Object.assign(property, {value: readyValue.value}));\n });\n }\n setProperty(property);\n }\n }\n }\n\n public createCard(data: CardData | null, context: CardContainerContext, container: BaseCardContainer): BaseCard | undefined {\n if (data == undefined) return undefined;\n\n const tag = (data.additional?.[\"card-tag\"] as string) || context.settings.Card.tag;\n const card = document.createElement(tag) as BaseCard;\n card.classList.add(...(container.mobile ? context.settings.Card[\"mobile-classes\"] : context.settings.Card.classes));\n card.classList.add(this.createUniqueCardIdentifierFromKeys(data.click ? data.click[\"level-key\"] : \"\", data.click ? data.click[\"next-level-key\"] : \"\", data));\n card.cardContainerClickData = {\n \"handle-click\": true,\n context: context,\n container: container\n };\n data.dragable = context.settings.Card.dragable;\n data.tooltip = context.settings.Card.tooltip;\n const containerAdditional = context.settings.Card.additional;\n if (containerAdditional && Object.keys(containerAdditional).length > 0) {\n data.additional = { ...containerAdditional, ...(data.additional ?? {}) };\n }\n card.data = data;\n card.data.translate = context.settings.Card.translate;\n\n const allModules = [...(context.settings.Card.modules || []), ...(data.modules || [])];\n for (const module of allModules) {\n ConstructionService.loadModule(module, card);\n }\n return card;\n }\n protected pushCardElementToInterimArray(displayElements: Array<HTMLElement>, card: CardData | null, context: CardContainerContext, container: BaseCardContainer): void {\n const cardElement = this.createCard(card, context, container);\n if (cardElement) {\n displayElements.push(cardElement);\n }\n }\n protected createDisplayElements(levels: CardDataLevelMap, context: CardContainerContext, container: BaseCardContainer): void {\n this.displayElements = new Array<HTMLElement>();\n const styleVarsAll = context.settings.Levels[\"style-vars-all\"];\n const styleVarsAllKeys = Object.keys(styleVarsAll);\n\n if (levels.size == 1) {\n const keys = levels.keys();\n if (keys) {\n const next = keys.next();\n if (next && next.value) {\n const level = levels.get(next.value);\n if (level) {\n level.cards.forEach(card => {\n this.pushCardElementToInterimArray(this.displayElements, card, context, container);\n });\n if (level.cards.length === 0) {\n this.pushCardElementToInterimArray(this.displayElements, null, context, container);\n }\n }\n }\n }\n } else if (levels.size > 1) {\n levels.forEach((level, levelKey) => {\n if (level.title && level.title.length > 0 && context.settings.Levels.titled) {\n const levelTitleElement = document.createElement(\"fv-label\");\n levelTitleElement.setAttribute(\"i18n\", level.title);\n levelTitleElement.innerText = level.title;\n levelTitleElement.classList.add(\"level-title\");\n if (context.settings.Levels[\"single-value-invisible\"] && level.cards.length == 1) {\n levelTitleElement.classList.add(\"invisible\");\n }\n this.displayElements.push(levelTitleElement);\n }\n\n const levelElement = document.createElement(context.settings.Levels.tag);\n levelElement.classList.add(\"level\");\n if (context.settings.Levels[\"single-value-invisible\"] && level.cards.length == 1) {\n levelElement.classList.add(\"invisible\");\n }\n if (level.cards.length < 1) {\n levelElement.setAttribute(\"hide-element\", \"\");\n }\n\n const styleVars = context.settings.Levels[\"style-vars\"][levelKey];\n if (styleVars) {\n const styleVarKeys = Object.keys(styleVars);\n styleVarKeys.forEach(key => {\n if (key.startsWith(\"--\")) {\n levelElement.style.setProperty(key, styleVars[key]);\n }\n });\n }\n\n styleVarsAllKeys.forEach(key => {\n if (key.startsWith(\"--\")) {\n levelElement.style.setProperty(key, styleVarsAll[key]);\n }\n });\n\n const levelChildElements = new Array<HTMLElement>();\n level.cards.forEach(card => {\n this.pushCardElementToInterimArray(levelChildElements, card, context, container);\n // levelElement.appendChild(this.createCard(card, settings));\n });\n if (level.cards.length === 0) {\n this.pushCardElementToInterimArray(this.displayElements, null, context, container);\n }\n levelChildElements.forEach(childElement => {\n levelElement.appendChild(childElement);\n });\n\n let levelKeyTxt = levelKey;\n if (typeof levelKeyTxt == \"number\") {\n levelKeyTxt = levelKeyTxt.toString();\n }\n\n levelElement.setAttribute(\"level\", levelKeyTxt);\n this.displayElements.push(levelElement);\n });\n }\n\n // Handle onlyLevelOne case: wrap all elements in a flex-container\n if (levels.has(\"onlyLevelOne\") && levels.size === 1) {\n const wrapper = document.createElement('fv-flex-container');\n wrapper.setAttribute('level', 'onlyLevelOne');\n wrapper.classList.add(\"level\");\n\n const styleVars = context.settings.Levels[\"style-vars\"][\"onlyLevelOne\"];\n if (styleVars) {\n const styleVarKeys = Object.keys(styleVars);\n styleVarKeys.forEach(key => {\n if (key.startsWith(\"--\")) {\n wrapper.style.setProperty(key, styleVars[key]);\n }\n });\n }\n\n styleVarsAllKeys.forEach(key => {\n if (key.startsWith(\"--\")) {\n wrapper.style.setProperty(key, styleVarsAll[key]);\n }\n });\n\n this.displayElements.forEach(elem => wrapper.appendChild(elem));\n this.displayElements = [wrapper];\n }\n }\n\n protected displayElements = new Array<HTMLElement>();\n\n // constructor() {}\n\n public get Elements(): Array<HTMLElement> {\n return this.displayElements;\n }\n\n protected CreateSubContainers(container: AutomaticContainerDefinition[], topParent: Element): [Element?, Element?] {\n let copy = [...container].reverse();\n let cItem = copy.pop()\n\n let parent: Element | undefined\n let child: Element | undefined\n while (cItem) {\n const newChild = document.createElement(cItem.tag);\n newChild.classList.add(...cItem.classes || []);\n Object.keys(cItem[\"style-vars\"] || {}).filter(x => x.startsWith(\"--\")).forEach(x => newChild.style.setProperty(x, cItem![\"style-vars\"][x]));\n this.loadProperties(cItem.properties, newChild);\n\n if (child) {\n child.appendChild(newChild);\n }\n if (!parent) {\n parent = newChild;\n }\n child = newChild\n cItem = copy.pop();\n }\n if (parent) {\n topParent.appendChild(parent);\n } else {\n child = topParent;\n }\n return [parent, child];\n }\n\n MergeContainerSettings(settings: AutomaticContainerSettings, container: BaseCardContainer) {\n const baseClasses = new Set(settings.classes); // Not needed atm\n const baseStyleVars = settings[\"style-vars\"]\n if(container.mobile) {\n Object.entries(settings.mobile[\"style-vars\"]).forEach(([key, value]) => {\n baseStyleVars[key] = value;\n })\n }\n return {\n classes: [...baseClasses],\n styleVars: baseStyleVars\n }\n }\n\n public CreateRenderedCards(levels: CardDataLevelMap, context: CardContainerContext, container: BaseCardContainer): TemplateResult<1> | undefined {\n this.createDisplayElements(levels, context, container);\n\n const filled = this.Elements.length > 0;\n const alwaysFire = !(container.events[\"fill-state-on-change\"] ?? false);\n if (alwaysFire || filled !== this._wasFilled) {\n if (!alwaysFire) this._wasFilled = filled;\n const fillStateEvents = filled ? container.events[\"fill-state-filled\"] : container.events[\"fill-state-empty\"];\n if (fillStateEvents != undefined) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: fillStateEvents\n }));\n }\n }\n\n if (filled == false) {\n container.classList.add(\"empty\");\n } else if (container.Settings.Behaviour[\"single-card-hide\"] && this.Elements.length < 2) {\n container.classList.add(\"empty\");\n } else {\n container.classList.remove(\"empty\");\n }\n\n const mergedSettings = this.MergeContainerSettings(context.settings.AutomaticContainer, container);\n\n const containerTag = container.mobile ? context.settings.AutomaticContainer.mobile.tag : context.settings.AutomaticContainer.tag;\n const containerClasses = mergedSettings.classes\n const containerStyleVars = mergedSettings.styleVars\n const subContainers = (container.mobile ? context.settings.AutomaticContainer.mobile[\"subContainer\"] : context.settings.AutomaticContainer[\"subContainer\"]) || [];\n const properties = (container.mobile ? context.settings.AutomaticContainer.mobile[\"properties\"] : context.settings.AutomaticContainer[\"properties\"]) || [];\n const containerStyleVarsKeys = Object.keys(containerStyleVars);\n\n const containerElement = document.createElement(containerTag);\n containerElement.classList.add(...containerClasses);\n containerElement.style.boxSizing = \"border-box\";\n containerStyleVarsKeys.forEach(key=>{\n if (key.startsWith(\"--\")) {\n containerElement.style.setProperty(key, containerStyleVars[key]);\n }\n });\n\n if (levels.size === 1) {\n const onlyKey = levels.keys().next().value;\n if (onlyKey != undefined) {\n const onlyLevel = levels.get(onlyKey);\n const styleKey = onlyLevel?.additional?.[\"style-type\"] as string | undefined;\n const activeLevelVars = context.settings.Levels[\"style-vars\"][onlyKey]\n ?? (styleKey ? context.settings.Levels[\"style-vars\"][styleKey] : undefined);\n if (activeLevelVars) {\n Object.keys(activeLevelVars).forEach(key => {\n if (key.startsWith(\"--\")) {\n containerElement.style.setProperty(key, activeLevelVars[key]);\n }\n });\n }\n }\n }\n\n this.loadProperties(properties, containerElement);\n\n const [parent, child] = this.CreateSubContainers(subContainers, containerElement);\n this.Elements.forEach(element => {\n child?.appendChild(element);\n });\n\n let renderResult = undefined;\n if (filled) {\n renderResult = html`${containerElement}`;\n }\n return renderResult;\n }\n\n public TriggerCardClick(indexInList: number, ensureInactive: boolean) {\n const cardelement = this.Elements.at(indexInList)\n if (ensureInactive) {\n if (cardelement?.classList.contains(\"active\")) {\n return;\n }\n }\n cardelement?.click();\n }\n}\n\nexport class CardElementSliderFilterCreator extends CardElementCreator {\n private dimensions = new Array<number>();\n private activeDimensions = new Array<number>();\n\n protected createDisplayElements(levels: CardDataLevelMap, context: CardContainerContext, container: CardContainerSliderFilterComponent): void {\n this.dimensions = new Array<number>();\n this.activeDimensions = new Array<number>();\n for (const [key, level] of levels) {\n for (const card of level.cards) {\n if (card.click?.[\"level-key\"]) {\n const levelKey = +card.click?.[\"level-key\"];\n this.dimensions.push(levelKey);\n if (!card.disabled) {\n this.activeDimensions.push(levelKey);\n }\n }\n }\n }\n if (this.dimensions.length == 0 && this.activeDimensions.length == 0) {\n this.displayElements = new Array<HTMLElement>();\n return;\n }\n if (container.useCards !== undefined && container.useCards === true) {\n return super.createDisplayElements(levels, context, container);\n }\n this.displayElements = new Array<HTMLElement>();\n this.displayElements.push(container.getBaseSliderState(this.dimensions, this.activeDimensions));\n return;\n }\n\n public get Dimensions(): Array<number> {\n return this.dimensions;\n }\n\n public get ActiveDimensions(): Array<number> {\n return this.activeDimensions;\n }\n}\n\nexport class CardElementAccordionCreator extends CardElementCreator {\n private _internalContainers = new InternalCardContainerList();\n\n protected pushCardElementToInterimArray(displayElements: Array<HTMLElement>, card: CardData | null, context: CardContainerContext, container: CardAccordionContainerComponent): void {\n if (card == undefined) return;\n const cardElement = this.createCard(card, context, container);\n if (cardElement == undefined) return;\n cardElement.slot = \"header\";\n\n const id = card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"\";\n const details = {\n tag: container.cardContainersToCreate.tag,\n settings: container.cardContainersToCreate.settings,\n \"fetch-parameters\": container.cardContainersToCreate[\"fetch-parameters\"] != undefined ? container.cardContainersToCreate[\"fetch-parameters\"] : undefined,\n \"style-vars\": container.cardContainersToCreate[\"style-vars\"] != undefined ? container.cardContainersToCreate[\"style-vars\"] : {},\n modules: container.cardContainersToCreate.modules != undefined ? container.cardContainersToCreate.modules : [],\n classes: container.cardContainersToCreate.classes != undefined ? container.cardContainersToCreate.classes : [],\n \"slot-name\": container.overwriteToggleContainerSlotName\n };\n let _container = this._internalContainers.Get(id);// get cached element\n if (_container == undefined) {\n _container = this._internalContainers.Add(id, card, details);\n } else {// update existing\n this._internalContainers.Update(_container, card, details);\n }\n\n if (_container != undefined && !(_container instanceof HTMLSlotElement)) {\n (_container as BaseCardContainer).ShowIdSlot = true;\n }\n\n const levelIdentifier = card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"no-level\";\n const item = document.createElement(\"fv-accordion-item\") as AccordionItemComponent;\n item.allowCloseOfForcedOpen = true;\n item.headerAsSlot = true;\n item.AddHeaderClickDefer(async () => {\n await CardDataService.WaitForAllCardContainerFetchPromises();\n });\n item.setAttribute(\"level-identifier\", levelIdentifier);\n if (card.image) {\n item.Image = card.image.prefix + card.image.file;\n }\n item.appendChild(cardElement);\n if (_container != undefined) {\n item.appendChild(_container);\n }\n if (levelIdentifier == container.Open) {\n item.forcedOpen = true;\n item.AddConnectedCallbackAction(async () => {\n item.forceOpen();\n });\n }\n displayElements.push(item);\n }\n\n public TriggerCardClick(indexInList: number, ensureInactive: boolean) {\n const item = this.Elements.at(indexInList);\n if (ensureInactive) {\n if ((item as AccordionItemComponent).isActive) {\n return;\n }\n }\n const card = item?.querySelector('[slot=\"header\"]') as HTMLElement | undefined;\n card?.click();\n }\n}\n","import {ComponentService, ComponentServiceSearchParams} from \"../../../../utils/component.service\";\nimport {FilterSelectionData} from \"../../../../models/card-container\";\nimport type {BaseCardContainer} from \"../base/base-card-container\";\n\n\nexport class CardContainerStates {\n // _ _\n // ___| |_ __ _| |_ ___ ___\n // / __| __/ _` | __/ _ \\/ __|\n // \\__ \\ || (_| | || __/\\__ \\\n // |___/\\__\\__,_|\\__\\___||___/\n private _selectedFilters = new Array<FilterSelectionData>();\n private _useExternalFilters = false;\n private _suspendingDisableSource = false;\n private _preventAppConnectionClick = false;\n private _unrenderedFetch = false;\n private _handleAppConnectionPlanningSituationState = false;\n\n\n // _ _ _ _ _ _\n // (_)_ __ | |_ ___ _ __ _ __ __ _| | __ ____ _ _ __(_) __ _| |__ | | ___ ___\n // | | '_ \\| __/ _ \\ '__| '_ \\ / _` | | \\ \\ / / _` | '__| |/ _` | '_ \\| |/ _ \\/ __|\n // | | | | | || __/ | | | | | (_| | | \\ V / (_| | | | | (_| | |_) | | __/\\__ \\\n // |_|_| |_|\\__\\___|_| |_| |_|\\__,_|_| \\_/ \\__,_|_| |_|\\__,_|_.__/|_|\\___||___/\n private _container: BaseCardContainer | undefined = undefined;\n\n // _ _ ___ _ _\n // ___ ___| |_| |_ ___ _ __ ( _ ) __ _ ___| |_| |_ ___ _ __\n // / __|/ _ \\ __| __/ _ \\ '__| / _ \\/\\ / _` |/ _ \\ __| __/ _ \\ '__|\n // \\__ \\ __/ |_| || __/ | | (_> < | (_| | __/ |_| || __/ |\n // |___/\\___|\\__|\\__\\___|_| \\___/\\/ \\__, |\\___|\\__|\\__\\___|_|\n // |___/\n public set SuspendDisableSource(value: boolean) {\n this._suspendingDisableSource = value;\n }\n\n public get SuspendDisableSource(): boolean {\n return this._suspendingDisableSource;\n }\n\n public get SelectedFilters(): Array<FilterSelectionData> {\n return this._selectedFilters;\n }\n\n public set SelectedFilters(value: Array<FilterSelectionData>) {\n this._selectedFilters = value.map(f => ({\n filter: [...f.filter],\n strategy: f.strategy,\n priority: f.priority,\n \"additional-params\": f[\"additional-params\"]\n }));\n this._useExternalFilters = true;\n }\n\n public set PreventAppConnectionClick(value: boolean) {\n this._preventAppConnectionClick = value;\n }\n\n public get PreventAppConnectionClick(): boolean {\n return this._preventAppConnectionClick;\n }\n\n public set UnrenderedFetch(value: boolean) {\n this._unrenderedFetch = value;\n }\n\n public get UnrenderedFetch(): boolean {\n return this._unrenderedFetch;\n }\n\n public set HandleAppConnectionPlanningSituationState(value: boolean) {\n this._handleAppConnectionPlanningSituationState = value;\n }\n\n public get HandleAppConnectionPlanningSituationState(): boolean {\n return this._handleAppConnectionPlanningSituationState;\n }\n\n\n // _ _\n // ___ ___ _ __ ___| |_ _ __ _ _ ___| |_ ___ _ __\n // / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n // | (_| (_) | | | \\__ \\ |_| | | |_| | (__| || (_) | |\n // \\___\\___/|_| |_|___/\\__|_| \\__,_|\\___|\\__\\___/|_|\n constructor(container: BaseCardContainer) {\n this._container = container;\n }\n\n // _ _ _ _ _\n // ___ | |_| |__ ___ _ __ _ __ ___ ___| |_| |__ ___ __| |___\n // / _ \\| __| '_ \\ / _ \\ '__| | '_ ` _ \\ / _ \\ __| '_ \\ / _ \\ / _` / __|\n // | (_) | |_| | | | __/ | | | | | | | __/ |_| | | | (_) | (_| \\__ \\\n // \\___/ \\__|_| |_|\\___|_| |_| |_| |_|\\___|\\__|_| |_|\\___/ \\__,_|___/\n private get FilterSourceSelectors(): Array<ComponentServiceSearchParams> | undefined {\n if (this._container == undefined) return undefined;\n if (this._container.mobile && this._container.Settings.Filter.mobile && this._container.Settings.Filter.mobile[\"source-elements-selectors\"] && this._container.Settings.Filter.mobile[\"source-elements-selectors\"].length > 0) {\n return this._container.Settings.Filter.mobile[\"source-elements-selectors\"];\n }\n return this._container.Settings.Filter[\"source-elements-selectors\"];\n }\n\n public ReadSelectedFiltersFromTargets(): void {\n if (this._container == undefined) return;\n if (this._useExternalFilters) return;\n\n this._selectedFilters = new Array<FilterSelectionData>();\n if (this._container.Settings.Filter == undefined || this._container.Settings.Filter[\"source-elements-selectors\"] == undefined) return;\n\n\n const selectors = this.FilterSourceSelectors;\n if (selectors == undefined) return;\n\n let prio = 0;\n for (const selector of selectors) {\n const targets = ComponentService.findAll(selector.tag, selector.query);\n for (const target of targets) {\n const targetAsBase = target as BaseCardContainer;\n if (targetAsBase == undefined || targetAsBase.Filter == undefined) continue;// skip elements that do not act as filters / could not be found\n\n if (this._container.Settings.Filter[\"determine-priorities-by-suspended-disable-sources\"]) {\n targetAsBase.Filter.Prio = targetAsBase.States.SuspendDisableSource ? 1 : 0;\n }\n\n const targetFilter = targetAsBase.Filter;\n if (targetFilter == undefined || targetFilter.Filter == undefined || targetFilter.Filter.length < 1) continue;\n\n this._selectedFilters.push({\n filter: targetFilter.Filter,\n strategy: targetFilter.Strategy,\n priority: targetFilter.Prio != undefined ? targetFilter.Prio : prio++,\n \"additional-params\": targetFilter.AdditionalParams ? targetFilter.AdditionalParams : undefined\n });\n }\n }\n }\n\n public ResetSelectedFilters(): void {\n this._selectedFilters = new Array<FilterSelectionData>();\n this._useExternalFilters = false;\n }\n}\n","import { UpdateAdditionalDataEvent } from \"../../../../models/card-container\";\nimport type { BaseCardContainer } from \"../base/base-card-container\";\n\n\n\nexport class CardContainerAdditionalData {\n private _data: {\n [key: string]: unknown\n } = {};\n private _keys = new Array<string>();\n private _container: BaseCardContainer | undefined = undefined;\n constructor(cardContainer: BaseCardContainer) {\n this._container = cardContainer;\n }\n\n public Exists(key: string): boolean {\n return this._keys.includes(key);\n }\n public Set(key: string, value: unknown): void {\n if (!this.Exists(key)) {\n this._keys.push(key);\n }\n this._data[key] = value;\n }\n public Get(key: string, fallback: unknown): unknown {\n this._container?.dispatchEvent(new UpdateAdditionalDataEvent(key, () => {}));\n if (!this._keys.includes(key)) {\n return fallback;\n }\n return this._data[key];\n }\n public Remove(key: string): void {\n const index = this._keys.indexOf(key);\n if (index > -1) {\n this._keys.splice(index, 1);\n delete this._data[key];\n }\n }\n public Reset(): void {\n this._keys = new Array<string>();\n this._data = {};\n }\n}\n","import { PropertyValueMap, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { AsyncBaseElement, FetchParameters } from \"../../base/async.base.component\";\nimport { BaseCard, CardClickEventInit } from \"../../cards/base/base.card\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { CardData, CardDataLevelKey, CardDataLevelMap, CardContainerContext, FetchResult, CardContainerCustomEvents, CardContainerPreFillEvent, CardContainerPostFillEvent, UpdatedEvent, CardDataUpdateEvent, CardContainerUpdate, CardContainerEvents, CardContainerBackToStartEventInit, CardContainerTriggerCardClickEventInit, UpdateAdditionalDataEventInit, CardContainerAsyncEventDispatcher, CardContainerBaseEventDetail, CardContainerAsyncEvent, CardContainerBaseEventInit, FIXED_CARD_CLICK_EVENTS_KEY, CARD_VIEW_KEY } from \"../../../../models/card-container/\";\nimport { CardElementCreator, CardContainerSettings, CardContainerFilterSelection, CardContainerStates, CardContainerAdditionalData } from \"../internals\";\nimport style from \"./base-card-container.sass?inline\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { CardContainersSharedData, CardContainersShared } from \"../internals/card-containers-shared-data\";\nimport { CardContainerEventContainer, RefreshCardContainersParams } from \"../../../../utils/card-container-event.service\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-card-container:set-show-before-slot\": { state?: boolean };\n \"fv-card-container:set-show-id-slot\": { state?: boolean };\n \"fv-card-container:reset-selection-result-filter\": Record<string, never>;\n \"fv-card-container:clear\": Record<string, never>;\n \"fv-card-container:refetch\": { \"clear-cache\"?: boolean };\n \"fv-card-container:click-card\": { indexInList?: number; \"ensure-inactive\"?: boolean };\n \"fv-card-container:retrigger-single-entry-skip\": Record<string, never>;\n }\n}\n\n\nexport type RefreshCardDataResult = \"changed\" | \"unchanged\" | \"invalid\";\n\nexport abstract class BaseCardContainer extends AsyncBaseElement<FetchParameters, FetchResult> {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n // Per-target card-container states (migrated from CardContainerEventContainer).\n // Routing resolves the tag/query target; each instance acts on itself.\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-card-container:set-show-before-slot\": ({ state }) => { this.ShowBeforeSlot = state; },\n \"fv-card-container:set-show-id-slot\": ({ state }) => { this.ShowIdSlot = state; },\n \"fv-card-container:reset-selection-result-filter\": () => {\n if (this.Filter != undefined) this.Filter.Reset(true, this.Context);\n },\n \"fv-card-container:clear\": () => {\n if (this.Filter) this.Filter.Reset(true, this.Context);\n this.requestUpdate();\n },\n \"fv-card-container:refetch\": (data) => {\n const previousValue = this.Context?.settings?.Fetch?.parameters[\"clear-cache\"];// usually undefined; intended\n if (data[\"clear-cache\"]) this.Context.settings.Fetch.parameters[\"clear-cache\"] = true;\n this.Refetch().then(() => {\n if (data[\"clear-cache\"]) this.Context.settings.Fetch.parameters[\"clear-cache\"] = previousValue;\n });\n },\n \"fv-card-container:click-card\": (data) => {\n if (data.indexInList == undefined) return;\n this.TriggerCardClick(data.indexInList, data[\"ensure-inactive\"] as boolean);\n },\n \"fv-card-container:retrigger-single-entry-skip\": () => {\n // Duck-typed: only RootLevelSelectionCardContainerComponent implements this.\n const self = this as unknown as { ReTriggerSingleEntrySkip?: () => void };\n if (self.ReTriggerSingleEntrySkip) self.ReTriggerSingleEntrySkip();\n },\n };\n\n // _ _\n // _ __ _ __ ___ _ __ ___ _ __| |_(_) ___ ___\n // | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n // | |_) | | | (_) | |_) | __/ | | |_| | __/\\__ \\\n // | .__/|_| \\___/| .__/ \\___|_| \\__|_|\\___||___/\n // |_| |_|\n @property({ type: Object, reflect: false, attribute: \"settings\" })// PH ensure legacy jsons, that set the settings attribute continue to work!\n public set _legacysettigns(value: unknown) {\n console.warn(\"BaseCardContainer> settings attribute is deprecated! use fetch-parameters instead!\");\n this.FetchParameters = value as FetchParameters;\n // this.Refetch(); //PH [2026|June|26] - removed unnecessary refetch. It already gets triggered in the FetchParameters setter if the value was different!\n }\n @property({ type: Object, reflect: false, attribute: \"events\" })\n public events: CardContainerCustomEvents = {};\n\n @property({ type: Boolean, reflect: true, attribute: \"refetch-on-click\" })\n public refetchOnClick = false;\n\n\n @property({ type: Boolean, reflect: true, attribute: \"trigger-refresh-on-click\" })\n public refreshOnClick = false;// disabled by default, since card containers that change their hideState refresh(filter) by default\n\n @property({type: Boolean, reflect: true, attribute: \"reset-fill-state-on-hide\"})\n public resetFillStateOnHide = false;\n\n // _\n // _ __ ___ ___ _ __ ___ | |__ ___ _ __ ___\n // | '_ ` _ \\ / _ \\ '_ ` _ \\| '_ \\ / _ \\ '__/ __|\n // | | | | | | __/ | | | | | |_) | __/ | \\__ \\\n // |_| |_| |_|\\___|_| |_| |_|_.__/ \\___|_| |___/\n //private\n private showBeforeSlot = true;\n public set ShowBeforeSlot(state: boolean | undefined) {\n if (state == undefined) return;\n this.showBeforeSlot = state;\n }\n public get ShowBeforeSlot(): boolean {\n return this.showBeforeSlot;\n }\n\n private showIdSlot = false;\n public set ShowIdSlot(state: boolean | undefined) {\n if (state == undefined) return;\n this.showIdSlot = state;\n }\n public get ShowIdSlot(): boolean {\n return this.showIdSlot;\n }\n\n // protected\n protected lastClickedCard: CardData | undefined = undefined;\n protected filter: CardContainerFilterSelection | undefined = undefined;// dynamic Filter. Another possibility to filter is through the settings-json\n protected settings: CardContainerSettings;\n protected cardCreator = new CardElementCreator();\n protected states = new CardContainerStates(this);\n protected cardData: CardDataLevelMap | undefined = undefined;\n protected filteredFetchResult: FetchResult | undefined = undefined;\n protected additionalData = new CardContainerAdditionalData(this);\n protected static shared: CardContainersSharedData = CardContainersShared;\n\n\n // _ _ _ _ _\n // ___ ___ _ __ ___| |_ _ __ _ _ ___| |_ ___ _ __ ___ ___ _ __ _ __ ___ ___| |_(_) ___ _ __ _____ _____ _ __ | |_ ___\n // / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__| / __/ _ \\| '_ \\| '_ \\ / _ \\/ __| __| |/ _ \\| '_ \\ / _ \\ \\ / / _ \\ '_ \\| __/ __|\n // | (_| (_) | | | \\__ \\ |_| | | |_| | (__| || (_) | |_ | (_| (_) | | | | | | | __/ (__| |_| | (_) | | | | | __/\\ V / __/ | | | |_\\__ \\\n // \\___\\___/|_| |_|___/\\__|_| \\__,_|\\___|\\__\\___/|_( ) \\___\\___/|_| |_|_| |_|\\___|\\___|\\__|_|\\___/|_| |_| \\___| \\_/ \\___|_| |_|\\__|___/\n // |/\n constructor(observeLocales = true) {\n super();\n this.baseOptions.registerLocalesModel = observeLocales;\n BaseCardContainer.shared.AddTagName(this.tagName);\n this.addEventListener(\"cardclick\", (event: CardClickEventInit) => {\n const data = event.detail?.data;\n if (data == undefined) return;\n\n // Fixed-card clicks fire their own clickEvents instead of triggering navigation.\n const fixedEvents = data.additional?.[FIXED_CARD_CLICK_EVENTS_KEY] as EventHandlerEvent[] | undefined;\n if (Array.isArray(fixedEvents) && fixedEvents.length > 0) {\n window.dispatchEvent(new EventHandlerDispatchEvent({async: false, events: fixedEvents}));\n return;\n }\n\n if (data.click) {\n this.lastClickedCard = data;\n this.Select(data);\n }\n\n if (this.events[\"card-clicked\"]) {\n window.dispatchEvent(new EventHandlerDispatchEvent({ async: false, events: this.events[\"card-clicked\"] }));\n }\n });\n\n this.addEventListener(CardContainerEvents.Back, () => {\n if (this.lastClickedCard?.click) {\n this.filter?.Remove(this.lastClickedCard.click[\"level-key\"]);\n }\n this.hideElement = false;\n });\n\n this.addEventListener(CardContainerEvents.UpdateAdditionalData, (event: UpdateAdditionalDataEventInit) => {\n if (event.detail == undefined) return;\n if (this.lastClickedCard?.txt == undefined) return;\n\n const title = this.lastClickedCard.txt[\"title\"] ?? Object.values(this.lastClickedCard.txt).at(0);\n if (title) {\n this.AdditionalData.Set(event.detail.key, title);\n this.Dispatcher.callPostEvent(event);\n }\n });\n\n this.addHideStateUpdatedEventListener((hidden: boolean, parentStateChanged: boolean) => {\n if (this.events[\"hide-show-ignore-parent-change\"] == true && parentStateChanged) {\n return;\n }\n\n if (this.events[\"hide-show-only-after-first-fill\"]) {\n if (this.LastRenderResult == undefined) return;\n }\n\n const dispatch = (events: Array<EventHandlerEvent> | undefined)=>{\n if (events == undefined) return;\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: events\n }));\n };\n\n if (this.resetFillStateOnHide && hidden) {\n this.cardCreator.ResetFillState(); // ensure fill-state events re-fire on the next show\n }\n\n // if (this.events.hide || this.events.show) {\n // dispatch(hidden ? this.events.hide : this.events.show);\n // }\n if (this.events.hide || this.events.show) {\n if (this.events[\"hide-show-skip-if-self-hidden\"] && parentStateChanged && !hidden && this.hideElement) {\n // Parent became visible but this element is still hidden - skip show events\n } else {\n dispatch(hidden ? this.events.hide : this.events.show);\n }\n }\n\n if (!hidden) {\n CardDataService.CheckUpdate(CardDataUpdateEvent.CardContainerVisible, {}, this.Context).then(async (update) => {\n await this.CheckUpdate(update, true);\n });\n }\n });\n\n this.settings = new CardContainerSettings();\n\n this.addEventListener(CardContainerEvents.BackToStart, (event: CardContainerBackToStartEventInit)=>{\n this.filter?.Clear();\n //this.hideElement = false;\n CardDataService.WaitForAllCardContainerFetchPromises().then(async ()=>{\n await CardContainerEventContainer.RefreshAll({\n includeHidden: true,\n refetch: false // PH [2026|June|18] - according to claude this wont break anything. Hope that holds true\n });\n CardContainerEventContainer.RefreshBackButtons();\n await CardDataService.WaitForAllCardContainerFetchPromises();\n event.detail?.[\"post-event\"]();\n });\n });\n\n this.addEventListener(CardContainerEvents.TriggerCardClick, async (event: CardContainerTriggerCardClickEventInit)=>{\n if (event.detail == undefined || event.detail[\"keys-to-open\"] == undefined) {\n return;\n }\n await CardDataService.WaitForAllCardContainerFetchPromises();\n\n for (const levelKeyToOpen of event.detail[\"keys-to-open\"]) {\n const cardElements = this.renderRoot.querySelectorAll(this.Settings.Card.tag);\n cardElements.forEach(element => {\n if (element instanceof BaseCard) {\n if (element.data.click == undefined) return;\n if (element.data.click[\"level-key\"] != levelKeyToOpen) return;\n element.click();\n }\n });\n }\n\n await CardDataService.WaitForAllCardContainerFetchPromises();\n\n if (event.detail?.[\"post-event\"]) {\n event.detail?.[\"post-event\"]();\n }\n });\n\n\n this.addEventListener(\"modifyhideelement\", (event: CustomEventInit)=>{\n if (event.detail == undefined) {\n return;\n }\n this.hideElement = event.detail;\n });\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n CardDataService.Register(this);\n\n this.settings.Initialize(this.FetchParameters);\n this.Filter?.Init(this.Context);\n\n if (this.Filter != undefined) {\n CardDataService.InitFilterSelectionParams(this.Context);\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n CardDataService.Remove(this);\n }\n\n isEmpty() {\n return this.classList.contains(\"empty\");\n }\n\n\n\n // ____ _____ _____ _____ _____ ____\n // / ___| ____|_ _|_ _| ____| _ \\\n // | | _| _| | | | | | _| | |_) |\n // | |_| | |___ | | | | | |___| _ <\n // \\____|_____| |_| |_| |_____|_| \\_\\\n public static get Shared(): CardContainersSharedData {\n return BaseCardContainer.shared;\n }\n public get FilteredFetchResult(): FetchResult | undefined {\n return this.filteredFetchResult;\n }\n public get CardData(): CardDataLevelMap | undefined {\n return this.cardData;\n }\n public get RootLevelCardCount(): number {\n let count = 0;\n const cardData = this.CardData;\n if (cardData == undefined) return count;\n const rootLevel = cardData.get(this.Settings.Fetch[\"root-level\"]);\n if (rootLevel) {\n count += rootLevel.cards.length;\n }\n return count;\n }\n public get Settings(): CardContainerSettings {\n return this.settings;\n }\n public get Filter(): CardContainerFilterSelection | undefined {\n return this.filter;\n }\n public get States(): CardContainerStates {\n return this.states;\n }\n public get AdditionalData(): CardContainerAdditionalData {\n return this.additionalData;\n }\n public get LastClicked(): CardData | undefined {\n return this.lastClickedCard;\n }\n\n\n private _dispatcher: CardContainerAsyncEventDispatcher | undefined = undefined;\n public get Dispatcher(): CardContainerAsyncEventDispatcher {\n if (this._dispatcher === undefined) {\n this._dispatcher = new CardContainerAsyncEventDispatcher(this.dispatchEvent.bind(this));\n }\n return this._dispatcher;\n }\n private _context: CardContainerContext | undefined = undefined;\n public get Context(): CardContainerContext {\n if (this._context === undefined) {\n this._context = {\n settings: this.Settings,\n states: this.States,\n filter: this.Filter,\n cards: this.CardData,\n dispatchAsyncEvent: async (eventFactory: (resolve: () => Promise<void> | void) => Event) => this.Dispatcher.dispatch(eventFactory),\n dispatchEvent: (event: Event) => this.dispatchEvent(event)\n };\n return this._context;\n }\n\n this._context.filter = this.Filter;\n this._context.cards = this.CardData;\n // this.Settings, this.States & this.Filter allways represent the same objects and never are reassigend (yet)\n // if that changes these also need to be reset here!\n return this._context;\n }\n\n\n // ____ _____ _ _ ____ _____ ____\n // | _ \\| ____| \\ | | _ \\| ____| _ \\\n // | |_) | _| | \\| | | | | _| | |_) |\n // | _ <| |___| |\\ | |_| | |___| _ <\n // |_| \\_\\_____|_| \\_|____/|_____|_| \\_\\\n protected async Fetch(parameters: FetchParameters): Promise<FetchResult | undefined> {\n this.states.UnrenderedFetch = true;\n this.Settings.parameters = parameters;\n this.States.ReadSelectedFiltersFromTargets();\n return await CardDataService.Fetch(this.Context);\n }\n protected CreateCards(result: FetchResult): CardDataLevelMap {\n if (!this.states.UnrenderedFetch) {\n this.States.ReadSelectedFiltersFromTargets();\n }\n this.states.UnrenderedFetch = false;\n this.filteredFetchResult = CardDataService.Filter(result, this.Context, this.Filter == undefined ? new Array<CardDataLevelKey>() : this.Filter.Filter);\n return CardDataService.CreateCards(this.filteredFetchResult, this.Context);\n }\n protected RefreshCardData(result: FetchResult | undefined): RefreshCardDataResult {\n if (result == undefined) {\n return \"invalid\";\n }\n\n const previousCardData = this.cardData;\n this.cardData = this.CreateCards(result);\n this.InjectFixedCards();\n if (this.Filter != undefined) {\n this.Filter.PurgeRemovedCards(this.cardData);\n }\n\n // Content compare (not reference): if the cards to display are identical to what is already\n // rendered, skip the DOM rebuild. furnplan re-fires many events per action and often returns\n // the same data; the old `old == this.cardData` check compared a freshly-built Map by\n // reference and so never matched, making this skip-path dead code.\n if (previousCardData != undefined && this.CardDataEquals(previousCardData, this.cardData)) {\n this.cardData = previousCardData;// identical output — keep the stable reference and skip rendering\n return \"unchanged\";\n }\n return \"changed\";\n }\n\n // Structural equality of two card-data maps with cheap short-circuits and first-difference\n // early-exit. Far cheaper than serializing the whole graph: most real changes differ in level\n // count, a level title, or a card count and bail before any deep recursion.\n private CardDataEquals(previous: CardDataLevelMap, next: CardDataLevelMap): boolean {\n if (previous === next) {\n return true;\n }\n if (previous.size !== next.size) {\n return false;\n }\n for (const [levelKey, previousLevel] of previous) {\n const nextLevel = next.get(levelKey);\n if (nextLevel == undefined) {\n return false;\n }\n if (previousLevel.title !== nextLevel.title) {\n return false;\n }\n if (previousLevel.cards.length !== nextLevel.cards.length) {\n return false;\n }\n for (let cardIndex = 0; cardIndex < previousLevel.cards.length; cardIndex++) {\n if (!BaseCardContainer.DeepEquals(previousLevel.cards[cardIndex], nextLevel.cards[cardIndex])) {\n return false;\n }\n }\n if (!BaseCardContainer.DeepEquals(previousLevel.additional, nextLevel.additional)) {\n return false;\n }\n }\n return true;\n }\n\n // Generic structural equality for plain (JSON-like) data with first-difference early-exit.\n // Static so there is no per-instance closure. CardData is plain data (no functions/Dates), so\n // primitive/array/object handling is sufficient; functions/class instances would compare unequal\n // unless identical by reference, which only ever errs toward rendering (never a false skip).\n private static DeepEquals(valueA: unknown, valueB: unknown): boolean {\n if (valueA === valueB) {\n return true;\n }\n if (valueA == undefined || valueB == undefined) {\n return valueA === valueB;\n }\n if (typeof valueA !== \"object\" || typeof valueB !== \"object\") {\n return false;\n }\n\n const valueAisArray = Array.isArray(valueA);\n if (valueAisArray !== Array.isArray(valueB)) {\n return false;\n }\n if (valueAisArray) {\n const arrayA = valueA as Array<unknown>;\n const arrayB = valueB as Array<unknown>;\n if (arrayA.length !== arrayB.length) {\n return false;\n }\n for (let index = 0; index < arrayA.length; index++) {\n if (!BaseCardContainer.DeepEquals(arrayA[index], arrayB[index])) {\n return false;\n }\n }\n return true;\n }\n\n const objectA = valueA as Record<string, unknown>;\n const objectB = valueB as Record<string, unknown>;\n const keysA = Object.keys(objectA);\n const keysB = Object.keys(objectB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(objectB, key)) {\n return false;\n }\n if (!BaseCardContainer.DeepEquals(objectA[key], objectB[key])) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Prepends `FixedCards.before` and appends `FixedCards.after` (from settings) to every level.\n * Each fixed card's `clickEvents` are stashed on `data.additional` for the cardclick handler.\n */\n protected InjectFixedCards(): void {\n if (this.cardData == undefined) return;\n const fixed = this.Settings.FixedCards;\n const before = fixed?.before ?? [];\n const after = fixed?.after ?? [];\n if (before.length === 0 && after.length === 0) return;\n\n const decorate = (entry: {data: CardData; clickEvents: Array<EventHandlerEvent>; \"view-key\"?: string}): CardData => ({\n ...entry.data,\n additional: {\n ...(entry.data.additional ?? {}),\n [FIXED_CARD_CLICK_EVENTS_KEY]: entry.clickEvents,\n ...(entry[\"view-key\"] ? {[CARD_VIEW_KEY]: entry[\"view-key\"]} : {}),\n },\n });\n\n for (const level of this.cardData.values()) {\n level.cards = [\n ...before.map(decorate),\n ...level.cards,\n ...after.map(decorate),\n ];\n }\n }\n\n protected renderComplete(result: FetchResult | undefined, renderResult: TemplateResult<1> | undefined): TemplateResult<1> {\n this.Dispatcher.dispatch(done => new CardContainerPreFillEvent(done));\n if (result == undefined) {\n return super.renderComplete(result, renderResult);\n }\n\n const refreshCardDataResult = this.RefreshCardData(result);\n if (this.LastRenderResult && refreshCardDataResult == \"unchanged\") {\n return this.LastRenderResult;// skip element creation, if cards did not change\n }\n if (this.cardData == undefined)\n {\n return super.renderComplete(result, renderResult);\n }\n\n console.log(\"rendering card container!\");\n const renderedCards = this.cardCreator.CreateRenderedCards(this.cardData, this.Context, this);\n return super.renderComplete(result, html`\n <slot class=\"loader-slot\" name=\"loader\"></slot>\n ${this.isEmpty() ? html`<slot class=\"empty-slot\" name=\"empty\"></slot>` : html``}\n ${this.ShowBeforeSlot ? html`<slot class=\"before-slot\" name=\"before\"></slot>` : html``}\n ${this.ShowIdSlot && this.id ? html`<slot class=\"id-slot\" name=\"${this.id}\"></slot>` : html``}\n ${renderedCards}\n `);\n }// simply display the fetch result if not overloaded!\n\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.updated(_changedProperties);\n\n window.dispatchEvent(new UpdatedEvent(()=>{}, this));\n this.Dispatcher.dispatch(done => new CardContainerPostFillEvent(done));\n }\n\n\n protected async Select(data: CardData): Promise<void> {\n // stub — override in subclasses to handle card selection\n }\n\n protected async TriggerRefreshIfEnabled(options: Omit<RefreshCardContainersParams, \"refetch\"> = {}): Promise<void> {\n if (!this.refreshOnClick) return;\n await CardContainerEventContainer.RefreshAll({ refetch: this.refetchOnClick, ...options });\n }\n\n public async CheckUpdate(update: CardContainerUpdate, updateNoneRenders: boolean = false): Promise<void> {\n if (update == CardContainerUpdate.NONE) {\n if (updateNoneRenders) {\n this.requestUpdate();// trigger filter without fetch of content on open\n }\n return;\n }\n\n if (update == CardContainerUpdate.FETCH) {\n // if (this.hideElement == false) {\n this.Refetch();\n return;\n // }\n // update = CardContainerUpdate.FILTER;\n }\n\n if (update == CardContainerUpdate.FILTER) {\n this.States.ReadSelectedFiltersFromTargets();// re-read filters from other elements on show\n this.requestUpdate();\n return;\n }\n }\n\n public get CardContainerView_BackButtonOverwrite() {\n return false;\n }\n\n public TriggerCardClick(indexInList: number, ensureInactive: boolean): boolean { // negative index will count backwards!\n if (this.RootLevelCardCount <= indexInList) {\n return false;\n }\n this.cardCreator.TriggerCardClick(indexInList, ensureInactive);\n return true;\n }\n}\n","import {customElement, property} from \"lit/decorators.js\";\nimport {BaseCardContainer} from \"../base/base-card-container\";\nimport {css, unsafeCSS} from \"lit\";\nimport style from \"./card-container.component.sass?inline\";\nimport {CardContainerFilterSelection} from \"../internals\";\nimport {CardData} from \"../../../../models/card-container\";\n\n@customElement(\"fv-card-container\")\nexport class CardContainerComponent extends BaseCardContainer {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor(observeLocales = true) {\n super(observeLocales);\n }\n}\n\n@customElement(\"fv-filter-card-container\")\nexport class FilterCardContainerComponent extends BaseCardContainer {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n\n @property({type: Boolean, reflect: true, attribute: \"handle-filters\"})\n public handleFilters = false\n\n constructor() {\n super();\n this.filter = new CardContainerFilterSelection();\n }\n\n protected override async Select(data: CardData) {\n if (data.click && this.CardData && this.filter) {\n if (this.handleFilters) {\n this.filter.Toggle(data.click[\"level-key\"]);\n }\n await this.TriggerRefreshIfEnabled({ includeHidden: true, awaitFetches: false });\n }\n }\n\n}","import {css, PropertyValueMap, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseCardContainer} from \"../base/base-card-container\";\nimport {\n CardContainerEvents,\n CardData,\n CardDataLevelKey,\n CardDataLevelMap,\n FetchResult,\n} from \"../../../../models/card-container\";\nimport {BaseElement, DhElement} from \"../../base/base.component\";\nimport {CardContainerFilterSelection} from \"../internals\";\nimport style from \"./root-level-selection-card-container.component.sass?inline\";\nimport {CardDataService} from \"../../../../utils/card.data.service\";\n\n\n@customElement(\"fv-root-level-selection-card-container\")\nexport class RootLevelSelectionCardContainerComponent extends BaseCardContainer {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: Boolean, reflect: true, attribute: \"do-not-fill-filter-from-next-level\"})\n public doNotFillFilterFromNextLevel = false;\n\n @property({type: Boolean, reflect: true, attribute: \"allow-app-connection-click\"})\n public allowAppConnectionClick = false;\n\n @property({\n reflect: true,\n attribute: \"prevent-app-connection-click\",\n converter: {\n fromAttribute: (value: string | null): boolean | string[] => {\n if (value === null || value === \"false\") return false;\n if (value === \"\" || value === \"true\") return true;\n try {\n return JSON.parse(value) as string[];\n } catch {\n return false;\n }\n },\n toAttribute: (value: boolean | string[]): string | null => {\n if (typeof value === \"boolean\") return value ? \"\" : null;\n return JSON.stringify(value);\n }\n }\n })\n public preventAppConnectionClick: boolean | string[] = this.allowAppConnectionClick;\n\n @property({type: Boolean, reflect: true, attribute: \"skip-on-single-entry\"})\n public skipOnSingleEntry = false;\n\n @property({type: Boolean, reflect: true, attribute: \"hide-active-root\"})\n public hideActiveRootLevel = false;\n\n @property({type: Boolean, reflect: true, attribute: \"reset-active-root-on-filter-reset\"})\n public resetActiveRootOnFilterReset = false;\n\n @property({type: String, reflect: true, attribute: \"active-root-option\"})\n private activeRootOption: CardDataLevelKey = \"\";\n\n @property({type: Boolean, reflect: true, attribute: \"set-filter-from-root-level-selection\"})\n setFilterFromRootLevelSelection = false;\n\n private get ActiveRootOption() {\n return this.activeRootOption;\n }\n\n private set ActiveRootOption(option: CardDataLevelKey) {\n this.activeRootOption = option;\n this.requestUpdate();\n }\n\n\n private resolvePreventAppConnectionClick(levelKey: CardDataLevelKey): boolean {\n if(this.allowAppConnectionClick) {\n return false;\n }\n if (Array.isArray(this.preventAppConnectionClick)) {\n return (this.preventAppConnectionClick as string[]).includes(levelKey.toString());\n }\n return !(this.preventAppConnectionClick as boolean);\n }\n\n protected override async Select(data: CardData) {\n if (data.click && this.CardData && this.filter) {\n const previousLevelKey: CardDataLevelKey = data.click[\"previous-level-key\"];\n const levelKey: CardDataLevelKey = data.click[\"level-key\"];\n const nextLevelKey: CardDataLevelKey = data.click[\"next-level-key\"];\n\n this.States.PreventAppConnectionClick = this.resolvePreventAppConnectionClick(levelKey);\n\n if (levelKey == this.Settings.Fetch[\"root-level\"] || (this.Settings.Fetch[\"root-level\"] === previousLevelKey) && this.setFilterFromRootLevelSelection) {\n if (this.CardData && this.CardData.size < 2) {\n return;\n }\n const activeChanged = this.ActiveRootOption != nextLevelKey;\n this.filter.Reset(true, this.Context);\n this.ActiveRootOption = activeChanged ? nextLevelKey : \"\";\n\n if (activeChanged) {\n if(this.setFilterFromRootLevelSelection){\n this.filter.Add(levelKey);\n }\n if (!this.doNotFillFilterFromNextLevel) {\n const levelToPushIntoSelectionResultFilter = this.CardData.get(nextLevelKey);\n if (levelToPushIntoSelectionResultFilter) {\n for (const card of levelToPushIntoSelectionResultFilter.cards) {\n if (card.click) {\n this.filter.Add(card.click[\"level-key\"]);\n }\n }\n }\n }\n }\n await this.TriggerRefreshIfEnabled({includeHidden: false});\n } else {\n if (data.disabled == false || data.disabled == undefined) {\n this.filter.Toggle(levelKey);\n // await this.TriggerRefreshIfEnabled({includeHidden: false, awaitFetches: false});\n await this.TriggerRefreshIfEnabled({includeHidden: false, awaitFetches: true});\n }\n }\n }\n }\n\n private async PurgeDisabledFromSelectionResultFilter(): Promise<void> {\n await CardDataService.WaitForAllCardContainerFetchPromises();\n this.CheckFetchPromise();\n const filteredLevels = this.CardData;\n if (filteredLevels && this.filter) {\n for (const level of filteredLevels) {\n for (const card of level[1].cards) {\n if (card.disabled && card.click && card.click[\"level-key\"]) {\n this.filter.Remove(card.click[\"level-key\"]);\n }\n }\n }\n }\n }\n\n\n private skipped = false;\n private TriggerSingleEntrySkipPromise: Promise<void> | undefined = undefined;\n\n private async PerformSingleEntrySkip(): Promise<void> {\n if (this.skipOnSingleEntry) {\n if (!this.skipped) {\n if (this.CardData?.size == 1) {\n const level = this.CardData.get(this.Settings.Fetch[\"root-level\"] as CardDataLevelKey);\n if (level?.cards.length == 1) {\n await CardDataService.WaitForAllCardContainerFetchPromises();\n this.skipped = true;\n\n const onlyKey = level.cards[0].click?.[\"level-key\"];\n if (onlyKey !== undefined && this.filter?.Contains(onlyKey)) {\n return; // already selected — auto-click would Toggle it OFF\n }\n\n const element = this.cardCreator.Elements.at(0);\n element?.click();\n await CardDataService.WaitForAllCardContainerFetchPromises();\n }\n }\n }\n }\n }\n\n private async TriggerSingleEntrySkip(): Promise<void> {\n if (this.TriggerSingleEntrySkipPromise != undefined) {\n await this.TriggerSingleEntrySkipPromise;\n }\n\n if (!this.skipped) {\n this.TriggerSingleEntrySkipPromise = this.PerformSingleEntrySkip();\n }\n await this.TriggerSingleEntrySkipPromise;\n this.TriggerSingleEntrySkipPromise = undefined;\n }\n\n public async ReTriggerSingleEntrySkip() {\n this.skipped = false;\n this.requestUpdate();\n }\n\n constructor() {\n super();\n\n this.filter = new CardContainerFilterSelection();\n this.States.PreventAppConnectionClick = !Array.isArray(this.preventAppConnectionClick) && !(this.preventAppConnectionClick as boolean);\n\n this.addEventListener(CardContainerEvents.ResetFilter, () => {\n if (this.resetActiveRootOnFilterReset) this.activeRootOption = \"\";\n });\n\n this.addEventListener(CardContainerEvents.CardContainerPostFill, () => {\n const rootLevelKey = this.Settings.Fetch[\"root-level\"];\n const levels = this.renderRoot.querySelectorAll(\"[level]\");\n levels.forEach(level => {\n const levelKey = level.getAttribute(\"level\");\n if (levelKey == rootLevelKey) {\n if (this.activeRootOption !== levelKey && this.hideActiveRootLevel) {\n (level as DhElement).hideElement = this.ActiveRootOption != \"\";\n }\n } else {\n (level as DhElement).hideElement = levelKey != this.ActiveRootOption;\n }\n });\n\n this.PurgeDisabledFromSelectionResultFilter().then(async () => {\n await this.TriggerSingleEntrySkip();\n });\n });\n }\n\n protected CreateCards(result: FetchResult): CardDataLevelMap {\n const levels = super.CreateCards(result);\n if (levels.size < 2) {\n return levels;\n }\n\n const root = levels.get(this.settings.Fetch[\"root-level\"]);\n if (root == undefined) return levels;\n for (const card of root.cards) {\n if (card.click == undefined) continue;\n if (card.click[\"next-level-key\"] == this.ActiveRootOption) {\n card.active = true;\n }\n }\n return levels;\n }\n\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.updated(_changedProperties);\n if (!Array.isArray(this.preventAppConnectionClick)) {\n this.States.PreventAppConnectionClick = !(this.preventAppConnectionClick as boolean);// update PreventAppConnectionClick on attribute changes\n }\n }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseCardContainer } from \"../base/base-card-container\";\nimport {BaseElement, DhElement, IBaseElement} from \"../../base/base.component\";\nimport { BaseCard, CardClick, CardClickedEvent } from \"../../cards/base/base.card\";\nimport { CardContainerEvents, CardDataLevelKey, FilterSelectionStrategy } from \"../../../../models/card-container\";\nimport { ComponentServiceSearchParams } from \"../../../../utils/component.service\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { CardContainerEventContainer } from \"../../../../utils/card-container-event.service\";\nimport { FetchParameters } from \"../../base/async.base.component\";\nimport { CardElementAccordionCreator } from \"../internals\";\nimport { AccordionItemComponent } from \"../../../../components/standard/accordion\";\nimport {EventFactoryService} from \"@dh-software/webui-api\";\nimport {IModuleElement} from \"@dh-software/webui-configuration-parser\";\nimport {LitElement} from \"lit\";\n\n\n@customElement(\"fv-card-accordion-container\")\nexport class CardAccordionContainerComponent extends BaseCardContainer {\n @property({ type: Boolean, reflect: true, attribute: \"last-clicked-is-selection-filter\" })\n public lastClickedIsSelectionFilter = false;\n\n @property({ type: String, reflect: false, attribute: \"overwrite-toggle-container-slot-name\" })\n public overwriteToggleContainerSlotName = \"\";\n\n @property({ type: Array, reflect: false, attribute: \"refresh-targets\" })\n public refreshTargets = new Array<ComponentServiceSearchParams>();\n\n @property({ type: Object, reflect: false, attribute: \"card-containers-to-create\" })\n public cardContainersToCreate: {\n tag: string,\n settings: undefined | FetchParameters,\n \"fetch-parameters\": undefined | FetchParameters,\n \"style-vars\"?: { [styleVar: string]: string },\n modules?: Array<IModuleElement>,\n classes?: Array<string>\n } = {\n tag: \"\",\n settings: undefined,\n \"fetch-parameters\": undefined,\n \"style-vars\": {},\n modules: new Array<IModuleElement>(),\n classes: new Array<string>()\n };\n\n @property({ type: Array, reflect: false, attribute: \"card-accordion-container-queries-to-close-on-open\" })\n public cardContainersToCloseOnOpen = new Array<string>();\n\n @property({ type: Object, reflect: false, attribute: \"card-accordion-events\" })\n public cardAccordionEvents: {\n \"on-close\"?: Array<EventHandlerEvent>,\n \"on-open\"?: Array<EventHandlerEvent>,\n \"on-last-po-loaded\"?: Array<EventHandlerEvent>\n } = {};\n\n @property({ type: String, reflect: false, attribute: \"card-to-open-after-fill\" })\n public cardToOpenAfterFill = \"\";\n private cardToOpenShowedOnce = false;\n\n\n private open: CardDataLevelKey | undefined = undefined;\n public get Open(): CardDataLevelKey | undefined {\n return this.open;\n }\n\n private triggerCloseEvents(clickData: CardClick) {\n if (this.cardAccordionEvents[\"on-close\"] == undefined) return;\n\n this.cardAccordionEvents[\"on-close\"] = CardDataService.PrepareClickedCardEventsData(this.cardAccordionEvents[\"on-close\"], clickData);\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.cardAccordionEvents[\"on-close\"]\n }));\n }\n private triggerOpenEvents(clickData: CardClick) {\n if (this.cardAccordionEvents[\"on-open\"] == undefined) return;\n\n this.cardAccordionEvents[\"on-open\"] = CardDataService.PrepareClickedCardEventsData(this.cardAccordionEvents[\"on-open\"], clickData);\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.cardAccordionEvents[\"on-open\"]\n }));\n }\n\n\n constructor() {\n super();\n this.cardCreator = new CardElementAccordionCreator();\n\n this.addEventListener(\"cardclicked\", async (event: CustomEventInit)=>{\n if (event == undefined) return;\n\n const cardClickEvent = event as CardClickedEvent;\n if (cardClickEvent.target && cardClickEvent.target != this) {\n return; // PH [2024|March|20] - only handle click to own cards...\n }\n\n if (cardClickEvent.detail && cardClickEvent.detail.data && cardClickEvent.detail.data.click && cardClickEvent.detail.data.click[\"level-key\"]) {\n if (this.open == cardClickEvent.detail.data.click[\"level-key\"]) {\n this.open = undefined;\n this.triggerCloseEvents(cardClickEvent.detail.data.click);\n }\n else {\n this.open = event.detail.data.click[\"level-key\"];\n this.triggerOpenEvents(cardClickEvent.detail.data.click);\n }\n }\n\n if (!this.lastClickedIsSelectionFilter) return;\n if (event.detail == undefined) return;\n if (event.detail.data == undefined || event.detail.data.click == undefined || event.detail.data.click[\"level-key\"] == undefined) return;\n if (this.Filter == undefined) return;\n\n const alreadyActive = this.Filter.Filter.includes(event.detail.data.click[\"level-key\"]);\n\n this.Filter.Reset(true, this.Context);\n if (alreadyActive == false) {\n this.Filter.Strategy = FilterSelectionStrategy.OR;\n this.Filter.Add(event.detail.data.click[\"level-key\"]);\n }\n\n this.refreshTargets.forEach(refreshTarget=>{\n CardContainerEventContainer.Refetch(refreshTarget as {\n tag: string,\n query?: string\n });\n });\n });\n\n EventFactoryService.LastPOLoaded.register(() => {\n if (this.cardAccordionEvents[\"on-last-po-loaded\"] != undefined) {\n // this.cardAccordionEvents[\"on-last-po-loaded\"] = CardDataService.PrepareClickedCardEventsData(this.cardAccordionEvents[\"on-last-po-loaded\"], {});\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.cardAccordionEvents[\"on-last-po-loaded\"]\n }));\n }\n });\n\n this.addEventListener(CardContainerEvents.CardContainerPostFill, ()=>{\n this.openItem();\n // setTimeout(() => {}, 100);\n });\n }\n\n protected findContainers(query: string): Array<DhElement> {\n const result = new Array<DhElement>();\n if (this.shadowRoot) {\n const containers = this.shadowRoot.querySelectorAll(query);\n containers.forEach(container=>{\n if (container.parentNode == this.shadowRoot) {\n result.push(container as DhElement);\n }\n });\n }\n return result;\n }\n\n protected updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n }\n\n private async openItem() {\n if (!this.cardToOpenShowedOnce && this.open === undefined && this.cardToOpenAfterFill && this.cardToOpenAfterFill !== \"\") {\n this.open = this.cardToOpenAfterFill;\n this.cardToOpenShowedOnce = true;\n }\n if (this.open && this.cardContainersToCreate.tag.length > 0) {\n const newContainers = this.findContainers(\"fv-accordion.accordion-container\") as Array<AccordionItemComponent>;\n for (const container of newContainers) {\n const item = container.querySelector(\"[level-identifier=\\\"\"+this.open+\"\\\"]\") as AccordionItemComponent;\n if (item) {\n const createdCardContainer = item.querySelector(this.cardContainersToCreate.tag) as BaseCardContainer;\n if (createdCardContainer) {\n await createdCardContainer.CheckFetchPromise();\n await createdCardContainer.updateComplete;\n item.open();\n\n const card = item.querySelector(\"fv-card\") as BaseCard;\n if (card && card.data.click) {\n this.triggerOpenEvents(card.data.click);\n }\n }\n }\n }\n }\n }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { SliderComponent } from \"../../input\";\nimport { PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./card-container-slider-filter.component.sass?inline\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { SliderRange } from \"../../../../define/interface\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { BaseCardContainer } from \"../base/base-card-container\";\nimport {\n CardContainerChildWildcard,\n CardContainerEvents,\n CardContainerResetFilterEventInit,\n FilterSelectionStrategy\n} from \"../../../../models/card-container\";\nimport { CardContainerFilterSelection, CardElementSliderFilterCreator } from \"../internals\";\n\n@customElement(\"fv-card-slider-filter\")\nexport class CardContainerSliderFilterComponent extends BaseCardContainer {\n\n static styles = [\n super.styles || [],\n unsafeCSS(style)\n ];\n\n @property({ type: Array, reflect: true })\n private refreshFilter?: Array<CardContainerChildWildcard>;\n\n @property({ type: Array, reflect: true })\n private refreshExclude?: Array<CardContainerChildWildcard>;\n\n @property({ type: Boolean, reflect: true })\n private refreshHidden?: boolean;\n\n @property({ type: Boolean, reflect: true })\n private refetch?: boolean;\n\n @property({ type: Object, reflect: true, attribute: 'state' })\n private _state?: SliderRange | number\n\n @property({ type: Boolean, reflect: true, attribute: 'use-cards' })\n public useCards = false;\n\n @property({ type: Number, reflect: true, attribute: 'max-entries' })\n public maxEntries = undefined;\n\n @property({ type: String, reflect: true, attribute: 'check-dimensions' })\n public checkDimensions = \"\";\n\n @property({ type: Object, reflect: true, attribute: \"on-filter-events\" })\n public onCardFilterEvents: {\n \"on-empty\"?: Array<EventHandlerEvent>,\n \"over-max\"?: Array<EventHandlerEvent>,\n } = {};\n\n\n @property({type: String, reflect: true, attribute: 'template-id'})\n private templateId: string = \"card_container_dimension_filter\";\n\n private get CardCreator(): CardElementSliderFilterCreator {\n return this.cardCreator as CardElementSliderFilterCreator;\n }\n\n\n constructor() {\n super();\n\n this.filter = new CardContainerFilterSelection();\n this.cardCreator = new CardElementSliderFilterCreator();\n\n this.addEventListener(CardContainerEvents.ResetFilter, (event: CardContainerResetFilterEventInit)=>{\n this._state = undefined;\n this.requestUpdate();\n });\n\n this.addEventListener(CardContainerEvents.CardContainerPostFill, ()=>{\n if (!this.CardCreator.Dimensions || this.CardCreator.Dimensions.length == 0) {\n this.classList.add(\"empty\");\n }\n else {\n this.classList.remove(\"empty\");\n }\n this.checkAllDimensionFilters();\n });\n\n this.addEventListener(\"cardclicked\", ()=>{\n this.CheckFetchPromise().then(()=>{\n this.updateComplete.then(()=>{\n CardDataService.Containers.forEach((container)=>{\n container.Refetch();\n });\n });\n });\n });\n }\n\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n this.refetch = true;\n\n this.addEventListener(\"change\", this.sliderChanged, false);\n super.firstUpdated(_changedProperties);\n }\n\n async sliderChanged(ev: CustomEventInit<{\n value: SliderRange | number,\n range: SliderRange | undefined,\n actionElement?: HTMLElement\n }>) {\n if (ev.detail == undefined) return;\n const { value, range, actionElement } = ev.detail;\n if (!actionElement) {\n await this.setFilterValues(value);\n }\n }\n\n private setFilter(dimensions: number[]) {\n if (this.Filter == undefined) return;\n this.Filter.Reset(false, this.Context);\n for (const dimension of dimensions) {\n this.Filter.Add(dimension);\n }\n this.Filter.Strategy = FilterSelectionStrategy.OR;\n }\n\n private async setFilterValues(range: SliderRange | number) {\n const settings = this.Settings;\n const dimension = settings.Fetch.parameters[\"dimension\"] as string | undefined;\n if (dimension && this.Filter) {\n this.Filter.AdditionalParams = {\n \"filter-type\": \"dimension\",\n \"dimension\": dimension\n };\n }\n let allowed: number[];\n if (typeof range === \"number\") {\n allowed = this.CardCreator.ActiveDimensions.filter(x => x != range).map(x => x);\n }\n else {\n allowed = this.CardCreator.ActiveDimensions.filter(x => !(x < range.min || x > range.max)).map(x => x);\n }\n this.setFilter(allowed);\n this._state = range;\n\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: [{\n id: \"refresh-all-card-containers\",\n data: {\n refetch: this.refetch,\n \"include-hidden\": this.refreshHidden,\n \"selection-result-filter-reset-targets\": this.refreshFilter,\n \"selection-result-filter-reset-excludes\": this.refreshExclude\n }\n }]\n }));\n await this.CheckFetchPromise();\n await this.updateComplete;\n }\n\n // This function disables all filters (width, depth, height) of the same group (slider or card) if the dimension count is greater than the max entries\n private async checkAllDimensionFilters() {\n if (this.maxEntries === undefined) {\n return;\n }\n if (this.checkDimensions === undefined || this.checkDimensions === \"\") {\n return;\n }\n\n await CardDataService.WaitForAllCardContainerFetchPromises();\n const allDimensionFilters = ComponentService.findAll(\"fv-card-slider-filter\", this.checkDimensions) as Array<CardContainerSliderFilterComponent>;\n\n let anyDimensionHasEntries = false;\n for (const filter of allDimensionFilters) {\n anyDimensionHasEntries ||= filter.CardCreator.Dimensions.length > 0;\n if (this.CardCreator.Dimensions.length > this.maxEntries) {\n if (filter.onCardFilterEvents && filter.onCardFilterEvents[\"over-max\"] !== undefined) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: filter.onCardFilterEvents[\"over-max\"]\n }));\n }\n filter.classList.add(\"hidden\");\n }\n }\n\n if (anyDimensionHasEntries === false) {\n for (const filter of allDimensionFilters) {\n if (filter.onCardFilterEvents && filter.onCardFilterEvents[\"on-empty\"] !== undefined) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: filter.onCardFilterEvents[\"on-empty\"]\n }));\n }\n }\n }\n }\n\n public getBaseSliderState(dimensions: number[], activeDimensions: number[]): SliderComponent {\n const slider = new SliderComponent();\n slider.innerHTML = `\n <div class='input-container' slot='min'>\n <fv-label style=\"display: inline\" i18n=\"fv.right.panel.catalogue.dimensions.from\"></fv-label>\n <fv-input style=\"width: 50%; position: relative\" type='number' class='sliderValue'>\n <fv-label style=\"position: absolute; top: -11px; left: 5px; background: white; padding: 0 5px; font-size: 14px\" i18n=\"webcab.Unit\"></fv-label>\n </fv-input>\n </div>\n <div class=\"input-container\" slot='max'>\n <fv-label style=\"display: inline\" i18n=\"fv.right.panel.catalogue.dimensions.to\"></fv-label>\n <fv-input style=\"width: 50%; position: relative\" type='number' class='sliderValue'>\n <fv-label style=\"position: absolute; top: -11px; left: 5px; background: white; padding: 0 5px; font-size: 14px\" i18n=\"webcab.Unit\"></fv-label>\n </fv-input>\n </div>\n `;\n slider.FormatDisplayValueFunction = (value: number): string => {\n return (value / 10).toString();\n };\n slider.Range = {\n min: Math.min(...dimensions),\n max: Math.max(...dimensions)\n };\n if (this._state) {\n slider.Value = this._state;\n }\n else {\n slider.Value = slider.Range;\n }\n // const filter = this.SelectionResultFilter.filter.map(x => +x);\n // if (filter.length == 1) {\n // slider.classList.add(\"fixed\");\n // slider.Value = this._activeDimensions[0];\n // } else if (this._state) {\n // slider.Value = this._state;\n // }\n return slider;\n }\n\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport { BaseCardContainer } from \"../base/base-card-container\";\nimport { EventService, LocaleService } from \"@dh-software/webui-api\";\nimport { CardContainerEvents, CardContainerSpecialInteractionContext, CardContainerUpdate, CardDataLevelKey, FetchResult, UpdateAdditionalDataEventInit } from \"../../../../models/card-container\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { FetchParameters } from \"../../base/async.base.component\";\nimport style from \"./card-container.component.sass?inline\";\nimport addDialogStyle from \"./card-container-add-dialog.container.component.sass?inline\";\nimport { EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { BaseElement } from \"../..//base/base.component\";\n\n@customElement(\"fv-card-container-add-dialog\")\nexport class CardContainerAddDialog extends BaseCardContainer {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`,\n css`${unsafeCSS(addDialogStyle)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"fallback-button-txt\" })\n public fallbackButtonTxt = \"20139\";\n\n @property({ type: Array, reflect: false, attribute: \"displayed-element-type-text\" })\n public displayedElementTypeText: { [type: string]: string } = {};\n \n @property({ type: String, reflect: true, attribute: \"icon\" })\n public icon = \"fv-icon-fa-play\";\n\n @state()\n private _open: boolean | \"prevent\" = false;\n\n\n @query(\".back-button-slot\")\n private backButtonSlot: HTMLSlotElement | undefined;\n\n private set open(state_: boolean) {\n if (this._open == \"prevent\") {\n return;\n }\n this._open = state_;\n\n\n // const hide = this._open == \"prevent\" || this.hideElement ? true || this.currentSpecialInteractionContext == CardContainerSpecialInteractionContext.DISABLED : !state_;\n // for (const backButton of this.openBackButtons) {\n // const found = ComponentService.findAll(backButton.name, backButton.selector);\n // found.forEach((button: BaseElement) => {\n // button.hideElement = hide;\n // });\n // }\n\n if (!this.hideElement && this.currentSpecialInteractionContext == CardContainerSpecialInteractionContext.ENABLED) {// open close events only neeeded when visible!\n if (this._open) {\n if (this.events[\"special-interaction-opened\"]) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.events[\"special-interaction-opened\"]\n }));\n }\n }\n else {\n if (this.events[\"special-interaction-closed\"]) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.events[\"special-interaction-closed\"]\n }));\n }\n }\n }\n\n this.CheckFetchPromise().then(()=>{\n if (this.backButtonSlot) {\n for (const slotted of this.backButtonSlot.assignedElements()) {\n if (slotted instanceof BaseElement) {\n slotted.requestUpdate();\n }\n }\n }\n });\n }\n private get open() : boolean {\n return this._open == \"prevent\" || this._open;\n }\n private toggle() {\n if (this._open == \"prevent\") {\n return;\n }\n this.open = !this.open;\n }\n\n\n constructor(observeLocales = true) {\n super(observeLocales);\n this.states.HandleAppConnectionPlanningSituationState = true;\n }\n\n private currentSpecialInteractionContext: CardContainerSpecialInteractionContext = CardContainerSpecialInteractionContext.NONE;\n private async _setOpenFromInteractionContextLimitations() {\n this.currentSpecialInteractionContext = await CardDataService.CheckSpecialInteractionContext(this.Context);\n switch (this.currentSpecialInteractionContext) {\n case CardContainerSpecialInteractionContext.DISABLED:\n this.open = true;\n break;\n case CardContainerSpecialInteractionContext.ENABLED:\n this.open = false;\n break;\n case CardContainerSpecialInteractionContext.ERROR:\n case CardContainerSpecialInteractionContext.NONE:\n this._open = \"prevent\";\n break;\n default:\n break;\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n // this.addEventListener(\"cardclicked\", ()=>{\n // \tthis.toggle();\n // \tthis._setOpenFromInteractionContextLimitations();\n // });// close after placement\n this.addHideStateUpdatedEventListener((hidden: boolean, parentStateChanged: boolean)=>{\n if (hidden) {\n if (this._open !== \"prevent\") {\n this.open = false;// close on hide!\n }\n return;\n }\n this._setOpenFromInteractionContextLimitations();\n });\n\n this.addEventListener(CardContainerEvents.Back, () => {\n this.open = false;\n });\n }\n\n\n\n protected async Fetch(parameters: FetchParameters): Promise<FetchResult | undefined> {\n await this._setOpenFromInteractionContextLimitations();\n return await super.Fetch(parameters);\n }\n\n\n private renderLevelsSlots(): TemplateResult<1> {\n if (this.CardData == undefined) {\n return html``;\n }\n\n const keys: CardDataLevelKey[] = [];\n for (const card of this.CardData) {\n keys.push(card[0]);\n }\n\n return html`\n ${keys.map((value) => html`<slot name=\"below-button-${value}\"></slot>`)}\n `;\n }\n\n private renderAddButton(result: FetchResult | undefined): TemplateResult<1> {\n this.RefreshCardData(result);\n\n const types: string[] = [];\n if (this.cardData != undefined && this.cardData.size > 0) {\n this.cardData.forEach(card=>{\n if (card.additional && card.additional[\"element-types\"]) {\n types.push(...(card.additional[\"element-types\"] as string[]));\n }\n });\n }\n\n if (types.length < 1 || this.displayedElementTypeText[types[0]] == undefined) {\n const fallbackTxt = LocaleService.translate(this.fallbackButtonTxt, this.fallbackButtonTxt);\n return html`\n <fv-button class=\"add-button\" @click=\"${this.toggle}\">\n <span i18n=\"${this.fallbackButtonTxt}\">${fallbackTxt}</span>\n <span class=\"${this.icon}\"></span>\n </fv-button>\n ${this.renderLevelsSlots()}\n `;\n }\n\n const typeText = this.displayedElementTypeText[types[0]];// only use first type-text\n const txt = LocaleService.translate(typeText, LocaleService.translate(this.fallbackButtonTxt, typeText));\n return html`\n <fv-button class=\"add-button\" @click=\"${this.toggle}\">\n <span i18n=\"${typeText}\">${txt}</span>\n <span class=\"${this.icon}\"></span>\n </fv-button>\n ${this.renderLevelsSlots()}\n `;\n }\n\n protected renderComplete(result: FetchResult | undefined, renderResult: TemplateResult<1> | undefined): TemplateResult<1> {\n if (!this.open) {\n const refreshCardDataResult = this.RefreshCardData(result);// ensure card data is filtered!\n if (this.LastRenderResult && refreshCardDataResult == \"unchanged\") {\n return this.LastRenderResult;// skip element creation, if cards did not change\n }\n return this.renderAddButton(result);\n }\n\n if (this.open && this.currentSpecialInteractionContext == CardContainerSpecialInteractionContext.ENABLED) {\n return html`\n <slot name=\"back-button\" class=\"back-button-slot\"></slot>\n ${super.renderComplete(result, renderResult)}\n `;\n }\n return super.renderComplete(result, renderResult);\n }\n\n public async CheckUpdate(update: CardContainerUpdate, updateNoneRenders: boolean = false): Promise<void> {\n await super.CheckUpdate(update, updateNoneRenders);\n if (update == CardContainerUpdate.FILTER) {\n await this._setOpenFromInteractionContextLimitations();\n }\n }\n\n public get CardContainerView_BackButtonOverwrite() {\n return this.open && this.currentSpecialInteractionContext != CardContainerSpecialInteractionContext.DISABLED;\n }\n}","import {css, html, nothing, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./card-container-back-button.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement, UpdatedEvent } from \"../../base/base.component\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { BaseCardContainer } from \"../base/base-card-container\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { BaseCardDataAppConnection } from \"../../../../utils/card-app-connections/base.card.app.connection\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { UtilService } from \"../../../../utils/util.service\";\nimport { CardContainerBackEvent } from \"../../../../models/card-container\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport {ifDefined} from \"lit/directives/if-defined.js\";\nimport { CardContainerViewComponent } from \"../views/card-container-view.component\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\n\n@customElement(\"fv-card-container-back-button\")\nexport class CardContainerBackButtonComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n\n\n @property({ type: String, reflect: true })\n public icon = \"\";\n @property({ type: String, reflect: true })\n public txt = \"\"\n @property({ type: Array, reflect: true, attribute: \"targets\" })\n public targets: Array<{ tag: string, query: string, \"hidden-prevents-back\": boolean | undefined, \"partial-hide-limit-back-to-last\": boolean | undefined, \"txt-src-prio\": number | undefined, \"prevent-back\": boolean | undefined }> = new Array<{ tag: string, query: string, \"hidden-prevents-back\": boolean | undefined, \"partial-hide-limit-back-to-last\": boolean | undefined, \"txt-src-prio\": number | undefined, \"prevent-back\": boolean | undefined }>();\n @property({ type: Object, reflect: true, attribute: \"events\" })\n public events: {\n hide?: Array<EventHandlerEvent>,\n show?: Array<EventHandlerEvent>\n } = {};\n @property({ type: Array, reflect: true, attribute: \"post-click-events\" })\n public postClickEvents = new Array<EventHandlerEvent>();\n\n @property({ type: Boolean, reflect: true, attribute: \"show-allways\" })\n public showAllways = false;\n\n @property({ type: String, reflect: false, attribute: \"button-class\" })\n buttonClass: string = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"text-in-button\" })\n public textInButton = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-if-target-single-entry\" })\n public hideIfTargetSingleEntry = false;\n\n @property({type: Object, reflect: true, attribute: \"button-style-vars\"})\n public buttonStyleVars: {[key: string]: string } = {};\n\n public get Targets(): Array<{element: BaseCardContainer | CardContainerViewComponent, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number | undefined, \"prevent-back\": boolean }> {\n const targets = new Array<{element: BaseCardContainer | CardContainerViewComponent, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number | undefined, \"prevent-back\": boolean }>();\n for (const target of this.targets) {\n const components = ComponentService.findAll(target.tag, target.query) as Array<BaseCardContainer>;\n for (const component of components) {\n targets.push({\n element: component,\n \"hidden-prevents-back\": target[\"hidden-prevents-back\"] == undefined ? false : target[\"hidden-prevents-back\"],\n \"partial-hide-limit-back-to-last\": target[\"partial-hide-limit-back-to-last\"] == undefined ? false : target[\"partial-hide-limit-back-to-last\"],\n \"txt-src-prio\": target[\"txt-src-prio\"],\n \"prevent-back\": target[\"prevent-back\"] == undefined ? false : target[\"prevent-back\"]\n });\n }\n }\n return targets;\n }\n public get TextSourceTarget(): BaseCardContainer | undefined {\n const targets = this.Targets;\n\n let lowestPrioElement: {element: BaseCardContainer, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number } | undefined = undefined;\n for (const target of targets) {\n if (target[\"txt-src-prio\"] != undefined) {\n if (lowestPrioElement == undefined) {\n lowestPrioElement = target as {element: BaseCardContainer, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number };\n continue;\n }\n\n if (lowestPrioElement[\"txt-src-prio\"] > target[\"txt-src-prio\"]) {\n lowestPrioElement = target as {element: BaseCardContainer, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number };\n }\n }\n }\n return lowestPrioElement ? lowestPrioElement.element : undefined;\n }\n public get Text(): string {\n let toTranslate = UtilService.ncrToUTF8(this.txt);\n const txtSrcTarget = this.TextSourceTarget;\n if (txtSrcTarget) {\n toTranslate = UtilService.ncrToUTF8(txtSrcTarget.AdditionalData.Get(\"back-button-txt\", this.txt) as string);\n }\n return LocaleService.translate(toTranslate, toTranslate);\n }\n\n private getTargetsCardCount(): number {\n let count = 0;\n for (const target of this.Targets) {\n count += target.element.RootLevelCardCount;\n }\n return count;\n }\n private async waitForTargets(): Promise<void> {\n for (const target of this.Targets) {\n await target.element.CheckFetchPromise();\n await target.element.updateComplete;\n }\n return Promise.resolve();\n }\n\n constructor() {\n super();\n\n this.addEventListener(\"click\", ()=>{\n this.Trigger();\n });\n\n this.addHideStateUpdatedEventListener((value: boolean)=>{\n if (this.hideIfTargetSingleEntry && value == false) {\n this.waitForTargets().then(()=>{\n const value = this.getTargetsCardCount();\n if (value == 1) {\n this.hideElement = true;\n }\n });\n }\n\n\n if (value) {\n if (this.events.hide) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.events.hide\n }));\n }\n }\n else {\n if (this.events.show) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.events.show\n }));\n }\n }\n });\n }\n\n\n protected async Trigger() {\n await CardDataService.WaitForAllCardContainerFetchPromises();\n\n if (!this.showAllways) {\n this.hideElement = true;\n }\n\n let hiddenCount = 0;\n let last: BaseCardContainer | CardContainerViewComponent | undefined = undefined;\n for (const target of this.Targets) {\n if (target[\"prevent-back\"] == true) {\n continue;\n }\n\n if (target.element.hideElement) {\n ++hiddenCount;\n if (target[\"partial-hide-limit-back-to-last\"]) {\n last = target.element;\n }\n }\n }\n\n if (last == undefined || hiddenCount == this.Targets.length) {\n for (const target of this.Targets) {\n if (target[\"prevent-back\"] == true) {\n continue;\n }\n\n if (target[\"hidden-prevents-back\"] && target.element.hideElement) {\n continue;\n }\n target.element.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n }\n }\n else {\n last.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n }\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.postClickEvents\n }));\n }\n\n protected update(changedProperties: PropertyValues) {\n super.update(changedProperties);\n if(this.showAllways) {\n this.hideElement = false;\n }\n }\n\n render(): TemplateResult<1> {\n const label = html`<fv-label class=\"custom-size\">${this.Text}</fv-label>`;\n return html`\n <fv-button icon=\"${this.icon}\" class=\"${ifDefined(this.buttonClass)}\" style=${styleMap(this.buttonStyleVars)}}>\n ${this.textInButton ? label : nothing}\n </fv-button>\n <slot name=\"before\"></slot>\n ${this.textInButton ? nothing : label}\n <slot></slot>\n `;\n }\n\n\n public static HideStateUpdate() {\n const backButtons = ComponentService.findAll(\"fv-card-container-back-button\") as Array<CardContainerBackButtonComponent>;\n for (const backButton of backButtons) {\n const targets = backButton.Targets;\n if (targets == undefined || targets.length < 1) {\n backButton.hideElement = true;// hide unconnected\n console.error(\"card-container-back-button unconnected!\", backButton, targets);\n continue;\n }\n\n let show = false;\n for (const target of targets) {\n if (target.element.AdditionalData.Get(\"show-back-button\", false)) {\n show = true;\n break;\n }\n }\n\n if (backButton.hideIfTargetSingleEntry && show) {\n const value = backButton.getTargetsCardCount();\n if (value == 1) {\n show = false;\n }\n }\n\n backButton.hideElement = !show;\n backButton.requestUpdate();\n }\n }\n}\n","import { BaseCardContainer } from \"../base/base-card-container\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { CardData } from \"../../../../models/card-container\";\nimport { CardContainerBackButtonComponent } from \"../controls/card-container-back-button.component\";\nimport { CardContainerEvents, CardDataLevel, CardDataLevelKey, CardDataLevelMap, FetchResult, FilterSelectionData, FilterSelectionStrategy, UpdateAdditionalDataEventInit } from \"../../../../models/card-container\";\nimport { CardContainerFilterSelection } from \"../internals\";\n\n\nclass LevelPageCardContainerSelectionStack {\n private _history: Array<CardDataLevelKey>;\n private _lastSelected = false;\n\n constructor(\n root: CardDataLevelKey,\n private readonly _onChange: (selected: CardDataLevelKey, history: ReadonlyArray<CardDataLevelKey>) => Promise<void>\n ) {\n this._history = [root];\n }\n\n // --- Root ---\n public get root(): CardDataLevelKey { return this._history[0]; }\n public set root(value: CardDataLevelKey) { this._history[0] = value; }\n\n // --- Currently active level (top of history) ---\n public get selected(): CardDataLevelKey { return this._history[this._history.length - 1]; }\n public set selected(key: CardDataLevelKey) {\n const existingIndex = this._history.indexOf(key);\n if (existingIndex !== -1) {\n // Already in history: trim everything after it (backward navigation or revisit)\n this._history = this._history.slice(0, existingIndex + 1);\n } else {\n // New level: push forward\n this._history = [...this._history, key];\n }\n this._onChange(this.selected, this._history);\n }\n\n // --- Leaf-selection marker ---\n public get lastSelected(): boolean { return this._lastSelected; }\n public set lastSelected(value: boolean) { this._lastSelected = value; }\n\n // --- True when sitting at the root level ---\n public get atRoot(): boolean { return this._history.length === 1; }\n\n /**\n * Step back exactly one level.\n * If in lastSelected state (leaf was picked, container is hidden), clear that\n * state and re-show the current level so the user can change their selection.\n * Otherwise pop one entry off the history. Does nothing when already at root.\n */\n public back(): void {\n if (this._lastSelected) {\n this._lastSelected = false;\n this._onChange(this.selected, this._history);\n return;\n }\n if (this._history.length > 1) {\n this._history = this._history.slice(0, -1);\n this._onChange(this.selected, this._history);\n }\n }\n\n /** Jump directly to the root level, clearing any intermediate navigation. */\n public backToRoot(): void {\n this._lastSelected = false;\n this._history = [this.root];\n this._onChange(this.selected, this._history);\n }\n\n /**\n * Replaces the top of history with `key`, leaving the parent in place. Used for the auto-skip\n * path so the user's back-step returns to the level they were on **before** the skip, instead\n * of stopping at the one-card level they never really saw. Falls back to push when at root.\n */\n public replaceHistory(key: CardDataLevelKey): void {\n if (this._history.length > 1) {\n this._history = [...this._history.slice(0, -1), key];\n } else {\n this._history = [...this._history, key];\n }\n this._onChange(this.selected, this._history);\n }\n\n /** Build a filter descriptor from the current history (root is excluded). */\n public parseToFilter(strategy: FilterSelectionStrategy): FilterSelectionData {\n return {\n filter: this._history.slice(1),\n strategy,\n priority: undefined\n };\n }\n}\n\n\n@customElement(\"fv-level-pages-card-container\")\nexport class LevelPageCardContainerComponent extends BaseCardContainer {\n @property({ type: Object, reflect: true, attribute: \"level-events\" })\n public levelEvents: { [key: CardDataLevelKey]: Array<EventHandlerEvent> } = {};\n\n @property({ type: Array, reflect: true, attribute: \"selection-change-events\" })\n public selectionChangeEvents: Array<EventHandlerEvent> = [];\n\n @property({ type: Boolean, reflect: true, attribute: \"level-event-prevents-selection-change\" })\n public levelEventPreventsSelectionChange = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"manage-back-button-hide-state\" })\n public manageBackButtonHideState = true;\n\n /**\n * When true, the back button jumps directly to root instead of stepping\n * through each level one by one.\n */\n @property({ type: Boolean, reflect: true, attribute: \"jump-to-root-on-back\" })\n public jumpToRootOnBack = false;\n\n /**\n * When true, a level whose only card has a `next-level-key` auto-advances after fill — the\n * user never sees a \"pick the one option\" interstitial. Leaves (cards with no `next-level-key`)\n * are never auto-selected. Suppressed for one render after a Back action so back-stepping\n * doesn't immediately re-skip forward.\n */\n @property({ type: Boolean, reflect: true, attribute: \"skip-on-single-entry\" })\n public skipOnSingleEntry = false;\n\n /**\n * When true, clicking a leaf card (no `next-level-key`) does NOT mark `lastSelected` and does\n * NOT hide this container. Use this when the leaf click should *only* fire the app-connection's\n * `Click` (e.g. apply a material) and the container should stay visible so the user can keep\n * picking. Default `false` preserves the legacy behaviour (leaf click hides the container).\n */\n @property({ type: Boolean, reflect: true, attribute: \"block-if-next-empty\" })\n public blockIfNextEmpty = false;\n\n private _suppressSingleEntrySkip = false;\n\n // --- current-level attribute (reflects active level; settable externally) ---\n // The backing field is written directly by _onChange so the setter is only\n // ever reached from outside the component — no re-entrancy guard needed.\n private _currentLevel: CardDataLevelKey = \"\";\n\n @property({ type: String, reflect: true, attribute: \"current-level\" })\n public get currentLevel(): CardDataLevelKey { return this._currentLevel; }\n public set currentLevel(value: CardDataLevelKey) {\n const old = this._currentLevel;\n this._currentLevel = value;\n this.requestUpdate(\"currentLevel\", old);\n // Drive the selection stack whenever an external caller sets this\n // property. _onChange always writes _currentLevel directly (below)\n // so this path is never triggered recursively.\n if (value && this.selection && value !== this.selection.selected) {\n this.selection.selected = value;\n }\n }\n\n // --- Back-navigation guard ---\n // Set to true while back()/backToRoot() is executing so _onChange can\n // skip selectionChangeEvents / levelEvents that were designed for forward\n // navigation and would otherwise mis-navigate back to root.\n private _isBackNavigation = false;\n\n // --- Selection stack ---\n private readonly selection = new LevelPageCardContainerSelectionStack(\n \"root\",\n async (selected, history) => {\n // Capture direction before any async yield (the Back handler resets\n // _isBackNavigation synchronously once selection.back() returns).\n const isBackNavigation = this._isBackNavigation;\n\n // Reflect the new level to the DOM attribute by writing the backing\n // field directly. Going through the setter would re-drive\n // selection.selected and cause infinite recursion.\n const old = this._currentLevel;\n this._currentLevel = selected;\n this.requestUpdate(\"currentLevel\", old);\n\n // One update per selection change — filter + render.\n this.triggerUpdateRequest();\n\n // On backward navigation fire level events (e.g. \"root\" / \"!root\")\n // but skip selectionChangeEvents — those are wired for forward\n // card-click navigation and can accidentally reset the level to root.\n if (isBackNavigation) {\n await this.dispatchLevelEvents(selected, history);\n return;\n }\n\n // Dispatch configured events (forward navigation only).\n if (this.levelEventPreventsSelectionChange) {\n if (await this.dispatchLevelEvents(selected, history)) return;\n }\n if (this.selectionChangeEvents.length > 0) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.selectionChangeEvents\n }));\n }\n await this.dispatchLevelEvents(selected, history);\n }\n );\n\n // --- Helpers ---\n public get Selected(): CardDataLevelKey { return this.selection.selected; }\n public get SelectionRoot(): CardDataLevelKey { return this.selection.root; }\n public get SelectedLevel(): CardDataLevel | undefined { return this.CardData?.get(this.Selected); }\n public get LastClicked(): CardData | undefined { return this.lastClickedCard; }\n\n /**\n * Collect EventHandlerEvents for the given selected level from levelEvents.\n * Supports exact key match, negation prefix \"!key\", and pipe-separated\n * multi-level tail match \"parent|child\".\n */\n private collectLevelEvents(\n selected: CardDataLevelKey,\n history: ReadonlyArray<CardDataLevelKey>\n ): Array<EventHandlerEvent> {\n const isRoot = selected === this.selection.root;\n const result: Array<EventHandlerEvent> = [];\n for (const key of Object.keys(this.levelEvents)) {\n // \"root\" fires when the selected level is the root level\n if (key === \"root\") {\n if (isRoot) result.push(...this.levelEvents[key]);\n continue;\n }\n // \"!root\" fires for every level that is NOT the root level\n if (key === \"!root\") {\n if (!isRoot) result.push(...this.levelEvents[key]);\n continue;\n }\n // General negation: \"!foo\" fires for every level that is NOT \"foo\"\n if (key.startsWith(\"!\")) {\n if (selected !== key.slice(1)) result.push(...this.levelEvents[key]);\n continue;\n }\n const parts = key.split(\"|\");\n if (parts.length === 1) {\n if (key === selected) result.push(...this.levelEvents[key]);\n continue;\n }\n // Multi-level tail match: \"cat1|subcat1\" fires when the last N history\n // entries equal the key parts (root is never part of the match window).\n const startIndex = history.length - parts.length;\n if (startIndex > 0 && parts.every((p, i) => p === history[startIndex + i])) {\n result.push(...this.levelEvents[key]);\n }\n }\n return result;\n }\n\n private async dispatchLevelEvents(\n selected: CardDataLevelKey,\n history: ReadonlyArray<CardDataLevelKey>\n ): Promise<boolean> {\n const events = this.collectLevelEvents(selected, history);\n if (events.length > 0) {\n window.dispatchEvent(new EventHandlerDispatchEvent({ async: false, events }));\n }\n CardContainerBackButtonComponent.HideStateUpdate();\n return events.length > 0;\n }\n\n private _showBackButton(): boolean {\n if (!this.Selected || this.Selected === this.SelectionRoot) return false;\n if (this.selection.lastSelected) return true; // leaf selected, container hidden\n return !this.hideElement;\n }\n\n /**\n * Lets an enclosing fv-card-container-view delegate Back to us while we still have internal\n * levels to pop, instead of closing the side view. False at our root, so the view then handles\n * Back itself (closing the side view / navigating its own levels).\n */\n public override get CardContainerView_BackButtonOverwrite(): boolean {\n return this._showBackButton();\n }\n\n private _getBackButtonText(): string {\n const lvl = this.SelectedLevel;\n if (lvl?.title?.length) return lvl.title;\n if (this.selection.lastSelected && this.LastClicked?.txt) {\n const txt = this.LastClicked.txt as Record<string, string>;\n return txt[\"title\"] ?? Object.values(txt)[0] ?? \"\";\n }\n return \"\";\n }\n\n protected CreateCards(result: FetchResult): CardDataLevelMap {\n const baseFiltered = super.CreateCards(result);\n const newResult = new Map<CardDataLevelKey, CardDataLevel>();\n const active = baseFiltered.get(this.selection.selected);\n if (active) newResult.set(this.selection.selected, active);\n return newResult;\n }\n\n constructor() {\n super();\n\n this.filter = new CardContainerFilterSelection();\n\n this.addEventListener(\"cardclicked\", async (e: CustomEventInit<{ data: CardData }>) => {\n if (!e.detail?.data?.click) return;\n this.lastClickedCard = e.detail.data;\n\n let nextLevelKey = e.detail.data.click[\"next-level-key\"] as CardDataLevelKey;\n if (typeof nextLevelKey === \"number\") nextLevelKey = String(nextLevelKey);\n\n if (nextLevelKey != null && nextLevelKey.toString().length > 0) {\n // Forward navigation: push the next level onto the stack.\n // onChange fires → triggerUpdateRequest() + level events.\n this.selection.lastSelected = false;\n this.selection.selected = nextLevelKey;\n } else if (e.detail.data.click[\"level-key\"] != null) {\n if (this.blockIfNextEmpty) {\n return;\n }\n this.selection.lastSelected = true;\n this.triggerUpdateRequest(true);\n }\n });\n\n this.addEventListener(CardContainerEvents.UpdateAdditionalData, (event: UpdateAdditionalDataEventInit) => {\n if (!event.detail) {\n return;\n }\n const key = event.detail.key;\n if (key == undefined) {\n return;\n }\n\n if (key === \"show-back-button\" && this.manageBackButtonHideState) {\n this.AdditionalData.Set(key, this._showBackButton());\n }\n if (key === \"back-button-txt\") {\n const txt = this._getBackButtonText();\n if (txt.length > 0) this.AdditionalData.Set(key, txt);\n }\n\n if (event.detail[\"post-event\"]) {\n event.detail[\"post-event\"]();\n }\n });\n\n this.addEventListener(CardContainerEvents.Back, (e: Event) => {\n // Stop the bubbling Back event from reaching ancestor card containers.\n // CardContainerBackEvent has bubbles:true, so without this a parent\n // container would also handle the event and navigate back a second time\n // (producing a double _onChange call that resets the level to root).\n e.stopPropagation();\n\n this._isBackNavigation = true;\n // Don't let skip-on-single-entry immediately re-advance into the level we just\n // backed out of. Consumed by the next PostFill.\n this._suppressSingleEntrySkip = true;\n if (this.jumpToRootOnBack) {\n this.selection.backToRoot();\n } else {\n this.selection.back();\n }\n this._isBackNavigation = false;\n this.hideElement = false;\n\n // Back-button text fix: the back button re-renders (and reads our `back-button-txt`)\n // BEFORE this handler runs — Trigger() sets its hideElement up front, scheduling its\n // update first. At that point our `cardData` still holds the level we're leaving, so\n // `SelectedLevel` for the level we returned to is undefined. `cardData` is only rebuilt\n // during THIS container's next render (filter-only update, no refetch → synchronous in\n // renderComplete). Re-read the button text once that render has committed.\n this.updateComplete.then(() => CardContainerBackButtonComponent.HideStateUpdate());\n });\n\n this.addEventListener(CardContainerEvents.CardContainerPreFill, () => {\n this.selection.root = this.Settings.Fetch[\"root-level\"];\n });\n\n this.addEventListener(CardContainerEvents.CardContainerPostFill, () => {\n this.performSingleEntrySkip();\n });\n }\n\n private performSingleEntrySkip(): void {\n if (!this.skipOnSingleEntry) {\n return;\n }\n if (this._suppressSingleEntrySkip) {\n this._suppressSingleEntrySkip = false;\n return;\n }\n if (this.selection.lastSelected) {\n return;\n }\n\n const active = this.SelectedLevel;\n if (!active || active.cards.length !== 1) {\n return;\n }\n\n let nextKey = active.cards[0].click?.[\"next-level-key\"] as CardDataLevelKey | undefined;\n if (typeof nextKey === \"number\") nextKey = String(nextKey);\n if (typeof nextKey !== \"string\" || nextKey.length === 0) {\n return; // leaf — don't auto-pick\n }\n\n // Replace (don't push) so the auto-skipped level vanishes from history — Back from the\n // destination jumps straight to the parent, no double-back through the level the user\n // never saw. Chains naturally for repeated single-entry levels.\n this.selection.lastSelected = false;\n this.selection.replaceHistory(nextKey);\n }\n\n private triggerUpdateRequest(hide = false) {\n this.hideElement = hide;\n if (this.filter == undefined) return;\n this.filter.Set(this.selection.parseToFilter(this.Settings.Filter[\"selection-strategy\"]));\n this.requestUpdate();\n }\n}\n","import { customElement, property, state } from \"lit/decorators.js\";\r\nimport { css, html, nothing, TemplateResult, unsafeCSS } from \"lit\";\r\nimport { CardContainerContext, CardDataLevel, CardDataLevelKey, CardDataLevelMap, FetchResult, CardData, CardContainerEvents } from \"../../../../models/card-container\";\r\nimport { BaseCardContainer, RefreshCardDataResult } from \"../base/base-card-container\";\r\nimport { CardElementCreator } from \"../internals\";\r\nimport style from \"./multi-level-card-container.component.sass?inline\";\r\nimport { IProperty } from \"@dh-software/webui-configuration-parser\";\r\n\r\nexport class MultiCardElementCreator extends CardElementCreator\r\n{\r\n\r\n\tpublic CreateRenderedCards(levels: CardDataLevelMap, context: CardContainerContext, container: BaseCardContainer): TemplateResult<1> | undefined {\r\n\t\tif(!(container instanceof MultiLevelCardContainerComponent)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.createDisplayElements(levels, context, container);\r\n\t\tconst allElements = this.Elements;\r\n\t\tconst level1Elements = allElements.filter(elem => elem.getAttribute('level') === 'LEVEL1');\r\n\t\tconst otherElements = allElements.filter(elem => elem.getAttribute('level') !== 'LEVEL1');\r\n\r\n\t\tlet elementsToRender: HTMLElement[];\r\n\t\t\r\n\t\tif (level1Elements.length > 0) {\r\n\t\t\tif (container.currentLevelKey === null) {\r\n\t\t\t\telementsToRender = level1Elements;\r\n\t\t\t} else {\r\n\t\t\t\telementsToRender = otherElements.filter(elem => elem.getAttribute('level') === container.currentLevelKey);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\telementsToRender = otherElements;\r\n\t\t}\r\n\t\t\r\n\t\tif(!container.isInsideGroup() && container.currentLevelKey === null && level1Elements.length != 0) {\r\n\t\t\telementsToRender.forEach(x => {\r\n\t\t\t\tx.style.setProperty(\"--icon-background-size\", \"contain\")\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tconst N = elementsToRender.length;\r\n\t\tif (N === 0) return html``;\r\n\r\n\t\tcontainer.applyAspectRatio(elementsToRender);\r\n\r\n\t\tconst minWidth = 245;\r\n\t\tlet M = Math.max(1, Math.floor(container.hostWidth / minWidth));\r\n\t\tM = Math.min(M, N);\r\n\r\n\t\t// Skip rendering if we don't have a valid width yet to avoid flickering\r\n\t\tif (container.hostWidth === 0 && container.isConnected) {\r\n\t\t\treturn html`<slot class=\"loader-slot\" name=\"loader\"></slot>`;\r\n\t\t}\r\n\r\n\t\tconst groups: HTMLElement[][] = Array.from({ length: M }, () => []);\r\n\t\tfor (let i = 0; i < N; i++) {\r\n\t\t\tconst groupIndex = Math.min(i, M - 1); // Group extra elements into the last (rightmost) column\r\n\t\t\tconst elem = elementsToRender[i];\r\n\t\t\telem.style.setProperty(\"--flex-container-overflow\", \"visible\");\r\n\t\t\telem.style.setProperty(\"height\", \"auto\");\r\n\t\t\tgroups[groupIndex].push(elem);\r\n\t\t}\r\n\r\n\t\treturn html`\r\n\t\t\t${groups.map((group, groupIndex) => html`\r\n\t\t\t\t<fv-flex-container class=\"levels-container\">\r\n\t\t\t\t\t${group.map((elem, elemIndex) => html`\r\n\t\t\t\t\t\t${container.getTitleWithLevelKey(elem.getAttribute('level'))}\r\n\t\t\t\t\t\t${elem}\r\n\t\t\t\t\t\t${elemIndex < group.length - 1 ? html`\r\n\t\t\t\t\t\t\t<div class=\"level-divider-container horizontal\">\r\n\t\t\t\t\t\t\t\t<div class=\"level-divider\"></div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t` : nothing}\r\n\t\t\t\t\t`)}\r\n\t\t\t\t</fv-flex-container>\r\n\t\t\t\t${groupIndex < groups.length - 1 ? html`\r\n\t\t\t\t\t<div class=\"level-divider-container\">\r\n\t\t\t\t\t\t<div class=\"level-divider\"></div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t` : nothing}\r\n\t\t\t`)}\r\n\t\t`;\r\n\t}\r\n\r\n}\r\n\r\n@customElement('fv-multi-level-card-container')\r\nexport class MultiLevelCardContainerComponent extends BaseCardContainer {\r\n\tprivate initialAspectRatio: string | null = null;\r\n\tprotected cardCreator: MultiCardElementCreator;\r\n\r\n\tstatic styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n\t@property({type: String})\r\n\tcurrentLevelKey: string | null = null;\r\n\r\n\t@property({type: Number, reflect: true, attribute: false})\r\n\thostWidth = 0;\r\n\r\n\tprivate _resizeObserver: ResizeObserver | null = null;\r\n\r\n constructor() {\r\n super();\r\n\t\tthis.cardCreator = new MultiCardElementCreator();\r\n\t\tthis.addEventListener(CardContainerEvents.Back, (ev: Event) => {\r\n\t\t\tthis._handleBackEvent();\r\n\t\t})\r\n }\r\n\r\n\tpublic override connectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.hostWidth = this.clientWidth;\r\n\t\tthis._resizeObserver = new ResizeObserver((entries) => {\r\n\t\t\tfor (const entry of entries) {\r\n\t\t\t\tif (entry.contentRect.width > 0) {\r\n\t\t\t\t\tthis.hostWidth = entry.contentRect.width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._resizeObserver.observe(this);\r\n\t}\r\n\r\n\tpublic override disconnectedCallback() {\r\n\t\tthis._resizeObserver?.disconnect();\r\n\t\tsuper.disconnectedCallback();\r\n\t}\r\n\r\n\tprotected CreateMultiLevelCardData(FetchedLevelData: FetchResult){\r\n\r\n\t\tlet mapCollection: Array<CardDataLevelMap> = [];\r\n\t\tconst cardDataLevelMap = this.CreateCards(\r\n\t\t\t{\r\n\t\t\t\tentries:[FetchedLevelData],\r\n\t\t\t\thasLevelOneImages: false\r\n\t\t\t}\r\n\t\t);\r\n\r\n\r\n\t\tif(cardDataLevelMap){\r\n\t\t\tmapCollection.push(cardDataLevelMap);\r\n\t\t}\r\n\t\tthis.toUnifiedMap(mapCollection)\r\n\r\n\r\n\t}\r\n\r\n\tprivate toUnifiedMap(ArrMap: Array<CardDataLevelMap>) {\r\n\t\tfor (const map of ArrMap) {\r\n\t\t\tif (map.has(\"root\") && map.size === 1) {\r\n\t\t\t\tmap.get('root')!.title = \"collections\";\r\n\t\t\t\tthis.cardData?.set(\"onlyLevelOne\", map.get(\"root\")!);\r\n\t\t\t} else {\r\n\t\t\t\tfor (const [key, value] of map) {\r\n\t\t\t\t\tif (key === \"root\") continue;\r\n\t\t\t\t\tconst existing = this.cardData?.get(key);\r\n\t\t\t\t\tif (existing && Array.isArray(existing.cards) && Array.isArray(value.cards)) {\r\n\t\t\t\t\t\texisting.cards.push(...value.cards);\r\n\t\t\t\t\t\tif (!existing.title && value.title) existing.title = value.title;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.cardData?.set(key, value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected RefreshCardData(result: FetchResult | undefined): RefreshCardDataResult {\r\n\t\tif (result == undefined) {\r\n return \"invalid\";\r\n }\r\n const old = this.cardData;\r\n\r\n this.cardData = new Map<CardDataLevelKey, CardDataLevel>();\r\n result.entries?.map((entry: FetchResult) => this.CreateMultiLevelCardData(entry));\r\n\r\n this.initialAspectRatio = null;\r\n\r\n if (old == this.cardData) {\r\n return \"unchanged\";\r\n }\r\n return \"changed\";\r\n\t}\r\n\r\n\tgetTitleWithLevelKey(key: string | number | null) {\r\n\t\tif (key && this.cardData) {\r\n\t\t\tconst title = this.cardData.get(key)?.title;\r\n\t\t\tif (!title) return nothing;\r\n\t\t\treturn html`\r\n\t\t\t\t<fv-label i18n=\"${title}\" class=\"level-title\">${title}</fv-label>\r\n\t\t\t`;\r\n\t\t}\r\n\t\treturn nothing;\r\n\t}\r\n\r\n\tapplyAspectRatio(elementsToRender: HTMLElement[]): void {\r\n\t\tif (this.initialAspectRatio === null && elementsToRender.length > 0) {\r\n\t\t\tthis.initialAspectRatio = elementsToRender.length > 2 ? \"1 / 1\" : \"16 / 10\";\r\n\t\t}\r\n\r\n\t\tif (this.initialAspectRatio) {\r\n\t\t\telementsToRender.forEach(elem => {\r\n\t\t\t\tif (elem.style.getPropertyValue(\"--card-aspect-ratio\") !== this.initialAspectRatio) {\r\n\t\t\t\t\telem.style.setProperty(\"--card-aspect-ratio\", this.initialAspectRatio);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprotected override async Select(data: CardData): Promise<void> {\r\n\t\tif (data.click && typeof data.click['next-level-key'] === 'string') {\r\n\t\t\tconst nextLevelKey = data.click['next-level-key'];\r\n\r\n\t\t\tif (nextLevelKey.startsWith('LEVEL1:')) {\r\n\t\t\t\tthis.currentLevelKey = nextLevelKey;\r\n\t\t\t\tthis.initialAspectRatio = null;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t} else if (nextLevelKey === '') {\r\n\t\t\t\tthis.currentLevelKey = null;\r\n\t\t\t\tthis.initialAspectRatio = null;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tawait super.Select(data);\r\n\t\tthis._dispatchStateChangeEvent();\r\n\t}\r\n\r\n\tpublic isInsideGroup(): boolean {\r\n\t\treturn this.currentLevelKey !== null && this.currentLevelKey.startsWith('LEVEL1:');\r\n\t}\r\n\r\n\tpublic _handleBackEvent(): void {\r\n\t\tif (this.currentLevelKey !== null) {\r\n\t\t\tthis.currentLevelKey = null;\r\n\t\t\tthis.initialAspectRatio = null;\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tthis._dispatchStateChangeEvent();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _dispatchStateChangeEvent(): void {\r\n\t\tconst event = new CustomEvent('multi-level-state-changed', {\r\n\t\t\tdetail: {\r\n\t\t\t\tisInsideGroup: this.isInsideGroup()\r\n\t\t\t},\r\n\t\t\tbubbles: true,\r\n\t\t\tcomposed: true\r\n\t\t});\r\n\t\tthis.dispatchEvent(event);\r\n\t}\r\n}\r\n","import { css, unsafeCSS, html, TemplateResult } from \"lit\";\nimport style from \"./landscape-info.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-landscape-info\")\nexport class LandscapeInfo extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n \n constructor() {\n super();\n }\n\n @property({ reflect: true, type: String })\n text = \"\";\n\n render(): TemplateResult<1> {\n return html`\n <div class=\"container\">\n <div class=\"device\"></div>\n <div class=\"message\" i18n=\"${ this.text }\"></div>\n </div>\n `;\n }\n}","import { css, unsafeCSS, html, TemplateResult } from \"lit\";\nimport style from \"./catalog-information.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-catalog-information\")\nexport class CatalogInformationComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n \n constructor() {\n super();\n }\n\n @property({ type: String, reflect: true, attribute: \"icon\" })\n protected icon = \"\";\n\n @property({ reflect: true, type: String })\n title = \"\";\n @property({ reflect: true, type: String })\n text = \"\";\n\n private getImage(): TemplateResult<1> {\n return html`<i class=\"icon ${this.icon}\" part=\"icon\"></i>`;\n }\n\n render(): TemplateResult<1> {\n return html`\n <div class=\"container\">\n <div class=\"image-container\">\n ${this.getImage()}\n </div>\n <div class=\"text-container\">\n <div class=\"title\" i18n=\"${this.title}\">${this.title}</div>\n <div class=\"text\" i18n=\"${this.text}\">${this.text}</div>\n <div class=\"button-container\"><slot name=\"button\"></slot></div>\n </div>\n </div>\n `;\n }\n}","import { customElement, property } from \"lit/decorators.js\";\r\nimport { BaseElement } from \"../base/base.component\";\r\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\r\nimport style from \"./dimension-information.component.sass?inline\";\r\nimport { LocaleService } from \"@dh-software/webui-api\";\r\nimport { DimensionHelper } from \"../../../utils/dimension-helper.class\";\r\n\r\nexport type DecimalDivider = \",\" | \".\";// when adding possible dividers: DO NOT FORGET TO HANDLE IN getNoUnitValue() (in all inputs!)\r\n\r\n@customElement(\"fv-dimension-information\")\r\nexport class DimensionInformationComponent extends BaseElement {\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n @property({ type: String, reflect: true, attribute: \"icon\" })\r\n public icon = \"\";\r\n @property({ type: String, reflect: true, attribute: \"src\" })\r\n public src = \"\";\r\n @property({ type: String, reflect: true, attribute: \"prefix\" })\r\n public prefix = \"\";\r\n @property({ type: Array, reflect: true, attribute: \"dimension\" })\r\n public dimension: Array<number> | number = 0.0;\r\n @property({ type: String, reflect: true, attribute: \"divider\" })\r\n public divider = \"x\";\r\n @property({ type: String, reflect: true, attribute: \"unit\" })\r\n public unit = \"cm\";\r\n\r\n @property({ type: Number, reflect: true, attribute: \"decimals\" })\r\n public decimals = 1;\r\n @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\r\n public decimalDivider: DecimalDivider = \".\";\r\n @property({ type: Boolean, reflect: true, attribute: \"prevent-zero-decimals\" })\r\n public preventZeroDecimals = false;\r\n\r\n @property({ type: Object, reflect: true, attribute: \"dimension-text-keys\" })\r\n public dimensionTextKeys: { [key: string]: string } = {\r\n H: \"fv.generickatatree.h\",\r\n B: \"fv.generickatatree.b\",\r\n T: \"fv.generickatatree.t\"\r\n };\r\n\r\n private async UpdatePostLocalesModelRead() {\r\n await LocaleService.IsFileRead();\r\n this.requestUpdate();\r\n }\r\n constructor() {\r\n super();// call baseElement constructor, do not register into locales model\r\n this.baseOptions.registerLocalesModel = true;\r\n this.UpdatePostLocalesModelRead();\r\n }\r\n\r\n\r\n private get unitifier(): number {\r\n switch (this.unit) {\r\n case \"cm\":\r\n return 0.1;\r\n case \"mm\":\r\n default:\r\n return 1;\r\n }\r\n }\r\n\r\n\r\n private createDimensionTxt(dimension: number): string {\r\n if (this.preventZeroDecimals) {\r\n const dimensionInUnit = dimension * this.unitifier;\r\n const dimensionDecimal = dimensionInUnit - Math.floor(dimensionInUnit);\r\n if (dimensionDecimal < 0.1) {\r\n return (dimensionInUnit).toFixed(0).replace(\".\", this.decimalDivider);\r\n }\r\n }\r\n return (dimension * this.unitifier).toFixed(this.decimals).replace(\".\", this.decimalDivider);\r\n }\r\n\r\n\r\n private get dimtxt(): TemplateResult<1> {\r\n const prefix = LocaleService.translate(this.prefix, this.prefix);\r\n const unittxt = LocaleService.translate(\"dimension-information-unittxt-\" + this.unit, this.unit);\r\n\r\n if (typeof this.dimension === \"number\") {\r\n return html`\r\n ${this.prefix ? html`<fv-label>${prefix}</fv-label>` : html``}\r\n <fv-label>${this.createDimensionTxt(this.dimension)}</fv-label>\r\n <fv-label>${unittxt}</fv-label>\r\n `;\r\n }\r\n\r\n if (!Array.isArray(this.dimension)) {\r\n console.error(\"this.dimension was not an array! type:\", typeof this.dimension);\r\n return html``;\r\n }\r\n\r\n const createAxis = (dim: number, index: number, last: boolean) => {\r\n const unittxt = LocaleService.translate(\"dimension-information-unittxt-\" + this.unit, this.unit);\r\n const dimensionType = DimensionHelper.getDimensionTypeFromIndex(index);\r\n const i18nKey = this.dimensionTextKeys[dimensionType] || '';\r\n\r\n return html`\r\n <div class=\"axis\">\r\n <fv-label i18n=\"${i18nKey}\">${dimensionType}</fv-label>\r\n <fv-label>${this.createDimensionTxt(dim)}</fv-label>\r\n <fv-label>${unittxt}</fv-label>\r\n ${last ? html`` : html`<fv-label>${this.divider}</fv-label>`}\r\n </div>\r\n `;\r\n };\r\n\r\n const dims = (this.dimension as Array<number>).filter(dim => dim > 0);\r\n return html`${dims.map((value: number, index: number) => createAxis(value, index, index === dims.length - 1))}`;\r\n\r\n }\r\n\r\n protected render(): TemplateResult<1> {\r\n if (this.icon && this.icon.length > 0) {\r\n return html`\r\n <fv-icon icon=\"${this.icon}\" src=\"${this.src}\"></fv-icon>\r\n <div>${this.dimtxt}</div>\r\n `;\r\n }\r\n return html`<div>${this.dimtxt}</div>`;\r\n }\r\n}\r\n","import { BaseElement } from \"../base/base.component\";\nimport { css, html, PropertyDeclaration, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./dimension-label.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { DimensionHelper } from \"./../../../utils/dimension-helper.class\";\n\n@customElement(\"fv-dimension-label\")\nexport class DimensionLabelComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Number, reflect: true, attribute: \"dimension-index\" })\n public dimensionIndex = 0;\n\n @property({ type: Object, reflect: true, attribute: \"dimension-text-keys\" })\n public dimensionTextKeys: { [key: string]: string } = {\n H: \"fv.heightInCm\",\n B: \"fv.widthInCm\",\n T: \"fv.depthInCm\"\n };\n\n constructor() {\n super();\n\n window.addEventListener(\"country-info\", ((ev: CustomEvent) => {\n this.requestUpdate();\n }) as EventListener);\n }\n\n private getDimensionTextKeyFromIndex(): string {\n const dimensionType = DimensionHelper.getDimensionTypeFromIndex(this.dimensionIndex);\n return this.dimensionTextKeys[dimensionType.toUpperCase()] || '';\n }\n\n protected render() {\n const textKey = this.getDimensionTextKeyFromIndex();\n return html`<fv-label class=\"custom\" i18n=\"${textKey}\">${textKey}</fv-label>`\n }\n}\n","import { customElement, property } from \"lit/decorators.js\";\r\nimport { BaseElement } from \"../base/base.component\";\r\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\r\nimport style from \"./dimensions-information.component.sass?inline\";\r\nimport { DecimalDivider } from \"./dimension-information.component\";\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\n\r\nexport interface DimensionInformation {\r\n prefix?: string,\r\n dimension: Array<number> | number,\r\n icon?: string,\r\n src?: string,\r\n divider?: string,\r\n unit?: string,\r\n decimals?: number,\r\n \"decimal-divider\"?: DecimalDivider,\r\n \"prevent-zero-decimals\"?: boolean,\r\n order?: number,\r\n}\r\n\r\n@customElement(\"fv-dimensions-information\")\r\nexport class DimensionsInformationComponent extends BaseElement {\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n @property({ type: Array, reflect: true, attribute: \"dimensions\" })\r\n public dimensions: Array<DimensionInformation> = [];\r\n\r\n constructor() {\r\n super();\r\n }\r\n private createDimensionInformation(dimensionInfo: DimensionInformation) {\r\n return html`\r\n <fv-dimension-information\r\n part=\"dimension\"\r\n icon=\"${ifDefined(dimensionInfo.icon)}\"\r\n src=\"${ifDefined(dimensionInfo.src)}\"\r\n prefix=\"${dimensionInfo.prefix ? dimensionInfo.prefix : \"\"}\"\r\n .dimension=\"${dimensionInfo.dimension}\"\r\n divider=\"${dimensionInfo.divider ? dimensionInfo.divider : \"x\"}\"\r\n unit=\"${dimensionInfo.unit ? dimensionInfo.unit : \"cm\"}\"\r\n decimals=\"${dimensionInfo.decimals ? dimensionInfo.decimals : 1}\"\r\n decimal-divider=\"${dimensionInfo[\"decimal-divider\"] ? dimensionInfo[\"decimal-divider\"] : \".\"}\"\r\n ?prevent-zero-decimals=\"${dimensionInfo[\"prevent-zero-decimals\"]}\"\r\n ></fv-dimension-information>\r\n `;\r\n }\r\n\r\n protected render(): TemplateResult<1> {\r\n return html`${this.dimensions.map(this.createDimensionInformation)}`;\r\n }\r\n}\r\n","import { customElement, property, state } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { TemplateResult, css, html, unsafeCSS, PropertyValues } from \"lit\";\nimport style from \"./dimension-inputs.component.sass?inline\";\n\nexport interface IDimensionInputData {\n name?: string;\n label: string;\n values: number[];\n selectedIndex?: number;\n}\n\nexport interface IDimensionInputChangeDetail {\n index: number;\n selectedIndex: number;\n value: number;\n name?: string;\n}\n\n@customElement(\"fv-dimension-inputs\")\nexport class DimensionInputsComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Array })\n public dimensions: Array<IDimensionInputData> = [];\n\n @property({ type: String, attribute: \"unit\" })\n public unit = \"cm\";\n\n @state()\n private _selectedIndices: number[] = [];\n\n constructor() {\n super();\n this.baseOptions.registerLocalesModel = true;\n this.addEventListener(\"click\", (e_) => e_.stopPropagation());\n this.addEventListener(\"pointerdown\", (e_) => e_.stopPropagation());\n }\n\n protected willUpdate(changedProperties_: PropertyValues) {\n super.willUpdate(changedProperties_);\n if (changedProperties_.has('dimensions')) {\n this._selectedIndices = this.dimensions.map(dimension_ => dimension_.selectedIndex ?? 0);\n }\n }\n\n private onSliderChange(dimensionIndex_: number, e_: CustomEvent<{ value: number }>) {\n const selectedIndex = e_.detail.value;\n this._selectedIndices = this._selectedIndices.map((v_, i_) => i_ === dimensionIndex_ ? selectedIndex : v_);\n\n const dim = this.dimensions[dimensionIndex_];\n this.dispatchEvent(new CustomEvent<IDimensionInputChangeDetail>(\"dimension-change\", {\n detail: {\n index: dimensionIndex_,\n selectedIndex: selectedIndex,\n value: dim.values[selectedIndex],\n name: dim.name\n },\n bubbles: true,\n composed: true\n }));\n }\n\n private renderDimension(data_: IDimensionInputData, index_: number) {\n const numValues = data_.values.length - 1;\n const isAdjustable = numValues > 0;\n const selectedIndex = this._selectedIndices[index_] ?? 0;\n const displayValue = isAdjustable ? data_.values[selectedIndex] : data_.values[0];\n\n return html`\n <div class=\"dimension ${isAdjustable ? 'adjustable' : 'fixed'}\">\n <div class=\"dimension-header\">\n <fv-label class=\"dimension-label\" i18n=\"${data_.label}\">${data_.label}</fv-label>\n <fv-label class=\"dimension-value\">${displayValue} ${this.unit}</fv-label>\n </div>\n <div class=\"dimension-slider-row\">\n <fv-label class=\"dimension-bound\">${data_.values[0]}</fv-label>\n <fv-basic-slider\n min=\"0\"\n max=\"${isAdjustable ? numValues : 1}\"\n step=\"1\"\n .value=\"${selectedIndex}\"\n ?disabled=\"${!isAdjustable}\"\n @slider-input=\"${(e_: CustomEvent<{ value: number }>) => this.onSliderChange(index_, e_)}\">\n </fv-basic-slider>\n <fv-label class=\"dimension-bound\">${data_.values[numValues]}</fv-label>\n </div>\n </div>\n `;\n }\n\n protected render(): TemplateResult<1> {\n return html`\n ${this.dimensions.map((data_, i_) => this.renderDimension(data_, i_))}\n `;\n }\n}\n","import {nothing, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {html, unsafeStatic} from \"lit/static-html.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {repeat} from \"lit/directives/repeat.js\";\nimport {FetchParameters} from \"../../base/async.base.component\";\nimport {ComponentServiceSearchParams} from \"../../../../utils/component.service\";\nimport {EventHandlerEvent} from \"../../../../models/event-handler/event.handler.model\";\nimport {BaseElement} from \"../../base/base.component\";\nimport style from './card-container-filter-manager.component.style.sass?inline';\nimport {CardContainerSliderFilterComponent} from \"../containers\";\nimport {DimensionLabelComponent} from \"../../informationals\";\n\ninterface ManagedDimension {\n index: number;\n label: string;\n}\n\n@customElement(\"fv-dimension-filter-manager\")\nexport class CardContainerFilterManager extends BaseElement {\n\n #defaultContainerTag = \"fv-flex-container\"\n\n @property({type: String, reflect: true})\n containerTag: string = this.#defaultContainerTag\n\n @property({type: Array, reflect: true, attribute: \"filter-style-vars\"})\n filterStyleVars: {[key: string]: string} = {};\n\n @property({type: Object, reflect: true, attribute: \"base-settings\"})\n baseSettings: FetchParameters = {};\n\n @property({type: Array})\n dimensions: ManagedDimension[] = [\n {index: 0, label: 'width'},\n {index: 1, label: 'depth'},\n {index: 2, label: 'height'}\n ];\n\n @property({type: Object, reflect: true, attribute: \"target-query\"})\n targetQuery: ComponentServiceSearchParams = {\n tag: \"fv-card-container\",\n query: \"*\"\n }\n\n @property({type: Array, reflect: true, attribute: \"base-classes\"})\n baseClasses: string[] = [\"dimensions\"];\n\n @property({type: String, reflect: true, attribute: \"identifier\"})\n identifier: string = \"\";\n\n @property({type: Boolean, reflect: true, attribute: 'use-cards'})\n useCards = false;\n\n @property({type: Number, reflect: true, attribute: 'max-entries'})\n maxEntries = undefined;\n\n @property({type: Object, reflect: true, attribute: \"on-filter-events\"})\n public onCardFilterEvents: {\n \"on-empty\"?: Array<EventHandlerEvent>,\n \"over-max\"?: Array<EventHandlerEvent>,\n } = {};\n\n generateConfig(dim: ManagedDimension) {\n const settings: any = JSON.parse(JSON.stringify(this.baseSettings));\n\n if (!settings.fetch) settings.fetch = {};\n if (!settings.fetch.parameters) settings.fetch.parameters = {};\n\n settings.fetch.parameters[\"automatic-dimension-order-index\"] = dim.index;\n\n if (dim.index > 0) {\n settings.fetch.parameters[\"suspend-disable-source-on-first-clicked-container-of-method\"] = true;\n }\n\n settings.fetch.parameters[\"card-container-disable-source-selector\"] = this.targetQuery;\n\n return settings;\n }\n\n // Disable shadowRoot so other components can query these children\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n protected render(): TemplateResult {\n const tagName = this.containerTag || this.#defaultContainerTag;\n return html`\n ${this.containerTag ? html`<${unsafeStatic(tagName)} class=\"filter-container\">` : nothing}\n ${repeat(this.dimensions, (dim) => dim.index, (dim) => {\n const mergedSettings = this.generateConfig(dim);\n const identifierClass = `${this.identifier}`\n const childClasses = [...this.baseClasses, identifierClass, dim.label]\n const filterStyles = Object.entries(this.filterStyleVars).reduce((x, [key, value], index, arr) => {\n return x += `${key}: ${value}${++index === arr.length ? \"\" : \",\"}`\n }, \"\");\n \n const cardSliderFilter = new CardContainerSliderFilterComponent();\n cardSliderFilter.setAttribute(\"style\", `${filterStyles}`);\n cardSliderFilter.classList.add(...childClasses);\n cardSliderFilter.FetchParameters = mergedSettings;\n cardSliderFilter.onCardFilterEvents = this.onCardFilterEvents;\n cardSliderFilter.maxEntries = this.maxEntries;\n cardSliderFilter.useCards = this.useCards;\n cardSliderFilter.checkDimensions = `.${identifierClass}`;\n cardSliderFilter.mobileMode = this.mobileMode;\n \n const dimLabel = new DimensionLabelComponent();\n dimLabel.setAttribute(\"slot\", \"before\");\n dimLabel.dimensionIndex = dim.index;\n cardSliderFilter.appendChild(dimLabel);\n \n return cardSliderFilter;\n })}\n ${this.containerTag ? html`</${unsafeStatic(tagName)}>` : nothing}\n `;\n }\n\n}\n","import { html, nothing, PropertyValueMap, PropertyValues, unsafeCSS } from \"lit\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { CardDataDropdownGroupItem, CardDataInputGroupItem, ICardDataInputSource, isCardDataSource } from \"../../../../models/card-container\";\nimport style from './card-container-input-manager.component.sass?inline';\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { IDropdownOptions } from \"../../dropdown/dropdown/dropdown.component\";\nimport { IDropdownItem } from \"../../dropdown/dropdown-item/dropdown-item.component\";\nimport { CardComponent } from \"../../cards\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { IDimensionInputChangeDetail } from \"../../informationals/dimension-inputs.component\";\n\n@customElement('fv-card-container-input-manager')\nexport class CardContainerInputManagerComponent extends BaseElement {\n\n static styles = [super.styles || [], unsafeCSS(style)]\n\n @property({ type: Object })\n card!: CardComponent;\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n this.addEventListener(\"click\", (ev) => {\n ev.preventDefault();\n })\n }\n\n protected updated(_changedProperties: PropertyValueMap<this>) {\n super.updated(_changedProperties);\n if (_changedProperties.has(\"card\")) {\n this.card?.style.setProperty(\"overflow\", \"visible\");\n }\n }\n\n renderInput(input: CardDataInputGroupItem) {\n return html`\n <fv-labeled-input class=\"${classMap(input.classes || {})}\"\n moveable-placeholder\n @change=\"${(ev: Event) => this.valueChanged(ev, input)}\"\n @blur=\"${(ev: Event) => this.valueChanged(ev, input)}\"\n value=\"${input.value}\"\n type=\"${input.type}\"\n name=\"${input.name}\"\n min=\"${input.min}\"\n max=\"${input.max}\"\n ?readonly=\"${input.readonly}\"\n placeholder=\"${input.placeholder}\"\n ?required=\"${input.required}\"\n >\n ${input.suffix ? html`\n <div class=\"suffix-container\">\n <fv-label>${input.suffix}</fv-label>\n </div>\n ` : nothing}\n </fv-labeled-input>\n `\n }\n\n renderInputs() {\n const hasInputs = this.card.data.inputs?.length\n if (!hasInputs) {\n return nothing\n }\n return html`\n <div class=\"inputs\">\n ${this.card?.data?.inputs?.flatMap(x => x.items).map(x => {\n return this.renderInput(x);\n })}\n </div>\n `\n }\n\n renderDropdown(inputData: CardDataDropdownGroupItem) {\n const options = <IDropdownOptions>{\n name: inputData.name,\n items: inputData.values?.map(x => {\n return <IDropdownItem>{\n value: x,\n text: `${x} ${inputData.suffix}`,\n active: inputData.value == x\n }\n })\n }\n const dropdownItemChanged = (ev: CustomEvent<IDropdownItem>) => {\n this.valueChanged(ev, inputData);\n }\n return html`\n <div class=\"dropdown-wrapper\">\n <fv-label i18n=\"${inputData.placeholder}\">${inputData.placeholder}</fv-label>\n <fv-dropdown @dropdown-item-changed=\"${dropdownItemChanged}\" name=\"${inputData.name}\" .dropdownOptions=\"${options}\" scrollbar compact></fv-dropdown>\n </div>\n `\n }\n\n renderDropdowns() {\n const hasDropdowns = this.card?.data?.dropdowns?.length\n if (!hasDropdowns) {\n return nothing\n }\n return html`\n <div class=\"dropdowns\">\n ${this.card?.data?.dropdowns?.flatMap(x => x.items).map(x => {\n return this.renderDropdown(x);\n })}\n </div>\n `\n }\n\n renderDimensionInputs() {\n const ranges = this.card?.data?.[\"dimension-ranges\"];\n if (!ranges?.length) return nothing;\n const onDimChange = (ev: CustomEvent<IDimensionInputChangeDetail>) => {\n const { name, value } = ev.detail;\n if (name && this.card.cardContainerClickData?.context) {\n const source: ICardDataInputSource = { name, value: value.toString() };\n CardDataService.TextFieldChanged(this.card.data, this.card.cardContainerClickData.context, source);\n }\n };\n return html`\n <div class=\"dimension-inputs\">\n <fv-dimension-inputs\n .dimensions=\"${ranges}\"\n @dimension-change=\"${onDimChange}\"\n ></fv-dimension-inputs>\n </div>\n `;\n }\n\n render() {\n return html`\n ${this.renderInputs()}\n ${this.renderDropdowns()}\n ${this.renderDimensionInputs()}\n `\n }\n\n valueChanged = (event: Event, entry: CardDataInputGroupItem | CardDataDropdownGroupItem) => {\n const dataSource = event.target\n if (isCardDataSource(dataSource) && this.card.cardContainerClickData?.context) {\n CardDataService.TextFieldChanged(this.card.data, this.card.cardContainerClickData.context, dataSource);\n }\n }\n\n}\n","import { FetchParameters } from \"../../base/async.base.component\";\nimport { CardContainerCustomEvents, CardDataText } from \"../../../../models/card-container\";\n\n\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n// Defaults\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\nexport const CONTAINER_DEFAULTS = {\n TRIGGERS_NEXT: true,\n SKIP_ON_EMPTY: true,\n SKIP_ON_SINGLE_ENTRY: false,\n SKIP_ON_SINGLE_ENTRY_BACK: false,\n NAVIGATE_BACK_ON_CLICK: false,\n ADVANCE_TO_NEXT_ON_BACK: false,\n RESET_ON_EMPTY_REFILL: false,\n BLOCK_IF_NEXT_EMPTY: false,\n} as const;\n\nexport const LEVEL_DEFAULTS = {\n LAYOUT: \"column\" as const,\n} as const;\n\n\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n// Interfaces\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\nexport interface ContainerProperty {\n key: string;\n value: unknown;\n attribute?: boolean;\n}\n\n/** The shared shape needed to instantiate & configure a card-container element. */\nexport interface BaseContainerConfig {\n tag: string;\n classes?: string[];\n \"style-vars\"?: Record<string, string>;\n \"fetch-parameters\"?: FetchParameters;\n events?: CardContainerCustomEvents;\n properties?: ContainerProperty[];\n \"slots\"?: string[];\n}\n\nexport interface ContainerDefinition extends BaseContainerConfig {\n /** @default true */\n \"triggers-next\"?: boolean;\n /** @default false */\n \"navigate-back-on-click\"?: boolean;\n /** @default false — after a navigate-back-on-click, drill straight into the next sibling (step through properties/values) */\n \"advance-to-next-on-back\"?: boolean;\n /** @default true */\n \"skip-on-empty\"?: boolean;\n /** @default false */\n \"skip-on-single-entry\"?: boolean;\n /** @default false — when set, navigating back also skips single-entry levels instead of landing on them */\n \"skip-on-single-entry-back\"?: boolean;\n /** @default false */\n \"reset-on-empty-refill\"?: boolean;\n /** Don't navigate forward if the immediate next level is empty. @default false */\n \"block-if-next-empty\"?: boolean;\n\n /**\n * `[\"class-a\"]` → collect from named containers.\n * `[]` → self-managed via source-elements-selectors.\n * omitted → inherit from previous level.\n */\n \"filter-sources\"?: string[];\n}\n\n/** The per-container boolean behaviour flags (see {@link ContainerDefinition}). */\nexport type ContainerBoolFlag =\n | \"triggers-next\"\n | \"navigate-back-on-click\"\n | \"advance-to-next-on-back\"\n | \"skip-on-empty\"\n | \"skip-on-single-entry\"\n | \"skip-on-single-entry-back\"\n | \"reset-on-empty-refill\"\n | \"block-if-next-empty\";\n\nexport interface LevelDefinition {\n containers: ContainerDefinition[];\n /** @default \"column\" */\n layout?: \"row\" | \"column\";\n classes?: string[];\n \"style-vars\"?: Record<string, string>;\n}\n\n/** Side view shown when a fixed card with a matching `view-key` is clicked. Static — no skip/forward/back-on-click logic. */\nexport type SideViewDefinition = BaseContainerConfig;\n\n\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n// Utilities\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\nexport function applyProperty(element: Element, {key, value, attribute}: ContainerProperty): void {\n if (typeof value === \"boolean\" && attribute) {\n value ? element.setAttribute(key, \"\") : element.removeAttribute(key);\n } else if (typeof value === \"object\" && attribute) {\n element.setAttribute(key, JSON.stringify(value));\n } else if (!attribute) {\n (element as any)[key] = value;\n } else {\n element.setAttribute(key, String(value));\n }\n}\n\nexport function extractCardTitle(txt: CardDataText | undefined): string | undefined {\n if (!txt) return undefined;\n return txt.title ?? Object.values(txt).find(v => typeof v === \"string\") as string | undefined;\n}\n","import { BaseCardContainer } from \"../base/base-card-container\";\nimport { FilterSelectionData, FilterSelectionStrategy } from \"../../../../models/card-container\";\nimport { ContainerDefinition } from \"./card-container-view.model\";\n\n/** Sentinel returned by {@link resolveFiltersForContainer}: the container manages its own filters. */\nexport const SELF_MANAGED_FILTERS = null;\n\n\n/** The container's current filter selection, normalised (NONE → OR), or undefined when it has none. */\nfunction getFilterSelection(container: BaseCardContainer): FilterSelectionData | undefined {\n const filterKeys = container.Filter?.Filter;\n if (!filterKeys?.length) return undefined;\n\n const strategy = container.Filter!.Strategy;\n return {\n filter: filterKeys,\n strategy: strategy === FilterSelectionStrategy.NONE ? FilterSelectionStrategy.OR : strategy,\n priority: container.Filter!.Prio,\n \"additional-params\": container.Filter!.AdditionalParams,\n };\n}\n\nfunction collectFilters(containers: readonly BaseCardContainer[]): FilterSelectionData[] {\n const filters: FilterSelectionData[] = [];\n for (const container of containers) {\n const selection = getFilterSelection(container);\n if (selection) filters.push(selection);\n }\n return filters;\n}\n\n/**\n * Resolves the filters to feed a container before it fetches, from its `filter-sources`:\n * - `[\"class-a\"]` → collect from those named sibling containers\n * - `[]` → self-managed (returns {@link SELF_MANAGED_FILTERS})\n * - omitted → inherit from the source level's containers\n */\nexport function resolveFiltersForContainer(\n definition: ContainerDefinition,\n sourceLevelIndex: number,\n containerByClass: Map<string, BaseCardContainer>,\n containersByLevel: BaseCardContainer[][],\n): FilterSelectionData[] | null {\n const explicitSources = definition[\"filter-sources\"];\n\n if (explicitSources !== undefined && explicitSources.length === 0) return SELF_MANAGED_FILTERS;\n if (explicitSources?.length) {\n const sources = explicitSources\n .map(name => containerByClass.get(name))\n .filter((c): c is BaseCardContainer => c !== undefined);\n return collectFilters(sources);\n }\n if (sourceLevelIndex < 0) return [];\n return collectFilters(containersByLevel[sourceLevelIndex] ?? []);\n}\n","import { ReactiveController, ReactiveControllerHost } from \"lit\";\n\nexport type SlideDirection = \"forward\" | \"back\";\n\n/** The bits of the host the slide controller drives / reads. */\nexport interface SlideHost extends ReactiveControllerHost {\n /** Opt-in flag — when false the controller tracks direction only and never keeps an underlay. */\n readonly slideAnimation: boolean;\n /** Reflected to the `slide-direction` attribute the CSS keyframes select on. */\n slideDirection: SlideDirection;\n}\n\n/**\n * Owns the \"what slides over what\" bookkeeping for the level / side-view slide-over.\n *\n * The entering level (or side-view) animates *over* the element named here, which is kept visible\n * underneath until the animation ends. Exactly one underlay is tracked at a time:\n * - {@link fromLevel} — a level kept under an entering level or an opening side-view\n * - {@link fromSideView} — a closing side-view kept under the level sliding back in\n */\nexport class SlideController implements ReactiveController {\n private _fromLevel: number | null = null;\n private _fromSideView: string | null = null;\n\n constructor(private readonly host: SlideHost) {\n host.addController(this);\n }\n\n hostConnected(): void { /* nothing to wire on connect */ }\n\n /** Level kept visible beneath the entering level / side-view (null = no slide running). */\n get fromLevel(): number | null { return this._fromLevel; }\n /** Side-view kept visible beneath the level sliding back in on close (null = none). */\n get fromSideView(): string | null { return this._fromSideView; }\n\n /** Forward level step — the source level stays under the entering one. */\n enterForward(sourceLevel: number): void {\n this.host.slideDirection = \"forward\";\n this.begin(sourceLevel, null);\n }\n\n /** Back level step — the leaving level stays under the entering one. */\n enterBack(leavingLevel: number): void {\n this.host.slideDirection = \"back\";\n this.begin(leavingLevel, null);\n }\n\n /** Side-view opens — it slides over (masks) the current level. */\n openSideView(currentLevel: number): void {\n this.host.slideDirection = \"forward\";\n this.begin(currentLevel, null);\n }\n\n /** Side-view closes — the level slides back in over the still-visible side-view. */\n closeSideView(sideViewKey: string, currentLevel: number): void {\n this.host.slideDirection = \"back\";\n this.begin(currentLevel, sideViewKey);\n }\n\n /** `animationend` / `animationcancel` handler — drops whatever was kept underneath. */\n readonly onEnd = (e: AnimationEvent): void => {\n if (e.animationName.startsWith(\"ccv-slide\")) this.set(null, null);\n };\n\n /** Arms the underlay for a slide, but only when the animation is actually enabled. */\n private begin(fromLevel: number | null, fromSideView: string | null): void {\n if (!this.host.slideAnimation) return;\n this.set(fromLevel, fromSideView);\n }\n\n private set(fromLevel: number | null, fromSideView: string | null): void {\n if (this._fromLevel === fromLevel && this._fromSideView === fromSideView) return;\n this._fromLevel = fromLevel;\n this._fromSideView = fromSideView;\n this.host.requestUpdate();\n }\n}\n","import {css, html, nothing, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {styleMap} from \"lit/directives/style-map.js\";\nimport {ifDefined} from \"lit/directives/if-defined.js\";\nimport {BaseElement} from \"../../base/base.component\";\nimport {BaseCardContainer} from \"../base/base-card-container\";\nimport {CardContainerBackButtonComponent} from \"../controls\";\nimport {\n CardContainerBackEvent,\n CardContainerEvents,\n CardDataLevel,\n CardDataLevelKey,\n CardDataLevelMap,\n UpdateAdditionalDataEvent,\n UpdateAdditionalDataEventInit,\n CardContainerAsyncEventDispatcher,\n CARD_VIEW_KEY\n} from \"../../../../models/card-container\";\nimport {CardDataService} from \"../../../../utils/card.data.service\";\nimport {CardClickEventInit} from \"../../cards/base/base.card\";\nimport style from \"./card-container-view.component.sass?inline\";\nimport { EventHandlerService } from \"../../../../utils/event.handler.service\";\nimport { EventHandlerEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport {\n CONTAINER_DEFAULTS,\n LEVEL_DEFAULTS,\n applyProperty,\n extractCardTitle,\n type BaseContainerConfig,\n type ContainerDefinition,\n type ContainerBoolFlag,\n type LevelDefinition,\n type SideViewDefinition,\n} from \"./card-container-view.model\";\n\n// Re-exported so existing consumers can keep importing these from the component entrypoint.\nexport type {\n ContainerProperty,\n BaseContainerConfig,\n ContainerDefinition,\n ContainerBoolFlag,\n LevelDefinition,\n SideViewDefinition,\n} from \"./card-container-view.model\";\nimport { SELF_MANAGED_FILTERS, resolveFiltersForContainer } from \"./card-container-view.filters\";\nimport { SlideController } from \"./card-container-view.slide.controller\";\n\n\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n// Back-button protocol helper\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\nclass BackButtonAdditionalData {\n private readonly data = new Map<string, unknown>();\n constructor(private readonly host: CardContainerViewComponent) {}\n\n Set(key: string, value: unknown): void { this.data.set(key, value); }\n Exists(key: string): boolean { return this.data.has(key); }\n Remove(key: string): void { this.data.delete(key); }\n Reset(): void { this.data.clear(); }\n\n Get(key: string, fallback: unknown): unknown {\n this.host.Dispatcher.dispatch(done => new UpdateAdditionalDataEvent(key, done));\n return this.data.get(key) ?? fallback;\n }\n}\n\n\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n// Component\n// â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\n@customElement(\"fv-card-container-view\")\nexport class CardContainerViewComponent extends BaseElement {\n static styles = [super.styles || [], css`${unsafeCSS(style)}`];\n\n // ── Properties ──────────────────────────────────────────────────────\n\n @property({type: Array, reflect: false, attribute: \"levels\"})\n levels: LevelDefinition[] = [];\n\n @property({type: Boolean, reflect: true, attribute: \"show-internal-back-button\"})\n showInternalBackButton = false;\n\n @property({type: String, reflect: true, attribute: \"back-button-icon\"})\n backButtonIcon = \"\";\n\n @property({type: String, reflect: true, attribute: \"back-button-class\"})\n backButtonClass = \"\";\n\n @property({type: String, reflect: false, attribute: \"back-button-text\"})\n backButtonText = \"\";\n\n @property({type: Boolean, reflect: true, attribute: \"text-in-button\"})\n textInButton = false;\n\n /** Opt-in: slide the entering level / side-view on forward/back navigation. */\n @property({type: Boolean, reflect: true, attribute: \"slide-animation\"})\n slideAnimation = false;\n\n /** Reflected for the CSS direction selectors; set by the navigate / side-view handlers. */\n @property({type: String, reflect: true, attribute: \"slide-direction\"})\n slideDirection: \"forward\" | \"back\" = \"forward\";\n\n @property({type: Number, reflect: true, attribute: \"active-level-index\"})\n activeLevelIndex = 0;\n\n @property({type: Array, reflect: false, attribute: \"level-changed-events\" })\n levelChangedEvents: Array<EventHandlerEvent> | undefined = undefined;\n\n /**\n * Map of side-view-key → container definition. A side view is shown when a fixed card\n * carrying the same `view-key` is clicked; back dismisses it and returns to the previous level.\n */\n @property({type: Object, reflect: false, attribute: \"fixed-card-views\"})\n fixedCardViews: { [key: string]: SideViewDefinition } = {};\n\n // ── Reactive state ──────────────────────────────────────────────────\n\n @state() private activeLevelIsEmpty = false;\n @state() private activeSideViewKey: string | null = null;\n @state() private activeSideViewTitle: string | null = null;\n\n // ── Internal state ──────────────────────────────────────────────────\n\n /** Owns the slide-over bookkeeping (which level/side-view is kept under the entering one). */\n private readonly slide = new SlideController(this);\n private navigationHistory: number[] = [];\n private containersByLevel: BaseCardContainer[][] = [];\n private containerByClass = new Map<string, BaseCardContainer>();\n private clickedTitleByLevel = new Map<number, string>();\n private skipInProgress = false;\n private advancing = false;\n private suppressNextLevelFetch = false;\n private sideViewContainerByKey = new Map<string, BaseCardContainer>();\n\n public readonly AdditionalData = new BackButtonAdditionalData(this);\n\n private get canGoBack(): boolean {\n return this.activeSideViewKey !== null || this.navigationHistory.length > 0;\n }\n\n // ── Constructor ─────────────────────────────────────────────────────\n\n constructor() {\n super();\n\n this.addEventListener(CardContainerEvents.Back, (e: Event) => {\n e.stopPropagation();\n\n // Side view active. If its container still has internal levels to pop (e.g. an\n // fv-level-pages-card-container drilled past its root), delegate Back to it so it steps\n // back one level. Only once it reports it's at its root do we dismiss the side view.\n if (this.activeSideViewKey !== null) {\n const sideContainer = this.sideViewContainerByKey.get(this.activeSideViewKey);\n if (sideContainer?.CardContainerView_BackButtonOverwrite) {\n sideContainer.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n this.syncBackButtonVisibility();\n return;\n }\n this.deactivateSideView();\n return;\n }\n\n const activeLevel = this.containersByLevel[this.activeLevelIndex];\n for (const container of activeLevel) {\n if (container.CardContainerView_BackButtonOverwrite) {\n container.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n this.syncBackButtonVisibility();\n return;\n }\n }\n\n this.navigateBack();\n });\n\n this.addEventListener(CardContainerEvents.UpdateAdditionalData, (event: UpdateAdditionalDataEventInit) => {\n const key = event.detail?.key;\n if (!key) {\n return;\n }\n if (key === \"show-back-button\") {\n this.AdditionalData.Set(key, this.canGoBack);\n } else if (key === \"back-button-txt\") {\n const text = this.resolveBackButtonText();\n if (text.length > 0) this.AdditionalData.Set(key, text);\n }\n event.detail?.[\"post-event\"]();\n });\n }\n\n // ── Lifecycle ────────────────────────────────────────────────────────\n\n protected shouldUpdate(changedProperties: PropertyValues): boolean {\n if (this.advancing) return false;\n return super.shouldUpdate(changedProperties);\n }\n\n protected willUpdate(changedProperties: PropertyValues): void {\n super.willUpdate(changedProperties);\n if (changedProperties.has(\"activeLevelIndex\")) {\n const previous = changedProperties.get(\"activeLevelIndex\") as number | undefined;\n if (previous === this.activeLevelIndex) {\n changedProperties.delete(\"activeLevelIndex\");\n }\n }\n }\n\n protected updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"levels\")) this.buildContainers();\n if (changedProperties.has(\"fixedCardViews\")) this.buildSideViewContainers();\n if (changedProperties.has(\"activeSideViewKey\")) this.syncBackButtonVisibility();\n\n if (changedProperties.has(\"activeLevelIndex\")) {\n const previousLevel = changedProperties.get(\"activeLevelIndex\") as number | undefined;\n const suppressFetch = this.suppressNextLevelFetch; // one-shot guard set by navigateForward\n this.suppressNextLevelFetch = false;\n if (previousLevel !== undefined && this.levelChangedEvents) {\n EventHandlerService.dispatchEventList(this.levelChangedEvents, false);\n }\n\n if (this.activeLevelIndex === 0 && this.navigationHistory.length > 0) {\n this.resetToFirstLevel();\n } else if (previousLevel !== undefined && this.activeLevelIndex > previousLevel) {\n if (!this.navigationHistory.includes(previousLevel)) {\n this.navigationHistory.push(previousLevel);\n }\n if (!suppressFetch) this.fetchLevelContainers(this.activeLevelIndex, previousLevel);\n this.syncBackButtonState();\n } else {\n this.syncBackButtonVisibility();\n }\n }\n\n // Cheap and idempotent (only flips hideElement when it actually changes), so we re-sync on\n // every update — this also covers slide-state changes, which the SlideController drives\n // outside the reactive-property system.\n this.syncContainerVisibility();\n }\n\n private syncContainerVisibility(): void {\n const sideViewActive = this.activeSideViewKey !== null;\n\n const apply = (container: BaseCardContainer, hidden: boolean): void => {\n if (!container.events?.show && !container.events?.hide) return;\n if (container.hideElement !== hidden) container.hideElement = hidden;\n };\n\n this.containersByLevel.forEach((containers, levelIndex) => {\n // a level kept under a slide-over stays visible until the slide ends, so the entering\n // level / side-view actually has something to slide over\n const masked = levelIndex === this.slide.fromLevel;\n const hidden = !masked && (sideViewActive || levelIndex !== this.activeLevelIndex);\n for (const container of containers) apply(container, hidden);\n });\n\n for (const [key, container] of this.sideViewContainerByKey) {\n // keep the closing side-view's content visible while the level slides back over it\n const masked = key === this.slide.fromSideView;\n apply(container, !masked && key !== this.activeSideViewKey);\n }\n }\n\n disconnectedCallback(): void {\n this.teardownContainers();\n super.disconnectedCallback();\n }\n\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n // Container lifecycle\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\n private teardownContainers(): void {\n this.containersByLevel = [];\n this.containerByClass.clear();\n this.clickedTitleByLevel.clear();\n this.navigationHistory = [];\n this.activeLevelIndex = 0;\n this.activeLevelIsEmpty = false;\n this.activeSideViewKey = null;\n this.activeSideViewTitle = null;\n }\n\n /** Builds the side-view containers from `fixedCardViews`. Called when the property changes. */\n private buildSideViewContainers(): void {\n this.sideViewContainerByKey.clear();\n const keys = Object.keys(this.fixedCardViews);\n if (keys.length === 0) return;\n\n const wrappers = this.renderRoot.querySelectorAll<HTMLDivElement>(\".ccv-side-view-wrapper\");\n keys.forEach((key, i) => {\n const wrapper = wrappers[i];\n if (!wrapper) return;\n wrapper.innerHTML = \"\";\n\n const container = this.configureContainer(this.fixedCardViews[key]);\n container.classList.add(`ccv-side-view-${key}`);\n wrapper.appendChild(container);\n this.sideViewContainerByKey.set(key, container);\n });\n }\n\n private buildContainers(): void {\n this.teardownContainers();\n if (this.levels.length === 0) return;\n\n const wrappers = this.renderRoot.querySelectorAll<HTMLDivElement>(\".ccv-level-wrapper\");\n\n for (let levelIndex = 0; levelIndex < this.levels.length; levelIndex++) {\n const wrapper = wrappers[levelIndex];\n if (!wrapper) continue;\n // Only wipe the inner cards-host so the surrounding `<slot name=\"before-level-N\">` /\n // `<slot name=\"after-level-N\">` elements survive (light-DOM children projected via\n // those slots stay rendered).\n const cardsHost = wrapper.querySelector<HTMLDivElement>(\".ccv-level-cards\") ?? wrapper;\n cardsHost.innerHTML = \"\";\n\n const definitions = this.getContainerDefinitions(levelIndex);\n const containers: BaseCardContainer[] = [];\n\n for (let containerIndex = 0; containerIndex < definitions.length; containerIndex++) {\n const definition = definitions[containerIndex];\n const container = this.createContainer(definition, levelIndex, containerIndex);\n this.wireContainerEvents(container, definition, levelIndex, containerIndex);\n containers.push(container);\n cardsHost.appendChild(container);\n }\n\n this.containersByLevel.push(containers);\n }\n\n this.syncBackButtonState();\n }\n\n /** Instantiates a container element and applies the shared config: classes, style-vars, fetch-parameters, events, properties and slots. */\n private configureContainer(config: BaseContainerConfig): BaseCardContainer {\n const container = document.createElement(config.tag) as BaseCardContainer;\n\n if (config.classes) container.classList.add(...config.classes);\n for (const [prop, value] of Object.entries(config[\"style-vars\"] ?? {})) {\n container.style.setProperty(prop, value);\n }\n if (config[\"fetch-parameters\"]) container.FetchParameters = config[\"fetch-parameters\"];\n if (config.events) container.events = config.events;\n for (const prop of config.properties ?? []) applyProperty(container, prop);\n\n for (const slot of config[\"slots\"] ?? []) {\n const slotElement = document.createElement(\"slot\");\n slotElement.name = slot;\n slotElement.slot = slot;\n container.appendChild(slotElement);\n }\n\n return container;\n }\n\n private createContainer(definition: ContainerDefinition, levelIndex: number, containerIndex: number): BaseCardContainer {\n const container = this.configureContainer(definition);\n container.classList.add(`ccv-l${levelIndex}-c${containerIndex}`);\n for (const cls of definition.classes ?? []) this.containerByClass.set(cls, container);\n return container;\n }\n\n private wireContainerEvents(container: BaseCardContainer, definition: ContainerDefinition, levelIndex: number, containerIndex: number): void {\n const triggersForward = definition[\"triggers-next\"] ?? CONTAINER_DEFAULTS.TRIGGERS_NEXT;\n const navigatesBack = definition[\"navigate-back-on-click\"] ?? CONTAINER_DEFAULTS.NAVIGATE_BACK_ON_CLICK;\n\n if (triggersForward || navigatesBack) {\n container.addEventListener(\"cardclicked\", (event: CardClickEventInit) => {\n this.handleCardClicked(levelIndex, event, navigatesBack);\n });\n }\n\n // Fixed-card view-key → activate the matching side view. cardclick fires for fixed cards\n // (see base.card.ts) and carries the view-key on `data.additional`.\n container.addEventListener(\"cardclick\", (event: CardClickEventInit) => {\n const data = event.detail?.data;\n const viewKey = data?.additional?.[CARD_VIEW_KEY] as string | undefined;\n if (viewKey && this.fixedCardViews[viewKey]) {\n this.activateSideView(viewKey, extractCardTitle(data?.txt));\n }\n });\n\n container.addEventListener(CardContainerEvents.CardContainerPostFill, () => {\n this.handleContainerPostFill(levelIndex, containerIndex);\n });\n }\n\n /** Switches the view to the named side view; current level is hidden until back is pressed. */\n private activateSideView(key: string, title?: string): void {\n if (!this.fixedCardViews[key]) return;\n this.slide.openSideView(this.activeLevelIndex); // slides over (masks) the current level\n this.activeSideViewKey = key;\n this.activeSideViewTitle = title ?? null;\n this.syncBackButtonState();\n }\n\n /** Dismisses the active side view and returns to the previous level (no history change). */\n private deactivateSideView(): void {\n if (this.activeSideViewKey !== null) {\n this.slide.closeSideView(this.activeSideViewKey, this.activeLevelIndex); // level slides back over it\n }\n this.activeSideViewKey = null;\n this.activeSideViewTitle = null;\n this.syncBackButtonVisibility();\n }\n\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n // Level & container resolution\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\n /** Supports both `containers` array format and legacy flat format. */\n private getContainerDefinitions(levelIndex: number): ContainerDefinition[] {\n const level = this.levels[levelIndex];\n if (!level) return [];\n return level.containers ?? ((level as any).tag ? [level as unknown as ContainerDefinition] : []);\n }\n\n private isLevelEmpty(levelIndex: number): boolean {\n const containers = this.containersByLevel[levelIndex];\n return !containers?.length || containers.every(c => c.isEmpty());\n }\n\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n // Navigation\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\n private async navigateForward(): Promise<void> {\n if (this.activeLevelIndex >= this.levels.length - 1) return;\n\n const sourceLevelIndex = this.activeLevelIndex;\n this.navigationHistory.push(this.activeLevelIndex);\n let candidateIndex = this.activeLevelIndex + 1;\n\n while (candidateIndex <= this.levels.length - 1) {\n await this.fetchLevelContainers(candidateIndex, sourceLevelIndex);\n\n const empty = this.isLevelEmpty(candidateIndex);\n const block = this.levelFlag(sourceLevelIndex, \"block-if-next-empty\", CONTAINER_DEFAULTS.BLOCK_IF_NEXT_EMPTY);\n\n if (!empty) {\n if (this.levelFlag(candidateIndex, \"skip-on-single-entry\", CONTAINER_DEFAULTS.SKIP_ON_SINGLE_ENTRY) && this.checkSkipOnSingleEntry(candidateIndex)) {\n await this.autoSelectSingleEntry(candidateIndex);\n this.clickedTitleByLevel.delete(candidateIndex);\n this.navigationHistory.push(candidateIndex);\n candidateIndex++;\n continue;\n }\n // Arm the slide in the SAME update as activeLevelIndex so it only applies to the\n // entering level — doing it before the await lets it animate the still-visible source\n // level too (the \"animation runs twice\" bug).\n this.slide.enterForward(sourceLevelIndex);\n this.suppressNextLevelFetch = true; // already fetched here — don't let updated() refetch mid-slide\n this.activeLevelIndex = candidateIndex;\n this.activeLevelIsEmpty = false;\n return;\n }\n\n if (block) {\n this.revertHistoryTo(sourceLevelIndex);\n this.navigationHistory.pop();\n return;\n }\n\n this.clickedTitleByLevel.delete(candidateIndex);\n this.navigationHistory.push(candidateIndex);\n candidateIndex++;\n }\n\n this.revertHistoryTo(sourceLevelIndex);\n if (this.canGoBack) await this.navigateBack();\n }\n\n private async navigateBack(): Promise<void> {\n if (!this.canGoBack) return;\n const leavingLevel = this.activeLevelIndex;\n\n this.clearLevelFilters(this.activeLevelIndex);\n\n let targetIndex = this.navigationHistory.pop()!;\n while (this.navigationHistory.length > 0 && (\n this.isLevelEmpty(targetIndex)\n || (this.levelFlag(targetIndex, \"skip-on-single-entry-back\", CONTAINER_DEFAULTS.SKIP_ON_SINGLE_ENTRY_BACK) && this.checkSkipOnSingleEntry(targetIndex))\n )) {\n this.clearLevelFilters(targetIndex);\n targetIndex = this.navigationHistory.pop()!;\n }\n\n for (const container of this.containersByLevel[targetIndex] ?? []) {\n container.dispatchEvent(new Event(CardContainerEvents.Back, { bubbles: false }));\n }\n\n this.slide.enterBack(leavingLevel); // keep the leaving level visible under the slide\n this.activeLevelIndex = targetIndex;\n this.activeLevelIsEmpty = false;\n this.syncBackButtonVisibility();\n }\n\n private resetToFirstLevel(): void {\n for (let i = this.containersByLevel.length - 1; i >= 0; i--) this.clearLevelFilters(i);\n this.navigationHistory = [];\n this.clickedTitleByLevel.clear();\n this.activeLevelIndex = 0;\n this.activeLevelIsEmpty = false;\n this.syncBackButtonVisibility();\n }\n\n // ── Navigation helpers ───────────────────────────────────────────────\n\n private async fetchLevelContainers(levelIndex: number, sourceLevelIndex: number): Promise<void> {\n const definitions = this.getContainerDefinitions(levelIndex);\n const containers = this.containersByLevel[levelIndex] ?? [];\n\n for (let i = 0; i < containers.length; i++) {\n const filters = resolveFiltersForContainer(definitions[i], sourceLevelIndex, this.containerByClass, this.containersByLevel);\n if (filters !== SELF_MANAGED_FILTERS) containers[i].States.SelectedFilters = filters;\n containers[i].Refetch();\n }\n\n await CardDataService.WaitForAllCardContainerFetchPromises();\n }\n\n /** True when any container definition at the level sets the given boolean flag (else `fallback`). */\n private levelFlag(levelIndex: number, key: ContainerBoolFlag, fallback: boolean): boolean {\n return this.getContainerDefinitions(levelIndex).some(def => def[key] ?? fallback);\n }\n\n private async autoSelectSingleEntry(levelIndex: number): Promise<void> {\n this.skipInProgress = true;\n for (const container of this.containersByLevel[levelIndex] ?? []) {\n if (container.RootLevelCardCount === 1) {\n container.TriggerCardClick(0, false); // hidden container → applies the selection without navigating\n break;\n }\n }\n await CardDataService.WaitForAllCardContainerFetchPromises();\n this.skipInProgress = false;\n }\n\n /**\n * After a navigate-back-on-click returns to a list level, drill straight into the sibling\n * after the one just configured — stepping through properties/values. Uses each container's\n * last-clicked card to locate the position; no-ops at the end of the list (stays on the list).\n */\n private async advanceToNextSibling(): Promise<boolean> {\n await Promise.all(this.containersByLevel[this.activeLevelIndex].map(x => x.updateComplete));\n for (const container of this.containersByLevel[this.activeLevelIndex] ?? []) {\n const lastKey = container.LastClicked?.click?.[\"level-key\"];\n if (lastKey === undefined) continue;\n\n const cards = container.CardData?.get(container.Settings.Fetch[\"root-level\"])?.cards ?? [];\n const lastIndex = cards.findIndex(c => c.click?.[\"level-key\"] === lastKey);\n if (lastIndex >= 0 && container.TriggerCardClick(lastIndex + 1, false)) {\n return true; // drilled into the next sibling\n }\n }\n return false;\n }\n\n private finishAdvancing(): void {\n if (!this.advancing) return;\n this.advancing = false;\n this.requestUpdate();\n }\n\n private clearLevelFilters(levelIndex: number): void {\n for (const container of this.containersByLevel[levelIndex] ?? []) {\n container.Filter?.Reset(false, container.Context);\n container.States.ResetSelectedFilters();\n }\n }\n\n private revertHistoryTo(levelIndex: number): void {\n while (this.navigationHistory.length > 0 && this.navigationHistory[this.navigationHistory.length - 1] >= levelIndex) {\n this.navigationHistory.pop();\n }\n this.navigationHistory.push(levelIndex);\n }\n\n\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n // Event handlers\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\n private async handleCardClicked(levelIndex: number, event: CardClickEventInit, navigatesBack: boolean): Promise<void> {\n if (levelIndex !== this.activeLevelIndex) return;\n if (!event.detail?.data?.click) return;\n\n const title = extractCardTitle(event.detail.data.txt);\n if (title) this.clickedTitleByLevel.set(levelIndex, title);\n\n if (navigatesBack) {\n const advance = this.levelFlag(levelIndex, \"advance-to-next-on-back\", CONTAINER_DEFAULTS.ADVANCE_TO_NEXT_ON_BACK);\n if (advance) this.advancing = true; // hold the view so the prev-level doesn't flash\n await this.navigateBack();\n if (advance && await this.advanceToNextSibling()) {\n return;\n }\n this.finishAdvancing();\n return;\n }\n if (this.activeLevelIsEmpty || this.activeLevelIndex >= this.levels.length - 1) {\n this.finishAdvancing();\n return;\n }\n await this.navigateForward();\n this.finishAdvancing();\n }\n\n private async handleContainerPostFill(levelIndex: number, containerIndex: number): Promise<void> {\n if (levelIndex !== this.activeLevelIndex) return;\n if (this.skipInProgress) return;\n\n const definition = this.getContainerDefinitions(levelIndex)[containerIndex];\n const container = this.containersByLevel[levelIndex]?.[containerIndex];\n if (!container || !definition) return;\n\n this.activeLevelIsEmpty = this.isLevelEmpty(this.activeLevelIndex);\n\n if ((definition[\"reset-on-empty-refill\"] ?? CONTAINER_DEFAULTS.RESET_ON_EMPTY_REFILL) && container.isEmpty() && this.activeLevelIndex > 0) {\n this.resetToFirstLevel();\n return;\n }\n // skip-on-single-entry is handled pre-reveal in navigateForward (so the skipped level never\n // shows or animates) — no PostFill auto-click here.\n }\n\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n // Back-button protocol\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\n private resolveBackButtonText(): string {\n if (this.backButtonText.length > 0) return this.backButtonText;\n if (this.activeSideViewKey !== null) {\n // Drilled past the side view's root → show the container's current internal level text\n // (so Back reads \"Holz\", \"Wand\", … per level). At its root, fall back to the side-view\n // title (the fixed card that opened it, e.g. \"Wand- und Bodenbelag ändern\").\n const sideContainer = this.sideViewContainerByKey.get(this.activeSideViewKey);\n if (sideContainer?.CardContainerView_BackButtonOverwrite) {\n const sideText = sideContainer.AdditionalData.Get(\"back-button-txt\", \"\") as string;\n if (sideText.length > 0) {\n return sideText;\n }\n }\n if (this.activeSideViewTitle) {\n return this.activeSideViewTitle;\n }\n }\n for (let i = this.navigationHistory.length - 1; i >= 0; i--) {\n const title = this.clickedTitleByLevel.get(this.navigationHistory[i]);\n if (title?.length) return title;\n }\n return \"\";\n }\n\n private syncBackButtonState(): void {\n this.AdditionalData.Set(\"show-back-button\", this.canGoBack);\n const text = this.resolveBackButtonText();\n if (text.length > 0) this.AdditionalData.Set(\"back-button-txt\", text);\n CardContainerBackButtonComponent.HideStateUpdate();\n }\n\n private syncBackButtonVisibility(): void {\n this.AdditionalData.Set(\"show-back-button\", this.canGoBack);\n CardContainerBackButtonComponent.HideStateUpdate();\n }\n\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n // Render\n // â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�\n\n render(): TemplateResult<1> {\n const selfQuery = this.classList.length > 0\n ? `.${Array.from(this.classList).join(\".\")}`\n : \"*\";\n\n return html`\n ${this.showInternalBackButton ? html`\n <fv-card-container-back-button\n icon=\"${this.backButtonIcon}\"\n button-class=\"${ifDefined(this.backButtonClass || undefined)}\"\n ?text-in-button=${this.textInButton}\n .showAllways=${false}\n .targets=${[{tag: \"fv-card-container-view\", query: selfQuery, \"hidden-prevents-back\": undefined, \"partial-hide-limit-back-to-last\": undefined, \"txt-src-prio\": undefined, \"prevent-back\": undefined}]}\n ?hide-element=${!this.canGoBack}\n ></fv-card-container-back-button>\n ` : nothing}\n\n <div class=\"ccv-levels\">\n ${this.levels.map((level, index) => this.renderLevelWrapper(level, index))}\n ${Object.keys(this.fixedCardViews).map(key => this.renderSideViewWrapper(key))}\n </div>\n\n <div class=\"no-content ${classMap({hidden: this.activeSideViewKey !== null || !this.activeLevelIsEmpty})}\">\n <slot name=\"no-content\"></slot>\n </div>\n `;\n }\n\n private renderLevelWrapper(level: LevelDefinition, index: number): TemplateResult {\n const isActive = index === this.activeLevelIndex;\n const isLeaving = index === this.slide.fromLevel;\n const wrapperClasses: Record<string, boolean> = {\n \"ccv-level-wrapper\": true,\n [`ccv-level-wrapper-${index}`]: true,\n // keep the leaving level shown during a slide-over; both share one grid cell (.ccv-levels)\n // so the box sizes to the taller of the two, and the entering one (z-indexed above) overlays it.\n // when a side-view opens it slides over the level it masks (isLeaving), which stays until slide-end.\n hidden: this.activeSideViewKey !== null ? !isLeaving : (!isActive && !isLeaving),\n \"ccv-sliding-in\": isActive && this.slide.fromLevel !== null && this.activeSideViewKey === null,\n };\n for (const cls of level.classes ?? []) wrapperClasses[cls] = true;\n\n const wrapperStyles: Record<string, string> = {\n \"flex-direction\": level.layout ?? LEVEL_DEFAULTS.LAYOUT,\n flex: \"1\",\n overflow: \"auto\",\n ...(level[\"style-vars\"] ?? {}),\n };\n\n // Card containers are appended into `.ccv-level-cards` by buildContainers(). The two\n // slots sit outside it so light-DOM children projected via `slot=\"before-level-N\"` /\n // `slot=\"after-level-N\"` survive the imperative wipe-and-fill.\n return html`\n <div class=${classMap(wrapperClasses)} style=${styleMap(wrapperStyles)}\n @animationend=${this.slide.onEnd} @animationcancel=${this.slide.onEnd}>\n <slot name=\"before-level-${index}\" part=\"before-level-${index}\"></slot>\n <div class=\"ccv-level-cards\" part=\"level-cards\"></div>\n <slot name=\"after-level-${index}\" part=\"after-level-${index}\"></slot>\n </div>\n `;\n }\n\n private renderSideViewWrapper(key: string): TemplateResult {\n const def = this.fixedCardViews[key];\n const isActiveSide = this.activeSideViewKey === key;\n const isLeavingSide = this.slide.fromSideView === key;\n const wrapperClasses: Record<string, boolean> = {\n \"ccv-side-view-wrapper\": true,\n [`ccv-side-view-wrapper-${key}`]: true,\n // keep the closing side-view shown (static, underneath) while the level slides back over it\n hidden: !isActiveSide && !isLeavingSide,\n // only the entering side-view animates (and overlays); the closing one stays still beneath\n \"ccv-sliding-in\": isActiveSide && this.slide.fromLevel !== null,\n };\n for (const cls of def.classes ?? []) wrapperClasses[cls] = true;\n\n const wrapperStyles: Record<string, string> = {\n flex: \"1 1 auto\",\n overflow: \"auto\",\n ...(def[\"style-vars\"] ?? {}),\n };\n\n return html`\n <div class=${classMap(wrapperClasses)} style=${styleMap(wrapperStyles)}\n @animationend=${this.slide.onEnd} @animationcancel=${this.slide.onEnd}>\n <slot name=\"before-side-view-${key}\"></slot>\n <!-- side-view container appended here by buildSideViewContainers() -->\n <slot name=\"after-side-view-${key}\"></slot>\n </div>\n `;\n }\n public VerifyStepStageChange(): boolean {\n const containers = this.containersByLevel[this.activeLevelIndex] ?? [];\n for (const container of containers) {\n if (!container.hideElement && container.CardContainerView_BackButtonOverwrite) {\n container.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n this.syncBackButtonVisibility();\n return false;\n }\n }\n return true;\n }\n public async ApplyStepStage(stage_: number): Promise<void> {\n if (stage_ === this.activeLevelIndex) {\n return;\n }\n if (stage_ < 0 || stage_ > this.levels.length - 1) {\n return;\n }\n\n if (this.activeLevelIndex < stage_) {\n const difference = stage_ - this.activeLevelIndex;\n for (let index = 0; index < difference; ++index) {\n await this.navigateForward();\n }\n }\n else if (this.activeLevelIndex > stage_) {\n const difference = this.activeLevelIndex - stage_;\n for (let index = 0; index < difference; ++index) {\n await this.navigateBack();\n }\n }\n\n await this.updateComplete;\n await CardDataService.WaitForAllCardContainerFetchPromises();\n }\n\n private checkSkipOnSingleEntry(level_: number): boolean {\n const containers = this.containersByLevel[level_ < 0 ? 0 : level_];\n return containers.some(container => {\n if (container.CardData?.size !== 1) return false;\n const rootLevel = container.CardData.get(container.Settings.Fetch[\"root-level\"] as CardDataLevelKey);\n return rootLevel?.cards.length === 1;\n });\n }\n private get firstStepStage(): number {\n for (let index = this.activeLevelIndex; index > -1; --index) {\n if (this.checkSkipOnSingleEntry(index - 1)) {\n return index;\n }\n }\n return 0;\n }\n public async DetermineStepStageEnvironment(): Promise<{ current: number, first: number, last: number } | undefined> {\n await this.updateComplete;\n await CardDataService.WaitForAllCardContainerFetchPromises();\n return { current: this.activeLevelIndex, first: this.firstStepStage, last: this.levels.length - 1 };\n }\n\n\n public get CardData(): CardDataLevelMap | undefined {\n let result: CardDataLevelMap = new Map<CardDataLevelKey, CardDataLevel>();\n const activeLevel = this.containersByLevel[this.activeLevelIndex];\n for (const container of activeLevel) {\n if (container.CardData) {\n for (const data of container.CardData) {\n result.set(data[0], data[1]);\n }\n }\n }\n return result;\n }\n\n public async CheckFetchPromise(): Promise<boolean> {\n let result = 0;\n const activeLevel = this.containersByLevel[this.activeLevelIndex];\n for (const container of activeLevel) {\n if (await container.CheckFetchPromise()) {\n result += 1;\n }\n }\n return result == activeLevel.length;\n }\n\n public get RootLevelCardCount(): number {\n let count = 0;\n const activeLevel = this.containersByLevel[this.activeLevelIndex - 1 < 0 ? 0 : this.activeLevelIndex - 1];\n for (const container of activeLevel) {\n const cardData = container.CardData;\n if (cardData == undefined) continue;\n const rootLevel = cardData.get(container.Settings.Fetch[\"root-level\"]);\n if (rootLevel) {\n count += rootLevel.cards.length;\n }\n }\n return count;\n }\n\n private _dispatcher: CardContainerAsyncEventDispatcher | undefined = undefined;\n public get Dispatcher(): CardContainerAsyncEventDispatcher {\n if (this._dispatcher === undefined) {\n this._dispatcher = new CardContainerAsyncEventDispatcher(this.dispatchEvent.bind(this));\n }\n return this._dispatcher;\n }\n}\n","import {BaseElement} from \"../../base/base.component\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport {css, html, nothing, PropertyValueMap, TemplateResult, unsafeCSS} from \"lit\";\nimport {CardContainerEvents, type CardData, type CardMagnifiedEventInit,} from \"../../../../models/card-container\";\nimport style from \"./card-magnifier-view.component.sass?inline\";\nimport {ComponentStateHandlerMap} from \"../../../../models/event-handler/component-state-event\";\nimport { classMap } from \"lit/directives/class-map\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-card-magnifier-view:clear\": any;\n }\n}\n\n/**\n * Renders the last \"magnified\" card. Cards opt in via `data.additional.magnify` (per-card) or\n * `settings.Card.additional.magnify` (container-wide); each magnify click dispatches a\n * `CardMagnifiedEvent` on the window which this component picks up.\n *\n * Slot `placeholder` is shown when no card has been magnified yet.\n */\n@customElement(\"fv-card-magnifier-view\")\nexport class CardMagnifierViewComponent extends BaseElement {\n static styles = [super.styles || [], css`${unsafeCSS(style)}`];\n\n /** Element tag used to render the magnified card (must extend BaseCard). */\n @property({type: String, reflect: true, attribute: \"card-tag\"})\n public cardTag: string = \"fv-card\";\n\n /** Additional card style classes. */\n @property({type: String, reflect: true, attribute: \"card-class\"})\n public cardClass: string = \"\";\n\n /** When true, a close button is shown that clears the current card. Hidden when nothing is magnified. */\n @property({type: Boolean, reflect: true})\n public cancelable: boolean = false;\n\n @state() private currentCard: CardData | undefined = undefined;\n\n private readonly _onMagnified = (e: Event) => {\n const detail = (e as CardMagnifiedEventInit).detail;\n if (!detail || !!detail.target && !this.matches(detail.target)) return;\n this.currentCard = detail.data;\n detail[\"post-event\"]?.();\n };\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-card-magnifier-view:clear\": () => this.clear()\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n window.addEventListener(CardContainerEvents.CardMagnified, this._onMagnified);\n }\n\n disconnectedCallback(): void {\n window.removeEventListener(CardContainerEvents.CardMagnified, this._onMagnified);\n super.disconnectedCallback();\n }\n\n /** Clear the displayed card. */\n public clear(): void {\n this.currentCard = undefined;\n }\n\n /** Show a card programmatically (bypasses the click event). */\n public magnify(data: CardData): void {\n this.currentCard = data;\n }\n\n public get CurrentCard(): CardData | undefined {\n return this.currentCard;\n }\n\n render(): TemplateResult<1> {\n if (!this.currentCard) {\n return html`\n <div class=\"magnifier-placeholder\" part=\"placeholder\">\n <slot name=\"placeholder\"></slot>\n </div>`;\n }\n return html`\n <div class=\"magnifier-content\" part=\"content\">\n ${this.cancelable ? html`\n <div class=\"cancel-button\" part=\"cancel-button\" @click=\"${this._onCancel}\">\n <span class=\"close-symbol\"></span>\n </div>\n ` : nothing}\n ${this._renderCard(this.currentCard)}\n </div>\n `;\n }\n\n private _onCancel(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n this.clear();\n }\n\n /** No cardContainerClickData attached → rendered card is display-only (clicks inert). */\n private _renderCard(data: CardData): TemplateResult<1> {\n const tag = this.cardTag && this.cardTag.length > 0 ? this.cardTag : \"fv-card\";\n const classes = (this.cardClass.includes(\" \") ? this.cardClass.split(\" \") : [this.cardClass || \"\"]).filter(Boolean);\n const el = document.createElement(tag) as HTMLElement & { data?: CardData };\n el.classList.add(\"magnified-card\", ...classes);\n el.data = {\n ...Object.assign<CardData, CardData>(data, {\n additional: {\n magnify: false\n }\n })\n };\n return html`${el}`;\n }\n}\n","import {customElement} from \"lit/decorators.js\";\nimport {BaseCard} from \"../base/base.card\";\nimport {css, html, nothing, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./card.component.sass?inline\";\nimport {unsafeHTML} from \"lit/directives/unsafe-html.js\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport {CardDataService} from \"../../../../utils/card.data.service\";\n\n@customElement(\"fv-card\")\nexport class CardComponent extends BaseCard {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private makeTxtHtml(txt: string | undefined, txtClass: string | undefined): TemplateResult<1> {\n if (txt && txt.length > 0) {\n return html`\n <fv-label class=\"${txtClass && txtClass.length > 0 ? txtClass : \"\"}\">\n ${this.data?.translate ? LocaleService.translate(txt, txt) : txt}\n </fv-label>`;\n }\n return html``;\n }\n\n private get txtHtml(): TemplateResult<1> {\n if (this.data.txt) {\n return html`\n ${this.makeTxtHtml(this.data.txt.title, \"text title\")}\n ${this.makeTxtHtml(this.data.txt.subtitle, \"text subtitle\")}\n ${this.makeTxtHtml(this.data.txt.txt, \"text txt\")}\n\n ${this.data.txt.additional?.map(a => this.makeTxtHtml(a, \"text additional\"))}\n `;\n }\n return html``;\n }\n\n private get tooltipHtml(): TemplateResult<1> {\n if (this.data.tooltip && this.data.txt && this.data.txt.tooltip) {\n return html`\n <div class=\"tooltip-container\">\n <fv-label class=\"text tooltip\">\n ${this.data.txt.tooltip}\n </fv-label>\n </div>\n `;\n }\n return html``;\n }\n\n private clickTooltipButton(e: Event): void {\n e.stopPropagation();\n e.stopImmediatePropagation();\n e.preventDefault();\n this.classList.toggle(\"show-tooltip-static\");\n }\n\n private mouseEnterTooltip(): void {\n this.classList.add(\"show-tooltip\");\n }\n\n private mouseLeaveTooltip(): void {\n this.classList.remove(\"show-tooltip\");\n }\n\n private get tooltipButtonHtml(): TemplateResult<1> {\n if (this.data.tooltip && this.data.txt && this.data.txt.tooltip) {\n return html`\n <div class=\"tooltip-button\" @click=\"${this.clickTooltipButton}\" @mouseenter=\"${this.mouseEnterTooltip}\"\n @mouseleave=\"${this.mouseLeaveTooltip}\">?\n </div>`;\n }\n return html``;\n }\n\n private get iconHtml(): TemplateResult<1> {\n const noImage = this.data.image == undefined || this.data.image.file == undefined || this.data.image.file.length < 1;\n const empty = noImage && this.data.icon == undefined;\n if (empty) {\n this.classList.add(\"no-icon\");\n } else {\n this.classList.remove(\"no-icon\");\n }\n // Default: when there's no image/icon, render only the tooltip button (drop-in legacy\n // behavior — no img-container in the DOM).\n // Opt-in: add the `force-image` class to the host to always render the img-container so\n // the layout reserves the image area (useful for placeholders or aligned card grids).\n const forceImage = this.classList.contains(\"force-image\");\n if (empty && !forceImage) {\n return html`${this.tooltipButtonHtml}`;\n }\n return html`\n <div class=\"img-container\" part=\"img-container\">\n ${empty ? nothing : html`\n <fv-icon class=\"img\" part=\"img\"\n src=\"${this.imageSrc}\"\n icon=\"${this.data.icon ? this.data.icon : \"\"}\">\n ${this.magnifyButtonHtml}\n </fv-icon>\n `}\n ${this.tooltipButtonHtml}\n </div>\n `;\n }\n\n private get dimensionsHtml(): TemplateResult<1> {\n if (this.data.dimensions == undefined || this.data.dimensions.length < 1) {\n return html``;\n }\n return html`\n <fv-dimensions-information class=\"dimensions\" part=\"dimensions\"\n .dimensions=\"${this.data.dimensions}\"></fv-dimensions-information>`;\n }\n\n private get priceHtml(): TemplateResult<1> {\n if (this.data.price == undefined || (this.data.price.uvp == undefined && this.data.price.value == undefined)) {\n return html``;\n }\n return html`\n <fv-price-display class=\"prices\" part=\"prices\" .price=\"${this.data.price}\"></fv-price-display>`;\n }\n\n private buttonClick(event: Event, params: { [key: string]: unknown } | undefined): void {\n event.stopPropagation();\n event.stopImmediatePropagation();\n event.preventDefault();\n\n if (this.cardContainerClickData) {\n CardDataService.ClickCardButton(params, this.data, this.cardContainerClickData.context);\n } else {\n console.error(\"card.component: no cardContainerClickData provided!\");\n }\n }\n\n private get buttonsHtml(): TemplateResult<1> {\n if (!this.data[\"button-groups\"] || this.data[\"button-groups\"].length < 1) {\n return html``;\n }\n return html`\n <div class=\"group-wrapper\">\n ${this.data[\"button-groups\"].map(buttonGroup => html`\n <div class=\"group\" style=\"${buttonGroup.style ? Object.entries(buttonGroup.style).map(([k, v]) => `${k}: ${v}`).join(';') : ''}\">\n ${buttonGroup.title ? html`${this.makeTxtHtml(buttonGroup.title, \"title\")}` : html``}\n <div class=\"buttons\">\n ${buttonGroup.items.map(entry => html`\n <fv-button\n @click=\"${(e: Event) => {\n this.buttonClick(e, entry[\"click-data\"])\n }}\"\n class=\"${entry.bordered && !entry.active ? \"bordered\" : \"\"}${entry.active && !entry.bordered ? \"active\" : \"\"}${entry.bordered && entry.active ? \"bordered active\" : \"\"}\"\n icon=\"${entry.icon || \"\"}\">\n </fv-button>`\n )}\n </div>\n </div>\n `)}\n </div>\n `;\n }\n\n private get textFieldsHtml() {\n if ((!this.data.inputs || this.data.inputs.length <= 0) && (!this.data.dropdowns || this.data.dropdowns.length <= 0) && (!this.data[\"dimension-ranges\"] || this.data[\"dimension-ranges\"].length <= 0)) {\n return html``\n }\n const clickGroup = (ev: MouseEvent) => {\n ev.stopPropagation();\n ev.stopImmediatePropagation();\n ev.preventDefault();\n }\n return html`\n <fv-card-container-input-manager .card=\"${this}\"></fv-card-container-input-manager>\n `\n // return html`\n // <div class=\"group-wrapper\" @click=\"${clickGroup}\">\n // ${this.data.inputs.map(group => html`\n // <div class=\"group\">\n // ${group.title ? html`${this.makeTxtHtml(group.title, \"title\")}` : html``}\n // <div class=\"inputs\">\n // ${group.items.map(entry => {\n // return html`\n // <fv-labeled-input class=\"${classMap(entry.classes || {})}\"\n // @change=\"${(ev: Event) => textFieldChanged(ev, entry)}\"\n // @blur=\"${(ev: Event) => textFieldChanged(ev, entry)}\"\n // moveable-placeholder\n // value=\"${entry.value}\"\n // type=\"${entry.type}\"\n // name=\"${entry.name}\"\n // min=\"${entry.min}\"\n // max=\"${entry.max}\"\n // ?readonly=\"${entry.readonly}\"\n // placeholder=\"${entry.placeholder}\"\n // ?required=\"${entry.required}\"\n // >\n // ${entry.suffix ? html`\n // <div class=\"suffix-container\">\n // <fv-label>${entry.suffix}</fv-label>\n // </div>\n // ` : nothing}\n // </fv-labeled-input>\n // `\n // })}\n // </div>\n // </div>\n // `)}\n // </div>\n // `\n }\n\n protected render(): TemplateResult<1> {\n if (this.mobile) {\n this.classList.add(\"mobile\");\n this.classList.remove(\"desktop\");\n } else {\n this.classList.add(\"desktop\");\n this.classList.remove(\"mobile\");\n }\n\n return html`\n ${this.iconHtml}\n <div class=\"card-content\">\n ${this.buttonsHtml}\n ${this.textFieldsHtml}\n ${this.dimensionsHtml}\n <div class=\"text-container\">\n <slot name = \"text-before\"></slot>\n ${this.txtHtml}\n <slot name = \"text-after\"></slot>\n </div>\n ${this.tooltipHtml}\n ${this.priceHtml}\n </div>\n <div class=\"free button-container\">\n <slot name=\"button\"></slot>\n </div>\n <div class=\"free additional\">\n <slot name=\"additional\"></slot>\n </div>\n ${super.render()}\n `;\n }\n}\n","import { css, html, notEqual, nothing, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { CardComponent } from \"../basic.card/card.component\";\r\nimport { customElement, state } from \"lit/decorators.js\"\r\nimport style from \"./article-card.component.sass?inline\";\r\n\r\n@customElement(\"fv-article-card\")\r\nexport class ArticleCardComponent extends CardComponent {\r\n static styles = [\r\n super.styles || [],\r\n css`${unsafeCSS(style)}`\r\n ];\r\n\r\n render() {\r\n return html`\r\n ${super.render()}\r\n ${this.renderCheckmark()}\r\n `\r\n }\r\n\r\n renderCheckmark() {\r\n if (!this.data.active) return nothing;\r\n return html`<fv-icon class=\"icon-check-circle\" icon=\"fv-icon-check-circle\"></fv-icon>`\r\n }\r\n\r\n}","import { customElement } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { BaseCard } from \"../base/base.card\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport style from \"./color-picker-card.component.sass?inline\";\n\n\n@customElement(\"fv-color-picker-card\")\nexport class ColorPickerCardComponent extends BaseCard {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private _applyTimer: number | undefined;\n\n constructor() {\n super();\n }\n\n disconnectedCallback(): void {\n if (this._applyTimer != undefined) {\n clearTimeout(this._applyTimer);\n this._applyTimer = undefined;\n }\n super.disconnectedCallback();\n }\n\n private onColorChange(event_: Event): void {\n const detail = (event_ as CustomEvent<{ red: number; green: number; blue: number }>).detail;\n if (detail == undefined) {\n return;\n }\n this.applyRgb(detail.red, detail.green, detail.blue);\n }\n\n private applyRgb(r_: number, g_: number, b_: number): void {\n const clickData = this.cardContainerClickData;\n if (clickData == undefined || clickData.context == undefined || this.data.click == undefined) {\n return;\n }\n\n this.data.click[\"rgb-code\"] = {\n r: r_,\n g: g_,\n b: b_\n };\n\n if (this._applyTimer != undefined) {\n clearTimeout(this._applyTimer);\n }\n this._applyTimer = setTimeout(() => {\n this._applyTimer = undefined;\n CardDataService.ClickCard(this.data, clickData.context);\n }, 500);\n }\n\n protected render(): TemplateResult<1> {\n return html`\n <div class=\"picker-wrapper\" @click=\"${(e: Event) => e.stopPropagation()}\">\n <dh-color-picker mode=\"extended\" @colorChange=\"${this.onColorChange}\"></dh-color-picker>\n </div>\n ${super.render()}\n `;\n }\n}\n","import {\n CardContainerContext,\n CardContainerCustomIconButtonEvent,\n CardContainerSelectionChangeEvent,\n CardContainerSpecialInteractionContext,\n CardContainerUpdate,\n CardDataLevel,\n CardDataLevelKey,\n CardDataLevelMap,\n CardDataUpdateEvent,\n CardFetchMethod,\n FetchResult,\n FilterSelectionStrategy,\n ICardDataInputSource\n} from \"../../models/card-container\";\nimport { CardData } from \"../../models/card-container\";\nimport { EventHandlerEvent } from \"../../models/event-handler/event.handler.model\";\nimport { IDragOptions } from \"@dh-software/webui-types\";\nimport {InputComponent} from \"../../components/standard/input\";\nimport {BaseInput} from \"../../components/standard/input/base/base-input\";\nimport {CardComponent} from \"../../components/standard/cards\";\nimport {BaseCardContainer} from \"../../components/standard/card-container/base/base-card-container\";\n\ninterface PersistentCardData {\n [key: string]: unknown;\n}\n\nexport class CardContainerPersistentStorage<K extends string | number = string> extends Map<K, PersistentCardData> {\n\n public getSubKeyItem<T = unknown>(key: K, subKey: string): T | undefined {\n const cardData = this.get(key);\n if (cardData) {\n if (Object.prototype.hasOwnProperty.call(cardData, subKey)) {\n return cardData[subKey] as T;\n }\n }\n return undefined;\n }\n\n public setSubKeyItem(key: K, subKey: string, value: unknown): this {\n let cardData = this.get(key);\n if (!cardData) {\n cardData = {};\n this.set(key, cardData);\n }\n cardData[subKey] = value;\n return this;\n }\n\n public deleteSubKeyItem(key: K, subKey: string, deleteIfEmpty: boolean = false): boolean {\n const cardData = this.get(key);\n if (cardData) {\n if (Object.prototype.hasOwnProperty.call(cardData, subKey)) {\n delete cardData[subKey];\n if (deleteIfEmpty && Object.keys(cardData).length === 0) {\n this.delete(key);\n }\n return true;\n }\n }\n return false;\n }\n\n public hasSubKey(key: K, subKey: string): boolean {\n const cardData = this.get(key);\n return cardData ? Object.prototype.hasOwnProperty.call(cardData, subKey) : false;\n }\n\n}\n\nexport abstract class BaseCardDataAppConnection<T = FetchResult> {\n private _persistentStore = new CardContainerPersistentStorage();\n private _method: CardFetchMethod = CardFetchMethod.NONE;\n public get Method(): CardFetchMethod {\n if (this._method == CardFetchMethod.NONE) {\n console.error(\"BaseCardDataAppConnection> CardFetchMethod not set in implementation! Please use 'this.Method = CardFetchMethod.[?]' in implementation!\");\n }\n return this._method;\n }\n protected set Method(method: CardFetchMethod) {\n this._method = method;\n }\n\n public get Store(): CardContainerPersistentStorage {\n return this._persistentStore;\n }\n\n public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n return CardContainerUpdate.NONE;\n }\n public InteractionOnSelectionChange(context: CardContainerContext, eventParameters: CardContainerSelectionChangeEvent): void {\n return;\n }\n public InteractionOnIconButton(context: CardContainerContext, eventParameters: CardContainerCustomIconButtonEvent, preEvents: Array<EventHandlerEvent> | undefined, postEvents: Array<EventHandlerEvent> | undefined): void {\n return;\n }\n\n public async CheckSpecialInteractionContext(context: CardContainerContext) {\n return CardContainerSpecialInteractionContext.NONE;\n }\n\n public async Fetch(context: CardContainerContext): Promise<T> {\n return {} as T;\n }\n public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n return unfiltered as T;\n }\n\n public CreateCards(filtered: T, context: CardContainerContext): CardDataLevelMap {\n return new Map<CardDataLevelKey, CardDataLevel>();\n }\n\n public GetFormattedDragData(card: CardData, context: CardContainerContext): IDragOptions | undefined {\n return undefined;\n }\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n return;\n }\n\n public async ClickCardButton(data: { [key: string]: unknown } | undefined, card: CardData, context: CardContainerContext): Promise<void> {\n return;\n }\n\n public async TextFieldChanged(card: CardData, context: CardContainerContext, field: ICardDataInputSource): Promise<void> {\n return;\n }\n\n public GetFilterSelectionAdditionalParams(context: CardContainerContext): { [key: string]: unknown } | undefined {\n return undefined;\n }\n public GetFilterSelectionStrategy(context: CardContainerContext): FilterSelectionStrategy {\n return FilterSelectionStrategy.NONE;\n }\n public InitFilterSelectionParams(context: CardContainerContext): void {\n return;\n }\n}\n","import {BaseCardDataAppConnection} from \"./base.card.app.connection\";\nimport {CardContainerContext, CardData} from \"../../models/card-container\";\nimport {CatalogService} from \"../catalog.service\";\nimport {ManuProgService} from \"../manu-prog.service\";\nimport {CommunicationMessageService, LocaleService} from \"@dh-software/webui-api\";\nimport {IArticleData, ICategoryData, IKataPageData, IKataTreeData} from \"@dh-software/webui-types\";\n\nexport interface OldGeneratedCatalogFetchResult {\n articles: IArticleData[];\n \"kata-pages\": Map<string, IKataPageData>;\n \"kata-tree\": IKataTreeData;\n}\n\nexport class OldGeneratedCatalogBaseCardDataAppConnection<T extends OldGeneratedCatalogFetchResult> extends BaseCardDataAppConnection<T> {\n private async FetchArticles(context: CardContainerContext, showCategoriesArray: Array<string>, fetchKey: string): Promise<OldGeneratedCatalogFetchResult> {\n const result: OldGeneratedCatalogFetchResult = {\n articles: [],\n \"kata-pages\": new Map<string, IKataPageData>(),\n \"kata-tree\": {\n definedEquipmentFilterCategories: [],\n definedFilterCategories: [],\n FittingInfo: [],\n allKataPages: [],\n kataPages: [],\n distinctProgCatsFromDb: []\n }\n };\n if (context.settings.Fetch.parameters[\"only-specific-categories\"]) {\n const categories = context.settings.Fetch.parameters[\"only-specific-categories\"] as Array<string>;\n if (categories.length > 0) {\n result.articles = await CommunicationMessageService.getArticleByCategories(context.settings.Fetch.manufacturer, context.settings.Fetch.program, categories);\n OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.set(fetchKey, result);\n return result;\n }\n }\n\n\n let forcedCategoryFilters: Array<string> = [];\n if (window.g_article_categories?.length > 0) {\n forcedCategoryFilters = window.g_article_categories;\n } else {\n const categoriesString: string = window.g_configuration?.webui_category_filter?.trim();\n if (categoriesString) {\n forcedCategoryFilters = categoriesString.split(\",\").map(x => x.trim());\n }\n }\n if (forcedCategoryFilters.length > 0) {\n result.articles = await CommunicationMessageService.getArticleByCategories(context.settings.Fetch.manufacturer, context.settings.Fetch.program, forcedCategoryFilters);\n OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.set(fetchKey, result);\n return result;\n }\n\n const shouldMergeCategories = context.settings.Fetch.parameters[\"merge-categories\"] as boolean || false;\n const kataTree = await CommunicationMessageService.getKataTreeJson({\n manufacturer: context.settings.Fetch.manufacturer,\n program: context.settings.Fetch.program,\n mergeCategories: shouldMergeCategories\n });\n\n const kataPagesToShow = new Array<string>();\n const kataPagesToShowParam = context.settings.Fetch.parameters[\"kata-pages-to-show\"] as {\n [program: string]: Array<string>\n } | Array<string>;\n if (kataPagesToShowParam) {\n if (Array.isArray(kataPagesToShowParam)) {\n kataPagesToShow.push(...kataPagesToShowParam);\n } else if (kataPagesToShowParam[context.settings.Fetch.program]) {\n kataPagesToShow.push(...kataPagesToShowParam[context.settings.Fetch.program]);\n }\n }\n const preventCatConfigFilter = context.settings.Fetch.parameters[\"prevent-cat-config-filter\"] ?? false;\n let sortedKataPages = kataTree.kataPages\n if (!preventCatConfigFilter) {\n sortedKataPages = await CatalogService.filterKataModules(sortedKataPages)\n }\n sortedKataPages = (<ICategoryData[]>sortedKataPages).sort((a, b) => {\n const aOrder = a.order ?? 9999;\n const bOrder = b.order ?? 9999;\n return aOrder - bOrder;\n });\n\n const relevantKataPages = new Map<string, IKataPageData>();\n for (const kataPageCategory of sortedKataPages) {\n if (kataPagesToShow.length < 1 || kataPagesToShow.includes(kataPageCategory.id)) {\n if (kataPageCategory.id.includes(\"dhcat_\")) {\n if (relevantKataPages.has(kataPageCategory.id) == false) {\n const kataPageData = await CommunicationMessageService.getKataPage(kataPageCategory.id.replace(\"dhcat_\", \"\"), \"\", context.settings.Fetch.manufacturer, context.settings.Fetch.program);\n relevantKataPages.set(kataPageCategory.id, kataPageData);\n }\n }\n }\n }\n\n const anyCategoryInString = (catString: string, categories: Array<string>) => {\n for (const category of categories) {\n if (catString.includes(category)) {\n return true;\n }\n }\n return false;\n };\n const resultArticles = new Array<IArticleData>();\n for (const kataPageData of relevantKataPages) {\n if (kataPageData && kataPageData[1] && kataPageData[1].Modules) {\n for (const module of kataPageData[1].Modules) {\n for (let articles of module.Articles) {\n if(!preventCatConfigFilter) {\n articles = await CatalogService.filterArticlesList(articles);\n }\n for (const article of articles) {\n if (resultArticles.includes(article as IArticleData) == false) {\n if (showCategoriesArray.length == 0 || anyCategoryInString(article.CatString, showCategoriesArray)) {\n resultArticles.push(article as IArticleData);\n }\n }\n }\n }\n }\n }\n }\n result.articles = resultArticles;\n result[\"kata-pages\"] = relevantKataPages;\n result[\"kata-tree\"] = kataTree;\n OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.set(fetchKey, result);\n return result;\n }\n\n private static fetchCache = new Map<string, OldGeneratedCatalogFetchResult>();\n\n private async _Fetch(context: CardContainerContext, fetchKey: string, showCategoriesArray: Array<string>): Promise<OldGeneratedCatalogFetchResult> {\n let fetchResult = OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.get(fetchKey);\n if (fetchResult == undefined) {\n fetchResult = await this.FetchArticles(context, showCategoriesArray, fetchKey);\n }\n const result = await super.Fetch(context);\n result[\"articles\"] = fetchResult[\"articles\"];\n result[\"kata-pages\"] = fetchResult[\"kata-pages\"];\n result[\"kata-tree\"] = fetchResult[\"kata-tree\"];\n return result;\n }\n\n private static fetches: Map<string, Promise<OldGeneratedCatalogFetchResult>> = new Map<string, Promise<OldGeneratedCatalogFetchResult>>();\n\n public async Fetch(context: CardContainerContext): Promise<T> {\n context.settings.Fetch.manufacturer = context.settings.Fetch.manufacturer && context.settings.Fetch.manufacturer.length > 0 ? context.settings.Fetch.manufacturer : await ManuProgService.getManufacturer();\n context.settings.Fetch.program = context.settings.Fetch.program && context.settings.Fetch.program.length > 0 ? context.settings.Fetch.program : await ManuProgService.getProgram();\n const showCategoriesArray = new Array<string>();\n const categoriesToShowSettings = context.settings.Fetch.parameters[\"categories-to-show\"] as {\n [program: string]: Array<string>\n } | Array<string>;\n const categoriesToHideSettings = context.settings.Fetch.parameters[\"categories-to-hide\"] as {\n [program: string]: Array<string>\n } | Array<string>;\n if (categoriesToShowSettings) {\n if (Array.isArray(categoriesToShowSettings)) {\n showCategoriesArray.push(...categoriesToShowSettings);\n } else {\n const keys = Object.keys(categoriesToShowSettings);\n for (const key of keys) {\n if (categoriesToShowSettings[key]) {\n showCategoriesArray.push(...categoriesToShowSettings[key]);\n }\n }\n }\n }\n\n if (context.settings.Fetch.parameters[\"clear-cache\"]) {\n OldGeneratedCatalogBaseCardDataAppConnection.fetches.clear();\n OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.clear();\n }\n\n const fetchKey = context.settings.Fetch.manufacturer + \",\" + context.settings.Fetch.program + \",\" + showCategoriesArray.join(\",\") + \",\" + LocaleService.getLanguage();\n let fetch = OldGeneratedCatalogBaseCardDataAppConnection.fetches.get(fetchKey);\n if (!fetch) {\n fetch = this._Fetch(context, fetchKey, showCategoriesArray);\n OldGeneratedCatalogBaseCardDataAppConnection.fetches.set(fetchKey, fetch);\n }\n const fetchData = await fetch;\n if (categoriesToHideSettings && fetchData && fetchData.articles) {\n let categoriesToHide: Array<string> = [];\n if (Array.isArray(categoriesToHideSettings)) {\n categoriesToHide = categoriesToHideSettings;\n } else {\n const keys = Object.keys(categoriesToHideSettings);\n for (const key of keys) {\n if (categoriesToHideSettings[key]) {\n categoriesToHide.push(...categoriesToHideSettings[key]);\n }\n }\n }\n fetchData.articles = fetchData.articles.filter((article) => {\n if (article.CatString) {\n for (const cat of categoriesToHide) {\n if ((article.CatString as string).includes(cat)) {\n return false;\n }\n }\n }\n return true;\n });\n }\n return fetchData as T;\n }\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n const resetLevelsFilterOnDisabledClick = context.settings.Fetch.parameters[\"disabled-reset-selection\"];\n if (resetLevelsFilterOnDisabledClick && card.disabled) {\n if (context.filter != undefined) {\n context.filter.Reset(true, context);\n }\n }\n await super.Click(card, context);\n }\n}\n","import { OldGeneratedCatalogBaseCardDataAppConnection } from \"./old-generated-catalog-base.card.app.connection\";\nimport {\n CardContainerBackToStartEvent,\n CardContainerContext,\n CardContainerSelectionChangeEvent,\n CardContainerCustomIconButtonEvent,\n CardContainerTriggerCardClickEvent,\n CardContainerAsyncEventDispatcher,\n CardContainerUpdate,\n CardDataLevel,\n CardDataLevelKey,\n CardDataUpdateEvent,\n CardFetchMethod,\n FetchResult,\n FilterSelectionStrategy\n} from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { CardData } from \"../../models/card-container\";\nimport { EventHandlerEvent } from \"../../models/event-handler/event.handler.model\";\nimport { UtilService } from \"../util.service\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\nimport {IArticleData, ICategoryData, IKataPageData, IKataTreeData, IPlannedArticle} from \"@dh-software/webui-types\";\nimport { EventHandlerService } from \"../event.handler.service\";\n\ninterface CardCategoryDataInternal extends ICategoryData {\n \"next-level\": string\n}\n\nclass KataPageSelectionCardAppConnection extends OldGeneratedCatalogBaseCardDataAppConnection<any> {\n constructor() {\n super();\n this.Method = CardFetchMethod.KataPageSelection;\n }\n\n public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n const showOnlyPlanned = context.settings.Fetch.parameters[\"show-only-planned\"] === true;\n switch (event) {\n case CardDataUpdateEvent.SelectionChanged:\n case CardDataUpdateEvent.LastPOLoaded:\n return showOnlyPlanned ? CardContainerUpdate.FETCH : CardContainerUpdate.FILTER;\n default:\n return CardContainerUpdate.NONE;\n }\n }\n\n public InteractionOnSelectionChange(context: CardContainerContext, eventParameters: CardContainerSelectionChangeEvent): void {\n if (context.settings.Fetch.parameters[\"select-from-selection-in-scene\"] === true) {// disable unless explicitly enabled!\n const lastSelectedElement = eventParameters.objectInfo[eventParameters.objectInfo.length - 1];\n if (lastSelectedElement) {\n this._OpenArticleCardContainer(context, lastSelectedElement.instanceIdent);\n }\n }\n }\n\n public InteractionOnIconButton(context: CardContainerContext, eventParameters: CardContainerCustomIconButtonEvent, preEvents: Array<EventHandlerEvent> | undefined, postEvents: Array<EventHandlerEvent> | undefined): void {\n if (context.settings.Fetch.parameters[\"select-from-icon-button-command\"] === eventParameters.command) {\n this._OpenArticleCardContainer(context, eventParameters.instanceIdent, preEvents, postEvents);\n }\n }\n\n\n private selectionState = new WeakMap<CardContainerContext, {\n previousLastSelectedElement?: number;\n lastSelectionChangeTime?: number;\n selectionChangePromise?: Promise<void>;\n }>();\n\n // private previousLastSelectedElement: number | undefined = undefined;\n // private lastSelectionChangeTime: number | undefined = undefined;\n // private selectionChangePromise: Promise<void> | undefined = undefined;\n private _InteractionOnSelectionChangeCheckLevel(level: CardDataLevel, plannedArticleNumber: string): string {\n if (level.additional && level.additional[\"articles-by-level-key\"]) {\n const keys = Object.keys(level.additional[\"articles-by-level-key\"]);\n for (const key of keys) {\n const aricles = (level.additional[\"articles-by-level-key\"] as { [key: string]: Array<IArticleData> })[key];\n\n let articleInList = false;\n for (const article of aricles) {\n if (article.ArtNr == plannedArticleNumber) {\n articleInList = true;\n break;\n }\n }\n\n if (articleInList) {\n return key;\n }\n }\n }\n return \"\";\n }\n\n private async _OpenArticleCardContainer(context: CardContainerContext, instanceIdent_: number, preEvents?: Array<EventHandlerEvent>, postEvents?: Array<EventHandlerEvent>): Promise<void> {\n const triggerTime = Date.now();\n if (instanceIdent_ == undefined) {\n return;\n }\n\n let state = this.selectionState.get(context);\n if (!state) {\n state = {};\n this.selectionState.set(context, state);\n }\n\n if (state.previousLastSelectedElement != undefined) {\n if (state.lastSelectionChangeTime != undefined && triggerTime - state.lastSelectionChangeTime < 1000) {\n if (state.previousLastSelectedElement == instanceIdent_) {\n return;\n }\n }\n }\n\n state.previousLastSelectedElement = instanceIdent_;\n state.lastSelectionChangeTime = triggerTime;\n\n if (state.selectionChangePromise != undefined) {\n await state.selectionChangePromise;\n }\n\n const selectionChangePromise = new Promise<void>((resolve) => {\n CommunicationMessageService.getLOsFromScene([instanceIdent_]).then(async articles => {\n if (context.cards == undefined || articles.length === 0) {\n resolve();\n if (state.selectionChangePromise === selectionChangePromise) state.selectionChangePromise = undefined;\n return;\n }\n\n let katapageToOpen = \"\";\n\n // check root level\n const root = context.cards.get(context.settings.Fetch[\"root-level\"]);\n if (root && root.additional) {\n katapageToOpen = this._InteractionOnSelectionChangeCheckLevel(root, articles[0].catalogArticleNumber ? articles[0].catalogArticleNumber : articles[0].articlenumber);\n }\n\n // check other levels, open first hit\n if (katapageToOpen === \"\") {\n for (const card of context.cards) {\n if (card[0] == context.settings.Fetch[\"root-level\"]) {\n continue; // skip root level, already priotised before\n }\n katapageToOpen = this._InteractionOnSelectionChangeCheckLevel(card[1], articles[0].catalogArticleNumber ? articles[0].catalogArticleNumber : articles[0].articlenumber);\n if (katapageToOpen) break;\n }\n }\n\n if (katapageToOpen && context.cards.has(katapageToOpen)) {\n if (preEvents && preEvents.length > 0) {\n await EventHandlerService.dispatchEventList(preEvents, false);\n }\n\n await context.dispatchAsyncEvent(done => new CardContainerBackToStartEvent(done));\n await context.dispatchAsyncEvent(done => new CardContainerTriggerCardClickEvent([katapageToOpen], done));\n\n if (postEvents && postEvents.length > 0) {\n await EventHandlerService.dispatchEventList(postEvents, false);\n }\n }\n\n resolve();\n if (state.selectionChangePromise === selectionChangePromise) state.selectionChangePromise = undefined;\n }).catch(() => {\n resolve();\n if (state.selectionChangePromise === selectionChangePromise) state.selectionChangePromise = undefined;\n });\n });\n state.selectionChangePromise = selectionChangePromise;\n }\n\n private CheckPageForCategoryCombnation = (articles: Array<IArticleData>, categories: Array<string>)=>{\n for (const article of articles) {\n let includes = true;\n for (const category of categories) {\n if (article.CatString.includes(category) == false) {\n includes = false;\n break;\n }\n }\n if (includes) {\n return true;// has any\n }\n }\n return false;\n };\n private AppendLevel = (levels: Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>, level: Array<CardCategoryDataInternal>, key: string, name: string)=>{\n if (level.length > 0) {\n const existingLevel = levels.get(key);\n if (existingLevel) {\n for (const card of level) {\n if (existingLevel.data.includes(card) == false) {\n existingLevel.data.push(card);\n }\n }\n return;\n }\n levels.set(key, {\n data: level,\n name: name\n });\n }\n };\n\n public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n const result = await super.Fetch(context) as {\n \"kata-tree\": IKataTreeData,\n \"kata-pages\": Map<string, IKataPageData>,\n \"levels-data\": Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>\n };\n\n if (result[\"kata-tree\"] == undefined) return result;\n if (result[\"kata-tree\"].kataPages == undefined) {\n console.error(\"kata page selection> katatree does not have the kataPages node!\", result[\"kata-tree\"]);\n return result;\n }\n if (result[\"kata-pages\"].size < 1) return result;// no kata-pages\n\n let plannedArtNrs: Set<string> | undefined;\n if (context.settings.Fetch.parameters[\"only-planned-articles\"] === true) {\n const plannedArticles: Array<IPlannedArticle> = await CommunicationMessageService.getPlannedArticles();\n plannedArtNrs = new Set(plannedArticles.map(a => a.catalogArticleNumber));\n if(context.settings.Fetch.parameters[\"use-default-artnr\"] === true) {\n plannedArticles.map(a => a.articlenumber).map(artNr => plannedArtNrs!.add(artNr));\n }\n }\n\n const levels = new Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>();\n for (const kataPageCategory of result[\"kata-tree\"].kataPages) {\n if (kataPageCategory.id.includes(\"dhcat_\") == false) continue; // skip accessoires, finishes etc.\n\n if (context.settings.Fetch.parameters && context.settings.Fetch.parameters[\"categories-to-hide\"]) {\n let categoriesToHide: Array<string> = [];\n if (Array.isArray(context.settings.Fetch.parameters[\"categories-to-hide\"])) categoriesToHide = context.settings.Fetch.parameters[\"categories-to-hide\"];\n else {\n Object.keys(context.settings.Fetch.parameters[\"categories-to-hide\"])\n .forEach((key: string) => {\n categoriesToHide.push(...(context.settings.Fetch.parameters[\"categories-to-hide\"] as {\n [key: string]: Array<string>\n })[key]);\n });\n }\n if (categoriesToHide.includes(kataPageCategory.id)) continue;\n }\n\n const page = result[\"kata-pages\"].get(kataPageCategory.id);\n if (page === undefined || Object.keys(page).length === 0) continue;\n\n const articles = page.Modules[0]?.Articles[0] as Array<IArticleData>;\n if (articles == undefined) continue;\n\n if (plannedArtNrs !== undefined && !articles.some(a => [...plannedArtNrs!].some(nr => a.ArtNr.startsWith(nr)))) continue;\n\n if (kataPageCategory.children) {\n const prioUnsortedLevelsData = new Map<number, Array<ICategoryData>>();\n kataPageCategory.children.forEach(child=>{\n const existing = prioUnsortedLevelsData.get(child.priority);\n if (existing) {\n if (existing.includes(child) == false) {\n existing.push(child);\n }\n }\n else {\n prioUnsortedLevelsData.set(child.priority, [child]);\n }\n });\n\n const prioSortedLevelsData = new Map([...prioUnsortedLevelsData].sort());\n const prioSortedLevelsDataKeys = new Array<number>();\n prioSortedLevelsData.forEach((levelData, key)=>{\n prioSortedLevelsDataKeys.push(key);\n });\n\n for (let levelsDataKeyIndex = 0; levelsDataKeyIndex < prioSortedLevelsDataKeys.length; ++levelsDataKeyIndex) {\n const levelData = prioSortedLevelsData.get(prioSortedLevelsDataKeys[levelsDataKeyIndex]);\n if (levelData == undefined) continue;\n const nextLevelData = levelsDataKeyIndex < prioSortedLevelsDataKeys.length - 1 ? prioSortedLevelsData.get(prioSortedLevelsDataKeys[levelsDataKeyIndex+1]) : undefined;\n const previousLevelData = levelsDataKeyIndex > 0 ? prioSortedLevelsData.get(prioSortedLevelsDataKeys[levelsDataKeyIndex-1]) : undefined;\n\n const nextLevelKeys = new Array<string>();\n if (nextLevelData) {\n nextLevelData.forEach(cardData=>{\n nextLevelKeys.push(cardData.id);\n });\n }\n\n const previousLevels = new Array<{ id: string, name: string }>();\n if (previousLevelData) {\n previousLevelData.forEach(cardData=>{\n previousLevels.push({ id: cardData.id, name: cardData.name });\n });\n }\n\n\n if (previousLevels.length > 0) {\n for (const previousLevel of previousLevels) {\n const level = new Array<CardCategoryDataInternal>();\n levelData.forEach(cardData=>{\n const categories = [cardData.id, kataPageCategory.id, previousLevel.id];\n\n const validNextLevelCategories = new Array<string>();\n for (const nextLevelKey of nextLevelKeys) {\n const checkCategories = new Array(...categories);\n checkCategories.push(nextLevelKey);\n if (this.CheckPageForCategoryCombnation(articles, checkCategories)) {\n validNextLevelCategories.push(nextLevelKey);\n }\n }\n\n if (this.CheckPageForCategoryCombnation(articles, categories)) {\n const card: CardCategoryDataInternal = cardData as CardCategoryDataInternal;\n card[\"next-level\"] = validNextLevelCategories.length > 0 ? cardData.id : \"\";\n level.push(card);\n }\n });\n if (level.length > 0) {\n this.AppendLevel(levels, level, previousLevel.id, previousLevel.name);\n }\n }\n }\n else {\n const level = new Array<CardCategoryDataInternal>();\n levelData.forEach(cardData=>{\n const categories = [cardData.id, kataPageCategory.id];\n\n const validNextLevelCategories = new Array<string>();\n for (const nextLevelKey of nextLevelKeys) {\n const checkCategories = new Array(...categories);\n checkCategories.push(nextLevelKey);\n if (this.CheckPageForCategoryCombnation(articles, checkCategories)) {\n validNextLevelCategories.push(nextLevelKey);\n }\n }\n\n if (this.CheckPageForCategoryCombnation(articles, categories)) {\n const card: CardCategoryDataInternal = cardData as CardCategoryDataInternal;\n card[\"next-level\"] = validNextLevelCategories.length > 0 ? cardData.id : \"\";\n level.push(card);\n }\n });\n if (level.length > 0) {\n this.AppendLevel(levels, level, kataPageCategory.id, kataPageCategory.name);\n }\n }\n }\n }\n\n const categoryDataInternal: CardCategoryDataInternal = kataPageCategory as CardCategoryDataInternal;\n categoryDataInternal[\"next-level\"] = kataPageCategory.id;\n\n const existing = levels.get(context.settings.Fetch[\"root-level\"]);\n if (existing) {\n if (existing.data.includes(categoryDataInternal) == false) {\n existing.data.push(categoryDataInternal);\n }\n }\n else {\n levels.set(context.settings.Fetch[\"root-level\"], { data: [categoryDataInternal], name: context.settings.Fetch[\"root-level\"] });\n }\n }\n result[\"levels-data\"] = levels;\n return result;\n }\n\n public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n const filtered = {\n \"kata-tree\": unfiltered[\"kata-tree\"] || [],\n \"kata-pages\": unfiltered[\"kata-pages\"] || [],\n \"levels-data\": unfiltered[\"levels-data\"] || [],\n \"active-keys\": new Array<CardDataLevelKey>(),\n \"articles\": unfiltered[\"articles\"]\n } as {\n \"kata-tree\": IKataTreeData,\n \"kata-pages\": Map<string, IKataPageData>,\n \"levels-data\": Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>,\n \"active-keys\": Array<CardDataLevelKey>,\n \"articles\": Array<IArticleData>\n };\n filtered[\"active-keys\"] = active;\n\n const sorted = new Map([...filtered[\"levels-data\"]].sort());\n filtered[\"levels-data\"] = new Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>();\n\n if (context.settings.Fetch.filter[\"level-key-filter\"] == undefined || context.settings.Fetch.filter[\"level-key-filter\"].length < 1) {\n filtered[\"levels-data\"] = sorted;\n return filtered;\n }\n\n for (const level of sorted) {\n if (context.settings.Fetch.filter[\"level-key-filter\"].includes(level[0])) {\n filtered[\"levels-data\"].set(level[0], level[1]);\n }\n }\n return filtered;\n }\n\n\n private GetRelevantArticles(articles: Array<IArticleData>, katapageLevelKey: CardDataLevelKey) {\n const relevantArticles = new Array<IArticleData>();\n const levelKeyString = typeof katapageLevelKey == \"number\" ? katapageLevelKey.toFixed(0) : katapageLevelKey;\n\n for (const article of articles) {\n if (article.CatString.includes(levelKeyString)) {\n relevantArticles.push(article);\n }\n }\n return relevantArticles;\n }\n public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const result = new Map<CardDataLevelKey, CardDataLevel>();\n if (filtered[\"levels-data\"] == undefined) return result;\n\n for (const kataPage of filtered[\"levels-data\"] as Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>) {\n const level: CardDataLevel = { title: kataPage[1].name, cards: new Array<CardData>() };\n\n level.additional = { \"articles-by-level-key\": {} } as { \"articles-by-level-key\": { [key: CardDataLevelKey]: Array<IArticleData> }};\n // : { \"articles-by-level-key\": { [key: CardDataLevelKey]: Array<IArticleData> } }\n // this.GetRelevantArticles(filtered[\"articles\"] as Array<IArticleData>, kataPage[0])\n\n for (const cardData of kataPage[1].data) {\n if (kataPage[0] == cardData[\"next-level\"]) continue;\n\n if (level.additional[\"articles-by-level-key\"]) {\n (level.additional[\"articles-by-level-key\"] as { [key: CardDataLevelKey]: Array<IArticleData> })[cardData.id] = this.GetRelevantArticles(filtered[\"articles\"] as Array<IArticleData>, cardData.id);\n }\n\n const cardDataParameters = context.settings.Fetch.parameters[cardData.id] as { prefix: string, file: string };\n const imagePrefix = cardDataParameters && cardDataParameters.prefix ? cardDataParameters.prefix : \"\";\n const imageFile = cardDataParameters && cardDataParameters.file ? cardDataParameters.file : \"\";\n\n level.cards.push({\n txt: { title: UtilService.ncrToUTF8(cardData.name) },\n click: {\n \"previous-level-key\": kataPage[0],\n \"level-key\": cardData.id,\n strategy: FilterSelectionStrategy.AND,\n priority: cardData.priority,\n \"next-level-key\": cardData[\"next-level\"]\n },\n image: {\n prefix: imagePrefix,\n file: imageFile\n },\n active: context.settings.Fetch.parameters[\"selection-result-filter-is-last-clicked\"] ? (filtered[\"active-keys\"] as Array<CardDataLevelKey>).includes(cardData.id): undefined\n });\n }\n result.set(kataPage[0], level);\n }\n return result;\n }\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n if (context.settings.Fetch.parameters[\"selection-result-filter-is-last-clicked\"] == undefined) return;\n if (context.filter == undefined) return;\n if (card.click == undefined) return;\n\n if (context.filter.Contains(card.click[\"level-key\"])) {\n context.filter.Remove(card.click[\"level-key\"]);\n }\n else {\n context.filter.Reset(false, context);\n context.filter.Add(card.click[\"level-key\"]);\n }\n return;\n }\n}\nCardDataService.RegisterAppConnection(new KataPageSelectionCardAppConnection());\n","import { CatalogService } from \"../catalog.service\";\nimport { CardDataService } from \"../card.data.service\";\nimport { ComponentService } from \"../component.service\";\nimport { DimensionHelper } from \"../../utils/dimension-helper.class\";\nimport { EventHandlerService } from \"../event.handler.service\";\nimport { InformationMaskComponent } from \"../../components/standard/modal/masks\";\nimport { UtilService } from \"../util.service\";\nimport { ManuProgService } from \"../../utils/manu-prog.service\";\nimport { DimensionInformation } from \"../../components/standard/informationals/dimensions-information.component\";\nimport { IDimensionInputData } from \"../../components/standard/informationals/dimension-inputs.component\";\nimport {\n OldGeneratedCatalogBaseCardDataAppConnection,\n OldGeneratedCatalogFetchResult\n} from \"./old-generated-catalog-base.card.app.connection\";\nimport {\n CardContainerContext,\n CardContainerCustomIconButtonEvent,\n CardContainerUpdate,\n CardData,\n CardDataButtonGroupItem,\n CardDataDropdownGroupItem,\n CardDataGroup,\n CardDataInputGroupItem,\n CardDataLevel,\n CardDataLevelKey,\n CardDataLevelMap,\n CardDataUpdateEvent,\n CardFetchFilters,\n CardFetchMethod,\n FilterSelectionData,\n FilterSelectionStrategy, ICardDataInputSource\n} from \"../../models/card-container\";\nimport {\n DragType,\n IArticleData,\n IArtPropData,\n IArtValue,\n IDragOptions,\n IExternalPlacerParameter,\n IKataPageData,\n IKataTreeData,\n ILoadArticleParams,\n IPlannedArticle,\n IRangeInDimensions,\n VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L\n} from \"@dh-software/webui-types\";\nimport {\n CommunicationMessageService,\n WebViewerService\n} from \"@dh-software/webui-api\";\n\n\n/**\n * A consume-once, self-invalidating \"armed\" value, keyed per owner (default: a card\n * container context) in a WeakMap. Not a floating flag — the value lives keyed by its\n * owner and carries its own listener teardown. Reusable for any one-shot override.\n */\nexport class ArmedValue<T, K extends object = any> {\n private store = new WeakMap<K, { value: T; dispose: () => void }>();\n\n /**\n * Arm (or re-arm) `value` for `owner`. `installInvalidators` receives a `disarm`\n * callback, installs whatever live listeners should auto-clear the arming, and\n * returns their teardown. It runs once at arm time; teardown runs on disarm/consume.\n */\n public arm(owner: K, value: T, installInvalidators?: (disarm: () => void) => (() => void)): void {\n this.disarm(owner); // re-arming first tears down any prior listeners\n const dispose = installInvalidators ? installInvalidators(() => this.disarm(owner)) : () => {};\n this.store.set(owner, { value, dispose });\n }\n\n /** Read and clear in one shot. Returns undefined when nothing is armed. */\n public consume(owner: K): T | undefined {\n const entry = this.store.get(owner);\n if (!entry) return undefined;\n entry.dispose();\n this.store.delete(owner);\n return entry.value;\n }\n\n /** Clear without reading; idempotent. */\n public disarm(owner: K): void {\n const entry = this.store.get(owner);\n if (entry) {\n entry.dispose();\n this.store.delete(owner);\n }\n }\n\n public isArmed(owner: K): boolean {\n return this.store.has(owner);\n }\n}\n\n\nexport class ArticleDimension {\n private dimension = \"\";\n private article: IArticleData | undefined = undefined;\n private value = 0;\n private order = 0;\n private others: { \"width\"?: number, \"depth\"?: number, \"height\"?: number } | undefined = undefined;\n private DetermineValue = (kata: string | undefined, dispd: string | undefined, mmd: string | undefined, dmax: string | undefined) => {\n if (kata && kata.length > 0) {\n return kata;\n }\n if (dispd && dispd.length > 0) {\n return dispd;\n }\n if (mmd && mmd.length > 0) {\n return mmd;\n }\n if (dmax && dmax.length > 0) {\n return dmax;\n }\n return \"0.0\";\n };\n\n constructor(article: IArticleData, dimension: string, dimOrderCode?: string) {\n this.article = article;\n this.dimension = dimension;\n const dimOrder = dimOrderCode != undefined && dimOrderCode !== \"\" ? dimOrderCode : DimensionHelper.DimensionsOrder;\n\n switch (dimension) {\n case \"width\":\n this.order = dimOrder.indexOf('B');\n this.value = parseFloat(this.DetermineValue(article.kataWidth, article.Dispdx, article.MMdx, article.dxma));\n break;\n case \"depth\":\n this.order = dimOrder.indexOf('T');\n this.value = parseFloat(this.DetermineValue(article.kataDepth, article.Dispdy, article.MMdy, article.dyma));\n break;\n case \"height\":\n this.order = dimOrder.indexOf('H');\n this.value = parseFloat(this.DetermineValue(article.kataHeight, article.Dispdz, article.MMdz, article.dzma));\n break;\n default:\n break;\n }\n }\n\n public get Value(): number {\n return this.value;\n }\n\n public get Order(): number {\n return this.order;\n }\n\n public get Article(): IArticleData | undefined {\n return this.article;\n }\n\n public get Others(): { \"width\"?: number, \"depth\"?: number, \"height\"?: number } {\n if (this.Article == undefined) return {};\n if (this.others != undefined) return this.others;\n\n switch (this.dimension) {\n case \"width\":\n this.others = {\n \"depth\": parseFloat(this.DetermineValue(this.Article.kataDepth, this.Article.Dispdy, this.Article.MMdy, this.Article.dyma)),\n \"height\": parseFloat(this.DetermineValue(this.Article.kataHeight, this.Article.Dispdz, this.Article.MMdz, this.Article.dzma))\n };\n break;\n case \"depth\":\n this.others = {\n \"width\": parseFloat(this.DetermineValue(this.Article.kataWidth, this.Article.Dispdx, this.Article.MMdx, this.Article.dxma)),\n \"height\": parseFloat(this.DetermineValue(this.Article.kataHeight, this.Article.Dispdz, this.Article.MMdz, this.Article.dzma))\n };\n break;\n case \"height\":\n this.others = {\n \"depth\": parseFloat(this.DetermineValue(this.Article.kataDepth, this.Article.Dispdy, this.Article.MMdy, this.Article.dyma)),\n \"width\": parseFloat(this.DetermineValue(this.Article.kataWidth, this.Article.Dispdx, this.Article.MMdx, this.Article.dxma))\n };\n break;\n default:\n break;\n }\n return this.Others;\n }\n\n public get OthersKeys(): Array<\"width\" | \"depth\" | \"height\"> {\n return Object.keys(this.Others) as Array<\"width\" | \"depth\" | \"height\">;\n }\n\n public get Dimension(): string {\n return this.dimension;\n }\n\n public get TextLabel(): string {\n switch (this.dimension) {\n case \"width\":\n return \"181\";\n case \"depth\":\n return \"182\";\n case \"height\":\n return \"183\";\n default:\n return \"\";\n }\n }\n\n public get All(): { \"width\": number, \"depth\": number, \"height\": number } {\n const result: { [key: string]: number } = this.Others;\n result[this.dimension] = this.Value;\n return result as { \"width\": number, \"depth\": number, \"height\": number };\n }\n\n public Equal(other: ArticleDimension): boolean {\n return JSON.stringify(this.All) == JSON.stringify(other.All);\n }\n}\n\nexport interface ArticlesByCategoriesFetchResult extends OldGeneratedCatalogFetchResult {\n \"img-node-prefix\": string;\n \"currency\": string;\n \"planned-articles\": IPlannedArticle[]\n \"dimension-scale\": number;\n \"unit-fallback\": string;\n \"art-prop-data\": IArtPropData[];\n \"range-in-dimensions\": any\n}\n\ninterface InteractionVPlacerContext {\n context: { [key: string]: unknown };\n command: string;\n}\n\nexport class ArticlesByCategoriesCardAppConnection<T extends ArticlesByCategoriesFetchResult> extends OldGeneratedCatalogBaseCardDataAppConnection<T> {\n private armedInteractionVPlacerContext = new ArmedValue<InteractionVPlacerContext[\"context\"], CardContainerContext>();\n\n constructor() {\n super();\n this.Method = CardFetchMethod.ArticlesByCategories;\n }\n\n public InteractionOnIconButton(context: CardContainerContext, eventParameters: CardContainerCustomIconButtonEvent): void {\n const entries = context.settings.Card[\"app-connection-settings\"][\"interaction-vplacer-contexts\"] as InteractionVPlacerContext[] | undefined;\n const match = entries?.find(e => e.command === eventParameters.command);\n if (!match) {\n return;\n }\n // arm the context value; it is applied (consumed) at the next placement in loadArticle\n this.armedInteractionVPlacerContext.arm(context, match.context);\n }\n\n public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n switch (event) {\n case CardDataUpdateEvent.LastPOLoaded:\n this.armedInteractionVPlacerContext.disarm(context); // defensive; consume() in loadArticle usually already cleared it\n return CardContainerUpdate.FETCH;\n case CardDataUpdateEvent.DeleteLO_after:\n if (context.settings.Fetch.parameters[\"highlight-planned-articles\"] == true) {\n return CardContainerUpdate.FETCH;\n }\n return CardContainerUpdate.NONE;\n case CardDataUpdateEvent.ChangePrice:\n return CardContainerUpdate.FETCH;\n case CardDataUpdateEvent.SelectionChanged:\n this.armedInteractionVPlacerContext.disarm(context); // selection moved away from the replace target\n return CardContainerUpdate.FETCH;\n case CardDataUpdateEvent.VPlacerCancel:\n this.armedInteractionVPlacerContext.disarm(context); // placement/replace aborted\n return CardContainerUpdate.NONE;\n default:\n return CardContainerUpdate.NONE;\n }\n }\n\n public async Fetch(context: CardContainerContext): Promise<T> {\n const result = await super.Fetch(context);\n result[\"img-node-prefix\"] = await CommunicationMessageService.getNodePrefix();\n\n const currency = await CommunicationMessageService.getCurrency();\n const dimensionScale = await CommunicationMessageService.getDimensionScale();\n if (context.settings.Fetch.parameters[\"highlight-planned-articles\"] == true || context.settings.Fetch.parameters[\"include-planned-articles\"] == true) {\n result[\"planned-articles\"] = await CommunicationMessageService.getPlannedArticles();\n }\n result[\"dimension-scale\"] = dimensionScale;\n result[\"unit-fallback\"] = dimensionScale == 1.0 ? \"mm\" : \"cm\";\n result[\"currency\"] = currency;\n\n context.settings.Fetch.manufacturer = context.settings.Fetch.manufacturer && context.settings.Fetch.manufacturer.length > 0 ? context.settings.Fetch.manufacturer : await ManuProgService.getManufacturer();\n context.settings.Fetch.program = context.settings.Fetch.program && context.settings.Fetch.program.length > 0 ? context.settings.Fetch.program : await ManuProgService.getProgram();\n\n const articles = (result[\"articles\"] || []) as IArticleData[]\n const artPropData = await CommunicationMessageService.getArtPropByArticle({\n manufacturer: context.settings.Fetch.manufacturer,\n program: context.settings.Fetch.program,\n filter: articles.map(x => x.ArtNr).filter(x => !!x)\n });\n this.initializeArticleProperties(result[\"art-prop-data\"] = artPropData);\n if (context.settings.Fetch.parameters[\"range-in-dimensions-to-sort-cards-by\"] != undefined) {\n result[\"range-in-dimensions\"] = await CommunicationMessageService.getRangeInDimensions({ manufacturer: context.settings.Fetch.manufacturer });\n }\n return result;\n }\n\n private initializeArticleProperties(properties: IArtPropData[]) {\n for (const prop of properties) {\n const artNr = prop.artnr;\n for (const variable of prop.Vars) {\n const subKey = CatalogService.getAdditionalParamByKey(variable.key);\n if (!this.Store.hasSubKey(artNr, subKey)) {\n this.Store.setSubKeyItem(artNr, subKey, variable.val)\n }\n }\n }\n }\n\n public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n const filtered: ArticlesByCategoriesFetchResult = {\n \"img-node-prefix\": unfiltered[\"img-node-prefix\"],\n \"currency\": unfiltered[\"currency\"],\n \"dimension-scale\": unfiltered[\"dimension-scale\"],\n \"unit-fallback\": unfiltered[\"unit-fallback\"],\n \"articles\": new Array<IArticleData>(),\n \"kata-pages\": unfiltered[\"kata-pages\"] as Map<string, IKataPageData>,\n \"kata-tree\": unfiltered[\"kata-tree\"] as IKataTreeData,\n \"planned-articles\": unfiltered[\"planned-articles\"] as Array<IPlannedArticle>,\n \"range-in-dimensions\": unfiltered[\"range-in-dimensions\"] as IRangeInDimensions,\n \"art-prop-data\": unfiltered[\"art-prop-data\"] as IArtPropData[]\n };\n\n const unfilteredArticles = unfiltered[\"articles\"] as Array<IArticleData>;\n if (unfilteredArticles != undefined) {\n const filter = context.settings.Fetch.filter ? context.settings.Fetch.filter as CardFetchFilters : {};\n const categoriesToHide: Array<string> = context.settings.Fetch.parameters ? context.settings.Fetch.parameters[\"categories-to-hide\"] as Array<string> || [] : [];\n if (filter[\"level-key-filter\"] && filter[\"level-key-filter\"].length > 0) {\n for (const article of unfilteredArticles) {\n let includesAny = false;\n for (const category of filter[\"level-key-filter\"]) {\n if (typeof category == \"string\") {\n if (article.CatString.includes(category)) {\n includesAny = true;\n break;\n }\n }\n }\n for (const category of categoriesToHide) {\n if (typeof category == \"string\") {\n if (article.CatString.includes(category)) {\n includesAny = false;\n break;\n }\n }\n }\n if (includesAny) {\n if (filtered.articles.includes(article) == false) {\n filtered.articles.push(article);\n }\n }\n }\n } else {\n for (const article of unfilteredArticles) {\n let includesAny = false;\n for (const category of categoriesToHide) {\n if (typeof category == \"string\") {\n if (article.CatString.includes(category)) {\n includesAny = true;\n break;\n }\n }\n }\n if (!includesAny) filtered.articles.push(article);\n }\n }\n }\n\n if (context.settings.Fetch.filter != undefined) {\n filtered.articles = this.FilterByButtons(context.states.SelectedFilters, filtered.articles);\n }\n\n const firstSelectedLevelKey = context.states.SelectedFilters?.[0]?.filter?.[0] as string | undefined;\n const sameArticleWidthEnabled =\n context.settings.Fetch.parameters[\"filter-widths-from-scene\"] == true ||\n (firstSelectedLevelKey != undefined && (context.settings.Fetch.parameters[firstSelectedLevelKey] as any)?.[\"filter-widths-from-scene\"] == true);\n\n if (sameArticleWidthEnabled) {\n const plannedArticles = unfiltered[\"planned-articles\"];\n if (plannedArticles && plannedArticles.length > 0) {\n const plannedWidths = new Set<number>();\n for (const article of filtered.articles) {\n const isPlanned = plannedArticles.some(plannedArticle => article.ArtNr.startsWith(plannedArticle.catalogArticleNumber));\n if (isPlanned) {\n const width = new ArticleDimension(article, \"width\").Value;\n plannedWidths.add(width);\n }\n }\n\n filtered.articles = filtered.articles.filter(article => {\n const width = new ArticleDimension(article, \"width\").Value;\n return plannedWidths.has(width);\n });\n }\n }\n\n return filtered as T;\n }\n\n public getShowDimensions(data: ArticlesByCategoriesFetchResult): boolean {\n const articles = data.articles || [];\n let showDimensionsDefault: boolean = true;\n\n return articles.some(article => {\n const kataPage = article.ArtCategories?.map(cat => data[\"kata-pages\"].get(cat)).find(page => !!page);\n\n const userVal = kataPage?.Modules?.[0]?.UserVal;\n if (!userVal) return false;\n\n try {\n const userValJSON = JSON.parse(userVal);\n if (userValJSON.showDimensions === undefined || userValJSON.showDimensions === null) {\n return showDimensionsDefault;\n } else {\n return userValJSON.showDimensions;\n }\n\n } catch (e) {\n console.error(e);\n return false;\n }\n });\n }\n\n protected CreateCardsFromArticles(articles: IArticleData[] | undefined, filtered: ArticlesByCategoriesFetchResult, context: CardContainerContext, manufacturerToUse?: string, programToUse?: string) {\n if (articles == undefined) {\n const result: CardDataLevel = { title: \"\", cards: [] };\n result.additional = {\n articles: articles\n };\n const resultMap = new Map<CardDataLevelKey, CardDataLevel>();\n resultMap.set(context.settings.Fetch[\"root-level\"], result);\n return resultMap;\n }\n\n const data = filtered\n\n let showTitleText = (window.g_configuration.show_article_number as boolean);\n const showCardText = context.settings.Card[\"app-connection-settings\"][\"show-card-text\"] as boolean ?? true;\n const showPrice = context.settings.Card[\"app-connection-settings\"][\"show-price\"] as boolean ?? false;\n const showProductBrandText = context.settings.Card[\"app-connection-settings\"][\"show-product-brand-text\"] as boolean ?? false;\n const showTitleTextOverwrite = context.settings.Card[\"app-connection-settings\"][\"show-title-text\"] as boolean | undefined;\n if (showTitleTextOverwrite !== undefined) {\n showTitleText = showTitleTextOverwrite;\n }\n\n const manufacturer = manufacturerToUse;\n const program = programToUse;\n\n const result: CardDataLevel = { title: \"\", cards: [] };\n result.additional = {\n articles: articles\n };\n\n const isHighlighted = (article: IArticleData): boolean => {\n return data[\"planned-articles\"]?.some(x => article.ArtNr.startsWith(x.catalogArticleNumber)) ?? false;\n };\n\n const selectedFilters = context.states.SelectedFilters;\n\n if (data[\"range-in-dimensions\"] != undefined && context.settings.Fetch.parameters[\"range-in-dimensions-to-sort-cards-by\"] != undefined) {\n const relevantGroups: {\n categories: string[];\n articles: string[];\n dx: number;\n dy: number;\n dz: number;\n }[] = [];\n data[\"range-in-dimensions\"].groups.forEach((value: any) => {\n let includesAny = false;\n articles.forEach((article) => {\n if (value.articles.includes(article.ArtNr)) {\n includesAny = true;\n }\n });\n if (includesAny) {\n relevantGroups.push(value);\n }\n });\n\n if (relevantGroups.length > 0 && relevantGroups[0] != undefined) {\n //\"width\", \"depth\", \"height\"// as array! first entry is most important loop it in reverse\n const preferredDimensions = context.settings.Fetch.parameters[\"range-in-dimensions-to-sort-cards-by\"] as string[];\n if (preferredDimensions.length > 0) {\n if (preferredDimensions.includes(\"width\") || preferredDimensions.includes(\"height\") || preferredDimensions.includes(\"depth\")) {\n preferredDimensions.reverse();//reverse to ensure first entry is most important!\n\n for (const preferredDimension of preferredDimensions) {\n let preferredDimInScene = 1000;\n if (preferredDimension === \"width\") {\n preferredDimInScene = relevantGroups[0].dx;\n } else if (preferredDimension === \"depth\") {\n preferredDimInScene = relevantGroups[0].dy;\n } else if (preferredDimension === \"height\") {\n preferredDimInScene = relevantGroups[0].dz;\n }\n\n articles.sort((a: IArticleData, b: IArticleData) => {\n const checkDimensionA = new ArticleDimension(a, preferredDimension);\n const differenceA = Math.abs(checkDimensionA.Value - preferredDimInScene);\n const checkDimensionB = new ArticleDimension(b, preferredDimension);\n const differenceB = Math.abs(checkDimensionB.Value - preferredDimInScene);\n return differenceA - differenceB;\n });\n }\n }\n }\n }\n }\n\n articles.forEach((article) => {\n let highlighted = false;\n if (context.settings.Fetch.parameters[\"highlight-planned-articles\"] == true) {\n highlighted = isHighlighted(article);\n }\n\n const dimOrder = context.settings.Card[\"app-connection-settings\"][\"dim-order\"] as string | undefined;\n const width = new ArticleDimension(article, \"width\", dimOrder);\n const depth = new ArticleDimension(article, \"depth\", dimOrder);\n const height = new ArticleDimension(article, \"height\", dimOrder);\n\n const dimensionsArray = [width, depth, height];\n dimensionsArray.sort((a, b) => (a.Order ?? 99999) - (b.Order ?? 99999));\n\n const cardButtonGroups: Array<CardDataGroup<CardDataButtonGroupItem>> = [];\n const showDoorHingeButtons = context.settings.Card[\"app-connection-settings\"][\"door-hinge-changeable\"];\n const doorHingeIsChangeable = article.Anschl.length > 0 && article.Anschl !== \"D\" && article.Anschl !== \"FD\";\n\n const artProps = (data[\"art-prop-data\"] || []).filter(x => x.artnr === article.ArtNr);\n\n if (showDoorHingeButtons && doorHingeIsChangeable) {\n const lastButtonState = this.Store.getSubKeyItem(this.getArticleKey(article), \"selected-door-hinge\");\n const isLeftButtonActive = lastButtonState ? lastButtonState === \"L\" : article.Anschl === \"L\";\n cardButtonGroups.push({\n title: \"fv.article.door_hinge\",\n items: [\n {\n bordered: true,\n active: isLeftButtonActive,\n icon: context.settings.Card[\"app-connection-settings\"][\"door-hinge-icon-left\"] as string || \"fv-icon-door-hinge-left\",\n \"click-data\": {\n \"door-hinge\": \"L\"\n }\n },\n {\n bordered: true,\n active: !isLeftButtonActive,\n icon: context.settings.Card[\"app-connection-settings\"][\"door-hinge-icon-right\"] as string || \"fv-icon-door-hinge-right\",\n \"click-data\": {\n \"door-hinge\": \"R\"\n }\n }\n ]\n })\n }\n\n const isCrossArticle = article.HasCrossArticle === \"1\";\n const isCrossArticleDelete = isCrossArticle && article.ArtNr.toLowerCase().includes(\"dummy\");\n const articleManu = isCrossArticle || manufacturer == undefined ? article.ManuName : manufacturer;\n const articleProg = isCrossArticle || program == undefined ? article.ProgName : program;\n\n const additionalCardTexts: string[] = [];\n if (showPrice && article.artPrice != undefined && !isCrossArticleDelete) {\n const displayPrice = `${article.artPrice.toFixed(2)} ${data[\"currency\"]}`;\n additionalCardTexts.push(displayPrice);\n }\n\n let brandArtValue: IArtValue | undefined = undefined;\n if (showProductBrandText && article.ArtValues && article.ArtValues.length > 0) {\n const brandValue = article.ArtValues.find(v => v.id === \"dhclass_markenkennzeichnung\");\n if (brandValue) {\n brandArtValue = brandValue;\n const brandText = `${brandValue.text}: ${brandValue.values.join(', ')}${brandValue.unit ? ` ${brandValue.unit}` : ''}`;\n additionalCardTexts.push(brandText);\n }\n }\n\n const showArticleSubTexts = context.settings.Card[\"app-connection-settings\"][\"article-sub-texts-info-modal-enabled\"] as boolean;\n const showAdditionalInfoTexts = context.settings.Card[\"app-connection-settings\"][\"additional-info-texts-info-modal-enabled\"] as boolean;\n if (showArticleSubTexts || showAdditionalInfoTexts) {\n const infoTexts: Array<string> = [];\n if (showArticleSubTexts && article.ArtTexts && article.ArtTexts.length > 0) {\n infoTexts.push(...article.ArtTexts);\n }\n if (showAdditionalInfoTexts && article.ArtValues && article.ArtValues.length > 0) {\n const filteredArtValues = brandArtValue\n ? article.ArtValues.filter(v => v.id !== \"dhclass_markenkennzeichnung\")\n : article.ArtValues;\n infoTexts.push(...filteredArtValues.map(v => `${v.text}: ${v.values.join(', ')}${v.unit ? ` ${v.unit}` : ''}`));\n }\n if (infoTexts.length > 0) {\n const infoModalButtonGroup: CardDataGroup<CardDataButtonGroupItem> = {\n title: \"\",\n items: [{\n active: false,\n icon: \"fv-icon-question-mark\",\n \"click-data\": {\n \"info-values\": infoTexts\n }\n }]\n };\n const infoModalButtonStyle = context.settings.Card[\"app-connection-settings\"][\"info-modal-button-style\"] as { [key: string]: string } | undefined;\n if (infoModalButtonStyle) {\n infoModalButtonGroup.style = infoModalButtonStyle;\n }\n cardButtonGroups.push(infoModalButtonGroup);\n }\n }\n\n const inputData = this.buildInputData(context, article, artProps, data[\"dimension-scale\"], data[\"unit-fallback\"]);\n const dropdownData = this.buildDropdownData(article, artProps, data[\"dimension-scale\"], data[\"unit-fallback\"]);\n const dimRangeData = this.buildDimensionRangeData(article, artProps, dimensionsArray, data[\"dimension-scale\"]);\n const dimSliderInput = context.settings.Card[\"app-connection-settings\"][\"dimensions-slider-input\"] === true && dimRangeData !== undefined && dimRangeData.length > 0;\n\n result.cards.push({\n image: {\n prefix: data[\"img-node-prefix\"],\n file: UtilService.ncrToUTF8(article.imgName)\n },\n txt: {\n title: showTitleText && !isCrossArticleDelete && article.artText && article.artText !== article.ArtNr ? article.ArtNr : \"\",\n txt: showCardText || isCrossArticleDelete ? article.artText : \"\",\n additional: additionalCardTexts.length > 0 ? additionalCardTexts : undefined\n },\n click: {\n nr: article.ArtNr,\n manufacturer: articleManu,\n program: articleProg,\n \"previous-level-key\": \"\",\n \"level-key\": context.settings.Fetch[\"root-level\"],\n \"next-level-key\": \"\",\n \"door-hinge\": doorHingeIsChangeable ? article.Anschl : \"\"\n },\n active: highlighted,\n inputs: inputData,\n dropdowns: !dimSliderInput ? dropdownData : [],\n dimensions: !dimSliderInput && !isCrossArticleDelete && !inputData.length && this.getShowDimensions(data) ? this.buildDimensionInfoData(context, dimensionsArray, data) : undefined,\n \"dimension-ranges\": dimSliderInput && !isCrossArticleDelete && this.getShowDimensions(data) ? dimRangeData : undefined,\n \"button-groups\": cardButtonGroups,\n additional: {\n \"categories\": article.CatString && article.CatString.length > 0 ? article.CatString.split(\",\") : [],\n \"selected-filters\": selectedFilters\n }\n });\n\n result.cards.forEach(card => {\n if (card.dimensions && card.dimensions.length > 1) {\n card.dimensions.sort((a, b) =>\n (a.order ?? 99999) - (b.order ?? 99999)\n );\n }\n });\n });\n\n const resultMap = new Map<CardDataLevelKey, CardDataLevel>();\n resultMap.set(context.settings.Fetch[\"root-level\"], result);\n return resultMap;\n }\n\n public CreateCards(filtered: ArticlesByCategoriesFetchResult, context: CardContainerContext): CardDataLevelMap {\n return this.CreateCardsFromArticles(filtered.articles, filtered, context, context.settings.Fetch.manufacturer, context.settings.Fetch.program);\n }\n\n\n protected async loadArticle(card: CardData, context: CardContainerContext, crossArticleClients?: {\n article: string;\n manu: string;\n prog: string;\n }[]) {\n if (card.click == undefined || card.click.nr == undefined) {\n return;\n }\n\n const artNr = card.click.nr as string;\n\n if (context.settings.Fetch.parameters[\"load-vz-planning\"] || (card.click.manufacturer as string).toLowerCase() == \"schlueter\") {\n const specificLoadedCategories = context.settings.Fetch.parameters[\"only-specific-categories\"] ? context.settings.Fetch.parameters[\"only-specific-categories\"] as string[] : [];\n const categories: string[] = card.additional && card.additional[\"categories\"] ? card.additional[\"categories\"] as string[] : [];\n if (categories.includes(\"dhcat_vorschlagskombination\") || specificLoadedCategories.includes(\"dhcat_vorschlagskombination\")) {\n await CommunicationMessageService.loadVZPlanning(card.click.manufacturer as string, card.click.program as string, artNr);\n WebViewerService.FurnviewWebViewer?.focus();\n return;\n }\n }\n\n\n const selectedHinge = this.Store.getSubKeyItem(artNr, \"selected-door-hinge\");\n const articleHinge = card.click[\"door-hinge\"];\n const hasHingeChange = selectedHinge && articleHinge && selectedHinge !== articleHinge;\n\n const persistentData = this.Store.get(artNr);\n const extraDimensions: { [key: string]: any } = {\n \"extraWidth\": persistentData?.[\"extraWidth\"] || \"\",\n \"extraHeight\": persistentData?.[\"extraHeight\"] || \"\",\n \"extraDepth\": persistentData?.[\"extraDepth\"] || \"\",\n }\n Object.keys(extraDimensions).forEach(key => {\n if (!extraDimensions[key]) {\n delete extraDimensions[key];\n }\n })\n\n let categoryIncludesAnyPlacerOnce = false;\n if (card.additional?.categories && context.settings.Behaviour?.[\"placer-once\"]?.categories) {\n const categories = card.additional.categories as Array<string>;\n for (const category of categories) {\n if (context.settings.Behaviour[\"placer-once\"].categories.includes(category)) {\n categoryIncludesAnyPlacerOnce = true;\n break;\n }\n }\n }\n\n const defaultVplacerContext = context.settings.Card[\"app-connection-settings\"][\"vplacer-context\"] as any | undefined;\n const consumedVplacerContext = this.armedInteractionVPlacerContext.consume(context);\n const effectiveVplacerContext = consumedVplacerContext ?? defaultVplacerContext; // armed interaction context wins; else the current default\n if (effectiveVplacerContext != undefined && Object.keys(effectiveVplacerContext).length > 0) {\n await CommunicationMessageService.setVPlacerContextInfoData(effectiveVplacerContext);\n }\n\n const placerOnce = context.settings.Behaviour?.[\"placer-once\"]?.all || categoryIncludesAnyPlacerOnce || false;\n if (placerOnce && Object.keys(extraDimensions).length === 0) {\n const placeParams: IExternalPlacerParameter = {\n manufacturer: card.click.manufacturer as string,\n program: card.click.program as string,\n articleNumber: card.click.nr as string,\n once: placerOnce,\n }\n if (hasHingeChange) {\n placeParams.extParameter = {\n [VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L]: \"1\"\n };\n }\n await CommunicationMessageService.placePO(placeParams);\n } else {\n const articleParams: ILoadArticleParams = {\n artNr: card.click.nr as string,\n hingeChanged: hasHingeChange ? \"1\" : \"\",\n ...extraDimensions\n }\n await CommunicationMessageService.loadArticleWithParams(card.click.manufacturer as string, card.click.program as string, articleParams, crossArticleClients);\n WebViewerService.FurnviewWebViewer?.focus();\n }\n }\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n await super.Click(card, context);\n await this.loadArticle(card, context, undefined);\n }\n\n public override GetFormattedDragData(card: CardData, context: CardContainerContext): IDragOptions | undefined {\n const articleNumber = card.click?.nr as string | undefined;\n if (articleNumber == undefined || articleNumber.length < 1) {\n return undefined;\n }\n const data: IDragOptions = { id: articleNumber, type: DragType.ARTICLE };\n\n // Parity with loadArticle: carry extra dimensions (DX/DY/DZ) + hinge change from the per-article\n // Store via extParam. Downstream (furnplan SetArticleData) already applies 10514-16 and 11205, so\n // this is complete within furnview-components.\n const extParam: { [key: string]: string } = {};\n const persistent = this.Store.get(articleNumber);\n const extraWidth = persistent?.[\"extraWidth\"] as string | undefined;\n const extraDepth = persistent?.[\"extraDepth\"] as string | undefined;\n const extraHeight = persistent?.[\"extraHeight\"] as string | undefined;\n if (extraWidth) extParam[\"10514\"] = extraWidth; // VIH_PLANTYPE_DX\n if (extraDepth) extParam[\"10515\"] = extraDepth; // VIH_PLANTYPE_DY\n if (extraHeight) extParam[\"10516\"] = extraHeight; // VIH_PLANTYPE_DZ\n const selectedHinge = this.Store.getSubKeyItem(articleNumber, \"selected-door-hinge\");\n const articleHinge = card.click?.[\"door-hinge\"];\n if (selectedHinge && articleHinge && selectedHinge !== articleHinge) {\n extParam[\"11205\"] = \"1\"; // VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L\n }\n if (Object.keys(extParam).length > 0) {\n data.extData = extParam;\n }\n return data;\n }\n\n public async ClickCardButton(data: { [key: string]: unknown } | undefined, card: CardData, context: CardContainerContext): Promise<void> {\n if (data == undefined) {\n return;\n }\n\n const infoValues = data[\"info-values\"] as string[];\n if (infoValues != undefined) {\n const maskQuery = context.settings.Card[\"app-connection-settings\"][\"tooltip-button-target-information-mask-query\"];\n if (typeof maskQuery != \"string\") {\n return;\n }\n\n const elements = ComponentService.findAll(\"fv-information-mask\", maskQuery);\n for (const element of elements) {\n if (element instanceof InformationMaskComponent) {\n if (element.Modal == undefined) {\n continue;\n }\n\n const currentInfo = element.maskData[\"information-text\"] as string[] | undefined;\n const isSameInfo = element.Modal.hideElement == false && element.active && Array.isArray(currentInfo) && currentInfo.length === infoValues.length && currentInfo.every((t: string, i: number) => t === infoValues[i]);\n\n if (isSameInfo) {\n element.hide();\n } else {\n element.Modal.open(element.mask, { \"information-text\": infoValues }, maskQuery);\n }\n }\n }\n return;\n }\n\n if (card.click == undefined || card.click.nr == undefined) {\n return;\n }\n\n const artNr = card.click.nr as string;\n if (artNr) {\n this.Store.setSubKeyItem(artNr, \"selected-door-hinge\", data[\"door-hinge\"]);\n await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n refetch: false,\n \"include-hidden\": false\n });\n }\n }\n\n async TextFieldChanged(card: CardData, context: CardContainerContext, field: ICardDataInputSource): Promise<void> {\n const artNr = card.click?.[\"nr\"] as string || \"\"\n if (artNr) {\n const storeKey = CatalogService.getAdditionalParamByKey(field.name) || field.name;\n this.Store.setSubKeyItem(artNr, storeKey, field.value);\n }\n }\n\n protected FilterByButtons(buttonsFilter: Array<FilterSelectionData> | undefined, unfilteredArticles: Array<IArticleData>): Array<IArticleData> {\n if (buttonsFilter && buttonsFilter.length > 0) {\n const checkDimension = (kata: string | undefined, dispd: string | undefined, mmd: string | undefined, dmax: string | undefined, filter: number) => {\n if (kata && kata.length > 0) {\n if (parseFloat(kata) == filter) {\n return true;\n }\n }\n if (dispd && dispd.length > 0) {\n if (parseFloat(dispd) == filter) {\n return true;\n }\n }\n if (mmd && mmd.length > 0) {\n if (parseFloat(mmd) == filter) {\n return true;\n }\n }\n if (dmax && dmax.length > 0) {\n if (parseFloat(dmax) == filter) {\n return true;\n }\n }\n return false;\n };\n\n const checkCategory = (article: IArticleData, filter: string) => {\n const articleCategories = article.CatString.includes(\",\") ? article.CatString.split(\",\") : [article.CatString];\n return articleCategories.some(x => x.toLowerCase() === filter.toLowerCase());\n }\n\n const andFilter: (FilterSelectionData: FilterSelectionData, article: IArticleData) => boolean = (FilterSelectionData: FilterSelectionData, article: IArticleData) => {\n if (FilterSelectionData.filter.length > 0) {\n const additionalParams = FilterSelectionData[\"additional-params\"] as {\n \"filter-type\": string,\n \"dimension\": string | undefined\n } | undefined;\n if (additionalParams && additionalParams[\"filter-type\"] == \"dimension\") {\n let doesNotInclude = false;\n for (const filter of FilterSelectionData.filter) {\n if (typeof filter == \"number\") {\n switch (additionalParams[\"dimension\"]) {\n case \"width\":\n if (checkDimension(article.kataWidth, article.Dispdx, article.MMdx, article.dxma, filter) == false) {\n doesNotInclude = true;\n }\n break;\n case \"depth\":\n if (checkDimension(article.kataDepth, article.Dispdy, article.MMdy, article.dyma, filter) == false) {\n doesNotInclude = true;\n }\n break;\n case \"height\":\n if (checkDimension(article.kataHeight, article.Dispdz, article.MMdz, article.dzma, filter) == false) {\n doesNotInclude = true;\n }\n break;\n default:\n break;\n }\n }\n }\n return !doesNotInclude;\n }\n\n let doesNotInclude = false;\n for (const filter of FilterSelectionData.filter) {\n if (typeof filter == \"string\") {\n if (!checkCategory(article, filter)) {\n doesNotInclude = true;\n }\n }\n }\n return !doesNotInclude;\n }\n return true;\n };\n const orFilter: (FilterSelectionData: FilterSelectionData, article: IArticleData) => boolean = (FilterSelectionData: FilterSelectionData, article: IArticleData) => {\n if (FilterSelectionData.filter.length > 0) {\n const additionalParams = FilterSelectionData[\"additional-params\"] as {\n \"filter-type\": string,\n \"dimension\": string | undefined\n } | undefined;\n if (additionalParams && additionalParams[\"filter-type\"] == \"dimension\") {\n for (const filter of FilterSelectionData.filter) {\n if (typeof filter == \"number\") {\n switch (additionalParams[\"dimension\"]) {\n case \"width\":\n if (checkDimension(article.kataWidth, article.Dispdx, article.MMdx, article.dxma, filter)) {\n return true;\n }\n break;\n case \"depth\":\n if (checkDimension(article.kataDepth, article.Dispdy, article.MMdy, article.dyma, filter)) {\n return true;\n }\n break;\n case \"height\":\n if (checkDimension(article.kataHeight, article.Dispdz, article.MMdz, article.dzma, filter)) {\n return true;\n }\n break;\n default:\n break;\n }\n }\n }\n return false;\n }\n\n for (const filter of FilterSelectionData.filter) {\n if (typeof filter == \"string\") {\n if (checkCategory(article, filter)) {\n return true;\n }\n }\n }\n return false;\n }\n return true;\n };\n\n let filteredArticles: Array<IArticleData> = new Array<IArticleData>();\n let tempUnfilered: Array<IArticleData> = unfilteredArticles;\n // tempUnfilered.sort((a, b)=>a.);// TODO!\n\n buttonsFilter.sort((a, b) => {\n const left = a.priority ? a.priority : 0;\n const right = b.priority ? b.priority : 0;\n return right - left;\n });\n\n\n for (const filterEntry of buttonsFilter) {\n switch (filterEntry.strategy) {\n case FilterSelectionStrategy.OR:\n tempUnfilered.forEach(article => {\n if (orFilter(filterEntry, article)) filteredArticles.push(article);\n });\n break;\n case FilterSelectionStrategy.AND:\n default:\n tempUnfilered.forEach(article => {\n if (andFilter(filterEntry, article)) filteredArticles.push(article);\n });\n break;\n }\n\n tempUnfilered = filteredArticles;\n filteredArticles = [];\n }\n filteredArticles = tempUnfilered;\n return filteredArticles;\n } else {\n return unfilteredArticles;\n }\n }\n\n private getArticleKey(article: IArticleData) {\n return article.ArtNr;\n }\n\n private buildDimensionInfoData(context: CardContainerContext, dimensionsArray: ArticleDimension[], data: ArticlesByCategoriesFetchResult): DimensionInformation[] {\n const singleDimension = context.settings.Fetch.parameters[\"divided-inline-dimensions\"] || context.settings.Card[\"app-connection-settings\"][\"divided-inline-dimensions\"];\n type DimPrefixType = \"width\" | \"depth\" | \"height\";\n const buildCard = (dimensions: ArticleDimension | ArticleDimension[], prefix: DimPrefixType): DimensionInformation => {\n const isArray = Array.isArray(dimensions);\n return {\n prefix: context.settings.Card.settings.dimensions?.prefixes?.[prefix] || \"\",\n dimension: isArray ? dimensions.map(dim => dim.Value) : dimensions.Value,\n order: isArray ? undefined : dimensions.Order,\n icon: context.settings.Card.settings.dimensions?.icon || \"\",\n src: context.settings.Card.settings.dimensions?.src || \"\",\n divider: context.settings.Card.settings.dimensions?.divider || \"\",\n unit: context.settings.Card.settings.dimensions?.unit || data[\"unit-fallback\"]?.toString() || \"\",\n decimals: context.settings.Card.settings.dimensions?.decimals || undefined,\n \"decimal-divider\": context.settings.Card.settings.dimensions?.[\"decimal-divider\"] || \".\",\n \"prevent-zero-decimals\": context.settings.Card.settings.dimensions?.[\"prevent-zero-decimals\"] || true\n }\n }\n if (singleDimension) {\n return [buildCard(dimensionsArray, \"width\")]\n }\n const getDimensionCard = (prefix: DimPrefixType) => {\n const dim = dimensionsArray.find(x => x.Dimension === prefix)\n if (dim) {\n return buildCard(dim, prefix);\n }\n }\n return [\n getDimensionCard(\"width\"),\n getDimensionCard(\"depth\"),\n getDimensionCard(\"height\"),\n ].filter(x => !!x);\n }\n\n private buildInputData(context: CardContainerContext, article: IArticleData, propData: IArtPropData[], dimScale: number = 1, dimensionLabel: string = \"cm\"): CardDataGroup<CardDataInputGroupItem>[] {\n if (propData.length <= 0) {\n return [];\n }\n const items = propData.flatMap(x => x.Vars).map(x => {\n const constraints = CatalogService.getMinMaxByParamName(x.key, article, dimScale);\n const articleKey = this.getArticleKey(article);\n if (x.values) {\n return null;\n }\n const inputDefine = {\n value: this.Store.getSubKeyItem(articleKey, CatalogService.getAdditionalParamByKey(x.key)) || x.val,\n placeholder: x.tVal,\n type: \"number\",\n name: x.key,\n min: 0,\n classes: {\n \"no-spin-button\": true\n }\n } as CardDataInputGroupItem\n if (Math.max(...constraints) !== 0) {\n inputDefine.min = constraints[0];\n inputDefine.max = constraints[1];\n }\n return inputDefine\n }).filter(Boolean) as CardDataInputGroupItem[]\n if (!items.length) {\n return [];\n }\n return [\n {\n items\n }\n ]\n }\n\n private buildDimensionRangeData(article: IArticleData, propData: IArtPropData[], dimensionsArray: ArticleDimension[], dimScale: number = 1): IDimensionInputData[] {\n let hasAdjustableDimension = false;\n const dimData: Array<IDimensionInputData> = [];\n const artPropDataVars = propData.flatMap(x => x.Vars);\n\n for (const dim of dimensionsArray) {\n const varKey = CatalogService.getVarKeyForDimension(dim.Dimension);\n const dimRange = varKey ? artPropDataVars.find(v => v.key === varKey && !!v.values) : undefined;\n\n if (dimRange) {\n hasAdjustableDimension = true;\n const values = [...new Set(dimRange.values!.split(\"#\").map(v => parseFloat(v)))].sort((a, b) => a - b);\n const storeKey = CatalogService.getAdditionalParamByKey(dimRange.key) || dimRange.key;\n const storedValue = this.Store.getSubKeyItem(this.getArticleKey(article), storeKey);\n const currentValue = parseFloat(`${storedValue || dimRange.val}`);\n const selectedIndex = Math.max(0, values.indexOf(currentValue));\n dimData.push({\n name: storeKey,\n label: dim.TextLabel,\n values: values,\n selectedIndex: selectedIndex,\n });\n } else {\n const dimValue = parseFloat((dim.Value * dimScale).toFixed(10));\n dimData.push({\n label: dim.TextLabel,\n values: [dimValue]\n });\n }\n }\n return hasAdjustableDimension ? dimData : [];\n }\n\n private buildDropdownData(article: IArticleData, propData: IArtPropData[], dimScale: number = 1, dimensionLabel: string = \"cm\"): CardDataGroup<CardDataDropdownGroupItem>[] {\n if (propData.length <= 0) {\n return [];\n }\n const items = propData.flatMap(x => x.Vars).map(x => {\n const constraints = CatalogService.getMinMaxByParamName(x.key, article, dimScale);\n const articleKey = this.getArticleKey(article);\n if (x.values) {\n return <CardDataDropdownGroupItem>{\n value: this.Store.getSubKeyItem(articleKey, CatalogService.getAdditionalParamByKey(x.key)) || x.val,\n name: x.key,\n values: x.values?.split(\"#\") || [],\n suffix: dimensionLabel,\n placeholder: x.tVal\n }\n }\n }).filter(Boolean) as CardDataDropdownGroupItem[]\n if (!items.length) {\n return [];\n }\n return [\n {\n items\n }\n ]\n }\n\n}\n\nCardDataService.RegisterAppConnection(new ArticlesByCategoriesCardAppConnection());\n","import { CardDataService } from \"../card.data.service\";\nimport {\n CardContainerContext,\n CardData,\n CardDataLevelKey,\n CardFetchMethod,\n} from \"../../models/card-container\";\nimport {\n ArticlesByCategoriesCardAppConnection,\n ArticlesByCategoriesFetchResult\n} from \"./articles-by-categories.card.app.connection\";\nimport { ComponentService } from \"../component.service\"\nimport { FormElementInfo, FormElementsWrapper } from \"../../components/configurator/configurator.form.base\"\nimport { ConfiguratorFormComponent } from \"../../components/configurator/configurator.form.component\"\nimport { ConfiguratorApiDataService } from \"../../utils/configurator-api.data.service\";\nimport { ConfiguratorApiService } from \"@dh-software/webui-api\";\nimport { IConfiguratorApiSetParams } from \"@dh-software/webui-types\";\n\n\ninterface IAppConnectionSettingsConfiguratorForm {\n target?: {\n tag: string;\n query?: string;\n }\n \"form-elements-settings\": Array<{ \"target\": { tag: string; query?: string; }, \"form-elements\": Array<FormElementInfo | FormElementsWrapper> }>;\n \"click-target-form-elements\": {\n [key: string]: string[]\n }\n}\n\nexport class ArticlesByCategoriesConfiguratorFormCardAppConnection<T extends ArticlesByCategoriesFetchResult> extends ArticlesByCategoriesCardAppConnection<T> {\n constructor() {\n super();\n this.Method = CardFetchMethod.ArticlesByCategoriesConfiguratorForm;\n }\n\n public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n const result = super.Filter(unfiltered, context, active);\n\n const selectedFilters = context.states.SelectedFilters;\n if (selectedFilters.length < 1 || selectedFilters[0].filter.length < 1) {\n return result;\n }\n\n const formSettings = context.settings.Card[\"app-connection-settings\"][\"configurator-form-settings\"] as IAppConnectionSettingsConfiguratorForm;\n if (formSettings) {\n\n const elementsSettings = formSettings[\"form-elements-settings\"];\n if (elementsSettings) {\n for (const targetNode of elementsSettings) {\n if (targetNode.target?.tag) {\n const prefixToAppend = selectedFilters[0].filter[0].toString().toUpperCase(); // first filter for now...\n const targetForm = ComponentService.find(targetNode.target.tag, targetNode.target.query) as ConfiguratorFormComponent;\n\n if (targetForm) {\n const formElements = targetNode[\"form-elements\"];\n const applyPrefix = (element_: FormElementInfo | FormElementsWrapper): FormElementInfo | FormElementsWrapper => {\n if ('elements' in element_) {\n const wrapper = element_ as FormElementsWrapper;\n return {\n ...wrapper,\n elements: wrapper.elements.map(applyPrefix),\n ...( wrapper[\"inline-elements\"] ? { \"inline-elements\": wrapper[\"inline-elements\"].map(applyPrefix) } : {} )\n };\n }\n const element = element_ as FormElementInfo;\n if (element.name !== undefined) {\n return {\n ...element,\n name: `${prefixToAppend}_${element.name}`,\n };\n }\n return element_;\n };\n const updatedElements = formElements.map(applyPrefix);\n\n\n if (JSON.stringify(targetForm.formElements) != JSON.stringify(updatedElements)) {\n targetForm.formElements = updatedElements;\n targetForm.Refetch();\n }\n }\n }\n }\n }\n\n\n // if (formSettings.target?.tag) {\n // const prefixToAppend = selectedFilters[0].filter[0].toString().toUpperCase(); // first filter for now...\n // const targetForm = ComponentService.find(formSettings.target.tag, formSettings.target.query) as ConfiguratorFormComponent;\n\n // if (targetForm) {\n // const formElements = formSettings[\"form-elements\"];\n // const updatedElements = formElements.map(element_ => {\n // const element = element_ as FormElementInfo;\n\n // if (element.name !== undefined) {\n // return {\n // ...element,\n // name: `${prefixToAppend}_${element.name}`,\n // };\n // }\n\n // return element_;\n // });\n\n\n // if (JSON.stringify(targetForm.formElements) != JSON.stringify(updatedElements)) {\n // targetForm.formElements = updatedElements;\n // targetForm.Refetch();\n // }\n // }\n // }\n }\n return result;\n }\n\n private AppendValidTarget(name_: string | undefined, group_: string, targets_: { name: string, group: string }[]): void {\n if (name_ == undefined) {\n return;\n }\n\n const target = targets_.find((value)=>{\n return value.group == group_ && value.name == name_;\n });\n if (target == undefined) {\n targets_.push({\n name: name_,\n group: group_\n });\n }\n }\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n const formSettings = context.settings.Card[\"app-connection-settings\"][\"configurator-form-settings\"] as IAppConnectionSettingsConfiguratorForm;\n if (formSettings) {\n if (formSettings.target?.tag) {\n const selectedFilters = context.states.SelectedFilters;\n if (selectedFilters.length < 1 || selectedFilters[0].filter.length < 1) {\n await super.Click(card, context);\n return;\n }\n\n const prefixToAppend = selectedFilters[0].filter[0].toString().toUpperCase(); // first filter for now...\n\n const clickTargetFormElements = formSettings[\"click-target-form-elements\"];\n if (clickTargetFormElements == undefined) {\n await super.Click(card, context);\n return;\n }\n\n const possibleClickTargets: string[] = clickTargetFormElements[prefixToAppend];\n if (possibleClickTargets == undefined) {\n await super.Click(card, context);\n return;\n }\n\n for (const clickTarget of possibleClickTargets) {\n if (clickTarget == undefined) {\n return;\n }\n const clickTargetFormElement = {\n \"tag\": \"\",\n \"name\": clickTarget\n };\n\n const targets: { name: string, group: string }[] = [];\n const groups = Object.keys(ConfiguratorApiDataService.Data);\n for (const group of groups) {\n const countedTargetFormElements = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(group, ConfiguratorApiDataService.Data[group], [clickTargetFormElement], prefixToAppend + \"_\", \"\");\n for (const countedTargetFormElement of countedTargetFormElements) {\n this.AppendValidTarget((countedTargetFormElement as FormElementInfo).name, group, targets);\n const names = (countedTargetFormElement as FormElementInfo).names;\n if (names != undefined) {\n for (const name of names) {\n this.AppendValidTarget(name, group, targets);\n }\n }\n }\n }\n\n const params: IConfiguratorApiSetParams = {\n groups: []\n };\n\n if (card.click && targets.length > 0) {\n const value = {\n hinge: card.click[\"door-hinge\"],\n article: card.click.nr\n };\n for (const target of targets) {\n const data = ConfiguratorApiDataService.Get(target.group, \"\", target.name);\n if (data.type == \"string\") {\n params.groups.push({\n name: target.group,\n modifications: [{\n target: data.name ? data.name : \"\",\n type: \"string\",\n value: JSON.stringify(value)\n }]\n });\n }\n }\n await ConfiguratorApiService.SetApiData(params);\n }\n }\n return;\n }\n }\n\n\n\n await super.Click(card, context);// TODO PH/LL: different card click for replace/update logic (e.g via JSON-Input ...)\n }\n}\n\nCardDataService.RegisterAppConnection(new ArticlesByCategoriesConfiguratorFormCardAppConnection());\n","import {\n ArticleDimension,\n ArticlesByCategoriesCardAppConnection,\n ArticlesByCategoriesFetchResult\n} from \"./articles-by-categories.card.app.connection\";\nimport {\n CardContainerContext,\n CardContainerCustomIconButtonEvent,\n CardContainerUpdate,\n CardData,\n CardDataLevel,\n CardDataLevelKey,\n CardDataLevelMap,\n CardDataUpdateEvent,\n CardFetch,\n CardFetchMethod,\n FilterSelectionStrategy\n} from \"../../models/card-container\";\nimport { ComponentService } from \"../component.service\";\nimport { BaseCardContainer } from \"../../components/standard/card-container/base/base-card-container\";\nimport { EventHandlerService } from \"../event.handler.service\";\nimport { CardDataService } from \"../card.data.service\";\nimport { DimensionHelper } from \"../dimension-helper.class\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport { IArticleData } from \"@dh-software/webui-types\";\n\ninterface ArticlesByCategoriesDimensionFetchResult extends ArticlesByCategoriesFetchResult {\n \"article-dimensions\": ArticleDimension[];\n \"disabled-dimensions\": number[];\n dimensions: number[];\n active: CardDataLevelKey[]\n}\n\nexport class ArticlesByCategoriesDimensionCardAppConnection<T extends ArticlesByCategoriesDimensionFetchResult> extends ArticlesByCategoriesCardAppConnection<T> {\n constructor() {\n super();\n this.Method = CardFetchMethod.ArticlesByCategoriesDimensions;\n }\n\n private getFetchDimension(context: CardContainerContext): string | undefined {\n const dimension = context.settings.Fetch.parameters[\"dimension\"] as string | undefined;\n const dimensionIndex = context.settings.Fetch.parameters[\"automatic-dimension-order-index\"] as number | undefined;\n if (dimension) {\n return dimension;\n }\n if (dimensionIndex !== undefined) {\n return DimensionHelper.getDimensionNameFromIndex(dimensionIndex);\n }\n return undefined;\n }\n\n public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n if (event == CardDataUpdateEvent.LastPOLoaded) {\n return CardContainerUpdate.FILTER;\n }\n if (event == CardDataUpdateEvent.CardContainerVisible) {\n return CardContainerUpdate.FETCH;\n }\n return CardContainerUpdate.NONE;\n }\n\n private async GetDisabledDimensions(fetch: CardFetch, articleDimensions: Array<ArticleDimension>): Promise<Array<number>> {\n const cardContainerDisableSource = fetch.parameters ? fetch.parameters[\"card-container-disable-source-selector\"] as {\n tag: string,\n query: string\n } | undefined : undefined;\n if (cardContainerDisableSource != undefined) {\n const filteredArticleDimensionValues = new Array<Array<number>>();\n\n const disableSource = ComponentService.find(cardContainerDisableSource.tag, cardContainerDisableSource.query) as BaseCardContainer;\n if (disableSource != undefined) {\n await disableSource.CheckFetchPromise();\n\n if (disableSource.FilteredFetchResult != undefined) {\n const articles = disableSource.FilteredFetchResult.articles as Array<IArticleData>;\n for (const article of articles) {\n const articleDimension = new ArticleDimension(article, \"width\");\n filteredArticleDimensionValues.push([\n articleDimension.All.width,\n articleDimension.All.depth,\n articleDimension.All.height\n ]);\n }\n }\n }\n\n const result = new Array<number>();\n for (const articleDimension of articleDimensions) {\n let any = false;\n for (const value of filteredArticleDimensionValues) {\n if (value.includes(articleDimension.Value)) {\n any = true;\n break;\n }\n }\n if (!any) {\n result.push(articleDimension.Value);\n }\n }\n return result;\n }\n\n\n const disablePrecheckSelectors = fetch.parameters ? fetch.parameters[\"disable-precheck-selectors\"] as Array<{\n tag: string,\n query: string\n }> | undefined : undefined;\n if (disablePrecheckSelectors != undefined) {\n const result = new Array<number>();\n for (const selector of disablePrecheckSelectors) {\n const disablePrecheckElements = ComponentService.findAll(selector.tag, selector.query) as Array<BaseCardContainer>;\n for (const element of disablePrecheckElements) {\n await element.CheckFetchPromise();\n if (element.CardData) {\n for (const level of element.CardData) {\n for (const articleDimension of articleDimensions) {\n if (level[1].additional && level[1].additional.articles) {\n const filterResult = this.FilterByButtons([{\n filter: [articleDimension.Value],\n strategy: FilterSelectionStrategy.AND,\n \"additional-params\": {\n \"filter-type\": \"dimension\",\n \"dimension\": articleDimension.Dimension\n }\n }], level[1].additional.articles as Array<IArticleData>);\n\n if (filterResult.length < 1 && !result.includes(articleDimension.Value)) {\n result.push(articleDimension.Value);\n }\n }\n }\n }\n }\n }\n }\n return result;\n }\n return new Array<number>();\n }\n\n public async Fetch(context: CardContainerContext): Promise<T> {\n const dimension = this.getFetchDimension(context);\n if (dimension == undefined) {\n console.error(\"articles-by-categories-dimension.card.app.connection> Fetch failed! No dimension provided in fetch.parameters.dimension\");\n return {} as T;\n }\n let result = await super.Fetch(context);\n result = super.Filter(result, context, []);\n\n if (result.articles) {\n result[\"article-dimensions\"] = new Array<ArticleDimension>();\n for (const article of result.articles as Array<IArticleData>) {\n (result[\"article-dimensions\"] as Array<ArticleDimension>).push(new ArticleDimension(article, dimension));\n }\n if (context.states.SuspendDisableSource) {\n result[\"disabled-dimensions\"] = new Array<number>();\n } else {\n result[\"disabled-dimensions\"] = await this.GetDisabledDimensions(context.settings.Fetch, result[\"article-dimensions\"] as Array<ArticleDimension>);// TODO: Move to Filter by awaiting other fetches here...\n }\n\n const dimensions = new Array<number>();\n for (const articleDimension of result[\"article-dimensions\"] as Array<ArticleDimension>) {\n if (!dimensions.includes(articleDimension.Value)) {\n dimensions.push(articleDimension.Value);\n }\n }\n result[\"dimensions\"] = dimensions;\n }\n return result;\n }\n\n public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n const filtered = unfiltered\n\n const options = active;\n for (const option of options) {\n if (typeof option == \"number\") {\n if (!filtered.dimensions.includes(option)) {\n const index = active.indexOf(option);\n active = active.splice(index, 1);\n }\n }\n }\n filtered[\"active\"] = active;\n return filtered;\n }\n\n public CreateCards(filtered: ArticlesByCategoriesDimensionFetchResult, context: CardContainerContext): CardDataLevelMap {\n const fetchResult = filtered\n const rootLevel: CardDataLevel = { title: \"\", cards: [] };\n const groupings = new Map<CardDataLevelKey, CardDataLevel>();\n if (fetchResult.dimensions) {\n if (fetchResult.dimensions.length > 0) {\n fetchResult.dimensions.sort((a, b) => {\n return a - b;\n });\n\n const dimensionScale = fetchResult[\"dimension-scale\"];\n let fractionDigits = context.settings.Fetch.parameters[\"fraction-digits\"] ? context.settings.Fetch.parameters[\"fraction-digits\"] as number : 1;\n if (typeof fractionDigits != \"number\") {\n fractionDigits = 1;\n }\n const valueGroupRange = (context.settings.Fetch.parameters[\"value-group-range\"] ? context.settings.Fetch.parameters[\"value-group-range\"] as number : 1000.0);\n const disabledDimensions = fetchResult[\"disabled-dimensions\"];\n const active = fetchResult[\"active\"];\n\n const rangeGroups = new Array<Array<number>>();\n let currentGroup = new Array<number>();\n let groupRangeMax = valueGroupRange;\n for (const dimension of fetchResult.dimensions) {\n if (dimension > groupRangeMax + 0.001) {\n rangeGroups.push(currentGroup);\n currentGroup = new Array<number>();\n groupRangeMax += valueGroupRange;\n }\n currentGroup.push(dimension);\n }\n if (!rangeGroups.includes(currentGroup)) {\n rangeGroups.push(currentGroup);\n }\n\n const maxSizeAdjustedGroups = new Array<Array<number>>();\n const valueGroupMaxSize = context.settings.Fetch.parameters[\"value-group-max-size\"] as number | undefined;\n if (valueGroupMaxSize != undefined) {\n for (const group of rangeGroups) {\n if (group.length > valueGroupMaxSize) {\n const leftHalf = group.splice(0, Math.ceil(group.length * 0.5));\n maxSizeAdjustedGroups.push(leftHalf);\n }\n maxSizeAdjustedGroups.push(group);\n }\n } else {\n maxSizeAdjustedGroups.push(...rangeGroups);\n }\n\n\n const groups = new Array<Array<number>>();\n const valueGroupMinSplitSize = context.settings.Fetch.parameters[\"value-group-min-split-size\"] as number | undefined;\n if (valueGroupMinSplitSize != undefined && valueGroupMinSplitSize > maxSizeAdjustedGroups.length) {\n // valueGroupMinSplitSize\n let mergedGroup = undefined;\n for (const group of maxSizeAdjustedGroups) {\n if (mergedGroup != undefined) {\n mergedGroup.push(...group);\n\n if (mergedGroup.length > valueGroupMinSplitSize) {\n groups.push(mergedGroup);\n mergedGroup = undefined;\n }\n continue;\n }\n\n if (group.length < valueGroupMinSplitSize) {\n mergedGroup = new Array<number>();\n mergedGroup.push(...group);\n continue;\n }\n\n groups.push(group);\n }\n } else {\n groups.push(...maxSizeAdjustedGroups);\n }\n\n\n if (groups.length == 1) {\n const group: Array<number> | undefined = groups.at(0);\n if (group && group.length > 0) {\n for (const option of group) {\n const optionDisabled = disabledDimensions.includes(option);\n\n let optionActive = false;\n if (active.includes(option)) {\n optionActive = true;\n }\n rootLevel.cards.push({\n txt: { title: (option * dimensionScale).toFixed(fractionDigits) },\n click: {\n \"previous-level-key\": context.settings.Fetch[\"root-level\"],\n \"level-key\": option,\n \"next-level-key\": \"\"\n },\n active: optionActive,\n disabled: optionDisabled\n });\n }\n }\n } else {\n for (const group of groups) {\n if (group.length > 0) {\n const first = (group.at(0) as number) * dimensionScale;\n const last = (group.at(group.length - 1) as number) * dimensionScale;\n\n const groupLevelKey = `${first.toFixed(fractionDigits)} - ${last.toFixed(fractionDigits)}`;\n rootLevel.cards.push({\n txt: { title: groupLevelKey },\n click: {\n \"previous-level-key\": \"\",\n \"level-key\": context.settings.Fetch[\"root-level\"],\n \"next-level-key\": groupLevelKey\n }\n });\n\n const groupLevel: CardDataLevel = { title: groupLevelKey, cards: [] };\n for (const option of group) {\n const optionDisabled = disabledDimensions.includes(option);\n\n let optionActive = false;\n if (active.includes(option)) {\n optionActive = true;\n }\n groupLevel.cards.push({\n txt: { title: (option * dimensionScale).toFixed(fractionDigits) },\n click: {\n \"previous-level-key\": groupLevelKey,\n \"level-key\": option,\n \"next-level-key\": \"\"\n },\n active: optionActive,\n disabled: optionDisabled\n });\n }\n groupings.set(groupLevelKey, groupLevel);\n }\n }\n }\n }\n }\n\n if (context.settings.Fetch.parameters[\"force-single-option-as-empty\"] == true) {\n if (rootLevel.cards.length < 2 && groupings.size < 1) {\n rootLevel.cards = [];\n }\n }\n\n if (groupings.size == 1) {\n rootLevel.cards = [];\n for (const grouping of groupings) {\n rootLevel.cards.push(...grouping[1].cards);\n }\n groupings.clear();\n }\n\n const result = new Map<CardDataLevelKey, CardDataLevel>();\n result.set(context.settings.Fetch[\"root-level\"], rootLevel);\n for (const group of groupings) {\n result.set(group[0], group[1]);\n }\n return result;\n }\n\n\n private clickActive = false;\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n if (this.clickActive) return;\n this.clickActive = true;\n await super.Click(card, context);\n\n if (context.filter != undefined) {\n const dimension = this.getFetchDimension(context);\n if (dimension) {\n context.filter.AdditionalParams = {\n \"filter-type\": \"dimension\",\n \"dimension\": dimension\n };\n }\n context.filter.Strategy = FilterSelectionStrategy.OR;\n\n if (card.disabled == false && card.click != undefined) {\n if (typeof card.click[\"level-key\"] == \"number\") {\n context.filter.Toggle(card.click[\"level-key\"]);\n }\n }\n await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n refetch: true,\n \"include-hidden\": false\n });\n await CardDataService.WaitForAllCardContainerFetchPromises();\n\n if (context.settings.Fetch.parameters[\"disabled-reset-selection\"]) {\n if (context.cards != undefined && card.click != undefined) {\n for (const level of context.cards) {\n for (const cardInLevel of level[1].cards) {\n if (cardInLevel.click == undefined) continue;\n if (cardInLevel.click[\"level-key\"] == card.click[\"level-key\"]) {\n if (cardInLevel.disabled == false && cardInLevel.active == false) {\n context.filter.Add(card.click[\"level-key\"]);\n break;\n }\n }\n }\n }\n }\n await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n refetch: true,\n \"include-hidden\": false\n });\n await CardDataService.WaitForAllCardContainerFetchPromises();\n }\n }\n\n\n this.clickActive = false;\n }\n\n public InitFilterSelectionParams(context: CardContainerContext): void {\n if (context.filter != undefined) {\n const dimension = this.getFetchDimension(context);\n if (dimension) {\n context.filter.AdditionalParams = {\n \"filter-type\": \"dimension\",\n \"dimension\": dimension\n };\n }\n context.settings.Filter[\"selection-strategy\"] = FilterSelectionStrategy.OR;\n }\n }\n\n private _lastInteractionTimer: number | undefined = undefined;\n public InteractionOnIconButton(context: CardContainerContext, eventParameters: CardContainerCustomIconButtonEvent): void {\n const triggerTime = Date.now();\n\n if (context.settings.Fetch.parameters[\"icon-button-interaction-set-filter-dimension\"] !== eventParameters.command) {\n return;\n }\n if (this._lastInteractionTimer !== undefined && triggerTime - this._lastInteractionTimer < 1000) {\n return;\n }\n\n this._lastInteractionTimer = triggerTime;\n const dimension = this.getFetchDimension(context);\n\n CommunicationMessageService.getLOsFromScene([eventParameters.instanceIdent]).then(async articles => {\n if (articles.length === 0) {\n return;\n }\n\n const article = articles[0];\n if (article === undefined) {\n return;\n }\n\n context.filter?.Clear();\n\n switch (dimension) {\n case \"width\":\n if (article.dimension && article.dimension.length > 0 && article.dimension[0] !== undefined) {\n context.filter?.Add(article.dimension[0]);\n }\n break;\n case \"depth\":\n if (article.dimension && article.dimension.length > 1 && article.dimension[1] !== undefined) {\n context.filter?.Add(article.dimension[1]);\n }\n break;\n case \"height\":\n if (article.dimension && article.dimension.length > 2 && article.dimension[2] !== undefined) {\n context.filter?.Add(article.dimension[2]);\n }\n break;\n }\n });\n }\n}\n\nCardDataService.RegisterAppConnection(new ArticlesByCategoriesDimensionCardAppConnection());\n","import {\n ArticlesByCategoriesCardAppConnection,\n ArticlesByCategoriesFetchResult\n} from \"./articles-by-categories.card.app.connection\";\nimport {\n CardContainerContext,\n CardContainerUpdate,\n CardData,\n CardDataLevel,\n CardDataLevelKey,\n CardDataLevelMap,\n CardDataUpdateEvent,\n CardFetchMethod,\n FilterSelectionStrategy\n} from \"../../models/card-container\";\nimport {EventHandlerService} from \"../event.handler.service\";\nimport {CardDataService} from \"../card.data.service\";\nimport {ManuProgService} from \"../manu-prog.service\";\nimport {UtilService} from \"../util.service\";\nimport {IArticleData, ICategoryData} from \"@dh-software/webui-types\";\n\nexport interface ArticleByCategoriesCategoryFetchResult extends ArticlesByCategoriesFetchResult {\n \"active\": CardDataLevelKey[];\n \"categories\": Map<number, Map<string, { name: string, order: number }>>\n \"kata-pages\": any;\n}\n\nexport class ArticlesByCategoriesCategorySelectionCardAppConnection<T extends ArticleByCategoriesCategoryFetchResult> extends ArticlesByCategoriesCardAppConnection<T> {\n constructor() {\n super();\n this.Method = CardFetchMethod.ArticlesByCategoriesCategorySelection;\n }\n\n public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n if (event == CardDataUpdateEvent.SelectionChanged) {\n return CardContainerUpdate.FILTER;\n }\n return await super.CheckUpdate(event, eventParameters, context);\n }\n\n public async Fetch(context: CardContainerContext) {\n context.settings.Fetch.manufacturer = context.settings.Fetch.manufacturer && context.settings.Fetch.manufacturer.length > 0 ? context.settings.Fetch.manufacturer : await ManuProgService.getManufacturer();\n context.settings.Fetch.program = context.settings.Fetch.program && context.settings.Fetch.program.length > 0 ? context.settings.Fetch.program : await ManuProgService.getProgram();\n return await super.Fetch(context);\n }\n\n\n public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n const filtered = super.Filter(unfiltered, context, active);\n filtered[\"active\"] = active;\n filtered[\"categories\"] = new Map<number, Map<string, { name: string, order: number }>>();\n\n\n if (filtered[\"kata-pages\"]) {\n const categoriesOccurrences = new Map<string, number>();\n for (const article of filtered.articles) {\n const categories = article.CatString.split(\",\");\n for (const category of categories) {\n if (category.includes(\"manucat_\")) continue;\n\n let occurances = categoriesOccurrences.get(category);\n if (occurances == undefined) {\n occurances = 0;\n }\n occurances += 1;\n categoriesOccurrences.set(category, occurances);\n }\n }\n\n const categoriesToSkip = new Array<string>();\n for (const category of categoriesOccurrences) {\n if (category[1] == filtered.articles.length) {\n categoriesToSkip.push(category[0]);\n }\n }\n if (context.settings.Fetch.parameters[\"kata-pages-to-show\"]) {\n const kataPagesToShowParam = context.settings.Fetch.parameters[\"kata-pages-to-show\"] as {\n [program: string]: Array<string>\n } | Array<string>;\n if (kataPagesToShowParam) {\n const kataPagesToShow = Array.isArray(kataPagesToShowParam) ? kataPagesToShowParam : kataPagesToShowParam[context.settings.Fetch.program];\n if (kataPagesToShow && kataPagesToShow.length > 0) {\n for (const katapage of filtered[\"kata-tree\"].kataPages) {\n if (!kataPagesToShow.includes(katapage.id)) {\n if (!categoriesToSkip.includes(katapage.id)) {\n categoriesToSkip.push(katapage.id);\n }\n }\n }\n }\n }\n }\n\n\n const fill = (categoryDataList: Array<ICategoryData>, categoryLevels: Map<number, Map<string, {\n name: string,\n order: number\n }>>) => {\n for (const kategoryData of categoryDataList) {\n if (kategoryData.priority != undefined) {\n if (categoriesOccurrences.has(kategoryData.id)) {\n if (!categoriesToSkip.includes(kategoryData.id)) {\n let level = categoryLevels.get(kategoryData.priority);\n if (level) {\n const category = level.get(kategoryData.id);\n if (category == undefined) {\n level.set(kategoryData.id, {\n name: UtilService.ncrToUTF8(kategoryData.name),\n order: kategoryData.order ? kategoryData.order : 99999\n });\n }\n } else {\n level = new Map<string, { name: string, order: number }>();\n level.set(kategoryData.id, {\n name: UtilService.ncrToUTF8(kategoryData.name),\n order: kategoryData.order ? kategoryData.order : 99999\n });\n categoryLevels.set(kategoryData.priority, level);\n }\n }\n }\n\n if (kategoryData.children) {\n fill(kategoryData.children, categoryLevels);\n }\n }\n }\n };\n fill(filtered[\"kata-tree\"].kataPages, filtered[\"categories\"]);\n }\n return filtered;\n }\n\n\n public CreateCards(filtered: T, context: CardContainerContext): CardDataLevelMap {\n const data: {\n \"img-node-prefix\": string,\n \"currency\": string,\n \"dimension-scale\": number,\n \"unit-fallback\": \"mm\" | \"cm\",\n \"articles\": Array<IArticleData>,\n \"categories\": Map<number, Map<string, { name: string, order: number }>>,\n \"active\": Array<CardDataLevelKey>\n } = filtered as {\n \"img-node-prefix\": string,\n \"currency\": string,\n \"dimension-scale\": number,\n \"unit-fallback\": \"mm\" | \"cm\",\n \"articles\": Array<IArticleData>,\n \"categories\": Map<number, Map<string, { name: string, order: number }>>,\n \"active\": Array<CardDataLevelKey>\n };\n\n const sortedByKey = new Map([...data.categories].sort((a, b) => a[0] - b[0]));\n const sorted = new Map<number, Map<string, { name: string, order: number }>>();\n for (const level of sortedByKey) {\n // const _unsorted = level[1];\n const sortedLevel = new Map([...level[1]].sort((a, b) => {\n return a[1].order - b[1].order;\n }));\n sorted.set(level[0], sortedLevel);\n }\n\n const resultMap = new Map<CardDataLevelKey, CardDataLevel>();\n for (const level of sorted) {\n const result: CardDataLevel = {title: \"\", cards: []};\n result.additional = {\n articles: data.articles\n };\n for (const categories of level[1]) {\n result.cards.push({\n txt: {txt: categories[1].name},\n click: {\n \"previous-level-key\": \"\",\n \"level-key\": context.settings.Fetch[\"root-level\"],\n \"next-level-key\": categories[0]\n },\n active: data[\"active\"].includes(categories[0])\n });\n }\n resultMap.set(level[0], result);\n }\n return resultMap;\n }\n\n\n private clickActive = false;\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n if (this.clickActive) return;\n this.clickActive = true;\n\n await super.Click(card, context);\n\n if (context.filter != undefined && card.click != undefined) {\n context.filter.Strategy = FilterSelectionStrategy.AND;\n context.filter.Toggle(card.click[\"next-level-key\"]);\n }\n\n await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n refetch: true,\n \"include-hidden\": false\n });\n await CardDataService.WaitForAllCardContainerFetchPromises();\n this.clickActive = false;\n }\n}\n\nCardDataService.RegisterAppConnection(new ArticlesByCategoriesCategorySelectionCardAppConnection());\n","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport {\n CardContainerContext,\n CardContainerUpdate,\n CardData,\n CardDataUpdateEvent,\n FilterSelectionStrategy\n} from \"../../models/card-container\";\nimport { ManuProgService } from \"../manu-prog.service\";\nimport { UtilService } from \"../util.service\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport {\n IArticleData,\n IModifyPropertyOptions,\n IPlannedArticle,\n IProgProperty,\n IProgPropertyValue\n} from \"@dh-software/webui-types\";\n\nexport type BasePropertyFetchResult = {\n manufacturer: string;\n program: string;\n \"allowed-keys\"?: Array<number>;\n}\n\nexport abstract class BasePropertyCardAppConnection<T extends BasePropertyFetchResult = BasePropertyFetchResult> extends BaseCardDataAppConnection<T> {\n\n public override async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n if (event == CardDataUpdateEvent.RefreshPropertyPanel) {\n this.onRefreshPropertyPanel();\n }\n if (event == CardDataUpdateEvent.LastPOLoaded || event == CardDataUpdateEvent.RefreshPropertyPanel) {\n return CardContainerUpdate.FETCH;\n }\n return this.CheckUpdateInternal(event, eventParameters, context);\n }\n\n protected async CheckUpdateInternal(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n if (event == CardDataUpdateEvent.CardContainerVisible) {\n return CardContainerUpdate.FETCH;\n }\n return CardContainerUpdate.NONE;\n }\n\n protected onRefreshPropertyPanel(): void {\n // override in subclass to update its own static timestamp\n }\n\n protected static propertyKeyMatches(propertyId: string, keys: Array<number | string>): boolean {\n for (const key of keys) {\n if (typeof key === \"string\" && key.startsWith(\"/\")) {\n const lastSlash = key.lastIndexOf(\"/\");\n const pattern = lastSlash > 0 ? key.slice(1, lastSlash) : key.slice(1);\n const flags = lastSlash > 0 ? key.slice(lastSlash + 1) : \"\";\n try {\n if (new RegExp(pattern, flags).test(propertyId)) return true;\n } catch {\n // invalid regex, skip\n }\n } else {\n if (key === propertyId || key === parseInt(propertyId)) return true;\n }\n }\n return false;\n }\n\n protected async getCommonFetchParameters(context: CardContainerContext): Promise<{\n useSelection: boolean;\n useRelevant: boolean;\n ignoreSingleValueProperties: boolean;\n manufacturer: string;\n program: string;\n }> {\n return {\n useSelection: context.settings.Fetch.parameters[\"use-selection\"] != undefined ? context.settings.Fetch.parameters[\"use-selection\"] as boolean : false,\n useRelevant: context.settings.Fetch.parameters[\"use-relevant\"] != undefined ? context.settings.Fetch.parameters[\"use-relevant\"] as boolean : true,\n ignoreSingleValueProperties: context.settings.Fetch.parameters[\"ignore-single-value-properties\"] != undefined ? context.settings.Fetch.parameters[\"ignore-single-value-properties\"] as boolean : false,\n manufacturer: context.settings.Fetch.manufacturer && context.settings.Fetch.manufacturer.length > 0 ? context.settings.Fetch.manufacturer : await ManuProgService.getManufacturer(),\n program: context.settings.Fetch.program ? context.settings.Fetch.program : await ManuProgService.getProgram()\n };\n }\n\n protected async cachedFind<R>(cacheKey: string, cache: Map<string, R | Promise<R>>, fetcher: () => Promise<R>): Promise<R> {\n const cachedResult = cache.get(cacheKey);\n if (cachedResult != undefined) {\n if ((cachedResult as Promise<R>).then != undefined) {\n return await (cachedResult as Promise<R>);\n } else {\n return cachedResult as R;\n }\n }\n const fetchPromise = fetcher();\n cache.set(cacheKey, fetchPromise);\n const fetchedResult = await fetchPromise;\n cache.set(cacheKey, fetchedResult);\n return fetchedResult;\n }\n\n protected async fetchAllowedKeysByCategories(context: CardContainerContext, manufacturer: string, program: string): Promise<Array<number> | undefined> { // TODO: Switch to Context Based System (filtered on Category Basis)\n if (!context.settings.Fetch.parameters[\"use-category-in-buttons-filter\"] && !context.settings.Fetch.parameters[\"use-category-in-selection-filter\"]) {\n return undefined;\n }\n\n const categories = new Array<string>();\n for (const filter of context.states.SelectedFilters) {\n if (typeof filter.filter[0] === \"string\") {\n categories.push(...filter.filter as Array<string>);\n }\n }\n\n const [plannedArticles, articles]: [Array<IPlannedArticle>, Array<IArticleData>] = await Promise.all([\n CommunicationMessageService.getPlannedArticles(),\n CommunicationMessageService.getArticleByCategories(manufacturer, program, categories).then((r: Array<IArticleData> | null) => r ?? [])\n ]);\n\n const classIdStrings = new Array<string>();\n for (const article of articles) {\n if (!classIdStrings.includes(article.ClassID)) classIdStrings.push(article.ClassID);\n }\n\n const allowedKeys = new Array<number>();\n for (const article of plannedArticles) {\n if (classIdStrings.includes(article.typeInfo.toFixed(0))) {\n allowedKeys.push(...article.keys);\n }\n if (article.typeInfo == 30012 /* POVZQUADER */) {\n allowedKeys.push(...article.childrenKeys);\n }\n }\n\n return [...new Set(allowedKeys)];\n }\n\n protected filterPropertiesByAllowedKeys(properties: Array<IProgProperty>, context: CardContainerContext, allowedKeys?: Array<number>): Array<IProgProperty> {\n const orFilters = context.states.SelectedFilters\n ?.filter(f => f.strategy === FilterSelectionStrategy.OR)\n .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n\n const configFilter = context.settings.Fetch.filter[\"property-keys\"] as { keys: Array<number | string>, \"prohibit-listed\"?: boolean } | undefined;\n const hasConfigFilter = !!configFilter?.keys?.length;\n const configInclude = hasConfigFilter ? configFilter![\"prohibit-listed\"] !== true : true;\n\n // A property-ui-group selection emits an OR filter tagged `filter-type: \"property-group\"`.\n // While such a filter is active it *restricts* the list to that group's keys (rather than\n // only protecting them, the way a plain selected filter — e.g. a category — does).\n const hasGroupFilter = !!orFilters?.some(f =>\n (f[\"additional-params\"] as { \"filter-type\"?: string } | undefined)?.[\"filter-type\"] === \"property-group\");\n\n return properties.filter(p => {\n if (orFilters?.length && orFilters.some(f => BasePropertyCardAppConnection.propertyKeyMatches(p.id, f.filter))) {\n return true; // protected by SelectedFilters — skip remaining checks\n }\n if (hasGroupFilter) {\n return false; // a property-ui-group filter is active → hide non-matching properties\n }\n if (hasConfigFilter && BasePropertyCardAppConnection.propertyKeyMatches(p.id, configFilter!.keys) !== configInclude) {\n return false;\n }\n if (allowedKeys !== undefined) {\n return allowedKeys.length > 0 && allowedKeys.includes(parseInt(p.id));\n }\n return true;\n });\n }\n\n protected buildCardFromPropertyValue(\n propertyValue: IProgPropertyValue,\n propertyValueKey: string,\n property: IProgProperty,\n filtered: BasePropertyFetchResult,\n context: CardContainerContext,\n extraModifyRequestData?: Record<string, unknown>\n ): CardData {\n return {\n txt: {\n title: UtilService.ncrToUTF8(propertyValue.name),\n tooltip: propertyValue.toolTipType == \"text\" ? propertyValue.toolTipData as string : \"\"\n },\n image: { prefix: \"\", file: propertyValue.alternativeImageUrl },\n click: {\n \"modify-property-request\": {\n manufacturer: filtered.manufacturer,\n program: filtered.program,\n key: property.id,\n property: propertyValue.key,\n propertyKey: propertyValue.propertyKey,\n ...extraModifyRequestData\n },\n \"previous-level-key\": context.settings.Fetch[\"root-level\"],\n \"level-key\": property.id,\n \"next-level-key\": \"\"\n },\n active: property.currentValue == propertyValueKey\n };\n }\n\n public override async Click(card: CardData, context: CardContainerContext): Promise<void> {\n if (card.click && card.click[\"modify-property-request\"]) {\n await CommunicationMessageService.modifyProperty(JSON.stringify(card.click[\"modify-property-request\"]), card.click[\"modify-property-options\"] as IModifyPropertyOptions);\n\n const clearSelection = !!context.settings.Card[\"app-connection-settings\"][\"clear-selection\"];\n if (clearSelection) {\n await CommunicationMessageService.clearSelectionHandler();\n }\n }\n }\n\n GetFilterSelectionStrategy(context: CardContainerContext): FilterSelectionStrategy {\n if (context.states.SelectedFilters.length > 0) {\n return FilterSelectionStrategy.OR;\n }\n return FilterSelectionStrategy.NONE;\n }\n}\n","import { BasePropertyCardAppConnection, BasePropertyFetchResult } from \"./base-property-card-app.connection\";\nimport { CardFetchMethod, CardDataLevelKey, CardDataLevel, CardContainerContext, FilterSelectionStrategy } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { UtilService } from \"../util.service\";\nimport { ProgPropertyModel } from \"@dh-software/webui-api\";\nimport { IProgProperty, IProgPropertyProgram } from \"@dh-software/webui-types\";\n\nexport type PropertyFetchResult = BasePropertyFetchResult & {\n properties: Array<IProgProperty>;\n}\n\nexport class PropertySelectionCardAppConnection extends BasePropertyCardAppConnection<PropertyFetchResult> {\n constructor() {\n super();\n this.Method = CardFetchMethod.PropertySelection;\n }\n\n private static lastRefreshPropertyPanelTimestamp: number | undefined = undefined;\n protected override onRefreshPropertyPanel(): void {\n PropertySelectionCardAppConnection.lastRefreshPropertyPanelTimestamp = Date.now();\n }\n\n private static propertiesCache = new Map<string, IProgPropertyProgram | Promise<IProgPropertyProgram>>();\n protected async Find(manufacturer: string, program: string, useSelection: boolean, useRelevant: boolean, fullHierarchy: boolean, instanceIdents?: Array<number>): Promise<IProgPropertyProgram> {\n const cacheKey = manufacturer + program\n + (useSelection ? \"Selection\" : \"NoSelection\")\n + (useRelevant ? \"Relevant\" : \"NotRelevant\")\n + (fullHierarchy ? \"FullHierarchy\" : \"SmallHierarchy\")\n + (instanceIdents != undefined ? instanceIdents.toString() : \"[]\")\n + (PropertySelectionCardAppConnection.lastRefreshPropertyPanelTimestamp?.toString() ?? \"\");\n return this.cachedFind(cacheKey, PropertySelectionCardAppConnection.propertiesCache, () =>\n ProgPropertyModel.find(manufacturer, program, useSelection, useRelevant, fullHierarchy, instanceIdents) as Promise<IProgPropertyProgram>\n );\n }\n\n public override async Fetch(context: CardContainerContext): Promise<PropertyFetchResult> {\n const { useSelection, useRelevant, ignoreSingleValueProperties, manufacturer, program } = await this.getCommonFetchParameters(context);\n\n const properties = new Array<IProgProperty>();\n const propertiesHierarchy = await this.Find(manufacturer, program, useSelection, useRelevant, false);\n if (propertiesHierarchy != undefined) {\n const keys = propertiesHierarchy.propertyKeyOrder ?? Object.keys(propertiesHierarchy.children);\n for (const key of keys) {\n if (ignoreSingleValueProperties && Object.keys(propertiesHierarchy.children[key].children).length < 2) continue;\n properties.push(propertiesHierarchy.children[key]);\n }\n } else {\n console.error(\"PropertySelectionCardAppConnection.Fetch> ProgPropertyModel.find returned undefined!\", { manufacturer, program });\n }\n\n const result: PropertyFetchResult = { manufacturer, program, properties };\n const allowedKeys = await this.fetchAllowedKeysByCategories(context, manufacturer, program);\n if (allowedKeys !== undefined) result[\"allowed-keys\"] = allowedKeys;\n return result;\n }\n\n public override Filter(unfiltered: PropertyFetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): PropertyFetchResult {\n if (unfiltered.properties == undefined) return { ...unfiltered, properties: [] };\n return { ...unfiltered, properties: this.filterPropertiesByAllowedKeys(unfiltered.properties, context, unfiltered[\"allowed-keys\"]) };\n }\n\n public override CreateCards(filtered: PropertyFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const result = new Map<CardDataLevelKey, CardDataLevel>();\n if (!filtered.properties?.length) return result;\n\n const rootLevel: CardDataLevel = { title: \"\", cards: [] };\n for (const property of filtered.properties) {\n const current = property.children[property.currentValue];\n rootLevel.cards.push({\n txt: { title: UtilService.ncrToUTF8(property.name) },\n image: { prefix: \"\", file: current ? current.alternativeImageUrl : \"\" },\n click: {\n \"previous-level-key\": context.settings.Fetch[\"root-level\"],\n \"level-key\": property.id,\n strategy: FilterSelectionStrategy.AND,\n priority: 0,\n \"next-level-key\": \"\"\n }\n });\n }\n result.set(context.settings.Fetch[\"root-level\"], rootLevel);\n return result;\n }\n}\nCardDataService.RegisterAppConnection(new PropertySelectionCardAppConnection());\n","import { PropertySelectionCardAppConnection, PropertyFetchResult } from \"./property-selection.card.app.connection\";\nimport { CardData, CardFetchMethod, CardDataLevelKey, CardDataLevel, CardContainerContext } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { DragType, IDragOptions, IProgPropertyValue } from \"@dh-software/webui-types\";\n\nexport class PropertyValueSelectionCardAppConnection extends PropertySelectionCardAppConnection {\n constructor() {\n super();\n this.Method = CardFetchMethod.PropertyValueSelection;\n }\n\n public override CreateCards(filtered: PropertyFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const result = new Map<CardDataLevelKey, CardDataLevel>();\n if (!filtered.properties?.length) return result;\n\n for (const property of filtered.properties) {\n const level: CardDataLevel = { title: property.name, cards: [] };\n if (property.children == undefined) {\n result.set(property.id, level);\n continue;\n }\n\n for (const [propertyValueKey, propertyValue] of Object.entries(property.children)) {\n level.cards.push(this.buildCardFromPropertyValue(propertyValue as IProgPropertyValue, propertyValueKey, property, filtered, context));\n }\n result.set(property.id, level);\n }\n return result;\n }\n\n public override GetFormattedDragData(card: CardData, context: CardContainerContext): IDragOptions | undefined {\n if (card.click) {\n const request = card.click[\"modify-property-request\"] as {\n manufacturer: string;\n program: string;\n key: string;\n property: string;\n propertyKey: string;\n };\n return {\n id: request.key,\n type: DragType.PROGPROPERTY,\n extData: request,\n options: { modifyElement: true }\n };\n }\n }\n}\nCardDataService.RegisterAppConnection(new PropertyValueSelectionCardAppConnection());\n","import { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement, DhElement } from \"../base/base.component\";\nimport style from \"./steps.component.sass?inline\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from '../../../utils/event.handler.service';\nimport type { StepComponent } from \"../step/step.component\";\n\n// Runtime-resolved instanceof to keep type narrowing without a static import cycle.\nfunction isStepComponent(el: unknown): el is StepComponent {\n const ctor = customElements.get(\"fv-step\");\n return ctor != undefined && el instanceof ctor;\n}\nimport { CardDataService } from \"../../../utils/card.data.service\";\nimport { WebViewerService } from \"@dh-software/webui-api\";\nimport type { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\n\nexport interface NextPreviousData {\n \"steps-component\": string,\n \"selector\"?: string\n}\n\ndeclare global {\n interface ComponentStates {\n \"fv-steps:next\": NextPreviousData;\n \"fv-steps:previous\": NextPreviousData;\n \"fv-steps:activate-first\": NextPreviousData;\n \"fv-steps:activate\": NextPreviousData & { index: number };\n \"fv-steps:activate-current\": NextPreviousData;\n }\n}\n\nexport interface StepTargetSelectorData {\n modal: {\n query: string,\n mask: string,\n dimmed?: boolean,\n fade?: boolean,\n data?: { [key: string]: unknown },\n cancelable?: boolean,\n \"mask-query\"?: string,\n \"mask-query-container-query\"?: string,\n \"mask-query-container-tag\"?: string,\n \"dispatch-after-activation-events\"?: boolean\n },\n modals: Array<{\n query: string,\n mask: string,\n dimmed?: boolean,\n fade?: boolean,\n data?: { [key: string]: unknown },\n cancelable?: boolean,\n \"mask-query\"?: string,\n \"mask-query-container-query\"?: string,\n \"mask-query-container-tag\"?: string,\n \"dispatch-after-activation-events\"?: boolean\n }>,\n element: {\n name: string,\n selector: string,\n all: boolean,\n \"additional-target-contents\": Array<{ name: string, selector: string }>,\n \"ignore-default-target-content\"?: boolean | undefined\n },\n elements: Array<{\n name: string,\n selector: string,\n all: boolean,\n \"additional-target-contents\": Array<{ name: string, selector: string }>,\n \"ignore-default-target-content\"?: boolean | undefined\n }>\n}\n\ninterface StepActivatedEvent extends EventHandlerEvent {\n \"do-not-call-on\": Array<string>;\n needsInteraction?: boolean\n}\n\n@customElement(\"fv-steps\")\nexport class StepsComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Object, reflect: true, attribute: \"step-target-selectors\" })\n public stepTargetSelectors: { [stepindex: string]: StepTargetSelectorData } = {};\n\n @property({ type: Boolean, reflect: true, attribute: \"ignore-empty-targets\" })\n public ignoreEmptyTargets = false;\n\n @property({ type: Object, reflect: true, attribute: \"step-activated-events\" })\n public stepActivatedEvents: { [stepindex: string | \"first\" | \"last\" | \"any\"]: Array<StepActivatedEvent> } = {};\n\n @property({type: Boolean, reflect: true, attribute: \"hide-empty-content\"})\n public hideEmptyContent = false;\n\n @property({type: Boolean, reflect: true, attribute: \"auto-disable-steps\"})\n public autoDisableSteps = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"reactivate-step\" })\n public reactivateStep = false;\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-steps:next\": async () => { await this._traverseAndActivate(false); },\n \"fv-steps:previous\": async () => { await this._traverseAndActivate(true); },\n \"fv-steps:activate-first\": () => { this.activateFirst(); },\n \"fv-steps:activate\": (data) => { this.activate(data.index); },\n \"fv-steps:activate-current\": () => { this.activate(this.activeIndex); },\n };\n\n private async _traverseAndActivate(previous: boolean): Promise<void> {\n if (await this.traverseStages(previous)) return;\n if (this.reactivateStep) {\n this.activate(this.activeIndex);\n } else {\n this.activate(previous ? this.getPreviousStepIndex() : this.getNextStepIndex());\n }\n }\n\n @property({ type: Number, reflect: true, attribute: \"start-index\" })\n public startIndex = 0;\n\n @property({ type: Number, reflect: true, attribute: \"start-index-cloud-id-overwrite\" })\n public startIndexCloudIdOverwrite?: number;\n\n @property({ type: String, reflect: true, attribute: \"step-query\" })\n public stepQuery = \"fv-step\";\n\n @property({ type: Object, reflect: true, attribute: \"step-translation\" })\n public stepTranslation: { [key: string]: string } = {};\n\n @property({ type: Object, reflect: true, attribute: \"step-order\" })\n public stepOrder: { [key: string]: number } = {};\n\n @property({ type: Array, attribute: false })\n private _allowedIndices: Array<number> = this.getAvailableIndices();\n\n private _currentIndex: number;\n private _nextIndex?: number;\n private _currentAction?: Promise<boolean>;\n\n constructor() {\n super();\n this._currentIndex = this.startIndex;\n this.addEventListener(\"fv-step-clicked\", async (e: CustomEventInit) => {\n if (e.detail && e.detail[\"index\"]) {\n this._nextIndex = e.detail[\"index\"];\n } else {\n return false;\n }\n if (this._currentAction) await this._currentAction;\n const stepEventHandler = async () => {\n if (e.detail && e.detail[\"index\"]) {\n if (typeof e.detail[\"index\"] == \"string\") {\n this._currentIndex = parseInt(e.detail[\"index\"]);\n } else {\n this._currentIndex = e.detail[\"index\"];\n }\n } else {\n return false;\n }\n await this.deactivateAll();\n\n if (this.stepTargetSelectors[this._currentIndex]) {\n const targetSelector = this.stepTargetSelectors[this._currentIndex];\n if (targetSelector.modal) {\n if (!targetSelector.modal[\"dispatch-after-activation-events\"]) {\n await EventHandlerService.dispatchAsyncEvent(\"open-modal\", targetSelector.modal);\n }\n }\n if (targetSelector.modals) {\n for (const modal of targetSelector.modals) {\n if (!modal[\"dispatch-after-activation-events\"]) {\n await EventHandlerService.dispatchAsyncEvent(\"open-modal\", modal);\n }\n }\n }\n if (targetSelector.element) {\n await EventHandlerService.dispatchAsyncEvent(\"set-attribute\", {\n components: [targetSelector.element],\n attribute: \"hide-element\",\n value: false\n });\n }\n if (targetSelector.elements) {\n await EventHandlerService.dispatchAsyncEvent(\"set-attribute\", {\n components: targetSelector.elements,\n attribute: \"hide-element\",\n value: false\n });\n }\n }\n if (e.detail.currentTarget) {\n e.detail.currentTarget.dispatchEvent(new CustomEvent(\"step-index-changed\", {\n detail: {}\n }));\n e.detail.currentTarget.classList.add(\"active\");\n }\n\n await this.triggerStepActivatedEvents(e.detail.userInteraction);\n\n\n if (this.stepTargetSelectors[this._currentIndex]) {\n const targetSelector = this.stepTargetSelectors[this._currentIndex];\n if (targetSelector.modal) {\n if (targetSelector.modal[\"dispatch-after-activation-events\"]) {\n await EventHandlerService.dispatchAsyncEvent(\"open-modal\", targetSelector.modal);\n }\n }\n if (targetSelector.modals) {\n for (const modal of targetSelector.modals) {\n if (modal[\"dispatch-after-activation-events\"]) {\n await EventHandlerService.dispatchAsyncEvent(\"open-modal\", modal);\n }\n }\n }\n }\n return true;\n };\n if (e.detail[\"index\"] && this._nextIndex === e.detail[\"index\"]) {\n this._currentAction = stepEventHandler();\n }\n });\n\n window.addEventListener(\"onUpdated\", ((e: CustomEvent) => {\n if (isStepComponent(e.detail)) {\n return;\n }\n this._allowedIndices = this.getAvailableIndices();\n // CardDataService.WaitForAllCardContainerFetchPromises().then(() => {\n // this._allowedIndices = this.getAvailableIndices();\n // });\n }) as EventListener);\n\n this.addEventListener(\"fv-steps-request-step-activated-events\", async (e: CustomEventInit) => {\n if (this._currentIndex == e.detail[\"requesting-step-index\"]) {\n await this.triggerStepActivatedEvents(false);\n }\n });\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n if (this.startIndexCloudIdOverwrite != undefined) {\n const urlParser = new URL(window.location.href);\n const initialCloudId = urlParser.searchParams.get(\"cloudId\") || \"\";\n\n if (initialCloudId && initialCloudId.length > 0) {\n this.startIndex = this.startIndexCloudIdOverwrite;\n this._currentIndex = this.startIndex;\n }\n }\n }\n\n private async dispatchEventList(events: Array<StepActivatedEvent>, currentActiveIndex: string, userInteraction: boolean) {\n for (const stepActivatedEvent of events) {\n if (stepActivatedEvent[\"do-not-call-on\"] && stepActivatedEvent[\"do-not-call-on\"].includes(currentActiveIndex)) continue; //skip entries that should not be called\n if (stepActivatedEvent?.needsInteraction && !userInteraction) continue; // skip entries that only occur if the user clicked the steps\n await EventHandlerService.dispatchAsyncEvent(stepActivatedEvent.id, stepActivatedEvent.data ? stepActivatedEvent.data : {});\n }\n }\n\n public async triggerStepActivatedEvents(userInteraction: boolean = false): Promise<void> {\n const eventsToCall = this.stepActivatedEvents[this._currentIndex.toFixed(0)];\n if (eventsToCall != undefined && eventsToCall.length > 0) {\n await this.dispatchEventList(eventsToCall, this._currentIndex.toFixed(0), userInteraction);\n }\n\n //await CardDataService.WaitForAllCardContainerFetchPromises();\n const availableIndex = this.getAvailableIndices();\n if (this.stepActivatedEvents[\"any\"] != undefined && this.stepActivatedEvents[\"any\"].length > 0) {\n await this.dispatchEventList(this.stepActivatedEvents[\"any\"], this._currentIndex.toFixed(0), userInteraction);\n }\n if (availableIndex.at(0) == this._currentIndex) {\n if (this.stepActivatedEvents[\"first\"] != undefined && this.stepActivatedEvents[\"first\"].length > 0) {\n await this.dispatchEventList(this.stepActivatedEvents[\"first\"], this._currentIndex.toFixed(0), userInteraction);\n }\n }\n if (availableIndex.at(availableIndex.length - 1) == this._currentIndex) {\n if (this.stepActivatedEvents[\"last\"] != undefined && this.stepActivatedEvents[\"last\"].length > 0) {\n await this.dispatchEventList(this.stepActivatedEvents[\"last\"], this._currentIndex.toFixed(0), userInteraction);\n }\n }\n }\n\n public getAvailableIndices() {\n const availableIndex = new Array<number>();\n const steps = this.querySelectorAll(this.stepQuery);\n steps.forEach((step) => {\n if (step.classList.contains(\"hide-while-empty-content\") == false) {\n const index = step.getAttribute(\"index\");\n if (index != undefined) {\n availableIndex.push(parseInt(index));\n }\n }\n });\n return availableIndex.sort((a, b) => {\n const orderA = this.stepOrder?.[a.toString()] ?? a;\n const orderB = this.stepOrder?.[b.toString()] ?? b;\n return orderA - orderB;\n });\n }\n\n private async UpdateActivation() {\n await WebViewerService.IsAppReady;\n await CardDataService.WaitForAllCardContainerFetchPromises();\n this.activate(this._allowedIndices[0], false);\n }\n\n private applyStepTranslations(): void {\n if (!this.stepTranslation || Object.keys(this.stepTranslation).length === 0) return;\n this.querySelectorAll<StepComponent>(this.stepQuery).forEach(step => {\n const index = step.getAttribute(\"index\");\n if (index !== null && this.stepTranslation[index] !== undefined) {\n step.text = this.stepTranslation[index];\n }\n });\n }\n\n private applyStepOrder(): void {\n const steps = Array.from(this.querySelectorAll<HTMLElement>(this.stepQuery));\n if (steps.length === 0) return;\n\n steps.sort((a, b) => {\n const indexA = parseInt(a.getAttribute(\"index\") ?? \"0\");\n const indexB = parseInt(b.getAttribute(\"index\") ?? \"0\");\n const orderA = this.stepOrder?.[indexA.toString()] ?? indexA;\n const orderB = this.stepOrder?.[indexB.toString()] ?? indexB;\n return orderA - orderB;\n }).forEach(step => this.appendChild(step));\n }\n\n protected updated(_changedProperties: PropertyValues) {\n if (_changedProperties.has(\"stepTranslation\")) {\n this.applyStepTranslations();\n }\n if (_changedProperties.has(\"stepOrder\")) {\n this._allowedIndices = this.getAvailableIndices();\n }\n if (_changedProperties.has(\"_allowedIndices\")) {\n const oldValue = _changedProperties.get(\"_allowedIndices\");\n const changed = !(Array.isArray(this._allowedIndices) && Array.isArray(oldValue) && this._allowedIndices.length === oldValue.length && this._allowedIndices.every((val, index) => val === oldValue[index]));\n if (changed) {\n this.UpdateActivation();\n }\n }\n super.updated(_changedProperties);\n\n this.querySelectorAll<StepComponent>(\"fv-step\").forEach(step => {\n step.requestUpdate()\n });\n }\n\n public getTargetContentsList(index_: string | number): Array<DhElement> {\n if (this.stepTargetSelectors[index_]) {\n if (this.stepTargetSelectors[index_].element) {\n const targetContents = new Array<DhElement>();\n\n if (this.stepTargetSelectors[index_].element[\"ignore-default-target-content\"] == false || this.stepTargetSelectors[index_].element[\"ignore-default-target-content\"] == undefined) {\n const target = ComponentService.find(this.stepTargetSelectors[index_].element.name, this.stepTargetSelectors[index_].element.selector);\n if (target != undefined) {\n targetContents.push(target);\n }\n }\n\n const targetContentAlternatives = this.stepTargetSelectors[index_].element[\"additional-target-contents\"];\n if (targetContentAlternatives) {\n for (const targetContentAlternative of targetContentAlternatives) {\n if (targetContentAlternative.name.length > 0) {\n const alternative = ComponentService.find(targetContentAlternative.name, targetContentAlternative.selector);\n if (alternative != undefined) {\n targetContents.push(alternative);\n }\n }\n }\n }\n return targetContents;\n }\n }\n return [];\n }\n\n private previous() {\n let selector = \"\";\n this.classList.forEach((value: string) => {\n selector += \".\";\n selector += value;\n });\n\n StepsComponent.previous({\n \"steps-component\": \"fv-steps\",\n \"selector\": selector\n });\n }\n\n private next() {\n let selector = \"\";\n this.classList.forEach((value: string) => {\n selector += \".\";\n selector += value;\n });\n\n StepsComponent.next({\n \"steps-component\": \"fv-steps\",\n \"selector\": selector\n });\n }\n\n render(): TemplateResult<1> {\n return html`\n <span class=\"previous-button\" @click=\"${this.previous}\">\n <slot name=\"previous-button\"></slot>\n </span>\n <span class=\"custom-previous-button\">\n <slot name=\"custom-previous-button\"></slot>\n </span>\n\n <span class=\"steps\"><slot></slot></span>\n\n <span class=\"next-button\" @click=\"${this.next}\">\n <slot name=\"next-button\"></slot>\n </span>\n <span class=\"custom-next-button\">\n <slot name=\"custom-next-button\"></slot>\n </span>\n `;\n }\n\n firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n this.activateFirst(false);\n }\n\n private async activateFirst(userInteraction_: boolean = true) {\n await WebViewerService.IsAppReady;\n\n this.applyStepOrder();\n this.applyStepTranslations();\n\n this.activate(this.startIndex, userInteraction_);\n }\n\n\n private async deactivateAll() {\n const activeElements = this.querySelectorAll(\".active\");\n activeElements.forEach((element) => {\n element.classList.remove(\"active\");\n });\n\n const elements: Array<{\n name: string,\n selector: string,\n all: boolean\n }> = [];\n const targetSelectorKeys = Object.keys(this.stepTargetSelectors);\n for (const key of targetSelectorKeys) {\n const targetSelector: StepTargetSelectorData = this.stepTargetSelectors[key];\n if (targetSelector.modal) {\n await EventHandlerService.dispatchAsyncEvent(\"close-modal\", targetSelector.modal);\n }\n if (targetSelector.modals) {\n for (const modal of targetSelector.modals) {\n await EventHandlerService.dispatchAsyncEvent(\"close-modal\", modal);\n }\n }\n if (targetSelector.element) {\n elements.push(targetSelector.element);\n }\n if (targetSelector.elements) {\n elements.push(...targetSelector.elements);\n }\n }\n\n if (elements.length > 0) {\n await EventHandlerService.dispatchAsyncEvent(\"set-attribute\", {\n components: elements,\n attribute: \"hide-element\",\n value: true\n });\n }\n }\n\n public activate(index_: number, userInteraction_: boolean = true) {\n const step = this.querySelector(\"[index='\" + index_ + \"']\");\n step?.dispatchEvent(new CustomEvent(\"click\", {\n detail: {\n userInteraction: userInteraction_,\n }\n }));\n }\n\n public get activeIndex(): number {\n const activeElements = this.querySelectorAll(\".active\");\n for (let index = 0; index < activeElements.length; ++index) {\n const element = activeElements.item(index);\n if (element && element.hasAttribute(\"index\")) {\n return parseInt(element.getAttribute(\"index\") as string);\n }\n }\n return -1;\n }\n\n getPreviousStepIndex(): number {\n const indices = this.getAvailableIndices();\n const pos = indices.indexOf(this.activeIndex);\n return pos > 0 ? indices[pos - 1] : -1;\n }\n\n getNextStepIndex(): number {\n const indices = this.getAvailableIndices();\n const pos = indices.indexOf(this.activeIndex);\n return pos >= 0 && pos < indices.length - 1\n ? indices[pos + 1]\n : indices[indices.length - 1] + 1;\n }\n\n private async traverseStages(previous_: boolean) : Promise<boolean> {\n const activeElements = this.querySelectorAll(\".active\") as NodeListOf<StepComponent>;\n let consumed = false;\n for (const element of activeElements) {\n if (!element.traverseStages) {\n continue;\n }\n const traversed = previous_ ? await element.PreviousStage() : await element.NextStage();\n if (traversed === true) {\n consumed = true;\n }\n }\n return consumed;\n }\n\n public static async traverse(data: NextPreviousData, previous_: boolean): Promise<void> {\n const _stepsComponent = ComponentService.find(data[\"steps-component\"], data.selector) as StepsComponent;\n if (_stepsComponent) {\n if (await _stepsComponent.traverseStages(previous_)) {\n return;\n }\n if (_stepsComponent.reactivateStep) {\n _stepsComponent.activate(_stepsComponent.activeIndex);\n } else {\n _stepsComponent.activate(previous_ ? _stepsComponent.getPreviousStepIndex() : _stepsComponent.getNextStepIndex());\n }\n }\n }\n\n public static next(data: NextPreviousData): void {\n StepsComponent.traverse(data, false);\n }\n\n public static previous(data: NextPreviousData): void {\n StepsComponent.traverse(data, true);\n }\n\n public static activateFirst(data: NextPreviousData): void {\n const _stepsComponent = ComponentService.find(data[\"steps-component\"], data.selector) as StepsComponent;\n if (_stepsComponent) {\n _stepsComponent.activateFirst();\n }\n }\n\n public static activate(data: NextPreviousData, index: number): void {\n const _stepsComponent = ComponentService.find(data[\"steps-component\"], data.selector) as StepsComponent;\n if (_stepsComponent) {\n _stepsComponent.activate(index);\n }\n }\n\n public static activateCurrent(data: NextPreviousData): void {\n const _stepsComponent = ComponentService.find(data[\"steps-component\"], data.selector) as StepsComponent;\n if (_stepsComponent) {\n _stepsComponent.activate(_stepsComponent.activeIndex);\n }\n }\n\n public static async notifyStepStateChanged(data_: { tag: string, query: string }): Promise<void> {\n const tag = data_.tag as string | undefined;\n const query = data_.query as string | undefined;\n if (!tag) {\n return;\n }\n const steps = document.querySelectorAll(\"fv-step\");\n for (const step of Array.from(steps)) {\n if (!isStepComponent(step)) {\n continue;\n }\n const ce = step.stages?.[\"controlled-element\"];\n if (!ce) {\n continue;\n }\n if (ce.tag === tag && (query === undefined || ce.query === query)) {\n await step.RefreshStageEnvironment();\n }\n }\n }\n}\n","import {LoadingModalComponent} from \"../components/standard/loading\"\nimport {EventHandlerService} from \"./event.handler.service\";\nimport {CardContainerEventContainer} from \"./card-container-event.service\";\nimport {CardDataService} from \"./card.data.service\";\nimport {StepsComponent} from \"../components/standard/steps\";\nimport {ManuProgService} from \"./manu-prog.service\";\nimport {EquipmentListComponent} from \"../components/catalog/equipment-list\"\nimport {DeferHelperClass, IDeferHelperClass} from \"./defer-helper.class\";\nimport {ComponentService} from \"./component.service\";\nimport {ProgramSelectionComponent} from \"../components/standard/program-selection\";\nimport {CatalogService} from \"./catalog.service\";\nimport {CommunicationMessageService, EventFactoryService} from \"@dh-software/webui-api\";\nimport {ICatConfig} from \"@dh-software/webui-types\";\n\nexport interface SubKatalogLevel {\n parentLevel?: string,\n level: string,\n category?: string\n}\n\nexport interface IProgramSelectionHelperConfigurationParameters {\n detail: SubKatalogLevel,\n showLoadingModal?: boolean,\n closeModalQuery?: string,\n initialArticle?: string,\n activeStepAfterSelection?: number,\n confirmModal?: boolean,\n clearScene?: boolean\n overrideInitialArticle?: boolean,\n finishDefer?: Promise<any>\n}\n\nclass ProgramSelectionHelperClass {\n\n constructor() {\n }\n\n private programSelectionDefer?: IDeferHelperClass\n private configuredOnce: boolean = false\n\n public resolveProgramSelectionDefer(state = false) {\n this.programSelectionDefer?.resolve([state]);\n }\n\n public get canBeCancelled(): boolean {\n return this.configuredOnce;\n }\n\n private async isSceneEmpty(catConfigData?: ICatConfig[]) {\n let plannedArticles = await CommunicationMessageService.getPlannedArticles();\n if (Array.isArray(plannedArticles)) {\n plannedArticles = plannedArticles.filter(x => !!x.articlenumber)\n if (catConfigData && catConfigData.length > 0) {\n plannedArticles = plannedArticles.filter(article => !catConfigData.some(config => config.defaultArt.includes(article?.catalogArticleNumber || article.articlenumber)));\n }\n return plannedArticles.length == 0;\n }\n return true;\n }\n\n public async openConfirmationModal(catConfigData?: ICatConfig[]) {\n const programSelection = ComponentService.find(\"fv-program-selection\") as ProgramSelectionComponent\n if (!programSelection) {\n return true;\n }\n this.resolveProgramSelectionDefer();\n this.programSelectionDefer = DeferHelperClass();\n return await programSelection.openConfirmationModal(this.programSelectionDefer);\n }\n\n public async Configure(params: IProgramSelectionHelperConfigurationParameters) {\n params = Object.assign({\n overrideInitialArticle: true,\n clearScene: true,\n confirmModal: true,\n showLoadingModal: false,\n activeStepAfterSelection: 0,\n closeModalQuery: \"\",\n finishDefer: Promise.resolve({})\n } as IProgramSelectionHelperConfigurationParameters, params);\n const loadingComponent = document.querySelector(\"fv-loading-modal\") as LoadingModalComponent;\n const afterLoaded = () => {\n loadingComponent?.hide(false, true);\n EventFactoryService.LastPOLoaded.unregister(afterLoaded);\n this.resolveProgramSelectionDefer();\n this.configuredOnce = true;\n };\n EventFactoryService.LastPOLoaded.register(afterLoaded);\n\n const selectedManufacturer = await ManuProgService.getManufacturer();\n const currentSelectedProgram = await ManuProgService.getProgram();\n\n const selectedProgram_ = params.detail.level;\n const programChanged = currentSelectedProgram != selectedProgram_ || window.g_dataInterface[\"selected_program\"] != selectedProgram_\n const catConfig = await CatalogService.retrieveCatConfig(selectedManufacturer, selectedProgram_);\n\n let modalProceed = true;\n let userDefinedArticle = params.initialArticle && params.initialArticle !== \"\" ? params.initialArticle : \"\";\n const isSceneEmpty = await this.isSceneEmpty(catConfig);\n let articleChanged = false;\n if (params.overrideInitialArticle) {\n const newArticle = await CatalogService.getInitialArticle(userDefinedArticle, selectedProgram_);\n if (!userDefinedArticle && newArticle && userDefinedArticle != newArticle) {\n userDefinedArticle = newArticle;\n articleChanged = true;\n }\n }\n const placeArticle = programChanged && userDefinedArticle.length > 0;\n if (params.confirmModal && programChanged && !isSceneEmpty) {\n modalProceed = await this.openConfirmationModal(catConfig);\n }\n if (modalProceed) {\n if (params.showLoadingModal || placeArticle) {\n loadingComponent?.show(false, true);\n }\n if (programChanged) {\n await ManuProgService.setManuProg(selectedManufacturer, selectedManufacturer, selectedProgram_)\n window.selectedProgram = params.detail as any;\n window.g_dataInterface[\"selected_program\"] = selectedProgram_ as never;\n }\n if (params.clearScene && (programChanged || placeArticle)) {\n await CommunicationMessageService.clearScene();\n await CommunicationMessageService.loadInitialStateDHP();\n await EventHandlerService.dispatchAsyncEvent(\"update-animation-toolbar-button\", {});\n }\n await CardContainerEventContainer.RefreshAll({\n refetch: true,\n includeHidden: true,\n forceSwapSelectedProgramBeforeRefetch: selectedProgram_\n });\n await CardDataService.WaitForAllCardContainerFetchPromises();\n StepsComponent.activate({\n \"steps-component\": \"fv-steps\",\n selector: \"*\"\n }, params?.activeStepAfterSelection || 0);\n await EquipmentListComponent.Reload();\n\n if (placeArticle) {\n await CommunicationMessageService.placePO({\n manufacturer: selectedManufacturer,\n program: selectedProgram_,\n extParameter: {},\n articleNumber: userDefinedArticle,\n preventVPlacer: articleChanged\n });\n }\n await params.finishDefer;\n afterLoaded();\n\n if (params.closeModalQuery) {\n EventHandlerService.dispatch(\"close-modal\", {query: params.closeModalQuery});\n }\n }\n }\n}\n\nexport const ProgramSelectionHelper = new ProgramSelectionHelperClass();\n","import {BaseCardDataAppConnection} from \"./base.card.app.connection\";\nimport {\n CardContainerContext,\n CardContainerUpdate,\n CardData,\n CardDataLevel,\n CardDataLevelKey,\n CardDataUpdateEvent,\n CardFetchMethod,\n FetchResult,\n} from \"../../models/card-container\";\nimport {CardDataService} from \"../card.data.service\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\nimport {ImageService, IProgramImage, IProgramImageFilter} from \"../image.service\";\nimport {ProgramSelectionHelper} from \"../program-selection.helper\";\nimport {EventHandlerService} from \"../event.handler.service\";\nimport {EventHandlerEvent} from \"../../models/event-handler/event.handler.model\";\nimport { IModuleElement } from \"@dh-software/webui-configuration-parser\";\n\n// ─── Constants ───────────────────────────────────────────────────────────────\n\n/** Synthetic entry id for the \"level1-only programs\" / \"collections\" bucket. */\nconst ONLY_LEVEL_ONE_ID = \"onlyLevelOne\";\n\n/** Default root level key if `settings.Fetch[\"root-level\"]` is not provided. */\nconst DEFAULT_ROOT_LEVEL_KEY = \"root\";\n\n/** Label shown on the synthetic onlyLevelOne entry when groups also exist. */\nconst COLLECTIONS_LABEL = \"collections\";\n\n/** Non-\"root\" level key for the category-selection layer (survives multi-level \"root\"-stripping). */\nconst LEVEL_ONE_LEVEL_KEY = \"LEVEL1\";\n\n/** Prefix for per-category sublevel keys (`LEVEL1:<group.id>`) so callers can pull them back by key. */\nconst LEVEL_ONE_SUBLEVEL_PREFIX = \"LEVEL1:\";\n\n\n// ─── Public types ────────────────────────────────────────────────────────────\n\n/** A single program (leaf) or a group (non-leaf with `children`) inside the fetch result. */\nexport interface ProgramSelectionEntry {\n id: string;\n /** Program code consumed by ProgramSelectionHelper.Configure(); empty for the synthetic group container. */\n index: string;\n name: string;\n imageUrl: string;\n /** Descriptive text from the image fetch — consumed by the program-information mask. */\n textInfo: { text?: string; heading?: string; subheading?: string };\n children: ProgramSelectionEntry[];\n}\n\nexport interface ProgramSelectionFetchResult extends FetchResult {\n entries: ProgramSelectionEntry[] | [];\n /** True when at least one group has a level1 header image — drives `only-level-one` styling outside. */\n hasLevelOneImages: boolean;\n}\n\n\n// ─── Internal types ──────────────────────────────────────────────────────────\n\n/** Resolved + defaulted parameters used while fetching/shaping the data. */\ninterface FetchParameters {\n includeWithoutImages: boolean;\n /** When true, drop a level1-direct entry whose program code also appears under any group. Off by default (matches old fillKatalogEnvironment behavior). */\n dedupeByProgramCode: boolean;\n}\n\n/** Resolved + defaulted parameters used while turning entries into card data levels. */\ninterface CreateCardsParameters {\n /** LEVEL1-layer membership for groups w/o header image: false=skip, true=keep, N=keep when ≥N have images. */\n showFirstLevelImages: boolean | number;\n}\n\n/** Resolved + defaulted parameters used while handling a card click. */\ninterface ClickParameters {\n preventConfirmationModal: boolean;\n overrideInitialArticle: boolean;\n activeStepAfterSelection: number;\n closeModalQuery: string;\n onSelectionEvents: EventHandlerEvent[];\n showLoadingModal: boolean;\n initialArticle: string;\n}\n\n/** Lookups produced from a single walk of the raw level tree. */\ninterface CollectedReferences {\n /** Every program we want image data for (level1-direct + level2). */\n allProgramFilters: Set<IProgramImageFilter>;\n /** level1 ids that contain level2 children → used to fetch group header images. */\n groupParentIds: Set<string>;\n /** Program codes appearing under any group — used when dedupeByProgramCode is on. */\n programsInGroups: Set<string>;\n}\n\n/** Map: program code → image bundle (from ImageService). */\ntype ProgramImageMap = { [program: string]: IProgramImage | undefined };\n\n\n// ─── card-container settings.Fetch.parameters ────────────────────────────────\n//\n// Selection behavior (consumed in Click()):\n// - \"prevent-confirmation-modal\" boolean skip the confirmation dialog on program change\n// - \"override-initial-article\" boolean override the initial article after program switch\n// - \"active-step-after-selection\" number step index to activate after a program is selected\n// - \"close-modal-query\" string CSS selector of the modal to close after selection\n// - \"on-selection-events\" EventHandlerEvent[] events to fire after a program is selected\n// - \"show-loading-modal\" boolean show the loading modal during program switch\n// - \"initial-article\" string article number placed after the program switch\n// (default: \"\")\n//\n// Data shaping (consumed in Fetch()):\n// - \"include-programs-without-images\" boolean keep programs without an image (default: false)\n// - \"dedupe-by-program-code\" boolean drop a level1-direct entry when its program code\n// also appears under any group (default: false —\n// matches the old fillKatalogEnvironment behavior)\n//\n// Layout shaping (consumed in CreateCards()):\n// - \"show-first-level-images\" boolean | number LEVEL1 layer membership for groups w/o image:\n// false=skip, true=keep, N=keep when ≥N have images\n//\n// Layout logic (driven by data shape + the param above):\n// - level1-only data → \"onlyLevelOne\" entry; programs render directly at root.\n// - level1 → level2 data → one nav card per group at root; sub-level per group holds its programs.\n// - + at least one image → also emit a \"LEVEL1\" level (non-\"root\", survives multi-level\n// \"root\"-stripping) and key sublevels `LEVEL1:<group.id>`.\n// - Programs that appear under any group are dropped from the onlyLevelOne bucket (no duplicates).\n\nexport class ProgramSelectionCardAppConnection<T extends ProgramSelectionFetchResult = ProgramSelectionFetchResult> extends BaseCardDataAppConnection<T> {\n constructor() {\n super();\n this.Method = CardFetchMethod.ProgramSelection;\n }\n\n public async CheckUpdate(event: CardDataUpdateEvent, _eventParameters: unknown, _context: CardContainerContext): Promise<CardContainerUpdate> {\n if (event === CardDataUpdateEvent.CardContainerVisible) return CardContainerUpdate.FETCH;\n if (event === CardDataUpdateEvent.LastPOLoaded) return CardContainerUpdate.FETCH;\n return CardContainerUpdate.NONE;\n }\n\n\n // ─── Fetch pipeline ──────────────────────────────────────────────────────\n //\n // 1. Pull and sort the manufacturer's program tree.\n // 2. Walk the tree once → collect program filters, group parent ids, dedupe set.\n // 3. Resolve images (per-program selection images + per-group header images).\n // 4. Fold the tree into ProgramSelectionEntry[], deduping level1-only against groups.\n\n async Fetch(context: CardContainerContext): Promise<T> {\n if (!window?.g_article?.manu) {\n return {entries: [], hasLevelOneImages: false} as T;\n }\n\n const params = this._readFetchParameters(context);\n\n const levelTree = await this._fetchSortedLevelTree(window.g_article.manu);\n const collected = this._collectProgramReferences(levelTree);\n\n const programImages = await ImageService.getProgramSelectionImages([...collected.allProgramFilters]);\n const groupHeaderImages = await this._fetchGroupHeaderImages(collected.groupParentIds);\n\n const entries = this._buildEntries(\n levelTree,\n programImages,\n groupHeaderImages,\n params.dedupeByProgramCode ? collected.programsInGroups : undefined,\n params.includeWithoutImages,\n );\n\n return {entries, hasLevelOneImages: groupHeaderImages.size > 0} as T;\n }\n\n /** Reads + defaults the Fetch parameters from the card-container settings. */\n private _readFetchParameters(context: CardContainerContext): FetchParameters {\n const params = context.settings.Fetch.parameters ?? {};\n return {\n includeWithoutImages: (params[\"include-programs-without-images\"] as boolean) ?? false,\n dedupeByProgramCode: (params[\"dedupe-by-program-code\"] as boolean) ?? false,\n };\n }\n\n private _readCardModules(context: CardContainerContext, currentLevelKey: CardDataLevelKey) {\n const programCardModules = context?.settings.Fetch.parameters?.[\"program-card-modules\"] as IModuleElement[] ?? [];\n return currentLevelKey == LEVEL_ONE_LEVEL_KEY ? [] : programCardModules;\n }\n\n /** Reads + defaults the CreateCards parameters from the card-container settings. */\n private _readCreateCardsParameters(context: CardContainerContext): CreateCardsParameters {\n const params = context.settings.Fetch.parameters ?? {};\n const raw = params[\"show-first-level-images\"];\n const showFirstLevelImages: boolean | number =\n typeof raw === \"boolean\" || typeof raw === \"number\" ? raw : false;\n return {showFirstLevelImages};\n }\n\n /** Loads the program level tree and sorts level1 + level2 entries by their `order` field. */\n private async _fetchSortedLevelTree(manu: string): Promise<any> {\n const tree = await CommunicationMessageService.getProgramLevelTree(manu, true);\n tree.level1.sort((a: any, b: any) => a.order - b.order);\n for (const levelOne of tree.level1) {\n levelOne.level2?.sort((a: any, b: any) => a.order - b.order);\n }\n return tree;\n }\n\n /** Single tree walk → image filters + group parent ids + grouped program codes. */\n private _collectProgramReferences(levelTree: any): CollectedReferences {\n const allProgramFilters = new Set<IProgramImageFilter>();\n const groupParentIds = new Set<string>();\n const programsInGroups = new Set<string>();\n\n for (const levelOne of levelTree.level1) {\n if (!levelOne.level2 && levelOne.program) {\n allProgramFilters.add({program: levelOne.program, kataId: levelOne.id});\n continue;\n }\n for (const levelTwo of (levelOne.level2 || [])) {\n if (!levelTwo.program) continue;\n groupParentIds.add(levelOne.id);\n allProgramFilters.add({program: levelTwo.program, kataId: levelTwo.id});\n programsInGroups.add(levelTwo.program);\n }\n }\n\n return {allProgramFilters, groupParentIds, programsInGroups};\n }\n\n /** Resolves the level1 header image (used as the group navigation card image) per group id. */\n private async _fetchGroupHeaderImages(groupParentIds: Set<string>): Promise<Map<string, string>> {\n // ImageService caches per-id, so resolving each parent individually keeps the cache hot.\n const headerByGroup = new Map<string, string>();\n await Promise.all([...groupParentIds].map(async (parentId) => {\n const images = await ImageService.getKataLevelOneMediaImages([parentId]);\n if (images.length > 0) headerByGroup.set(parentId, images[0].url);\n }));\n return headerByGroup;\n }\n\n /**\n * Folds the raw tree into ProgramSelectionEntry[], adding the synthetic onlyLevelOne bucket if it has survivors.\n * Pass `programsInGroups` to drop level1-direct entries whose program code also appears under a group;\n * omit it (or pass undefined) for the legacy fillKatalogEnvironment behavior where everything is kept.\n */\n private _buildEntries(\n levelTree: any,\n programImages: ProgramImageMap,\n groupHeaderImages: Map<string, string>,\n programsInGroups: Set<string> | undefined,\n includeWithoutImages: boolean,\n ): ProgramSelectionEntry[] {\n const groupEntries: ProgramSelectionEntry[] = [];\n const onlyLevelOneChildren: ProgramSelectionEntry[] = [];\n for (const levelOne of levelTree.level1) {\n const isGroup = levelOne.level2 && levelOne.level2.length > 0;\n\n if (isGroup) {\n // Group entry: its level2 programs become the group's children\n const children = levelOne.level2\n .filter((level2: any) => this._hasUsableImage(level2.program, programImages, includeWithoutImages))\n .map((level2: any) => this._buildLeafEntry(level2, programImages));\n\n if (children.length === 0) continue;\n groupEntries.push({\n id: levelOne.id,\n index: levelOne.program ?? \"\",\n name: levelOne.name,\n imageUrl: groupHeaderImages.get(levelOne.id) ?? \"\",\n textInfo: {},\n children,\n });\n continue;\n }\n\n // level1-only program: candidate for the onlyLevelOne bucket\n if (!levelOne.program) continue;\n if (programsInGroups?.has(levelOne.program)) continue;\n if (!this._hasUsableImage(levelOne.program, programImages, includeWithoutImages)) continue;\n\n onlyLevelOneChildren.push(this._buildLeafEntry(levelOne, programImages));\n }\n\n // No survivors → no synthetic bucket; just return the groups\n if (onlyLevelOneChildren.length === 0) return groupEntries;\n\n // Synthetic onlyLevelOne entry sits at the front; it gets the \"collections\" label only when groups also exist\n const onlyLevelOneEntry: ProgramSelectionEntry = {\n id: ONLY_LEVEL_ONE_ID,\n index: \"\",\n name: groupEntries.length > 0 ? COLLECTIONS_LABEL : \"\",\n imageUrl: \"\",\n textInfo: {},\n children: onlyLevelOneChildren,\n };\n return [onlyLevelOneEntry, ...groupEntries];\n }\n\n /** True when the program has at least one image, or when missing-image programs are explicitly allowed. */\n private _hasUsableImage(programCode: string, programImages: ProgramImageMap, includeWithoutImages: boolean): boolean {\n if (includeWithoutImages) return true;\n const entry = programImages[programCode];\n return !!entry && (entry.images?.length ?? 0) > 0;\n }\n\n /** Builds a leaf ProgramSelectionEntry (level1-direct or level2). */\n private _buildLeafEntry(raw: { id: string; program: string; name: string }, programImages: ProgramImageMap): ProgramSelectionEntry {\n const imageEntry = programImages[raw.program];\n return {\n id: raw.id,\n index: raw.program,\n name: raw.name,\n imageUrl: imageEntry?.images?.[0]?.url ?? \"\",\n textInfo: {\n text: imageEntry?.text,\n heading: imageEntry?.heading,\n subheading: imageEntry?.subheading,\n },\n children: [],\n };\n }\n\n\n // ─── CreateCards: ProgramSelectionEntry[] → CardDataLevel map ────────────\n\n public CreateCards(filtered: ProgramSelectionFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const result = new Map<CardDataLevelKey, CardDataLevel>();\n const {entries} = filtered;\n if (!entries || entries.length === 0) return result;\n\n const rootLevelKey = (context.settings.Fetch[\"root-level\"] as string) ?? DEFAULT_ROOT_LEVEL_KEY;\n const onlyLevelOneEntry = entries.find(e => e.id === ONLY_LEVEL_ONE_ID);\n\n if (onlyLevelOneEntry) {\n // Pure / mixed onlyLevelOne layout: the bucket's programs render directly at the root level.\n // (Use `only-level-one` on fv-root-level-selection-card-container for direct click handling.)\n result.set(rootLevelKey, {\n title: \"\",\n cards: onlyLevelOneEntry.children.map(prog => this._buildProgramCard(prog, rootLevelKey, context, rootLevelKey, ONLY_LEVEL_ONE_ID)),\n });\n return result;\n }\n\n // Grouped layout: nav card per group at root, sub-level per group. LEVEL1 layer + sublevel\n // prefix only when at least one group survives the `show-first-level-images` filter.\n const groupEntries = entries.filter(g => g.children.length > 0);\n const createCardsParams = this._readCreateCardsParameters(context);\n\n const groupsWithImage = groupEntries.filter(g => !!g.imageUrl);\n const keepGroupsWithoutImage = (() => {\n const s = createCardsParams.showFirstLevelImages;\n return typeof s === \"boolean\" ? s : groupsWithImage.length >= s;\n })();\n const levelOneGroups = keepGroupsWithoutImage ? groupEntries : groupsWithImage;\n const shouldEmitLevelOneLayer = levelOneGroups.length > 0;\n\n // Sublevel keys get the \"LEVEL1:\" prefix only when the LEVEL1 layer is emitted.\n const sublevelKeyFor = (group: ProgramSelectionEntry): CardDataLevelKey =>\n shouldEmitLevelOneLayer ? `${LEVEL_ONE_SUBLEVEL_PREFIX}${group.id}` : group.id;\n\n // Root: nav cards for every group (so all programs stay reachable).\n result.set(rootLevelKey, {\n title: \"\",\n cards: groupEntries.map(group =>\n this._buildGroupNavigationCard(group, rootLevelKey, sublevelKeyFor(group), context)),\n });\n\n // LEVEL1: category-selection cards (filtered).\n if (shouldEmitLevelOneLayer) {\n result.set(LEVEL_ONE_LEVEL_KEY, {\n title: \"\",\n cards: levelOneGroups.map(group =>\n this._buildGroupNavigationCard(group, LEVEL_ONE_LEVEL_KEY, sublevelKeyFor(group), context)),\n });\n }\n\n // Per-group sublevels with program cards (one per group, regardless of image).\n for (const group of groupEntries) {\n const subKey = sublevelKeyFor(group);\n result.set(subKey, {\n title: group.name,\n cards: group.children.map(prog => this._buildProgramCard(prog, subKey, context, subKey, group.id)),\n });\n }\n return result;\n }\n\n /** Leaf card → clicking it selects the program (handled by `Click` below). */\n protected _buildProgramCard(entry: ProgramSelectionEntry, parentId: CardDataLevelKey, context: CardContainerContext, currentLevelKey?: CardDataLevelKey, parentKataId?: string): CardData {\n const modules = currentLevelKey ? this._readCardModules(context!, currentLevelKey) : [];\n return {\n txt: {title: entry.name},\n image: entry.imageUrl ? {prefix: \"\", file: entry.imageUrl} : undefined,\n click: {\n \"previous-level-key\": parentId,\n \"level-key\": entry.id,\n \"next-level-key\": \"\",\n },\n additional: {entry, parentKataId},\n modules\n };\n }\n\n /** Group card → clicks navigate into the group's sub-level. `sublevelKey` defaults to `group.id`. */\n protected _buildGroupNavigationCard(\n group: ProgramSelectionEntry,\n currentLevelKey: CardDataLevelKey,\n sublevelKey: CardDataLevelKey = group.id,\n context: CardContainerContext,\n ): CardData {\n const programCards = group.children.map(prog => this._buildProgramCard(prog, sublevelKey, context, undefined, group.id));\n const modules = this._readCardModules(context!, currentLevelKey);\n return {\n txt: {title: group.name},\n image: group.imageUrl ? {prefix: \"\", file: group.imageUrl} : undefined,\n click: {\n \"previous-level-key\": currentLevelKey,\n \"level-key\": currentLevelKey,\n \"next-level-key\": sublevelKey,\n },\n children: programCards,\n additional: {entry: group},\n modules\n } as CardData;\n }\n\n\n // ─── Click: program selected → configure ProgramSelectionHelper ──────────\n\n public async Click(card: CardData, context: CardContainerContext, loadingModalDefer?: Promise<any>): Promise<void> {\n // Group navigation cards (next-level-key set) are handled by the card container itself.\n if (card.click?.[\"next-level-key\"]) return;\n\n const entry = card.additional?.[\"entry\"] as ProgramSelectionEntry | undefined;\n if (!entry) return;\n\n const parentKataId = card.additional?.[\"parentKataId\"] as string | undefined;\n const params = this._readClickParameters(context);\n\n await ProgramSelectionHelper.Configure({\n detail: {\n level: entry.index,\n parentLevel: parentKataId,\n },\n closeModalQuery: params.closeModalQuery,\n showLoadingModal: params.showLoadingModal,\n initialArticle: params.initialArticle,\n activeStepAfterSelection: params.activeStepAfterSelection,\n // Clear the scene unless the confirmation modal was suppressed; even then honor the global flag.\n clearScene: !params.preventConfirmationModal || (window.g_configuration?.clear_scene_by_basic_planing ?? false),\n confirmModal: !params.preventConfirmationModal,\n overrideInitialArticle: params.overrideInitialArticle,\n finishDefer: loadingModalDefer,\n });\n await EventHandlerService.dispatchEventList(params.onSelectionEvents, false);\n }\n\n /** Reads + defaults the Click parameters from the card-container settings. */\n private _readClickParameters(context: CardContainerContext): ClickParameters {\n const params = context.settings.Fetch.parameters ?? {};\n return {\n preventConfirmationModal: (params[\"prevent-confirmation-modal\"] as boolean) ?? false,\n overrideInitialArticle: (params[\"override-initial-article\"] as boolean) ?? false,\n activeStepAfterSelection: (params[\"active-step-after-selection\"] as number) ?? 0,\n closeModalQuery: (params[\"close-modal-query\"] as string) ?? \"\",\n onSelectionEvents: (params[\"on-selection-events\"] as EventHandlerEvent[]) ?? [],\n showLoadingModal: (params[\"show-loading-modal\"] as boolean) ?? false,\n initialArticle: (params[\"initial-article\"] as string) ?? \"\",\n };\n }\n}\n\nCardDataService.RegisterAppConnection(new ProgramSelectionCardAppConnection());\n","import {ProgramSelectionCardAppConnection, ProgramSelectionEntry, ProgramSelectionFetchResult} from \"./program-selection.card.app.connection\";\nimport {\n CardContainerContext,\n CardData,\n CardDataLevel,\n CardDataLevelKey,\n CardFetchMethod\n} from \"../../models/card-container\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\nimport {CardDataService} from \"../card.data.service\";\nimport {EventHandlerEvent} from \"../../models/event-handler/event.handler.model\";\nimport {EventHandlerService} from \"../event.handler.service\";\nimport {IPlacerGroup, IPlacerGroupProgram, IPossiblePlacerGroupResponse } from \"@dh-software/webui-types\";\n\ntype PlacerGroupFetchResult = ProgramSelectionFetchResult & IPossiblePlacerGroupResponse;\n\n// Level key helpers\n// Root level: \"root\"\n// Component level: \"{groupId}:{cat}\" e.g. \"TischMitBank:dhcat_tisch\"\nconst componentLevelKey = (groupId: string, cat: string): string =>\n `${groupId}:${cat}`;\n\nexport class PlacerGroupSelectionCardAppConnection extends ProgramSelectionCardAppConnection<PlacerGroupFetchResult> {\n /** Kept so Click() can look up the full component list by groupId */\n private _groups: IPlacerGroup[] = [];\n\n constructor() {\n super();\n this.Method = CardFetchMethod.PlacerGroupSelection;\n }\n\n async Fetch(context: CardContainerContext): Promise<PlacerGroupFetchResult> {\n const base = await super.Fetch(context) as PlacerGroupFetchResult;\n const placer = await CommunicationMessageService.getPossiblePlacerGroups();\n return Object.assign(base, placer);\n }\n\n CreateCards(filtered: PlacerGroupFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n this._groups = filtered.groups ?? [];\n\n // Build a lookup: prog code (lowercase) → ProgramSelectionEntry (name + image)\n // Entries can be flat (top-level) or nested inside a parent entry's children.\n const allEntries = [\n ...filtered.entries,\n ...filtered.entries.flatMap(e => e.children ?? [])\n ];\n const entryByProg = new Map<string, ProgramSelectionEntry>();\n for (const entry of allEntries) {\n if (entry.index) {\n entryByProg.set(entry.index.toLowerCase(), entry);\n }\n }\n\n const map = new Map<CardDataLevelKey, CardDataLevel>();\n const singleProgramMode = !!(context.settings.Fetch.parameters?.[\"single-program-mode\"]);\n const includeWithoutImages = !!(context.settings.Fetch.parameters?.[\"include-programs-without-images\"]);\n\n /**\n * Returns true if a program should be shown in the sub-level cards.\n * - The program must have a matching entry in entryByProg (i.e. it exists in the program level tree)\n * - If include-programs-without-images is false, the entry must also have an imageUrl\n */\n const shouldIncludeProgram = (program: IPlacerGroupProgram): boolean => {\n const entry = entryByProg.get(program.prog.toLowerCase());\n if (!entry) return false;\n return includeWithoutImages || !!entry.imageUrl;\n };\n\n // ── Root level — one card per placer group ───────────────────────────\n map.set(\"root\", {\n title: \"VPlacer Groups\",\n cards: this._groups.map((group): CardData => {\n const entry = entryByProg.get(group.id.toLowerCase());\n const baseCard = entry\n ? this._buildProgramCard(entry, \"root\", context)\n : { txt: { title: group.id } } as CardData;\n\n const nextKey = group.components.length > 0\n ? singleProgramMode\n ? componentLevelKey(group.id, \"all\")\n : componentLevelKey(group.id, group.components[0])\n : \"\";\n\n return {\n ...baseCard,\n click: {\n \"previous-level-key\": \"\",\n \"level-key\": \"root\",\n \"next-level-key\": nextKey\n },\n additional: { ...baseCard.additional, group }\n };\n })\n });\n\n // ── Sub-levels per group ────────────────────────────────────────────\n for (const group of this._groups) {\n if (singleProgramMode) {\n // Single level: only programs that cover ALL components\n const levelKey = componentLevelKey(group.id, \"all\");\n const compatiblePrograms = (filtered.programs ?? [])\n .filter(p => group.components.every(\n cat => p.components.some(c => c.cat === cat)\n ))\n .filter(shouldIncludeProgram);\n\n map.set(levelKey, {\n title: group.id,\n cards: compatiblePrograms.map((program: IPlacerGroupProgram): CardData => {\n const entry = entryByProg.get(program.prog.toLowerCase());\n const baseCard = entry\n ? this._buildProgramCard(entry, levelKey, context)\n : { txt: { title: program.prog } } as CardData;\n return {\n ...baseCard,\n click: {\n \"previous-level-key\": \"root\",\n \"level-key\": levelKey,\n \"next-level-key\": \"\"\n },\n additional: {\n ...baseCard.additional,\n groupId: group.id,\n cat: \"all\",\n program\n }\n };\n })\n });\n } else {\n // Per-component levels (one level per category)\n for (let i = 0; i < group.components.length; i++) {\n const cat = group.components[i];\n const isLast = i === group.components.length - 1;\n const prevKey: CardDataLevelKey = i === 0\n ? \"root\"\n : componentLevelKey(group.id, group.components[i - 1]);\n const nextKey: CardDataLevelKey = isLast\n ? \"\"\n : componentLevelKey(group.id, group.components[i + 1]);\n const levelKey = componentLevelKey(group.id, cat);\n\n const compatiblePrograms = (filtered.programs ?? [])\n .filter(p => p.components.some(c => c.cat === cat))\n .filter(shouldIncludeProgram);\n\n map.set(levelKey, {\n title: cat,\n cards: compatiblePrograms.map((program: IPlacerGroupProgram): CardData => {\n const entry = entryByProg.get(program.prog.toLowerCase());\n const baseCard = entry ? this._buildProgramCard(entry, levelKey, context) : { txt: { title: program.prog } } as CardData;\n return {\n ...baseCard,\n click: {\n \"previous-level-key\": prevKey,\n \"level-key\": levelKey,\n \"next-level-key\": nextKey\n },\n additional: {\n ...baseCard.additional,\n groupId: group.id,\n cat,\n componentIndex: i,\n totalComponents: group.components.length,\n program\n }\n };\n })\n });\n }\n }\n }\n\n return map;\n }\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n if (!card.click) return;\n\n const levelKey = card.click[\"level-key\"] as string;\n const nextLevelKey = card.click[\"next-level-key\"] as string;\n\n // ── Root navigation card: clear stale Store entries ──────────────────\n if (levelKey === \"root\") {\n this.Store.clear();\n return;\n }\n\n // ── Component-level card ─────────────────────────────────────────────\n const groupId = card.additional?.[\"groupId\"] as string | undefined;\n const cat = card.additional?.[\"cat\"] as string | undefined;\n const program = card.additional?.[\"program\"] as IPlacerGroupProgram | undefined;\n const entry = card.additional?.[\"entry\"] as ProgramSelectionEntry | undefined;\n\n if (!groupId || !cat || !program) return;\n\n const group = this._groups.find(g => g.id === groupId);\n if (!group) return;\n\n // ── Single-program mode: one program covers all components ──────────\n if (cat === \"all\") {\n // Configure the active program from this selection\n if (entry) {\n await super.Click({\n click: { \"previous-level-key\": \"\", \"level-key\": groupId, \"next-level-key\": \"\" },\n additional: { entry }\n } as CardData, context);\n }\n\n // Use the single program for every component category\n const components: { [key: string]: { manu: string; prog: string; article: string } } = {};\n for (const c of group.components) {\n const article = program.components.find(pc => pc.cat === c)?.article ?? \"\";\n components[c] = { manu: program.manu, prog: program.prog, article };\n }\n\n await CommunicationMessageService.createPlacerGroup({ groupId, components, resetScene: true });\n\n const params = context.settings.Fetch.parameters ?? {};\n const onSelectionEvents = (params[\"on-selection-events\"] as EventHandlerEvent[]) ?? [];\n await EventHandlerService.dispatchEventList(onSelectionEvents, false);\n return;\n }\n\n // ── Multi-step mode: per-component selection ────────────────────────\n // Record this category's selection and its display entry (overwrite-safe for back + re-pick)\n this.Store.setSubKeyItem(groupId, cat, program);\n if (entry) this.Store.setSubKeyItem(groupId, `${cat}:entry`, entry);\n\n // If more components remain, let the container navigate to the next one\n if (nextLevelKey !== \"\") return;\n\n // ── Last component selected → create the placer group ────────────────\n // Configure the active program from the first component's selection before creating the group\n const firstCat = group.components[0];\n const firstEntry = this.Store.getSubKeyItem<ProgramSelectionEntry>(groupId, `${firstCat}:entry`);\n\n const components: { [key: string]: { manu: string; prog: string; article: string } } = {};\n for (const c of group.components) {\n const selection = this.Store.getSubKeyItem<IPlacerGroupProgram>(groupId, c);\n if (selection) {\n const article = selection.components.find(pc => pc.cat === c)?.article ?? \"\";\n components[c] = { manu: selection.manu, prog: selection.prog, article };\n }\n }\n const createPlacerGroupPromise = CommunicationMessageService.createPlacerGroup({ groupId, components, resetScene: true });\n\n if (firstEntry) {\n await super.Click({\n click: { \"previous-level-key\": \"\", \"level-key\": firstCat, \"next-level-key\": \"\" },\n additional: { entry: firstEntry }\n } as CardData, context, createPlacerGroupPromise);\n }\n await createPlacerGroupPromise;\n this.Store.delete(groupId);\n\n const params = context.settings.Fetch.parameters ?? {};\n const onSelectionEvents = (params[\"on-selection-events\"] as EventHandlerEvent[]) ?? [];\n await EventHandlerService.dispatchEventList(onSelectionEvents, false);\n }\n}\n\nCardDataService.RegisterAppConnection(new PlacerGroupSelectionCardAppConnection());\n","import { DimensionInformation } from \"../components/standard/informationals/dimensions-information.component\";\nimport { PriceDisplayData } from \"../components/price/price-display/price-display.component\";\nimport {CommunicationMessageService, RequestService} from \"@dh-software/webui-api\";\n\nexport interface IPlanningFileDescriptor {\n file: string;\n file_type: string;\n __type: string;\n}\n\nexport interface ILandingPageItem {\n items?: unknown[];\n description?: string;\n image?: IPlanningFileDescriptor;\n planning?: IPlanningFileDescriptor;\n txt?: { [key: string]: string }\n custom?: {\n mirror: boolean;\n icon?: string;\n [key: string]: unknown\n };\n price?: PriceDisplayData,\n dimensions?: DimensionInformation[]\n category?: {\n mode: string;\n };\n}\n\nexport interface LandingPageLevel {\n items: string[];\n name: string;\n}\n\ninterface ILandingPageCollection {\n rootNode: LandingPageLevel[];\n\n [key: string]: ILandingPageItem | LandingPageLevel[];\n}\n\nexport const rootKey = \"rootNode\";\n\nclass LandingPageServiceClass {\n\n private _landingPageElements?: ILandingPageCollection;\n\n constructor() {\n }\n\n async LandingPageData(local = false): Promise<ILandingPageCollection> {\n if (!this._landingPageElements) {\n const configURL = local ? (\"/webui/readConfig\" + (window.g_configuration.webuiProject ? \"/\" + window.g_configuration.webuiProject : \"\")) : \"webui/modular/config/data/elements.json\";\n this._landingPageElements = await RequestService.fetchJSON<ILandingPageCollection>(configURL);\n }\n return this._landingPageElements;\n }\n\n async getLandingPageItems(local = false): Promise<ILandingPageItem[]> {\n const collection = await this.LandingPageData(local);\n return Object.keys(collection).filter(x => x == rootKey).map(x => collection[x]) as ILandingPageItem[];\n }\n\n async getLandingPages(local = false): Promise<LandingPageLevel[]> {\n const collection = await this.LandingPageData(local);\n return collection.rootNode;\n }\n\n async getItemById(id: string, local = false): Promise<ILandingPageItem> {\n if (id === rootKey) return {};\n const collection = await this.LandingPageData(local);\n return Promise.resolve(collection[id] as ILandingPageItem);\n }\n\n async hasItemWithId(id: string, local = false) {\n if (id === rootKey) return false;\n const landingPageData = await this.LandingPageData(local);\n return id in landingPageData;\n }\n\n async loadPlanningFile(id_: string, local = false) {\n const item = await this.getItemById(id_, local);\n if (item) {\n return await CommunicationMessageService.loadPlanningFile(item.planning?.file || \"\"), item;\n }\n return undefined;\n }\n\n}\n\nexport const LandingPageService = new LandingPageServiceClass();\n","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardFetchMethod, FetchResult, CardDataLevelKey, CardDataLevel, CardContainerContext } from \"../../models/card-container\";\nimport { CardData } from \"../../models/card-container\";\nimport { ILandingPageItem, LandingPageLevel, LandingPageService } from \"../../utils/landing-page.service\";\nimport { CardContainerSettings } from \"../../components/standard/card-container/internals\";\nimport { CardDataService } from \"../card.data.service\";\n\n\nexport class LandingPageCardAppConnection extends BaseCardDataAppConnection {\n constructor() {\n super();\n this.Method = CardFetchMethod.LandingPageView;\n }\n\n\n public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n const result = {\n \"landing-pages\": await LandingPageService.getLandingPages(),\n \"entries\": new Map<string, Map<string, ILandingPageItem>>()\n };\n\n if (context.settings.Fetch.parameters?.levels && Array.isArray(context.settings.Fetch.parameters.levels)) {\n const levelsToShow = context.settings.Fetch.parameters.levels as Array<string>;\n result[\"landing-pages\"] = result[\"landing-pages\"].filter((pageData: LandingPageLevel) => {\n if (!levelsToShow.includes(pageData.name)) {\n return false;\n }\n return true;\n });\n }\n\n for (const pageData of result[\"landing-pages\"]) {\n const entries = new Map();\n for (const item of pageData.items) {\n const hasItem = await LandingPageService.hasItemWithId(item);\n if (hasItem) {\n const landingPageEntry = await LandingPageService.getItemById(item);\n entries.set(item, landingPageEntry);\n }\n }\n result.entries.set(pageData.name, entries);\n }\n return result;\n }\n public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const result = new Map<CardDataLevelKey, CardDataLevel>();\n const fetchResult = filtered as {\n \"landing-pages\": Array<LandingPageLevel>,\n \"entries\": Map<string, Map<string, ILandingPageItem>>\n };\n for (const pageData of fetchResult[\"landing-pages\"]) {\n const entries = fetchResult.entries.get(pageData.name);\n const cardDataCollection: CardDataLevel = { cards: [], title: pageData.name };\n if (entries) {\n for (const [id, value] of entries) {\n const cardData = this._buildCardData(id, value, pageData.name, context.settings);\n cardDataCollection.cards.push(cardData);\n }\n }\n result.set(pageData.name, cardDataCollection);\n }\n return result;\n }\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n if (card.click == undefined) return;\n\n if (\"planningId\" in card.click) {\n const result = await LandingPageService.loadPlanningFile(card.click[\"planningId\"] as string, true);\n if (result) {\n context.dispatchEvent(new CustomEvent(\"planningLoaded\", { composed: true, bubbles: true, detail: { planningId: card.click[\"planningId\"] } }));\n }\n }\n }\n\n private _buildCardData(id: string, landingPage: ILandingPageItem, pageName: string, settings: CardContainerSettings): CardData {\n return {\n image: { prefix: \"\", file: landingPage.image?.file || \"\" },\n icon: landingPage?.custom?.icon,\n price: landingPage.price,\n dimensions: landingPage.dimensions,\n txt: landingPage.txt,\n click: {\n \"previous-level-key\": settings.Fetch[\"root-level\"],\n \"level-key\": pageName,\n \"next-level-key\": id,\n \"planningId\": id\n } as { [key: string]: unknown },\n modules: settings.Fetch.parameters[\"modules\"]\n } as CardData;\n }\n}\nCardDataService.RegisterAppConnection(new LandingPageCardAppConnection());","\nexport class MediaServiceClass {\n\n // implementation of CommunicationMessageService.getMediaUrl without async!\n getUrl(manufacturer?: string, program?: string, type?: string, name?: string, hasExtension?: boolean, returnPlaceholder: boolean = true): string {\n if (!name || !name.length) {\n return \"\";\n }\n\n\n let url = window.g_node_url_prefix + \"/media/\";\n\n if (name) {\n name = name.replace(new RegExp(\"[\\\\\\\\]+\", \"g\"), \"/\");\n }\n\n url += manufacturer ? encodeURIComponent(manufacturer) + \"/\" : \"-\" + \"/\";\n url += program ? encodeURIComponent(program) + \"/\" : \"-\" + \"/\";\n url += type ? encodeURIComponent(type) + \"/\" : \"-\" + \"/\";\n url += type === \"texPath\" ? name : encodeURIComponent(name);\n\n if (!hasExtension) {\n url += \".jpg\";\n }\n if (returnPlaceholder) {\n url += \"?placeholder=false\"\n }\n\n return url;\n }\n}\n\nexport const MediaService = new MediaServiceClass();\n","import { CardDataService } from \"../card.data.service\";\nimport { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport {\n CardContainerContext,\n CardContainerUpdate,\n CardData,\n CardDataLevel,\n CardDataLevelKey,\n CardDataLevelMap,\n CardDataUpdateEvent,\n CardFetchMethod,\n FetchResult\n} from \"../../models/card-container\";\nimport { UtilService } from \"../util.service\";\nimport { MediaService } from \"../../utils/media.service\";\nimport { IMaterialCatalog, IMaterialCatalogItem } from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\n\n\nexport enum EMaterialTarget {\n Wall = \"wall\",\n Floor = \"floor\",\n Ceiling = \"ceiling\",\n Door = \"door\",\n Window = \"window\",\n WindowSill = \"window_sill\",\n}\n\nexport enum EGlobalTextureVariable {\n Wall = \"13202\", // VIH_TEXTURE_WALL\n Floor = \"13201\", // VIH_TEXTURE_FLOOR\n Ceiling = \"13203\", // VIH_TEXTURE_ROOF\n Door = \"13204\", // VIH_TEXTURE_DOOR\n Window = \"13205\", // VIH_TEXTURE_WINDOW\n WindowSillTexture = \"13211\", // VIH_BG_WINDOW_SILL_TEXTURE\n}\n\nexport interface IMaterialTargetInfo {\n label: string;\n target: EMaterialTarget;\n variable: EGlobalTextureVariable;\n}\n\nconst MATERIAL_TARGETS: IMaterialTargetInfo[] = [\n {\n label: \"6101\",\n target: EMaterialTarget.Wall,\n variable: EGlobalTextureVariable.Wall\n },\n {\n label: \"6100\",\n target: EMaterialTarget.Floor,\n variable: EGlobalTextureVariable.Floor\n },\n {\n label: \"6102\",\n target: EMaterialTarget.Ceiling,\n variable: EGlobalTextureVariable.Ceiling\n },\n {\n label: \"6104\",\n target: EMaterialTarget.Door,\n variable: EGlobalTextureVariable.Door\n },\n {\n label: \"6103\",\n target: EMaterialTarget.Window,\n variable: EGlobalTextureVariable.Window\n },\n {\n label: \"60293\",\n target: EMaterialTarget.WindowSill,\n variable: EGlobalTextureVariable.WindowSillTexture\n },\n];\n\nexport interface IMaterialSelectionFetchResult extends FetchResult {\n targets: EMaterialTarget[];\n catalog: IMaterialCatalog;\n}\n\nexport class MaterialSelectionCardAppConnection extends BaseCardDataAppConnection<IMaterialSelectionFetchResult> {\n constructor() {\n super();\n this.Method = CardFetchMethod.MaterialSelection;\n }\n\n private getTargetInfo(target_: EMaterialTarget): IMaterialTargetInfo | undefined {\n return MATERIAL_TARGETS.find(t => t.target === target_);\n }\n\n private getTargetCategory(target_: EMaterialTarget): string {\n return `dhcat_${target_}`;\n }\n\n private getTargetCategories(): Set<string> {\n return new Set(MATERIAL_TARGETS.map(t => this.getTargetCategory(t.target)));\n }\n\n private getAllowedTargets(context_: CardContainerContext): Set<EMaterialTarget> {\n const allTargets = new Set<EMaterialTarget>(MATERIAL_TARGETS.map(t => t.target));\n\n const configured = context_.settings.Fetch.parameters?.[\"allowed-targets\"] as Array<string> | undefined;\n if (!configured) {\n return allTargets;\n }\n\n const allowedTargets = new Set<EMaterialTarget>();\n for (const item of configured) {\n const value = item.toLowerCase();\n if (allTargets.has(value as EMaterialTarget)) {\n allowedTargets.add(value as EMaterialTarget);\n }\n }\n return allowedTargets;\n }\n\n private async setGlobalMaterial(target_: EMaterialTarget, materialName_: string): Promise<void> {\n const info = this.getTargetInfo(target_);\n if (info == undefined) {\n return;\n }\n\n await CommunicationMessageService.dhTodo([\"3\" /* PropTransferWorld */, {\n params: [\n \"-1\" /* GlobalTransfer */,\n \"0\" /* Put */,\n info.variable /* Key */,\n \"S\" /* Type */,\n materialName_ /* Value */\n ]\n }]);\n }\n\n private getImageUrl(img_: string): string {\n if (!img_ || img_.length == 0) {\n return \"\";\n }\n\n const filename = img_.split(/[\\\\/]/).pop();\n if (img_.startsWith(\"./images\")) {\n return MediaService.getUrl(\"_global\", undefined, \"wall_img\", filename, true, false);\n }\n if (img_.includes(\"textures\")) {\n return MediaService.getUrl(\"_global\", undefined, \"tex\", filename, true, false);\n }\n\n return \"\";\n }\n\n public async CheckUpdate(event_: CardDataUpdateEvent, eventParameters_: unknown, context_: CardContainerContext): Promise<CardContainerUpdate> {\n if (event_ == CardDataUpdateEvent.CardContainerVisible) {\n return CardContainerUpdate.FETCH;\n }\n return await super.CheckUpdate(event_, eventParameters_, context_);\n }\n\n public async Fetch(context_: CardContainerContext): Promise<FetchResult> {\n const catalog = await CommunicationMessageService.getMaterialCatalog();\n return {\n catalog: catalog,\n targets: MATERIAL_TARGETS.map(t => t.target)\n };\n }\n\n public Filter(unfiltered_: IMaterialSelectionFetchResult, context_: CardContainerContext, active_: Array<CardDataLevelKey>): FetchResult {\n const allowedTargets = this.getAllowedTargets(context_);\n const allowedTargetCats = new Set([...allowedTargets].map(t => this.getTargetCategory(t)));\n\n const excludeCategories = new Set(context_.settings.Fetch.parameters?.[\"exclude-categories\"] as Array<string> ?? []);\n const onlyFeaturedMaterials = context_.settings.Fetch.parameters?.[\"only-featured-materials\"] as boolean ?? false;\n const excludeManufacturerMaterials = context_.settings.Fetch.parameters?.[\"exclude-manufacturer-materials\"] as boolean ?? false;\n\n let baseItems = unfiltered_.catalog.items;\n if (excludeManufacturerMaterials) {\n baseItems = baseItems.filter(item => !item.categories.includes(\"dhcat_brandedmat\"));\n }\n if (excludeCategories.size > 0) {\n baseItems = baseItems.filter(item => !item.categories.some(cat => excludeCategories.has(cat)));\n }\n\n const hasFeatured = baseItems.some(item => item.categories.includes(\"dhcat_featured\"));\n const featuredItems = onlyFeaturedMaterials && hasFeatured\n ? baseItems.filter(item => item.categories.includes(\"dhcat_featured\"))\n : baseItems;\n\n const targeted = featuredItems.filter(\n item => item.categories.some(cat => allowedTargetCats.has(cat))\n );\n const items = targeted.length > 0 ? targeted : featuredItems;\n\n return {\n catalog: { data: unfiltered_.catalog.data, items },\n targets: unfiltered_.targets.filter(t => allowedTargets.has(t))\n };\n }\n\n public CreateCards(filtered_: IMaterialSelectionFetchResult, context_: CardContainerContext): CardDataLevelMap {\n const { catalog, targets } = filtered_;\n const levels = new Map<CardDataLevelKey, CardDataLevel>();\n const targetCats = this.getTargetCategories();\n const rootLevelKey = (context_.settings.Fetch[\"root-level\"] as CardDataLevelKey) || \"root\";\n\n const allowedTargetCats = new Set(targets.map(t => this.getTargetCategory(t)));\n const isTargetTagged = catalog.items.some(item => item.categories.some(cat => allowedTargetCats.has(cat)));\n\n const rootCards: CardData[] = [];\n levels.set(rootLevelKey, {\n title: \"\",\n cards: rootCards\n });\n\n for (const target of targets) {\n const info = this.getTargetInfo(target);\n if (info == undefined) {\n continue;\n }\n\n const targetCat = this.getTargetCategory(target);\n const itemsForTarget = isTargetTagged\n ? catalog.items.filter(item => item.categories.includes(targetCat))\n : catalog.items;\n if (itemsForTarget.length === 0) {\n continue;\n }\n\n const targetKey = `target-${target}`;\n rootCards.push({\n txt: {\n title: info.label\n },\n click: {\n \"previous-level-key\": \"\",\n \"level-key\": targetKey,\n \"next-level-key\": targetKey\n }\n });\n\n this.buildLevels(levels, catalog, targetKey, info.label, itemsForTarget, 0, targetCats, target);\n\n const customColor = context_.settings.Fetch.parameters?.[\"custom-color\"] as boolean ?? false;\n if (customColor) {\n this.buildCustomColorLevel(levels, targetKey, target);\n }\n }\n\n return levels;\n }\n\n private buildLevels(levels_: CardDataLevelMap, catalog_: IMaterialCatalog, key_: string, title_: string, items_: IMaterialCatalogItem[], depth_: number, targetCats_: Set<string>, target_: EMaterialTarget): void {\n const cards: CardData[] = [];\n const groups = new Map<string, IMaterialCatalogItem[]>();\n const leaves: IMaterialCatalogItem[] = [];\n\n for (const item of items_) {\n const path = item.categories.filter(cat => !targetCats_.has(cat));\n if (depth_ < path.length) {\n const cat = path[depth_];\n const group = groups.get(cat);\n if (group) {\n group.push(item);\n } else {\n groups.set(cat, [item]);\n }\n } else {\n leaves.push(item);\n }\n }\n\n for (const [cat, groupItems] of groups) {\n const childKey = `${key_}:${UtilService.sanitizeKey(cat)}`;\n const data = catalog_.data[cat] as { img: string };\n cards.push({\n txt: {\n title: cat\n },\n image: data?.img ? {\n prefix: \"\",\n file: this.getImageUrl(data.img)\n } : undefined,\n click: {\n \"previous-level-key\": key_,\n \"level-key\": childKey,\n \"next-level-key\": childKey\n }\n });\n\n this.buildLevels(levels_, catalog_, childKey, cat, groupItems, depth_ + 1, targetCats_, target_);\n }\n\n for (const item of leaves) {\n cards.push({\n image: {\n prefix: \"\",\n file: this.getImageUrl(item.img)\n },\n click: {\n \"previous-level-key\": key_,\n \"level-key\": item.id,\n \"next-level-key\": \"\",\n \"item\": item,\n \"target\": target_,\n },\n });\n }\n\n levels_.set(key_, {\n title: title_,\n cards: cards,\n additional: leaves.length > 0 ? {\n \"style-type\": \"textures\"\n } : undefined\n });\n }\n\n private buildCustomColorLevel(levels_: CardDataLevelMap, targetKey_: string, target_: EMaterialTarget): void {\n const targetLevel = levels_.get(targetKey_);\n if (targetLevel == undefined) {\n return;\n }\n\n const colorKey = `${targetKey_}:custom-color`;\n targetLevel.cards.push({\n txt: {\n title: \"farbauswahl\",\n },\n click: {\n \"previous-level-key\": targetKey_,\n \"level-key\": colorKey,\n \"next-level-key\": colorKey,\n \"target\": target_,\n },\n });\n\n levels_.set(colorKey, {\n title: \"\",\n cards: [\n {\n click: {\n \"previous-level-key\": colorKey,\n \"level-key\": `${colorKey}:picker`,\n \"next-level-key\": \"\",\n \"target\": target_,\n },\n additional: {\n \"card-tag\": \"fv-color-picker-card\"\n },\n },\n ],\n additional: {\n \"style-type\": \"color-picker\"\n }\n });\n }\n\n public async Click(card_: CardData, context_: CardContainerContext): Promise<void> {\n super.Click(card_, context_);\n\n const target = card_.click?.[\"target\"] as EMaterialTarget | undefined;\n if (target == undefined) {\n return;\n }\n\n const matItem = card_.click?.[\"item\"] as IMaterialCatalogItem | undefined;\n const rgbCode = card_.click?.[\"rgb-code\"] as { r: number; g: number; b: number } | undefined;\n const matName = matItem ? matItem.id : rgbCode ? `RGB_${rgbCode.r}_${rgbCode.g}_${rgbCode.b}` : \"\";\n\n if (matName.length > 0) {\n await this.setGlobalMaterial(target, matName);\n }\n }\n}\nCardDataService.RegisterAppConnection(new MaterialSelectionCardAppConnection());\n","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardFetchMethod, FetchResult, CardDataLevelKey, CardDataLevel, CardFetchFilters, CardContainerContext, CardData } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport {LocaleService} from \"@dh-software/webui-api\";\n\nexport class CardsFromConfigurationCardAppConnection extends BaseCardDataAppConnection {\n constructor() {\n super();\n this.Method = CardFetchMethod.CardsFromConfiguration;\n }\n\n public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n const cardsParameter = context.settings.Fetch.parameters[\"cards\"] as { [level: string]: { titleTxtId: string, cards: Array<CardData> } };\n const result = {\n cards: new Map<string, { titleTxtId: string, cards: Array<CardData> }>()\n };\n const levels = Object.keys(cardsParameter);\n for (const level of levels) {\n result.cards.set(level, cardsParameter[level]);\n }\n return result;\n }\n\n public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n const filtered = {\n cards: new Map<string, Map<string, { titleTxtId: string, cards: Array<CardData> }>>()\n };\n const filter = context.settings.Fetch.filter ? context.settings.Fetch.filter as CardFetchFilters : {};\n if (filter[\"level-key-filter\"]) {\n for (const card of unfiltered.cards as Map<string, Map<string, { titleTxtId: string, cards: Array<CardData> }>>) {\n if (filter[\"level-key-filter\"].includes(card[0])) {\n filtered.cards.set(card[0], card[1]);\n }\n }\n }\n else if (context.states.SelectedFilters && context.states.SelectedFilters.length > 0) {\n for (const selectedFilter of context.states.SelectedFilters) {\n for (const card of unfiltered.cards as Map<string, Map<string, { titleTxtId: string, cards: Array<CardData> }>>) {\n if (selectedFilter.filter.includes(card[0])) {\n filtered.cards.set(card[0], card[1]);\n }\n }\n }\n }\n else {\n filtered.cards = unfiltered.cards as Map<string, Map<string, { titleTxtId: string, cards: Array<CardData> }>>;\n }\n return filtered;\n }\n\n public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const cards = super.CreateCards(filtered, context);\n cards.clear();\n\n if (filtered.cards) {\n for (const cardLevelData of filtered.cards as Map<string, { titleTxtId: string, cards: Array<CardData> }>) {\n cards.set(cardLevelData[0], {\n title: LocaleService.translate(cardLevelData[1].titleTxtId, cardLevelData[1].titleTxtId),\n cards: cardLevelData[1].cards\n });\n }\n }\n return cards;\n }\n}\nCardDataService.RegisterAppConnection(new CardsFromConfigurationCardAppConnection());\n","import {\n\tBasePropertyCardAppConnection,\n\tBasePropertyFetchResult,\n} from \"./base-property-card-app.connection\";\nimport {\n\tCardFetchMethod,\n\tCardDataLevelKey,\n\tCardDataLevel,\n\tCardContainerContext,\n\tFilterSelectionStrategy,\n\tCardDataButtonGroupItem,\n\tCardDataGroup,\n} from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport {\n\tCommunicationMessageService,\n\tProgContextModel,\n} from \"@dh-software/webui-api\";\nimport {\n\tContextFilterStrategy,\n\tIProgProperty,\n\tIProgPropertyContext,\n\tIProgPropertyRootList,\n\tIPropTransferItem,\n} from \"@dh-software/webui-types\";\nimport { UtilService } from \"../util.service\";\n\nexport type PropertyContext = {\n\tcontextId: string;\n\tproperties: Array<IProgProperty>;\n};\n\nexport type PropertyGroup /* MerkmalLegacyGroupInfoData */ = {\n\tid: string;\n\ttitle: string;\n\tkeys: Array<{\n\t\tkey: number;\n\t\ttitle: string;\n\t\tinfoText?: string;\n\t\tpreventImages?: number;\n\t}>;\n};\n\nexport type PropertyContextFetchResult = BasePropertyFetchResult & {\n\tcontexts: Array<PropertyContext>;\n\tgroups: Array<PropertyGroup>;\n\tcatalogOrder?: { [merkmalKey: number]: number }; // merkmal key -> global display order index (lower = earlier)\n};\n\nexport class PropertyContextSelectionAppConnection extends BasePropertyCardAppConnection<PropertyContextFetchResult> {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.Method = CardFetchMethod.PropertyContextSelection;\n\t}\n\n\tprivate static lastRefreshPropertyPanelTimestamp: number | undefined =\n\t\tundefined;\n\tprotected override onRefreshPropertyPanel(): void {\n\t\tPropertyContextSelectionAppConnection.lastRefreshPropertyPanelTimestamp =\n\t\t\tDate.now();\n\t}\n\n\tprivate static propertiesCache = new Map<\n\t\tstring,\n\t\t| IProgPropertyRootList<IProgPropertyContext>\n\t\t| Promise<IProgPropertyRootList<IProgPropertyContext>>\n\t>();\n\tprotected async Find(\n\t\tmanufacturer: string,\n\t\tprogram: string,\n\t\tuseSelection: boolean,\n\t\tuseRelevant: boolean,\n\t\tinstanceIdents?: Array<number>,\n\t): Promise<IProgPropertyRootList<IProgPropertyContext>> {\n\t\tconst cacheKey =\n\t\t\tmanufacturer +\n\t\t\tprogram +\n\t\t\t(useSelection ? \"Selection\" : \"NoSelection\") +\n\t\t\t(useRelevant ? \"Relevant\" : \"NotRelevant\") +\n\t\t\t(instanceIdents != undefined ? instanceIdents.toString() : \"[]\") +\n\t\t\t(PropertyContextSelectionAppConnection.lastRefreshPropertyPanelTimestamp?.toString() ??\n\t\t\t\t\"\");\n\t\treturn this.cachedFind(\n\t\t\tcacheKey,\n\t\t\tPropertyContextSelectionAppConnection.propertiesCache,\n\t\t\t() =>\n\t\t\t\tProgContextModel.findAll(\n\t\t\t\t\tuseSelection,\n\t\t\t\t\tuseRelevant,\n\t\t\t\t\tinstanceIdents,\n\t\t\t\t\tContextFilterStrategy.ALL,\n\t\t\t\t) as Promise<IProgPropertyRootList<IProgPropertyContext>>,\n\t\t);\n\t}\n\n\tprotected async FindGroupInformation(\n\t\tmanufacturer: string,\n\t\tprogram: string,\n\t): Promise<Array<PropertyGroup>> {\n\t\treturn await CommunicationMessageService.getMerkmalGroupInformation({\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t});\n\t}\n\n\tprivate getContextProperties(\n\t\tcontext: IProgPropertyContext,\n\t\texportCondition?: (property: IProgProperty) => boolean,\n\t): PropertyContext {\n\t\tconst properties = Object.values(context.children).flatMap((program) =>\n\t\t\tObject.values(program.children).filter(\n\t\t\t\t(property) => !exportCondition || exportCondition(property),\n\t\t\t),\n\t\t);\n\t\treturn { contextId: context.contextId, properties };\n\t}\n\n\tpublic override async Fetch(\n\t\tcontext: CardContainerContext,\n\t): Promise<PropertyContextFetchResult> {\n\t\tconst {\n\t\t\tuseSelection,\n\t\t\tuseRelevant,\n\t\t\tignoreSingleValueProperties,\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t} = await this.getCommonFetchParameters(context);\n\n\t\tconst propertiesHierarchy = await this.Find(\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t\tuseSelection,\n\t\t\tuseRelevant,\n\t\t);\n\t\tconst groupInfo = await this.FindGroupInformation(\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t);\n\t\tconst contexts = Object.values(propertiesHierarchy.children).flatMap(\n\t\t\t(x) =>\n\t\t\t\tthis.getContextProperties(\n\t\t\t\t\tx,\n\t\t\t\t\t(value) =>\n\t\t\t\t\t\t!ignoreSingleValueProperties ||\n\t\t\t\t\t\tObject.keys(value.children).length >= 2,\n\t\t\t\t),\n\t\t);\n\n\t\tconst result: PropertyContextFetchResult = {\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t\tcontexts,\n\t\t\tgroups: groupInfo,\n\t\t};\n\t\tif (context.settings.Fetch.parameters[\"order-by-catalog\"] === true) {\n\t\t\tconst { keyRank, categoryRank } = await this.fetchCatalogRanks(\n\t\t\t\tmanufacturer,\n\t\t\t\tprogram,\n\t\t\t);\n\t\t\tresult.catalogOrder = this.buildContextOrder(\n\t\t\t\tcontexts,\n\t\t\t\tkeyRank,\n\t\t\t\tcategoryRank,\n\t\t\t);\n\t\t}\n\t\tconst allowedKeys = await this.fetchAllowedKeysByCategories(\n\t\t\tcontext,\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t);\n\t\tif (allowedKeys !== undefined) result[\"allowed-keys\"] = allowedKeys;\n\t\treturn result;\n\t}\n\n\tpublic override Filter(\n\t\tunfiltered: PropertyContextFetchResult,\n\t\tcontext: CardContainerContext,\n\t\tactive: Array<CardDataLevelKey>,\n\t): PropertyContextFetchResult {\n\t\tif (unfiltered.contexts == undefined)\n\t\t\treturn { ...unfiltered, contexts: [] };\n\n\t\tconst filteredContexts = unfiltered.contexts.map((propertyContext) => ({\n\t\t\tcontextId: propertyContext.contextId,\n\t\t\tproperties: this.filterPropertiesByAllowedKeys(\n\t\t\t\tpropertyContext.properties,\n\t\t\t\tcontext,\n\t\t\t\tunfiltered[\"allowed-keys\"],\n\t\t\t),\n\t\t}));\n\n\t\treturn { ...unfiltered, contexts: filteredContexts };\n\t}\n\n\t// Fetches the two ranking inputs used to order merkmal cards by catalog:\n\t// - categoryRank: generated-catalog category id -> rank (GetCategoriesMergedFP order)\n\t// - keyRank: merkmal key -> its component's category rank, via the PropTransfer Cat mapping\n\tprivate async fetchCatalogRanks(\n\t\tmanufacturer: string,\n\t\tprogram: string,\n\t): Promise<{\n\t\tkeyRank: { [key: number]: number };\n\t\tcategoryRank: Map<string, number>;\n\t}> {\n\t\t// 1) ordered equipment categories (mirror article-category.js: equipment band 10000, sorting 10001)\n\t\tconst merged = await CommunicationMessageService.getCategoriesMerged(\n\t\t\tmanufacturer,\n\t\t\t\"dhcat_\",\n\t\t\t10001,\n\t\t\t10001,\n\t\t\tprogram,\n\t\t);\n\t\t// A merged category row is [id, text, priority, <unused>, order, ...].\n\t\t// Sort by `order`; when order is blank, fall back to `priority`, then to source order.\n\t\t// (Matches the legacy article-category.js ordering.)\n\t\tconst categoryRows = (merged?.category ?? []) as Array<Array<string>>;\n\t\tconst ranked = categoryRows\n\t\t\t.map(([id, , priorityText, , orderText], sourceIndex) => ({\n\t\t\t\tid,\n\t\t\t\tsort:\n\t\t\t\t\torderText !== \"\"\n\t\t\t\t\t\t? parseInt(orderText)\n\t\t\t\t\t\t: parseInt(priorityText) || sourceIndex,\n\t\t\t}))\n\t\t\t.sort((a, b) => a.sort - b.sort);\n\n\t\tconst categoryRank = new Map<string, number>();\n\t\tranked.forEach((rankedRow, index) => {\n\t\t\tif (rankedRow.id && !categoryRank.has(rankedRow.id)) {\n\t\t\t\tcategoryRank.set(rankedRow.id, index);\n\t\t\t}\n\t\t});\n\n\t\t// 2) merkmal key -> best (lowest) category rank via PropTransfer items\n\t\tconst items = (await CommunicationMessageService.getPropTransfer({\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t})) as Array<IPropTransferItem>;\n\t\tconst keyRank: { [key: number]: number } = {};\n\t\tfor (const item of items ?? []) {\n\t\t\tconst key = parseInt(item.key); // item.key matches property.id base (same numbering as IProgProperty.id)\n\t\t\tlet bestRank = Number.MAX_SAFE_INTEGER;\n\t\t\tfor (const cat of item.Cat ?? []) {\n\t\t\t\tconst rank = categoryRank.get(cat);\n\t\t\t\tif (rank !== undefined && rank < bestRank) bestRank = rank;\n\t\t\t}\n\t\t\tif (bestRank !== Number.MAX_SAFE_INTEGER) keyRank[key] = bestRank;\n\t\t}\n\t\treturn { keyRank, categoryRank };\n\t}\n\n\t// Produces merkmalKey -> global display order index. Each merkmal is owned by the highest-ranked context\n\t// it appears in (a per-component context outranks the general -1 context), and is ordered by (owning\n\t// context rank, its natural position within that context). This groups merkmale by component in catalog\n\t// order while preserving each component's own merkmal order (so the \"erzeugen\" creation toggle stays first\n\t// in its group) — no numeric-key tiebreak needed.\n\tprivate buildContextOrder(\n\t\tcontexts: Array<PropertyContext>,\n\t\tkeyRank: { [key: number]: number },\n\t\tcategoryRank: Map<string, number>,\n\t): { [key: number]: number } {\n\t\tconst ownership = new Map<number, { rank: number; position: number }>();\n\t\tfor (const ctx of contexts) {\n\t\t\tconst contextRank = this.rankForContext(ctx, keyRank, categoryRank);\n\t\t\tctx.properties.forEach((property, position) => {\n\t\t\t\tconst merkmalKey = parseInt(property.id);\n\t\t\t\tconst owning = ownership.get(merkmalKey);\n\t\t\t\tif (owning === undefined || contextRank > owning.rank) {\n\t\t\t\t\townership.set(merkmalKey, { rank: contextRank, position });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst orderIndexByKey: { [key: number]: number } = {};\n\t\t[...ownership.entries()]\n\t\t\t.sort(([, a], [, b]) => a.rank - b.rank || a.position - b.position)\n\t\t\t.forEach(([merkmalKey], orderIndex) => {\n\t\t\t\torderIndexByKey[merkmalKey] = orderIndex;\n\t\t\t});\n\t\treturn orderIndexByKey;\n\t}\n\n\t// The catalog rank of one context. The general context (manufacturer#program, no component segment) is -1\n\t// so it sorts first. A per-component context takes the category rank of any PropTransfer key present in it;\n\t// when none is present yet (only the \"erzeugen\" toggle exists) it falls back to the component name in its\n\t// contextId.\n\tprivate rankForContext(\n\t\tctx: PropertyContext,\n\t\tkeyRank: { [key: number]: number },\n\t\tcategoryRank: Map<string, number>,\n\t): number {\n\t\tif (ctx.contextId.split(\"#\").length < 3) return -1; // general context\n\t\tlet bestRank = Number.MAX_SAFE_INTEGER;\n\t\tfor (const property of ctx.properties) {\n\t\t\tconst rank = keyRank[parseInt(property.id)];\n\t\t\tif (rank !== undefined && rank < bestRank) bestRank = rank;\n\t\t}\n\t\tif (bestRank !== Number.MAX_SAFE_INTEGER) return bestRank;\n\t\treturn this.categoryRankForContextId(ctx.contextId, categoryRank) ?? -1;\n\t}\n\n\t// Maps a component context's trailing \"#<COMPONENT>\" segment to its \"dhcat_proptransfer_<component>\"\n\t// category rank (matched on an underscore boundary to avoid a substring false-match). Used only when a\n\t// component isn't created yet, so its context has no PropTransfer key to rank it by.\n\tprivate categoryRankForContextId(\n\t\tcontextId: string,\n\t\tcategoryRank: Map<string, number>,\n\t): number | undefined {\n\t\tconst segments = contextId.split(\"#\");\n\t\tif (segments.length < 3) return undefined;\n\t\tconst component = segments[segments.length - 1].toLowerCase();\n\t\tfor (const [categoryId, rank] of categoryRank) {\n\t\t\tif (categoryId.toLowerCase().endsWith(\"_\" + component)) return rank;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t// Stable-sorts the flat property list by global catalog order index; properties without an index keep\n\t// their prior (fetch) order, at the end.\n\tprivate orderPropertiesByCatalog(\n\t\tproperties: Array<IProgProperty>,\n\t\tcatalogOrder?: { [key: number]: number },\n\t): Array<IProgProperty> {\n\t\tif (!catalogOrder) return properties;\n\t\tconst UNRANKED = Number.MAX_SAFE_INTEGER;\n\t\treturn properties\n\t\t\t.map((property, originalIndex) => ({\n\t\t\t\tproperty,\n\t\t\t\toriginalIndex,\n\t\t\t\torder: catalogOrder[parseInt(property.id)] ?? UNRANKED,\n\t\t\t}))\n\t\t\t.sort((a, b) => a.order - b.order || a.originalIndex - b.originalIndex)\n\t\t\t.map((entry) => entry.property);\n\t}\n\n\tpublic override CreateCards(\n\t\tfiltered: PropertyContextFetchResult,\n\t\tcontext: CardContainerContext,\n\t): Map<CardDataLevelKey, CardDataLevel> {\n\t\tconst result = new Map<CardDataLevelKey, CardDataLevel>();\n\t\tif (!filtered.contexts?.length) return result;\n\n\t\tconst makeToolTipButton =\n\t\t\t!!context.settings.Card[\"app-connection-settings\"][\n\t\t\t\t\"tooltip-only-creates-button\"\n\t\t\t];\n\t\tconst properties = filtered.contexts\n\t\t\t.flatMap((x) => x.properties)\n\t\t\t.filter(\n\t\t\t\t(property, index, arr) =>\n\t\t\t\t\tarr.findIndex((x) => x.id == property.id) === index,\n\t\t\t);\n\n\t\tconst orderedProperties = this.orderPropertiesByCatalog(\n\t\t\tproperties,\n\t\t\tfiltered.catalogOrder,\n\t\t);\n\n\t\tconst rootLevel: CardDataLevel = { title: \"\", cards: [] };\n\t\tfor (const property of orderedProperties) {\n\t\t\tconst propertyIdNum = parseInt(property.id);\n\t\t\tconst group = filtered.groups?.find((g) =>\n\t\t\t\tg.keys.some((k) => k.key === propertyIdNum),\n\t\t\t);\n\t\t\tconst groupKey = group?.keys.find((k) => k.key === propertyIdNum);\n\t\t\tconst infoText = groupKey?.infoText?.length\n\t\t\t\t? groupKey.infoText\n\t\t\t\t: undefined;\n\n\t\t\tconst buttonGroups: Array<CardDataGroup<CardDataButtonGroupItem>> =\n\t\t\t\tmakeToolTipButton && infoText\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle: \"\",\n\t\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tactive: false,\n\t\t\t\t\t\t\t\t\t\ticon: \"fv-icon-question-mark\",\n\t\t\t\t\t\t\t\t\t\t\"click-data\": { txt: infoText },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]\n\t\t\t\t\t: [];\n\n\t\t\tconst current = property.children[property.currentValue];\n\t\t\trootLevel.cards.push({\n\t\t\t\ttxt: makeToolTipButton\n\t\t\t\t\t? { title: UtilService.ncrToUTF8(property.name) }\n\t\t\t\t\t: {\n\t\t\t\t\t\t\ttitle: UtilService.ncrToUTF8(property.name),\n\t\t\t\t\t\t\ttooltip: infoText ?? \"\",\n\t\t\t\t\t\t},\n\t\t\t\timage: {\n\t\t\t\t\tprefix: \"\",\n\t\t\t\t\tfile: current ? current.alternativeImageUrl : \"\",\n\t\t\t\t},\n\t\t\t\tclick: {\n\t\t\t\t\t\"previous-level-key\": context.settings.Fetch[\"root-level\"],\n\t\t\t\t\t\"level-key\": property.id,\n\t\t\t\t\tstrategy: FilterSelectionStrategy.AND,\n\t\t\t\t\tpriority: 0,\n\t\t\t\t\t\"next-level-key\": \"\",\n\t\t\t\t},\n\t\t\t\t\"button-groups\":\n\t\t\t\t\tbuttonGroups.length > 0 ? buttonGroups : undefined,\n\t\t\t});\n\t\t}\n\t\tresult.set(context.settings.Fetch[\"root-level\"], rootLevel);\n\t\treturn result;\n\t}\n}\nCardDataService.RegisterAppConnection(\n\tnew PropertyContextSelectionAppConnection(),\n);\n","import { PropertyContextSelectionAppConnection, PropertyContextFetchResult, PropertyContext } from \"./property-context-selection.app.connection\";\nimport { CardData, CardFetchMethod, CardDataLevelKey, CardDataLevel, CardContainerContext, CardDataButtonGroupItem, CardDataGroup } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { IProgPropertyValue } from \"@dh-software/webui-types\";\nimport { ComponentService } from \"../../utils/component.service\";\nimport { InformationMaskComponent } from \"../../components/standard/modal/masks\";\n\n// Re-export types for external consumers\nexport type { PropertyContext, PropertyGroup, PropertyContextFetchResult } from \"./property-context-selection.app.connection\";\n\nexport class PropertyContextValueSelectionCardAppConnection extends PropertyContextSelectionAppConnection {\n constructor() {\n super();\n this.Method = CardFetchMethod.PropertyContextValueSelection;\n }\n\n public override CreateCards(filtered: PropertyContextFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const result = new Map<CardDataLevelKey, CardDataLevel>();\n if (!filtered.contexts?.length) return result;\n\n for (const propertyContext of filtered.contexts) {\n for (const property of propertyContext.properties) {\n const level: CardDataLevel = { title: property.name, cards: [] };\n if (property.children == undefined) continue;\n\n for (const [propertyValueKey, propertyValue] of Object.entries(property.children)) {\n const buttonGroups = new Array<CardDataGroup<CardDataButtonGroupItem>>();\n if (context.settings.Card[\"app-connection-settings\"][\"tooltip-only-creates-button\"]) {\n if ((propertyValue as IProgPropertyValue).toolTipType == \"text\") {\n buttonGroups.push({\n title: \"\",\n items: [{\n active: false,\n icon: \"fv-icon-question-mark\",\n \"click-data\": { \"txt\": (propertyValue as IProgPropertyValue).toolTipData as string }\n }]\n });\n }\n }\n\n const card = this.buildCardFromPropertyValue(propertyValue as IProgPropertyValue, propertyValueKey, property, filtered, context, { contextId: propertyContext.contextId });\n card.click![\"button-groups\"] = [];\n if (buttonGroups.length > 0) card[\"button-groups\"] = buttonGroups;\n level.cards.push(card);\n }\n result.set(property.id, level);\n }\n }\n return result;\n }\n\n public override async ClickCardButton(data: { [key: string]: unknown } | undefined, card: CardData, context: CardContainerContext): Promise<void> {\n const query = context.settings.Card[\"app-connection-settings\"][\"tooltip-button-target-information-mask-query\"];\n if (typeof query != \"string\") {\n console.error(\"property-context-value-selection> tooltip-button-target-information-mask-query is not a string! (or just undefined): \", query);\n return;\n }\n\n if (data == undefined || data[\"txt\"] == undefined) {\n console.error(\"property-context-value-selection> data invalid!\");\n return;\n }\n\n const elements = ComponentService.findAll(\"fv-information-mask\", query);\n for (const element of elements) {\n if (element instanceof InformationMaskComponent) {\n if (element.Modal == undefined) continue;\n\n if (element.maskData[\"information-text\"] === data[\"txt\"]) {\n element.Modal.toggle(element.mask, { \"information-text\": data[\"txt\"] as string }, query);\n continue;\n }\n element.Modal.open(element.mask, { \"information-text\": data[\"txt\"] as string }, query);\n }\n }\n }\n}\nCardDataService.RegisterAppConnection(new PropertyContextValueSelectionCardAppConnection());\n","import { PropertySelectionCardAppConnection, PropertyFetchResult } from \"./property-selection.card.app.connection\";\nimport { CardData, CardFetchMethod, CardDataLevelKey, CardDataLevel, CardContainerContext, FilterSelectionStrategy } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { EventHandlerService } from \"../event.handler.service\";\nimport { UtilService } from \"../util.service\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport type { PropertyGroup } from \"./property-context-selection.app.connection\";\n\n// Re-export the group type for external consumers\nexport type { PropertyGroup } from \"./property-context-selection.app.connection\";\n\nexport type PropertyUiGroupFetchResult = PropertyFetchResult & {\n groups: Array<PropertyGroup>;\n}\n\n/**\n * Renders the Merkmal \"UI groups\" (e.g. \"Modellauswahl\", \"Sitz\", \"Lehne\", \"Gestell\")\n * as a flat list of cards.\n *\n * Extends {@link PropertySelectionCardAppConnection} so the property set that decides which\n * groups are relevant is the *exact same* `ProgPropertyModel.find` result (and shared static\n * cache) a sibling `property-selection` level uses — only groups whose keys occur in the\n * current article's (category-filtered) property list are shown. The group information itself\n * is layered on via `CommunicationMessageService.getMerkmalGroupInformation`.\n *\n * Acts as a *filter source*: clicking a group writes that group's property keys into this\n * container's filter selection with an OR strategy, tagged `filter-type: \"property-group\"`.\n * A sibling property container that lists this container in its `filter-sources` then restricts\n * its property list to those keys (see BasePropertyCardAppConnection.filterPropertiesByAllowedKeys).\n *\n * Selection is single-group (radio): clicking the active group again clears the filter.\n */\nexport class PropertyUiGroupSelectionCardAppConnection extends PropertySelectionCardAppConnection {\n constructor() {\n super();\n this.Method = CardFetchMethod.PropertyUiGroupSelection;\n }\n\n /** Group cards always feed an OR filter to sibling property containers. */\n public override GetFilterSelectionStrategy(): FilterSelectionStrategy {\n return FilterSelectionStrategy.OR;\n }\n\n public override async Fetch(context: CardContainerContext): Promise<PropertyUiGroupFetchResult> {\n const base = await super.Fetch(context);\n const groups = await CommunicationMessageService.getMerkmalGroupInformation({\n manufacturer: base.manufacturer,\n program: base.program\n }) as Array<PropertyGroup>;\n return { ...base, groups };\n }\n\n public override Filter(unfiltered: PropertyUiGroupFetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): PropertyUiGroupFetchResult {\n return super.Filter(unfiltered, context, active) as PropertyUiGroupFetchResult;\n }\n\n /** Numeric property keys that exist (and survive filtering) in the current article. */\n private collectPresentKeys(filtered: PropertyUiGroupFetchResult): Set<number> {\n const present = new Set<number>();\n for (const property of filtered.properties ?? []) {\n const id = parseInt(property.id);\n if (!isNaN(id)) present.add(id);\n }\n return present;\n }\n\n /** The subset of a group's keys that is actually present in the current article. */\n private relevantGroupKeys(group: PropertyGroup, presentKeys: Set<number>): Array<number> {\n return group.keys.map(k => k.key).filter(key => presentKeys.has(key));\n }\n\n public override CreateCards(filtered: PropertyUiGroupFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const result = new Map<CardDataLevelKey, CardDataLevel>();\n if (!filtered.groups?.length) return result;\n\n const presentKeys = this.collectPresentKeys(filtered);\n const cardKeyFilter = context.settings.Fetch.filter?.[\"group-keys\"] as { keys: Array<number | string>, \"prohibit-listed\"?: boolean } | undefined;\n const hasCardKeyFilter = !!cardKeyFilter?.keys?.length;\n const cardKeyInclude = hasCardKeyFilter ? cardKeyFilter![\"prohibit-listed\"] !== true : true;\n const emptyTitleFallback = context.settings.Fetch.parameters?.[\"empty-group-title-fallback\"] as string | undefined;\n const rootLevelKey = context.settings.Fetch[\"root-level\"];\n\n const rootLevel: CardDataLevel = { title: \"\", cards: [] };\n for (const group of filtered.groups) {\n // Strip / keep group cards by their level-key (the group id), mirroring the property-keys\n // filter: with `prohibit-listed: true` a match is removed, otherwise only matches are kept.\n // `keys` supports `/regex/flags` and exact ids (same matcher as property-keys).\n if (hasCardKeyFilter && PropertyUiGroupSelectionCardAppConnection.propertyKeyMatches(group.id, cardKeyFilter!.keys) !== cardKeyInclude) continue;\n\n const keys = this.relevantGroupKeys(group, presentKeys);\n if (keys.length === 0) continue; // group is not relevant to the current article\n\n const active = context.filter != undefined\n && context.filter.Filter.length === keys.length\n && keys.every(key => context.filter!.Contains(key));\n\n rootLevel.cards.push({\n txt: { title: UtilService.ncrToUTF8(group.title) || emptyTitleFallback || \"\" },\n click: {\n \"previous-level-key\": rootLevelKey,\n \"level-key\": group.id,\n \"next-level-key\": \"\",\n strategy: FilterSelectionStrategy.OR\n },\n active,\n additional: {\n \"group-id\": group.id,\n \"property-keys\": keys\n }\n });\n }\n\n result.set(rootLevelKey, rootLevel);\n return result;\n }\n\n private clickActive = false;\n\n public override async Click(card: CardData, context: CardContainerContext): Promise<void> {\n if (this.clickActive) return;\n this.clickActive = true;\n\n if (context.filter != undefined && card.additional != undefined) {\n const keys = (card.additional[\"property-keys\"] as Array<number> | undefined) ?? [];\n const wasActive = keys.length > 0\n && context.filter.Filter.length === keys.length\n && keys.every(key => context.filter!.Contains(key));\n\n // single-group (radio) selection: drop the previous selection, then either\n // apply this group's keys or — if it was already the active one — clear it\n context.filter.Strategy = FilterSelectionStrategy.OR;\n context.filter.AdditionalParams = { \"filter-type\": \"property-group\" }; // lets consumers restrict on this filter\n context.filter.Clear();\n if (!wasActive) {\n for (const key of keys) context.filter.Add(key);\n }\n }\n\n await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n refetch: false,\n \"include-hidden\": false\n });\n await CardDataService.WaitForAllCardContainerFetchPromises();\n this.clickActive = false;\n }\n}\nCardDataService.RegisterAppConnection(new PropertyUiGroupSelectionCardAppConnection());\n","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardDataService } from \"../card.data.service\";\nimport { CardContainerContext, CardContainerSpecialInteractionContext, CardContainerUpdate, CardData, CardDataLevel, CardDataLevelKey, CardDataUpdateEvent, CardFetchMethod, FetchResult, FilterSelectionData, CardDataImage } from \"../../models/card-container\";\nimport { CommunicationMessageService, LocaleService } from \"@dh-software/webui-api\";\nimport { ComponentService, ComponentServiceSearchParams } from \"../../utils/component.service\";\nimport { BaseCardContainer } from \"../../components/standard/card-container/base/base-card-container\";\nimport { MediaService } from \"../media.service\"\nimport { IArticleData, IKataPageData, IPlaceWallElementNextCenterParams } from \"@dh-software/webui-types\";\nimport { CatalogService } from \"../../utils/catalog.service\";\nimport { UtilService } from \"../../utils/util.service\";\n\ninterface IWallElementItem {\n \"article\": string,\n \"type\": string,\n \"text\": string,\n \"initial-dimension\": Array<number>,\n \"parapet\": number,\n \"image\": CardDataImage,\n}\n\ninterface IWallElementsGroup {\n \"type\": string,\n \"txt\": string,\n \"txt2\": string,\n \"divider\": string,\n \"elements\": Array<IWallElementItem>,\n}\n\nexport class WallElementsCardAppConnection extends BaseCardDataAppConnection {\n constructor() {\n super();\n this.Method = CardFetchMethod.WallElements;\n }\n\n public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n if (event == CardDataUpdateEvent.CardContainerVisible) {\n return CardContainerUpdate.FILTER;\n }\n if (event == CardDataUpdateEvent.WallFitting_end) {\n return CardContainerUpdate.FILTER;\n }\n if (event == CardDataUpdateEvent.LastPOLoaded) {\n return CardContainerUpdate.FILTER;\n }\n return await super.CheckUpdate(event, eventParameters, context);\n }\n\n\n private GetFilterSelection(selectors: ComponentServiceSearchParams[]): FilterSelectionData[] {\n let prio = 0;\n const result: FilterSelectionData[] = [];\n for (const selector of selectors) {\n const targets = ComponentService.findAll(selector.tag, selector.query);\n for (const target of targets) {\n if (target instanceof BaseCardContainer) {\n if (target == undefined || target.Filter == undefined) continue;// skip elements that do not act as filters / could not be found\n if (CardDataService.GetMethod(target.Context) !== CardFetchMethod.WallSelection) continue;\n\n const targetFilter = target.Filter;\n if (targetFilter == undefined || targetFilter.Filter == undefined || targetFilter.Filter.length < 1) continue;\n\n result.push({\n filter: targetFilter.Filter,\n strategy: targetFilter.Strategy,\n priority: targetFilter.Prio != undefined ? targetFilter.Prio : prio++,\n \"additional-params\": targetFilter.AdditionalParams ? targetFilter.AdditionalParams : undefined\n });\n }\n }\n }\n return result;\n }\n public async CheckSpecialInteractionContext(context: CardContainerContext) {\n const onlyPrimaryWalls = (context.settings.Fetch.parameters[\"only-primary-walls\"] as boolean | undefined) || false;\n const walls = await CommunicationMessageService.getFurnplanWallsDoorsWindowsAndUtilities(true, onlyPrimaryWalls);\n const dataFilterSelection = this.GetFilterSelection(context.settings.SpecialInteractionContext[\"data-sources\"]);\n\n if (context.cards == undefined) {\n return CardContainerSpecialInteractionContext.ENABLED;\n }\n\n const filteredWalls = [];\n for (const wall of walls) {\n for (const dataFilter of dataFilterSelection) {\n if (dataFilter.filter.includes(wall.guid)) {\n filteredWalls.push(wall);\n }\n }\n }\n\n const situation: number[] = [];\n for (const wall of filteredWalls) {\n for (const cardLevel of context.cards) {\n for (const selectedFilter of context.states.SelectedFilters) {\n if (selectedFilter.filter.includes(cardLevel[0])) {\n if (wall[cardLevel[0]] != undefined) {\n situation.push(...wall[cardLevel[0]]);\n }\n }\n }\n }\n }\n if (situation.length < 1) {\n return CardContainerSpecialInteractionContext.DISABLED;\n }\n return CardContainerSpecialInteractionContext.ENABLED;\n }\n\n public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n const nodePrefix = await CommunicationMessageService.getNodePrefix();\n const wallElements = await CommunicationMessageService.getWallElements();\n\n let allElements: Array<any> = [];\n for (const item of wallElements) {\n for (const element of item.elements) {\n const alreadyExists = allElements.some(element_ => element_.artNo === element.artNo);\n if (!alreadyExists) {\n allElements.push(element);\n }\n }\n }\n\n const elementsToShow = context.settings.Fetch.parameters[\"wall-elements-to-show\"] as Array<string>;\n if (elementsToShow !== undefined) {\n allElements = allElements\n .filter(element_ => elementsToShow.includes(element_.artNo))\n .sort((a, b) => elementsToShow.indexOf(a.artNo) - elementsToShow.indexOf(b.artNo));\n }\n\n const groupedElements: Record<string, any[]> = {};\n for (const element of allElements) {\n const type = element.type.toLowerCase();\n if (!groupedElements[type]) {\n groupedElements[type] = [];\n }\n groupedElements[type].push(element);\n }\n\n const alternativeImages = context.settings.Fetch.parameters[\"alternative-images\"] as { [artNr: string]: CardDataImage };\n const _getWallElementItemImage = (article_: string, defaultImage_: string, defaultImageManu_: string): CardDataImage => {\n if (alternativeImages !== undefined && alternativeImages[article_]) {\n return alternativeImages[article_];\n }\n const defaultUrl = MediaService.getUrl(defaultImageManu_, undefined, \"fp_ui\", defaultImage_, true, false);\n return { file: defaultUrl, prefix: \"\" }\n }\n\n const windowInsertHeight = context.settings.Fetch.parameters[\"window-insert-height\"] as number | undefined;\n const result = Object.entries(groupedElements).map(([typeKey, elements]): IWallElementsGroup => {\n const mappedElements = elements.map((element: any): IWallElementItem => ({\n \"article\": element.artNo,\n \"type\": element.type,\n \"text\": element.text,\n \"initial-dimension\": [element.width, element.height],\n \"parapet\": element.parapetHeight <= 0 ? element.parapetHeight : (windowInsertHeight || element.parapetHeight),\n \"image\": _getWallElementItemImage(element.artNo, element.image, element.manu)\n }));\n\n return {\n type: `${typeKey}s`,\n txt: typeKey === \"door\" ? \"51090\" : \"6103\",\n txt2: \"\",\n divider: \"\",\n elements: mappedElements\n };\n });\n\n\n\n const utilitiesKataPage: IKataPageData = await CommunicationMessageService.getKataPage(\"access_raumplanung\", \"\");\n const elektro: IWallElementsGroup = { \"type\": \"electrical\", txt: \"51153\", txt2: \"\", divider: \"\", elements: [] };\n const sanitaer: IWallElementsGroup = { \"type\": \"plumbing\", txt: \"cat.dhacces_installationselemente_sanitaer\", txt2: \"\", divider: \"\", elements: [] };\n\n for (const module of utilitiesKataPage.Modules) {\n for (let articles of module.Articles) {\n articles = await CatalogService.filterArticlesList(articles);\n for (const article of articles) {\n if (elementsToShow !== undefined && elementsToShow.length > 0 && !elementsToShow.includes(article.ArtNr)) {\n continue;\n }\n\n if (article.CatString.includes(\"dhacces_installationselemente_sanitaer\")) {\n sanitaer.elements.push({\n \"article\": article.ArtNr,\n \"type\": \"plumbing\",\n \"text\": article.artText,\n \"initial-dimension\": [parseFloat((article as IArticleData).dxma), parseFloat((article as IArticleData).dzma)],\n \"parapet\": 50.0,// in cm (Kommentar #4 aus Ticket #79088 TODO: einstellbar machen!)\n \"image\": { prefix: nodePrefix, file: UtilService.ncrToUTF8(article.imgName) }\n });\n continue;\n }\n if (article.CatString.includes(\"dhacces_installationselemente_elektro\")) {\n elektro.elements.push({\n \"article\": article.ArtNr,\n \"type\": \"electrical\",\n \"text\": article.artText,\n \"initial-dimension\": [parseFloat((article as IArticleData).dxma), parseFloat((article as IArticleData).dzma)],\n \"parapet\": 100.5,// in cm, just for now, needs to be defined!\n \"image\": { prefix: nodePrefix, file: UtilService.ncrToUTF8(article.imgName) }\n });\n continue;\n }\n }\n }\n }\n\n if (elementsToShow !== undefined && elementsToShow.length > 0) {\n elektro.elements.sort((a, b) => elementsToShow.indexOf(a.article) - elementsToShow.indexOf(b.article));\n sanitaer.elements.sort((a, b) => elementsToShow.indexOf(a.article) - elementsToShow.indexOf(b.article));\n }\n\n result.push(elektro);\n result.push(sanitaer);\n\n return {\n \"element-data\": result,\n \"node-prefix\": nodePrefix\n };\n }\n\n public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n if (context.states.SelectedFilters && context.states.SelectedFilters.length > 0) {\n const filtered: Array<IWallElementsGroup> = [];\n const unfilteredElementData = unfiltered[\"element-data\"] as Array<IWallElementsGroup>;\n\n for (const selectedFilter of context.states.SelectedFilters) {\n for (const elementData of unfilteredElementData) {\n if (selectedFilter.filter.includes(elementData.type)) {\n if (!filtered.includes(elementData)) {\n filtered.push(elementData);\n }\n }\n }\n }\n\n return {\n \"element-data\": filtered,\n \"node-prefix\": unfiltered[\"node-prefix\"]\n }\n }\n return unfiltered;\n }\n\n public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const levels = super.CreateCards(filtered, context);\n levels.clear();\n\n if (filtered) {\n const cardData = filtered[\"element-data\"] as Array<IWallElementsGroup>;\n if (context.settings.Fetch.parameters[\"root-as-cards\"]) {\n const types: string[] = [];\n const cards: CardData[] = [];\n for (const card of cardData) {\n cards.push({\n txt: {\n title: LocaleService.translate(card.txt, card.txt) + LocaleService.translate(card.divider, card.divider) + LocaleService.translate(card.txt2, card.txt2)\n },\n click: {\n \"previous-level-key\": \"\",\n \"level-key\": card.type,\n \"next-level-key\": \"\"\n }\n });\n if (!types.includes(card.type)) {\n types.push(card.type);\n }\n }\n\n levels.set(\"root\", {\n title: \"\",\n cards: cards,\n additional: {\n \"element-types\": types\n }\n });\n return levels;\n }\n\n for (const card of cardData) {\n const types: string[] = [];\n const cards: CardData[] = [];\n for (const element of card.elements) {\n cards.push({\n image: {\n prefix: element.image.prefix,\n file: element.image.file\n },\n txt: {\n title: element.text\n },\n click: {\n \"previous-level-key\": \"\",\n \"level-key\": element.article,\n \"next-level-key\": \"\",\n \"type\": element.type,\n \"initial-dimension\": element[\"initial-dimension\"],\n \"parapet\": element.parapet\n }\n });\n if (!types.includes(element.type)) {\n types.push(element.type);\n }\n }\n\n levels.set(card.type, {\n title: LocaleService.translate(card.txt, card.txt) + LocaleService.translate(card.divider, card.divider) + LocaleService.translate(card.txt2, card.txt2),\n cards: cards,\n additional: {\n \"element-types\": types\n }\n });\n }\n }\n return levels;\n }\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n await super.Click(card, context);\n\n if (card.click == undefined || card.click[\"level-key\"] == undefined || card.click.type == undefined || card.click[\"initial-dimension\"] == undefined || (card.click[\"initial-dimension\"] as number[]).length != 2) {\n return;\n }\n\n const onlyPrimaryWalls = (context.settings.Fetch.parameters[\"only-primary-walls\"] as boolean | undefined) || false;\n const wallSelectionSelector = context.settings.Fetch.parameters[\"wall-selection-selector\"] as { tag: string, query: string };\n if (wallSelectionSelector != undefined) {\n const targets = ComponentService.findAll(wallSelectionSelector.tag, wallSelectionSelector.query);\n if (targets.length > 0 && targets[0] instanceof BaseCardContainer) {\n const filter = targets[0].Filter;\n if (filter != undefined) {\n let targetWall = undefined;\n const walls = await CommunicationMessageService.getFurnplanWallsDoorsWindowsAndUtilities(true, onlyPrimaryWalls);\n for (const wall of walls) {\n if (filter.Filter.includes(wall.guid)) {\n targetWall = wall.ii;\n break;\n }\n }\n\n if (targetWall != undefined) {\n const type = (card.click.type as string).toUpperCase() as \"DOOR\" | \"WINDOW\" | \"ELECTRICAL\" | \"PLUMBING\" | \"VENTILATION\" | \"COMMUNICATION\" | \"HEATING\";\n if (type.length > 0) {\n const placeWallCentered: IPlaceWallElementNextCenterParams = {\n type: type,\n wallinstanceident: targetWall as number,\n article: card.click[\"level-key\"] as string\n };\n\n if (card.click.type == \"Window\" || card.click.type == \"Door\") {\n const initialDimension = card.click[\"initial-dimension\"] as number[];\n placeWallCentered.width = initialDimension[0];\n placeWallCentered.height = initialDimension[1];\n if (card.click.type == \"Door\") {\n placeWallCentered.frame = \"I\";\n }\n }\n if (card.click.parapet) {\n placeWallCentered.parapet = card.click.parapet as number;\n }\n await CommunicationMessageService.placeWallElementNextCenter(placeWallCentered);\n await CommunicationMessageService.resetSceneAction();\n }\n }\n }\n }\n return;// if wall-selection-selector is set: place Wall element directly onto the selected wall!\n }\n\n if (card.click.type == \"Window\" || card.click.type == \"Door\") {\n const initialDimension = card.click[\"initial-dimension\"] as number[];\n const data = {\n width: initialDimension[0],\n height: initialDimension[1],\n parapet: card.click.parapet ? card.click.parapet : -1.0,\n type: card.click[\"level-key\"],\n elementType: card.click.type\n };\n await CommunicationMessageService.addWallChildElement(data);\n return;\n }\n\n if (card.click.type == \"plumbing\" || card.click.type == \"electrical\") {\n await CommunicationMessageService.placePO({ articleNumber: card.click[\"level-key\"] as string, manufacturer: \"_global\", program: \"acce\" });\n return;\n }\n console.warn(\"TODO: implement po placement!\")\n\n\n // await CommunicationMessageService.placePO({\n // manufacturer: card.click.manufacturer as string,\n // program: card.click.program as string,\n // articleNumber: card.click[\"level-key\"] as string,\n // once: true\n // });\n\n // const articleParams: ILoadArticleParams = {\n // artNr: card.click.nr as string,\n // hingeChanged: hasHingeChange ? \"1\" : \"\",\n // ...extraDimensions\n // }\n // await CommunicationMessageService.loadArticleWithParams(card.click.manufacturer as string, card.click.program as string, articleParams);\n // WebViewerService.FurnviewWebViewer?.focus();\n }\n\n\n}\nCardDataService.RegisterAppConnection(new WallElementsCardAppConnection());","import { CardDataService } from \"../card.data.service\";\nimport { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardContainerContext, CardContainerUpdate, CardData, CardDataLevel, CardDataLevelKey, CardDataUpdateEvent, CardFetchMethod, FetchResult } from \"../../models/card-container\";\nimport { CommunicationMessageService, LocaleService } from \"@dh-software/webui-api\";\n\n\nexport class WallSelectionCardAppConnection extends BaseCardDataAppConnection {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.Method = CardFetchMethod.WallSelection;\n\t}\n\n\tpublic async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n\t\tif (event == CardDataUpdateEvent.CardContainerVisible) {\n\t\t\treturn CardContainerUpdate.FETCH;\n\t\t}\n\t\tif (event == CardDataUpdateEvent.WallFitting_end) {\n\t\t\treturn CardContainerUpdate.FETCH;\n\t\t}\n\t\tif (event == CardDataUpdateEvent.LastPOLoaded) {\n\t\t\treturn CardContainerUpdate.FETCH;\n\t\t}\n\t\treturn await super.CheckUpdate(event, eventParameters, context);\n\t}\n\n\tpublic async Fetch(context: CardContainerContext): Promise<FetchResult> {\n\t\tconst onlyPrimaryWalls = (context.settings.Fetch.parameters[\"only-primary-walls\"] as boolean | undefined) || false;\n\t\treturn await CommunicationMessageService.getFurnplanWallsDoorsWindowsAndUtilities(false, onlyPrimaryWalls);\n\t}\n\n\tpublic Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n\t\tconst filtered: {txt: string, \"level-key\": number, instanceIdent: number}[] = [];\n\t\tconst prefix = LocaleService.translate(\"6101\", \"\");\n\t\tfor (let index = 0; index < unfiltered.length; ++index) {\n\t\t\tconst letterIndex = index % 26;\n\t\t\tconst letter = String.fromCharCode('A'.charCodeAt(0) + letterIndex);\n\t\t\tconst suffix = unfiltered.length > 1 ? (\" \" + letter) : \"\";\n\n\t\t\tfiltered.push({\n\t\t\t\ttxt: prefix + suffix,\n\t\t\t\t\"level-key\": unfiltered[index][\"guid\"],\n\t\t\t\tinstanceIdent: unfiltered[index][\"ii\"]\n\t\t\t});\n\t\t}\n\t\treturn filtered;\n\t}\n\n\tpublic CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n\t\tconst levels = super.CreateCards(filtered, context);\n\t\tlevels.clear();\n\n\t\tconst cards: CardData[] = [];\n\t\tfor (const level of filtered as {txt: string, \"level-key\": number, instanceIdent: number}[]) {\n\t\t\tcards.push({\n\t\t\t\ttxt: {\n\t\t\t\t\ttitle: level.txt\n\t\t\t\t},\n\t\t\t\tclick: {\n\t\t\t\t\t\"previous-level-key\": \"\",\n\t\t\t\t\t\"level-key\": level[\"level-key\"],\n\t\t\t\t\t\"next-level-key\": \"\"\n\t\t\t\t},\n\t\t\t\tadditional: {\n\t\t\t\t\tinstanceIdent: level.instanceIdent\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tlevels.set(\"root\", {\n\t\t\ttitle: \"\",\n\t\t\tcards: cards\n\t\t});\n\t\treturn levels;\n\t}\n\n\tpublic async Click(card: CardData, context: CardContainerContext): Promise<void> {\n\t\tif(context.settings.Fetch.parameters[\"fit-viewport-after-selection\"]) {\n\t\t\tconst instanceIdent = <number>card.additional?.instanceIdent || -1\n\t\t\tif(instanceIdent !== -1) {\n\t\t\t\tCommunicationMessageService.fitCamera({\n\t\t\t\t\tinstanceIdents: [instanceIdent]\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn super.Click(card, context);\n\t}\n}\nCardDataService.RegisterAppConnection(new WallSelectionCardAppConnection());\n","\nimport { property } from \"lit/decorators.js\";\nimport { AsyncBaseElement } from \"../standard/base/async.base.component\";\nimport { ConfiguratorFormBaseElement } from \"./configurator-form-elements/configurator.form.base.element.component\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../models/event-handler/event.handler.model\";\nimport { EventFactoryService } from \"@dh-software/webui-api\";\nimport { IConfiguratorApiData } from \"@dh-software/webui-types\";\nimport { ConfiguratorApiDataService } from \"../../utils/configurator-api.data.service\";\nimport type { ComponentStateHandlerMap } from \"../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-configurator-form:refetch\": Record<string, never>;\n }\n}\n\nexport interface FormElementInfo {\n tag: string,\n name?: string,\n names?: Array<string>,\n attributes?: {\n [attribute: string]: unknown\n },\n styleVars?: {\n [styleVar: string]: string\n }\n}\n\nexport interface FormElementsWrapper {\n title?: string,\n \"enable-toggle\"?: boolean,\n \"clickable\"?: boolean,\n elements: Array<FormElementInfo | FormElementsWrapper>,\n \"inline-elements\"?: Array<FormElementInfo | FormElementsWrapper>,\n styleVars?: {\n [styleVar: string]: string\n }\n \"closed-icon\"?: string,\n \"open-icon\"?: string,\n \"starts-closed\"?: boolean\n}\n\n\nexport abstract class ConfiguratorFormBase extends AsyncBaseElement<undefined, IConfiguratorApiData> {\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-configurator-form:refetch\": async () => { await this.Refetch(); },\n };\n // _ _\n // _ __ _ __ ___ _ __ ___ _ __| |_(_) ___ ___\n // | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n // | |_) | | | (_) | |_) | __/ | | |_| | __/\\__ \\\n // | .__/|_| \\___/| .__/ \\___|_| \\__|_|\\___||___/\n // |_| |_|\n @property({ type: Object, reflect: false, attribute: \"list-tags\" })\n public listTags: { [groupName: string]: string } = {\n default: \"fv-configurator-form-element-list\"\n };\n\n @property({ type: Object, reflect: false, attribute: \"list-properties\" })\n public listProperties: { [groupName: string]: { [attribute: string]: unknown } } = {};\n\n @property({ type: Object, reflect: false, attribute: \"list-styles\" })\n public listStyles: { [groupName: string]: { [styleVar: string]: string } } = {};\n\n @property({ type: Boolean, reflect: true })\n public refresh = false;\n\n @property({ type: Object, reflect: true, attribute: \"events\" })\n public events: {\n hide?: Array<EventHandlerEvent>,\n show?: Array<EventHandlerEvent>\n } = {};\n\n @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n public decimalDivider: \".\" | \",\" = \".\";\n\n @property({ type: Number, reflect: true, attribute: \"float-digits\" })\n public floatDigits = 2;\n\n @property({ type: Number, reflect: true, attribute: \"value-info-timeout\" })\n public valueInfoTimeout = 3500;\n\n @property({ type: Boolean, reflect: true, attribute: \"prevent-view-recenter\" })\n public preventViewRecenter = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"prevent-refresh\" })\n public preventRefresh = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"prevent-regen-all\" })\n public preventRegenAll = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"force-read-groups-on-refresh\" })\n public forceReadGroupsOnRefresh = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"refresh-on-hide-state-change\" })\n public refreshOnHideStateChange = false;\n\n @property({ type: Array, reflect: true, attribute: \"update-events\" })\n public updateEvents: Array<EventHandlerEvent> = [];\n\n @property({ type: Boolean, reflect: true, attribute: \"group-title-toggles\" })\n public groupTitleToggles = false;\n\n\n @property({ type: String, reflect: false })\n public elementNamePrefix = \"\";\n\n\n private static AllFormComponents: ConfiguratorFormBase[] = [];\n connectedCallback() {\n super.connectedCallback();\n ConfiguratorFormBase.AllFormComponents.push(this);\n }\n disconnectedCallback() {\n const index = ConfiguratorFormBase.AllFormComponents.indexOf(this);\n if (index != -1) {\n ConfiguratorFormBase.AllFormComponents.splice(index, 1);\n }\n super.disconnectedCallback();\n }\n\n\n // _ _\n // ___ ___ _ __ ___| |_ _ __ _ _ ___| |_ ___ _ __\n // / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n // | (_| (_) | | | \\__ \\ |_| | | |_| | (__| || (_) | |\n // \\___\\___/|_| |_|___/\\__|_| \\__,_|\\___|\\__\\___/|_|\n constructor() {\n super();\n\n this.addHideStateUpdatedEventListener(async (value: boolean) => {\n if (value) {\n if (this.events.hide) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.events.hide\n }));\n }\n }\n else {\n if (this.events.show) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.events.show\n }));\n }\n }\n\n if (this.refreshOnHideStateChange) {\n await this.Refetch();\n // await ConfiguratorFormBase.Refresh(\"\", this, true, this.preventRefresh, this.preventRegenAll);\n await this.updateComplete;\n return;\n }\n\n this.requestUpdate();\n await this.updateComplete;\n });\n }\n\n\n\n // __ _ _\n // / _| ___| |_ ___| |__\n // | |_ / _ \\ __/ __| '_ \\\n // | _| __/ || (__| | | |\n // |_| \\___|\\__\\___|_| |_|\n protected async Fetch(parameters: undefined): Promise<IConfiguratorApiData | undefined> {\n return ConfiguratorApiDataService.Fetch(this.preventRefresh, this.preventRegenAll);\n }\n\n\n // _ _\n // _ _ _ __ __| | __ _| |_ ___\n // | | | | '_ \\ / _` |/ _` | __/ _ \\\n // | |_| | |_) | (_| | (_| | || __/\n // \\__,_| .__/ \\__,_|\\__,_|\\__\\___|\n // |_|\n public async UpdateAll(data_: IConfiguratorApiData | undefined = undefined, preventUpdateEvents_ = false) {\n if (data_) {\n // if (JSON.stringify(ConfiguratorApiDataService.Data) == JSON.stringify(data_)) {\n // return;\n // }\n\n if (!this.forceReadGroupsOnRefresh) {\n ConfiguratorApiDataService.Data = data_;\n }\n }\n\n const doFetch = data_ == undefined || this.forceReadGroupsOnRefresh;\n if (doFetch) {\n await this.Refetch();\n }\n else {\n this.requestUpdate();\n await this.updateComplete;\n }\n\n if (preventUpdateEvents_) {\n return;\n }\n\n this.triggerUpdateEvents();\n }\n\n public static async Refresh(fetch_ = true, preventRefresh_ = false, preventRegenAll_ = false, preventFormRender_ = false, triggerUpdateEvents_ = false): Promise<void> {\n if (fetch_) {\n const previousData = ConfiguratorApiDataService.Data;\n const currentData = await ConfiguratorApiDataService.Fetch(preventRefresh_, preventRegenAll_);\n\n if (JSON.stringify(currentData) == JSON.stringify(previousData)) {\n return;// prevent further\n }\n }\n\n if (!preventFormRender_) {\n const promises = [];\n for (const form of ConfiguratorFormBase.AllFormComponents) {\n promises.push(form.UpdateAll(ConfiguratorApiDataService.Data, true));// trigger all updates in parallel\n }\n\n for (const promise of promises) {\n await promise;\n }\n }\n\n await new Promise(requestAnimationFrame); // LL [2026|January|07] fix accordion + configurator form, await one frame before triggering the update events (e.g accordion height update)\n\n if (triggerUpdateEvents_) {\n ConfiguratorFormBase.AllFormComponents.forEach((form) => {\n form.triggerUpdateEvents();\n });\n }\n }\n\n public triggerUpdateEvents(): void {\n if (this.updateEvents && this.updateEvents.length > 0) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.updateEvents\n }));\n }\n }\n\n public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n super.attributeChangedCallback(name, _old, value);\n if (name === \"refresh\") {\n this.Refetch();\n }\n }\n\n\n private GetPrefixedName(name_: string | undefined): string {\n if (name_ == undefined) {\n return \"\";\n }\n if (this.elementNamePrefix.length < 1) {\n return name_;\n }\n return /*this.elementNamePrefix + */name_;\n }\n\n\n // _ _ _ _\n // ___| | ___ _ __ ___ ___ _ __ | |_ ___ _ __ ___ __ _| |_(_) ___ _ __\n // / _ \\ |/ _ \\ '_ ` _ \\ / _ \\ '_ \\| __| / __| '__/ _ \\/ _` | __| |/ _ \\| '_ \\\n // | __/ | __/ | | | | | __/ | | | |_ | (__| | | __/ (_| | |_| | (_) | | | |\n // \\___|_|\\___|_| |_| |_|\\___|_| |_|\\__| \\___|_| \\___|\\__,_|\\__|_|\\___/|_| |_|\n public static CreateElement(formElement_: FormElementInfo, group_: string, form_: ConfiguratorFormBase, groupReference_: string): ConfiguratorFormBaseElement {\n const elementInfo = formElement_ as FormElementInfo;\n const component: ConfiguratorFormBaseElement = document.createElement(elementInfo.tag) as ConfiguratorFormBaseElement;\n\n const elementName = form_.GetPrefixedName(elementInfo.name);\n const elementNames = elementInfo.names ? elementInfo.names.map(name => form_.GetPrefixedName(name)) : [];\n component.Form = form_;\n // component.InitData(ConfiguratorApiDataService.Data, form_);\n\n component.id = \"id-\" + elementName;\n component.name = elementName;\n component.names = elementNames;\n component.group = group_;\n component.groupReference = groupReference_;\n\n component.decimalDivider = form_.decimalDivider;\n component.floatDigits = form_.floatDigits;\n component.valueInfoTimeout = form_.valueInfoTimeout;\n\n if (elementInfo.attributes) {\n const attributes = Object.keys(elementInfo.attributes);\n for (const attribute of attributes) {\n const attributeValue = elementInfo.attributes[attribute];\n\n if (typeof attributeValue === \"boolean\" && attributeValue) {\n component.setAttribute(attribute, \"\");\n }\n else if (typeof attributeValue === \"boolean\" && !attributeValue) {\n component.removeAttribute(attribute);\n }\n else if (typeof attributeValue === \"object\") {\n component.setAttribute(attribute, JSON.stringify(attributeValue));\n }\n else {\n component.setAttribute(attribute, attributeValue as string);\n }\n }\n }\n\n if (elementInfo.styleVars) {\n const vars = Object.keys(elementInfo.styleVars);\n for (const variable of vars) {\n component.style.setProperty(variable, elementInfo.styleVars[variable]);\n }\n }\n\n if (component == undefined/* || component.Refresh == undefined*/) {\n console.error(\"configurator.form.base> No component!\");\n }\n\n // if (form_.refresh) {\n // component.Refresh(ConfiguratorApiDataService.Data, form_.preventViewRecenter);\n // }\n return component;\n }\n}\n\n// Trigger a global form refresh on external events. Lives here instead of in\n// ConfiguratorApiDataService to avoid a service ↔ component cycle.\nEventFactoryService.LastPOLoaded.register(() => {\n ConfiguratorFormBase.Refresh(true, true, true, false, true);\n});\nEventFactoryService.RefreshPropertyPanel.register(() => {\n ConfiguratorFormBase.Refresh(true, true, true, false, true);\n});\nEventFactoryService.SendEvent.register((eventId_) => {\n if (eventId_ == 55665533) {\n ConfiguratorFormBase.Refresh(true, true, true, false, true);\n }\n});\nEventFactoryService.WallFitting_end.register(() => {\n ConfiguratorFormBase.Refresh(true, true, true, false, true);\n});\n","import {\n BaseCardDataAppConnection,\n} from \"./base.card.app.connection\";\nimport {\n CardDataService,\n CardDataServiceAction,\n CheckSpecialInteractionContextParameters,\n CheckUpdateParameters,\n ClickCardButtonParameters,\n ClickCardParameters,\n CreateCardsParameters,\n FetchParameters,\n FilterParameters,\n GetFilterSelectionAdditionalParamsParameters,\n GetFilterSelectionStrategyParameters,\n InitFilterSelectionParamsParameters,\n TextFieldChangedParameters,\n} from \"../card.data.service\";\nimport {\n CardContainerContext,\n CardContainerSpecialInteractionContext,\n CardContainerUpdate,\n CardData,\n CardDataLevel,\n CardDataLevelKey,\n CardDataUpdateEvent,\n CardFetchMethod,\n FetchResult,\n FilterSelectionStrategy,\n} from \"../../models/card-container\";\nimport { BaseInput } from \"../../components/standard/input/base/base-input\";\nimport { CardContainerSettings } from \"../../components/standard/card-container/internals\";\nimport { ConfiguratorFormBase } from \"../../components/configurator/configurator.form.base\";\nimport { ComponentService } from \"../../utils/component.service\";\n\nexport class ConfiguratorFormFilterCardAppConnection extends BaseCardDataAppConnection {\n constructor() {\n super();\n this.Method = CardFetchMethod.ConfiguratorFormFilter;\n }\n\n private derefContextMethod(context: CardContainerContext): CardContainerContext {\n const result = {\n settings: new CardContainerSettings(),\n states: context.states,\n filter: context.filter,\n cards: context.cards,\n dispatchEvent: context.dispatchEvent,\n dispatchAsyncEvent: context.dispatchAsyncEvent\n };\n result.settings.Initialize(context.settings.ToJson() as any);\n return result;\n }\n\n private GetForms(context: CardContainerContext): ConfiguratorFormBase[] {\n if (context.settings.Fetch.parameters.targets == undefined) {\n return [];\n }\n const forms: ConfiguratorFormBase[] = [];\n for (const target of context.settings.Fetch.parameters.targets as { tag: string, query: string }[]) {\n for (const found of ComponentService.findAll(target.tag, target.query)) {\n if (found instanceof ConfiguratorFormBase) {\n forms.push(found);\n }\n }\n }\n return forms;\n }\n\n private SetConfiguratorFormPrefixFromFilter(context: CardContainerContext) {\n if (context.filter) {\n let prefix = context.filter.Join(\"-\");\n if (prefix.length > 0) {\n prefix += \"-\";\n const forms = this.GetForms(context);\n for (const form of forms) {\n form.elementNamePrefix = prefix;\n }\n }\n }\n }\n\n public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n const checkUpdateParameters: CheckUpdateParameters = {\n event,\n eventParameters,\n context: this.derefContextMethod(context)\n };\n const update = await CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.CheckUpdate, checkUpdateParameters);\n // if (update == CardContainerUpdate.FETCH || update == CardContainerUpdate.FILTER) {\n // this.SetConfiguratorFormPrefixFromFilter(context);\n // }\n if (event == CardDataUpdateEvent.WallFitting_end || event == CardDataUpdateEvent.LastPOLoaded || event == CardDataUpdateEvent.DeleteLO_after) {\n // EventHandlerService.dispatchAsyncEvent(\"refresh-all-configurator-forms\", {});\n }\n return update;\n }\n public CheckSpecialInteractionContext(context: CardContainerContext): Promise<CardContainerSpecialInteractionContext> {\n const checkUpdateParameters: CheckSpecialInteractionContextParameters = {\n context: this.derefContextMethod(context)\n };\n return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.CheckSpecialInteractionContext, checkUpdateParameters);\n }\n public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n const checkUpdateParameters: FetchParameters = {\n context: this.derefContextMethod(context)\n };\n return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.Fetch, checkUpdateParameters);\n }\n public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n const checkUpdateParameters: FilterParameters = {\n unfiltered, context: this.derefContextMethod(context), active\n };\n return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.Filter, checkUpdateParameters);\n }\n public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const checkUpdateParameters: CreateCardsParameters = {\n filtered,\n context: this.derefContextMethod(context)\n };\n return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.CreateCards, checkUpdateParameters);\n }\n public GetFilterSelectionAdditionalParams(context: CardContainerContext): { [key: string]: unknown; } | undefined {\n const checkUpdateParameters: GetFilterSelectionAdditionalParamsParameters = {\n context: this.derefContextMethod(context)\n };\n return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.GetFilterSelectionAdditionalParams, checkUpdateParameters);\n }\n public GetFilterSelectionStrategy(context: CardContainerContext): FilterSelectionStrategy {\n const checkUpdateParameters: GetFilterSelectionStrategyParameters = {\n context: this.derefContextMethod(context)\n };\n return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.GetFilterSelectionStrategy, checkUpdateParameters);\n }\n public InitFilterSelectionParams(context: CardContainerContext): void {\n const checkUpdateParameters: InitFilterSelectionParamsParameters = {\n context: this.derefContextMethod(context)\n };\n return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.InitFilterSelectionParams, checkUpdateParameters);\n }\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n const checkUpdateParameters: ClickCardParameters = {\n card,\n context: this.derefContextMethod(context)\n };\n const result = await CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.ClickCard, checkUpdateParameters);\n this.SetConfiguratorFormPrefixFromFilter(context);\n return result;\n }\n public ClickCardButton(data: { [key: string]: unknown; } | undefined, card: CardData, context: CardContainerContext): Promise<void> {\n const checkUpdateParameters: ClickCardButtonParameters = {\n data, card,\n context: this.derefContextMethod(context)\n };\n return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.ClickCardButton, checkUpdateParameters);\n }\n public TextFieldChanged(card: CardData, context: CardContainerContext, field: BaseInput<any>): Promise<void> {\n const checkUpdateParameters: TextFieldChangedParameters = {\n card,\n context: this.derefContextMethod(context),\n field\n };\n return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.TextFieldChanged, checkUpdateParameters);\n }\n}\nCardDataService.RegisterAppConnection(new ConfiguratorFormFilterCardAppConnection());","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardFetchMethod, FetchResult, CardDataLevelKey, CardDataLevel, CardContainerContext, CardData } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport { ComponentService, ComponentServiceSearchParams } from \"../component.service\";\nimport { BaseCardContainer } from \"../../components/standard/card-container/base/base-card-container\";\nimport { IArticleData } from \"@dh-software/webui-types\";\nimport { ArticlesByCategoriesCardAppConnection, ArticlesByCategoriesFetchResult } from \"./articles-by-categories.card.app.connection\";\n\n\ninterface CrossArticleHostSelectionFetchResult extends ArticlesByCategoriesFetchResult {\n \"host-articles\": IArticleData[],\n \"client\": CardData\n}\n\nexport class CrossArticleHostSelectionCardAppConnection<T extends CrossArticleHostSelectionFetchResult> extends ArticlesByCategoriesCardAppConnection<T> {\n constructor() {\n super();\n this.Method = CardFetchMethod.CrossArticleHostSelection;\n }\n\n // keyed by the SOURCE container element (stable across modal/page open-close), not the\n // host-selection context (which is recreated on close -> the original desync that re-showed)\n private lastShownForClickOf = new WeakMap<BaseCardContainer, CardData | undefined>();\n\n public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n const selector = context.settings.Fetch.parameters[\"cross-article-selection-selector\"] as ComponentServiceSearchParams;\n if (selector == undefined)\n {\n return super.Fetch(context);\n }\n\n const element = ComponentService.find(selector.tag, selector.query) as BaseCardContainer;\n if (element.LastClicked == undefined || element.LastClicked.click == undefined) {\n return super.Fetch(context);\n }\n\n const clickdata = element.LastClicked.click;\n if (clickdata.program == undefined || clickdata.manufacturer == undefined || clickdata.nr == undefined) {\n return super.Fetch(context);\n }\n\n const filterVzElements = context.settings.Fetch.parameters[\"filter-vz-elements\"] !== false; // default ON; layout sets false to disable\n const hostList = await CommunicationMessageService.getKataPageHostListByCrossArticle(clickdata.program as string, clickdata.manufacturer as string, clickdata.nr as string, filterVzElements);\n console.log(\"possible hosts:\", hostList);\n if (hostList.Modules == undefined) {\n return super.Fetch(context);\n }\n\n const articles: IArticleData[] = [];\n for (const module of hostList.Modules) {\n if (module.Articles == undefined) {\n continue;\n }\n for (const article of module.Articles) {\n if (Array.isArray(article)) {\n articles.push(...article);\n }\n else {\n articles.push(article);\n }\n }\n\n if (module.hostsInScene) {\n return super.Fetch(context);\n }\n }\n\n if (context.settings.Behaviour[\"connection-defined-hide-show\"]) {\n const currentLastClicked = element.LastClicked;\n const lastActedOn = this.lastShownForClickOf.get(element);\n this.lastShownForClickOf.set(element, currentLastClicked);\n\n // element.LastClicked only changes on a genuine click in the source container, so a\n // difference here means \"a card was just clicked\" - never a stray refetch / visibility\n // change / page reopen / initial render.\n if (lastActedOn != currentLastClicked) {\n context.dispatchEvent(new CustomEvent(\"modifyhideelement\", { detail: articles.length === 0 }));\n }\n }\n\n const result = await super.Fetch(context);\n result[\"host-articles\"] = articles;\n result[\"client\"] = element.LastClicked;\n return result;\n }\n\n public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n const filtered = super.Filter(unfiltered, context, active);\n filtered[\"host-articles\"] = unfiltered[\"host-articles\"];\n filtered[\"client\"] = unfiltered[\"client\"];\n return filtered;\n }\n\n public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n const result = this.CreateCardsFromArticles(filtered[\"host-articles\"], filtered, context);\n const level = result.get(context.settings.Fetch[\"root-level\"]);\n if (level != undefined) {\n for (const card of level.cards) {\n if (card.additional == undefined) {\n card.additional = {\n \"client\": filtered[\"client\"]\n };\n continue;\n }\n card.additional[\"client\"] = filtered[\"client\"];\n }\n }\n return result;\n }\n\n public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n if (card.additional == undefined || card.additional.client == undefined) {\n return;\n }\n\n const clientCard: CardData = card.additional.client;\n if (clientCard.click == undefined) {\n return;\n }\n\n const client = {\n article: clientCard.click.nr as string,\n manu: clientCard.click.manufacturer as string,\n prog: clientCard.click.program as string\n };\n await this.loadArticle(card, context, [client]);\n\n // Placement done: close the host-selection modal by driving the slotted\n // card-container back to hidden - the same channel Fetch() uses to open it\n // (modifyhideelement -> hideElement -> mask -> modal.hide()). Gated by the\n // connection-driven show/hide mechanism AND a dedicated opt-out flag (default\n // ON) so a future layout can deliberately keep the modal open after a click.\n if (context.settings.Behaviour[\"connection-defined-hide-show\"]\n && context.settings.Behaviour[\"auto-hide-after-click\"] !== false) {\n context.dispatchEvent(new CustomEvent(\"modifyhideelement\", { detail: true }));\n }\n\n // await super.Click(card, context);// TODO: replace with new function\n // if (!card.click) {\n // return;\n // }\n // const article = card.click.nr as string;\n // const manu = card.click.manufacturer as string;\n // const prog = card.click.program as string;\n\n // if (card.additional == undefined || card.additional.client == undefined) {\n // return;\n // }\n\n // const clientCard: CardData = card.additional.client;\n // if (clientCard.click == undefined) {\n // return;\n // }\n\n // const client = {\n // article: clientCard.click.nr,\n // manu: clientCard.click.manufacturer,\n // prog: clientCard.click.program\n // };\n\n // await CommunicationMessageService.dhTodo([\n // \"0\",\n // {\n // manu: manu,\n // kataManu: manu,\n // prog: prog,\n // params: [article],\n // crossArticleClientsToUse: [client]\n // }\n // ]);\n // await CommunicationMessageService.placeCrossArticleHostWithClients({ manu, prog, article }, [client]);\n }\n}\nCardDataService.RegisterAppConnection(new CrossArticleHostSelectionCardAppConnection());","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./program-selection-program.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { IKatalogLevelEntry } from \"./program-selection.component\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\n@customElement(\"fv-program-selection-program\")\nexport class ProgramSelectionProgramComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n public category?: IKatalogLevelEntry;\n public staticColumn?: number;\n\n @property({ type: Object, attribute: \"parent-level\" })\n public parentLevel: IKatalogLevelEntry = {\n id: \"\",\n index: \"\",\n name: \"\",\n entries: [],\n programImageFilter: [],\n textInfo: {}\n };\n\n @property({ type: Object, attribute: \"level\" })\n public level: IKatalogLevelEntry = {\n id: \"\",\n index: \"\",\n name: \"\",\n entries: [],\n programImageFilter: [],\n textInfo: {}\n };\n\n @property({ type: Boolean, attribute: \"info-button\" })\n public infoButton = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"image-zoom-on-hover\" })\n public imageZoomOnHover = false;\n\n\n private activeImageIndex = 0;\n\n\n constructor() {\n super();\n\n this.addEventListener(\"click\", () => {\n if (this.level.entries.length > 0) return;\n if (this.level.programImageFilter.length < 1) return;\n this.dispatchEvent(new CustomEvent(\"program-selected\", {\n detail: {\n parentLevel: this.parentLevel.id,\n level: this.level.index,\n category: this.category?.index\n }, bubbles: true, composed: true\n }));\n });\n }\n\n private infoIconClicked(e: Event) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent(\"program-info-button-clicked\", {\n detail: {\n parentLevel: this.parentLevel.id,\n category: this.category?.index,\n program: this.level.index,\n image: {\n programFilter: this.level.programImageFilter,\n activeImage: this.activeImageIndex\n },\n textInfo: this.level.textInfo,\n name: this.level.name\n }, bubbles: true, composed: true\n }));\n }\n\n protected render(): TemplateResult<1> {\n if (this.staticColumn) {\n this.classList.add(\"static-columns\");\n }\n else {\n this.classList.remove(\"static-columns\");\n }\n return html`\n <div class=\"program-container\">\n <div class=\"program-img-container\">\n <fv-image class=\"use-img ${this.imageZoomOnHover ? \"zoom-on-hover\" : \"\"}\" .programFilter=\"${this.level.programImageFilter}\" kataId=\"${this.level.id}\"></fv-image>\n <div class=\"program-title-container\">\n <div class=\"program-title\">${this.level.name}</div>\n ${this.infoButton ? html`\n <div class=\"program-info-button-container\">\n <fv-info-button\n @info-button-clicked=\"${this.infoIconClicked}\"\n title=\"${LocaleService.translate(\"21015\")}\"\n class=\"program-info-button\">\n </fv-info-button>\n </div>\n ` : html``}\n </div>\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./program-selection-level.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { IKatalogLevelEntry } from \"./program-selection.component\";\nimport { ProgramSelectionProgramComponent } from \"./program-selection-program.component\";\n\n\n@customElement(\"fv-program-selection-level\")\nexport class ProgramSelectionLevelComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n public category?: IKatalogLevelEntry;\n public staticColumn?: number;\n\n @property({ type: Object, attribute: \"level\" })\n public level: IKatalogLevelEntry = {\n id: \"\",\n index: \"\",\n name: \"\",\n entries: [],\n programImageFilter: [],\n textInfo: {}\n };\n\n @property({ type: String, attribute: \"grid-area-prefix\" })\n public gridAreaPrefix = \"\";\n\n @property({ type: Boolean, attribute: \"info-button\" })\n public infoButton = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"level-one-selection\" })\n public levelOneSelection = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"image-zoom-on-hover\" })\n public imageZoomOnHover = false;\n\n constructor() {\n super();\n }\n\n protected render(): TemplateResult<1> {\n return html`\n <div class=\"level-container\">\n <div class=\"level-title\" i18n=\"${this.level.id}\">${this.level.name}</div>\n <div class=\"programs-outer-container\">\n <div class=\"programs-container\">\n ${this.levelOneSelection && this.level.id != \"onlyLevelOne\" ? html`\n <div class=\"program-container\">\n <div class=\"program-img-container\">\n <fv-image class=\"use-img ${this.imageZoomOnHover ? \"zoom-on-hover\" : \"\"}\" .programFilter=\"${this.level.programImageFilter}\" kataId=\"${this.level.id}\"></fv-image>\n </div>\n </div>` : html`\n ${this.level.entries.map((level) => {\n const programSelectionProgram = new ProgramSelectionProgramComponent();\n programSelectionProgram.staticColumn = this.staticColumn;\n programSelectionProgram.infoButton = this.infoButton;\n programSelectionProgram.parentLevel = this.level;\n programSelectionProgram.level = level;\n programSelectionProgram.category = this.level;\n programSelectionProgram.imageZoomOnHover = this.imageZoomOnHover;\n return programSelectionProgram;\n })}`\n }\n </div>\n </div>\n <slot></slot>\n </div>\n `;\n }\n}\n","import { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./program-selection.component.sass?inline\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport \"./program-selection-level.component\";\nimport { BaseMaskElement } from \"../base/mask.component\";\nimport { EventHandlerDispatchEvent, EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { ProgramSelectionLevelComponent } from \"./program-selection-level.component\";\nimport { ImageService, IProgramImage, IProgramImageFilter } from \"../../../utils/image.service\";\nimport { ProgramSelectionHelper } from \"../../../utils/program-selection.helper\";\nimport { ProgramSelectionConfirmationMaskComponent } from \"../modal/masks\";\nimport { IDeferHelperClass } from \"../../../utils/defer-helper.class\";\nimport { IMediaImage } from \"../../../utils/image.service\"\nimport { CommunicationMessageService, WebViewerService } from \"@dh-software/webui-api\";\nimport {LoadingModalComponent} from \"../loading\";\nimport { CardComponent } from \"../cards\";\nimport { MultiLevelCardContainerComponent } from \"../card-container\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\n\nexport interface IKataTreeLevelEntry {\n id: string,\n program?: string,\n name: string,\n level2?: Array<{ id: string, program: string, name: string }>\n}\n\nexport interface IKatalogLevelEntry {\n id: string,\n index: string,\n name: string,\n entries: KatalogEnvironment,\n programImageFilter: Array<string>,\n textInfo: { text?: string, heading?: string, subheading?: string }\n}\n\n\n\nexport type KatalogEnvironment = Array<IKatalogLevelEntry>;\n\n@customElement(\"fv-program-selection\")\nexport class ProgramSelectionComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\".levels-container\")\n private _levelsContainer?: HTMLDivElement;\n\n @query(\"fv-multi-level-card-container.program-selection\")\n private _cardContainer?: MultiLevelCardContainerComponent;\n\n @property({ type: Number, reflect: true, attribute: \"group-columns\" })\n public groupColumns = 2;\n\n @property({ type: Number, reflect: true, attribute: \"program-columns\" })\n public programColumns = 2;\n\n @property({ type: Boolean, reflect: true, attribute: \"info-buttons\" })\n public infoButtons = false;\n\n @property({ type: String, reflect: true, attribute: \"close-modal-query\" })\n public closeModalQuery = \".general-modal\";\n\n @property({ type: String, reflect: true, attribute: \"info-modal-query\" })\n public infoModalQuery = \".general-modal\";\n\n @property({ type: String, reflect: true, attribute: \"info-mask\" })\n public infoMask = \"program-information\";\n\n @property({ type: Array, reflect: true, attribute: \"on-selection-events\" })\n public onSelectionEvents = new Array<EventHandlerEvent>();\n\n @property({ type: Number, reflect: true, attribute: \"active-step-after-selection\" })\n public activeStepAfterSelection = 0;\n\n @property({ type: Boolean, reflect: true, attribute: \"override-initial-article\" })\n public overrideInitialArticle = false;\n\n @property({ type: String, reflect: true, attribute: \"template-id\" })\n public templateId: string = \"program-selection\";\n\n @property({ type: Boolean, reflect: true, attribute: \"level-one-selection\" })\n public levelOneSelection = false;\n\n @property({ type: String, reflect: true, attribute: \"overview-icon\" })\n private overviewIcon = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"image-zoom-on-hover\" })\n public imageZoomOnHover = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"prevent-confirmation-modal\" })\n public preventConfirmationModal = false;\n\n @property({type: Object, reflect: true, attribute: \"multi-fetch-params\"})\n multiFetchParams = this.DefaultFetchParameters;\n\n private _levelContainerScrollOffset = 0;\n\n @state()\n public mask = \"program-selection\";\n\n @state()\n private isInsideCardGroup = false;\n\n public initialArticle?: string;\n\n private katalogEnvironment: KatalogEnvironment = [];\n private levelOneImages: Array<IMediaImage> = [];\n\n private onProgramInformationClosed = async () => {\n await this._cardContainer?.updateComplete;\n this.isInsideCardGroup = this._cardContainer?.isInsideGroup() ?? false;\n };\n\n get DefaultFetchParameters() {\n return {\n fetch: {\n method: \"program-selection\",\n \"root-level\": \"root\",\n parameters: {\n \"single-program-mode\": true,\n \"close-modal-query\": \".general-modal\",\n \"show-loading-modal\": true,\n \"include-programs-without-images\": false,\n \"override-initial-article\": true,\n \"program-card-modules\": [\n {\n tag: \"fv-info-button\",\n properties: [\n {\n key: \"slot\",\n attribute: true,\n value: \"text-after\"\n }\n ]\n }\n ],\n \"on-selection-events\": [\n {\n id: \"set-attribute\",\n data: {\n attribute: \"active-level-index\",\n value: \"0\",\n components: [\n {\n name: \"fv-card-container-view\",\n selector: \".catalog-card-view\"\n }\n ]\n }\n }\n ]\n }\n },\n card: {\n classes: [\n \"zoom-on-hover\"\n ]\n },\n levels: {\n tag: \"fv-flex-container\",\n \"style-vars-all\": {\n \"--card-width\": \"50%\",\n \"--flex-container-direction\": \"row\",\n \"--flex-container-overflow\": \"hidden auto\",\n \"--card-min-height\": \"345px\",\n \"--flex-container-gap\": \"20px\",\n \"--icon-overflow\": \"hidden\",\n \"--icon-background-size\": \"contain\",\n \"--icon-display\": \"block\",\n \"--icon-img-border-radius\": \"16px\",\n \"--card-title-padding\": \"8px\",\n \"--program-selection-divider-thickness\": \"1px\",\n \"--flex-container-padding\": \"0px 5px 0px 0px\",\n \"--card-text-container-display\": \"flex\",\n \"--card-text-container-justify-content\": \"center\",\n \"--card-text-container-align-items\": \"center\",\n \"--info-button-order\": \"1\",\n \"--card-text-container-padding\": \"0px 6px 0px 6px\",\n \"--img-container-flex\": \"1\",\n \"--flex-container-mobile-align-items\": \"center\",\n \"--flex-container-flex-wrap\": \"wrap\",\n \"--card-max-width\": \"max(48%, 280px)\",\n \"--flex-container-max-width\": \"100%\",\n \"--card-min-width\": \"200px\",\n \"--flex-container-mobile-justify-content\": \"center\",\n \"--card-mobile-min-width\": \"270px\",\n \"--flex-container-justify-content\": \"center\",\n \"--card-hover-zoom\": \"1.03\",\n \"--card-hover-zoom-transition-time\": \"400ms\",\n \"--card-img-container-border-radius\": \"16px\",\n \"--card-isolation\": \"isolate\",\n \"--card-contain\": \"paint\",\n \"--card-img-container-overflow\": \"hidden\",\n \"--card-title-text-color\": \"black\"\n },\n properties: [\n {\n key: \"zoom-on-hover\",\n attribute: true,\n value: false\n }\n ]\n }\n }\n }\n\n constructor() {\n super();\n\n window.addEventListener(\"onCloudId\", this.configureWithUIManuProg.bind(this));\n\n this.addEventListener(\"program-selected\", async (e: CustomEventInit) => {\n await ProgramSelectionHelper.Configure({\n detail: e.detail,\n closeModalQuery: this.closeModalQuery,\n initialArticle: this.initialArticle || \"\",\n activeStepAfterSelection: this.activeStepAfterSelection,\n clearScene: !this.preventConfirmationModal || window.g_configuration.clear_scene_by_basic_planing,\n confirmModal: !this.preventConfirmationModal,\n overrideInitialArticle: this.overrideInitialArticle\n });\n await EventHandlerService.dispatchEventList(this.onSelectionEvents, false);\n });\n\n this.addEventListener(\"info-button-clicked\", ((e: CustomEvent) => {\n const cardTarget = e.composedPath().find(x => x instanceof CardComponent);\n\n if(cardTarget instanceof CardComponent) {\n const entry = cardTarget.data.additional?.entry as { index?: string; textInfo?: { text?: string; heading?: string; subheading?: string } } | undefined;\n const index = entry?.index;\n const data = {\n parentLevel: cardTarget.data.click?.[\"previous-level-key\"],\n category: \"\",\n program: index,\n image: {\n programFilter: [index],\n activeImage: 0\n },\n textInfo: entry?.textInfo ?? {},\n name: cardTarget.data.txt?.title || \"\"\n }\n EventHandlerService.dispatch(\"open-modal\", {\n query: this.infoModalQuery,\n mask: this.infoMask,\n fade: false,\n dimmed: false,\n cancelable: ProgramSelectionHelper.canBeCancelled,\n data: data\n\n });\n }\n }) as EventListener);\n }\n\n disconnectedCallback() {\n document.removeEventListener(\"program-information-closed\", this.onProgramInformationClosed);\n this.configureWithUIManuProg();\n super.disconnectedCallback();\n }\n\n private async init() {\n await WebViewerService.IsAppReady;\n await this.fillKatalogEnvironment();\n const loadingComponent = document.querySelector(\"fv-loading-modal\") as LoadingModalComponent;\n loadingComponent.hide(false, true);\n }\n\n\n protected updated(_changedProperties: PropertyValues): void {\n if (this._cardContainer) {\n this._cardContainer.addEventListener('multi-level-state-changed', ((ev: Event) => {\n const customEvent = ev as CustomEvent;\n this.isInsideCardGroup = customEvent.detail?.isInsideGroup ?? false;\n }) as EventListener);\n }\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues<this>) {\n if (this.overrideInitialArticle) {\n await WebViewerService.IsAppReady;\n await CommunicationMessageService.clearScene();\n }\n await this.init();\n\n await this.updateComplete;\n\n document.addEventListener(\"program-information-closed\", this.onProgramInformationClosed);\n\n\n window.addEventListener('language-changed', (async (ev: CustomEvent) => {\n await this.init();\n const level = this.selectedLevelOne\n if (level) {\n this.selectedLevelOne = this.katalogEnvironment.find(x => x.id === level.id) || this.selectedLevelOne;\n }\n }) as unknown as EventListener);\n super.firstUpdated(_changedProperties);\n }\n\n private async configureWithUIManuProg() {\n const uiManuProg = await CommunicationMessageService.getUserinterfaceManuProg();\n if (uiManuProg && uiManuProg?.uimanu && uiManuProg?.uiprog) {\n await ProgramSelectionHelper.Configure({\n detail: {\n level: uiManuProg.uiprog,\n },\n closeModalQuery: this.closeModalQuery,\n initialArticle: this.initialArticle || \"\",\n activeStepAfterSelection: this.activeStepAfterSelection,\n clearScene: false,\n confirmModal: false,\n overrideInitialArticle: this.overrideInitialArticle\n });\n await EventHandlerService.dispatchEventList(this.onSelectionEvents, false);\n }\n }\n\n private async fillKatalogEnvironment() {\n if (!window) return;\n if (!window.g_article) return;\n if (!window.g_article.manu) return;\n this.katalogEnvironment = [];\n\n const programs: Set<IProgramImageFilter> = new Set();\n const levelOneParents: Set<string> = new Set();\n const levelTree = await CommunicationMessageService.getProgramLevelTree(window.g_article.manu, true);\n\n levelTree.level1.sort((a, b) => a.order - b.order);\n for (const levelOne of levelTree.level1) {\n if (levelOne.level2) {\n levelOne.level2.sort((a, b) => a.order - b.order);\n }\n }\n\n for (const levelOne of levelTree.level1) {\n if (!levelOne.level2 && levelOne.program) {\n programs.add({ program: levelOne.program, kataId: levelOne.id });\n continue;\n }\n for (const levelTwo of levelOne.level2 || []) {\n if (levelTwo.program) {\n levelOneParents.add(levelOne.id);\n programs.add({ program: levelTwo.program, kataId: levelTwo.id });\n }\n }\n }\n\n const onlyLevelOne: IKataTreeLevelEntry = {\n id: \"onlyLevelOne\",\n name: \"\",\n level2: [],\n program: \"\"\n };\n\n const pushToKataTreeList = (level: IKataTreeLevelEntry, images: { [p: string]: IProgramImage }) => {\n if (level.level2 && level.level2.length > 0) {\n this.katalogEnvironment.push(\n {\n id: level.id,\n index: level.program!,\n name: level.name as string,\n entries: level.level2.filter((level2) => {\n return images[level2.program] && (images[level2.program]?.images || []).length > 0;\n }).map((level2) => {\n return {\n id: level2.id,\n index: level2.program!,\n name: level2.name as string,\n entries: [],\n programImageFilter: [level2.program],\n textInfo: {\n text: images[level2.program].text,\n heading: images[level2.program].heading,\n subheading: images[level2.program].subheading\n }\n };\n }),\n programImageFilter: [],\n textInfo: {\n text: \"\",\n heading: \"\",\n subheading: \"\"\n }\n }\n );\n }\n else if (level.program && images[level.program] && onlyLevelOne.level2) {\n onlyLevelOne.level2.push({ id: level.id, program: level.program, name: level.name });\n }\n };\n\n this.levelOneImages = await ImageService.getKataLevelOneMediaImages([...levelOneParents]);\n const programImages = await ImageService.getProgramSelectionImages([...programs]);\n if (programImages) {\n for (const levelOne of levelTree.level1) {\n pushToKataTreeList(levelOne, programImages);\n }\n pushToKataTreeList(onlyLevelOne, programImages);\n }\n if (this.katalogEnvironment.length > 1) {\n const entry = this.katalogEnvironment.find(e => e.id === \"onlyLevelOne\");\n if (entry && entry.name == \"\") {\n entry.name = \"collections\";\n }\n\n this.katalogEnvironment.sort((a, b) => {\n if (a.id === \"onlyLevelOne\") return -1;\n if (b.id === \"onlyLevelOne\") return 1;\n return 0;\n });\n }\n this.requestUpdate();\n }\n\n async openConfirmationModal(defer: IDeferHelperClass) {\n const confirmationModal = this.querySelector(\"fv-program-selection-confirmation\") as ProgramSelectionConfirmationMaskComponent\n confirmationModal.ResponseDefer = defer;\n if (!confirmationModal) {\n defer.resolve([true]);\n return true;\n }\n confirmationModal.active = true;\n const result = await defer as boolean\n confirmationModal.active = false\n return result;\n }\n\n private enableLevelOneSelection(): boolean {\n const hasLevelOneOnlyPrograms = this.katalogEnvironment.some(entry => entry.id === \"onlyLevelOne\");\n return hasLevelOneOnlyPrograms == false && this.levelOneSelection && this.katalogEnvironment.length > 1 && this.levelOneImages.length > 0;\n }\n\n private isLevelOneLevelContainer(): boolean {\n return this.enableLevelOneSelection() && this.selectedLevelOne === undefined;\n }\n\n private selectedLevelOne: IKatalogLevelEntry | undefined = undefined;\n private levelContainerClicked(level: IKatalogLevelEntry) {\n if (this.enableLevelOneSelection()) {\n if (!this.selectedLevelOne || this.selectedLevelOne.id != level.id) {\n this.selectedLevelOne = level;\n this.requestUpdate();\n }\n }\n }\n\n private overviewClicked() {\n this.selectedLevelOne = undefined;\n this.requestUpdate();\n }\n\n private getSubLevel(level: IKatalogLevelEntry) {\n const programSelectionLevel = new ProgramSelectionLevelComponent();\n programSelectionLevel.staticColumn = this.katalogEnvironment.length === 1 || this.selectedLevelOne !== undefined ? 0 : 2;\n programSelectionLevel.infoButton = this.infoButtons;\n programSelectionLevel.levelOneSelection = this.enableLevelOneSelection() && (this.selectedLevelOne != level);\n programSelectionLevel.gridAreaPrefix = \"level\";\n programSelectionLevel.level = level;\n programSelectionLevel.imageZoomOnHover = this.imageZoomOnHover;\n return programSelectionLevel;\n }\n\n private buildLevel(level: IKatalogLevelEntry, index?: number): TemplateResult<1> {\n return html`\n <div class=\"program-selection-level-container ${this.isLevelOneLevelContainer() ? \"program-selection-level-one-container\" : \"\"}\" @click=\"${() => this.levelContainerClicked(level)}\">\n ${this.getSubLevel(level)}\n </div>\n ${index !== undefined && index != this.katalogEnvironment.length - 1 && this.enableLevelOneSelection() == false ? html`\n <div class=\"level-divider-container\" style=\"grid-area: level-divider-${level.index}\">\n <div class=\"level-divider\"></div>\n </div>` : html``}\n `;\n }\n\n private buildLevels(catalogEnvironment: KatalogEnvironment, levelOne?: IKatalogLevelEntry) {\n if (levelOne) {\n return this.buildLevel(levelOne)\n }\n const environmentFilled = catalogEnvironment && catalogEnvironment.length > 0\n\n if (!environmentFilled) {\n return html`\n <slot name=\"loader\"></slot>`\n }\n return catalogEnvironment.map((level, index) => {\n if (level.entries && level.entries.length > 0) {\n return this.buildLevel(level, index);\n }\n })\n }\n\n private buildControlsContainer(): TemplateResult<1> {\n if (!this.selectedLevelOne) return html``\n return html`\n <div class=\"controls-container\">\n <div class=\"overview button\" @click=${this.overviewClicked}>\n <i class=\"icon ${this.overviewIcon ? this.overviewIcon : \"fv-icon-arrow\"}\"></i>\n <div class=\"text\" i18n=\"program.information.overview.button\"></div>\n </div>\n </div>\n `;\n }\n\n protected build(content: TemplateResult = html``): TemplateResult<1> {\n return super.build(html`\n <div class=\"selection-container\">\n <div class=\"selection-header\">\n <slot name=\"before\"></slot>\n <div class=\"selection-title\" i18n=\"program.selection.title\"></div>\n <slot name=\"after\"></slot>\n </div>\n <div class=\"levels-outer-container\">\n <fv-multi-level-card-container class=\"program-selection\" fetch-parameters=\"${JSON.stringify(this.multiFetchParams)}\"></fv-multi-level-card-container>\n </div>\n <div class = \"back-button-container\">\n ${this.buildBackButton()}\n </div>\n ${this.buildControlsContainer()}\n ${content}\n </div>\n `);\n }\n\n private buildBackButton(): TemplateResult<1> {\n return html`<fv-card-container-back-button\n class=\"program-selection-back-button\"\n txt=\"${LocaleService.translate(\"program.information.overview.button\")}\"\n icon = \"fv-icon-arrow\"\n ?hide-element=${!this.isInsideCardGroup}\n .targets=\"${[{\n tag: \"fv-multi-level-card-container\",\n query: \".program-selection\",\n \"hidden-prevents-back\": undefined,\n \"partial-hide-limit-back-to-last\": undefined,\n \"txt-src-prio\": undefined,\n \"prevent-back\": undefined\n }]}\"\n > </fv-card-container-back-button>`;\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`<slot></slot>`);\n }\n}\n","import { BaseElement } from \"../../base/base.component\";\nimport { html, PropertyValues, PropertyValueMap, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from './page-controller.component.sass?inline';\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { EventHandlerService } from \"../../../../utils/event.handler.service\";\nimport { EventHandlerEvent } from \"../../../../models/event-handler/event.handler.model\";\n\n\nexport class PageControllerUpdateControllableItemCount extends CustomEvent<void> {\n constructor() {\n super(\"pagecontrollerupdatecontrollableitemcount\", { bubbles: true, composed: false });\n }\n}\n\nexport interface IPageController extends Element {\n next(): void;\n previous(): void;\n}\n\nexport interface IPageControllableItem extends IPageController {\n // index\n getCount(): number;\n getIndex(): number;\n setIndex(index: number): void;\n\n // viewed\n setViewed?(index: number): void;\n setViewedAll?(viewedAll: boolean): void;\n\n // controls\n showPageControls?(): boolean;\n}\n\n@customElement(\"fv-page-controller\")\nexport class PageControllerComponent extends BaseElement implements IPageController {\n\n static styles = [super.styles || [], unsafeCSS(style)];\n\n @query(\"slot\")\n private _controllerSlot: HTMLSlotElement | undefined;\n\n @property({ type: String, reflect: true, attribute: \"controls-icon\" })\n private controlsIconName = \"fv-icon-arrow-left\";\n\n @property({ type: Boolean, reflect: true, attribute: \"use-buttons\" })\n private useButtons = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"custom-next-button\" })\n private customNextButton = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"custom-previous-button\" })\n private customPreviousButton = false;\n\n @property({ type: Object, reflect: true, attribute: \"events\" })\n public events: {\n \"custom-next\"?: Array<EventHandlerEvent>,\n \"custom-previous\"?: Array<EventHandlerEvent>\n } = {};\n\n private _viewedPages: Set<number> = new Set();\n\n constructor() {\n super();\n\n let _this = this;\n this.addEventListener(\"triggernextpage\", async ()=>{\n await _this.updateComplete;\n _this.next();\n });\n this.addEventListener(\"triggerpreviouspage\", async ()=>{\n await _this.updateComplete;\n _this.previous();\n });\n }\n\n private async onCustomNext(): Promise<void> {\n if (this.events[\"custom-next\"]) {\n await EventHandlerService.dispatchEventList(this.events[\"custom-next\"], false);\n }\n }\n\n private async onCustomPrevious(): Promise<void> {\n if (this.events[\"custom-previous\"]) {\n await EventHandlerService.dispatchEventList(this.events[\"custom-previous\"], false);\n }\n }\n\n public get CustomNextButton(): boolean {\n const events = this.events[\"custom-next\"];\n return this.customNextButton && events !== undefined && events.length > 0;\n }\n\n public get CustomPreviousButton(): boolean {\n const events = this.events[\"custom-previous\"];\n return this.customPreviousButton && events !== undefined && events.length > 0;\n }\n\n public get Items(): IPageControllableItem[] {\n const children = Array.from(this._controllerSlot?.assignedElements() || []);\n return children.filter(this.isControllable);\n }\n\n protected firstUpdated(_changedProperties: PropertyValues<this>) {\n super.firstUpdated(_changedProperties);\n this.addEventListener(\"pagecontrollerupdatecontrollableitemcount\", () => {\n this.requestUpdate();\n });\n }\n\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.updated(_changedProperties);\n\n if (this.Items.length == 1) {\n const child = this.Items[0];\n const numPagesViewed = this._viewedPages.size;\n const numPagesTotal = child.getCount();\n child.setViewedAll?.(numPagesViewed === numPagesTotal);\n }\n }\n\n private buildPageWithIcons(): TemplateResult<1> {\n const { next, previous } = this.getClasses();\n return html`\n <fv-icon\n @click=${previous.custom ? this.onCustomPrevious : this.previous}\n icon=\"${this.controlsIconName}\"\n class=\"${classMap(previous)}\">\n </fv-icon>\n <slot></slot>\n <fv-icon\n @click=${next.custom ? this.onCustomNext : this.next}\n icon=\"${this.controlsIconName}\"\n class=\"${classMap(next)}\">\n </fv-icon>\n `\n }\n\n private buildPageWithButtons(): TemplateResult<1> {\n const { next, previous } = this.getClasses();\n return html`\n <div class=\"page-container\">\n <div class=\"content-container page-item\">\n <div class=\"content-wrapper\">\n <slot></slot>\n </div>\n </div>\n <div class=\"controls-container page-item\">\n <fv-button\n class=\"previous button text bordered ${classMap(previous)}\"\n i18n=\"114\"\n @click=${previous.custom ? this.onCustomPrevious : this.previous}\n icon=\"fv-icon-arrow\">\n </fv-button>\n <fv-button\n class=\"next button text bordered ${classMap(next)}\"\n i18n=\"fv.button.next\"\n @click=${next.custom ? this.onCustomNext : this.next}\n icon=\"fv-icon-arrow mirrored-x\">\n </fv-button>\n </div>\n </div>\n `;\n }\n\n protected render(): TemplateResult<1> {\n return this.useButtons ? this.buildPageWithButtons() : this.buildPageWithIcons();\n }\n\n isControllable(element: Element): element is IPageControllableItem {\n const castObj = (<IPageControllableItem>element);\n return castObj.next !== undefined && castObj.previous !== undefined;\n }\n\n next(): void {\n this.Items.forEach(x => x.next());\n this.requestUpdate();\n }\n\n previous(): void {\n this.Items.forEach(x => x.previous());\n this.requestUpdate();\n }\n\n setViewed(index: number): void {\n this._viewedPages.add(index);\n }\n\n getClasses(): { next: any, previous: any } {\n const data = {\n previous: {\n hidden: true,\n custom: false\n },\n next: {\n flip: !this.useButtons,\n hidden: true,\n custom: false\n }\n }\n\n if (this.Items.length == 1) {\n const child = this.Items[0];\n\n const activeIndex = child.getIndex();\n this.setViewed(activeIndex);\n child.setViewed?.(activeIndex);\n\n const showControls = child.showPageControls?.();\n if (showControls !== false) {\n data.previous.hidden = child.getIndex() <= 0 || child.getCount() === 0\n data.next.hidden = child.getIndex() >= child.getCount() - 1 && child.getCount() !== 0\n }\n else {\n data.previous.hidden = true;\n data.next.hidden = true;\n }\n }\n else if (this.Items.length > 0) {\n data.previous.hidden = this.Items.every(child => child.getIndex() < 0 && child.getCount() != 0);\n data.next.hidden = this.Items.every(child => child.getIndex() > child.getCount() - 1);\n }\n else {\n data.next.hidden = true\n }\n\n if (data.next.hidden && this.CustomNextButton) {\n data.next.custom = true;\n }\n if (data.previous.hidden && this.CustomPreviousButton) {\n data.previous.custom = true;\n }\n\n return data;\n }\n}\n","import { BaseElement } from \"../base/base.component\";\nimport { css, html, PropertyDeclaration, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./image.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { ImageService, IMediaImage } from \"../../../utils/image.service\";\nimport { IPageControllableItem, PageControllerUpdateControllableItemCount } from \"../arrange/page/page-controller.component\"\n\n@customElement(\"fv-image\")\nexport class ImageComponent extends BaseElement implements IPageControllableItem {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Array, reflect: true })\n programFilter: string[] = [];\n\n @property({ type: Number, reflect: true })\n activeIndex: number;\n\n @property({ type: String, reflect: true })\n imageType = \"milieu\";\n\n @property({ type: String, reflect: true })\n kataId: string = \"\";\n\n public _imagePreloadedSources: Array<IMediaImage> = [];\n\n constructor() {\n super();\n this.activeIndex = 0;\n }\n\n async preloadedImageCollection() {\n const programFilters = this.programFilter.map(program => ({ program: program, kataId: this.kataId }));\n this._imagePreloadedSources = await ImageService.getProgramMediaImages(programFilters, this.imageType);\n if (this._imagePreloadedSources.length === 0) {\n this._imagePreloadedSources = await ImageService.getKataLevelOneMediaImages([this.kataId]);\n }\n this.dispatchEvent(new PageControllerUpdateControllableItemCount());\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n await this.preloadedImageCollection();\n super.firstUpdated(_changedProperties);\n }\n\n async scheduleUpdate() {\n await this.preloadedImageCollection();\n return super.scheduleUpdate();\n }\n\n protected render() {\n this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this._imagePreloadedSources.length - 1);\n return html`\n <div style=\"${!this.classList.contains(\"use-img\") ? `background-image: url(${this._imagePreloadedSources[this.activeIndex]?.url});` : \"\"}\">\n ${this.classList.contains(\"use-img\") ? html`<img src=\"${this._imagePreloadedSources[this.activeIndex]?.url}\"/>` : \"\"}\n </div>\n `;\n }\n\n // IPageControllableItem\n\n getCount(): number {\n return this._imagePreloadedSources.length;\n }\n\n getIndex(): number {\n return this.activeIndex;\n }\n\n setIndex(index: number) {\n this.activeIndex = index;\n }\n\n next() {\n this.activeIndex++;\n }\n\n previous() {\n this.activeIndex--;\n }\n}\n","import { BaseElement } from \"../base/base.component\";\nimport { css, html, PropertyDeclaration, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./logo.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface LogoEntry {\n lang: string,\n srcImg: string\n}\n\n@customElement(\"fv-logo\")\nexport class LogoComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Array, reflect: true, attribute: \"logos\" })\n public logos?: LogoEntry[]\n\n @property({ type: String, reflect: true, attribute: \"fallback-language\" })\n public fallbackLanguage = \"de\";\n\n @property({ type: Boolean, reflect: true, attribute: \"use-pricelist-logo\" })\n public usePriceListLogo = false;\n\n private _priceListImage = \"\";\n\n constructor() {\n super();\n }\n\n private async fetchPriceListImageUrl() {\n if (this.usePriceListLogo) {\n const manu = window.g_article.manu.toLowerCase();\n const prog = window.g_article.prog.toLowerCase();\n\n let logoFileName = manu + \"_logo.gif\"; // fallback fp manufacturer image\n const priceReferenceLogo = await CommunicationMessageService.getManufacturerLogoNameFromPriceReference(manu, prog);\n if (priceReferenceLogo !== undefined && priceReferenceLogo?.LogoFileName) {\n logoFileName = priceReferenceLogo.LogoFileName;\n }\n\n const imgSrc = await CommunicationMessageService.getMediaUrl(window.g_article.manu.toLowerCase(), \"\", \"logo_custom\", logoFileName, true, false);\n this._priceListImage = imgSrc;\n }\n }\n\n private getUserLanguage() {\n const url = new URL(window.location.href);\n const language = url.searchParams.has(\"lang\") ? url.searchParams.get(\"lang\") : this.fallbackLanguage;\n return language;\n }\n\n private getLogoPath() {\n if (this.usePriceListLogo) {\n return this._priceListImage;\n }\n const userLang = this.getUserLanguage();\n const logoEntry = this.logos?.find(logo => logo.lang === userLang);\n const logoFallback = this.logos?.find(logo => logo.lang === this.fallbackLanguage);\n const imgSrc = logoEntry ? logoEntry.srcImg : logoFallback ? logoFallback.srcImg : '';\n return imgSrc;\n }\n\n private renderLogoImage() {\n const imgPath = this.getLogoPath();\n return imgPath ? html`\n <div class=\"logo\">\n <img class=\"logo-image\" src=\"${this.getLogoPath()}\"/>\n </div>\n ` : html``;\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n await this.fetchPriceListImageUrl();\n super.firstUpdated(_changedProperties);\n }\n\n async requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n await this.fetchPriceListImageUrl();\n super.requestUpdate(name, oldValue, options);\n }\n\n protected render() {\n return this.renderLogoImage();\n }\n}\n","import {BaseElement} from \"../base/base.component\";\nimport {html, nothing, PropertyValues, unsafeCSS} from \"lit\";\nimport {CommunicationMessageService, EventHandler, EventService} from \"@dh-software/webui-api\";\nimport {ISetManuProgData, ManuProgService} from \"../../../utils/manu-prog.service\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport style from './program-image.component.sass?inline'\n\n@customElement(\"fv-program-image\")\nexport class ProgramImageComponent extends BaseElement {\n\n static styles = [super.styles || [], unsafeCSS(style)];\n\n @state()\n private _logoURL: string = \"\";\n\n connectedCallback() {\n EventService.register(this);\n super.connectedCallback();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n EventService.unregister(this);\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n const manu = await ManuProgService.getManufacturer();\n const prog = await ManuProgService.getProgram();\n await this.fetchLogoURL(manu, prog);\n super.firstUpdated(_changedProperties);\n }\n\n private async fetchLogoURL(newManu: string, newProgram: string) {\n const progImageResponse = await CommunicationMessageService.getPrintLogoPath(newManu, newProgram, newManu);\n if (progImageResponse) {\n this._logoURL = `${window.g_node_url_prefix}${progImageResponse.imgPath}`;\n }\n }\n\n @EventHandler(\"set-manu-prog\")\n private async onManuProgChanged(data: ISetManuProgData) {\n this.fetchLogoURL(data.manu, data.prog);\n }\n\n render() {\n if (!this._logoURL) {\n return nothing\n }\n return html`\n <img src=\"${this._logoURL}\">\n `\n }\n\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport style from \"./program-information.component.sass?inline\";\nimport { BaseMaskElement } from \"../base/mask.component\";\nimport { property, customElement, state } from \"lit/decorators.js\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { LoadingModalComponent } from \"../loading\";\nimport { ProgramInformationComponentImg } from \"./program-information-img.component\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nimport { ImageComponent } from \"../image\";\nimport { ProgramSelectionHelper } from \"../../../utils/program-selection.helper\";\nimport { ManuProgService } from \"../../../utils/manu-prog.service\";\n\ninterface ImageDescriptor {\n programFilter: string[];\n activeImageIndex: number;\n imageType?: string;\n}\n\ntype TextInfoType = { text?: string, heading?: string, subheading?: string }\n\n@customElement(\"fv-program-information\")\nexport class ProgramInformationComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"program-information\";\n\n public initialArticle = \"\";\n\n @property({ type: String, reflect: true, attribute: \"overview-icon\" })\n private overviewIcon = \"\";\n @property({ type: String, reflect: true, attribute: \"configure-icon\" })\n private configureIcon = \"\";\n @property({ type: String, reflect: true, attribute: \"parent-modal-query\" })\n private parentModalQuery = \".general-modal\";\n @property({ type: String, reflect: true, attribute: \"program-selection-modal-query\" })\n private programSelectionModalQuery = \".general-modal\";\n @property({ type: Boolean, reflect: true, attribute: \"auto-detect-grid-rows-and-areas\" })\n private autoDetectGridRowsAndAreas = false;\n @property({ type: Boolean, reflect: true, attribute: \"use-image-controller\" })\n private useImageController = true;\n\n private get program(): string {\n const program = (this.maskData as { [key: string]: unknown })[\"program\"];\n if (program && typeof program === \"string\") {\n return program as string;\n }\n return \"\";\n }\n\n private get category(): string {\n const category = (this.maskData as { [key: string]: unknown })[\"category\"];\n if (category && typeof category === \"string\") {\n return category as string;\n }\n return \"\";\n }\n\n private get parentLevel(): string {\n const parentLevel = (this.maskData as { [key: string]: unknown })[\"parentLevel\"];\n if (parentLevel && typeof parentLevel === \"string\") {\n return parentLevel as string;\n }\n return \"\";\n }\n\n private get image(): ImageDescriptor {\n const image = (this.maskData as { [key: string]: unknown })[\"image\"];\n if (image && typeof image === \"object\") {\n return image as ImageDescriptor;\n }\n return { programFilter: [], activeImageIndex: 0 };\n }\n\n private get textInfo(): TextInfoType {\n const textInfo = (this.maskData as { [key: string]: unknown })[\"textInfo\"];\n if (textInfo) {\n return textInfo as { text?: string, heading?: string, subheading?: string };\n }\n return {};\n }\n\n private async overview() {\n EventHandlerService.dispatch(\"open-modal\", {\n query: this.programSelectionModalQuery,\n mask: \"program-selection\",\n fade: false,\n dimmed: false,\n cancelable: ProgramSelectionHelper.canBeCancelled\n });\n\n this.dispatchClosed();\n\n }\n\n private async configure() {\n await ProgramSelectionHelper.Configure({\n detail: {\n category: this.category,\n level: this.program,\n parentLevel: this.parentLevel\n },\n closeModalQuery: this.parentModalQuery,\n confirmModal: true,\n initialArticle: this.initialArticle || \"\",\n clearScene: true,\n activeStepAfterSelection: 0,\n overrideInitialArticle: true\n })\n }\n\n private dispatchClosed(){\n this.dispatchEvent(new CustomEvent(\"program-information-closed\", {\n bubbles: true,\n composed: true\n }));\n }\n\n constructor() {\n super();\n }\n\n private createProgramInformationImage(controller: boolean) {\n const programInformationImage = new ImageComponent();\n\n programInformationImage.classList.add(\"fill-height\", \"use-img\", \"single\");\n\n\n programInformationImage.programFilter = this.image?.programFilter || [];\n programInformationImage.activeIndex = this.image.activeImageIndex || 0;\n programInformationImage.imageType = this.image?.imageType || \"milieu\";\n\n if (controller) {\n return html`\n <fv-page-controller class=\"fill-height\">\n ${programInformationImage}\n </fv-page-controller>\n `\n }\n return programInformationImage;\n }\n\n\n private get HeadingHTML(): TemplateResult<1> {\n if (this.textInfo && this.textInfo.heading && this.textInfo.heading.length > 0) {\n return html`<div class=\"title information-item\">${this.textInfo.heading}</div>`;\n }\n if (this.maskData && this.maskData.name && (this.maskData.name as string).length > 0) {\n return html`<div class=\"title information-item\">${this.maskData.name}</div>`;\n }\n return html``;\n }\n private CreateTxtHtml(txt: string | undefined, classString?: string): TemplateResult<1> {\n if (txt != undefined && txt.length > 0) {\n return html`<div class=\"${classString != undefined ? classString : \"\"}\">${txt}</div>`;\n }\n return html``;\n }\n\n private AreasData: { [key: string]: { style: string, conditions?: { txtInfo?: string, maskData?: string } } } = {\n \"title\": { style: \"auto\", conditions: { txtInfo: \"heading\", maskData: \"name\" } },\n \"sub-title\": { style: \"auto\", conditions: { txtInfo: \"subheading\" } },\n \"text\": { style: \"auto\", conditions: { txtInfo: \"text\" } },\n \"img-container\": { style: \"1fr\" },\n \"controls-container\": { style: \"auto\" }\n }\n\n show(showModal_?: boolean) {\n super.show(showModal_);\n }\n\n protected build(content: TemplateResult = html``) {\n if (this.autoDetectGridRowsAndAreas) {\n const checkConditions = (conditions?: { txtInfo?: string, maskData?: string }) => {\n if (conditions == undefined) return false;\n\n if (conditions.txtInfo && conditions.txtInfo.length > 0) {\n const txtInfoValue = (this.textInfo as { [key: string]: \"\" | undefined })[conditions.txtInfo];\n if (txtInfoValue != undefined && txtInfoValue.length > 0) {\n return true;\n }\n }\n if (conditions.maskData) {\n const msakDataValue = (this.maskData as { [key: string]: \"\" | undefined })[conditions.maskData];\n if (msakDataValue != undefined && msakDataValue.length > 0) {\n return true;\n }\n }\n return false;\n };\n\n const areas = new Array<string>();\n const rows = new Array<string>();\n const areaNames = Object.keys(this.AreasData);\n for (let index = 0; index < areaNames.length; ++index) {\n const name = areaNames[index];\n const area = this.AreasData[name];\n const noConditions = area.conditions == undefined;\n const areaConditionApplies = noConditions ? false : checkConditions(area.conditions);\n if (noConditions || areaConditionApplies) {\n areas.push(name);\n rows.push(area.style);\n }\n }\n this.style.setProperty(\"--information-container-grid-auto-areas\", \"\\\"\" + areas.join(\"\\\" \\\"\") + \"\\\"\");\n this.style.setProperty(\"--information-container-grid-auto-rows\", rows.join(\" \"));\n }\n else {\n this.style.removeProperty(\"--information-container-grid-auto-areas\");\n this.style.removeProperty(\"--information-container-grid-auto-rows\");\n }\n\n return super.build(html`\n <div class=\"information-container\">\n ${this.HeadingHTML}\n ${this.CreateTxtHtml(this.textInfo.subheading, \"sub-title information-item\")}\n ${this.CreateTxtHtml(this.textInfo.text, \"text information-item\")}\n <div class=\"img-container information-item\">\n ${this.createProgramInformationImage(this.useImageController)}\n </div>\n <div class=\"controls-container information-item\">\n <fv-button\n class=\"overview button text bordered\"\n i18n=\"program.information.overview.button\"\n @click=${this.overview}\n icon=${this.overviewIcon ? this.overviewIcon : \"fv-icon-arrow\"}>\n </fv-button>\n <fv-button\n class=\"configure button text bordered\"\n i18n=\"program.information.configure.button\"\n @click=${this.configure}\n icon=${this.overviewIcon ? this.configureIcon : \"\"}>\n ${StyleHelper.getVar(this, \"--open-planning-image\") ? html`\n <img src=\"${StyleHelper.getVar(this, \"--open-planning-image\")}\"/>` : html``\n }\n </fv-button>\n </div>\n ${content}\n </div>\n `);\n }\n\n protected render(): TemplateResult<1> {\n return this.build(html`<slot></slot>`);\n }\n}\n","\nimport { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport style from \"./program-information-img.component.sass?inline\";\nimport { property, customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-program-information-img\")\nexport class ProgramInformationComponentImg extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n //private activeImageIndex = 0;\n\n\n private url = \"\";\n public async setImage(image: string) {\n this.url = image;\n this.requestUpdate();\n }\n\n constructor() {\n super();\n }\n\n protected render(): TemplateResult<1> {\n return html`<img class=\"img\" src=\"${this.url}\">`;\n }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport { property, customElement } from \"lit/decorators.js\";\nimport { ConfiguratorFormBase, FormElementInfo, FormElementsWrapper } from \"./configurator.form.base\"\nimport style from \"./configurator.form.component.sass?inline\";\nimport { IConfiguratorApiData, IConfiguratorApiDataGroup, IConfiguratorApiDataGroupParams, IConfiguratorApiValueModification } from \"@dh-software/webui-types\";\nimport { ConfiguratorApiDataService } from \"../../utils/configurator-api.data.service\";\nimport { SceneHelperService } from \"../../utils/scene-helper.service\";\nimport { EventHandlerDispatchEvent } from \"../../models/event-handler/event.handler.model\";\nimport { SceneButtonPage } from \"../standard/arrange\";\n\n\n@customElement(\"fv-configurator-form\")\nexport class ConfiguratorFormComponent extends ConfiguratorFormBase {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n\n\n // _ _ \n // _ __ _ __ ___ _ __ ___ _ __| |_(_) ___ ___ \n // | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n // | |_) | | | (_) | |_) | __/ | | |_| | __/\\__ \\\n // | .__/|_| \\___/| .__/ \\___|_| \\__|_|\\___||___/\n // |_| |_| \n @property({ type: Array, reflect: false, attribute: \"form-elements\" })\n public formElements: Array<FormElementInfo | FormElementsWrapper> = [];\n\n @property({ type: Object, reflect: true, attribute: \"configurator-title\" })\n public configuratorTitle: {\n default?: string | undefined,\n specific?: { [key: string]: string | undefined } | undefined\n } = {};\n\n @property({ type: Boolean, reflect: true, attribute: \"number-group-titles\" })\n public numberGroupTitles = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"number-wrapper-titles\" })\n public numberWrapperTitles = false;\n\n @property({ type: Array, reflect: true, attribute: \"groups-to-skip-numbering\" })\n public groupsToSkipNumbering: Array<string> = [];\n\n @property({ type: Array, reflect: true, attribute: \"groups-to-ignore\" })\n public groupsToIgnore = new Array<string>();\n\n @property({ type: Boolean, reflect: true, attribute: \"group-title-toggles-start-closed\" })\n public groupTitleTogglesStartClosed = false;\n\n // @property({ type: Boolean, reflect: true, attribute: \"form-elements-wrapper-toggles-start-closed\" }) // PH removed for now. looks like this was not used.\n // public formElementWrapperTogglesStartClosed = false;\n\n @property({ type: String, reflect: true, attribute: \"group-title-toggle-open-icon\" })\n public groupTitleToggleOpenIcon = \"fv-icon-eye-2\";\n\n @property({ type: String, reflect: true, attribute: \"group-title-toggle-closed-icon\" })\n public groupTitleToggleClosedIcon = \"fv-icon-eye-closed\";\n\n @property({ type: Boolean, reflect: true, attribute: \"highlight-element-on-group-form-edit\" })\n public highlightElementOnGroupFormEdit = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-empty\" })\n public hideEmpty = false;\n\n\n private createGroupNumberingText(group_: string, numberedGroups_: string[]): string | undefined {\n if (!this.numberGroupTitles && this.groupsToSkipNumbering.includes(group_)) {\n return undefined;\n }\n const groupIndex = numberedGroups_.indexOf(group_);\n if (groupIndex < 0) {\n return undefined;\n }\n return \" \" + (groupIndex + 1).toFixed(0);\n }\n\n private createTitleText(group_: string, numberedGroups_: string[]): string | undefined {\n const titleSuffix = this.createGroupNumberingText(group_, numberedGroups_);\n const specificEntry = this.configuratorTitle?.specific?.[group_];\n if (specificEntry != undefined) {\n if (specificEntry.length < 1) {\n return undefined;\n }\n return specificEntry + titleSuffix;\n }\n if (this.configuratorTitle?.default && titleSuffix) {\n return this.configuratorTitle.default + titleSuffix;\n }\n if (this.configuratorTitle.default == undefined || this.configuratorTitle.default?.length < 1) {\n return undefined;\n }\n return this.configuratorTitle.default;\n }\n private createConfiguratorTitle(group_: string, numberedGroups_: string[]): TemplateResult<1> {\n if (this.groupTitleToggles) {\n return html``;\n }\n\n const titleText = this.createTitleText(group_, numberedGroups_);\n if (titleText == undefined) {\n return html``;\n }\n\n return html`\n <fv-label class=\"custom form-title form-title-${group_}\">${titleText}</fv-label>\n `;\n }\n\n\n private createGroup(group_: string, numberedGroups_: string[], index_: number): TemplateResult | undefined {\n if (this.groupsToIgnore.includes(group_)) {\n return undefined;\n }\n\n const tag = this.listTags[group_] || this.listTags[\"default\"] || \"fv-configurator-form-element-list\";\n const attributes = this.listProperties[group_] || this.listProperties[\"default\"] || { \"form-elements\": this.formElements };\n const element = ConfiguratorFormBase.CreateElement({\n tag: tag,\n name: group_,\n attributes: attributes\n }, group_, this, \"\");\n\n if (!element.WillRenderChildren(this.formElements, this.listTags, this.elementNamePrefix)) {\n return undefined;\n }\n\n // add highlighting event\n if (this.highlightElementOnGroupFormEdit) {\n element.setAttribute(\"highlight-element-while-editing\", \"\");\n }\n else {\n element.removeAttribute(\"highlight-element-while-editing\");\n }\n\n // set title as toggle button\n if (this.groupTitleToggles) {\n const title = this.createTitleText(group_, numberedGroups_);\n if (title != undefined) {\n element.setAttribute(\"toggle-button\", title);\n if (!this.groupTitleTogglesStartClosed) {\n element.setAttribute(\"toggle-starts-opened\", \"\");\n }\n else {\n element.removeAttribute(\"toggle-starts-opened\");\n }\n if (this.groupTitleToggleOpenIcon.length > 0 || this.groupTitleToggleClosedIcon.length > 0) {\n element.setAttribute(\"show-toggle-button-arrow\", \"\");// TODO PH add custom icon!\n }\n else {\n element.removeAttribute(\"show-toggle-button-arrow\");\n }\n }\n }\n\n if (this.numberWrapperTitles) {\n element.setAttribute(\"group-number-txt\", index_.toString());\n }\n\n return html`\n ${this.createConfiguratorTitle(group_, numberedGroups_)}\n <div class=\"group-container\">\n ${element}\n </div>\n `;\n }\n\n\n // _ _ \n // ___ ___ _ __ ___| |_ _ __ _ _ ___| |_ ___ _ __ \n // / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n // | (_| (_) | | | \\__ \\ |_| | | |_| | (__| || (_) | | \n // \\___\\___/|_| |_|___/\\__|_| \\__,_|\\___|\\__\\___/|_| \n constructor() {\n super();\n\n this.addEventListener(\"configurator-form-update-highlight\", async (event: CustomEventInit) => {\n if (this.highlightElementOnGroupFormEdit && event.detail?.ii) {\n await SceneHelperService.updateHighlightBox(event.detail.ii);\n }\n });\n\n this.addEventListener(\"openscenebuttonpage\", async (e: CustomEventInit) => {\n if (e.detail) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: [e.detail.value]\n }));\n }\n });\n\n this.addEventListener(\"closescenebuttonpage\", async (e: CustomEventInit) => {\n if (e.detail) {\n const detail = e.detail as {\n page: SceneButtonPage\n owners: Array<string>,\n value: IConfiguratorApiValueModification\n };\n\n for (const group of detail.owners) {\n await ConfiguratorApiDataService.Set([{\n name: group,\n modifications: [detail.value as IConfiguratorApiValueModification]\n }], this.preventRegenAll);\n }\n }\n });\n }\n\n\n // _ \n // _ __ ___ _ __ __| | ___ _ __ \n // | '__/ _ \\ '_ \\ / _` |/ _ \\ '__|\n // | | | __/ | | | (_| | __/ | \n // |_| \\___|_| |_|\\__,_|\\___|_| \n private _nonEmptyHideState: undefined | boolean = undefined;\n protected renderComplete(result: IConfiguratorApiData | undefined, renderResult: TemplateResult<1> | undefined): TemplateResult<1> {\n if (result == undefined) {\n return super.renderComplete(result, renderResult);\n }\n\n const numberedGroups: string[] = [];\n if (this.numberGroupTitles) {\n for (const group of ConfiguratorApiDataService.Groups) {\n if (this.groupsToIgnore.includes(group)) continue;\n if (!this.groupsToSkipNumbering.includes(group)) {\n numberedGroups.push(group);\n }\n }\n }\n\n let index = 1;\n const templateResults: TemplateResult[] = [];\n for (const group of ConfiguratorApiDataService.Groups) {\n const templateResult = this.createGroup(group, numberedGroups, index);\n if (templateResult != undefined) {\n templateResults.push(templateResult);\n ++index;\n }\n }\n\n if (this.hideEmpty && templateResults.length < 1) {\n if (this._nonEmptyHideState == undefined) {\n this._nonEmptyHideState = this.hideElement;\n }\n this.hideElement = true;\n }\n else if (this._nonEmptyHideState !== undefined) {\n this.hideElement = this._nonEmptyHideState;\n this._nonEmptyHideState = undefined;\n }\n return super.renderComplete(result, html`${templateResults}`);\n }\n\n}","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport { property, customElement } from \"lit/decorators.js\";\nimport style from \"./configurator.form.page.component.sass?inline\"\nimport { ConfiguratorApiDataService } from \"../../utils/configurator-api.data.service\";\nimport { ConfiguratorFormBase } from \"./configurator.form.base\"\nimport { IConfiguratorApiDataGroupParams, IConfiguratorApiDataValue, IConfiguratorApiDataGroup } from \"@dh-software/webui-types\"\nimport { MediaService } from \"../../utils/media.service\";\nimport { PageControllerUpdateControllableItemCount, IPageControllableItem } from \"../standard/arrange/page/page-controller.component\"\nimport type { ComponentStateHandlerMap } from \"../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-configurator-form-page:open-view-mode\": { checkViewed?: boolean };\n }\n}\n\nexport enum EConfiguratorFormPageViewMode {\n MODE_PAGINATION = 0,\n MODE_OVERVIEW = 1,\n}\n\n@customElement(\"fv-configurator-form-page\")\nexport class ConfiguratorFormPageComponent extends ConfiguratorFormBase implements IPageControllableItem {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private _activeIndex = 0;\n @property({ type: Number, reflect: true })\n public get activeIndex(): number {\n return this._activeIndex;\n }\n public set activeIndex(index: number) {\n const old = this._activeIndex;\n this._activeIndex = index;\n this.requestUpdate('activeIndex', old);\n\n const groupName = this._groupsToDisplay[index];\n const children = ConfiguratorApiDataService.GetGroupValuesCount(groupName, \"\", groupName);\n if (children < 1) {\n this.updateComplete.then(()=>{\n if (old < index) {\n this.dispatchEvent(new CustomEvent(\"triggernextpage\", { bubbles: true }));\n }\n else {\n this.dispatchEvent(new CustomEvent(\"triggerpreviouspage\", { bubbles: true }));\n }\n });\n }\n }\n\n // @property({ type: Number, reflect: true })\n // public activeIndex = 0;\n\n @property({ type: Array, reflect: true, attribute: \"group-names\" })\n public groupNames: Array<string> = [];\n\n @property({ type: Number, reflect: true, attribute: \"view-mode\" })\n public viewMode = EConfiguratorFormPageViewMode.MODE_PAGINATION;\n\n private _prevPageCount: number = 0;\n private _groupsToDisplay: Array<string> = [];\n\n public _viewedAll = false;\n public _pageControls = true;\n\n // Spread the inherited (ConfiguratorFormBase) handlers so they are not shadowed.\n stateHandlers: ComponentStateHandlerMap = {\n ...this.stateHandlers,\n \"fv-configurator-form-page:open-view-mode\": (data) => { this.openOverview(data); },\n };\n\n constructor() {\n super();\n\n // Backwards-compat: still answer a direct DOM CustomEvent dispatch.\n this.addEventListener(\"configuratorformpageopenoverview\", (ev: CustomEventInit): void => {\n this.openOverview(ev?.detail);\n });\n }\n\n private openOverview(data?: { checkViewed?: boolean }): void {\n if (data?.checkViewed && this._viewedAll !== true) {\n return;\n }\n\n this._pageControls = false; // no buttons to click through the pages\n this.updatePageCount();\n this.viewMode = EConfiguratorFormPageViewMode.MODE_OVERVIEW;\n }\n\n private updatePageCount(): void {\n this.dispatchEvent(new PageControllerUpdateControllableItemCount());\n }\n\n protected willUpdate(changedProperties: Map<string, unknown>): void {\n super.willUpdate(changedProperties);\n\n this._groupsToDisplay = this.groupNames.length > 0 ? this.groupNames : ConfiguratorApiDataService.Groups\n\n if (this._prevPageCount != this._groupsToDisplay.length) {\n this._prevPageCount = this._groupsToDisplay.length;\n this.updatePageCount();\n }\n }\n\n private openPageByGroupName(targetGroupName_: string) {\n const targetIndex = this._groupsToDisplay.indexOf(targetGroupName_);\n if (targetIndex !== -1) {\n this.activeIndex = targetIndex;\n this.viewMode = EConfiguratorFormPageViewMode.MODE_PAGINATION; // switch back to pagination\n }\n }\n\n private getOverviewGroupImage(targetGroupName_: string): string {\n const data = ConfiguratorApiDataService.Data;\n const groupData = ConfiguratorApiDataService.GetGroup(targetGroupName_, data) as IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n\n let groupImage = groupData?.image;\n if (groupImage === undefined) {\n ConfiguratorApiDataService.ForEachRecursive(groupData as IConfiguratorApiDataGroup, (valueOrGroup_: IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, name_: string) => {\n if (valueOrGroup_?.image) {\n groupImage = valueOrGroup_.image;\n return true;\n }\n\n const elementData = valueOrGroup_ as IConfiguratorApiDataValue;\n const optionsImages = elementData[\"options-images\"];\n\n if (optionsImages && optionsImages.length > 0) {\n const optionImage = optionsImages.find(value => value.option == elementData.active) || optionsImages[0];\n if (optionImage) {\n groupImage = optionImage;\n return true;\n }\n }\n\n return false;\n });\n }\n\n if (groupImage) {\n return MediaService.getUrl(groupImage.manufacturer, groupImage.program, groupImage.type, groupImage.name, true, false);\n }\n\n return \"\";\n }\n\n private getOverviewGroupTitle(targetGroupName_: string): string {\n const data = ConfiguratorApiDataService.Data;\n const groupData = ConfiguratorApiDataService.GetGroup(targetGroupName_, data) as IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n return groupData?.text || targetGroupName_;\n }\n\n private buildPage(): TemplateResult<1> {\n if (this.activeIndex < 0 || this.activeIndex >= this._groupsToDisplay.length) {\n return html``;\n }\n\n const groupName = this._groupsToDisplay[this.activeIndex];\n if (!groupName) {\n return html``;\n }\n\n const tag = this.listTags[groupName] || this.listTags[\"default\"] || \"\";\n const attributes = this.listProperties[groupName] || this.listProperties[\"default\"];\n const styles = this.listStyles[groupName] || this.listStyles[\"default\"];\n\n const component = ConfiguratorFormBase.CreateElement({\n tag: tag,\n name: groupName,\n attributes: attributes,\n styleVars: styles\n }, groupName, this, \"\");\n\n return html`${component}`;\n }\n\n private buildOverviewItem(groupName: string): TemplateResult<1> {\n const children = ConfiguratorApiDataService.GetGroupValuesCount(groupName, \"\", groupName);\n if (children < 1) {\n return html`\n <div class=\"overview-item disabled\">\n <div class=\"overview-image\" style=\"background-image: url('${this.getOverviewGroupImage(groupName)}');\"></div>\n <fv-label class=\"overview-title\" i18n=\"${this.getOverviewGroupTitle(groupName)}\">${this.getOverviewGroupTitle(groupName)}</fv-label>\n </div>\n `;\n }\n return html`\n <div class=\"overview-item\" @click=\"${() => this.openPageByGroupName(groupName)}\">\n <div class=\"overview-image\" style=\"background-image: url('${this.getOverviewGroupImage(groupName)}');\"></div>\n <fv-label class=\"overview-title\" i18n=\"${this.getOverviewGroupTitle(groupName)}\">${this.getOverviewGroupTitle(groupName)}</fv-label>\n </div>\n `;\n }\n\n private buildOverview(): TemplateResult<1> {\n this.activeIndex = 0;\n return html`\n <slot name=\"overview-before\"></slot>\n <div class=\"overview-container\">\n ${this._groupsToDisplay.map(groupName => this.buildOverviewItem(groupName))}\n </div>\n <slot name=\"overview-after\"></slot>\n `;\n }\n\n protected render(): TemplateResult<1> {\n switch (this.viewMode) {\n case EConfiguratorFormPageViewMode.MODE_PAGINATION:\n return this.buildPage();\n case EConfiguratorFormPageViewMode.MODE_OVERVIEW:\n return this.buildOverview();\n default:\n break;\n }\n return html``;\n }\n\n getCount(): number {\n return this._groupsToDisplay.length;\n }\n\n getIndex(): number {\n return this.activeIndex;\n }\n\n setIndex(index: number): void {\n this.activeIndex = index;\n }\n\n next(): void {\n this.activeIndex++;\n }\n\n previous() {\n this.activeIndex--;\n }\n\n setViewedAll(viewedAll: boolean): void {\n this._viewedAll = viewedAll;\n }\n\n showPageControls(): boolean {\n return this._pageControls;\n }\n}\n","import { CSSResultGroup, html, TemplateResult, css, unsafeCSS, PropertyDeclaration } from \"lit\";\nimport { property, query } from \"lit/decorators.js\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport style from \"./configurator.form.base.element.component.sass?inline\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { IConfiguratorApiDataGroup, IConfiguratorApiDataValue, IConfiguratorApiValueModificationGroup } from \"@dh-software/webui-types\";\nimport { ConfiguratorFormBase, FormElementInfo, FormElementsWrapper } from \"../configurator.form.base\";\nimport { MediaService } from \"../../../utils/media.service\";\n\n\nexport class ConfiguratorFormElementDataContainer {\n private _data: (IConfiguratorApiDataValue | IConfiguratorApiDataGroup)[] = [{ type: \"\" }]\n private _initialized = false;\n\n constructor() { }\n\n public Read(group_: string, names_: string[], groupReference_: string): ConfiguratorFormElementDataContainer {\n this._data = [];\n for (const name of names_) {\n this._data.push(ConfiguratorApiDataService.Get(group_, groupReference_, name));\n }\n if (this._data.length < 1) {\n this._data = [{ type: \"\" }];\n }\n this._initialized = true;\n return this;\n }\n\n public Get(index_: number): IConfiguratorApiDataValue {\n if (this._data.length > index_ && index_ > -1) {\n return this._data[index_];\n }\n return { type: \"\" }\n }\n public get first(): IConfiguratorApiDataValue {\n return this.Get(0);\n }\n public get last(): IConfiguratorApiDataValue {\n return this.Get(this._data.length - 1);\n }\n\n public get initialized(): boolean {\n return this._initialized;\n }\n public set initialized(value_: boolean) {\n this._initialized = value_;\n }\n}\n\nexport interface ConfiguratorFormUpdateAllEventInit extends CustomEventInit {\n detail: ConfiguratorFormBaseElement\n}\nexport class ConfiguratorFormUpdateAllEvent extends CustomEvent<ConfiguratorFormBaseElement> {\n constructor(element: ConfiguratorFormBaseElement) {\n super(\"configuratorformupdatedall\", { detail: element, bubbles: true });\n }\n}\n\n\nexport class ConfiguratorFormBaseElement extends BaseElement {\n // _ _ \n // ___| |_ _ _| | ___ ___ \n // / __| __| | | | |/ _ \\/ __|\n // \\__ \\ |_| |_| | | __/\\__ \\\n // |___/\\__|\\__, |_|\\___||___/\n // |___/ \n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n\n\n // _ _ \n // _ __ _ __ ___ _ __ ___ _ __| |_(_) ___ ___ \n // | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n // | |_) | | | (_) | |_) | __/ | | |_| | __/\\__ \\\n // | .__/|_| \\___/| .__/ \\___|_| \\__|_|\\___||___/\n // |_| |_| \n @property({ type: String, reflect: true })\n public group = \"\";\n @property({ type: String, reflect: true })\n public name = \"\";\n @property({ type: Array, reflect: true })\n public names = new Array<string>();\n\n @property({ type: Number, reflect: true })\n public index: number | undefined = undefined;\n\n @property({ type: String, reflect: true })\n nameTextOverwrite = \"\";\n\n @property({ type: Boolean, reflect: true })\n hideAlternativeName = false;\n\n @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n public decimalDivider: \".\" | \",\" = \".\";\n\n @property({ type: Number, reflect: true, attribute: \"float-digits\" })\n public floatDigits = 2;\n\n @property({ type: Array, reflect: true, attribute: \"value-info\" })\n protected valueInfos = new Array<string>();\n\n @property({ type: Number, reflect: true, attribute: \"value-info-timeout\" })\n public valueInfoTimeout = 3500;\n\n @property({ type: String, reflect: false, attribute: \"group-reference\" })\n public groupReference = \"\";\n\n\n // _ _ _ \n // __ ____ _ _ __(_) __ _| |__ | | ___ ___ \n // \\ \\ / / _` | '__| |/ _` | '_ \\| |/ _ \\/ __|\n // \\ V / (_| | | | | (_| | |_) | | __/\\__ \\\n // \\_/ \\__,_|_| |_|\\__,_|_.__/|_|\\___||___/\n protected _data: ConfiguratorFormElementDataContainer;\n\n\n\n // _ \n // __ _ _ _ ___ _ __(_) ___ ___ \n // / _` | | | |/ _ \\ '__| |/ _ \\/ __|\n // | (_| | |_| | __/ | | | __/\\__ \\\n // \\__, |\\__,_|\\___|_| |_|\\___||___/\n // |_| \n @query(\".info-display\")\n public infoDisplay: HTMLDivElement | undefined;\n\n\n\n // _ _ \n // ___ ___ _ __ ___| |_ _ __ _ _ ___| |_ ___ _ __ \n // / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n // | (_| (_) | | | \\__ \\ |_| | | |_| | (__| || (_) | | \n // \\___\\___/|_| |_|___/\\__|_| \\__,_|\\___|\\__\\___/|_| \n constructor() {\n super();\n\n this._data = new ConfiguratorFormElementDataContainer();\n\n LocaleService.IsFileRead().then(() => {\n this.requestUpdate();\n });\n }\n\n\n\n // _ _ _ \n // ___| | ___ _ __ ___ ___ _ __ | |_ _ __ ___ __ _ _ __ __ _ __ _ ___ _ __ ___ ___ _ __ | |_ \n // / _ \\ |/ _ \\ '_ ` _ \\ / _ \\ '_ \\| __| | '_ ` _ \\ / _` | '_ \\ / _` |/ _` |/ _ \\ '_ ` _ \\ / _ \\ '_ \\| __|\n // | __/ | __/ | | | | | __/ | | | |_ | | | | | | (_| | | | | (_| | (_| | __/ | | | | | __/ | | | |_ \n // \\___|_|\\___|_| |_| |_|\\___|_| |_|\\__| |_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| |_| |_|\\___|_| |_|\\__|\n // |___/ \n private static AllElements: Array<ConfiguratorFormBaseElement> = [];\n connectedCallback(): void {\n super.connectedCallback();\n ConfiguratorFormBaseElement.AllElements.push(this);\n }\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n const index = ConfiguratorFormBaseElement.AllElements.indexOf(this);\n if (index > -1) {\n ConfiguratorFormBaseElement.AllElements.splice(index, 1);\n }\n }\n public get All(): Array<ConfiguratorFormBaseElement> {\n return ConfiguratorFormBaseElement.AllElements;\n }\n protected async UpdateAll(includingForm = false, skip?: Array<ConfiguratorFormBaseElement | ConfiguratorFormBase>): Promise<void> {\n for (const element of this.All) {\n if (skip && skip.includes(element)) {\n continue;//skip\n }\n element.requestUpdate();\n await element.updateComplete;\n }\n if (includingForm && this.Form) {\n if (skip == undefined || !skip.includes(this.Form)) {\n await this.Form?.UpdateAll(ConfiguratorApiDataService.Data);\n await this.Form?.CheckFetchPromise();\n await this.Form?.updateComplete;\n }\n }\n window.dispatchEvent(new ConfiguratorFormUpdateAllEvent(this));\n }\n protected async Set(group: IConfiguratorApiValueModificationGroup, preventRegenAll = false, ignorePriceChange = false): Promise<boolean> {\n group.name = ConfiguratorApiDataService.CreateFullTargetGroupReference(group.name, this.groupReference);\n return this.SetMultiple([group], preventRegenAll, ignorePriceChange);\n }\n protected async SetMultiple(groups: IConfiguratorApiValueModificationGroup[], preventRegenAll = false, ignorePriceChange = false): Promise<boolean> {\n const result = await ConfiguratorApiDataService.Set(groups, preventRegenAll, ignorePriceChange);\n return result;\n }\n\n\n // __ _ __ \n // _ __ ___ / _| ___ _ __ ___ _ __ ___ ___ | |_ ___ / _| ___ _ __ _ __ ___ \n // | '__/ _ \\ |_ / _ \\ '__/ _ \\ '_ \\ / __/ _ \\ | __/ _ \\ | |_ / _ \\| '__| '_ ` _ \\ \n // | | | __/ _| __/ | | __/ | | | (_| __/ | || (_) | | _| (_) | | | | | | | |\n // |_| \\___|_| \\___|_| \\___|_| |_|\\___\\___| \\__\\___/ |_| \\___/|_| |_| |_| |_|\n private _form: ConfiguratorFormBase | undefined = undefined;\n public get Form(): ConfiguratorFormBase | undefined {\n return this._form;\n }\n public set Form(form: ConfiguratorFormBase) {\n this._form = form;\n }\n\n // _ _ _ _ _ _ _ _ \n // | |__ (_) __ _| |__ | (_) __ _| |__ | |_(_)_ __ __ _ \n // | '_ \\| |/ _` | '_ \\| | |/ _` | '_ \\| __| | '_ \\ / _` |\n // | | | | | (_| | | | | | | (_| | | | | |_| | | | | (_| |\n // |_| |_|_|\\__, |_| |_|_|_|\\__, |_| |_|\\__|_|_| |_|\\__, |\n // |___/ |___/ |___/ \n protected UpdateHighlight(ii_: number): void {\n this.dispatchEvent(new CustomEvent(\"configurator-form-update-highlight\", { bubbles: true, composed: true, detail: { ii: ii_ } }));\n }\n\n\n // _ _ _ \n // __| | __ _| |_ __ _ _ __ ___ __ _ _ __ __ _ __ _ ___ _ __ ___ ___ _ __ | |_ \n // / _` |/ _` | __/ _` | | '_ ` _ \\ / _` | '_ \\ / _` |/ _` |/ _ \\ '_ ` _ \\ / _ \\ '_ \\| __|\n // | (_| | (_| | || (_| | | | | | | | (_| | | | | (_| | (_| | __/ | | | | | __/ | | | |_ \n // \\__,_|\\__,_|\\__\\__,_| |_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| |_| |_|\\___|_| |_|\\__|\n // |___/ \n public get Data(): ConfiguratorFormElementDataContainer {\n if (!this._data.initialized) {\n this.ReadData();\n }\n return this._data;\n }\n protected ReadData(): void {\n if (this.names.length < 1) {\n this._data.Read(this.group, [this.name], this.groupReference);\n return;\n }\n this._data.Read(this.group, this.names, this.groupReference);\n }\n protected get TextId(): string {\n const txt = (this.Data.first as IConfiguratorApiDataValue).text;\n if (txt && txt.length > 0) {\n return txt;\n }\n return this.name;\n }\n protected get Text(): string {\n const txtId = this.TextId;\n return LocaleService.translate(txtId, txtId);\n }\n\n protected get ValueInfo(): Array<string> {\n return ConfiguratorApiDataService.GetValueInfo(this.group, this.groupReference, [this.name]);\n }\n\n public WillRenderChildren(formElements_: (FormElementInfo | FormElementsWrapper)[], tags_: { [type: string]: string }, namePrefix_: string): boolean {\n const children = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(this.name, this.Data.first as IConfiguratorApiDataGroup, formElements_, namePrefix_, this.groupReference);\n if (children.length > 0) {\n return true;\n }\n if (tags_[this.Data.first.type] != undefined) {\n return true;\n }\n return false;\n }\n\n\n\n // _ _ _ _ _ _ _ \n // _ __ ___ _ __ __| | ___ _ __(_)_ __ __ _ __ _ _ __ __| | ___ __ _| | | |__ __ _ ___| | _____ \n // | '__/ _ \\ '_ \\ / _` |/ _ \\ '__| | '_ \\ / _` | / _` | '_ \\ / _` | / __/ _` | | | '_ \\ / _` |/ __| |/ / __|\n // | | | __/ | | | (_| | __/ | | | | | | (_| | | (_| | | | | (_| | | (_| (_| | | | |_) | (_| | (__| <\\__ \\\n // |_| \\___|_| |_|\\__,_|\\___|_| |_|_| |_|\\__, | \\__,_|_| |_|\\__,_| \\___\\__,_|_|_|_.__/ \\__,_|\\___|_|\\_\\___/\n // |___/ \n public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n super.attributeChangedCallback(name, _old, value);\n if (name === \"value-info\") {\n // timed-out\n if (value && value.length > 0) {\n setTimeout(() => {\n this.infoDisplay?.classList.add(\"timed-out\");\n }, this.valueInfoTimeout);\n }\n }\n }\n\n public createTemplate(children: TemplateResult): TemplateResult<1> {\n this.valueInfos = this.ValueInfo;\n\n return html`\n ${this.valueInfos.length > 0 ? html`\n <div class=\"info-display-container\">\n <div class=\"info-display\">${this.valueInfos.map(valueInfo => html`<fv-label>${valueInfo}</fv-label>`)}</div>\n </div>` : html``\n }\n ${children}\n `;\n }\n\n public requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration): void {\n if (this._data != undefined) {\n this._data.initialized = false;\n }\n super.requestUpdate(name, oldValue, options);\n }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.button.component.sass?inline\";\nimport { EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { UtilService } from \"../../../utils/util.service\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { IConfiguratorApiDataValue } from \"@dh-software/webui-types\"\n\n@customElement(\"fv-configurator-form-element-button\")\nexport class ConfiguratorFormElementButtonComponent extends ConfiguratorFormBaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true, attribute: \"bordered\" })\n public bordered = false;\n\n @property({ type: Array, reflect: true, attribute: \"events\" })\n public events: Array<EventHandlerEvent> = [];\n\n @property({type: String, reflect: true})\n icon: string = \"\";\n\n @property({type: Boolean, reflect: true, attribute: \"icon-only\" })\n iconOnly = false;\n\n protected async clicked(): Promise<void> {\n if (await this.Set({\n name: this.group,\n modifications: [{\n target: this.name,\n type: \"button\",\n value: 1\n }]\n })) {\n const data = ConfiguratorApiDataService.Data;\n const groupData = ConfiguratorApiDataService.GetGroup(this.group, data) as IConfiguratorApiDataValue;\n\n if (groupData?.[\"instance-ident\"]) {\n this.events.forEach((event: EventHandlerEvent) => {\n if (event.data) {\n UtilService.replaceValueInObject(event.data, \"##INSTANCE_IDENT##\", groupData?.[\"instance-ident\"]);\n }\n });\n }\n await EventHandlerService.dispatchEventList(this.events, false);\n await this.UpdateAll(true);\n return; // modification sucessful\n }\n }\n\n getText(txt: string) {\n if(this.iconOnly) return \"\";\n return txt;\n }\n\n protected render(): TemplateResult<1> {\n if (ConfiguratorApiDataService.Data) {\n const data = this.Data.first;\n if (data.type.length < 1) {\n return this.createTemplate(html``);\n }\n return this.createTemplate(html`\n <fv-button @click=\"${this.clicked}\" icon=\"${this.icon}\" class=\"${this.bordered ? \"bordered\" : \"\"}\" i18n=\"${this.getText(this.TextId)}\">${this.getText(this.Text)}</fv-button>\n `);\n }\n return this.createTemplate(html``);\n }\n}\n","\nimport { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.checkbox.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n\n@customElement(\"fv-configurator-form-element-checkbox\")\nexport class ConfiguratorFormElementCheckbox extends ConfiguratorFormBaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true })\n public state = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"change-able\" })\n public changeable = false;\n\n protected async clicked(): Promise<void> {\n if (this.changeable) {\n if (await this.Set({\n name: this.group,\n modifications: [{\n target: this.name,\n type: \"checkbox\",\n value: this.state ? 0 : 1\n }]\n })) {\n await this.UpdateAll(true);\n return; // modification sucessful\n }\n }\n }\n\n protected render(): TemplateResult<1> {\n if (ConfiguratorApiDataService.Data == undefined) {\n return this.createTemplate(html``);\n }\n\n const data = this.Data.first;\n if (data.type.length < 1) {\n this.classList.add(\"hidden\");\n return this.createTemplate(html``);\n }\n this.classList.remove(\"hidden\");\n\n this.state = data.state != undefined ? data.state as boolean : false;\n this.changeable = data.changeable != undefined ? data.changeable as boolean : true;\n\n const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n return this.createTemplate(html`\n <div @click=\"${this.clicked}\" class=\"outer-container\">\n <div class=\"label-container\">\n <span i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</span>\n </div>\n <div class=\"checkcontainer${this.state ? \" checked\" : \"\"}\">\n <div class=\"checkmark${this.state ? \" checked\" : \"\"}\"></div>\n </div>\n </div>\n `);\n }\n}\n","import { LitElement } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport { IConfiguratorApiDataGroup, IConfiguratorApiDataValue } from \"@dh-software/webui-types\";\nimport { ConfiguratorFormBase, FormElementInfo, FormElementsWrapper } from \"../configurator.form.base\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { ConfiguratorFormWrapperElementComponent } from \"../configurator-form-internal-elements/configurator.form.wrapper.component\";\n\n\nexport class ConfiguratorFormElementListBase extends ConfiguratorFormBaseElement {\n\n @property({ type: Object, reflect: false, attribute: \"elements-tags\" })\n public elementsTags: { [type: string]: string } = {};\n\n @property({ type: String, reflect: true, attribute: \"group-number-txt\" })\n public groupNumberTxt: string = \"\";\n\n @property({ type: Object, reflect: false, attribute: \"elements-attributes\" })\n public elementsAttributes: { [type: string]: { [attribute: string]: string } } = {};\n\n @property({ type: Object, reflect: false, attribute: \"elements-style-vars\" })\n public elementsStyleVars: { [type: string]: { [styleVar: string]: string } } = {};\n\n @property({ type: Array, reflect: false, attribute: \"form-elements\" })\n public formElements: Array<FormElementInfo> | undefined = undefined;\n\n @property({ type: Array, reflect: true, attribute: \"elements-to-skip\" })\n public elementsToSkip: Array<string> = [];\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-alternative-name-on-single-entry\" })\n public hideAlternativeNameOnSingleEntry = false;\n\n\n public static CreateWrapperOrElement(elementToCreate_: FormElementInfo | FormElementsWrapper, form_: ConfiguratorFormBase, name_: string, group_: string, elementData_: IConfiguratorApiDataGroup, groupReference_: string, isLast_: boolean = false): LitElement {\n const formElementInfo = elementToCreate_ as FormElementInfo;\n if (formElementInfo.tag == undefined) {\n const formElementsWrapper = elementToCreate_ as FormElementsWrapper;\n\n const element = document.createElement(\"fv-configurator-form-wrapper-element\") as ConfiguratorFormWrapperElementComponent;\n element.group = group_;\n element.toggles = formElementsWrapper[\"enable-toggle\"] != undefined ? formElementsWrapper[\"enable-toggle\"] : false;\n element.clickable = formElementsWrapper[\"clickable\"] != undefined ? formElementsWrapper[\"clickable\"] : true;\n element.title = formElementsWrapper.title != undefined ? formElementsWrapper.title : \"\";\n element.closedIcon = formElementsWrapper[\"closed-icon\"] ? formElementsWrapper[\"closed-icon\"] : \"\";\n element.openIcon = formElementsWrapper[\"open-icon\"] ? formElementsWrapper[\"open-icon\"] : \"\";\n element.startsClosed = isLast_ ? false : (formElementsWrapper[\"starts-closed\"] != undefined ? formElementsWrapper[\"starts-closed\"] : false);\n element.isClosed = element.startsClosed;\n\n if (formElementsWrapper.styleVars != undefined) {\n const keys = Object.keys(formElementsWrapper.styleVars);\n for (const styleVar of keys) {\n const value = formElementsWrapper.styleVars[styleVar];\n element.style.setProperty(styleVar, value);\n }\n }\n\n element.addEventListener(\"wrapper-clicked\", async (e: CustomEventInit) => {\n form_.triggerUpdateEvents();\n });\n\n if (formElementsWrapper[\"inline-elements\"] != undefined && formElementsWrapper[\"inline-elements\"].length > 0) {\n const inlineElementsToCreate = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(name_, elementData_, formElementsWrapper[\"inline-elements\"], form_.elementNamePrefix, groupReference_);\n for (const inlineElementToCreate of inlineElementsToCreate) {\n const inlineElement = ConfiguratorFormElementListBase.CreateWrapperOrElement(inlineElementToCreate, form_, name_, group_, elementData_, groupReference_);\n inlineElement.setAttribute(\"slot\", \"title\");\n element.appendChild(inlineElement);\n }\n }\n\n const elmentsToCreate = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(name_, elementData_, formElementsWrapper.elements, form_.elementNamePrefix, groupReference_);\n for (const elementToCreate of elmentsToCreate) {\n element.appendChild(ConfiguratorFormElementListBase.CreateWrapperOrElement(elementToCreate, form_, name_, group_, elementData_, groupReference_));\n }\n return element;\n }\n return ConfiguratorFormBase.CreateElement(formElementInfo, name_, form_, groupReference_);\n }\n\n protected createChildrenByFormElementDefinition(container_: HTMLElement, elementData_: IConfiguratorApiDataGroup, elementsToCreate_: (FormElementsWrapper | FormElementInfo)[], groupReference_: string) {\n if (this.formElements == undefined || this.formElements.length < 1) {\n return;\n }\n\n const form = this.Form;\n if (form == undefined) {\n return;\n }\n\n if (elementsToCreate_.length < 1) {\n return;\n }\n\n for (let i = 0; i < elementsToCreate_.length; i++) {\n const element = ConfiguratorFormElementListBase.CreateWrapperOrElement(elementsToCreate_[i], form, this.name, this.group, elementData_, groupReference_, i === elementsToCreate_.length - 1);\n if (element != undefined) {\n if (this.groupNumberTxt) {\n element.setAttribute(\"title-suffix\", this.groupNumberTxt);\n }\n container_.appendChild(element);\n }\n }\n }\n\n protected createChildrenByTagsAndAttributes(container_: HTMLElement, elementData_: IConfiguratorApiDataGroup, elementsNotToCreate_: (FormElementsWrapper | FormElementInfo)[]) {\n const names = Object.keys(elementData_);\n for (const name of names) {\n const skipElement = this.elementsToSkip.includes(name) || elementsNotToCreate_.find(elementNotToCreate => {\n const elementData_ = (elementNotToCreate as FormElementInfo);\n return (elementData_.name === name || (elementData_.names !== undefined && elementData_.names.includes(name)));\n });\n if (skipElement) {\n continue;\n }\n\n const data = elementData_[name] as IConfiguratorApiDataGroup | IConfiguratorApiDataValue;\n const component = this.createChildrenByTagsAndAttributesFromValue(name, data);\n\n if (component) {\n container_.appendChild(component);\n }\n }\n }\n\n protected createChildrenByTagsAndAttributesFromValue(name_: string, data_: IConfiguratorApiDataGroup | IConfiguratorApiDataValue): ConfiguratorFormBaseElement | undefined {\n if (data_.type == \"\" || data_.type == undefined) {\n return;// skip empty\n }\n\n const form = this.Form;\n if (form == undefined) {\n return;\n }\n\n const tag = this.elementsTags[data_.type];\n if (tag == undefined) {\n return;// skip types that do not have tags assigned!\n }\n\n const component = ConfiguratorFormBase.CreateElement({\n tag: tag,\n name: name_,\n attributes: this.elementsAttributes[data_.type],\n styleVars: this.elementsStyleVars[data_.type]\n }, this.group, form, this.groupReference);\n\n component.index = data_.index ? (data_.index as number) : 0;\n component.nameTextOverwrite = data_.name && !data_.text ? (data_.name as string) : \"\";\n component.hideAlternativeName = false;\n component.decimalDivider = this.decimalDivider;\n\n if (this.hideAlternativeNameOnSingleEntry) {\n const values = ConfiguratorApiDataService.GetGroupValuesCount(this.group, this.groupReference, this.name);\n if (values === 1) {\n component.hideAlternativeName = true;\n }\n // const elementData = ConfiguratorApiDataService.Get(this.group, this.groupReference, this.name);\n // if (elementData != undefined) {\n // const childNames = Object.keys(elementData);\n // if (childNames.length === 9) {// PH [2025|August|26] changed 1 to 9 since 8 values exist besides the values of the group\n // component.hideAlternativeName = true;\n // }\n // }\n }\n\n return component;\n }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./configurator.form.element.images.aligned.inputs.component.sass?inline\"\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { IConfiguratorApiDataValue } from \"@dh-software/webui-types\";\nimport { MediaService } from \"../../../utils/media.service\";\nimport { ConfiguratorFormElementListBase } from \"./configurator.form.element.list.base\"\nimport { ImageAlignedContainerComponent, IImageAlignedContainerOverlayItem } from \"../../standard/arrange/image-container/image.aligned.container.component\";\n\n\n@customElement(\"fv-configurator-form-element-images-aligned-inputs\")\nexport class ConfiguratorFormElementImagesAlignedInputsComponent extends ConfiguratorFormElementListBase {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private _groupedImageInputs = new Map<string, Array<IConfiguratorApiDataValue>>();\n\n constructor() {\n super();\n }\n\n private collectGroupedImageInputsData(): void {\n this._groupedImageInputs.clear();\n\n for (let i = 0; i < this.names.length; i++) {\n const data = this.Data.Get(i);\n\n if (data.image && data.name) {\n const imageKey = `${data.image.manufacturer}#${data.image.program}#${data.image.type}#${data.image.name}`;\n const inputNames = this._groupedImageInputs.get(imageKey);\n\n if (inputNames) {\n inputNames.push(data);\n }\n else {\n this._groupedImageInputs.set(imageKey, [data]);\n }\n }\n }\n }\n\n private buildImageAlignedInputsContainer(): TemplateResult<1> {\n return html`${Array.from(this._groupedImageInputs.entries()).map(([imageKey, inputs]): TemplateResult<1> => {\n if (inputs.length === 0) {\n return html``;\n }\n\n const firstInput = inputs[0];\n if (!firstInput) {\n return html``;\n }\n\n const imageData = firstInput.image;\n if (!imageData) {\n return html``;\n }\n\n const imgSrc = MediaService.getUrl(imageData.manufacturer, imageData.program, imageData.type, imageData.name, true, false);\n if (imgSrc.length <= 0) {\n return html``;\n }\n\n const overlayItems: Array<IImageAlignedContainerOverlayItem> = [];\n const imageContainer = document.createElement(\"fv-image-aligned-container\") as ImageAlignedContainerComponent;\n imageContainer._src = imgSrc;\n\n inputs.forEach(inputData => {\n if (inputData && inputData.name && inputData.additional?.[\"alignment\"]) {\n const component = this.createChildrenByTagsAndAttributesFromValue(inputData.name, inputData);\n\n if (component) {\n component.slot = inputData.name;\n imageContainer.appendChild(component);\n const isTextOverlay = inputData.type === \"string\";\n\n const inputAlignment = inputData.additional[\"alignment\"] as {\n left: number,\n top: number,\n rot: number\n };\n overlayItems.push({\n name: inputData.name,\n left: inputAlignment.left,\n top: inputAlignment.top,\n zIndex: !isTextOverlay ? 999 : undefined,\n skipHorizontalCenter: isTextOverlay && inputAlignment.rot == 0.0\n });\n if (inputAlignment.rot) {\n component.style.transform = `rotate(${inputAlignment.rot}deg)`;\n }\n }\n }\n });\n\n imageContainer.overlayItems = overlayItems;\n return html`${imageContainer}`;\n })}`;\n }\n\n protected render(): TemplateResult<1> {\n if (this.names.length === 0) {\n console.error(\"fv-configurator-form-element-images-aligned-inputs: no names!\");\n return this.createTemplate(html``);\n }\n\n if (ConfiguratorApiDataService.Data === undefined) {\n return this.createTemplate(html``);\n }\n\n this.collectGroupedImageInputsData();\n\n return this.createTemplate(html`\n <div class=\"image-aligned-inputs-container\">\n ${this.buildImageAlignedInputsContainer()}\n </div>\n `);\n }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./configurator.form.element.list.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { IConfiguratorApiDataGroup } from \"@dh-software/webui-types\";\nimport { ArrowComponent } from \"../../configurable-icons/arrow.component\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { SceneHelperService } from \"../../../utils/scene-helper.service\";\nimport { ConfiguratorFormElementListBase } from \"./configurator.form.element.list.base\"\n\n\n@customElement(\"fv-configurator-form-element-list\")\nexport class ConfiguratorFormElementList extends ConfiguratorFormElementListBase {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n // _ _ \n // _ __ _ __ ___ _ __ ___ _ __| |_(_) ___ ___ \n // | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n // | |_) | | | (_) | |_) | __/ | | |_| | __/\\__ \\\n // | .__/|_| \\___/| .__/ \\___|_| \\__|_|\\___||___/\n // |_| |_| \n @property({ type: String, reflect: true, attribute: \"toggle-button\" })\n public toggleButton = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"title-as-toggle-button\" })\n public titleAsToggleButton = true;\n\n @property({ type: Boolean, reflect: true, attribute: \"bordered-toggle-button\" })\n public borderedToggleButton = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-alternative-name-on-single-entry\" })\n public hideAlternativeNameOnSingleEntry = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"show-toggle-button-arrow\" })\n public showToggleButtonArrow = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"highlight-element-while-editing\" })\n public highlightElementWhileEditing = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"toggle-starts-opened\" })\n public toggleStartsOpened = false;\n\n\n // _ \n // __ _ _ _ ___ _ __(_) ___ ___ \n // / _` | | | |/ _ \\ '__| |/ _ \\/ __|\n // | (_| | |_| | __/ | | | __/\\__ \\\n // \\__, |\\__,_|\\___|_| |_|\\___||___/\n // |_| \n @query(\".child-components-container\")\n private childComponentsContainer: HTMLDivElement | undefined;\n\n @query(\".drop-down-button\")\n private dropDownButtonElement: HTMLElement | undefined;\n\n @query(\"fv-arrow-component\")\n private arrow: ArrowComponent | undefined;\n\n\n // _ _ _ \n // (_)_ __ | |_ ___ _ __ _ __ __ _| |___ \n // | | '_ \\| __/ _ \\ '__| '_ \\ / _` | / __|\n // | | | | | || __/ | | | | | (_| | \\__ \\\n // |_|_| |_|\\__\\___|_| |_| |_|\\__,_|_|___/\n private createContainer(): HTMLDivElement {\n const container = document.createElement(\"div\");\n container.classList.add(\"child-components-container\");\n if (this.showToggleButton) {\n const active = ConfiguratorFormElementList.activeElements.includes(this.name);\n if (!active) {\n container.classList.add(\"hidden\");\n }\n else {\n container.classList.remove(\"hidden\");\n }\n }\n return container;\n }\n private get showToggleButton() {\n return this.toggleButton.length > 0;\n }\n private triggerToggleButton() {\n if (this.childComponentsContainer) {\n this.childComponentsContainer.classList.toggle(\"hidden\");\n\n if (this.childComponentsContainer != undefined && !this.childComponentsContainer.classList.contains(\"hidden\")) {\n this.arrow?.classList.add(\"active\");\n if (this.titleAsToggleButton) {\n this.dropDownButtonElement?.classList.add(\"active\");\n }\n if (!ConfiguratorFormElementList.activeElements.includes(this.name)) {\n ConfiguratorFormElementList.activeElements.push(this.name);\n }\n }\n else {\n this.arrow?.classList.remove(\"active\");\n if (this.titleAsToggleButton) {\n this.dropDownButtonElement?.classList.remove(\"active\");\n }\n ConfiguratorFormElementList.activeElements = ConfiguratorFormElementList.activeElements.filter((active_) => active_ != this.name);\n }\n\n this.Form?.triggerUpdateEvents();\n }\n }\n private static initializedToggles: string[] = [];\n private createToggleButton(): TemplateResult<1> {\n if (this.showToggleButton) {\n const active = ConfiguratorFormElementList.activeElements.includes(this.name);\n ConfiguratorFormElementList.activeElements = ConfiguratorFormElementList.activeElements.filter((active_) => {\n return ConfiguratorApiDataService.Exists(active_);\n });\n if (this.toggleStartsOpened && !ConfiguratorFormElementList.initializedToggles.includes(this.name)) {\n ConfiguratorFormElementList.activeElements.push(this.name);\n ConfiguratorFormElementList.initializedToggles.push(this.name);//only on first load of element\n }\n\n if (this.titleAsToggleButton) {\n if (this.showToggleButtonArrow) {\n return html`\n <div @click=\"${this.triggerToggleButton}\" class=\"drop-down-button${this.borderedToggleButton ? \" bordered\" : \"\"} ${active ? \"active\" : \"\"}\">\n <div class=\"toggle-button-txt-container\">\n <span i18n=\"${this.toggleButton}\">${LocaleService.translate(this.toggleButton, this.toggleButton)}</span>\n <fv-arrow-component class=\"${active ? \"active\" : \"\"}\"></fv-arrow-component>\n </div>\n </div>\n `;\n }\n return html`\n <div @click=\"${this.triggerToggleButton}\" class=\"drop-down-button${this.borderedToggleButton ? \" bordered\" : \"\"} ${active ? \"active\" : \"\"}\" i18n=\"${this.toggleButton}\">\n ${LocaleService.translate(this.toggleButton, this.toggleButton)}\n </div>\n `;\n }\n\n if (this.showToggleButtonArrow) {\n return html`\n <fv-button @click=\"${this.triggerToggleButton}\" class=\"drop-down-button${this.borderedToggleButton ? \" bordered\" : \"\"}\">\n <div class=\"toggle-button-txt-container\">\n <span i18n=\"${this.toggleButton}\">${LocaleService.translate(this.toggleButton, this.toggleButton)}</span>\n <fv-arrow-component class=\"${active ? \"active\" : \"\"}\"></fv-arrow-component>\n </div>\n </fv-button>\n `;\n }\n return html`\n <fv-button @click=\"${this.triggerToggleButton}\" class=\"drop-down-button${this.borderedToggleButton ? \" bordered\" : \"\"}\" i18n=\"${this.toggleButton}\">\n ${LocaleService.translate(this.toggleButton, this.toggleButton)}\n </fv-button>\n `;\n }\n return html``;\n }\n private static activeElements: string[] = [];\n\n private async mouseEnter() {\n if (!this.highlightElementWhileEditing) {\n return;\n }\n if (this.Data.first == undefined || this.Data.first[\"lo-owned\"] == undefined || this.Data.first[\"instance-ident\"] == undefined) {\n return;\n }\n await SceneHelperService.addHighlightBox(this.Data.first[\"instance-ident\"] as number);\n }\n\n private async mouseLeave() {\n if (!this.highlightElementWhileEditing) {\n return;\n }\n if (this.Data.first == undefined || this.Data.first[\"lo-owned\"] == undefined || this.Data.first[\"instance-ident\"] == undefined) {\n return;\n }\n await SceneHelperService.removeHighlightBox(this.Data.first[\"instance-ident\"] as number);\n }\n\n\n // _ _ \n // ___ ___ _ __ ___| |_ _ __ _ _ ___| |_ ___ _ __ \n // / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n // | (_| (_) | | | \\__ \\ |_| | | |_| | (__| || (_) | | \n // \\___\\___/|_| |_|___/\\__|_| \\__,_|\\___|\\__\\___/|_| \n constructor() {\n super();\n\n this.addEventListener(\"mouseenter\", this.mouseEnter);\n this.addEventListener(\"mouseleave\", this.mouseLeave);\n }\n\n\n // _ \n // _ __ ___ _ __ __| | ___ _ __ \n // | '__/ _ \\ '_ \\ / _` |/ _ \\ '__|\n // | | | __/ | | | (_| | __/ | \n // |_| \\___|_| |_|\\__,_|\\___|_| \n protected render(): TemplateResult<1> {\n if (!ConfiguratorApiDataService.Valid) {\n return this.createTemplate(html``);\n }\n\n const data = this.Data.first;\n if (data == undefined) {\n return this.createTemplate(html``);\n }\n\n if (this.Form == undefined) {\n return this.createTemplate(html``);\n }\n\n if (data.type != \"list\") {\n if (data.type == \"\") {\n this.classList.add(\"hidden\");\n return this.createTemplate(html``);\n }\n return this.createTemplate(html`<div>Element Data not intended for list component</div>`);\n }\n\n const groupData = data as IConfiguratorApiDataGroup;\n const nameList = Object.keys(groupData);\n\n let reference = \"\";\n if (this.groupReference.length < 1) {\n reference = this.group;\n }\n else if (this.groupReference == this.group) {\n reference = this.group;\n }\n else {\n reference = this.groupReference + \"#\" + this.group;\n }\n\n const noListData = nameList.length < 8;\n const noFormElements = this.formElements == undefined || this.formElements.length < 1;\n const elementsToCreateFromElementDefinition = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(this.name, groupData, this.formElements || [], this.Form.elementNamePrefix, reference);\n\n if (noListData && noFormElements) {\n this.classList.add(\"hidden\");\n return this.createTemplate(html`<div>No children in list component and no formElements defined!</div>`);\n }\n if (noListData && elementsToCreateFromElementDefinition.length < 1) {\n this.classList.add(\"hidden\");\n return this.createTemplate(html`<div>No children in list component and no elements to create from formElements!</div>`);\n }\n\n this.classList.remove(\"hidden\");\n\n const container = this.createContainer();\n this.createChildrenByFormElementDefinition(container, groupData, elementsToCreateFromElementDefinition, reference);\n this.createChildrenByTagsAndAttributes(container, groupData, elementsToCreateFromElementDefinition);\n\n if (container.children.length < 1) {\n return this.createTemplate(html`<div>No children in list component!</div>`);\n }\n\n return this.createTemplate(html`\n ${this.createToggleButton()}\n ${container}\n `);\n }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.number.input.component.sass?inline\";\nimport { Units } from \"../../standard/base/base.component\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { ConstrainedInputComponent } from \"../../standard/input/contrained-input/constrained.input.component\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n@customElement(\"fv-configurator-form-element-number-input\")\nexport class ConfiguratorFormElementNumberInputComponent extends ConfiguratorFormBaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Number, reflect: true })\n public value = 0;\n\n @property({ type: Number, reflect: true })\n public min = 0;\n\n @property({ type: Number, reflect: true })\n public max = 99999999;\n\n @property({ type: Number, reflect: true })\n public step = 1;\n\n @property({ type: String, reflect: true, attribute: \"float-unit\" })\n public floatUnit = \"cm\";\n\n @property({ type: Boolean, reflect: true, attribute: \"no-min-max-check\" })\n public noMinMaxCheck = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"show-min-max-title\" })\n public showMinMaxTitle = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-title\" })\n public hideTitle = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-increase-decrease-buttons\" })\n public hideIncreaseDecreaseButtons = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-unused-unit-container\" })\n public hideUnusedUnitContainer = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-unused-unit-container-when-disabled\" })\n public hideUnusedUnitContainerWhenDisabled = false;\n\n @query(\"fv-constrained-input\")\n private constrainedInput: ConstrainedInputComponent | undefined;\n\n private _previousTransform = \"\";\n\n constructor() {\n super();\n\n // this.addEventListener(\"click\", (e) => {\n // e.preventDefault();\n // e.stopImmediatePropagation();\n // e.stopPropagation();\n // });\n this.addEventListener(\"mousemove\", (e) => {\n e.preventDefault();\n e.stopImmediatePropagation();\n e.stopPropagation();\n });\n this.addEventListener(\"mouseleave\", (e) => {\n e.preventDefault();\n e.stopImmediatePropagation();\n e.stopPropagation();\n });\n this.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key == \"Enter\") {\n e.stopImmediatePropagation();\n e.stopPropagation();\n }\n });\n }\n\n private async onChange(ev_: CustomEventInit) {\n if (ev_.detail.value != undefined) {\n const changeFunction = async () => {\n const apiDataPromise = this.Set({\n name: this.group,\n modifications: [{\n target: this.name,\n type: this._type,\n value: ev_.detail.value\n }]\n });\n if (await apiDataPromise) {\n await this.UpdateAll(true);\n this.UpdateHighlight(ConfiguratorApiDataService.Data[this.group]?.[\"instance-ident\"] as unknown as number || 0);\n }\n };\n\n const changePromise = changeFunction();\n if (this.constrainedInput) {\n this.constrainedInput.FinalizeClickPromise = changePromise;\n }\n await changePromise;\n }\n }\n\n private onFocus(): void {\n this._previousTransform = this.style.transform;\n this.style.transform = \"\";\n }\n\n private onBlur(): void {\n this.style.transform = this._previousTransform;\n }\n\n private getDisplayValue(value: number): string {\n const result = (value * this.Unitifier).toFixed(this.Digits);\n return result.replace(\".\", this.decimalDivider);\n }\n\n public get Unit(): Units {\n if (this._type == \"float\") {\n return super.Unit;\n }\n return \"error\";\n }\n public get Unitifier(): number {\n switch (this.Unit) {\n case \"cm\":\n return 0.1;\n case \"m\":\n return 0.001;\n case \"mm\":\n default:\n return 1;\n }\n }\n public get UnitLongname(): string {\n if (this._type == \"float\") {\n switch (this.Unit) {\n case \"cm\":\n return LocaleService.translate(\"unit.name.cm\");\n case \"m\":\n return LocaleService.translate(\"unit.name.m\");\n case \"mm\":\n return LocaleService.translate(\"unit.name.mm\");\n }\n }\n return \"\";\n }\n public get Digits(): number {\n if (this._type == \"float\") {\n return super.Digits;\n }\n return 0;\n }\n\n\n private _type: \"int\" | \"float\" = \"float\";\n\n protected render(): TemplateResult<1> {\n if (ConfiguratorApiDataService.Data) {\n const elementData = this.Data.first;\n this._type = elementData.type == \"int\" ? \"int\" : \"float\";\n if (elementData.type.length < 1) {\n this.classList.add(\"hidden\");\n return this.createTemplate(html``);\n }\n this.classList.remove(\"hidden\");\n\n this.min = elementData.min !== undefined ? elementData.min as number : this.min;\n this.max = elementData.max !== undefined ? elementData.max as number : this.max;\n if (elementData.max == undefined || elementData.min == undefined || elementData.value == undefined) return this.createTemplate(html`<div>Data Wrong for this Type of Element! (no min, no max or no value)</div>`);\n this.value = elementData.value as number;\n const minMaxEqual = this.min === this.max;\n const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n const titleMinMax = this.getDisplayValue(this.min) + \" - \" + this.getDisplayValue(this.max) + \" \" + this.UnitLongname;\n\n return this.createTemplate(html`\n ${!this.hideTitle ? html`\n <div class=\"label-outer-container\">\n <div class=\"label-container\">\n <span i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</span>\n ${this.index != undefined && !this.hideAlternativeName ? html`<span i18n=\"index-alternative-${this.nameTextOverwrite}-${this.index}\">${LocaleService.translate(this.nameTextOverwrite + \"-\" + this.index, (this.index + 1).toString())}</span>` : html``}\n </div>\n ${this.showMinMaxTitle && !minMaxEqual ? html`\n <div class=\"label-min-max-container\">\n <span>${titleMinMax}</span>\n </div>` : html``}\n </div>` : html``}\n\n <div class=\"input-container\">\n <span class=\"input-inner-container\">\n <fv-constrained-input\n @change=\"${this.onChange}\"\n @focus=${this.onFocus}\n @blur=${this.onBlur}\n min=\"${this.min}\"\n max=\"${this.max}\"\n value=\"${this.value}\"\n step=\"${this.step}\"\n unit=\"${this.Unit}\"\n decimal-divider=\"${this.decimalDivider}\"\n decimals=\"${this.Digits}\"\n ?no-min-max-check=\"${this.noMinMaxCheck}\"\n ?hide-unused-unit-container=\"${this.hideUnusedUnitContainer}\"\n ?hide-unused-unit-container-when-disabled=\"${this.hideUnusedUnitContainerWhenDisabled}\"\n pool-repeated-button-clicks\n ?show-increase-decrease=\"${!this.hideIncreaseDecreaseButtons}\">\n <div slot=\"increase\" class=\"increase-button\">\n <div class=\"increase-button-horizontal-container\">\n <div class=\"increase-button-horizontal\"></div>\n </div>\n <div class=\"increase-button-vertical-container\">\n <div class=\"increase-button-vertical\"></div>\n </div>\n </div>\n <div slot=\"decrease\" class=\"decrease-button\"></div>\n </fv-constrained-input>\n </span>\n </div>\n `);\n }\n return this.createTemplate(html``);\n }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { until } from \"lit/directives/until.js\"\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.option.selection.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { CommunicationMessageService, LocaleService } from \"@dh-software/webui-api\";\nimport { IConfiguratorApiDataOptionsTexts, IConfiguratorApiDataOptionsImages } from \"@dh-software/webui-types\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { MediaService } from \"../../../utils/media.service\";\nimport { ConfiguratorFormBase, FormElementInfo } from \"../configurator.form.base\"\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\n\ninterface IConfiguratorApiDataOptionsChildren {\n option: string;\n elements: Array<FormElementInfo>;\n}\n\ninterface IConfiguratorApiDataOptionsTitles {\n option: string;\n title: string;\n}\n\ninterface IConfiguratorApiDataOptionsSubtitles {\n option: string;\n subtitle: string;\n}\n\ninterface IOptionSelectionCreateInfo {\n option: string;\n active: boolean;\n disabled: boolean;\n text?: IConfiguratorApiDataOptionsTexts;\n image?: IConfiguratorApiDataOptionsImages;\n children?: IConfiguratorApiDataOptionsChildren;\n title?: IConfiguratorApiDataOptionsTitles;\n subtitle?: IConfiguratorApiDataOptionsSubtitles;\n}\n\n\n@customElement(\"fv-configurator-form-element-option-selection\")\nexport class ConfiguratorFormElementOptionSelection extends ConfiguratorFormBaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-title\" })\n public hideTitle = false; // TODO: move into ConfiguratorFormBaseElement and use it in all form components!\n\n @property({ type: Boolean, reflect: true, attribute: \"bordered\" })\n public bordered = false;\n\n @property({ type: Array, reflect: true, attribute: \"options-children\" })\n public optionsChildren: Array<IConfiguratorApiDataOptionsChildren> = [];\n\n @property({ type: Object, reflect: true, attribute: \"txt-id-mapping\" })\n public txtIdMapping: { [value: string]: string } = {};\n\n @property({type: Boolean, reflect: false, attribute: \"additional-option-data-selects-element\"})\n public additionalOptionDataSelectsElement = false;\n\n @property({ type: Object, reflect: false, attribute: \"selection-events\" })\n public selectionEvents: { [key: string]: EventHandlerEvent[] } = {};\n\n\n private triggerSelectionEvents(triggeredOption: string) {\n const events = this.selectionEvents[triggeredOption];\n if (events != undefined) {\n EventHandlerService.dispatchEventList(events, false);\n }\n }\n\n private async optionClicked(e: Event): Promise<void> {\n if (e && e.target) {\n const target = e.target as HTMLElement;\n const optionElement = target?.closest('[option]');\n const optionName = optionElement?.getAttribute(\"option\");\n const targetIsActive = optionElement?.classList.contains(\"active\") || false;\n\n if (optionName == undefined) {\n return;\n }\n if (target instanceof ConfiguratorFormBaseElement) {\n return;\n }\n\n let targetOption = optionName ? optionName : \"\";\n const allowEmptySelection = this.Data.first?.additional?.[\"allow-empty-selection\"] as boolean;\n if (allowEmptySelection && targetIsActive) {\n targetOption = \"\";\n }\n\n if (this.additionalOptionDataSelectsElement) {\n if (this.Data.first && this.Data.first.additional && this.Data.first.additional.options) {\n const target = (this.Data.first.additional.options as [{option: string, data: string}]).find(entry => entry.option == targetOption);\n if (target != undefined) {\n const result = await CommunicationMessageService.getPlanningObjectByGuid([target.data]);\n if (result != undefined) {\n const ii = result[target.data];\n if (ii != undefined) {\n this.triggerSelectionEvents(targetOption);\n await CommunicationMessageService.selectObjectInScene(ii);\n await ConfiguratorApiDataService.Fetch(true, true);\n await this.UpdateAll(true);\n }\n }\n return;\n }\n }\n }\n\n const result = await this.Set({\n name: this.group,\n modifications: [{\n target: this.name,\n type: \"string\",\n value: targetOption\n }]\n });\n if (result) {\n this.triggerSelectionEvents(targetOption);\n await this.UpdateAll(true);\n }\n }\n }\n\n private createOption(createInfo_: IOptionSelectionCreateInfo): TemplateResult<1> {\n const txt = this.txtIdMapping[createInfo_.option] ?\n this.txtIdMapping[createInfo_.option] : createInfo_.text?.txt?.length ?\n createInfo_.text.txt : createInfo_.option;\n\n const title = createInfo_.title?.title ?? \"\";\n const subtitle = createInfo_.subtitle?.subtitle ?? \"\";\n\n // Title -> Subtitle -> Text. Each new line is only emitted when present, so options\n // without titles/subtitles render exactly as before (just the text line).\n const texts = html`\n ${title ? html`<fv-label class=\"option-title\" i18n=\"${title}\">${title}</fv-label>` : html``}\n ${subtitle ? html`<fv-label class=\"option-subtitle\" i18n=\"${subtitle}\">${subtitle}</fv-label>` : html``}\n <fv-label class=\"option-text\" i18n=\"${txt}\">${txt}</fv-label>`;\n\n if (createInfo_.image) {\n const imgSrc = MediaService.getUrl(createInfo_.image.manufacturer, createInfo_.image.program, createInfo_.image.type, createInfo_.image.name, true, false);\n return html`\n <div\n @click=\"${this.optionClicked}\"\n class=\"option image ${this.bordered ? \"bordered\" : \"\"}${createInfo_.active ? \" active\" : \"\"}\"\n option=\"${createInfo_.option}\"\n ?disabled=\"${createInfo_.disabled}\"\n >\n <img src=\"${imgSrc}\" class=\"option-image\" />\n ${texts}\n </div>\n `\n }\n\n if (this.optionsChildren.length > 0) {\n const optionElement = document.createElement(\"div\");\n optionElement.classList = \"option child-items\";\n\n if (title) {\n const titleLabel = document.createElement(\"fv-label\");\n titleLabel.className = \"option-title\";\n titleLabel.setAttribute(\"i18n\", title);\n titleLabel.innerHTML = title;\n optionElement.appendChild(titleLabel);\n }\n if (subtitle) {\n const subtitleLabel = document.createElement(\"fv-label\");\n subtitleLabel.className = \"option-subtitle\";\n subtitleLabel.setAttribute(\"i18n\", subtitle);\n subtitleLabel.innerHTML = subtitle;\n optionElement.appendChild(subtitleLabel);\n }\n\n const label = document.createElement(\"fv-label\");\n label.className = \"option-text\";\n label.setAttribute(\"i18n\", txt);\n label.innerHTML = txt;\n optionElement.appendChild(label);\n\n if (createInfo_.active) {\n createInfo_.children?.elements.forEach(element => {\n const form = this.Form;\n if (!form) {\n return;\n }\n\n const component = ConfiguratorFormBase.CreateElement(element, this.group, form, this.groupReference);\n optionElement.appendChild(component);\n });\n optionElement.classList.add(\"active\");\n }\n if (createInfo_.disabled) {\n optionElement.setAttribute(\"disabled\", \"true\");\n }\n if (this.bordered) {\n optionElement.classList.add(\"bordered\");\n }\n\n optionElement.addEventListener(\"click\", this.optionClicked.bind(this));\n optionElement.setAttribute(\"option\", createInfo_.option);\n\n return html`${optionElement}`;\n }\n\n return html`\n <fv-button\n @click=\"${this.optionClicked}\"\n class=\"option ${this.bordered ? \"bordered\" : \"\"}${createInfo_.active ? \" active\" : \"\"}\"\n option=\"${createInfo_.option}\"\n ?disabled=\"${createInfo_.disabled}\">\n ${title ? html`<span class=\"option-title\" i18n=\"${title}\">${LocaleService.translate(title, title)}</span>` : html``}\n ${subtitle ? html`<span class=\"option-subtitle\" i18n=\"${subtitle}\">${LocaleService.translate(subtitle, subtitle)}</span>` : html``}\n <span class=\"option-text\" i18n=\"${txt}\">${LocaleService.translate(txt, txt)}</span>\n </fv-button>`;\n }\n\n protected render(): TemplateResult<1> {\n if (ConfiguratorApiDataService.Data) {\n const elementData = this.Data.first;\n const disabledOptions = elementData?.[\"disabled-options\"] as string[] | undefined || [];\n const optionsTexts = elementData?.[\"options-texts\"] || [];\n const optionsImages = elementData?.[\"options-images\"] || [];\n const optionsTitles = (elementData as unknown as { \"options-titles\"?: IConfiguratorApiDataOptionsTitles[] })[\"options-titles\"] || [];\n const optionsSubtitles = (elementData as unknown as { \"options-subtitles\"?: IConfiguratorApiDataOptionsSubtitles[] })[\"options-subtitles\"] || [];\n\n if (elementData.type.length < 1) {\n this.classList.add(\"hidden\");\n return this.createTemplate(html``);\n }\n this.classList.remove(\"hidden\");\n\n const options = elementData.options as string[] | undefined;\n if (options == undefined || options.length < 1) {\n return this.createTemplate(html`No Options!`);\n }\n\n const makeOption = (option: string): TemplateResult<1> => {\n const isDisabled = disabledOptions.includes(option);\n const isActive = elementData.active === option && !isDisabled;\n const textData = optionsTexts.find(value => value.option == option);\n const imageData = optionsImages.find(value => value.option == option);\n const childrenData = this.optionsChildren.find(value => value.option == option);\n const titleData = optionsTitles.find(value => value.option == option);\n const subtitleData = optionsSubtitles.find(value => value.option == option);\n\n return this.createOption({\n option: option,\n active: isActive,\n disabled: isDisabled,\n text: textData,\n image: imageData,\n children: childrenData,\n title: titleData,\n subtitle: subtitleData\n });\n };\n\n const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n return this.createTemplate(html`\n ${!this.hideTitle ? html`\n <div class=\"label-container\">\n <span i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</span>\n </div>` : html``}\n <div class=\"options-container\">\n ${options.map(option => makeOption(option))}\n </div>\n `);\n }\n return this.createTemplate(html``);\n }\n}\n","import {css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {ConfiguratorFormBaseElement} from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.option.selection.dropdown.component.sass?inline\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport {ConfiguratorApiDataService} from \"../../../utils/configurator-api.data.service\";\nimport {DropDownComponent, IDropdownOptions} from \"../../standard/dropdown/dropdown/dropdown.component\";\nimport {IDropdownItem} from \"../../standard/dropdown/dropdown-item/dropdown-item.component\";\n\n\n@customElement(\"fv-configurator-form-element-dropdown-option-selection\")\nexport class ConfiguratorFormElementOptionSelectionDropdown extends ConfiguratorFormBaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: Object, reflect: true, attribute: \"txt-id-mapping\"})\n public txtIdMapping: { [value: string]: string } = {};\n @property({type: Boolean, reflect: true, attribute: \"bordered\"})\n public bordered = false;\n\n @query(\"fv-dropdown\")\n private _dropdownElement!: DropDownComponent\n\n\n constructor() {\n super();\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n this.addEventListener(this._dropdownElement.changedEvent.name, async (ev: CustomEventInit<IDropdownItem>) => {\n if (ev.detail) {\n const value = ev.detail.value\n const changeFunction = async () => {\n const apiDataPromise = this.Set({\n name: this.group,\n modifications: [{\n target: this.name,\n type: \"string\",\n value: value\n }]\n });\n if (await apiDataPromise) {\n await this.UpdateAll(true);\n }\n };\n await changeFunction();\n }\n })\n }\n\n\n private determineOptionTxt(option: string, txts: { option: string, txt: string }[] | undefined): string {\n if (txts != undefined) {\n const found = txts.find(value => value.option == option);\n if (found != undefined) {\n return found.txt;\n }\n }\n return option;\n }\n\n private createOption(option: string, disabled: string[] | undefined, txts: {\n option: string,\n txt: string\n }[] | undefined): TemplateResult<1> {\n if (disabled != undefined) {\n if (disabled.includes(option)) {\n return html``;\n }\n }\n const txt = this.determineOptionTxt(option, txts);\n return html`\n <fv-select-option option=\"${option}\" display-value=\"${txt}\">${txt}</fv-select-option>`;\n }\n\n protected render(): TemplateResult<1> {\n if (ConfiguratorApiDataService.Data) {\n const data = this.Data.first;\n\n if (data.type.length < 1) {\n this.classList.add(\"hidden\");\n return this.createTemplate(html``);\n }\n this.classList.remove(\"hidden\");\n\n const options = data.options as string[] | undefined;\n if (options == undefined || options.length < 1) {\n return this.createTemplate(html`No Options!`);\n }\n\n const disabled = data?.[\"disabled-options\"] as string [] | undefined || [];\n const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n const optionTexts = data[\"options-texts\"] as { option: string; txt: string; }[] | undefined;\n\n const dropdownData = <IDropdownOptions>{\n placeholder: data.placeholder ?? \"\",\n items: data.options?.filter(x => !disabled.includes(x))?.map(x => {\n return <IDropdownItem>{\n active: x === data.active,\n text: this.determineOptionTxt(x, optionTexts),\n value: x\n }\n })\n }\n return this.createTemplate(html`\n <div i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</div>\n <div class=\"dropdown-container\">\n <fv-dropdown .dropdownOptions=\"${dropdownData}\" grow></fv-dropdown>\n </div>\n `);\n }\n return this.createTemplate(html``);\n }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport { Units } from \"../../standard/base/base.component\";\nimport style from \"./configurator.form.element.range.slider.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n\n@customElement(\"fv-configurator-form-element-range-slider\")\nexport class ConfiguratorFormElementRangeSliderComponent extends ConfiguratorFormBaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Number, reflect: true })\n public value = 0;\n @property({ type: Number, reflect: true })\n public min = 0;\n @property({ type: Number, reflect: true })\n public max = 99999999;\n\n constructor() {\n super();\n\n this.addEventListener(\"slider-release\", async (event_: CustomEventInit)=>{\n const releaseDetail: { min: number, max: number, value: number } = event_.detail as { min: number, max: number, value: number };\n this.value = releaseDetail.value;\n\n if (await this.Set({\n name: this.group,\n modifications: [{\n target: this.name,\n type: this._type,\n value: this.value\n }]\n })) {\n await this.UpdateAll(true);\n }\n });\n }\n\n private _type: \"int\" | \"float\" = \"float\";\n\n public get Unit(): Units {\n if (this._type == \"float\") {\n return super.Unit;\n }\n return \"error\";\n }\n public get Digits(): number {\n if (this._type == \"float\") {\n return super.Digits;\n }\n return 0;\n }\n\n\n protected render(): TemplateResult<1> {\n if (ConfiguratorApiDataService.Data) {\n this._type = this.Data.first.type == \"int\" ? \"int\" : \"float\";\n if (this.Data.first.type.length < 1) {\n this.classList.add(\"hidden\");\n return this.createTemplate(html``);\n }\n this.classList.remove(\"hidden\");\n\n const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n return this.createTemplate(html`\n <div class=\"label-outer-container\">\n <div class=\"label-container\">\n <span i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</span>\n ${this.index != undefined && !this.hideAlternativeName ? html`<span i18n=\"index-alternative-${this.nameTextOverwrite}-${this.index}\">${this.index + 1}</span>` : html``}\n </div>\n </div>\n <div class=\"slider-container\">\n <fv-range-slider-input min=\"${ifDefined(this.Data.first.min)}\" max=\"${ifDefined(this.Data.first.max)}\" value=\"${ifDefined(this.Data.first.value)}\" decimals=\"${this.Digits}\" decimal-divider=\"${this.decimalDivider}\" unit=\"${this.Unit}\"></fv-range-slider-input>\n </div>\n `);\n }\n return this.createTemplate(html``);\n }\n}\n","import { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport { CSSResultGroup, TemplateResult, css, unsafeCSS, html } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from \"./configurator.form.element.shared.range.slider.component.sass?inline\";\nimport { SharedRangeSliderInputChangeData, SharedRangeSliderInputComponent } from \"../../standard/input/range-slider/shared.range.slider.input.component\";\nimport { ConfiguratorFormBase, FormElementInfo } from \"../configurator.form.base\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n\n@customElement(\"fv-configurator-form-element-shared-range-slider\")\nexport class ConfiguratorFormElementSharedRangeSliderComponent extends ConfiguratorFormBaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"float-unit\" })\n public floatUnit = \"cm\";\n @property({ type: Object, reflect: true, attribute: \"left-input-replacement\" })\n public leftInputReplacement: FormElementInfo | undefined = undefined;\n @property({ type: Object, reflect: true, attribute: \"right-input-replacement\" })\n public rightInputReplacement: FormElementInfo | undefined = undefined;\n @property({ type: String, reflect: true, attribute: \"range-slider-input-class\" })\n public rangeSliderInputClass = \"\";\n @property({ type: Boolean, reflect: true, attribute: \"trigger-change-on-mousemove\" })\n public triggerChangeOnMousemove = false;\n @property({ type: Number, reflect: true, attribute: \"mousemove-change-trigger-distance\" })\n public mousemoveChangeTriggerDistance = 10.0;\n\n\n @query(\"fv-shared-range-slider-input\")\n public sharedRangeSliderInput: SharedRangeSliderInputComponent | undefined;\n\n constructor() {\n super();\n\n this.addEventListener(\"sharedrangesliderinputchange\", async (event: CustomEventInit<SharedRangeSliderInputChangeData>) => {\n const performChange = async () => {\n if (event.detail) {\n const leftName = this.names[0];\n const leftData = this.Data.first;\n if (leftData.value == undefined) return;\n const leftType = ConfiguratorApiDataService.GetModificationType(leftData.type);\n if (leftType == \"error\") return;\n\n // const rightName = this.names[1];\n const rightData = this.Data.last;\n if (rightData.value == undefined) return;\n const rightType = ConfiguratorApiDataService.GetModificationType(rightData.type);\n if (rightType == \"error\") return;\n\n if (await this.Set({\n name: this.group,\n modifications: [{\n target: leftName,\n type: leftType,\n value: event.detail.left\n }/*, {\n target: rightName,\n type: rightType,\n value: event.detail.right\n } */]\n }, event.detail[\"triggered-from-move\"], event.detail[\"triggered-from-move\"])) {\n await this.UpdateAll(event.detail[\"triggered-from-move\"], [this]);\n }\n }\n };\n const changePromise = performChange();\n if (this.sharedRangeSliderInput) {\n this.sharedRangeSliderInput.FinalizeChangePromise = changePromise;\n }\n await changePromise;\n });\n }\n\n private getDigits(type_: string) {\n if (type_ == \"float\") return this.floatDigits;\n return 0;\n }\n private getUnit(type_: string): string {\n return type_ == \"float\" ? this.floatUnit : \"no\";\n }\n\n protected get ValueInfo(): Array<string> {\n return ConfiguratorApiDataService.GetValueInfo(this.group, this.groupReference, this.names);\n }\n\n protected MakeInputReplacement(property: FormElementInfo | undefined, slotPrefix: string): TemplateResult<1> {\n if (property == undefined) {\n return html``;\n }\n if (this.Form == undefined) {\n return html``;\n }\n\n if (property.name) {\n const targetFormElementData = ConfiguratorApiDataService.Get(this.group, this.groupReference, property.name);\n if (targetFormElementData.type === \"\") {\n return html``;\n }\n }\n if (property.names) {\n for (const name of property.names) {\n const targetFormElementData = ConfiguratorApiDataService.Get(this.group, this.groupReference, name);\n if (targetFormElementData.type === \"\") {\n return html``;\n }\n }\n }\n\n let name = property.name ? property.name : \"\";\n if (property.names != undefined) {\n for (const elementName of property.names) {\n name += elementName;\n name += \"-\";\n }\n name = name.substring(0, name.length - 1);\n }\n\n const component = ConfiguratorFormBase.CreateElement(property, this.group, this.Form, this.groupReference);\n component.id = \"id-\" + name;\n\n const slot = document.createElement(\"slot\");\n slot.name = \"slot-\" + name;\n\n const container = document.createElement(\"div\");\n container.classList.add(\"input-form-element\");\n container.slot = slotPrefix + \"-input-overwrite-slot\";\n container.appendChild(component);\n container.appendChild(slot);\n\n return html`${container}`;\n }\n\n protected render(): TemplateResult<1> {\n if (this.names.length < 2) {\n console.error(\"fv-configurator-form-element-shared-range-slider: too few names in json(should be exactly 2)!\", this.names);\n return html``;\n }\n if (this.names.length > 2) {\n console.error(\"fv-configurator-form-element-shared-range-slider: too many names in json(should be exactly 2)!\", this.names);\n return html``;\n }\n\n const leftName = this.names[0];\n const leftData = this.Data.first;\n if (leftData.type === \"\") {\n return html``;\n }\n\n const rightName = this.names[1];\n const rightData = this.Data.last;\n if (rightData.type === \"\") {\n return html``;\n }\n\n const disableInput = leftData.min == leftData.max;\n const textName = leftName + \"-\" + rightName;\n const textLabel = LocaleService.translate(textName, \"\");\n return this.createTemplate(html`\n ${textLabel ? html`\n <div class=\"label-container\">\n <span i18n=\"${textName}\">${textLabel}</span>\n </div>\n ` : \"\"}\n <fv-shared-range-slider-input\n class=\"${this.rangeSliderInputClass}\"\n decimals=\"${this.getDigits(leftData.type)}\"\n decimal-divider=\"${this.decimalDivider}\"\n unit=\"${this.getUnit(leftData.type)}\"\n left-value=\"${leftData.value ? leftData.value : 0}\"\n left-min=\"${leftData.min ? leftData.min : 0}\"\n left-max=\"${leftData.max ? leftData.max : 9999999}\"\n left-placeholder=\"${leftData.text ? leftData.text : \"\"}\"\n right-value=\"${rightData.value ? rightData.value : 0}\"\n right-min=\"${rightData.min ? rightData.min : 0}\"\n right-max=\"${rightData.max ? rightData.max : 9999999}\"\n right-placeholder=\"${rightData.text ? rightData.text : \"\"}\"\n ?disabled=\"${disableInput}\"\n ?trigger-change-on-mousemove=\"${this.triggerChangeOnMousemove}\"\n mousemove-change-trigger-distance=\"${this.mousemoveChangeTriggerDistance}\">\n ${this.MakeInputReplacement(this.leftInputReplacement, \"left\")}\n ${this.MakeInputReplacement(this.rightInputReplacement, \"right\")}\n </fv-shared-range-slider-input>\n `);\n }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.text.input.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n\n@customElement(\"fv-configurator-form-element-text-input\")\nexport class ConfiguratorFormElementTextInputComponent extends ConfiguratorFormBaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n protected render(): TemplateResult<1> {\n if (ConfiguratorApiDataService.Data) {\n if (this.Data.first.type !== \"string\") {\n this.classList.add(\"hidden\");\n return this.createTemplate(html``);\n }\n\n this.classList.remove(\"hidden\");\n\n const txt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n if (this.Data.first.changeable) {\n return this.createTemplate(html``);\n }\n return this.createTemplate(html`<span class=\"unchangeable-txt\" i18n=\"${txt}\">${LocaleService.translate(txt, txt)}</span>`);\n }\n return this.createTemplate(html``);\n }\n};","import { CSSResultGroup, css, unsafeCSS, TemplateResult, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport style from \"./configurator.form.wrapper.component.sass?inline\";\nimport { BaseElement } from \"../../standard/base/base.component\";\n\n@customElement(\"fv-configurator-form-wrapper-element\")\nexport class ConfiguratorFormWrapperElementComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: false, attribute: \"group\" })\n public group: string = \"\";\n\n @property({ type: String, reflect: false, attribute: \"title\" })\n public title: string = \"\";\n\n @property({ type: String, reflect: false, attribute: \"title-suffix\" })\n public titleSuffix: string = \"\";\n\n @property({ type: Boolean, reflect: false, attribute: \"toggles\" })\n public toggles = false;\n\n @property({ type: Boolean, reflect: false, attribute: \"clickable\" })\n public clickable = true;\n\n @property({ type: String, reflect: false, attribute: \"closed-icon\" })\n public closedIcon = \"\";\n\n @property({ type: String, reflect: false, attribute: \"open-icon\" })\n public openIcon = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"starts-closed\" })\n public startsClosed = false;\n\n @property({type: Boolean, reflect: true, attribute: \"is-closed\"})\n public isClosed = false;\n\n private static closedStates: { [key: string]: boolean } = {};\n\n connectedCallback() {\n super.connectedCallback();\n const key = this.getKey();\n if (ConfiguratorFormWrapperElementComponent.closedStates[key] === undefined) {\n ConfiguratorFormWrapperElementComponent.closedStates[key] = this.startsClosed;\n }\n this.isClosed = ConfiguratorFormWrapperElementComponent.closedStates[key];\n }\n\n private getKey(): string {\n return `${this.group}-${this.title}`;\n }\n\n private handleTitleClick() {\n if (!this.clickable) {\n return;\n }\n\n const key = this.getKey();\n this.isClosed = !this.isClosed;\n ConfiguratorFormWrapperElementComponent.closedStates[key] = this.isClosed;\n }\n\n private handleTransitionEnd(event: TransitionEvent) {\n if (event.propertyName === \"max-height\") {\n this.dispatchEvent(new CustomEvent(\"wrapper-clicked\", {\n detail: { key: this.getKey() }\n }));\n }\n }\n\n private getWrapperTitleClasses() {\n return {\n 'wrapper-title': true,\n [`wrapper-title-${this.group}-${this.title}`]: true,\n 'toggling-wrapper-title': this.toggles\n };\n }\n\n private getWrapperClasses() {\n return {\n 'wrapper': true,\n [`wrapper-${this.group}-${this.title}`]: true,\n 'closed': this.isClosed,\n 'open': !this.isClosed\n };\n }\n\n private getToggleIconClasses() {\n const iconClasses = this.isClosed ? this.closedIcon : this.openIcon;\n const classArray = iconClasses.split(' ').filter(c => c.trim());\n\n return {\n 'toggle-icon': true,\n ...Object.fromEntries(classArray.map(c => [c, true]))\n };\n }\n\n private renderTitle() {\n if (!this.title) {\n return '';\n }\n if (this.titleSuffix == \"\") {\n return html`<fv-label class=\"custom\" i18n=\"${this.title}\">${this.title}</fv-label>`;\n }\n return html`<fv-label class=\"custom\" i18n=\"${this.title}\">${this.title}</fv-label><fv-label i18n=\"${this.titleSuffix}\">${this.titleSuffix}</fv-label>`;\n }\n\n private renderToggleIcon() {\n if (!this.toggles) {\n return '';\n }\n return html`<div class=\"${classMap(this.getToggleIconClasses())}\"></div>`;\n }\n\n protected render(): TemplateResult<1> {\n const containerClass = `wrapper-container wrapper-container-${this.group}-${this.title}`;\n\n return html`\n <div class=\"${containerClass}\">\n <div class=\"${classMap(this.getWrapperTitleClasses())}\">\n <slot id=\"title\" name=\"title\"></slot>\n <div class=\"wrapper-toggle\" @click=\"${this.handleTitleClick}\">\n ${this.renderTitle()}\n ${this.renderToggleIcon()}\n </div>\n </div>\n <div class=\"${classMap(this.getWrapperClasses())}\" @transitionend=\"${this.handleTransitionEnd}\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n","import {css, CSSResultGroup, html, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport style from \"./webcab-enable-disable-button.component.sass?inline\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {WebCabApiService} from \"@dh-software/webui-api\";\nimport {IWebCabApiClick, IWebCabApiUiData } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-webcab-enable-disable-button\")\nexport class WebcabEnableDisableButtonComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({reflect: false, attribute: false})\n clickDetails: IWebCabApiClick | undefined = undefined\n\n @property({type: String, reflect: true, attribute: \"customer-type\"})\n customerType = \"\"\n\n @property({type: String, reflect: true, attribute: \"config-suffix\"})\n configSuffix = \"\"\n\n constructor() {\n super();\n\n this.setAttribute(\"component-name\", \"EnableDisableWebCabButton\");\n this.addEventListener(\"click\", async () => {\n if (this.clickDetails) {\n const enable: boolean = parseInt(this.clickDetails.value) > 0;\n let res: IWebCabApiUiData | undefined = undefined;\n if (enable) {\n res = await WebCabApiService.EnableWebCabs(this.customerType, this.configSuffix, this.clickDetails.InstanceIdentFilter);\n } else {\n res = await WebCabApiService.DisableWebCabs(this.customerType, this.configSuffix, this.clickDetails.InstanceIdentFilter);\n }\n if (res) {\n // res = await WebCabApi.GetUIs(this.customerType, this.configSuffix);\n this.dispatchEvent(new WebCabEnableDisableButtonToggleEvent(res));\n }\n }\n });\n }\n\n protected render(): TemplateResult<1> {\n this.setAttribute(\"exportparts\", \"enable-button,disable-button\");\n\n if (this.clickDetails) {\n const enable: boolean = parseInt(this.clickDetails.value) > 0;\n if (enable) {\n return html`\n <div class=\"button enable\" part=\"enable-button\"></div>`;//enable\n }\n return html`\n <div class=\"button disable\" part=\"disable-button\"></div>`;//disable\n }\n return html``;//error click-data not set\n }\n}\n\n\nexport class WebCabEnableDisableButtonToggleEvent extends CustomEvent<IWebCabApiUiData> {\n constructor(data_: IWebCabApiUiData) {\n super(\"webcab-enable-disable-button-toggle\", {detail: data_, bubbles: true, composed: true});\n }\n}\n","import { html, css, unsafeCSS, TemplateResult } from \"lit\";\nimport { OptionSelectionModalComponent, OptionSelectionModalOption, OptionSelectionOptionClickedEventData } from \"../../standard/modal/option-selection-modal.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport style from \"./webcab-option-selection.component.sass?inline\";\nimport {WebCabApiService} from \"@dh-software/webui-api\";\nimport { IBulkValueModification, IWebCabApiUiComponentsData } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-webcab-option-selection\")\nexport class WebCabOptionSelection extends OptionSelectionModalComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property()\n webcabSettings: WebCabOptionSelectionSettings = {\n \"close-on-active-option-click\": false,\n manufacturer: \"\",\n program: \"\",\n \"ui-type\": \"\"\n }\n\n @property()\n configurationState: \"\" | \"open\" = \"\";\n\n\n private planning = \"\";\n private configuration = false;\n private activeOption: WebCabOptionSelectionActiveOption = { key: \"\", option: { replacers: {} }, \"option-element\": undefined };\n\n constructor() {\n super();\n\n this.addEventListener(\"option-selection-option-clicked\", this.onOptionSelectionClicked);\n\n this.addEventListener(\"option-selection-options-hidden\", ()=>{\n this.close(true);\n });\n }\n\n private onOptionSelectionClicked(ev: any): void {\n const eventDetail: OptionSelectionOptionClickedEventData = ev.detail;\n const option: HTMLDivElement = eventDetail[\"option-element\"];\n\n // skip as needed\n if ( this.webcabSettings[\"close-on-active-option-click\"] && option.classList.contains(\"active\") ) {\n this.continue();\n return;\n }\n\n // set values based on clicked element\n const additional = eventDetail && eventDetail.option ? eventDetail.option[\"additional-data\"] : undefined;\n if ( additional ) {\n this.planning = additional && additional[\"planning-name\"] ? additional[\"planning-name\"] as string : \"\";\n this.configuration = additional && additional[\"show-configuration\"] ? additional[\"show-configuration\"] as boolean : false;\n this.activeOption.key = eventDetail.key;\n this.activeOption.option = eventDetail.option;\n this.activeOption[\"option-element\"] = eventDetail[\"option-element\"];\n }\n\n // dispatch additional Event\n this.dispatchEvent(new WebCabOptionSelectionOptionClicked(eventDetail));\n\n //enable control-button\n const controls: HTMLDivElement | null = this.shadowRoot ? this.shadowRoot?.querySelector(\".controls-container\") : null;\n if ( controls ) {\n controls.part.remove(\"controls-disabled\");\n controls.classList.remove(\"disabled\");\n }\n }\n\n\n private getControls() {\n return {\n \"container-class\": this.activeOption.key.length > 0 ? \"\" : \" disabled\",\n \"container-part\": this.activeOption.key.length > 0 ? \"\": \"controls-disabled\"\n };\n }\n\n private basicRender(containerClass: string, containerPart: string) {\n return super.buildContent(html`\n <div class=\"controls-container${containerClass}\" part=\"${containerPart}\">\n <slot name=\"controls\"></slot>\n </div>\n `);\n }\n private configurationRender(containerClass: string, containerPart: string): TemplateResult<1> {\n return super.build(html`\n <div class=\"configuration-container\">\n <slot name=\"configuration\"></slot>\n </div>\n <div class=\"controls-container${containerClass}\" part=\"${containerPart}\">\n <slot name=\"controls\"></slot>\n </div>\n `);\n }\n\n render(): TemplateResult<1> {\n const controls = this.getControls();\n\n let content: unknown = undefined;\n if ( this.configurationState.length > 0 ) {\n content = this.configurationRender(controls[\"container-class\"], controls[\"container-part\"]);\n }\n if ( !content ) {\n content = this.basicRender(controls[\"container-class\"], controls[\"container-part\"]);\n }\n\n this.dispatchEvent(new WebcabOptionSelectionRenderedEvent());\n return content as TemplateResult<1>;\n }\n\n public async continue(): Promise<void> {\n if ( this.planning.length > 0 ) {\n if ( this.configuration && this.configurationState.length < 1 ) {\n this.configurationState = \"open\";// set and thus render anew\n return;\n }\n this.close();\n this.configurationState = \"\";\n }\n }\n\n public async close(skipHide_ = false): Promise<void> {\n this.dispatchEvent(new WebCabOptionSelectionSelectionCloseEvent({\n \"active-option\": {\n key: this.activeOption.key,\n option: this.activeOption.option,\n \"option-element\": this.activeOption[\"option-element\"]\n },\n planning: this.planning,\n configuration: this.configuration\n }));\n\n if ( !skipHide_ ) {\n this.hide();\n }\n }\n public async open(): Promise<void> {\n this.configurationState = \"\";\n this.show();\n }\n\n public async SetCornerPlanningValues(params_: WebCabCornerPlanningValues, customerType_: string, configuSuffix_?: string | undefined): Promise<void> {\n const bulk: Array<IBulkValueModification> = new Array<IBulkValueModification>();\n bulk.push({\n key: params_.left.instanceIdent,\n modifications: [\n { target: \"ItemManager.OuterFrameWidth\", value: params_.left.width.toFixed(2) },\n { target: \"OuterFrame.Height\", value: params_.left.height.toFixed(2) },\n { target: \"ItemManager.Depth\", value: params_.left.depth.toFixed(2) }\n ]\n });\n bulk.push({\n key: params_.right.instanceIdent,\n modifications: [\n { target: \"ItemManager.OuterFrameWidth\", value: params_.right.width.toFixed(2) },\n { target: \"OuterFrame.Height\", value: params_.right.height.toFixed(2) },\n { target: \"ItemManager.Depth\", value: params_.right.depth.toFixed(2) }\n ]\n });\n await WebCabApiService.BulkModifyValues(customerType_, bulk, configuSuffix_ ? configuSuffix_ : \"\");\n }\n public async GetRelevantArticles(): Promise<number[]> {\n const relevantArticles: Array<number> = new Array<number>();\n const articles = await WebCabApiService.GetPlanned();\n for ( const article of articles ) {\n relevantArticles.push(article.instanceIdent);\n }\n // const articles = await CommunicationMessageService.getPlannedArticles();\n // for ( const article of articles ) {\n // if ( article.keys.includes(10017) || article.keys.includes(10019) ) {// Check if article has the WebCab-Key\n // relevantArticles.push(article.instanceIdent);\n // }\n // }\n return relevantArticles;\n }\n\n public async GetUiFromPoConfig(manufacturer_: string, program_: string, article_: string, configSuffix_: string, customerType_: string, forceCorner_: boolean): Promise<IWebCabApiUiComponentsData> {\n return await WebCabApiService.GetUiFromPoConfig(manufacturer_, program_, article_, configSuffix_, customerType_, forceCorner_);\n }\n}\n\nexport interface WebCabOptionSelectionSettings {\n \"close-on-active-option-click\": boolean,\n manufacturer: string,\n program: string,\n \"ui-type\": string\n}\nexport interface WebCabPlanningValues {\n instanceIdent: number,\n height: number,\n width: number,\n depth: number\n}\nexport interface WebCabCornerPlanningValues {\n left: WebCabPlanningValues,\n right: WebCabPlanningValues\n}\n\nexport class WebCabOptionSelectionOptionClicked extends CustomEvent<OptionSelectionOptionClickedEventData> {\n constructor(callbackData_: OptionSelectionOptionClickedEventData) {\n super(\"webcab-option-selection-option-clicked\", { detail: callbackData_, bubbles: true });\n }\n}\n\nexport class WebcabOptionSelectionRenderedEvent extends CustomEvent<unknown> {\n constructor() {\n super(\"webcab-option-selection-rendered\", { detail: {}, bubbles: true });\n }\n}\n\nexport interface WebCabOptionSelectionActiveOption {\n key: string,\n option: OptionSelectionModalOption,\n \"option-element\": HTMLDivElement | undefined\n}\nexport interface WebCabOptionSelectionSelectionCloseEventData {\n \"active-option\"?: WebCabOptionSelectionActiveOption,\n planning: string,\n configuration: boolean\n}\nexport class WebCabOptionSelectionSelectionCloseEvent extends CustomEvent<WebCabOptionSelectionSelectionCloseEventData> {\n constructor(callbackData_: WebCabOptionSelectionSelectionCloseEventData) {\n super(\"webcab-option-selection-close-event\", { detail: callbackData_, bubbles: true });\n }\n}\n","import { BaseElement } from \"../../standard/base/base.component\";\nimport style from \"./webcab-display-option-selection.component.sass?inline\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\n// Inlined \"webcabchangeloading\" — avoids importing WebCabChangeLoadingEvent\n// from webcab-ui.component (which depends on this file).\nfunction dispatchWebCabChangeLoading(target: EventTarget, value: boolean): void {\n target.dispatchEvent(new CustomEvent<boolean>(\"webcabchangeloading\", {\n bubbles: true,\n composed: true,\n detail: value,\n }));\n}\nimport { SelectionChangeEventInit } from \"../../standard/select/select-option.component\";\nimport { PopUpChangeEventInit } from \"../../standard/select/select.component\";\nimport {LocaleService, WebCabApiService} from \"@dh-software/webui-api\";\nimport {IDisplayOptionSelectionModification, IWebCabApiComponentData, IWebCabApiUiData } from \"@dh-software/webui-types\";\n\n\nexport type WebCabSelectionChangeEventInit = CustomEventInit<{ option: string, element: HTMLElement, uidata: IWebCabApiUiData }>;\nclass WebCabSelectionChangeEvent extends CustomEvent<{ option: string, element: HTMLElement, uidata: IWebCabApiUiData }> {\n constructor(option: string, element: HTMLElement, uidata: IWebCabApiUiData) {\n super(\"webcabselectionchange\", {\n bubbles: true,\n composed: true,\n detail: { option: option, element: element, uidata: uidata }\n } as WebCabSelectionChangeEventInit);\n }\n}\n\nexport type WebCabPopUpChangeEventInit = CustomEventInit<{ open: boolean, element: WebCabDisplayOptionSelectionComponent }>;\nclass WebCabPopUpChangeEvent extends CustomEvent<{ open: boolean, element: WebCabDisplayOptionSelectionComponent }> {\n constructor(open: boolean, element: WebCabDisplayOptionSelectionComponent) {\n super(\"webcabpopupchange\", {\n bubbles: true,\n composed: true,\n detail: { open: open, element: element }\n } as WebCabPopUpChangeEventInit);\n }\n}\n\n\n@customElement(\"fv-webcab-display-option-selection\")\nexport class WebCabDisplayOptionSelectionComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Object, reflect: true, attribute: \"component-data\" })\n public componentData: IWebCabApiComponentData = { name: \"\" };\n\n @property({ type: Number, reflect: true, attribute: \"max-amount-select-by-buttons\" })\n public maxAmountSelectByButtons = 3;\n\n @property({ type: String, reflect: true, attribute: \"customer-type\" })\n customerType = \"\";\n\n @property({ type: String, reflect: true, attribute: \"config-suffix\" })\n configSuffix = \"\";\n\n @property({ type: Number, reflect: true, attribute: \"instance-ident\" })\n instanceIdent = -1;\n\n @property({ type: Boolean, reflect: true, attribute: \"open\" })\n open = false;\n\n @property({ type: Object, reflect: true, attribute: \"selected\" })\n selected: IWebCabApiComponentData | undefined = undefined;\n\n constructor() {\n super();\n\n this.addEventListener(\"selectionchange\", (event: SelectionChangeEventInit)=>{\n if (event.detail && event.detail.option) {\n dispatchWebCabChangeLoading(this, true);\n this.selectOption(JSON.parse(event.detail.option.replaceAll(\"\\\\\\\"\", \"\\\"\"))).then((result)=>{\n if (result == undefined || event.detail == undefined || event.detail.option == undefined || event.detail.element == undefined) return;\n this.dispatchEvent(new WebCabSelectionChangeEvent(event.detail.option, event.detail.element, result));\n dispatchWebCabChangeLoading(this, false);\n });\n }\n });\n\n this.addEventListener(\"popupchange\", (event: PopUpChangeEventInit)=>{\n if (event.detail && event.detail.open != undefined) {\n this.dispatchEvent(new WebCabPopUpChangeEvent(event.detail.open, this));\n }\n });\n }\n\n private async selectOption(component : IWebCabApiComponentData): Promise<IWebCabApiUiData | undefined> {\n if (component.click == undefined || component.click.xGroupId == undefined || component.click.xInGroupId == undefined) return undefined;\n\n this.selected = component;\n\n const modifications: Array<IDisplayOptionSelectionModification> = [];\n for (const target of component.click.ModificationTargets) {\n const modification: IDisplayOptionSelectionModification = {\n target: target,\n value: component.click.value,\n additional: \"\"\n };\n const additional: {\n xGroupId: string,\n xInGroupId: string,\n definition: string,\n zSpaceId?: string,\n } = {\n xGroupId: component.click.xGroupId,\n xInGroupId: component.click.xInGroupId,\n definition: this.componentData.name\n };\n if (component.click.zSpaceId != undefined) additional.zSpaceId = component.click.zSpaceId;\n modification.additional = JSON.stringify(additional);\n modifications.push(modification);\n }\n return await WebCabApiService.ModifyValues(this.customerType, modifications, this.configSuffix, [this.instanceIdent]);\n }\n\n private createOption(component: IWebCabApiComponentData): TemplateResult<1> {\n return html`<fv-select-option class=\"option\" option=\"${JSON.stringify(component).replaceAll(\"\\\"\", \"\\\\\\\"\")}\" display-value=\"${LocaleService.translate(component.name, component.name)}\">${LocaleService.translate(component.name, component.name)}</fv-select-option>`;\n }\n\n private createOptions(components: Array<IWebCabApiComponentData>): Array<TemplateResult<1>> {\n const result = new Array<TemplateResult<1>>();\n for (const component of components) {\n result.push(this.createOption(component));\n }\n return result;\n }\n\n render(): TemplateResult<1> {\n if (this.componentData.components == undefined) return html`<div>ERROR!! ${this.componentData.name} - does not define any display options!</div>`;\n\n const currentValue = this.componentData.attributes ? this.componentData.attributes.value : \"\";\n const selectedComponent = this.componentData.components.find((value: IWebCabApiComponentData)=>{\n return value.name === currentValue;\n });\n if (this.selected != selectedComponent) {\n this.selected = selectedComponent;\n }\n const selected = selectedComponent != undefined ? JSON.stringify(selectedComponent).replaceAll(\"\\\"\", \"\\\\\\\"\") : \"\";\n\n if (this.componentData.components.length <= this.maxAmountSelectByButtons) {\n this.classList.add(\"select-by-buttons\");\n }\n else {\n this.classList.remove(\"select-by-buttons\");\n }\n\n return html`\n <fv-select class=\"container\" max-amount-select-by-buttons=\"${this.maxAmountSelectByButtons}\" i18n-placeholder=\"your_selection\" selected=\"${selected}\" selected-display-value=\"${selectedComponent ? LocaleService.translate(selectedComponent.name, selectedComponent.name) : \"\"}\" ?open=\"${this.open}\">\n ${this.createOptions(this.componentData.components)}\n </fv-select>\n `;\n }\n}\n","import { css, html, unsafeCSS, TemplateResult, PropertyValues } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport style from \"./webcab-value-input.component.sass?inline\";\nimport { BaseElement, Units } from \"../../standard/base/base.component\";\nimport { ConstrainedInputComponent } from \"../../standard/input/contrained-input/constrained.input.component\";\nimport { IGroupModification, ISpaceModification, IValueModification, IWebCabApiUiData, IZSplittingModification } from \"@dh-software/webui-types\";\nimport {WebCabApiService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-webcab-value-input\")\nexport class WebCabValueInputComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private get min () {\n return this.minValue ? this.minValue : 0.0;\n }\n private get max () {\n return this.maxValue ? this.maxValue : 99999999.99;\n }\n\n @property({ type: Number, reflect: true })\n increment: number | undefined = undefined;\n\n @property({ type: Number, reflect: true, attribute: \"fraction-digits\" })\n fractionDigits = 0;\n\n @property({ type: Number, reflect: true })\n timeoutms = 500;\n\n @property({ type: Boolean, reflect: true, attribute: \"prevent-inline-label\" })\n preventInlineLabel = false;\n\n @property({ type: String, reflect: true, attribute: \"customer-type\" })\n customerType = \"\";\n\n @property({ type: String, reflect: true, attribute: \"config-suffix\" })\n configSuffix = \"\";\n\n @property({ type: Number, reflect: true, attribute: \"instance-ident\" })\n instanceIdent = -1;\n\n @property({ type: Number, reflect: true })\n value = 0;\n\n @property({ type: String, reflect: true })\n name = \"\";\n\n @property({ type: String, reflect: true, attribute: \"group-id\" })\n GroupID: string | undefined = undefined;\n\n @property({ type: String, reflect: true, attribute: \"in-group-id\" })\n InGroupID: string | undefined = undefined;\n @property({ type: String, reflect: true, attribute: \"z-space-id\" })\n ZSpaceID: string | undefined = undefined;\n\n @property({ type: String, reflect: true, attribute: \"modification-targets\" })\n ModificationTargets: string | undefined = undefined;\n\n @property({ type: Number, reflect: true, attribute: \"min-value\" })\n minValue: number | undefined = undefined;\n\n @property({ type: Number, reflect: true, attribute: \"max-value\" })\n maxValue: number | undefined = undefined;\n\n @property({ type: String, reflect: true, attribute: \"unit-txt\" })\n unitTxt: Units = \"error\";\n\n @property({ type: Number, reflect: true, attribute: \"dim-scale\" })\n dimScale: number | undefined = undefined;\n\n\n private oldvalue = 0;\n\n constructor() {\n super();\n }\n private change(ev_: Event) {\n const target: ConstrainedInputComponent = ev_.target as ConstrainedInputComponent;\n if ( target ) {\n const changeEventData: WebCabValueInputChangedData = {\n \"old-value\": this.value,\n value: 0\n };\n this.value = target.value;\n changeEventData.value = this.value;\n\n const changeEvent = new WebCabValueInputChanged(changeEventData);\n this.dispatchEvent(changeEvent);\n }\n }\n\n private applyDimScale(value_: number) {\n if (this.dimScale) {\n return value_ * (1 / this.dimScale);\n }\n return value_;\n }\n\n render(): TemplateResult<1> {\n const increase = this.value != this.max, decrease = this.value != this.min;\n\n const additionalSuffix = this.querySelector(\"[slot='additional-suffix']\");\n\n const hasInlinesuffix = this.unitTxt != undefined && this.unitTxt.length > 0 && this.unitTxt != \"error\";\n const inlineSuffix = hasInlinesuffix ? \" \"+this.unitTxt : \"\";\n const result = html`\n <div class=\"label-outer-container${this.preventInlineLabel ? \"\" : \" inline\"}\">\n <div class=\"label-container\">\n <span><slot name=\"label\"></slot></span>\n </div>\n <div part=\"label-suffixes-container\" class=\"label-suffixes-container\">\n <div part=\"min-max-label\" class=\"label-suffix-container\">\n <span><label part=\"min-label\" class=\"minmax-labels\">${this.min.toFixed(this.fractionDigits) + inlineSuffix}</label></span>\n <span><label part=\"min-max-label-dash\" class=\"min-max-label-dash\"> - </label></span>\n <span><label part=\"max-label\" class=\"minmax-labels\">${this.max.toFixed(this.fractionDigits) + inlineSuffix}</label></span>\n </div>\n ${ additionalSuffix != undefined ? html`<div part=\"additional-suffix-container\"><slot name=\"additional-suffix\"></slot></div>` : html`` }\n </div>\n </div>\n <fv-constrained-input \n @change=\"${this.change}\"\n min=\"${this.minValue ? this.applyDimScale(this.minValue) : 0}\"\n max=\"${this.maxValue ? this.applyDimScale(this.maxValue) : 0}\"\n value=\"${this.value ? this.applyDimScale(this.value) : 0}\"\n step=\"${this.increment ? this.increment : 1}\"\n decimals=\"${this.fractionDigits}\"\n unit=\"${this.unitTxt}\"\n timeoutms=\"${this.timeoutms}\"\n show-increase-decrease hide-unused-unit-container pool-repeated-button-clicks>\n\n <div slot=\"increase\" part=\"increase-button${increase ? \"\" : \" disabled\"}\" class=\"indecrease-button increase-button${increase ? \"\" : \" disabled\"}\">\n <slot name=\"increase-button\"></slot>\n </div>\n <div slot=\"decrease\" part=\"decrease-button${decrease ? \"\" : \" disabled\"}\" class=\"indecrease-button decrease-button${decrease ? \"\" : \" disabled\"}\">\n <slot name=\"decrease-button\"></slot>\n </div>\n\n </fv-constrained-input>\n `;\n this.oldvalue = this.value;\n\n this.setAttribute(\"exportparts\", \"label-suffixes-container, additional-suffix-container, min-max-label, min-label, min-max-label-dash, max-label, input, input-suffix-container, input-suffix, increase-button, decrease-button, disabled\");\n return result;\n }\n\n async updated(_changedProperties: PropertyValues): Promise<void> {\n super.updated(_changedProperties);\n this.dispatchEvent(new WebCabValueInputRenderedEvent());\n }\n\n private async refreshComponent(uidata_?: IWebCabApiUiData | undefined) {\n if ( this.name && this.name.length > 0 ) {\n let uidata = uidata_;\n if (uidata_ == undefined) {\n uidata = await WebCabApiService.GetUIs(this.customerType, this.configSuffix, [this.instanceIdent]);\n }\n if (uidata != undefined && uidata[this.instanceIdent] != undefined && uidata[this.instanceIdent].components != undefined) {\n const components = uidata[this.instanceIdent].components;\n for (const component of components) {\n if (component && component.name === this.name) {\n if (component.change) {\n this.GroupID = component.change.GroupID ? component.change.GroupID : undefined;\n this.InGroupID = component.change.InGroupID ? component.change.InGroupID : undefined;\n this.ModificationTargets = component.change.ModificationTargets ? JSON.stringify(component.change.ModificationTargets) : undefined;\n }\n if (component.attributes) {\n this.maxValue = component.attributes.max;\n this.minValue = component.attributes.min;\n this.unitTxt = component.attributes[\"unit-txt\"] == \"\" ? \"error\" : component.attributes[\"unit-txt\"];\n }\n return;\n }\n }\n }\n }\n }\n\n public dispatchLoadingEvent(loading_: boolean, uiData_?: IWebCabApiUiData): void {\n this.dispatchEvent(new CustomEvent(\"webcab-value-input-loading\", { detail: { loading: loading_, uiData: uiData_ }, bubbles: true, composed: true }));\n }\n public async ChangeCount(preventLimitToInstanceIdent_ = false): Promise<void> {\n if ( this.oldvalue != this.value ) {\n if (!this.GroupID) {\n console.error(\"groupId invalid:\", this.GroupID);\n return;\n }\n if (!this.ModificationTargets) {\n console.error(\"ModificationTargets invalid!\");\n return;\n }\n\n this.dispatchLoadingEvent(true);\n\n const modificationTargets: Array<string> = JSON.parse(this.ModificationTargets);\n const modifications: Array<IGroupModification> = [];\n for (const target of modificationTargets) {\n modifications.push({\n GroupID: this.GroupID,\n target: target,\n value: this.value.toFixed(0)\n });\n }\n const uidata = await WebCabApiService.ModifyGroups(this.customerType, modifications, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n await this.refreshComponent(uidata);\n\n this.dispatchLoadingEvent(false, uidata);\n }\n }\n public async ModifyFloatValue(preventLimitToInstanceIdent_ = false): Promise<void> {\n if ( this.oldvalue != this.value ) {\n if (this.ModificationTargets == undefined) {\n console.error(\"ModificationTargets are not set!\");\n return;\n }\n\n this.dispatchLoadingEvent(true);\n\n const modificationTargets: Array<string> = JSON.parse(this.ModificationTargets);\n const modifications: Array<IValueModification> = [];\n for (const target of modificationTargets) {\n modifications.push({\n target: target,\n value: this.value.toFixed(2)\n });\n }\n const uidata = await WebCabApiService.ModifyValues(this.customerType, modifications, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n await this.refreshComponent(uidata);\n\n this.dispatchLoadingEvent(false, uidata);\n }\n }\n public async ModifyZSplitting(preventLimitToInstanceIdent_ = false, isFloat: boolean): Promise<void> {\n if ( this.oldvalue != this.value ) {\n if (this.ModificationTargets == undefined) {\n console.error(\"ModificationTargets are not set!\");\n return;\n }\n\n this.dispatchLoadingEvent(true);\n\n const modificationTargets: Array<string> = JSON.parse(this.ModificationTargets);\n const modifications: Array<IZSplittingModification> = [];\n for (const target of modificationTargets) {\n modifications.push({\n XGroupID: this.GroupID ? this.GroupID : \"\",\n XInGroupID: this.InGroupID ? this.InGroupID : \"\",\n ZSpaceIndex: this.ZSpaceID ? this.ZSpaceID : undefined,\n target: target,\n value: isFloat ? this.value.toFixed(2) : this.value.toFixed(0)\n });\n }\n\n await WebCabApiService.ModifyZSplitting(this.customerType, modifications, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n const uidata = await WebCabApiService.GetUIs(this.customerType, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n await this.refreshComponent(uidata);\n\n this.dispatchLoadingEvent(false, uidata);\n }\n }\n public async ModifySingleSpace(preventLimitToInstanceIdent_ = false): Promise<void> {\n if ( this.oldvalue != this.value ) {\n if (!this.GroupID || !this.InGroupID || !this.ModificationTargets) {\n if (!this.GroupID) {\n console.error(\"GroupId invalid:\", this.GroupID);\n }\n if (!this.InGroupID) {\n console.error(\"InGroupId invalid:\", this.InGroupID);\n }\n if (!this.ModificationTargets) {\n console.error(\"modificationTarget invalid!\");\n }\n return;\n }\n\n this.dispatchLoadingEvent(true);\n\n const modificationTargets: Array<string> = JSON.parse(this.ModificationTargets);\n const modifications: Array<ISpaceModification> = [];\n for (const target of modificationTargets) {\n modifications.push({\n GroupID: this.GroupID,\n InGroupID: this.InGroupID,\n target: target,\n value: this.value.toFixed(2)\n });\n }\n await WebCabApiService.ModifySpaces(this.customerType, modifications, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n const uidata = await WebCabApiService.GetUIs(this.customerType, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n await this.refreshComponent(uidata);\n\n this.dispatchLoadingEvent(false, uidata);\n }\n }\n}\n\nexport class WebCabValueInputRenderedEvent extends CustomEvent<unknown> {\n constructor() {\n super(\"webcab-value-input-rendered\", { detail: {}, bubbles: true, composed: true });\n }\n}\nexport interface WebCabValueInputChangedData {\n \"old-value\": number,\n value: number\n}\nexport class WebCabValueInputChanged extends CustomEvent<WebCabValueInputChangedData> {\n constructor(data_: WebCabValueInputChangedData) {\n super(\"webcab-value-input-changed\", { detail: data_, bubbles: true, composed: true });\n }\n}\n","import { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { WebCabValueInputComponent } from \"./webcab-value-input.component\";\nimport style from \"./webcab-ui.component.sass?inline\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { WebcabEnableDisableButtonComponent } from \"./webcab-enable-disable-button.component\";\nimport type { WebCabDisplayOptionSelectionComponent, WebCabSelectionChangeEventInit } from \"../base/webcab-display-option-selection.component\";\nimport type { WebCabPopUpChangeEventInit } from \"../base/webcab-display-option-selection.component\";\n\n// Runtime-resolved instanceof to keep type narrowing without a static import cycle.\nfunction isDisplayOptionSelection(el: unknown): el is WebCabDisplayOptionSelectionComponent {\n const ctor = customElements.get(\"fv-webcab-display-option-selection\");\n return ctor != undefined && el instanceof ctor;\n}\nimport {\n IValueModification,\n IWebCabApiClick,\n IWebCabApiComponentData,\n IWebCabApiUiComponentsData,\n IWebCabApiUiData,\n} from \"@dh-software/webui-types\";\nimport {EventFactoryService, WebCabApiService} from \"@dh-software/webui-api\";\nimport type { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-webcab-ui:toggle-dimension-visuals\": Record<string, never>;\n }\n}\n\nexport type WebCabChangeLoadingEventInit = CustomEventInit<boolean>;\nexport class WebCabChangeLoadingEvent extends CustomEvent<boolean> {\n constructor(value: boolean) {\n super(\"webcabchangeloading\", {\n bubbles: true,\n composed: true,\n detail: value\n });\n }\n}\n\n\nexport type WebCabTemplateReplaceEventInit = CustomEventInit<{ template: string, webcabui: WebCabUiComponent, index: number }>;\nexport class WebCabTemplateReplaceEvent extends CustomEvent<{ template: string, webcabui: WebCabUiComponent, index: number }> {\n constructor(template: string, webcabui: WebCabUiComponent, index: number) {\n super(\"webcabtemplatereplace\", {\n bubbles: true,\n composed: true,\n detail: { template: template, webcabui: webcabui, index: index }\n });\n }\n}\n\n\n@customElement(\"fv-webcab-ui\")\nexport class WebCabUiComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private openedPopups: Array<string> = [];\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-webcab-ui:toggle-dimension-visuals\": async () => {\n await this.SetDisableDimensionVisuals(!await this.GetDisableDimensionVisuals());\n },\n };\n\n private showing = false;\n private shown = false;\n private updateEventActive = false;\n private _components: WebCabUiDataList = {};\n private _elementControlsComponents: { [key: number]: {[key: string]: IWebCabApiComponentData}} = {};\n\n private setElementUiComponents(instanceIdent_: number, webcabUiData_: WebCabUiData, preventUpdateRequest_ = false) {\n this._components[instanceIdent_] = webcabUiData_;\n\n for (let index = 0; index < this.webcabuis.length; ++index) {\n if (this.webcabuis[index][\"instance-ident\"] == instanceIdent_) {\n this.webcabuis[index].disabled = webcabUiData_.disabled;\n }\n }\n\n const controlsTemplate = this.querySelector(this.settings[\"element-controls-template-selector\"]);\n if (!controlsTemplate) return;\n\n const componentName = controlsTemplate.getAttribute(\"component-name\");\n if (!componentName) return;\n\n const components = webcabUiData_.data[componentName].components;\n if (components) {\n this._elementControlsComponents[instanceIdent_] = {};\n\n for (const component of components) {\n if (component.name) {\n this._elementControlsComponents[instanceIdent_][component.name] = component;\n }\n }\n if (!preventUpdateRequest_) {\n this.requestUpdate();\n }\n }\n }\n public get components(): WebCabUiDataList {\n return this._components;\n }\n\n @property({ attribute: false })\n webcabuis: Array<WebCabObjectUiAttributes> = new Array<WebCabObjectUiAttributes>();\n\n @property({ type: Object, attribute: true })\n settings: WebCabUiSettings = {\n \"object-ui-settings\": {\n \"customer-type\": \"\",\n \"config-suffix\": \"\",\n increment: 0,\n \"fraction-digits\": 0,\n \"input-buttons-timeout-ms\": 500,\n },\n \"object-heading-template-selector\": \"\",\n \"controls-template-selector\": \"\",\n \"element-controls-template-selector\": \"\",\n \"content-option-selection-template-selector\": \"\",\n replacers: {\n \"by-object-ui\": {},\n general: {}\n }\n }\n private getTemplate(webcabui_: WebCabObjectUiAttributes): string {\n const headingTemplateElement = this.querySelector(this.settings[\"object-heading-template-selector\"]);\n const headingTemplate = headingTemplateElement ? headingTemplateElement.innerHTML : \"\";\n\n const controlsTemplateElement = this.querySelector(this.settings[\"controls-template-selector\"]);\n if (!controlsTemplateElement) {\n return \"\";\n }\n const controlsTemplate = webcabui_.disabled ? \"\" : controlsTemplateElement.innerHTML;\n\n return this.applyGeneralReplacers(headingTemplate + controlsTemplate);\n }\n\n @property({ type: String, reflect: true, attribute: \"object-ui-exportparts\" })\n objectUiExportparts = \"\"\n\n private _loading = false;\n get loading() {\n return this._loading;\n }\n set loading(loading_: boolean) {\n this._loading = loading_;\n if (loading_) {\n // this.dispatchEvent start\n return;\n }\n // this.dispatchEvent finish\n }\n @property({ type: Boolean, reflect: true })\n\n @property({ type: Boolean, reflect: true })\n dimmed = false\n\n @property({ type: String, reflect: true, attribute: \"template-replace-event-result\" })\n TemplateReplaceEventResult: string | undefined = undefined;\n\n constructor() {\n super();\n\n this.addEventListener(\"webcabstartloading\", (event: WebCabChangeLoadingEventInit)=>{\n this.loading = event.detail ? event.detail : false;\n });\n this.addEventListener(\"webcabselectionchange\", (event: WebCabSelectionChangeEventInit)=>{\n if (event.detail == undefined) return;\n const instances = Object.keys(event.detail.uidata);\n const uidata = this.breakDownUiData(event.detail.uidata);\n for (const instance of instances) {\n const instanceIdent = parseInt(instance);\n this.setElementUiComponents(instanceIdent, uidata[instanceIdent], true);\n }\n this.requestUpdate();\n this.loading = false;\n });\n\n this.addEventListener(\"webcab-value-input-loading\", async (event_: CustomEventInit<{ loading: boolean, uiData: IWebCabApiUiData }>)=>{\n if (event_.detail != undefined) {\n if (event_.detail.uiData) {\n const instances = Object.keys(event_.detail.uiData);\n const uidata = this.breakDownUiData(event_.detail.uiData);\n for (const instance of instances) {\n const instanceIdent = parseInt(instance);\n this.setElementUiComponents(instanceIdent, uidata[instanceIdent], true);\n }\n this.requestUpdate();\n }\n this.loading = event_.detail.loading;\n }\n });\n this.addEventListener(\"webcab-enable-disable-button-toggle\", async (event_: CustomEventInit<IWebCabApiUiData>)=>{\n if (event_.detail) {\n const instances = Object.keys(event_.detail);\n const uidata = this.breakDownUiData(event_.detail);\n for (const instance of instances) {\n const instanceIdent = parseInt(instance);\n this.setElementUiComponents(instanceIdent, uidata[instanceIdent], true);\n }\n this.requestUpdate();\n }\n });\n\n this.addEventListener(\"webcabpopupchange\", (event: WebCabPopUpChangeEventInit)=>{\n if (event.detail && event.detail.open != undefined && event.detail.element != undefined && event.detail.element.componentData != undefined && event.detail.element.componentData.change != undefined) {\n const xGroupId = event.detail.element.componentData.change.xGroupId;\n const xInGroupId = event.detail.element.componentData.change.xInGroupId;\n const zSpaceId = event.detail.element.componentData.change.zSpaceId;\n if (xGroupId != undefined && xInGroupId != undefined) {\n const zSpaceOpenId = zSpaceId != undefined ? \"-\" + zSpaceId.toFixed(0) : \"\";\n const openedId = xGroupId.toFixed(0) + \"-\" + xInGroupId.toFixed(0) + zSpaceOpenId;\n if (event.detail.open) {\n if (!this.openedPopups.includes(openedId)) {\n this.openedPopups.push(openedId);\n }\n }\n else {\n const index = this.openedPopups.indexOf(openedId);\n if (index != -1) {\n this.openedPopups.splice(index, 1);\n }\n }\n }\n }\n });\n\n EventFactoryService.SendEvent.register((eventId_)=>{\n if (this.loading) return;// skip if already loading\n if (this.shown == false) return;// prevent if not shown\n\n switch (eventId_) {\n case 914472533:\n case 451786:\n this.updateArticles();\n break;\n default:\n break;\n }\n });\n\n EventFactoryService.LastPOLoaded.register(()=>{\n if (this.loading) return;// skip if already loading\n if (this.shown == false) return;// prevent if not shown\n this.updateArticles();\n });\n }\n\n protected render(): TemplateResult<1> {\n let exportparts = \"element-ui\";\n for ( const ui of this.webcabuis) {\n exportparts += \",nr-\" + ui.index;\n }\n this.setAttribute(\"exportparts\", exportparts);\n this.applyReplacersToSlots();\n\n return html`\n <slot name=\"above\"></slot>\n ${this.webcabuis.map((webcabui) => html`\n <div class=\"element-ui nr-${webcabui.index}\" part=\"element-ui nr-${webcabui.index}\" instance-ident=\"${webcabui[\"instance-ident\"]}\" ui-index=\"${webcabui.index}\">\n ${document.createRange().createContextualFragment(this.getObjectUiTemplate(this.getTemplate(webcabui), webcabui.index, this.webcabuis.length, webcabui[\"instance-ident\"]))}\n </div>\n `)}\n `;\n }\n\n private postUpdateEventPromise: Promise<void> | undefined = undefined;\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n this.postUpdateEventPromise = this.postUpdateEvent();\n }\n private async postUpdateEvent() {\n this.loading = true;\n\n await this.updateElementUIs();\n\n if (!this.updateEventActive) {\n this.updateEventActive = true;\n this.dispatchEvent(new WebCabUiRenderedEvent());\n this.updateEventActive = false;\n }\n\n this.loading = false;\n }\n\n private createZSplittingTemplate(component: IWebCabApiComponentData, internalIndex: number): string {\n const zSplittingUi = component[\"z-splitting-ui\"];\n if (zSplittingUi == undefined || zSplittingUi.length < 1) return \"\";\n\n let result = \"\";\n for (let zSplittingIndex = 0; zSplittingIndex < zSplittingUi.length; ++zSplittingIndex) {\n const inputComponent = zSplittingUi[zSplittingIndex];\n if (inputComponent == undefined) continue;\n const dataAttributes = inputComponent[\"data-attributes\"];\n if (dataAttributes == undefined) continue;\n\n if (dataAttributes.type == \"intInput\") {\n result += \"<fv-webcab-value-input part=\\\"webcab-input z-splitting-count-input\\\" class=\\\"webcab-input z-splitting-count-input\\\" component-name=\\\"\"+ inputComponent.name +\"\\\">\";\n result += \"<label slot=\\\"label\\\" i18n=\\\"webcab.item.count.input.label\\\" part=\\\"webcab-input-label\\\"></label>\";\n result += \"<label slot=\\\"increase-button\\\" part=\\\"toggle-indecrease-container\\\"><div part=\\\"toggle-increase-button\\\"><div part=\\\"toggle-increase-button-horizontal-container\\\"><div part=\\\"toggle-increase-button-horizontal\\\"></div></div><div part=\\\"toggle-increase-button-vertical-container\\\"><div part=\\\"toggle-increase-button-vertical\\\"></div></div></div></label>\";\n result += \"<label slot=\\\"decrease-button\\\" part=\\\"toggle-indecrease-container\\\"><div part=\\\"toggle-decrease-button\\\"></div></label>\";\n result += \"</fv-webcab-value-input>\";\n }\n else if (dataAttributes.type == \"floatInput\") {\n result += \"<fv-webcab-value-input part=\\\"webcab-input z-splitting-height-input\\\" class=\\\"webcab-input z-splitting-height-input\\\" component-name=\\\"\" + inputComponent.name + \"\\\">\";\n result += \"<label slot=\\\"label\\\" part=\\\"webcab-input-label\\\"><label i18n=\\\"webcab.height.input.label\\\"></label> \" + (zSplittingIndex).toFixed(0) + \":</label>\";\n result += \"<label slot=\\\"increase-button\\\" part=\\\"toggle-indecrease-container\\\"><div part=\\\"toggle-increase-button\\\"><div part=\\\"toggle-increase-button-horizontal-container\\\"><div part=\\\"toggle-increase-button-horizontal\\\"></div></div><div part=\\\"toggle-increase-button-vertical-container\\\"><div part=\\\"toggle-increase-button-vertical\\\"></div></div></div></label>\";\n result += \"<label slot=\\\"decrease-button\\\" part=\\\"toggle-indecrease-container\\\"><div part=\\\"toggle-decrease-button\\\"></div></label>\";\n result += \"</fv-webcab-value-input>\";\n }\n\n if (inputComponent[\"content-option-selection-ui\"] != undefined) {\n const contentOptionSelectionTemplate = this.querySelector(this.settings[\"content-option-selection-template-selector\"]);\n const contentOptionSelectionUi = inputComponent[\"content-option-selection-ui\"];\n if (contentOptionSelectionUi && contentOptionSelectionTemplate && contentOptionSelectionTemplate.innerHTML.length > 0) {\n let contentOptionSelectionsTemplates = \"\";\n for (const optionSelection of contentOptionSelectionUi) {\n let optionSelectionTemplate = contentOptionSelectionTemplate.innerHTML;\n let optionSelectionPieces = optionSelectionTemplate.split(\"|internal-index|\");\n optionSelectionTemplate = optionSelectionPieces.join(\"-\" + optionSelection.name + internalIndex.toFixed(0));\n optionSelectionPieces = optionSelectionTemplate.split(\"|content-option-selection-component-name|\");\n optionSelectionTemplate = optionSelectionPieces.join(inputComponent.name + \"-\" + optionSelection.name);\n optionSelectionPieces = optionSelectionTemplate.split(\"|content-option-selection-class|\");\n optionSelectionTemplate = optionSelectionPieces.join(\"z-splitting-content-option-selection\");\n contentOptionSelectionsTemplates += optionSelectionTemplate;\n }\n result += contentOptionSelectionsTemplates;\n }\n }\n }\n\n\n return result;\n }\n\n private pushElementControlsToTemplate(instanceIdent_: number, template_: string): string {\n const elementControlsTemplate = this.querySelector(this.settings[\"element-controls-template-selector\"]);\n if (!elementControlsTemplate) return template_;\n if (elementControlsTemplate.innerHTML.length < 1) return template_;\n const contentOptionSelectionTemplate = this.querySelector(this.settings[\"content-option-selection-template-selector\"]);\n\n const templatePieces = template_.split(\"|element-controls|\");\n let index = 0;\n let elementControlsTemplates = \"\";\n\n const components = this._elementControlsComponents[instanceIdent_];\n if (components) {\n const names = Object.keys(components);\n for (const name of names) {\n const component = components[name];\n if (component) {\n let template = elementControlsTemplate.innerHTML;\n let pieces = template.split(\"|component-name|\");\n template = pieces.join(name);\n\n const internalIndex = index;\n pieces = template.split(\"|index|\");\n template = pieces.join((++index).toFixed(0));\n\n const contentOptionSelectionUi = component[\"content-option-selection-ui\"];\n if (contentOptionSelectionUi && contentOptionSelectionTemplate && contentOptionSelectionTemplate.innerHTML.length > 0) {\n pieces = template.split(\"|content-option-selection|\");\n let contentOptionSelectionsTemplates = \"\";\n for (const optionSelection of contentOptionSelectionUi) {\n let optionSelectionTemplate = contentOptionSelectionTemplate.innerHTML;\n let optionSelectionPieces = optionSelectionTemplate.split(\"|internal-index|\");\n optionSelectionTemplate = optionSelectionPieces.join(\"-\" + optionSelection.name + internalIndex.toFixed(0));\n\n optionSelectionPieces = optionSelectionTemplate.split(\"|content-option-selection-component-name|\");\n optionSelectionTemplate = optionSelectionPieces.join(component.name + \"-\" + optionSelection.name);\n\n optionSelectionPieces = optionSelectionTemplate.split(\"|content-option-selection-class|\");\n optionSelectionTemplate = optionSelectionPieces.join(\"\");\n\n contentOptionSelectionsTemplates += optionSelectionTemplate;\n }\n template = pieces.join(contentOptionSelectionsTemplates);\n }\n else {\n pieces = template.split(\"|content-option-selection|\");\n template = pieces.join(\"\");\n }\n\n pieces = template.split(\"|z-splitting-ui|\");\n const zSplittingTemplate = this.createZSplittingTemplate(component, internalIndex);\n template = pieces.join(zSplittingTemplate);\n\n elementControlsTemplates += template;\n }\n }\n template_ = templatePieces.join(elementControlsTemplates);\n }\n return template_;\n }\n private applyGeneralReplacers(template_: string) {\n const genaralReplacers = Object.keys(this.settings.replacers.general);\n for ( const replacer of genaralReplacers ) {\n const pieces = template_.split(replacer);\n template_ = pieces.join(this.settings.replacers.general[replacer]);\n }\n return template_;\n }\n private applyReplacersToSlots() {\n const slots = this.querySelectorAll(\"[slot]\");\n slots.forEach((slot)=>{\n this.applyReplacersToSlot(slot);\n });\n }\n private applyReplacersToSlot(slot_: Element) {\n let replacedSlot = this.applyGeneralReplacers(slot_.innerHTML);\n this.webcabuis.map((webcabui) => {\n const replacersKey: string = webcabui.index.toFixed(0) + \"_\" + this.webcabuis.length.toFixed(0);\n const replacers = this.settings.replacers[\"by-object-ui\"][replacersKey];\n if (replacers) {\n const replacerKeys = Object.keys(replacers);\n for ( const key of replacerKeys ) {\n const pieces = replacedSlot.split(key);\n replacedSlot = pieces.join(replacers[key]);\n }\n }\n });\n slot_.innerHTML = replacedSlot;\n }\n\n private getObjectUiTemplate(baseTemplate_: string, index_: number, totalUiAmount: number, instanceIdent_: number): string {\n if (baseTemplate_.length < 1) {\n console.error(\"webcab-ui: render failed! template not found!\");\n return \"\";\n }\n\n const replacersKey: string = index_.toFixed(0) + \"_\" + totalUiAmount.toFixed(0);\n const replacers = this.settings.replacers[\"by-object-ui\"][replacersKey];\n if (replacers) {\n const replacerKeys = Object.keys(replacers);\n for ( const key of replacerKeys ) {\n const pieces = baseTemplate_.split(key);\n baseTemplate_ = pieces.join(replacers[key]);\n }\n }\n\n const pieces = baseTemplate_.split(\"|index|\");\n baseTemplate_ = pieces.join((index_+1).toFixed(0));\n\n this.dispatchEvent(new WebCabTemplateReplaceEvent(baseTemplate_, this, index_));\n baseTemplate_ = this.TemplateReplaceEventResult ? this.TemplateReplaceEventResult : baseTemplate_;\n this.TemplateReplaceEventResult = undefined;\n\n baseTemplate_ = this.pushElementControlsToTemplate(instanceIdent_, baseTemplate_);\n return baseTemplate_;\n }\n\n private async updateElementUIs() {\n\n const elementuis: NodeListOf<HTMLDivElement> = this.renderRoot.querySelectorAll(\".element-ui\") as NodeListOf<HTMLDivElement>;\n if (elementuis) {\n for (let index = 0; index < elementuis.length; ++index) {\n await this.updateComponentElements(elementuis.item(index));\n }\n }\n }\n private getElementAttribute(element_: Element, name_: string): string {\n if (element_.hasAttribute(name_)) {\n const attribute = element_.getAttribute(name_);\n if (attribute) {\n return attribute;\n }\n }\n return \"\";\n }\n private async ArrangeEquallyButtonClick(element_: Element, click_: IWebCabApiClick | undefined) {\n this.loading = true;\n\n if (click_ && click_.GroupID) {\n const instanceIdent = parseInt(this.getElementAttribute(element_, \"instance-ident\"));\n const customerType = this.settings[\"object-ui-settings\"][\"customer-type\"];\n const brokenDownResult = this.breakDownUiData(await WebCabApiService.ArrangeEqually(customerType, [click_.GroupID], this.settings[\"object-ui-settings\"][\"config-suffix\"], [instanceIdent]));\n this._components[instanceIdent] = brokenDownResult[instanceIdent];\n }\n\n this.loading = false;\n await this.updateArticles();//this._components\n }\n private static getComponentFromArray(components_: IWebCabApiComponentData[], name_: string): IWebCabApiComponentData | undefined {\n let componentData: IWebCabApiComponentData | undefined = undefined;\n for (const component of components_) {\n if (component.name === name_) {\n componentData = component;\n break;\n }\n\n if (component.components) {\n componentData = this.getComponentFromArray(component.components, name_);\n if (componentData) break;\n }\n }\n return componentData;\n }\n private static getComponent(components_: {[key: string]: IWebCabApiComponentData;}, name_: string): IWebCabApiComponentData | undefined {\n if (components_[name_]) return components_[name_];\n\n const names = Object.keys(components_);\n for (const name of names) {\n const component = components_[name];\n if (component && component.components) {\n const componentFromArray = this.getComponentFromArray(component.components, name_);\n if (componentFromArray) {\n return componentFromArray;\n }\n }\n }\n return undefined;\n }\n private static getComponentFromContentOptionSelection(components_: IWebCabApiComponentData[], name_: string, parent_?: IWebCabApiComponentData): IWebCabApiComponentData | undefined {\n for (const component of components_) {\n if (component.name == name_) {\n return component;\n }\n if (parent_ && (parent_.name + \"-\" + component.name) == name_) {\n return component;\n }\n\n if (component.components) {\n const subComponentsResult = this.getComponentFromContentOptionSelection(component.components, name_, component);\n if (subComponentsResult != undefined) return subComponentsResult;\n }\n if (component[\"content-option-selection-ui\"]) {\n const subComponentsResult = this.getComponentFromContentOptionSelection(component[\"content-option-selection-ui\"], name_, component);\n if (subComponentsResult != undefined) return subComponentsResult;\n }\n if (component[\"z-splitting-ui\"]) {\n const subComponentsResult = this.getComponentFromContentOptionSelection(component[\"z-splitting-ui\"], name_, component);\n if (subComponentsResult != undefined) return subComponentsResult;\n }\n }\n return undefined;\n }\n\n private static getComponentFromZSplitting(components_: IWebCabApiComponentData[], name_: string, parent_?: IWebCabApiComponentData): IWebCabApiComponentData | undefined {\n for (const component of components_) {\n if (component.name == name_) {\n return component;\n }\n if (parent_ && (parent_.name + \"-\" + component.name) == name_) {\n return component;\n }\n\n if (component.components) {\n const subComponentsResult = this.getComponentFromZSplitting(component.components, name_, component);\n if (subComponentsResult != undefined) return subComponentsResult;\n }\n if (component[\"z-splitting-ui\"]) {\n const subComponentsResult = this.getComponentFromZSplitting(component[\"z-splitting-ui\"], name_, component);\n if (subComponentsResult != undefined) return subComponentsResult;\n }\n }\n return undefined;\n }\n\n private static getComponentForElement(components_: {[key: string]: IWebCabApiComponentData}, componentName: string): IWebCabApiComponentData | undefined {\n let component = WebCabUiComponent.getComponent(components_, componentName);\n if (component == undefined) {\n const componentsArray = [];\n const names = Object.keys(components_);\n for (const name of names) {\n componentsArray.push(components_[name]);\n }\n component = WebCabUiComponent.getComponentFromContentOptionSelection(componentsArray, componentName);\n if (component == undefined) {\n\n component = WebCabUiComponent.getComponentFromZSplitting(componentsArray, componentName);\n }\n }\n if (component == undefined) {\n console.warn(\"no component found!\", componentName, components_);\n }\n return component;\n }\n\n public static async updateComponentElement(components_: {[key: string]: IWebCabApiComponentData}, element_: Element, instanceIdent_: number, settings_: WebCabUiSettings, arrangeEquallyEvent_: (element_: Element, click_: IWebCabApiClick | undefined)=>void) {\n if (!element_) return;\n\n const componentName = element_.getAttribute(\"component-name\");\n if (!componentName || componentName.length < 1) return;\n\n const component = this.getComponentForElement(components_, componentName);\n if (component == undefined) {\n element_.classList.add(\"hidden\");\n return;\n }\n element_.classList.remove(\"hidden\");\n element_.setAttribute(\"instance-ident\", instanceIdent_.toFixed(0));\n\n const dataAttributes = component[\"data-attributes\"];\n let fractionDigits = 0;\n if (dataAttributes && dataAttributes.type && dataAttributes.type == \"floatInput\") {\n fractionDigits = settings_[\"object-ui-settings\"][\"fraction-digits\"];\n }\n\n element_.setAttribute(\"name\", componentName);\n if (component.attributes) {\n if (component.attributes.value && component.attributes.value.toFixed) {\n element_.setAttribute(\"value\", component.attributes.value.toFixed(fractionDigits));\n }\n if (component.attributes.min && component.attributes.min.toFixed) {\n element_.setAttribute(\"min-value\", component.attributes.min.toFixed(fractionDigits));\n }\n if (component.attributes.max && component.attributes.max.toFixed) {\n element_.setAttribute(\"max-value\", component.attributes.max.toFixed(fractionDigits));\n }\n if (component.attributes[\"unit-txt\"] != undefined) {\n element_.setAttribute(\"unit-txt\", component.attributes[\"unit-txt\"] == \"\" ? \"error\" : component.attributes[\"unit-txt\"]);\n }\n if (component.attributes[\"dim-scale\"]) {\n element_.setAttribute(\"dim-scale\", component.attributes[\"dim-scale\"].toString());\n }\n }\n if (component.change) {\n element_.setAttribute(\"modification-targets\", JSON.stringify(component.change.ModificationTargets));\n if (component.change.GroupID) {\n element_.setAttribute(\"group-id\", component.change.GroupID);\n }\n else if (component.change.ZSplittingXGroupId) {\n element_.setAttribute(\"group-id\", component.change.ZSplittingXGroupId);\n }\n if (component.change.InGroupID) {\n element_.setAttribute(\"in-group-id\", component.change.InGroupID);\n }\n else if (component.change.ZSplittingXInGroupId) {\n element_.setAttribute(\"in-group-id\", component.change.ZSplittingXInGroupId);\n }\n if (component.change.ZSplittingZSpaceIndex) {\n element_.setAttribute(\"z-space-id\", component.change.ZSplittingZSpaceIndex);\n }\n }\n\n\n if (element_ && isDisplayOptionSelection(element_)) {\n element_.componentData = component;\n element_.customerType = settings_[\"object-ui-settings\"][\"customer-type\"];\n element_.configSuffix = settings_[\"object-ui-settings\"][\"config-suffix\"];\n }\n\n if (dataAttributes) {\n if (dataAttributes.type == \"floatInput\") {\n const input = element_ as WebCabValueInputComponent;\n input.addEventListener(\"webcab-value-input-changed\", async ()=>{\n if (component.change && component.change.ZSplittingXGroupId && component.change.ZSplittingXInGroupId) {\n await input.ModifyZSplitting(false, component.change.ZSplittingZSpaceIndex != undefined);\n return;\n }\n if (component.change && component.change.GroupID && component.change.InGroupID) {\n await input.ModifySingleSpace();\n return;\n }\n await input.ModifyFloatValue();\n });\n\n input.increment = dataAttributes.step;\n input.fractionDigits = fractionDigits;\n input.timeoutms = settings_[\"object-ui-settings\"][\"input-buttons-timeout-ms\"];\n input.customerType = settings_[\"object-ui-settings\"][\"customer-type\"];\n input.configSuffix = settings_[\"object-ui-settings\"][\"config-suffix\"];\n }\n else if (dataAttributes.type == \"intInput\") {\n const input = element_ as WebCabValueInputComponent;\n input.addEventListener(\"webcab-value-input-changed\", ()=>{\n if (component.change && component.change.ZSplittingXGroupId && component.change.ZSplittingXInGroupId) {\n input.ModifyZSplitting(false, component.change.ZSplittingZSpaceIndex != undefined);\n return;\n }\n input.ChangeCount();\n });\n input.increment = dataAttributes.step;\n input.timeoutms = settings_[\"object-ui-settings\"][\"input-buttons-timeout-ms\"];\n input.customerType = settings_[\"object-ui-settings\"][\"customer-type\"];\n input.configSuffix = settings_[\"object-ui-settings\"][\"config-suffix\"];\n }\n else if (dataAttributes.type == \"command\") {\n if (component.click) {\n if (component.click.WebCabCommand == \"ArrangeEqually\") {\n element_.addEventListener(\"click\", async ()=>{\n await arrangeEquallyEvent_(element_, component.click);\n });\n }\n else if (component.click.WebCabCommand == \"EnableWebCabs\" || component.click.WebCabCommand == \"DisableWebCabs\") {\n const button = element_ as WebcabEnableDisableButtonComponent;\n button.clickDetails = component.click;\n }\n }\n }\n }\n }\n private async updateComponentElements(elementUi_: HTMLDivElement) {\n const instanceIdent = parseInt(this.getElementAttribute(elementUi_, \"instance-ident\"));\n if (this._components[instanceIdent]) {\n const elemets = new Array<Element>();\n this.getComponentElements(elemets, elementUi_);\n\n if (elemets.length > 0) {\n for (let index = 0; index < elemets.length; ++index) {\n const element = elemets[index];\n if (element) {\n await WebCabUiComponent.updateComponentElement(this._components[instanceIdent].data, element, instanceIdent, this.settings, async (element_: Element, click_: IWebCabApiClick | undefined)=>{\n await this.ArrangeEquallyButtonClick(element_, click_);\n });\n\n if (element && isDisplayOptionSelection(element) && element.componentData != undefined && element.componentData.change != undefined) {\n const xGroupId = element.componentData.change.xGroupId;\n const xInGroupId = element.componentData.change.xInGroupId;\n const zSpaceId = element.componentData.change.zSpaceId;\n if (xGroupId != undefined && xInGroupId != undefined) {\n const zSpaceOpenId = zSpaceId != undefined ? \"-\" + zSpaceId.toFixed(0) : \"\";\n const openedId = xGroupId.toFixed(0) + \"-\" + xInGroupId.toFixed(0) + zSpaceOpenId;\n (element as WebCabDisplayOptionSelectionComponent).open = this.openedPopups.includes(openedId);\n }\n }\n }\n }\n }\n }\n }\n\n private updatePromise: Promise<WebCabUiDataList> | undefined = undefined;\n public async updateArticles(/*uidata_?: WebCabUiDataList | undefined*/): Promise<void> {\n this.loading = true;\n\n if (this.updatePromise != undefined) {\n await this.updatePromise;\n }\n\n this.updatePromise = this.ReadUiData();\n const uidata = await this.updatePromise;\n // let uidata = uidata_;\n // if (uidata == undefined) {\n // uidata = await this.ReadUiData();\n // }\n\n let index = 0;\n this.webcabuis = [];\n this._components = {};\n this._elementControlsComponents = {};\n\n const instanceIdents = Object.keys(uidata);\n for (const instanceIdentString of instanceIdents) {\n const instanceIdent = parseInt(instanceIdentString);\n this.webcabuis.push({\n index: index++,\n \"instance-ident\": instanceIdent,\n disabled: uidata[instanceIdent].disabled\n });\n this.setElementUiComponents(instanceIdent, uidata[instanceIdent], true);\n }\n this.requestUpdate();\n await this.updateComplete;\n if (this.postUpdateEventPromise != undefined) {\n await this.postUpdateEventPromise;\n this.postUpdateEventPromise = undefined;\n }\n this.updatePromise = undefined;\n }\n public async show(uidata_?: WebCabUiDataList | undefined): Promise<void> {\n if (!this.showing) {\n this.showing = true;\n await this.updateArticles();//uidata_\n this.shown = true;\n this.showing = false;\n }\n }\n\n private getObjectUiIndex(value_: Element) {\n const attribute = value_.getAttribute(\"ui-index\");\n if (attribute) {\n return parseInt(attribute);\n }\n return -1;\n }\n public EachObjectUi(callback_: (element: Element, index: number) => void): void {\n const objects = this.renderRoot.querySelectorAll(\".element-ui\");\n objects.forEach((value) => {\n callback_(value, this.getObjectUiIndex(value));\n });\n }\n public getFirstObjectUi(): HTMLElement | undefined {\n const objects = this.renderRoot.querySelectorAll(\".element-ui\");\n if (objects.length > 0) {\n return objects.item(0) as HTMLElement;\n }\n return undefined;\n }\n\n\n private getComponentElements(list: Array<Element>, curr: Element) {\n if (curr.hasAttribute(\"component-name\")) {\n list.push(curr);\n }\n for (let index = 0; index < curr.children.length; ++index) {\n const item = curr.children.item(index);\n if (item) {\n this.getComponentElements(list, item);\n }\n }\n }\n\n private breakDownUiData(uidata_: IWebCabApiUiData): WebCabUiDataList {\n const instanceIdents = Object.keys(uidata_);\n const ret: WebCabUiDataList = {};\n for (const instanceIdentString of instanceIdents) {\n const instanceIdent: number = parseInt(instanceIdentString);\n const data: IWebCabApiUiComponentsData | undefined = uidata_[instanceIdent];\n if (data != undefined && data.components != undefined) {\n const components = data.components;\n ret[instanceIdent] = { data: {}, disabled: uidata_[instanceIdent].disabled };\n for (const component of components) {\n if (component.name) {\n ret[instanceIdent].data[component.name] = component;\n }\n }\n }\n }\n return ret;\n }\n\n public async ReadUiData(): Promise<WebCabUiDataList> {\n const data = await WebCabApiService.GetUIs(this.settings[\"object-ui-settings\"][\"customer-type\"], this.settings[\"object-ui-settings\"][\"config-suffix\"]);\n return this.breakDownUiData(data);\n }\n\n\n public async ModifyFloatValueAllInstances(modificationTargets_: Array<string>, value_: number): Promise<WebCabUiDataList> {\n const modifications: Array<IValueModification> = [];\n for (const target of modificationTargets_) {\n modifications.push({\n target: target,\n value: (value_ * 10.0).toFixed(2)\n });\n }\n const uidata = await WebCabApiService.ModifyValues(this.settings[\"object-ui-settings\"][\"customer-type\"], modifications, this.settings[\"object-ui-settings\"][\"config-suffix\"]);\n return this.breakDownUiData(uidata);\n }\n\n\n public async SetDisableDimensionVisuals(value_: boolean, instanceIdentFilter_?: Array<number> | undefined): Promise<void> {\n await WebCabApiService.SetDisableDimensionVisuals(this.settings[\"object-ui-settings\"][\"customer-type\"], value_ ? 1 : 0, this.settings[\"object-ui-settings\"][\"config-suffix\"], instanceIdentFilter_);\n }\n public async GetDisableDimensionVisuals(instanceIdentFilter_?: Array<number> | undefined): Promise<boolean> {\n const disableDimensionVisuals = await WebCabApiService.GetDisableDimensionVisuals(this.settings[\"object-ui-settings\"][\"customer-type\"], this.settings[\"object-ui-settings\"][\"config-suffix\"], instanceIdentFilter_);\n return disableDimensionVisuals;\n }\n}\n\nexport class WebCabUiRenderedEvent extends CustomEvent<unknown> {\n constructor() {\n super(\"webcab-ui-rendered\", { detail: {}, bubbles: true, composed: true });\n }\n}\n\nexport interface WebCabUiSettings {\n \"object-ui-settings\": {\n \"customer-type\": string,\n \"config-suffix\": string,\n increment: number,\n \"fraction-digits\": number,\n \"input-buttons-timeout-ms\": number\n },\n \"object-heading-template-selector\": string,\n \"controls-template-selector\": string,\n \"element-controls-template-selector\": string,\n \"content-option-selection-template-selector\": string,\n replacers: {\n \"by-object-ui\": {\n [key: string]: {[key: string]: string}\n },\n \"general\": {\n [key: string]: string\n }\n }\n}\ninterface WebCabObjectUiAttributes {\n index: number,\n \"instance-ident\": number,\n disabled: boolean\n}\ninterface WebCabUiDataList {\n [key: number]: WebCabUiData\n}\ninterface WebCabUiData {\n data: {[key: string]: IWebCabApiComponentData},\n disabled: boolean\n}\n","import { BaseElement } from \"../../../standard/base/base.component\";\nimport { WebCabUiComponent } from \"../../base/webcab-ui.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./webcab-ui-cabinets-toggle.sass?inline\";\nimport { WebCabValueInputComponent } from \"../../base/webcab-value-input.component\";\nimport { WebCabTemplateReplaceEventInit, WebCabUiSettings } from \"../../base/webcab-ui.component\";\nimport {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\nimport { IPlannedArticle } from \"@dh-software/webui-types\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-webcab-ui-cabinets-toggle:refresh\": Record<string, never>;\n }\n}\n\n\n@customElement(\"fv-webcab-ui-cabinets-toggle\")\nexport class WebCabUiImplementationCabinetsToggle extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Object, reflect: true })\n public config = {\n increment: 10.0,\n timeout: 500,\n fraction: 2\n };\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"corner-hide-depth\" })\n public cornerHideDepth = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"corner-hide-total\" })\n public cornerHideTotal = false;\n\n @property({ type: String, reflect: true, attribute: \"corner-config-suffix\" })\n public cornerConfigSuffix: string | undefined = undefined;\n\n @property({ type: String, reflect: true, attribute: \"config-suffix\" })\n public configSuffix: string | undefined = undefined;\n @property({ type: Number, reflect: true, attribute: \"max-amount-select-by-buttons\" })\n public maxAmountSelectByButtons = 3;\n\n private corner = false;\n\n private get currentConfigSuffix() {\n const getConfigSuffixVal = (suffix: string | undefined, fallback: string)=>{\n return suffix ? suffix : fallback;\n };\n if (this.corner) {\n return getConfigSuffixVal(this.cornerConfigSuffix, getConfigSuffixVal(this.configSuffix, \"\"));\n }\n return getConfigSuffixVal(this.configSuffix, \"\");\n }\n\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-webcab-ui-cabinets-toggle:refresh\": async () => { await this.refresh(); },\n };\n\n private togglesState = new Map<number, boolean>();\n private get settings(): WebCabUiSettings {\n return {\n \"object-ui-settings\": {\n \"customer-type\": \"\",\n \"config-suffix\": this.currentConfigSuffix,\n \"increment\": this.config.increment,\n \"fraction-digits\": this.config.fraction,\n \"input-buttons-timeout-ms\": this.config.timeout\n },\n \"object-heading-template-selector\": \".title-template\",\n \"controls-template-selector\": \".controls-template\",\n \"element-controls-template-selector\": \".element-controls-template\",\n \"content-option-selection-template-selector\": \".content-option-selection-template\",\n \"replacers\": {\n \"by-object-ui\": {\n \"0_2\": {\n \"|subtitle|\": \"webcab.title.corner.left\",\n \"|height-depth|\": \"\",\n \"|DisableEnable|\": \"\",\n \"|config-suffix|\": this.currentConfigSuffix,\n \"|title|\": \"webcab.title.corner\"\n },\n \"1_2\": {\n \"|subtitle|\": \"webcab.title.corner.right\",\n \"|height-depth|\": \"\",\n \"|DisableEnable|\": \"\",\n \"|config-suffix|\": this.currentConfigSuffix,\n \"|title|\": \"webcab.title.corner\"\n },\n \"0_1\": {\n \"|subtitle|\": \"webcab.title\",\n \"|height-depth|\": `\n <div part=\"webcab-control height-container\">\n <fv-webcab-value-input part=\"webcab-input height-input\" component-name=\"CabinetHeight\">\n <label slot=\"label\" i18n=\"webcab.height.input.label\" part=\"webcab-input-label\"></label>\n <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n </fv-webcab-value-input>\n </div>\n <div part=\"webcab-control depth-container\">\n <fv-webcab-value-input part=\"webcab-input depth-input\" component-name=\"Depth\">\n <label slot=\"label\" i18n=\"webcab.depth.input.label\" part=\"webcab-input-label\"></label>\n <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n </fv-webcab-value-input>\n </div>\n `,\n \"|DisableEnable|\": \"webcab-hidden\",\n \"|config-suffix|\": this.currentConfigSuffix,\n }\n },\n \"general\": {}\n }\n } as WebCabUiSettings;\n }\n\n private async init() {\n await WebViewerService.IsAppReady;\n\n const webcabui: WebCabUiComponent | null = this.renderRoot.querySelector(\"fv-webcab-ui\");\n if (webcabui) {\n const planedArticles = await CommunicationMessageService.getPlannedArticles();\n const webcabs = planedArticles.filter((article: IPlannedArticle)=>{\n return article.keys.includes(10017) || article.keys.includes(10019);\n });\n\n this.corner = webcabs.length == 2;\n webcabui.settings = this.settings;\n const uidata = await webcabui.ReadUiData();\n const uiDataKeys = Object.keys(uidata);\n if (uiDataKeys.length > 0) {\n await webcabui.show();\n }\n }\n }\n\n constructor() {\n super();\n\n // add prepare-render event...\n\n this.addEventListener(\"webcab-ui-rendered\", (e)=>{\n const webcabui: WebCabUiComponent | null = this.renderRoot.querySelector(\"fv-webcab-ui\");\n if (webcabui) {\n webcabui.EachObjectUi((value: Element, index_: number)=>{\n const toggleButton = value.querySelector(\".toggle-button\");\n if (toggleButton && toggleButton.hasAttribute(\"has-click\") == false) {\n toggleButton.setAttribute(\"has-click\", \"true\");\n toggleButton.addEventListener(\"click\", ()=>{\n this.toggle(toggleButton, value, index_);\n });\n }\n\n const container = value.querySelector(\".element-controls-outer-container\");\n if (toggleButton && this.togglesState.get(index_)) {\n const arrow = toggleButton.querySelector(\".toggle-arrow\");\n if (container == undefined || arrow == undefined) return;\n const elementControlsContainer = container.querySelector(\".element-controls-container\");\n const arrangeEqually = container.querySelector(\".arrange-equally\");\n if (elementControlsContainer == undefined || arrangeEqually == undefined) return;\n this.open(toggleButton, arrow, container, elementControlsContainer, arrangeEqually, index_);\n }\n });\n\n if (webcabui.components) {\n const componentKeys = Object.keys(webcabui.components);\n this.corner = componentKeys.length == 2;\n if (componentKeys.length == 2) {\n if (componentKeys[0] && componentKeys[1]) {\n const component1 = webcabui.components[parseInt(componentKeys[0])];\n const component2 = webcabui.components[parseInt(componentKeys[1])];\n if (component1 && component1.data && component2 && component2.data) {\n // const inputElements1Keys = Object.keys(component1.data);\n // const leftCornerElement = inputElements1Keys.includes(\"corner_input#R\") || inputElements1Keys.includes(\"corner_input#L\");\n // // const leftCornerElement = component1.data[\"input_1_R\"];\n // // const rightCornerElement = component2.data[\"input_1_L\"];\n // const inputElements2Keys = Object.keys(component2.data);\n // const rightCornerElement = inputElements2Keys.includes(\"corner_input#R\") || inputElements2Keys.includes(\"corner_input#L\");\n\n // if (leftCornerElement && rightCornerElement) {\n const cornerInputs = this.renderRoot.querySelector(\".corner-inputs-container\");\n if (cornerInputs) {\n cornerInputs.classList.remove(\"hidden\");\n\n // height\n const height = cornerInputs.querySelector(\".webcab-corner-input.height\") as WebCabValueInputComponent;\n if (height) {\n const componentName = height.getAttribute(\"component-name\");\n if (componentName) {\n const digits = webcabui.settings[\"object-ui-settings\"][\"fraction-digits\"];\n height.classList.remove(\"hidden\");\n height.setAttribute(\"instance-ident\", componentKeys[1]);\n height.setAttribute(\"name\", componentName);\n\n const heightComponent1 = component1.data[componentName];\n const heightComponent2 = component2.data[componentName];\n if (heightComponent1 && heightComponent2) {\n if (heightComponent1.attributes && heightComponent2.attributes) {\n height.setAttribute(\"value\", Math.min(heightComponent1.attributes.value, heightComponent2.attributes.value).toFixed(digits));\n height.setAttribute(\"min-value\", Math.min(heightComponent1.attributes.min, heightComponent2.attributes.min).toFixed(digits));\n height.setAttribute(\"max-value\", Math.max(heightComponent1.attributes.max, heightComponent2.attributes.max).toFixed(digits));\n height.setAttribute(\"unit-txt\", heightComponent1.attributes[\"unit-txt\"] == \"\" ? \"error\" : heightComponent1.attributes[\"unit-txt\"]);\n height.setAttribute(\"dim-scale\", heightComponent1.attributes[\"dim-scale\"].toString());\n }\n\n if (heightComponent1.change && heightComponent2.change && heightComponent1[\"data-attributes\"]) {\n height.setAttribute(\"modification-targets\", JSON.stringify(heightComponent1.change.ModificationTargets));\n height.addEventListener(\"webcab-value-input-changed\", async ()=>{\n await height.ModifyFloatValue(true);\n });\n\n height.increment = heightComponent1[\"data-attributes\"].step;\n height.fractionDigits = digits;\n height.timeoutms = webcabui.settings[\"object-ui-settings\"][\"input-buttons-timeout-ms\"];\n height.customerType = webcabui.settings[\"object-ui-settings\"][\"customer-type\"];\n height.configSuffix = webcabui.settings[\"object-ui-settings\"][\"config-suffix\"];\n }\n }\n }\n }\n\n const cornerOnlyDepth = cornerInputs.querySelector(\".webcab.corner-only-depth\");\n const cornerTotal = cornerInputs.querySelector(\".webcab.corner-total\");\n\n if (cornerOnlyDepth && cornerTotal) {\n cornerOnlyDepth.classList.add(\"hidden\");\n cornerTotal.classList.add(\"hidden\");\n\n if (this.cornerHideTotal == false) {\n cornerTotal.classList.remove(\"hidden\");\n const left = cornerTotal.querySelector(\".webcab-corner-input.left\");\n if (left) {\n WebCabUiComponent.updateComponentElement(component2.data, left, parseInt(componentKeys[1]), webcabui.settings, ()=>{\n console.error(\"no arrange equally function set.\");\n });\n }\n const right = cornerTotal.querySelector(\".webcab-corner-input.right\");\n if (right) {\n WebCabUiComponent.updateComponentElement(component1.data, right, parseInt(componentKeys[0]), webcabui.settings, ()=>{\n console.error(\"no arrange equally function set.\");\n });\n }\n }\n\n if (this.cornerHideDepth == false) {\n cornerOnlyDepth.classList.remove(\"hidden\");\n\n const left = cornerOnlyDepth.querySelector(\".webcab-input.depth-input.left\");\n if (left) {\n WebCabUiComponent.updateComponentElement(component1.data, left, parseInt(componentKeys[0]), webcabui.settings, ()=>{\n console.error(\"no arrange equally function set.\");\n });\n }\n const right = cornerOnlyDepth.querySelector(\".webcab-input.depth-input.right\");\n if (right) {\n WebCabUiComponent.updateComponentElement(component2.data, right, parseInt(componentKeys[1]), webcabui.settings, ()=>{\n console.error(\"no arrange equally function set.\");\n });\n }\n }\n }\n }\n // }\n }\n }\n }\n }\n }\n });\n\n this.addEventListener(\"webcab-enable-disable-button-toggle\", async ()=>{\n // this.init();\n });\n\n this.addEventListener(\"webcabtemplatereplace\", (e: WebCabTemplateReplaceEventInit)=>{\n if (e.detail) {\n const state = this.togglesState.get(e.detail.index);\n e.detail.webcabui.TemplateReplaceEventResult = e.detail.template;\n let pieces = e.detail.webcabui.TemplateReplaceEventResult.split(\"|active|\");\n e.detail.webcabui.TemplateReplaceEventResult = pieces.join(state ? \" active\" : \"\");\n\n pieces = e.detail.webcabui.TemplateReplaceEventResult.split(\"|closed|\");\n e.detail.webcabui.TemplateReplaceEventResult = pieces.join(state ? \"\" : \" closed\");\n }\n });\n\n this.init();\n }\n\n protected render(): TemplateResult<1> {\n return html`\n <div class=\"webcab-container\">\n <fv-webcab-ui .settings=\"${this.settings}\" object-ui-exportparts=\"webcab-hidden, count-input-additional-suffix, active, element-controls-container, element-control-input, 1, webcab-control toggle-indecrease-container, toggle-decrease-button, toggle-increase-button-horizontal, toggle-increase-button-vertical, toggle-increase-button, webcab-input, depth-container, height-container, width-container, count-container, width-input, height-input, depth-input, count-input, toggle-button, toggle-text, toggle-arrow, element-controls-outer-container, webcab-input-label-container, hidden, arrange-equally, arrange-equally-button, webcab subtitle\">\n <div slot=\"above\" class=\"webcab above-slot-content\">\n <div class=\"corner-inputs-container hidden\">\n <div class=\"webcab title\" i18n=\"|title|\"></div>\n\n\n <fv-webcab-value-input class=\"webcab-corner-input height\" component-name=\"CabinetHeight\">\n <label slot=\"label\" i18n=\"webcab.height.input.label\" class=\"webcab-input-label\"></label>\n <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n </fv-webcab-value-input>\n\n\n <div class=\"webcab corner-only-depth hidden\">\n <fv-webcab-value-input class=\"webcab-input depth-input left\" component-name=\"Depth\">\n <label slot=\"label\" i18n=\"webcab.depth.input.label.left\" class=\"webcab-input-label\"></label>\n <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n </fv-webcab-value-input>\n <fv-webcab-value-input class=\"webcab-input depth-input right\" component-name=\"Depth\">\n <label slot=\"label\" i18n=\"webcab.depth.input.label.right\" class=\"webcab-input-label\"></label>\n <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n </fv-webcab-value-input>\n </div>\n\n\n <div class=\"webcab corner-total hidden\">\n <fv-webcab-value-input class=\"webcab-corner-input left\" component-name=\"corner_input#L\">\n <label slot=\"label\" i18n=\"webcab.title.corner.left\" class=\"webcab-input-label\"></label>\n <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n </fv-webcab-value-input>\n <fv-webcab-value-input class=\"webcab-corner-input right\" component-name=\"corner_input#R\">\n <label slot=\"label\" i18n=\"webcab.title.corner.right\" class=\"webcab-input-label\"></label>\n <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n </fv-webcab-value-input>\n </div>\n </div>\n </div>\n\n <template class=\"title-template\">\n <div part=\"webcab subtitle hideable-on-mobile\"><div i18n=\"|subtitle|\"></div><fv-webcab-enable-disable-button config-suffix=\"|config-suffix|\" class=\"|DisableEnable|\" part=\"|DisableEnable|\"></fv-webcab-enable-disable-button></div>\n </template>\n <template class=\"controls-template\">\n <div part=\"webcab-control width-container\">\n <fv-webcab-value-input part=\"webcab-input width-input\" component-name=\"CabinetWidth\">\n <label slot=\"label\" i18n=\"webcab.width.input.label\" part=\"webcab-input-label\"></label>\n <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n </fv-webcab-value-input>\n </div>\n |height-depth|\n <div part=\"webcab-control count-container\">\n <fv-webcab-value-input part=\"webcab-input count-input\" component-name=\"MiddleOnly_ItemCountInput\">\n <label slot=\"label\" i18n=\"webcab.item.count.input.label\" part=\"webcab-input-label\"></label>\n <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n <label slot=\"additional-suffix\" part=\"count-input-additional-suffix\" i18n=\"webcab.item.count.input.label.additional.suffix\"></label>\n </fv-webcab-value-input>\n </div>\n <div part=\"webcab-control toggle-button\" class=\"toggle-button\">\n <div part=\"toggle-button-inner\" class=\"toggle-button-inner\">\n <div part=\"toggle-text\" i18n=\"webcab.define.single.cabinets\"></div>\n <fv-arrow-component part=\"toggle-arrow\" class=\"toggle-arrow|active|\"></fv-arrow-component>\n </div>\n </div>\n <div part=\"element-controls-outer-container|closed|\" class=\"element-controls-outer-container\">\n <div class=\"element-controls-container\" part=\"element-controls-container|closed|\" component-name=\"MiddleOnly_Components\">|element-controls|</div>\n <div class=\"arrange-equally\" part=\"arrange-equally|closed|\">\n <button part=\"arrange-equally-button\" component-name=\"MiddleOnly_ArrangeEqually\" i18n=\"webcab.arrange.equally\"></button>\n </div>\n </div>\n </template>\n <template class=\"element-controls-template\" component-name=\"MiddleOnly_Components\">\n <fv-webcab-value-input part=\"element-control-input part|index|\" component-name=\"|component-name|\">\n <div slot=\"label\" part=\"webcab-input-label-container\">\n <label i18n=\"webcab.label.single.cabinet\" part=\"webcab-input-label\"></label>\n <label>|index|</label>\n <label part=\"webcab-input-label-suffix\">:</label>\n </div>\n <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n </fv-webcab-value-input>\n |content-option-selection|\n |z-splitting-ui|\n </template>\n <template class=\"content-option-selection-template\">\n <fv-webcab-display-option-selection max-amount-select-by-buttons=\"1\" part=\"element-control-option-selection part-content-option-selection|internal-index|\" class=\"|content-option-selection-class|\" component-name=\"|content-option-selection-component-name|\"></fv-webcab-option-selection>\n </template>\n </fv-webcab-ui>\n </div>\n `;\n // TODO: replace max-amount-select-by-buttons=\"1\" with: this.maxAmountSelectByButtons.toFixed(0)\n }\n\n\n public async refresh() {\n await this.init();\n }\n\n public close(button_: Element, arrow_: Element, container_: Element, elementControlsCOntainer_: Element, arrangeEqually_: Element, index_: number) {\n button_.part.remove(\"active\");\n arrow_.part.remove(\"active\");\n arrow_.classList.remove(\"active\");\n container_.part.add(\"closed\");\n elementControlsCOntainer_.part.add(\"closed\");\n arrangeEqually_.part.add(\"closed\");\n this.togglesState.set(index_, false);\n }\n private open(button_: Element, arrow_: Element, container_: Element, elementControlsCOntainer_: Element, arrangeEqually_: Element, index_: number) {\n button_.part.add(\"active\");\n arrow_.part.add(\"active\");\n arrow_.classList.add(\"active\");\n container_.part.remove(\"closed\");\n elementControlsCOntainer_.part.remove(\"closed\");\n arrangeEqually_.part.remove(\"closed\");\n this.togglesState.set(index_, true);\n }\n\n public toggle(button_: Element, objectUi_: Element, index_: number) {\n const container = objectUi_.querySelector(\".element-controls-outer-container\");\n const arrow = button_.querySelector(\".toggle-arrow\");\n if (container == undefined || arrow == undefined) return;\n\n const elementControlsContainer = container.querySelector(\".element-controls-container\");\n const arrangeEqually = container.querySelector(\".arrange-equally\");\n if (elementControlsContainer == undefined || arrangeEqually == undefined) return;\n\n if (button_.part.contains(\"active\")) { // close\n this.close(button_, arrow, container, elementControlsContainer, arrangeEqually, index_);\n return;\n }\n this.open(button_, arrow, container, elementControlsContainer, arrangeEqually, index_);// open\n }\n}\n","import { css, html, unsafeCSS, TemplateResult } from \"lit\";\nimport style from \"./webcab-overview.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport {CommunicationMessageService, WebCabApiService} from \"@dh-software/webui-api\";\nimport { IWebCabApiUiData } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-webcab-overview\")\nexport class WebCabOverviewComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"customer-type\" })\n public customerType = \"\";\n\n @property({ type: String, reflect: true, attribute: \"config-suffix\" })\n public configSuffix = \"\";\n\n private image = \"\";\n\n private width = 0;\n private height = 0;\n private depth = 0;\n private amount = 0;\n private childCount = 0;\n\n constructor() {\n super();\n\n this.addHideStateUpdatedEventListener((value: boolean)=>{\n if (value == false) {\n this.change();\n }\n });\n }\n\n private async change() {\n let width = 0, height = 0, depth = 0;\n const articles = await WebCabApiService.GetPlanned();\n if (articles.length > 0) {\n if (articles[0].dimension.length > 0) {\n width = articles[0].dimension[0] * 0.1;\n height = articles[0].dimension[2] * 0.1;\n depth = articles[0].dimension[1] * 0.1;\n }\n }\n const img = this.renderRoot.querySelector(\".img\");\n const imgWidth = img ? img.clientWidth : width;\n const imgHeight = img ? img.clientHeight : height;\n\n const disableDimensionVisuals = await WebCabApiService.GetDisableDimensionVisuals(this.customerType, this.configSuffix);\n if (disableDimensionVisuals == false) {\n await WebCabApiService.SetDisableDimensionVisuals(this.customerType, 1, this.configSuffix);\n }\n this.image = URL.createObjectURL(await CommunicationMessageService.takeCenteredSnap(false, 0, imgWidth, imgHeight) as Blob);\n if (disableDimensionVisuals == false) {\n await WebCabApiService.SetDisableDimensionVisuals(this.customerType, 0, this.configSuffix);\n }\n\n let childCount = 0;\n articles.forEach((article)=>{\n childCount += article.children;\n });\n\n if (this.width != width || this.height != height || this.depth != depth || this.childCount != childCount) {\n let amount = 0;\n const uis: IWebCabApiUiData = await WebCabApiService.GetUIs(this.customerType, this.configSuffix);\n const uiKeys = Object.keys(uis);\n if (uiKeys.length > 0) {\n uiKeys.forEach((uiKey: string)=>{\n const ui = uis[parseInt(uiKey)];\n ui.components.forEach((component)=>{\n if (component.name.includes(\"_ItemCountInput\")) {\n if (component.attributes && component.attributes.value) {\n amount += component.attributes.value;\n }\n }\n });\n });\n }\n\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.amount = amount;\n this.childCount = childCount;\n }\n this.requestUpdate();\n }\n\n private getPriceFormatText(price: number): string {\n return price.toFixed(2).replace(\".\", \",\");\n }\n\n protected render(): TemplateResult<1> {\n return html`\n <div class=\"overview-container\">\n <span class=\"img\" style=\"background-image: url(${this.image})\">\n </span>\n <span class=\"additional-container\">\n <div>\n <span>${this.amount}</span>\n <span i18n=\"webcab.overview.cabinets.amount.text\"></span>\n </div>\n <div class=\"dimension\">\n <span i18n=\"webcab.width.input.label\"></span>\n <span>\n <span>${this.getPriceFormatText(this.width)}</span>\n <span i18n=\"webcab.dimension.input.suffix\"></span>\n </span>\n </div>\n <div class=\"dimension\">\n <span i18n=\"webcab.height.input.label\"></span>\n <span>\n <span>${this.getPriceFormatText(this.height)}</span>\n <span i18n=\"webcab.dimension.input.suffix\"></span>\n </span>\n </div>\n <div class=\"dimension\">\n <span i18n=\"webcab.depth.input.label\"></span>\n <span>\n <span>${this.getPriceFormatText(this.depth)}</span>\n <span i18n=\"webcab.dimension.input.suffix\"></span>\n </span>\n </div>\n </span>\n </div>\n `;\n }\n}\n","import { css, html, unsafeCSS, TemplateResult } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport style from \"./toolbar.component.sass?inline\";\nimport { BaseElement } from \"../../base/base.component\";\n\n@customElement(\"fv-toolbar\")\nexport class ToolbarComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n\n this.addEventListener(\"wheel\", (e: WheelEvent) => {\n e.preventDefault();\n }, { passive: false });\n }\n\n render(): TemplateResult<1> {\n if (this.classList.contains(\"wrappable\")) {\n return html`\n <div class=\"content\">\n <slot></slot>\n </div>\n `;\n }\n return html`<slot></slot>`;\n }\n}","import { html, TemplateResult } from \"lit\";\nimport { customElement, query } from \"lit/decorators.js\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { ToolbarComponent } from \"./toolbar.component\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-toggle-toolbar:toggle\": Record<string, never>;\n }\n}\n\n@customElement(\"fv-toggle-toolbar\")\nexport class ToggleToolbarComponent extends ToolbarComponent {\n static styles = [\n super.styles || []\n ];\n\n constructor() {\n super();\n }\n\n @query(\"fv-toolbar\")\n public container: HTMLDivElement | undefined;\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-toggle-toolbar:toggle\": () => { this.toggleVisibility(); },\n };\n\n public toggleVisibility(): void {\n if (!this.container) return;\n if (this.container.classList.contains(\"hidden\")) {\n this.container.classList.remove(\"hidden\");\n return;\n }\n this.container.classList.add(\"hidden\");\n }\n\n public static toggle(query?: string) {\n const clickedComponent = ComponentService.find(\"fv-toggle-toolbar\", query ? query as string : \"\") as ToggleToolbarComponent;\n clickedComponent?.toggleVisibility();\n }\n\n render(): TemplateResult<1> {\n return html`\n <slot name=\"toggle-button\"></slot>\n <fv-toolbar class=\"hidden\">${super.render()}</fv-toolbar>\n `;\n }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { css, unsafeCSS, PropertyValueMap } from \"lit\";\nimport style from \"./svg-icon.component.sass?inline\";\n\n@customElement(\"svg-icon\")\nexport class SVGIconComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"src\" })\n public _src = \"\";\n\n private _color = \"#ffffff\";\n\n get Color() : string {\n return this._color;\n }\n\n set Color(val_ : string) {\n this.style.setProperty(\"background-color\", val_);\n this._color = val_;\n }\n\n constructor() {\n super();\n }\n\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>) {\n const color = this.style.getPropertyValue(\"color\");\n if (color && this._color !== color) {\n this.Color = color;\n }\n this.style.removeProperty(\"color\");\n this.style.setProperty(\"background-color\", this.style.getPropertyValue(\"color\"));\n this.style.setProperty(\"mask-image\", \"url(\" + this._src + \")\");\n super.updated(_changedProperties);\n }\n}\n","import { css, html, unsafeCSS, TemplateResult, PropertyValues } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport style from \"./toolbar.button.component.sass?inline\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { StyleHelper } from \"../../../../utils/style.helper\";\nimport { EventHandlerService } from \"../../../../utils/event.handler.service\";\nimport { ImageService } from \"../../../../utils/image.service\";\nimport { SVGIconComponent } from \"../../embedded-svg-icon\";\nimport {EventFactoryService} from \"@dh-software/webui-api\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-toolbar-button:set-active\": { value: boolean };\n \"fv-animation-toolbar-button:sync-active\": { mode: boolean };\n }\n}\n\n@customElement(\"fv-toolbar-button\")\nexport class ToolbarButtonComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"title-text\" })\n public titleText = \"\";\n @property({ type: String, reflect: true, attribute: \"config-id\" })\n protected configId = \"\";\n @property({ type: String, reflect: true, attribute: \"icon\" })\n protected icon = \"\";\n @property({ type: String, reflect: true, attribute: \"active-icon\" })\n protected activeIcon = \"\";\n @property({ type: Boolean, reflect: true, attribute: \"handle-active\" })\n public handleActive = false;\n @property({ type: Boolean, reflect: true, attribute: \"prevent-click-on-active\" })\n protected preventClickOnActive = false;\n @property({ type: Boolean, reflect: true, attribute: \"active-is-loading\" })\n public activeIsLoading = false;\n @property({ type: String, reflect: true, attribute: \"event-id\" })\n protected eventId = \"\";\n @property({ type: Boolean, reflect: true, attribute: \"initial-active\" })\n public initialActive = false;\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-toolbar-button:set-active\": ({ value }) => { this.active = value; },\n \"fv-animation-toolbar-button:sync-active\": ({ mode }) => {\n if (this.handleActive) this.active = mode;\n },\n };\n\n public set active(value: boolean) {\n const button = this.renderRoot.querySelector(\".button\");\n if (button) {\n if (value) {\n button.classList.add(\"active\");\n this.requestUpdate();\n return;\n }\n button.classList.remove(\"active\");\n }\n this.requestUpdate();\n }\n public get active(): boolean {\n const button = this.renderRoot.querySelector(\".button\");\n if (button) {\n return button.classList.contains(\"active\");\n }\n return false;\n }\n\n protected async clickEvent(e: Event) {\n if (this.preventClickOnActive && this.active) {\n e.stopPropagation();\n e.preventDefault();\n e.stopImmediatePropagation();\n return;\n }\n\n if (this.handleActive) {\n this.active = !this.active;\n }\n\n\n if (this.eventId) {\n let classes = \"[event-id='\" + this.eventId + \"'][title-text='\" + this.titleText + \"'] \";\n this.classList.forEach((className) => {\n classes += \".\";\n classes += className;\n });\n if (EventHandlerService.dispatch(this.eventId, {\n components: [{\n name: \"fv-toolbar-button\",\n selector: classes\n }]\n })) return;\n }\n this.dispatchEvent(new CustomEvent<{ \"button-type\": string }>(\"fv-toolbar-button-clicked\", {\n detail: { \"button-type\": this.eventId },\n bubbles: true,\n composed: true\n }));\n }\n protected async dblclickEvent(e: Event) {\n return;\n }\n\n constructor() {\n super();\n\n this.addEventListener(\"click\", (e: Event) => {\n this.clickEvent(e);\n });\n }\n\n connectedCallback() {\n super.connectedCallback();\n EventFactoryService.ToolbarButtonStateToggled.register(this.onToolbarButtonToggled);\n }\n\n disconnectedCallback() {\n EventFactoryService.ToolbarButtonStateToggled.unregister(this.onToolbarButtonToggled);\n super.disconnectedCallback();\n }\n\n private onToolbarButtonToggled = (...args: any[]) => {\n const data: {id: string, isActive: boolean} = args[0];\n if(data && this.classList.contains(data.id)) {\n this.active = data.isActive;\n }\n }\n\n protected build(inner: TemplateResult): TemplateResult<1> {\n if (window.g_configuration == undefined || window.g_configuration[this.configId] === false) {\n this.classList.add(\"disabled-in-config\");\n return html``;\n }\n this.classList.remove(\"disabled-in-config\");\n\n if (this.classList.contains('invalid-image-src')) {\n return html``;\n }\n\n return html`\n <div class=\"button-container\">\n <button @dblclick=\"${this.dblclickEvent}\" part=\"button\" class=\"button\" title=\"${this.titleText}\" tabindex=\"-1\">\n ${inner}\n </button>\n </div>\n `;\n }\n\n protected getImageIcon(): string {\n if (this.handleActive && this.active) {\n const iconActive = StyleHelper.getVar(this, \"--toolbar-icon-active\");\n if (iconActive.length > 0) {\n return iconActive;\n }\n }\n return StyleHelper.getVar(this, \"--toolbar-icon\");\n }\n\n private getAttributeIcon(): string {\n if (this.handleActive && this.active && this.activeIcon.length > 0) {\n return this.activeIcon;\n }\n return this.icon;\n }\n\n render(): TemplateResult<1> {\n const icon = this.getImageIcon();\n\n if (icon) {\n if (ImageService.getExtension(icon) === \"svg\") {\n const svgIcon = new SVGIconComponent();\n svgIcon.classList.add(\"image\");\n svgIcon.classList[this.active ? \"add\" : \"remove\"](\"active\");\n svgIcon._src = icon;\n return this.build(html`${svgIcon}`);\n }\n return this.build(html`<img class=\"image\" src=${icon}/>`);\n }\n else if (this.icon) {\n return this.build(html`<i class=\"icon ${this.getAttributeIcon()}\" part=\"icon\"></i>`);\n }\n return this.build(html`<slot></slot>`);\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n const imageSrc = this.getImageIcon();\n\n if (imageSrc.length > 0) {\n const imageValid = await this.checkImageSource(imageSrc)\n if (!imageValid) {\n this.classList.add(\"invalid-image-src\");\n }\n }\n\n if (this.initialActive) {\n this.active = true;\n }\n\n super.firstUpdated(_changedProperties);\n }\n\n public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n super.attributeChangedCallback(name, _old, value);\n if (name === \"title-text\" && this.titleText) {\n this.title = this.titleText;\n }\n }\n\n async checkImageSource(src: string): Promise<boolean> {\n return new Promise((resolve) => {\n const img = new Image();\n img.onload = () => {\n resolve(true);\n };\n img.onerror = () => {\n resolve(false);\n };\n img.src = src;\n });\n }\n\n}\n","import { html, TemplateResult } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { ToolbarButtonComponent } from \"./toolbar.button.component\";\nimport { PopupComponent } from \"../../popup\";\nimport { HRListComponent } from \"../../../hr\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { StyleHelper } from \"../../../../utils/style.helper\";\nimport {CommunicationMessageService, RequestService, WebViewerService} from \"@dh-software/webui-api\";\n// import { EventHandlerService } from \"../../../../utils/event.handler.service\";\n\n@customElement(\"fv-hr-mode-toolbar-button\")\nexport class HrModeToolbarButtonComponent extends ToolbarButtonComponent {\n static styles = super.styles || [];\n\n @property({ type: String, reflect: true, attribute: \"popup-selector\" })\n public popupSelector = \"\";\n\n @property({ type: String, reflect: true, attribute: \"list-selector\" })\n public listSelector = \"\";\n\n @property({ type: String, reflect: true, attribute: \"popup-closer-selector\" })\n public popupCloserSelector = \"\";\n\n private hrThemeCount = 0;\n\n constructor() {\n super();\n this.configId = \"new_hr_mode\";\n\n this.addEventListener(\"connected\", async ()=>{\n await RequestService.Initialized;\n const themes = await CommunicationMessageService.getHRThemes();\n this.hrThemeCount = Object.keys(themes).length;\n this.requestUpdate();\n });\n\n this.addEventListener(\"fv-toolbar-button-clicked\", ()=>{\n // let selector = \"[title-text='\" + this.titleText + \"']\";\n // this.classList.forEach((className)=>{\n // selector += \".\";\n // selector += className;\n // });\n // if (EventHandlerService.dispatch(\"toggle-hr-mode\", {\n // components: [{\n // name: \"fv-toolbar-button\",\n // selector: selector\n // }]\n // })) return;\n\n let popupComponent: PopupComponent = ComponentService.find(\"FV-POPUP\", this.popupSelector ? this.popupSelector : \"\") as PopupComponent;\n if (popupComponent == undefined) {\n popupComponent = new PopupComponent();\n document.body.append(popupComponent);\n }\n\n const element = this.renderRoot.querySelector(\"button\") as HTMLElement;\n if (element == undefined) return;\n\n popupComponent.owner = element;\n if (this.classList.contains(\"prevent-pointer\")) {\n popupComponent.pointer = false;\n }\n\n let hrListComponent: HRListComponent = ComponentService.find(\"FV-HR-LIST\", this.listSelector ? this.listSelector : \"\") as HRListComponent;\n if (hrListComponent == undefined) {\n hrListComponent = new HRListComponent();\n popupComponent.append(hrListComponent);\n }\n const hidePopup = (e: Event | MouseEvent) => {\n popupComponent.hide();\n this.active = false;\n hrListComponent.removeEventListener(\"onChange\", hidePopup);\n WebViewerService.FurnviewWebViewer?.contentWindow?.removeEventListener( \"mousedown\", hidePopup );\n };\n hrListComponent.addEventListener(\"onChange\", hidePopup);\n WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener( \"mousedown\", hidePopup, { passive: true, capture: true });\n\n //const popupCloserComponent: PopupCloserComponent = ComponentService.find(\"FV-POPUP-CLOSER\", this.popupCloserSelector ? this.popupCloserSelector : \"\") as PopupCloserComponent;\n if (popupComponent.IsActive) {\n popupComponent.hide();\n\n //if (popupCloserComponent) popupCloserComponent.hide();\n }\n else {\n popupComponent.show();\n //if (popupCloserComponent) popupCloserComponent.show();\n hrListComponent.onResize();\n }\n });\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.dispatchEvent(new CustomEvent(\"connected\"));\n }\n\n protected build(inner: TemplateResult): TemplateResult<1> {\n if (this.hrThemeCount < 1) {\n this.classList.add(\"disabled-in-config\");\n return html``;\n }\n return super.build(inner);\n }\n\n render(): TemplateResult<1> {\n const icon = this.getImageIcon();\n if (icon) {\n return this.build(html`<img class=\"image\" src=${icon}/>`);\n }\n else if (this.icon) {\n return this.build(html`<i class=\"icon ${this.icon}\" part=\"icon hr-mode\"></i>`);\n }\n return this.build(html`<slot></slot>`);\n }\n}\n","import { TemplateResult } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { ToolbarButtonComponent } from \"./toolbar.button.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-animation-toolbar-button\")\nexport class AnimationToolbarButtonComponent extends ToolbarButtonComponent {\n static styles = super.styles || [];\n\n protected async clickEvent(e: Event) {\n super.clickEvent(e);\n\n const status = await CommunicationMessageService.getAnimationStatus();\n if (status.running) {\n await CommunicationMessageService.setAnimationMode(status.mode, true);\n if (this.handleActive) {\n this.active = status.mode;\n }\n return;\n }\n await CommunicationMessageService.setAnimationMode(!status.mode, false);\n if (this.handleActive) {\n this.active = !status.mode;\n }\n }\n\n constructor() {\n super();\n this.configId = \"toolbar_button_animation\";\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n }\n\n render(): TemplateResult<1> {\n return super.render();\n }\n}\n","import {\n\tcss,\n\tCSSResultGroup,\n\thtml,\n\tPropertyValues,\n\tTemplateResult,\n\tunsafeCSS,\n} from \"lit\";\nimport {\n\tcustomElement,\n\tproperty,\n\tquery,\n\tqueryAll,\n\tstate,\n} from \"lit/decorators.js\";\nimport { BaseElement, DhElement } from \"../base/base.component\";\nimport { ModularSystemEventData } from \"../../../define/interface\";\nimport style from \"./step.component.sass?inline\";\nimport type { StepsComponent } from \"../steps/steps.component\";\n\n// Runtime-resolved instanceof to keep type narrowing without a static import cycle.\nfunction isStepsComponent(el: unknown): el is StepsComponent {\n\tconst ctor = customElements.get(\"fv-steps\");\n\treturn ctor != undefined && el instanceof ctor;\n}\nimport { CardDataService } from \"../../../utils/card.data.service\";\nimport { EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport {ComponentService, ComponentServiceSearchParams} from \"../../../utils/component.service\";\nimport type { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\n\ndeclare global {\n\tinterface ComponentStates {\n\t\t\"fv-step:notify-stage-changed\": ComponentServiceSearchParams;\n\t}\n}\n\ninterface TraversalEventsContainer {\n\tevents: Array<EventHandlerEvent>;\n\t\"prevent-controlled-element-update\"?: boolean;\n}\n\ninterface StepStagesSettings {\n\t\"controlled-element\": { tag: string; query: string };\n\t\"traversal-events\": {\n\t\t[stage: string]: {\n\t\t\tentry: { events: Array<EventHandlerEvent> },\n\t\t\tnext: TraversalEventsContainer,\n\t\t\tprevious: TraversalEventsContainer\n\t\t};\n\t};\n\t\"block-step-advance-on-boundary\"?: {\n\t\t\"next\"?: boolean,\n\t\t\"previous\"?: boolean\n\t};\n}\n\n@customElement(\"fv-step\")\nexport class StepComponent extends BaseElement {\n\tstatic styles: CSSResultGroup[] = [\n\t\tsuper.styles || [],\n\t\tcss`\n\t\t\t${unsafeCSS(style)}\n\t\t`,\n\t];\n\n\t@queryAll(\".circle-number-symbol\")\n\tprivate _circleNumberSymbol?: Array<Element>;\n\n\t@property({ type: String, reflect: true })\n\tpublic text = \"\";\n\n\t@property({ type: String, reflect: true, attribute: \"mobile-text\" })\n\tpublic mobileText = \"\";\n\n\t@property({ type: String, reflect: true })\n\tpublic icon = \"\";\n\n\t@property({ type: Number, reflect: true, attribute: \"index\" })\n\tpublic index = -1;\n\n\t@property({ type: Object, reflect: false, attribute: \"stages\" })\n\tpublic stages: StepStagesSettings | undefined = undefined;\n\n\t@property({ type: Boolean, reflect: true, attribute: \"show-index\" })\n\tprivate _showIndex = false;\n\n\t@property({ type: Boolean, reflect: true, attribute: \"disabled\" })\n\tprivate _disabled = false;\n\n\t@property({ type: Number })\n\tdisplayIndex = this.index;\n\n\tstateHandlers: ComponentStateHandlerMap = {\n\t\t\"fv-step:notify-stage-changed\": async ({ tag, query }) => {\n\t\t\tconst ce = this.stages?.[\"controlled-element\"];\n\t\t\tif (!ce || ce.tag !== tag) return;\n\t\t\tif (query !== undefined && ce.query !== query) return;\n\t\t\tawait this.RefreshStageEnvironment();\n\t\t},\n\t};\n\n\tprivate _stage:\n\t\t| { current: number; first: number; last: number }\n\t\t| undefined = undefined;\n\tprivate set stage(stage_: number) {\n\t\tif (this.stages == undefined || this._stage == undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (stage_ < this._stage.first) {\n\t\t\tthis._stage.current = this._stage.first;\n\t\t\treturn;\n\t\t}\n\t\tif (stage_ > this._stage.last) {\n\t\t\tthis._stage.current = this._stage.last;\n\t\t\treturn;\n\t\t}\n\t\tthis._stage.current = stage_;\n\t}\n\tpublic get traverseStages(): boolean {\n\t\treturn !(this.stages == undefined || this._stage == undefined);\n\t}\n\n\tprivate async DispatchTraversalEvents(stageToDispatch_: number, next_: boolean): Promise<boolean> {\n\t\tif (this.stages == undefined || this._stage == undefined) {\n\t\t\treturn true;\n\t\t}\n\t\tconst stageTraversalEvents = this.stages[\"traversal-events\"][stageToDispatch_.toFixed()];\n\t\tif (stageTraversalEvents == undefined) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (next_) {\n\t\t\tif (stageTraversalEvents.next && stageTraversalEvents.next.events) {\n\t\t\t\tawait EventHandlerService.dispatchEventList(stageTraversalEvents.next.events, false);\n\t\t\t\treturn stageTraversalEvents.next[\"prevent-controlled-element-update\"] ? false : true;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tif (stageTraversalEvents.previous && stageTraversalEvents.previous.events) {\n\t\t\tawait EventHandlerService.dispatchEventList(stageTraversalEvents.previous.events, false);\n\t\t\treturn stageTraversalEvents.previous[\"prevent-controlled-element-update\"] ? false : true;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate async TraverseToStage(target_: number): Promise<boolean | undefined> {\n\t\tif (this.stages == undefined || this._stage == undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (target_ === this._stage.current) {\n\t\t\t// no need for events if no change!\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst controlledElement = this.stages[\"controlled-element\"];\n\t\tconst stageElement = ComponentService.find(controlledElement.tag, controlledElement.query);\n\n\n\t\tif (stageElement && !stageElement.VerifyStepStageChange()) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst targetStageTraversalEvents = this.stages[\"traversal-events\"][target_.toFixed()];\n\t\tif (targetStageTraversalEvents && targetStageTraversalEvents.entry && targetStageTraversalEvents.entry.events) {\n\t\t\tawait EventHandlerService.dispatchEventList(targetStageTraversalEvents.entry.events, false);\n\t\t}\n\n\t\tconst applyStageToControlledElement = await this.DispatchTraversalEvents(this._stage.current, this._stage.current < target_);\n\n\t\tif (target_ < this._stage.first) {\n\t\t\tif (this.stages[\"block-step-advance-on-boundary\"]) {\n\t\t\t\treturn this.stages[\"block-step-advance-on-boundary\"].previous ? true : false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tif (target_ > this._stage.last) {\n\t\t\tif (this.stages[\"block-step-advance-on-boundary\"]) {\n\t\t\t\treturn this.stages[\"block-step-advance-on-boundary\"].next ? true : false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.stage = target_;\n\n\t\tif (!applyStageToControlledElement) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (stageElement != undefined) {\n\t\t\tawait stageElement.ApplyStepStage(this._stage.current);\n\t\t}\n\t\treturn true;\n\t}\n\tpublic async RefreshStageEnvironment(): Promise<void> {\n\t\tif (!this.stages) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst controlledElement = this.stages[\"controlled-element\"];\n\t\tconst stageElement = ComponentService.find(controlledElement.tag, controlledElement.query);\n\t\tif (stageElement == undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst stage = await stageElement.DetermineStepStageEnvironment();\n\t\tif (stage == undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetStageTraversalEvents = this.stages[\"traversal-events\"][stage.current.toFixed()];\n\t\tif (targetStageTraversalEvents && targetStageTraversalEvents.entry && targetStageTraversalEvents.entry.events) {\n\t\t\tawait EventHandlerService.dispatchEventList(targetStageTraversalEvents.entry.events, false);\n\t\t}\n\n\t\tthis._stage = stage; // set stage on open of step\n\t}\n\tprivate async InitStageEnvironment(): Promise<void> {\n\t\tawait this.RefreshStageEnvironment();\n\t}\n\n\tpublic async PreviousStage(): Promise<boolean | undefined> {\n\t\tif (this._stage == undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.TraverseToStage(this._stage.current - 1);\n\t}\n\tpublic async NextStage(): Promise<boolean | undefined> {\n\t\tif (this._stage == undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.TraverseToStage(this._stage.current + 1);\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.addEventListener(\"click\", async (ev: CustomEventInit) => {\n\t\t\t// const steps = this.parentElement as StepsComponent;\n\t\t\tif (!this.classList.contains(\"only-action\")) {\n\t\t\t\tawait this.InitStageEnvironment();\n\n\t\t\t\tconst event = new CustomEvent<ModularSystemEventData>(\n\t\t\t\t\t\"fv-step-clicked\",\n\t\t\t\t\t{\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tid: this.id,\n\t\t\t\t\t\t\tcurrentTarget: this,\n\t\t\t\t\t\t\tindex: this.index.toString(),\n\t\t\t\t\t\t\tuserInteraction:\n\t\t\t\t\t\t\t\tev?.detail?.userInteraction !== undefined\n\t\t\t\t\t\t\t\t\t? ev.detail.userInteraction\n\t\t\t\t\t\t\t\t\t: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tthis.dispatchEvent(event);\n\t\t\t\t// steps?.dispatchEvent(event);\n\t\t\t\tthis.classList.add(\"active\");\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updateIndex() {\n\t\tif (\n\t\t\t!this._showIndex ||\n\t\t\t!this._circleNumberSymbol ||\n\t\t\t!this.parentElement\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst steps = this.parentElement as StepsComponent;\n\t\tconst visibleSteps: StepComponent[] = Array.from(\n\t\t\tsteps.querySelectorAll(\n\t\t\t\t`${steps.stepQuery}:not(.hide-while-empty-content)`,\n\t\t\t),\n\t\t);\n\t\tconst visibleIndex = visibleSteps.indexOf(this);\n\n\t\tif (visibleIndex >= 0) {\n\t\t\tthis.displayIndex = visibleIndex;\n\t\t}\n\n\t\tthis._circleNumberSymbol.forEach((item) => {\n\t\t\titem.textContent = (this.displayIndex + 1).toString();\n\t\t});\n\t}\n\n\tprivate checkStepTargetElementVisibility(\n\t\telement_?: DhElement | undefined,\n\t) {\n\t\tlet emptyElements = 0;\n\t\tlet disabledElements = 0;\n\n\t\tconst steps = this.parentElement as StepsComponent;\n\t\tif (steps && isStepsComponent(steps) && this.index > -1) {\n\t\t\tconst elements = new Array<DhElement>();\n\t\t\tif (element_) {\n\t\t\t\telements.push(element_);\n\t\t\t} else {\n\t\t\t\telements.push(...steps.getTargetContentsList(this.index));\n\t\t\t}\n\n\t\t\tif (steps.hideEmptyContent) {\n\t\t\t\tthis.classList.remove(\"hide-while-empty-content\");\n\t\t\t}\n\t\t\tif (steps.autoDisableSteps) {\n\t\t\t\tthis._disabled = false;\n\t\t\t}\n\n\t\t\tif (steps.ignoreEmptyTargets && elements.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (const element of elements) {\n\t\t\t\tif (element) {\n\t\t\t\t\tconst isDisabled =\n\t\t\t\t\t\telement.classList.contains(\"step-disabled\");\n\t\t\t\t\tconst isEmpty = element.isEmpty();\n\n\t\t\t\t\tif (steps.hideEmptyContent && isEmpty && !isDisabled) {\n\t\t\t\t\t\t++emptyElements;\n\t\t\t\t\t}\n\t\t\t\t\tif (steps.autoDisableSteps && isDisabled) {\n\t\t\t\t\t\t++disabledElements;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (steps.hideEmptyContent && emptyElements == elements.length) {\n\t\t\t\tthis.classList.add(\"hide-while-empty-content\");\n\t\t\t}\n\t\t\tif (\n\t\t\t\tsteps.autoDisableSteps &&\n\t\t\t\telements.length != 0 &&\n\t\t\t\tdisabledElements == elements.length\n\t\t\t) {\n\t\t\t\tthis._disabled = true;\n\t\t\t}\n\t\t\tthis.updateIndex();\n\t\t\tsteps.dispatchEvent(\n\t\t\t\tnew CustomEvent(\"fv-steps-request-step-activated-events\", {\n\t\t\t\t\tdetail: { \"requesting-step-index\": this.index },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n\n\tprotected firstUpdated(_changedProperties: PropertyValues) {\n\t\tsuper.firstUpdated(_changedProperties);\n\t\twindow.addEventListener(\"onUpdated\", ((e: CustomEvent) => {\n\t\t\tthis.checkStepTargetElementVisibility();\n\t\t\tCardDataService.WaitForAllCardContainerFetchPromises().then(() => {\n\t\t\t\tthis.checkStepTargetElementVisibility();\n\t\t\t});\n\t\t}) as EventListener);\n\t}\n\n\tprivate buildIcon() {\n\t\tif (this._showIndex) {\n\t\t\treturn html`<div class=\"circle-number-symbol\">\n\t\t\t\t${this.index + 1}\n\t\t\t</div>`;\n\t\t}\n\t\tconst image = this.style.getPropertyValue(\"--icon-image\");\n\t\tif (image) {\n\t\t\treturn html`<img class=\"icon-image\" src=\"${image}\" part=\"image\" />`;\n\t\t}\n\t\treturn html`<div class=\"icon ${this.icon}\"></div>`;\n\t}\n\tprivate buildText() {\n\t\treturn html`\n\t\t\t<span class=\"text-span\" i18n=\"${this.text}\">${this.text}</span>\n\t\t\t<span class=\"mobile-text-span\" i18n=\"${this.mobileText}\"\n\t\t\t\t>${this.mobileText}</span\n\t\t\t>\n\t\t`;\n\t}\n\n\tpublic build(additional: TemplateResult): TemplateResult<1> {\n\t\tthis.classList.remove(\"show-mobile-text\");\n\t\tthis.checkStepTargetElementVisibility();\n\t\tif (this.mobileText.length > 0) this.classList.add(\"show-mobile-text\");\n\n\t\tconst textAboveImage = this.classList.contains(\"text-above-image\");\n\n\t\treturn html`\n\t\t\t<div class=\"step-container\">\n\t\t\t\t${this.classList.contains(\"prevent-default\")\n\t\t\t\t\t? html``\n\t\t\t\t\t: html`\n\t\t\t\t\t\t\t<div class=\"inner-container\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tpart=\"${textAboveImage ? \"text\" : \"img\"}\"\n\t\t\t\t\t\t\t\t\tclass=\"upper-container ${textAboveImage\n\t\t\t\t\t\t\t\t\t\t? \"text\"\n\t\t\t\t\t\t\t\t\t\t: \"img\"}\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t${textAboveImage\n\t\t\t\t\t\t\t\t\t\t? this.buildText()\n\t\t\t\t\t\t\t\t\t\t: this.buildIcon()}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tpart=\"${!textAboveImage ? \"text\" : \"img\"}\"\n\t\t\t\t\t\t\t\t\tclass=\"lower-container ${!textAboveImage\n\t\t\t\t\t\t\t\t\t\t? \"text\"\n\t\t\t\t\t\t\t\t\t\t: \"img\"}\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t${textAboveImage\n\t\t\t\t\t\t\t\t\t\t? this.buildIcon()\n\t\t\t\t\t\t\t\t\t\t: this.buildText()}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t\tname=\"step-content\"\n\t\t\t\t\t\t\t\t\tclass=\"step-content\"\n\t\t\t\t\t\t\t\t></slot>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`}\n\t\t\t\t${additional}\n\t\t\t</div>\n\t\t`;\n\t}\n\trender(): TemplateResult<1> {\n\t\treturn this.build(html`<slot></slot>`);\n\t}\n}\n","import { css, CSSResultGroup, html, PropertyValueMap, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { StepComponent } from \"./step.component\";\nimport style from \"./icon.step.component.sass?inline\";\n\n\n@customElement(\"fv-icon-step\")\nexport class IconStepComponent extends StepComponent {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return super.build(html`<slot></slot>`);\n }\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.updated(_changedProperties);\n\n if (this.classList.contains(\"underline\")) {\n let container = undefined;\n const textAboveImage = this.classList.contains(\"text-above-image\");\n if (textAboveImage) {\n container = this.renderRoot.querySelector(\".upper-container\");\n }\n else {\n container = this.renderRoot.querySelector(\".lower-container\");\n }\n container?.classList.add(\"underline-active\");\n }\n }\n}","import {customElement, property} from \"lit/decorators.js\";\r\nimport { LitElement, html, css, TemplateResult, CSSResultGroup, unsafeCSS, nothing } from 'lit';\r\nimport { StepComponent } from \"../step\";\r\nimport { StepsComponent } from \"../steps\";\r\nimport style from \"./pill-step.component.ts.sass?inline\";\r\n\r\n@customElement('fv-pill-step')\r\nexport class PillStepComponent extends StepComponent{\r\n\tstatic styles: CSSResultGroup[] = [\r\n\t\tsuper.styles || [],\r\n\t\tcss`${unsafeCSS(style)}`\r\n\t];\r\n\r\n\t@property({type:Boolean, reflect: true})\r\n\tchecked = false;\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tsuper();\r\n\r\n\t\tthis.addEventListener(\"fv-step-clicked\", this.onPillStepClicked.bind(this));\r\n\t}\r\n\r\n private onPillStepClicked(e: CustomEventInit) {\r\n const clickedIndex = parseInt(e.detail.index);\r\n const stepsParent = this.parentElement as StepsComponent;\r\n const orderedIndices = stepsParent?.getAvailableIndices() ?? [];\r\n const clickedPos = orderedIndices.indexOf(clickedIndex);\r\n\r\n const pillSteps = this.parentElement?.querySelectorAll('fv-pill-step') as NodeListOf<PillStepComponent>;\r\n pillSteps.forEach((pill) => {\r\n pill.checked = orderedIndices.indexOf(pill.index) < clickedPos;\r\n });\r\n }\r\n\r\n\trenderCircleCheckContent() {\r\n\t\treturn html`\r\n\t\t\t<div class=\"circle\">\r\n\t\t\t\t<span class=\"check ${this.checked ? 'checked' : ''}\">\r\n\t\t\t\t\t<svg width=\"12\" height=\"12\" viewBox=\"0 0 22 23\" fill=\"none\"\r\n\t\t\t\t\t\tstroke=\"currentColor\" stroke-width=\"3\"\r\n\t\t\t\t\t\tstroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\"/>\r\n\t\t\t\t\t</svg>\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t`;\r\n\t}\r\n\r\n\trenderCircleIndexContent() {\r\n\t\treturn html`\r\n\t\t<div class=\"circle\">\r\n\t\t\t${this.displayIndex + 1}\r\n\t\t</div>\r\n `;\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn html`\r\n\t\t\t<div class=\"fv-step-container\">\r\n\t\t\t\t<div class=\"circle\">\r\n\t\t\t\t\t<span class=\"index ${this.checked ? 'hide' : ''}\">\r\n\t\t\t\t\t\t${this.displayIndex + 1}\r\n\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t<span class=\"check ${this.checked ? 'checked' : ''}\">\r\n\t\t\t\t\t\t<svg class=\"check-svg\" viewBox=\"0 0 22 24\">\r\n\t\t\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\"/>\r\n\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<fv-label class=\"step-text\" i18n=\"${this.text}\"></fv-label>\r\n\t\t\t</div>\r\n\t\t`;\r\n\t}\r\n\r\n\r\n}","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./info.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-info-button\")\nexport class InfoComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(\"click\", this.handleClick);\n }\n\n handleClick(ev: MouseEvent) {\n ev.stopPropagation();\n ev.preventDefault();\n ev.stopImmediatePropagation();\n\n this.dispatchEvent(new CustomEvent(\"info-button-clicked\", {\n detail: {\n }, bubbles: true, composed: true\n }));\n }\n\n render(): TemplateResult<1> {\n return html`\n <span aria-hidden=\"true\">i</span>\n `;\n }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./titled-image.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../../../standard/base/base.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport \"../../../../standard/info_button/info.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-titled-image\")\nexport class TitledImageComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true })\n zoomable = true;\n\n @property({ type: String, reflect: true })\n image = \"\";\n\n @property({ type: String, reflect: true })\n activeIcon = \"fv-icon-plus\";\n\n @property({ type: String, reflect: true })\n inactiveIcon = \"fv-icon-maximize\";\n\n @property({ type: String, reflect: true })\n text = \"\";\n\n @property({ type: String })\n infoData = \"\";\n\n @property({ type: String })\n infoType = \"\";\n\n @property({ type: String })\n manufacturer = \"\";\n\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n @query(\".zoomButton\")\n private _zoomButton: HTMLDivElement | undefined;\n\n @property({ type: Boolean })\n private _isActive = false;\n\n public className = \"flex\";\n\n public set Image(val_: string) {\n this.image = val_ ? `background-${\n val_.startsWith(\"#\") ?\n `color: ${val_}` :\n val_.split(\",\").length >= 2 ?\n `color: rgba(${val_})`\n : `image: url(${val_})`\n }` : this.image;\n }\n\n set IsActive(active: boolean) {\n this._isActive = active;\n this.requestUpdate();\n }\n\n constructor() {\n super();\n this.addEventListener(\"click\", ()=>{\n this._isActive = false;\n this.requestUpdate();\n });\n }\n\n private zoom(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n this._isActive = !this._isActive;\n this.dispatchEvent(new CustomEvent(\"zoomClicked\", { detail: { zoomable: this.zoomable, active: this._isActive } }));\n this.requestUpdate();\n }\n\n private infoClick (e: PointerEvent) {\n e.preventDefault();\n e.stopPropagation();\n CommunicationMessageService.showToolTipData({\n \"manufacturer\": this.manufacturer,\n \"type\": this.infoType,\n \"data\": this.infoData\n });\n }\n\n protected updated(changedProps: PropertyValues): void {\n super.updated?.(changedProps);\n // Mirror the reactive `selected` prop onto the legacy `.selected` class so\n // existing themed CSS that targets `.selected` keeps working without change.\n if (changedProps.has(\"selected\")) {\n this.classList.toggle(\"selected\", this.selected);\n }\n }\n\n render(): TemplateResult<1> {\n this.classList[this._isActive ? \"add\" : \"remove\"](\"zoomed\");\n if (this._isActive) {\n this.setAttribute(\"part\", \"zoomed\");\n }\n else {\n this.removeAttribute(\"part\");\n }\n const iconClass: { [key: string]: boolean } = {}\n iconClass[this.activeIcon] = this._isActive;\n iconClass[this.inactiveIcon] = !this._isActive;\n\n return html`\n <div part=\"image\" class=\"image\" style=\"${this.image.startsWith(\"background-\") ? this.image : `background-image: url('${this.image}')`}\">\n ${ this.zoomable ?\n html`<div part=\"zoomButton\" class=\"zoomButton\" @click=\"${this.zoom}\">\n <i class=${classMap(iconClass)}></i>\n </div>\n ` : \"\"}\n </div>\n ${this.text ? html` <div part=\"text\" class=\"text\">\n <span>${this.text}</span>\n ${ this.infoData ? html`<fv-info-button @info-button-clicked=\"${this.infoClick}\"></fv-info-button>` : \"\" } \n </div>\n ` : \"\"}\n `;\n }\n}\n","import {css, html, HTMLTemplateResult, PropertyValueMap, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./accordion-item.component.sass?inline\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../base/base.component\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {AccordionComponent} from \"../accordion/accordion.component\";\nimport {ComponentService} from \"../../../../utils/component.service\";\nimport {EventHandlerDispatchEvent, EventHandlerEvent} from \"../../../../models/event-handler/event.handler.model\";\nimport {ImageService} from \"../../../../utils/image.service\";\nimport {\n ConfiguratorFormUpdateAllEventInit\n} from \"components/configurator/configurator-form-elements/configurator.form.base.element.component\";\nimport {AccordionContentComponent} from \"../accordion-content/accordion-content.component\";\nimport {StyleHelper} from \"../../../../utils/style.helper\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-accordion-item:update-height\": Record<string, never>;\n }\n}\n\nexport interface IAccordionItem {\n header: string;\n image: string;\n}\n\nenum AccordionIconMode {\n DEFAULT,\n ICON,\n CHEVRON,\n CUSTOM\n}\n\n@customElement(\"fv-accordion-item\")\nexport class AccordionItemComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: Boolean, reflect: true, attribute: \"forced-open\"})\n public forcedOpen = false;\n\n @property({type: Boolean, reflect: true, attribute: \"singular\"})\n public isSingular?: boolean;\n @property({type: Boolean, reflect: true, attribute: \"allow-close-of-forced-open\"})\n public allowCloseOfForcedOpen = false;\n @property({type: Boolean})\n public isActive = false;\n\n @property({type: String})\n protected header: string | undefined;\n\n @property({type: String})\n protected image = \"\";\n\n @property({type: Number})\n public iconMode: AccordionIconMode = AccordionIconMode.DEFAULT;\n\n @query(\"#content\")\n protected content: AccordionContentComponent | undefined;\n\n @property({type: Boolean, reflect: true, attribute: \"header-as-slot\"})\n public headerAsSlot = false;\n\n @property({type: Array, reflect: true, attribute: \"on-open-events\"})\n public onOpenEvents = new Array<EventHandlerEvent>();\n @property({type: Array, reflect: true, attribute: \"on-close-events\"})\n public onCloseEvents = new Array<EventHandlerEvent>();\n\n @property({type: Boolean, reflect: true, attribute: \"inert-on-close\"})\n public inertOnClose = true;\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-accordion-item:update-height\": () => { this.requestHeightUpdate(); },\n };\n\n get Header(): string | undefined {\n return this.header;\n }\n\n set Header(header_: string | undefined) {\n this.header = header_;\n this.requestUpdate(\"header\");\n }\n\n get Image(): string {\n return this.image;\n }\n\n public set Image(val_: string) {\n this.image = val_ ? `background-${val_.startsWith(\"#\") ? `color: ${val_}` : val_.split(\",\").length >= 2 ? `color: rgba(${val_})` : `image: url(${val_})`}` : val_;\n this.requestUpdate(\"image\");\n\n }\n\n protected getDefaultImageIcon(): string {\n const styles = getComputedStyle(this);\n return styles.getPropertyValue(\"--default-image\");\n }\n\n public requestHeightUpdate() {\n return this.content?.setHeightAndAnimate() || Promise.resolve()\n }\n\n constructor(parameters_?: IAccordionItem) {\n super();\n if (parameters_) {\n this.header = parameters_.header;\n this.image = parameters_.image;\n }\n this.AddConnectedCallbackAction(async () => {\n this.tabIndex = 0;\n });\n this.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key == \"Enter\") {\n this.clickHeader(e);\n }\n });\n\n this.addHideStateUpdatedEventListener((value, changedByParent) => {\n if(changedByParent) this.requestHeightUpdate();\n })\n\n window.addEventListener(\"configuratorformupdatedall\", async (event_: CustomEventInit) => {\n const eventInit = event_ as ConfiguratorFormUpdateAllEventInit;\n for (const input of eventInit.detail.All) {\n await input.updateComplete;\n }\n this.parentAccordion?.ActiveItem?.forceOpen();\n });\n }\n\n public get parentAccordion(): AccordionComponent {\n let parentNode = this.parentElement || this.parentNode\n if (parentNode && (parentNode as ShadowRoot).host) {\n parentNode = (parentNode as ShadowRoot).host;\n }\n if (parentNode instanceof AccordionItemComponent) {\n return parentNode.parentAccordion\n }\n return parentNode as AccordionComponent;\n }\n\n async append(...nodes: any[]) {\n super.append(...nodes);\n await StyleHelper.requestAnimationFrame();\n await this.requestHeightUpdate()\n }\n\n appendChild<T extends Node>(node: T): T {\n this.append(node);\n return node as T;\n }\n\n getScrollOffsetNeeded(element: Element, scrollableParent: HTMLElement) {\n return scrollableParent.scrollTop + element.getBoundingClientRect().top - scrollableParent.offsetTop;\n }\n\n // Standalone-mode guard — a bare <fv-accordion-item> (no parent <fv-accordion>) can\n // only work if it isn't nesting other accordion-items; nested ones would need the\n // parent's ActiveItem bookkeeping to swap correctly.\n private needParentToFunction(): boolean {\n return [...this.children].some(x => x instanceof AccordionItemComponent);\n }\n\n public open() {\n const parent = this.parentAccordion;\n if (parent) {\n // Imperative coordination — restored from before the setter centralization.\n // Guarded with !== this to avoid self-deactivate (was the source of the prior loop bug).\n if (parent.ActiveItem !== undefined && parent.ActiveItem !== this) {\n parent.ActiveItem.isActive = false;\n }\n parent.ActiveItem = this;\n this.isActive = true;\n } else {\n if (this.needParentToFunction()) return;\n this.isActive = true;\n }\n this.requestHeightUpdate();\n }\n\n public forceOpen() {\n this.forcedOpen = true;\n const parent = this.parentAccordion;\n if (parent) {\n if (parent.ActiveItem !== undefined && parent.ActiveItem !== this) {\n parent.ActiveItem.isActive = false;\n }\n parent.ActiveItem = this;\n this.isActive = true;\n } else {\n if (this.needParentToFunction()) {\n console.error(\"accordion-item> cant be forced open! No Parent!\");\n return;\n }\n this.isActive = true;\n }\n this.requestHeightUpdate();\n }\n\n\n private _HeaderClickDefers = new Array<() => Promise<void>>();\n\n public AddHeaderClickDefer(defer_: () => Promise<void>) {\n this._HeaderClickDefers.push(defer_);\n }\n\n private async WaitForHeaderClickDefers(): Promise<void> {\n for (const defer of this._HeaderClickDefers) {\n await defer();\n }\n return;\n }\n\n protected clickHeader = async (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n await this.WaitForHeaderClickDefers();\n\n this.forcedOpen = false;\n const parent = this.parentAccordion;\n if (parent) {\n if (parent.ActiveItem) {\n parent.ActiveItem.isActive = false;\n if (this.allowCloseOfForcedOpen) this.forcedOpen = false;\n }\n if (parent.ActiveItem !== this) {\n this.isActive = true;\n parent.ActiveItem = this;\n } else {\n parent.ActiveItem = undefined;\n this.isActive = false;\n }\n } else {\n if (this.needParentToFunction()) return;\n this.isActive = !this.isActive;\n }\n if (!this.isActive) return;\n await this.updateComplete;\n await this.content?.updateComplete;\n this.scrollIntoView({block: 'start', behavior: 'smooth'})\n };\n\n protected build() {\n this.image = this.image.replace(/.*url\\(([^)]+)\\).*/, \"$1\");\n if (this.headerAsSlot) {\n return html`\n <slot name=\"header\"></slot>`;\n }\n\n const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n let imageTemplate: HTMLTemplateResult\n\n const image = this.image || iconURL\n if (image) {\n const extension = ImageService.getExtension(image);\n if (extension.endsWith(\"svg\")) {\n imageTemplate = html`\n <svg-icon class=\"img-content\" src=\"${image}\"></svg-icon>`\n } else if (image.startsWith('fv-icon')) {\n imageTemplate = html`\n <fv-icon class=\"img-content iconimage\" icon=\"${image}\"></fv-icon>`\n } else {\n imageTemplate = html`\n <fv-icon class=\"img-content\" src=\"${image}\"></fv-icon>`\n }\n }\n return html`\n <div class=\"image\">\n ${imageTemplate!}\n </div>\n <div class=\"text\">${this.header}</div>\n `;\n }\n\n\n public async TriggerOnOpenCloseEvents(opening: boolean): Promise<void> {\n if (opening) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.onOpenEvents\n }));\n } else {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: this.onCloseEvents\n }));\n }\n }\n\n protected updated(_changedProperties: PropertyValueMap<unknown>) {\n super.updated(_changedProperties);\n if (this.isSingular) this.open();\n }\n\n\n render() {\n const headerClass = {header: true, hidden: !!this.isSingular};\n let chevronClass = {};\n switch (this.iconMode) {\n case AccordionIconMode.ICON:\n chevronClass = {\"accordion-symbol\": true, \"down\": !this.isActive, \"up\": this.isActive};\n break;\n case AccordionIconMode.CHEVRON:\n chevronClass = {\"chevron-symbol\": true, \"down\": !this.isActive, \"up\": this.isActive};\n break;\n case AccordionIconMode.CUSTOM:\n chevronClass = {\"custom-symbol\": true, \"down\": !this.isActive, \"up\": this.isActive};\n break;\n case AccordionIconMode.DEFAULT:\n default:\n chevronClass = {\"icon\": true, \"fv-icon-plus\": !this.isActive, \"fv-icon-minus\": this.isActive};\n break;\n }\n const contentActive = this.isActive || !!this.isSingular\n return html`\n <div class=\"${classMap(headerClass)}\" @click=${this.clickHeader}>\n ${this.build()}\n <div class=\"${classMap(chevronClass)}\"></div>\n </div>\n <fv-accordion-content id=\"content\" ?active=\"${contentActive}\" ?inert=\"${this.inertOnClose && !contentActive}\" ?disable-animation=\"${this.forcedOpen}\">\n <slot @slotchange=\"${() => this.requestHeightUpdate()}\"></slot>\n </fv-accordion-content>\n `;\n }\n}\n","import { css, html, PropertyValueMap, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./accordion.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { AccordionItemComponent } from \"../accordion-item/accordion-item.component\";\n\n@customElement(\"fv-accordion\")\nexport class AccordionComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true, attribute: \"first-starts-open\" })\n public firstStartsOpen = false;\n\n private _activeItem: AccordionItemComponent | undefined;\n\n get ActiveItem(): AccordionItemComponent | undefined {\n return this._activeItem;\n }\n\n // Single source of truth for active-item state. Dedupes (idempotent reassignment is a no-op,\n // killing the reactive-loop class) and atomically syncs isActive + open/close events on prev/new.\n // Callers MUST NOT write `item.isActive` directly — go through this setter.\n set ActiveItem(item: AccordionItemComponent | undefined) {\n const prev = this._activeItem;\n if (prev === item) return;\n this._activeItem = item;\n if (prev) {\n prev.isActive = false;\n prev.TriggerOnOpenCloseEvents(false);\n }\n if (item) {\n item.isActive = true;\n item.TriggerOnOpenCloseEvents(true);\n }\n }\n\n constructor() {\n super();\n\n this.addHideStateUpdatedEventListener((value: boolean)=>{\n if (!value) {\n this.ActiveItem?.TriggerOnOpenCloseEvents(true);\n }\n \n if (this.updateCounter == 1) {\n if (this.firstStartsOpen) {\n if (this.firstChild) {\n if (this.firstChild instanceof AccordionItemComponent) {\n this.firstChild.open();\n }\n }\n }\n }\n });\n }\n\n protected updateCounter = 0;\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n ++this.updateCounter;\n super.updated(_changedProperties);\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n }\n\n render() {\n return html`\n <slot></slot>\n `;\n }\n}\n","import {AccordionItemComponent} from \"../accordion-item/accordion-item.component\";\n\nimport style from './accordion-layer.component.sass?inline';\nimport {PropertyValues, unsafeCSS} from \"lit\";\nimport {StyleHelper} from \"../../../../utils/style.helper\";\nimport {AccordionComponent} from \"../accordion/accordion.component\";\n\nexport class AccordionLayerComponent extends AccordionItemComponent {\n\n static styles = [super.styles || [], unsafeCSS(style)]\n\n connectedCallback() {\n this.inertOnClose = false;\n super.connectedCallback();\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n this.isActive = true;\n }\n\n open() {\n (this.firstChild as AccordionItemComponent)?.open();\n }\n\n forceOpen() {\n (this.firstChild as AccordionItemComponent)?.forceOpen();\n }\n\n}\n","import {BaseElement} from \"../../base/base.component\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {html, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./accordion-content.component.sass?inline\";\n\n@customElement(\"fv-accordion-content\")\nexport class AccordionContentComponent extends BaseElement {\n\n @property({type: Boolean, reflect: true})\n active: boolean = false;\n\n @property({type: Boolean, reflect: true, attribute: \"disable-animation\"})\n disableAnimation = false;\n\n @query(\"slot\")\n slotElement!: HTMLSlotElement;\n\n private _animationPromise = Promise.resolve();\n\n static styles = [\n super.styles || [],\n unsafeCSS(style)\n ]\n\n render() {\n return html`\n <slot></slot>\n `\n }\n\n protected update(changedProperties: PropertyValues) {\n super.update(changedProperties);\n if(changedProperties.has(\"active\")){\n this.setHeightAndAnimate()\n }\n }\n public async setHeightAndAnimate(targetHeight?: number): Promise<void> {\n return (this._animationPromise = new Promise((resolve, rej) => {\n let animationHeight = targetHeight ?? 0;\n if (this.active) {\n animationHeight = this.slotElement.clientHeight\n }\n const prev = this.style.getPropertyValue(\"--max-transition-height\");\n const next = `${animationHeight}px`;\n this.style.setProperty(\"--max-transition-height\", next);\n\n if (prev === next || this.disableAnimation) {\n resolve();\n return;\n }\n const end = (ev: TransitionEvent) => {\n if (ev.target !== this || ev.propertyName !== \"max-height\") return;\n this.removeEventListener(\"transitionend\", end);\n this.removeEventListener(\"transitioncancel\", end);\n resolve();\n };\n this.addEventListener(\"transitionend\", end);\n this.addEventListener(\"transitioncancel\", end);\n }));\n }\n\n protected async getUpdateComplete(): Promise<boolean> {\n const result = await super.getUpdateComplete();\n await this._animationPromise;\n return result;\n }\n\n}\n","import {css, html, nothing, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./property-list.component.sass?inline\";\nimport {customElement, property, query, queryAll} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../../../standard/base/base.component\";\nimport {TitledImageComponent} from \"./titled-image.component\";\nimport {AccordionItemComponent} from \"../../../../standard/accordion\";\nimport {SikkensPickerComponent} from \"../../../../colorpicker/sikkens\";\nimport {NcsPickerComponent} from \"../../../../colorpicker/ncs\";\nimport {RalPickerComponent} from \"../../../../colorpicker/ral\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {IColorPicker} from \"@dh-software/webui-types\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\nenum ZoomStyle {\n\n TOP,\n INLINE,\n OVERLAY,\n\n}\n\ninterface ZoomOptions {\n zoomable: boolean\n active: boolean\n}\n\n@customElement(\"fv-property-list\")\nexport class PropertyListComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\".items\")\n private _itemsElement?: HTMLDivElement;\n\n @queryAll(\".color-picker\")\n private _colorPickers?: NodeListOf<Element>;\n\n @property({\"type\": ZoomStyle, \"reflect\": true})\n public zoomStyle?: ZoomStyle = ZoomStyle.OVERLAY;\n\n private readonly zoomedImage?: HTMLDivElement;\n private currentImage: TitledImageComponent | undefined;\n private imageSibling: TitledImageComponent | undefined;\n\n @property()\n private _colorPicker: {\n [key: string]: {\n component?: RalPickerComponent | NcsPickerComponent | SikkensPickerComponent | undefined\n onColorChangeEvent?: (e: Event) => void\n }\n } = {};\n\n @property()\n private _preventBackButton = false;\n\n protected firstUpdated(_changedProperties : PropertyValues<this>) {\n super.firstUpdated(_changedProperties);\n }\n\n setZoomImage(item?: TitledImageComponent, parameters?: ZoomOptions) {\n const isFocused = (this.currentImage?.text == item?.text && this.currentImage?.image == item?.image)\n if (!item || !parameters) {\n this.currentImage = undefined;\n this.imageSibling = undefined;\n this.requestUpdate();\n return;\n }\n this._itemsElement?.classList.remove('hidden')\n // else if(this.zoomStyle === ZoomStyle.OVERLAY && isFocused) {\n // this.currentImage = undefined;\n // this.imageSibling = undefined;\n // this.requestUpdate();\n // return;\n // }\n\n if(this.zoomStyle === ZoomStyle.OVERLAY) {\n item.IsActive = false;\n this.setOverlayZoomImage(item, parameters)\n } else {\n this._setZoomImage(item, this.zoomStyle === ZoomStyle.INLINE, parameters);\n }\n this.requestUpdate();\n if(this.parentElement instanceof AccordionItemComponent) {\n this.parentElement.requestHeightUpdate();\n }\n }\n\n _setZoomImage(item: TitledImageComponent, inline: boolean, parameters: ZoomOptions, moveImage: boolean = true) {\n if (this.currentImage && this.currentImage != item) {\n this.currentImage.IsActive = false;\n if(moveImage) {\n if (!this.imageSibling) {\n this.append(this.currentImage);\n } else {\n this.insertBefore(this.currentImage, this.imageSibling as HTMLElement);\n }\n }\n }\n if (parameters.active) {\n if (this.currentImage !== item) {\n this.imageSibling = item.nextSibling as TitledImageComponent\n if (inline && this.zoomedImage) {\n this.zoomedImage.classList.add(\"hidden\");\n }\n this.currentImage = moveImage ? item : item.cloneNode(true) as TitledImageComponent;\n this.currentImage.IsActive = true;\n if(!moveImage) {\n this.currentImage.addEventListener('click', (ev) => {\n ev.preventDefault()\n item.click();\n this.currentImage = this.imageSibling = undefined;\n this.requestUpdate();\n })\n this.currentImage.addEventListener('zoomClicked', (ev) => {\n this.currentImage = this.imageSibling = undefined;\n this.requestUpdate();\n })\n }\n if (inline && this.zoomedImage && moveImage) {\n this.zoomedImage.append(this.currentImage);\n this.zoomedImage.classList.remove(\"hidden\");\n if (this.zoomedImage) this.insertBefore(this.zoomedImage, this.imageSibling || null);\n }\n }\n } else {\n if (inline && this.zoomedImage) this.zoomedImage.classList.add(\"hidden\");\n item.IsActive = false;\n if(moveImage) {\n this.insertBefore(item, this.imageSibling || null);\n }\n this.currentImage = undefined;\n }\n }\n\n setOverlayZoomImage(item: TitledImageComponent, parameters: ZoomOptions) {\n this._setZoomImage(item, false, parameters, false);\n }\n\n constructor() {\n super();\n this.baseOptions.registerLocalesModel = true;\n this.zoomedImage = Object.assign(document.createElement(\"div\"), {className: \"zoomedImage\"});\n }\n\n\n onColorChange(e: CustomEvent) {\n\n }\n\n addColorPicker(colorPicker: IColorPicker, onChange: (e: CustomEvent) => void) {\n if (colorPicker && colorPicker.type && (!this._colorPicker[colorPicker.type] || !this._colorPicker[colorPicker.type].component)) {\n this._colorPicker[colorPicker.type] = {};\n switch (colorPicker.type) {\n case \"RAL\":\n this._colorPicker[colorPicker.type].component = new RalPickerComponent();\n this._colorPicker[colorPicker.type].component?.setAttribute(\"disable-fade\", \"\");\n break;\n case \"NCS\":\n this._colorPicker[colorPicker.type].component = new NcsPickerComponent();\n break;\n case \"SIKKENS\":\n this._colorPicker[colorPicker.type].component = new SikkensPickerComponent();\n break;\n default:\n break;\n }\n if (this._colorPicker && this._colorPicker[colorPicker.type] && this._colorPicker[colorPicker.type].component) {\n this._colorPicker[colorPicker.type].component!.addEventListener(\"onRender\", () => {\n (this.parentElement as AccordionItemComponent)?.requestHeightUpdate();\n });\n this._colorPicker[colorPicker.type].component!.addEventListener(\"colorChange\", (e: Event) => {\n if (this._colorPicker[colorPicker.type!].onColorChangeEvent) {\n this._colorPicker[colorPicker.type!].onColorChangeEvent!(e);\n }\n });\n }\n }\n if (colorPicker && colorPicker.type) {\n this._colorPicker[colorPicker.type].component?.setAttribute(\"disable-fade\", \"\");\n this._colorPicker[colorPicker.type].onColorChangeEvent = onChange as EventListener;\n }\n this.requestUpdate();\n }\n\n async showColorPicker(colorPicker?: IColorPicker, preventBackButton = false) {\n await this.updateComplete;\n this._preventBackButton = preventBackButton;\n if (colorPicker?.type && this._colorPicker[colorPicker?.type]) {\n if (this._colorPicker) {\n this._colorPickers?.forEach((element) => {\n if (element !== this._colorPicker[colorPicker!.type!].component?.parentElement) {\n element.classList.add(\"hidden\");\n }\n });\n }\n const currentCode = colorPicker?.code || this._colorPicker[colorPicker?.type]?.component?.getAttribute(\"currentCode\");\n if (currentCode) this._colorPicker[colorPicker?.type]?.component?.setAttribute(\"currentCode\", currentCode);\n this._itemsElement?.classList.add(\"hidden\");\n this._colorPickers?.forEach((element) => {\n if (element.classList.contains(colorPicker.type!)) {\n element.classList.remove(\"hidden\");\n }\n });\n (this.parentElement as AccordionItemComponent)?.requestHeightUpdate();\n this.scrollIntoView({behavior: \"smooth\", block: \"start\"});\n }\n }\n\n hideColorPicker() {\n if (this._colorPicker) {\n this._colorPickers?.forEach((element) => {\n element.classList.add(\"hidden\");\n });\n this._itemsElement?.classList.remove(\"hidden\");\n }\n (this.parentElement as AccordionItemComponent)?.requestHeightUpdate();\n this.dispatchEvent(new CustomEvent(\"colorPickerClosed\"));\n }\n\n append(...nodes: any[]) {\n super.append(...nodes);\n nodes.forEach((node) => {\n //if (!this.contains(node)) {\n const zoomClick = (e: CustomEventInit) => {\n this.setZoomImage(node, e.detail);\n };\n const click = (e: CustomEventInit) => {\n if (this.currentImage === node) {\n this.setZoomImage(node, e.detail);\n }\n };\n node.removeEventListener(\"zoomClicked\", zoomClick);\n node.removeEventListener(\"click\", click);\n node.addEventListener(\"zoomClicked\", zoomClick);\n node.addEventListener(\"click\", click);\n //}\n });\n }\n\n appendChild<T extends Node>(node: T): T {\n this.append(node);\n return node;\n }\n\n preventScrolling(ev: MouseEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n render(): TemplateResult<1> {\n return html`\n ${this.zoomStyle == ZoomStyle.TOP ? html`\n <div class=\"zoomedImage\">\n ${this.currentImage}\n </div>\n ` : \"\"}\n ${this.zoomStyle === ZoomStyle.OVERLAY ? html`\n <div class=\"overlay ${classMap({hidden: !this.currentImage})}\" @wheel=\"${this.preventScrolling}\">\n ${this.currentImage}\n </div>\n ` : nothing}\n <div class=\"items\">\n <slot></slot>\n </div>\n ${Object.keys(this._colorPicker).map((type) => {\n this._colorPicker[type].component?.classList.add(\"color-picker-container\");\n return html`\n <div class=\"color-picker hidden ${type}\">\n ${!this._preventBackButton ? html`\n <fv-button @click=\"${this.hideColorPicker}\">${LocaleService.translate(\"114\", \"Zurück\")}</fv-button>` : \"\"}\n ${this._colorPicker[type].component ? this._colorPicker[type].component : \"\"}\n </div>`;\n })}\n `;\n }\n\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./radio.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-radio\")\nexport class RadioComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true })\n name = \"\";\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ type: String, reflect: true, attribute: \"closest-query\" })\n private closestQuery = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"mark-parent\" })\n private markParent = false;\n\n @query(\"input\")\n private input: HTMLInputElement | undefined;\n\n constructor() {\n super();\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n this.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (this.input && this.checked != true) {\n const checkedQuery = `[name=\"${this.name}\"][checked]`;\n const container = this.closestQuery ? this.closest(this.closestQuery) : this.parentElement;\n const checkedElement = container?.querySelector(checkedQuery)\n checkedElement?.removeAttribute(\"checked\");\n this.input.checked = true;\n this.checked = true;\n\n if (this.markParent) {\n this.parentElement?.classList.add(\"checked\");\n checkedElement?.parentElement?.classList.remove(\"checked\");\n }\n this.requestUpdate();\n this.dispatchEvent(new CustomEvent(\"radio-click\", { bubbles: true, composed: true }));\n }\n });\n }\n private preventClick(e: PointerEvent) {\n e.stopPropagation();\n return false;\n }\n\n render(): TemplateResult<1> {\n return html`\n <label>\n <input type=\"radio\" name=\"${this.name}\" .checked=${this.checked} @click=\"${this.preventClick}\"/>\n <div class=\"indicator\">\n <div class=\"position-wrapper\">\n <div class=\"unchecked\"></div>\n <div class=\"checked\"></div>\n </div>\n </div>\n <span>${this.textContent}</span>\n </label>\n `;\n }\n}","import {AccordionLayerComponent} from \"../../standard/accordion\";\nimport {IGetAccordionItemsParams} from \"./base-accordion.theme\";\nimport {PPContainerComponent} from \"../prog-property\";\nimport {property} from \"lit/decorators.js\";\nimport {ComponentService} from \"../../../utils/component.service\";\nimport {StyleHelper} from \"../../../utils/style.helper\";\nimport {html, PropertyValues, TemplateResult} from \"lit\";\nimport {EventFactoryService, WebViewerService} from \"@dh-software/webui-api\";\nimport {IGetProgPropertiesParams, IProgPropertyCatalogFilterParams} from \"@dh-software/webui-types\";\n\nexport enum RenderMode {\n LIT_STATE,\n REPLACE_CHILDREN\n}\n\nexport interface IPPLayerGetAccordionItemsParams extends IGetAccordionItemsParams {\n progPropertiesParams?: IGetProgPropertiesParams\n}\n\n/** Layer item: DOM element (legacy) or Lit TemplateResult (declarative). */\nexport type PPLayerItem<T extends HTMLElement = HTMLElement> = T | TemplateResult;\n\nexport class PPLayerComponent<T extends HTMLElement> extends AccordionLayerComponent {\n static _globalLayerId = 0;\n\n protected ignoredAttributes = [\"image\"]\n protected preventEmpty: boolean = false;\n protected propertyFilters: { [key: string]: IProgPropertyCatalogFilterParams } = {};\n\n private refreshPromise?: Promise<boolean>;\n\n @property({type: Number, reflect: false, state: true})\n protected renderMode = RenderMode.LIT_STATE;\n\n @property({type: Number, state: false})\n protected layerId: number = -1;\n\n @property({type: Array, state: true})\n protected _items: PPLayerItem<T>[] = [];\n\n get PPContainer(): PPContainerComponent {\n return ComponentService.getParentShadowRoot(this.parentAccordion, \"fv-pp-container\")!.host as PPContainerComponent\n }\n\n connectedCallback() {\n this.layerId = PPLayerComponent._globalLayerId++;\n super.connectedCallback();\n }\n\n disconnectedCallback() {\n PPLayerComponent._globalLayerId--;\n this.layerId = -1;\n super.disconnectedCallback();\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues<this>): Promise<void> {\n super.firstUpdated(_changedProperties);\n\n EventFactoryService.RefreshPropertyPanel.register(async () => {\n await this.refreshProperties();\n });\n this.addEventListener(\"onFinishParamsFilter\", async (ev: CustomEventInit) => {\n if (ev.detail == undefined) {\n return;\n }\n this.propertyFilters[ev.detail.key] = ev.detail;\n await this.refreshProperties();\n });\n window.addEventListener(\"onUpdated\", ((ev: CustomEvent) => {\n this.refreshProperties();\n }) as EventListener);\n }\n\n private async refreshProperties(): Promise<boolean> {\n return await this.refreshPropertyPanel({\n progPropertiesParams: {\n propertyFilters: this.propertyFilters,\n fullHierarchy: true,\n useRelevant: true,\n useSelection: true,\n }\n });\n }\n\n async refreshPropertyPanel(params: IPPLayerGetAccordionItemsParams) {\n if (this.refreshPromise) {\n await this.refreshPromise;\n }\n // try/catch — Promise() doesn't catch async-executor rejections; an uncaught throw would hang refreshPromise forever.\n this.refreshPromise = new Promise(async (resolve) => {\n try {\n if (this.parentAccordion) {\n const newItems = await this.getAccordionItems(params);\n await StyleHelper.requestAnimationFrame();\n const isEmpty = Array.isArray(newItems) && newItems.length === 0;\n if (this.preventEmpty && isEmpty) {\n return resolve(false);\n }\n this.childrenChanged(newItems);\n }\n return resolve(true);\n } catch (err) {\n console.error(\"[pp-layer] refreshPropertyPanel failed:\", err);\n return resolve(false);\n }\n })\n return this.refreshPromise\n }\n\n // LIT_STATE: rendered by Lit into `this`. REPLACE_CHILDREN: shadow DOM + manual replaceChildren.\n private childrenChanged(items: PPLayerItem<T>[]) {\n if (this.renderMode === RenderMode.LIT_STATE) {\n this._items = items;\n } else {\n // replaceChildren needs Nodes — drop any TemplateResults.\n const nodes = items.filter((it): it is T => it instanceof Node);\n this.replaceChildren(...nodes);\n }\n }\n\n render() {\n if (this.renderMode === RenderMode.LIT_STATE) {\n return html`\n ${this._items}\n `\n }\n return super.render();\n }\n\n protected async getUpdateComplete(): Promise<boolean> {\n const result = await super.getUpdateComplete();\n if(this.refreshPromise) {\n await this.refreshPromise\n }\n return result;\n }\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n if (this.renderMode === RenderMode.LIT_STATE) {\n return this;\n }\n return super.createRenderRoot();\n }\n\n requestUpdate(name?: string, oldValue?: any) {\n const isIgnored = !!(name && this.ignoredAttributes?.includes(name));\n this.requestHeightUpdate(false);\n super.requestUpdate(name, oldValue);\n }\n\n async getAccordionItems(params: IPPLayerGetAccordionItemsParams): Promise<PPLayerItem<T>[]> {\n return []\n }\n\n isEmpty() {\n const itemCount = this.renderMode === RenderMode.LIT_STATE ? this._items.length : this.childElementCount;\n const isEmpty = itemCount === 0\n return isEmpty;\n }\n\n\n}\n","import {AccordionItemComponent} from \"../../standard/accordion\";\nimport {PPLayerComponent} from \"./pp-layer.component\";\nimport {\n IProgProperty,\n IProgPropertyContext,\n IProgPropertyManufacturer,\n IProgPropertyProgram,\n IProgPropertyValue,\n} from \"@dh-software/webui-types\";\n\nexport interface IAccordionHeader {\n key: string;\n name?: string;\n image?: string;\n}\n\nexport interface IAccordionOverride {\n image?: string;\n}\n\nexport interface IGetAccordionItemsParams {\n}\n\nexport type AccordionHandle = IProgPropertyContext | IProgPropertyManufacturer;\n\nexport abstract class BaseAccordionTheme extends PPLayerComponent<AccordionItemComponent> {\n getModifyParameters(handle: AccordionHandle, programModel: IProgPropertyProgram, propertyModel: IProgProperty, propertyValue: IProgPropertyValue) {\n return {\n manufacturer: handle.manufacturerName.toLowerCase(),\n program: programModel.programName.toLowerCase(),\n key: propertyModel.id,\n property: propertyValue.key,\n propertyKey: propertyValue.propertyKey,\n contextId: \"contextId\" in handle ? handle.contextId : undefined,\n };\n }\n}\n","import { html, TemplateResult } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { createRef, ref, Ref } from \"lit/directives/ref.js\";\n// Side-effect imports — custom elements used only as types/tag names below;\n// without forced module loads, bundlers tree-shake the registration side-effects.\nimport \"../../prog-property/accordion_theme/image/titled-image.component\";\nimport \"../../prog-property/accordion_theme/image/property-list.component\";\nimport \"../../../standard/radio/radio.component\";\nimport { PropertyListComponent, TitledImageComponent } from \"../../prog-property/accordion_theme/image\";\nimport { BaseAccordionTheme, IGetAccordionItemsParams } from \"../../pp-layer/base-accordion.theme\";\nimport {\n DragType,\n IGetProgContextParameters,\n IProgProperty,\n IProgPropertyContext,\n IProgPropertyProgram,\n IProgPropertyValue,\n} from \"@dh-software/webui-types\";\nimport {\n CommunicationMessageService,\n DragDropService,\n ProgContextModel,\n WebViewerService,\n} from \"@dh-software/webui-api\";\n\ninterface PropertyRow {\n key: string;\n context: IProgPropertyContext;\n program: IProgPropertyProgram;\n model: IProgProperty;\n values: IProgPropertyValue[];\n current?: IProgPropertyValue;\n headerImage: string;\n additionalClasses: string[];\n}\n\n@customElement(\"fv-prog-context-accordion-layer\")\nexport class ProgContextAccordionLayer extends BaseAccordionTheme {\n\n @property({ type: Array })\n contexts?: string[];\n\n private wiredDrag = new WeakSet<Element>();\n private wiredColorPicker = new WeakSet<Element>();\n private currentProgramId = \"\";\n\n async getAccordionItems(_params: IGetAccordionItemsParams): Promise<TemplateResult[]> {\n DragDropService.cleanUp();\n this.wiredDrag = new WeakSet<Element>();\n this.wiredColorPicker = new WeakSet<Element>();\n\n const additionalClasses = this.PPContainer.accordionItemClasses;\n const rows: PropertyRow[] = [];\n const options = {\n useRelevant: true,\n useSelection: true,\n contextInfo: this.contexts?.map(x => ({ contextId: x })) || [],\n } as IGetProgContextParameters;\n\n await ProgContextModel.traverse({\n propertyCallback: async (context, program, propertyModel, values, current) => {\n if (!this.contexts?.includes(context.contextId)) return;\n if (values.length === 0) return;\n if (this.PPContainer.hideSingleValueProperties && Object.keys(propertyModel.children).length < 2) return;\n\n const headerImage = current?.alternativeImageUrl || current?.colorPicker?.rgb || \"\";\n rows.push({\n key: propertyModel.id,\n context, program,\n model: propertyModel,\n values,\n current,\n headerImage,\n additionalClasses,\n });\n },\n }, options);\n\n // Program switched: clear ActiveItem so a stale item doesn't stay open.\n const programId = rows[0]?.program?.programID ?? \"\";\n if (programId && this.currentProgramId !== programId) {\n this.currentProgramId = programId;\n const parent = this.parentAccordion;\n if (parent) parent.ActiveItem = undefined;\n }\n\n return rows.map(r => this.renderProperty(r));\n }\n\n private renderProperty(r: PropertyRow): TemplateResult {\n const listRef = createRef<PropertyListComponent>();\n const classes: Record<string, boolean> = {};\n for (const cls of r.additionalClasses) classes[cls] = true;\n const isRadioList = r.values.some(v => !v.alternativeImageUrl && !v.colorPicker?.type);\n\n return html`\n <fv-accordion-item\n data-property-id=${r.key}\n .Header=${r.model.name || \"Undefined\"}\n .Image=${r.headerImage}\n class=${classMap(classes)}\n >\n <fv-property-list\n ${ref(listRef)}\n id=${r.model.id}\n class=${classMap({ radioList: isRadioList })}\n >\n ${repeat(r.values, v => v.propertyKey, v => this.renderValue(r, v, listRef))}\n </fv-property-list>\n </fv-accordion-item>\n `;\n }\n\n private renderValue(r: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): unknown {\n if (v.alternativeImageUrl) return this.renderImageValue(r, v, listRef);\n if (v.colorPicker?.type) return this.renderColorPickerValue(r, v, listRef);\n return this.renderRadioValue(r, v);\n }\n\n private renderImageValue(r: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): TemplateResult {\n const modifyParams = this.getModifyParameters(r.context, r.program, r.model, v);\n const isCurrent = r.current?.propertyKey === v.propertyKey;\n\n const wireDrag = (el: Element | undefined) => {\n if (!el || this.wiredDrag.has(el)) return;\n this.wiredDrag.add(el);\n DragDropService.addElement(el as HTMLElement, {\n extData: modifyParams,\n id: r.model.id,\n type: DragType.PROGPROPERTY,\n }, undefined, false);\n };\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n const list = listRef.value;\n list?.querySelectorAll(\".selected\").forEach(el => el.classList.remove(\"selected\"));\n list?.hideColorPicker();\n (e.currentTarget as TitledImageComponent).classList.add(\"selected\");\n CommunicationMessageService.modifyProperty(JSON.stringify([modifyParams]), this.PPContainer.PPOptions);\n WebViewerService.FurnviewWebViewer?.focus();\n };\n\n return html`\n <fv-titled-image\n ${ref(wireDrag)}\n .text=${v.name}\n .image=${v.alternativeImageUrl}\n .infoData=${(v.toolTipData as string) || \"\"}\n .infoType=${(v.toolTipType as string) || \"\"}\n .manufacturer=${r.context.manufacturerName as string}\n .IsActive=${false}\n ?selected=${isCurrent}\n @click=${onClick}\n ></fv-titled-image>\n `;\n }\n\n private renderColorPickerValue(r: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): TemplateResult {\n const modifyParams = this.getModifyParameters(r.context, r.program, r.model, v);\n const isCurrent = r.current?.propertyKey === v.propertyKey;\n\n // addColorPicker is stateful imperative API — wire exactly once per element.\n const wirePicker = (el: Element | undefined) => {\n const ppList = listRef.value;\n if (!el || !ppList || !v.colorPicker || this.wiredColorPicker.has(el)) return;\n this.wiredColorPicker.add(el);\n ppList.addColorPicker(v.colorPicker, (e) => {\n const detail = (e as CustomEvent).detail as {\n code: string;\n rgba: { r: number; g: number; b: number; a: 1 };\n };\n CommunicationMessageService.modifyProperty(\n JSON.stringify([modifyParams]),\n Object.assign({\n modifyColorPicker: {\n code: detail.code,\n rgb: `${detail.rgba.r},${detail.rgba.g},${detail.rgba.b}`,\n key: v.propertyKey,\n id: r.model.id,\n },\n }, this.PPContainer.PPOptions),\n );\n WebViewerService.FurnviewWebViewer?.focus();\n });\n if (isCurrent) {\n ppList.showColorPicker(r.current?.colorPicker, Object.keys(r.model.children).length === 1);\n }\n };\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n const list = listRef.value;\n list?.querySelectorAll(\".selected\").forEach(el => el.classList.remove(\"selected\"));\n (e.currentTarget as TitledImageComponent).classList.add(\"selected\");\n list?.showColorPicker(v.colorPicker);\n };\n\n return html`\n <fv-titled-image\n ${ref(wirePicker)}\n .text=${v.name}\n .image=${v.alternativeImageUrl}\n .infoData=${(v.toolTipData as string) || \"\"}\n .infoType=${(v.toolTipType as string) || \"\"}\n .manufacturer=${r.context.manufacturerName as string}\n .IsActive=${isCurrent}\n ?selected=${isCurrent}\n @click=${onClick}\n ></fv-titled-image>\n `;\n }\n\n private renderRadioValue(r: PropertyRow, v: IProgPropertyValue): TemplateResult {\n const modifyParams = this.getModifyParameters(r.context, r.program, r.model, v);\n const isCurrent = r.current?.propertyKey === v.propertyKey;\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n CommunicationMessageService.modifyProperty(JSON.stringify([modifyParams]), this.PPContainer.PPOptions);\n WebViewerService.FurnviewWebViewer?.focus();\n };\n\n return html`\n <fv-radio\n class=\"top-radio\"\n .name=${r.model.key}\n ?checked=${isCurrent}\n @click=${onClick}\n >${v.name}</fv-radio>\n `;\n }\n}\n","import { html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport style from \"./pp-furnview-accordion-layer.component.sass?inline\";\n// Side-effect imports — register custom elements used by tag name in templates.\nimport \"./pp-property.component\";\nimport \"./pp-property-values.component\";\nimport \"./pp-property-value.component\";\nimport { PPLayerComponent } from \"../../pp-layer/pp-layer.component\";\nimport { IGetAccordionItemsParams } from \"../../pp-layer/base-accordion.theme\";\nimport { CombineChildren } from \"../combine_theme/pp-combine-accordion-layer.component\";\nimport { PPContainerComponent, PPTheme } from \"../pp-container.component\";\nimport {\n IProgProperty,\n IProgPropertyManufacturer,\n IProgPropertyProgram,\n IProgPropertyValue,\n} from \"@dh-software/webui-types\";\nimport { DragDropService, ProgPropertyModel } from \"@dh-software/webui-api\";\n\nexport interface FurnviewValueRow {\n propertyKey: string;\n property: string;\n name: string;\n imgUrl: string;\n colorPicker?: { type?: string, code?: string, rgb?: string };\n}\n\nexport interface FurnviewRow {\n key: string;\n id: string;\n title: string;\n currentImage: string;\n currentName: string;\n manufacturer: string;\n program: string;\n halfSize: boolean;\n hideItemCount: boolean;\n disabled: boolean;\n transparentPlaceholder: boolean;\n values: FurnviewValueRow[];\n}\n\n/**\n * Build a single property's menu+items template pair. Shared with the combine\n * theme (which mixes these with its own PT groups in the same layer).\n */\nexport function renderFurnviewRow(\n container: PPContainerComponent,\n row: FurnviewRow,\n openKey: string | null,\n onMenuClick: (e: Event, key: string) => void,\n): TemplateResult {\n const active = openKey === row.key;\n const hidden = openKey !== null && !active;\n return html`\n <fv-pp-property\n data-key=${row.key}\n ?active=${active}\n ?disabled=${row.disabled}\n ?half-size=${row.halfSize}\n ?hide-item-count=${row.hideItemCount}\n .titleText=${row.title}\n .currentImage=${row.currentImage}\n .currentName=${row.currentName}\n .itemCount=${row.values.length}\n .transparentPlaceholder=${row.transparentPlaceholder}\n class=${classMap({ hidden })}\n @click=${(e: Event) => onMenuClick(e, row.key)}\n ></fv-pp-property>\n <fv-pp-values id=\"item_${row.id}\" ?active=${active}>\n ${repeat(row.values, v => v.propertyKey, v => html`\n <fv-pp-value\n ?half-size=${row.halfSize}\n .itemName=${v.name}\n .image=${v.imgUrl}\n .manufacturer=${row.manufacturer}\n .program=${row.program}\n .propertyId=${row.id}\n .propertyKeyValue=${v.property}\n .propertyKey=${v.propertyKey}\n .colorPicker=${v.colorPicker}\n .PPContainerComponent=${container}\n ></fv-pp-value>\n `)}\n </fv-pp-values>\n `;\n}\n\n/** Map a single ProgPropertyModel row to FurnviewRow; returns null if the property should be skipped. */\nexport function buildFurnviewRow(\n container: PPContainerComponent,\n manufacturerModel: { manufacturerName?: string } | IProgPropertyManufacturer,\n programModel: { programName?: string } | IProgPropertyProgram,\n propertyModel: IProgProperty,\n values: IProgPropertyValue[],\n currentValue?: IProgPropertyValue,\n): FurnviewRow | null {\n if (!propertyModel.name) return null;\n\n let current = currentValue\n ?? values.find(v => v.propertyKey === propertyModel.currentValue);\n let disabled = false;\n if (values.length === 1) {\n if (container.hideNotSettable) return null;\n if (container.disableNotSettable) disabled = true;\n current = values[0];\n }\n\n const currentImage = current?.colorPicker?.rgb || current?.alternativeImageUrl || \"\";\n return {\n key: propertyModel.key,\n id: propertyModel.id,\n title: propertyModel.name,\n currentImage,\n currentName: current?.name ?? \"\",\n manufacturer: manufacturerModel.manufacturerName?.toLowerCase() ?? \"\",\n program: programModel.programName?.toLowerCase() ?? \"\",\n halfSize: container.halfSize,\n hideItemCount: container.hideItemCount || (container.disableNotSettable && values.length === 1),\n disabled,\n transparentPlaceholder: +container.theme === +PPTheme.FURNVIEW,\n values: values.map(v => ({\n propertyKey: v.propertyKey,\n property: v.key,\n name: v.name,\n imgUrl: v.alternativeImageUrl ?? \"\",\n colorPicker: v.colorPicker,\n })),\n };\n}\n\n@customElement(\"fv-prog-property-furnview-accordion-layer\")\nexport class ProgPropertyFurnviewAccordionLayer extends PPLayerComponent<CombineChildren> {\n\n static styles = [super.styles || [], unsafeCSS(style)];\n\n @state()\n protected _rows: FurnviewRow[] = [];\n\n @state()\n protected _openKey: string | null = null;\n\n async getAccordionItems(_params: IGetAccordionItemsParams): Promise<TemplateResult[]> {\n DragDropService.cleanUp();\n const rows: FurnviewRow[] = [];\n await ProgPropertyModel.traverse({\n propertyCallback: (m, p, propertyModel, values, currentValue) => {\n const row = buildFurnviewRow(this.PPContainer, m, p, propertyModel, values, currentValue);\n if (row) rows.push(row);\n },\n });\n this._rows = rows;\n return this._buildTemplates();\n }\n\n protected _buildTemplates(): TemplateResult[] {\n return this._rows.map(r => renderFurnviewRow(this.PPContainer, r, this._openKey, this._onMenuClick));\n }\n\n protected _onMenuClick = (e: Event, key: string) => {\n e.stopPropagation();\n e.preventDefault();\n this._openKey = this._openKey === key ? null : key;\n // Re-render templates so child bindings pick up the new active/hidden state.\n this._items = this._buildTemplates();\n };\n}\n\nexport const PpFurnviewAccordionLayerComponent = new ProgPropertyFurnviewAccordionLayer();\n","import { customElement, property } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pp-menu.component.sass?inline\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\n\nexport interface IPPMenu {\n title?: string\n hideItemCount?: boolean\n}\n\n@customElement(\"fv-pp-menu\")\nexport class PPMenuComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true })\n currentImage = \"\";\n\n @property({ type: String, reflect: true })\n currentName = \"\";\n\n @property({ type: Number, reflect: true })\n itemCount = 0;\n\n @property({ type: Boolean, reflect: true })\n active = false;\n\n @property({ type: String, reflect: true })\n titleText = \"\";\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-item-count\" })\n hideItemCount = false;\n\n /** @deprecated kept for back-compat — pass `.titleText` / `.hideItemCount` directly instead. */\n constructor(options?: IPPMenu) {\n super();\n if (options) {\n this.titleText = options.title || \"\";\n this.hideItemCount = !!options.hideItemCount;\n }\n }\n\n protected render(): TemplateResult<1> {\n const disabled = !!this.getAttribute(\"disabled\");\n const chevronClass = {\n \"chevron-symbol\": !disabled,\n up: this.active && !disabled,\n down: !this.active && !disabled,\n };\n const classMapCurrentImage = {\n \"not-found\": !this.currentImage,\n \"pp-image\": true,\n };\n return html`<div class=\"pp-current-image\">\n <div class=${classMap(classMapCurrentImage)} style=\"${this.currentImage ? `background-${\n this.currentImage.startsWith(\"#\") ?\n `color: ${this.currentImage}` :\n this.currentImage.split(\",\").length >= 2 ?\n `color: rgba(${this.currentImage})` :\n `image: url(${this.currentImage})`}` : \"\"}\"></div>\n </div>\n <div class=\"pp-info\">\n <div class=\"pp-group-title\">\n <span>${this.titleText}</span>\n <span class=${classMap(chevronClass)}></span>\n </div>\n <div class=\"pp-current-name\">\n <span>${this.currentName}</span>\n </div>\n </div>\n ${!this.hideItemCount ? html`\n <div class=\"pp-items-counter\">\n <span>${this.itemCount}</span>\n </div>` : \"\"}\n `;\n }\n}\n","import {PPContainerComponent} from \"../pp-container.component\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {css, html, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./pp-item.component.sass?inline\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {BaseElement} from \"../../../standard/base/base.component\";\nimport {ProgressComponent} from \"../../../standard/loading/progress\";\nimport {CommunicationMessageService, DragDropService} from \"@dh-software/webui-api\";\nimport {RalPickerComponent} from \"../../../colorpicker/ral\";\nimport {NcsPickerComponent} from \"../../../colorpicker/ncs\";\nimport {SikkensPickerComponent} from \"../../../colorpicker/sikkens\";\nimport {DragType} from \"@dh-software/webui-types\";\n\nexport interface IPPItem {\n imgUrl: string\n name: string\n manufacturer: string\n program: string\n key: string\n property: string\n propertyKey: string\n colorPicker?: { code?: string, rgb?: string, type?: string }\n containerComponent: PPContainerComponent\n}\n\ntype PickerComponent = RalPickerComponent | NcsPickerComponent | SikkensPickerComponent;\n\n@customElement(\"fv-pp-item\")\nexport class PPItemComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({attribute: false})\n PPContainerComponent: PPContainerComponent | null = null;\n\n @property({type: String, reflect: true})\n itemName = \"\";\n\n @property({type: String, reflect: true})\n image = \"\";\n\n @property({type: String}) manufacturer = \"\";\n @property({type: String}) program = \"\";\n @property({type: String}) propertyId = \"\";\n @property({type: String}) propertyKeyValue = \"\";\n @property({type: String}) propertyKey = \"\";\n @property({type: Object}) colorPicker?: { code?: string, rgb?: string, type?: string };\n\n @property({type: Boolean, reflect: true})\n draggable = false;\n\n @query(\".color-picker\")\n private colorPickerDiv: HTMLDivElement | undefined;\n\n @query(\"fv-progress\")\n private _progress: ProgressComponent | undefined;\n\n private _progressTimer: number | undefined;\n private _colorPickerInstance?: PickerComponent;\n\n public get ColorPicker(): PickerComponent | undefined {\n return this._colorPickerInstance;\n }\n\n public set Image(val_: string) {\n this.image = val_ ? `background-${\n val_.startsWith(\"#\") ?\n `color: ${val_}` :\n val_.split(\",\").length >= 2 ?\n `color: rgba(${val_})`\n : `image: url(${val_})`\n }` : this.image;\n }\n\n /** @deprecated pass reactive props directly via the template instead. */\n constructor(options?: IPPItem) {\n super();\n if (options) {\n this.itemName = options.name || \"\";\n this.manufacturer = options.manufacturer || \"\";\n this.program = options.program || \"\";\n this.propertyId = options.key || \"\";\n this.propertyKeyValue = options.property || \"\";\n this.propertyKey = options.propertyKey || \"\";\n this.PPContainerComponent = options.containerComponent;\n this.draggable = !!options.containerComponent?.draggable\n || options.containerComponent?.getAttribute(\"draggable\") !== null;\n this.Image = options.imgUrl;\n if (options.colorPicker) this.colorPicker = options.colorPicker;\n }\n }\n\n protected willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n if (changed.has(\"colorPicker\") && this.colorPicker?.type) {\n this._ensurePicker(this.colorPicker.type);\n }\n }\n\n private _ensurePicker(type: string): void {\n if (this._colorPickerInstance) return;\n switch (type) {\n case \"RAL\": this._colorPickerInstance = new RalPickerComponent(); break;\n case \"NCS\": this._colorPickerInstance = new NcsPickerComponent(); break;\n case \"SIKKENS\": this._colorPickerInstance = new SikkensPickerComponent(); break;\n default: return;\n }\n this._colorPickerInstance.getColorByCode(this.propertyKeyValue.replace(/\\[CP\\].*\\[CP\\]/g, \"\")).then(imgUrl => {\n if (imgUrl) this.Image = imgUrl;\n });\n }\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n super.firstUpdated(_changedProperties);\n this.addEventListener(\"click\", this._onClick);\n if (this._colorPickerInstance) {\n this.colorPickerDiv?.appendChild(this._colorPickerInstance);\n this._colorPickerInstance.classList.add(\"color-picker\");\n this._colorPickerInstance.addEventListener(\"colorChange\", this._onColorChange);\n }\n }\n\n private _onClick = (e: Event) => {\n e.stopPropagation();\n if (!this.PPContainerComponent || this.PPContainerComponent.IsBusy) return;\n if (this._progressTimer) {\n clearTimeout(this._progressTimer);\n this._progressTimer = undefined;\n }\n this._progress?.show();\n\n if (this._colorPickerInstance) {\n this.classList.add(\"color-picker\");\n const isActive = this.classList.contains(\"active\");\n if (isActive) return;\n this.classList.add(\"active\");\n this.colorPickerDiv?.classList.remove(\"hidden\");\n this.parentNode?.childNodes.forEach((child: ChildNode) => {\n (child as HTMLElement).classList[child !== this ? \"add\" : \"remove\"](\"hidden\");\n const shadowChild = (child as HTMLElement).shadowRoot;\n if (shadowChild) {\n for (let i = 0; i < shadowChild.children.length; i++) {\n shadowChild.children[i].classList[shadowChild.children[i] !== this.colorPickerDiv ? \"add\" : \"remove\"](\"hidden\");\n }\n }\n });\n return;\n }\n\n this.PPContainerComponent.IsBusy = true;\n CommunicationMessageService.modifyProperty(JSON.stringify([{\n manufacturer: this.manufacturer,\n program: this.program,\n key: this.propertyId,\n property: this.propertyKeyValue,\n propertyKey: this.propertyKey,\n }]), this.PPContainerComponent.PPOptions).then(async () => {\n if (this._progress) this._progress.finished = true;\n this.PPContainerComponent?.requestUpdate();\n this._progressTimer = setTimeout(() => {\n this._progressTimer = undefined;\n this._progress?.hide();\n }, 1000) as unknown as number;\n });\n };\n\n private _onColorChange = (e: Event) => {\n const detail = (e as CustomEvent).detail as {\n code: string;\n rgba: { r: number; g: number; b: number; a: 1 };\n };\n CommunicationMessageService.modifyProperty(JSON.stringify([{\n manufacturer: this.manufacturer,\n program: this.program,\n key: this.propertyId,\n property: this.propertyKeyValue,\n propertyKey: this.propertyKey,\n }]), Object.assign({\n modifyColorPicker: {\n code: detail.code,\n rgb: `${detail.rgba.r},${detail.rgba.g},${detail.rgba.b}`,\n key: this.propertyKey,\n id: this.propertyId,\n },\n }, this.PPContainerComponent?.PPOptions)).then(async () => {\n if (this._progress) this._progress.finished = true;\n this.PPContainerComponent?.requestUpdate();\n setTimeout(() => this._progress?.hide(), 1000);\n });\n };\n\n render() {\n DragDropService.removeElement(this);\n if (this.draggable && !this._colorPickerInstance) {\n DragDropService.addElement(this, {\n extData: {\n manufacturer: this.manufacturer,\n program: this.program,\n key: this.propertyId,\n property: this.propertyKeyValue,\n propertyKey: this.propertyKey,\n },\n id: this.propertyId,\n type: DragType.PROGPROPERTY,\n });\n }\n const classMapImage = {\n \"not-found\": !this.image,\n \"pp-image\": true,\n };\n return html`\n <div class=\"pp-item-content\">\n <div class=\"pp-item-image\">\n <div class=${classMap(classMapImage)} style=\"${this.image ? `${this.image}` : \"\"}\">\n <fv-progress></fv-progress>\n </div>\n </div>\n <div class=\"pp-item-name\">\n <span>${this.itemName}</span>\n </div>\n </div>\n <div class=\"color-picker hidden\"></div>\n `;\n }\n}\n","import { IPPItem, PPItemComponent } from \"./pp-item.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { css, html, PropertyDeclaration, PropertyValueMap, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pp-items.component.sass?inline\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport { StyleHelper } from \"../../../../utils/style.helper\";\n\n@customElement(\"fv-pp-items\")\nexport class PPItemsComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true })\n active = false;\n\n @property({ type: Boolean, reflect: true })\n noTransition = false;\n\n constructor() {\n super();\n }\n\n private updateHeight = () => {\n StyleHelper.updateMaxTransitionHeight(this);\n }\n\n async requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n await StyleHelper.updateMaxTransitionHeight(this as HTMLElement);\n super.requestUpdate(name, oldValue, options);\n }\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n\n addItem(item_: IPPItem): PPItemComponent {\n const item = new PPItemComponent(item_);\n return item;\n }\n\n colorPickerCheck() {\n const elements = this.querySelectorAll(\"fv-pp-item:not(.hidden)\");\n if (elements.length === 1) {\n const element = (elements[0] as PPItemComponent);\n if (element.ColorPicker) {\n element.ColorPicker.removeEventListener(\"onRender\", this.updateHeight);\n element.ColorPicker.addEventListener(\"onRender\", this.updateHeight);\n element.click();\n }\n this.updateHeight();\n }\n }\n}\n\n","import { html, TemplateResult } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\n// Side-effect imports — register custom elements used by tag name in templates.\nimport \"./pp-menu.component\";\nimport \"./pp-items.component\";\nimport \"./pp-item.component\";\nimport { PPItemsComponent } from \"./pp-items.component\";\nimport { PPLayerComponent } from \"../../pp-layer/pp-layer.component\";\nimport { IGetAccordionItemsParams } from \"../../pp-layer/base-accordion.theme\";\nimport { PPMenuComponent } from \"./pp-menu.component\";\nimport {\n IProgProperty,\n IProgPropertyManufacturer,\n IProgPropertyProgram,\n IProgPropertyValue,\n} from \"@dh-software/webui-types\";\nimport { DragDropService, ProgPropertyModel } from \"@dh-software/webui-api\";\n\ntype WebUIChild = PPItemsComponent | PPMenuComponent;\n\ninterface WebUIValueRow {\n propertyKey: string;\n property: string;\n name: string;\n imgUrl: string;\n colorPicker?: { type?: string, code?: string, rgb?: string };\n}\n\ninterface WebUIRow {\n key: string;\n id: string;\n title: string;\n currentImage: string;\n currentName: string;\n manufacturer: string;\n program: string;\n hideItemCount: boolean;\n disabled: boolean;\n values: WebUIValueRow[];\n}\n\n@customElement(\"fv-prog-property-webui-accordion-layer\")\nexport class ProgPropertyWebUIAccordionLayer extends PPLayerComponent<WebUIChild> {\n\n @state()\n protected _rows: WebUIRow[] = [];\n\n @state()\n protected _openKey: string | null = null;\n\n async getAccordionItems(_params: IGetAccordionItemsParams): Promise<TemplateResult[]> {\n DragDropService.cleanUp();\n const rows: WebUIRow[] = [];\n await ProgPropertyModel.traverse({\n propertyCallback: (manufacturerModel: IProgPropertyManufacturer, programModel: IProgPropertyProgram,\n propertyModel: IProgProperty, values: IProgPropertyValue[], currentValue?: IProgPropertyValue) => {\n if (!propertyModel.name) return false;\n\n let current = currentValue\n ?? values.find(v => v.propertyKey === propertyModel.currentValue);\n let disabled = false;\n if (values.length === 1) {\n if (this.PPContainer.hideNotSettable) return false;\n if (this.PPContainer.disableNotSettable) disabled = true;\n current = values[0];\n }\n\n const currentImage = current?.colorPicker?.rgb\n ? `${current.colorPicker.rgb},1`\n : current?.alternativeImageUrl || \"\";\n\n rows.push({\n key: propertyModel.key,\n id: propertyModel.id,\n title: propertyModel.name,\n currentImage,\n currentName: current?.name ?? \"\",\n manufacturer: manufacturerModel.manufacturerName?.toLowerCase() ?? \"\",\n program: programModel.programName?.toLowerCase() ?? \"\",\n hideItemCount: this.PPContainer.hideItemCount\n || (this.PPContainer.disableNotSettable && values.length === 1),\n disabled,\n values: values.map(v => ({\n propertyKey: v.propertyKey,\n property: v.key,\n name: v.name,\n imgUrl: v.alternativeImageUrl ?? \"\",\n colorPicker: v.colorPicker,\n })),\n });\n },\n });\n this._rows = rows;\n return this._buildTemplates();\n }\n\n protected _buildTemplates(): TemplateResult[] {\n return this._rows.map(r => this._renderRow(r));\n }\n\n private _renderRow(r: WebUIRow): TemplateResult {\n const active = this._openKey === r.key;\n return html`\n <fv-pp-menu\n data-key=${r.key}\n ?active=${active}\n ?disabled=${r.disabled}\n ?hide-item-count=${r.hideItemCount}\n .titleText=${r.title}\n .currentImage=${r.currentImage}\n .currentName=${r.currentName}\n .itemCount=${r.values.length}\n @click=${(e: Event) => this._onMenuClick(e, r.key)}\n ></fv-pp-menu>\n <fv-pp-items data-key=${r.key} id=\"item_${r.id}\" ?active=${active}>\n ${repeat(r.values, v => v.propertyKey, v => html`\n <fv-pp-item\n .itemName=${v.name}\n .image=${v.imgUrl}\n .manufacturer=${r.manufacturer}\n .program=${r.program}\n .propertyId=${r.id}\n .propertyKeyValue=${v.property}\n .propertyKey=${v.propertyKey}\n .colorPicker=${v.colorPicker}\n .PPContainerComponent=${this.PPContainer}\n ></fv-pp-item>\n `)}\n </fv-pp-items>\n `;\n }\n\n protected _onMenuClick = (e: Event, key: string) => {\n e.stopPropagation();\n e.preventDefault();\n this._openKey = this._openKey === key ? null : key;\n this._items = this._buildTemplates();\n if (this._openKey !== null) {\n this.updateComplete.then(() => {\n const items = this.querySelector(`fv-pp-items[data-key=\"${key}\"]`) as PPItemsComponent | null;\n items?.colorPickerCheck();\n });\n }\n };\n}\n","import { html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport style from \"../furnview_theme/pp-furnview-accordion-layer.component.sass?inline\";\n// Side-effect imports — register custom elements used by tag name in templates\n// (plus those used by the shared `renderFurnviewRow` helper).\nimport \"../../prop-transfer/furnview_theme/pt-property-group.component\";\nimport \"../../prop-transfer/furnview_theme/pt-property-item.component\";\nimport \"../furnview_theme/pp-property.component\";\nimport \"../furnview_theme/pp-property-values.component\";\nimport \"../furnview_theme/pp-property-value.component\";\nimport { PPLayerComponent } from \"../../pp-layer/pp-layer.component\";\nimport { IGetAccordionItemsParams } from \"../../pp-layer/base-accordion.theme\";\nimport { PTPropertyGroupComponent } from \"../../prop-transfer/furnview_theme/pt-property-group.component\";\nimport { PTPropertyItemComponent } from \"../../prop-transfer/furnview_theme/pt-property-item.component\";\nimport { PPPropertyValuesComponent } from \"../furnview_theme/pp-property-values.component\";\nimport { PPPropertyComponent } from \"../furnview_theme/pp-property.component\";\nimport { PPPropertyValueComponent } from \"../furnview_theme/pp-property-value.component\";\nimport {\n buildFurnviewRow,\n FurnviewRow,\n renderFurnviewRow,\n} from \"../furnview_theme/pp-furnview-accordion-layer.component\";\nimport {\n IGetPropTransferParams,\n IProgPropertyExt,\n IProgPropertyValue,\n IPropTransferItem,\n} from \"@dh-software/webui-types\";\nimport { ProgPropertyModel, PropTransferModel } from \"@dh-software/webui-api\";\n\ntype PTChildren = PTPropertyItemComponent | PTPropertyGroupComponent;\ntype PPChildren = PPPropertyValueComponent | PPPropertyValuesComponent | PPPropertyComponent;\nexport type CombineChildren = PTChildren | PPChildren;\n\ninterface PTGroupRow {\n kind: \"pt-group\";\n key: string;\n items: IPropTransferItem[];\n}\n\ninterface PPRow {\n kind: \"pp-row\";\n key: string;\n row: FurnviewRow;\n}\n\ntype CombineRow = PTGroupRow | PPRow;\n\n@customElement(\"fv-prog-property-combine-accordion-layer\")\nexport class ProgPropertyCombineAccordionLayer extends PPLayerComponent<CombineChildren> {\n\n static styles = [super.styles || [], unsafeCSS(style)];\n\n @property({ type: Object, reflect: true })\n parameters?: IGetPropTransferParams;\n\n @state()\n protected _rows: CombineRow[] = [];\n\n @state()\n protected _openKey: string | null = null;\n\n async getAccordionItems(_params: IGetAccordionItemsParams): Promise<TemplateResult[]> {\n const combinedProperties = new Set<string>();\n const rows: CombineRow[] = [];\n let useCache = false;\n\n await PropTransferModel.traverse({\n groupCallback: async (manufacturer, program, group, items) => {\n const groupKey = `${manufacturer}_${program}_${group}`;\n const progProperties: string[] = [];\n for (const item of items) {\n for (const p of item.progProperties ?? []) {\n if (!progProperties.includes(p)) progProperties.push(p);\n }\n }\n\n rows.push({\n kind: \"pt-group\",\n key: groupKey,\n items: this.PPContainer.grouped ? items : [],\n });\n\n const filteredProgProperties = await ProgPropertyModel.findMany(manufacturer, program, progProperties, useCache);\n useCache = true;\n for (const propertyModel of Object.values(filteredProgProperties) as IProgPropertyExt[]) {\n combinedProperties.add(propertyModel.key);\n const values = Object.values(propertyModel.children) as IProgPropertyValue[];\n const currentValue = propertyModel.currentValue as unknown as IProgPropertyValue;\n const row = buildFurnviewRow(this.PPContainer, { manufacturerName: manufacturer }, { programName: program }, propertyModel, values, currentValue);\n if (row) rows.push({ kind: \"pp-row\", key: `pp_${row.key}_${groupKey}`, row });\n }\n },\n itemsCallback: async (item: IPropTransferItem) => {\n if (!this.PPContainer.grouped) {\n rows.push({ kind: \"pt-group\", key: item.id, items: [item] });\n }\n },\n }, this.parameters);\n\n await ProgPropertyModel.traverse({\n propertyCallback: (manufacturerModel, programModel, propertyModel, values, currentValue) => {\n if (values.length <= 1 || combinedProperties.has(propertyModel.key)) return;\n const row = buildFurnviewRow(this.PPContainer, manufacturerModel, programModel, propertyModel, values, currentValue);\n if (row) rows.push({ kind: \"pp-row\", key: `pp_${row.key}`, row });\n },\n });\n\n this._rows = rows;\n return this._buildTemplates();\n }\n\n protected _buildTemplates(): TemplateResult[] {\n return this._rows.map(r => this._renderRow(r));\n }\n\n private _renderRow(r: CombineRow): TemplateResult {\n if (r.kind === \"pt-group\") return this._renderPtGroup(r);\n // Combine theme's PP click is one-way \"open\" rather than toggle.\n return renderFurnviewRow(this.PPContainer, r.row, this._openKey, (e, key) => {\n e.stopPropagation();\n e.preventDefault();\n if (this._openKey === key) return;\n this._openKey = key;\n this._items = this._buildTemplates();\n });\n }\n\n private _renderPtGroup(g: PTGroupRow): TemplateResult {\n return html`\n <fv-pt-group data-key=${g.key}>\n ${repeat(g.items, it => it.id, it => html`\n <fv-pt-property-item\n .titleText=${it.text || it.id}\n .currentImage=${it.image || \"\"}\n ?deletable=${(it.deletable ?? []).length > 0}\n .itemId=${it.id}\n .manufacturer=${it.manufacturer || \"\"}\n .program=${it.program || \"\"}\n ></fv-pt-property-item>\n `)}\n </fv-pt-group>\n `;\n }\n}\n\nexport const PPCombineThemeIndex = new ProgPropertyCombineAccordionLayer();\n","import { BaseElement } from \"../base/base.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nimport style from \"./single-color.component.sass?inline\";\n\n@customElement(\"fv-single-color\")\nexport class SingleColorComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private readonly colorCode: string = \"\";\n\n @property({ type: Boolean })\n public disabled = false;\n\n constructor(colorCode: string) {\n super();\n this.colorCode = colorCode;\n }\n\n private colorBoxClick() {\n this.classList.add(\"selected\");\n this.dispatchEvent(new CustomEvent(\"colorBoxClick\", { detail: { colorCode: this.colorCode } }));\n }\n\n private getRGB() {\n const rgb = StyleHelper.hexToRgb(this.colorCode);\n if (rgb) {\n return rgb;\n }\n return { r: 119, g: 119, b: 119 };\n }\n\n protected render(): TemplateResult<1> {\n const rgb = this.getRGB();\n const classes = {\n \"color-box\": true,\n \"disabled\": this.disabled,\n \"fv-icon-close\": this.disabled,\n \"fv-icon-check\": this.classList.contains(\"selected\")\n };\n\n return html`\n <div\n class=\"${classMap(classes)}\"\n @click=\"${this.colorBoxClick}\"\n style=\"background-color: rgba(${rgb?.r}, ${rgb?.g}, ${rgb?.b}, ${this.disabled ? \"0.2\" : \"1\"});\">\n </div>\n `;\n }\n}","import { css, html, unsafeCSS, TemplateResult } from \"lit\";\nimport style from \"./finish-params-container.component.sass?inline\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport { SingleColorComponent } from \"../../../standard/color/single-color.component\";\nimport {\n eCatalogFilterState,\n ICreateStdCatalogFilterCtxRequest,\n IProgPropertyFinishParams,\n IProgPropertyFinishParamsProperty,\n IProgPropertyProgramFinishParams,\n IRunStdCatalogFilterCtxResponse\n} from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-finish-params-container\")\nexport class FinishParamsContainerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private readonly manufacturer: string;\n private readonly program: string;\n private readonly propertyKey: string;\n\n private currentSelection: Array<string> = [];\n private propertyFinishParams: IProgPropertyFinishParamsProperty | undefined = undefined;\n private propertyFinishParamValues: Array<IProgPropertyFinishParams> = []\n\n @state()\n private _filterData: IRunStdCatalogFilterCtxResponse | undefined = undefined;\n\n constructor(manufacturer_: string, program_: string, propertyKey_: string, finishParams_: IProgPropertyProgramFinishParams) {\n super();\n this.manufacturer = manufacturer_;\n this.program = program_;\n this.propertyKey = propertyKey_;\n\n this.propertyFinishParams = finishParams_[propertyKey_];\n\n if (this.propertyFinishParams) {\n this.propertyFinishParamValues = Object.values(this.propertyFinishParams).sort((a, b) => a.prio - b.prio);\n this.initFilterContext();\n }\n }\n\n private async initFilterContext() {\n if (this.propertyFinishParams) {\n const propertyFilter = this.getFinishParamsStdCatalogFilter(this.FilterContextKey, this.propertyFinishParams);\n await CommunicationMessageService.createStdCatalogFilterCtx(propertyFilter);\n }\n }\n\n private getFinishParamsStdCatalogFilter(context_: string, items_: IProgPropertyFinishParamsProperty): ICreateStdCatalogFilterCtxRequest {\n const filter: [string, string[]][] = [];\n const itemToFilterValuesMap = new Map();\n\n for (const groupName in items_) {\n const group = items_[groupName];\n if (!group || !group.values) {\n continue;\n }\n\n const filterValues = Object.keys(group.values);\n if (filterValues.length > 0) {\n filter.push([groupName, filterValues]);\n\n for (const filterValue of filterValues) {\n const valueObj = group.values[filterValue];\n const items = valueObj.auspraegung || []\n\n for (const item of items) {\n if (!itemToFilterValuesMap.has(item)) {\n itemToFilterValuesMap.set(item, new Set());\n }\n itemToFilterValuesMap.get(item).add(filterValue);\n }\n }\n }\n }\n\n const items: [string, string[]][] = Array.from(itemToFilterValuesMap.entries()).map(([item, filterValuesSet]) => [\n item,\n Array.from(filterValuesSet)\n ]);\n\n return { ctx: context_, filter, items };\n }\n\n get FilterContextKey(): string {\n return `${this.manufacturer}_${this.program}_${this.propertyKey}`;\n }\n\n private toggleSelection(value: string) {\n if (this.currentSelection.includes(value)) {\n this.currentSelection = this.currentSelection.filter(item => item !== value);\n }\n else {\n this.currentSelection.push(value);\n }\n }\n\n private async runCatalogFilter() {\n this._filterData = await CommunicationMessageService.runCatalogFilterCtx({ ctx: this.FilterContextKey, selection: this.currentSelection })\n this.dispatchEvent(new CustomEvent(\"onFinishParamsFilter\", { detail: { filter: this._filterData, key: this.propertyKey }, composed: true, bubbles: true }));\n }\n\n private renderFinishParams(): TemplateResult<1> {\n const filterContainer = document.createElement('div');\n filterContainer.classList = \"filter-lists\";\n\n for (const finishGroup of this.propertyFinishParamValues) {\n const groupContainer = document.createElement('div');\n groupContainer.classList.add(\"filter-group\");\n\n const groupItems = document.createElement('div');\n groupItems.classList.add(\"group-items\");\n\n if (finishGroup.text) {\n const groupTitle = document.createElement(\"fv-label\");\n groupTitle.setAttribute(\"i18n\", finishGroup.text);\n groupTitle.innerText = finishGroup.text;\n groupTitle.classList.add(\"group-title\");\n groupContainer.appendChild(groupTitle);\n }\n\n for (const filterValue in finishGroup.values) {\n const isColor = /[a-fA-F0-9]{6}/.test(filterValue);\n const isSelected = this.currentSelection.includes(filterValue);\n const isDisabled = this._filterData?.filterGroups[finishGroup.id].find(entry => entry.id === filterValue)?.state === eCatalogFilterState.DISABLED;\n\n if (isColor) {\n const colorComponent = new SingleColorComponent(finishGroup.values[filterValue].id);\n colorComponent.disabled = isDisabled;\n colorComponent.addEventListener(\"colorBoxClick\", async () => {\n this.toggleSelection(filterValue);\n await this.runCatalogFilter();\n });\n if (isSelected) {\n colorComponent.classList.add(\"selected\");\n }\n\n groupItems.appendChild(colorComponent);\n }\n else {\n const buttonComponent = document.createElement(\"fv-button\");\n buttonComponent.classList.add(\"bordered\");\n buttonComponent.textContent = finishGroup.values[filterValue].text;\n buttonComponent.addEventListener(\"click\", async () => {\n this.toggleSelection(filterValue);\n await this.runCatalogFilter();\n });\n if (isDisabled) {\n buttonComponent.setAttribute(\"disabled\", \"true\");\n }\n if (isSelected) {\n buttonComponent.classList.add(\"active\");\n }\n\n groupItems.appendChild(buttonComponent);\n }\n }\n\n groupContainer.appendChild(groupItems);\n filterContainer.appendChild(groupContainer);\n }\n return html`${filterContainer}`;\n }\n\n protected render(): unknown {\n return html`${this.renderFinishParams()}`;\n }\n}\n","import { html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { createRef, ref, Ref } from \"lit/directives/ref.js\";\nimport style from \"./pp-accordion-layer.component.sass?inline\";\nimport { AccordionItemComponent } from \"../../../standard/accordion\";\n// Side-effect imports — these custom elements are only used as types or tag\n// names below; bundlers tree-shake value imports of unused classes, which\n// stops the @customElement registration side-effects from firing.\nimport \"./image/titled-image.component\";\nimport \"./image/property-list.component\";\nimport \"../../../standard/radio/radio.component\";\nimport { PropertyListComponent, TitledImageComponent } from \"./image\";\nimport { FinishParamsContainerComponent } from \"../finish-params/finish-params-container.component\";\nimport { BaseAccordionTheme } from \"../../pp-layer/base-accordion.theme\";\nimport { IPPLayerGetAccordionItemsParams, RenderMode } from \"../../pp-layer/pp-layer.component\";\nimport {\n DragType,\n IProgProperty,\n IProgPropertyGroupInformationExt,\n IProgPropertyManufacturer,\n IProgPropertyProgram,\n IProgPropertyProgramFinishParams,\n IProgPropertyValue,\n IPropertyGroupedCallbackParams,\n} from \"@dh-software/webui-types\";\nimport {\n CommunicationMessageService,\n DragDropService,\n ProgPropertyModel,\n WebViewerService,\n} from \"@dh-software/webui-api\";\n\ninterface GroupRow {\n key: string;\n title: string;\n headerImage: string;\n isSingular: boolean;\n additionalClasses: string[];\n program: IProgPropertyProgram;\n manufacturer: IProgPropertyManufacturer;\n finishParams: IProgPropertyProgramFinishParams;\n properties: PropertyRow[];\n}\n\ninterface PropertyRow {\n key: string;\n model: IProgProperty;\n values: IProgPropertyValue[];\n current?: IProgPropertyValue;\n}\n\n@customElement(\"fv-prog-property-accordion-layer\")\nexport class ProgPropertyAccordionLayer extends BaseAccordionTheme {\n static styles = [super.styles || [], unsafeCSS(style)];\n\n constructor() {\n super();\n this.preventEmpty = false;\n this.renderMode = RenderMode.LIT_STATE;\n }\n\n // One-shot wiring guards per live DOM element; GC'd when the node disappears.\n private wiredDrag = new WeakSet<Element>();\n private wiredColorPicker = new WeakSet<Element>();\n\n // FinishParamsContainer has a positional constructor with side effects — cache to avoid re-firing.\n private finishParamsByKey = new Map<string, FinishParamsContainerComponent>();\n\n private currentProgramId = \"\";\n private initiallyOpened = false;\n\n async getAccordionItems(params: IPPLayerGetAccordionItemsParams): Promise<TemplateResult[]> {\n DragDropService.cleanUp();\n this.wiredDrag = new WeakSet<Element>();\n this.wiredColorPicker = new WeakSet<Element>();\n\n const additionalClasses = this.PPContainer.accordionItemClasses;\n const groups: GroupRow[] = [];\n\n await ProgPropertyModel.traverse({\n propertyGroupedCallback: async (data: IPropertyGroupedCallbackParams<IProgPropertyManufacturer, IProgPropertyGroupInformationExt>) => {\n if (this.PPContainer.hideSingleValueProperties) {\n let hasFilter = false;\n let noProgPropertyValueList = false;\n let totalPropertiesCount = 0;\n for (const item of data.propertyGroup.keys) {\n if (item.progPropertyValueList) totalPropertiesCount += item.progPropertyValueList.length;\n else noProgPropertyValueList = true;\n if (data.finishParams?.[item.key]) hasFilter = true;\n }\n if (totalPropertiesCount < 2 && !noProgPropertyValueList && !hasFilter) return;\n }\n if (data.propertyGroup?.id === \"hidden\") return;\n\n if (!data.propertyGroup.title) {\n data.propertyGroup.title = data.propertyGroup.keys[0].progPropertyModel?.name || \"\";\n }\n\n const groupKey = `${data.propertyGroup.title}_${data.propertyGroup.id ?? \"\"}`;\n const properties: PropertyRow[] = [];\n\n for (const item of data.propertyGroup.keys) {\n const itemHasFinishParams = !!data.finishParams?.[item.key];\n if (!item.progPropertyModel?.name) continue;\n\n const hasManyValues =\n !!item.progPropertyValueList &&\n (item.progPropertyValueList.length > 1 || !this.PPContainer.hideSingleValueProperties);\n if (!hasManyValues && !itemHasFinishParams) continue;\n\n let current = item.currentValue;\n if (!current && item.progPropertyValueList) {\n current = item.progPropertyValueList.find(c => c.propertyKey === item.progPropertyModel?.currentValue);\n }\n\n properties.push({\n key: item.progPropertyModel.key,\n model: item.progPropertyModel,\n values: hasManyValues ? item.progPropertyValueList! : [],\n current,\n });\n }\n\n if (properties.length === 0) return;\n\n // Header image: group override, else first current-selection image (matches old setHeaderImage order).\n let headerImage = data.propertyGroup.imgSrc || \"\";\n if (!headerImage) {\n for (const p of properties) {\n const img = p.current?.alternativeImageUrl || p.current?.colorPicker?.rgb;\n if (img) { headerImage = img; break; }\n }\n }\n\n groups.push({\n key: groupKey,\n title: data.propertyGroup.title || \"Undefined\",\n headerImage,\n isSingular: false,\n additionalClasses,\n program: data.programModel,\n manufacturer: data.manufacturerModel,\n finishParams: data.finishParams || ({} as IProgPropertyProgramFinishParams),\n properties,\n });\n },\n }, params?.progPropertiesParams);\n\n // Program switched: clear ActiveItem so a stale group doesn't stay open;\n const programId = groups[0]?.program?.programID ?? \"\";\n if (programId && this.currentProgramId !== programId) {\n this.currentProgramId = programId;\n const parent = this.parentAccordion;\n if (parent) parent.ActiveItem = undefined;\n this.initiallyOpened = false;\n }\n\n if (groups.length === 1) groups[0].isSingular = true;\n\n return groups.map(g => this.renderGroup(g));\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n super.updated?.(_changedProperties);\n if (this.initiallyOpened) return;\n const firstItem = this.querySelector<AccordionItemComponent>(\"fv-accordion-item\");\n if (!firstItem) return;\n const accordion = firstItem.parentAccordion;\n if (accordion && accordion.ActiveItem !== firstItem) {\n accordion.ActiveItem = firstItem;\n }\n this.initiallyOpened = true;\n }\n\n private renderGroup(g: GroupRow): TemplateResult {\n const classes: Record<string, boolean> = {};\n for (const cls of g.additionalClasses) classes[cls] = true;\n\n return html`\n <fv-accordion-item\n data-group-key=${g.key}\n .Header=${g.title}\n .Image=${g.headerImage}\n ?singular=${g.isSingular}\n ?forced-open=${g.isSingular}\n class=${classMap(classes)}\n >\n ${repeat(g.properties, p => p.key, p => this.renderProperty(g, p))}\n </fv-accordion-item>\n `;\n }\n\n private renderProperty(g: GroupRow, p: PropertyRow): TemplateResult {\n const listRef = createRef<PropertyListComponent>();\n // Any radio value flips the list into `.radioList` mode (matches old buildRadioProperty).\n const isRadioList = p.values.some(v => !v.alternativeImageUrl && !v.colorPicker?.type);\n\n return html`\n <label class=\"pp-property-label\" style=\"font-weight: bold\">${p.model.name}</label>\n <fv-property-list\n ${ref(listRef)}\n id=${p.model.id}\n class=${classMap({ radioList: isRadioList })}\n >\n ${this.getFinishParamsContainer(g, p)}\n ${repeat(p.values, v => v.propertyKey, v => this.renderValue(g, p, v, listRef))}\n </fv-property-list>\n `;\n }\n\n private renderValue(g: GroupRow, p: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): unknown {\n if (v.alternativeImageUrl) return this.renderImageValue(g, p, v, listRef);\n if (v.colorPicker?.type) return this.renderColorPickerValue(g, p, v, listRef);\n return this.renderRadioValue(g, p, v);\n }\n\n private renderImageValue(g: GroupRow, p: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): TemplateResult {\n const modifyParams = this.getModifyParameters(g.manufacturer, g.program, p.model, v);\n const isCurrent = p.current?.propertyKey === v.propertyKey;\n\n const wireDrag = (el: Element | undefined) => {\n if (!el || this.wiredDrag.has(el)) return;\n this.wiredDrag.add(el);\n DragDropService.addElement(el as HTMLElement, {\n extData: modifyParams,\n id: p.model.id,\n type: DragType.PROGPROPERTY,\n }, undefined, false);\n };\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n const list = listRef.value;\n list?.querySelectorAll(\".selected\").forEach(el => el.classList.remove(\"selected\"));\n list?.hideColorPicker();\n (e.currentTarget as TitledImageComponent).classList.add(\"selected\");\n CommunicationMessageService.modifyProperty(JSON.stringify([modifyParams]), this.PPContainer.PPOptions);\n WebViewerService.FurnviewWebViewer?.focus();\n };\n\n return html`\n <fv-titled-image\n ${ref(wireDrag)}\n .text=${v.name}\n .image=${v.alternativeImageUrl}\n .infoData=${(v.toolTipData as string) || \"\"}\n .infoType=${(v.toolTipType as string) || \"\"}\n .manufacturer=${g.manufacturer.manufacturerName as string}\n .IsActive=${false}\n ?selected=${isCurrent}\n @click=${onClick}\n ></fv-titled-image>\n `;\n }\n\n private renderColorPickerValue(g: GroupRow, p: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): TemplateResult {\n const modifyParams = this.getModifyParameters(g.manufacturer, g.program, p.model, v);\n const isCurrent = p.current?.propertyKey === v.propertyKey;\n\n // addColorPicker is stateful imperative API — wire exactly once per element.\n const wirePicker = (el: Element | undefined) => {\n const ppList = listRef.value;\n if (!el || !ppList || !v.colorPicker || this.wiredColorPicker.has(el)) return;\n this.wiredColorPicker.add(el);\n ppList.addColorPicker(v.colorPicker, (e) => {\n const detail = (e as CustomEvent).detail as {\n code: string;\n rgba: { r: number; g: number; b: number; a: 1 };\n };\n CommunicationMessageService.modifyProperty(\n JSON.stringify([modifyParams]),\n Object.assign({\n modifyColorPicker: {\n code: detail.code,\n rgb: `${detail.rgba.r},${detail.rgba.g},${detail.rgba.b}`,\n key: v.propertyKey,\n id: p.model.id,\n },\n }, this.PPContainer.PPOptions),\n );\n WebViewerService.FurnviewWebViewer?.focus();\n });\n if (isCurrent) {\n ppList.showColorPicker(p.current?.colorPicker, Object.keys(p.model.children).length === 1);\n }\n };\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n const list = listRef.value;\n list?.querySelectorAll(\".selected\").forEach(el => el.classList.remove(\"selected\"));\n (e.currentTarget as TitledImageComponent).classList.add(\"selected\");\n list?.showColorPicker(v.colorPicker);\n };\n\n return html`\n <fv-titled-image\n ${ref(wirePicker)}\n .text=${v.name}\n .image=${v.alternativeImageUrl}\n .infoData=${(v.toolTipData as string) || \"\"}\n .infoType=${(v.toolTipType as string) || \"\"}\n .manufacturer=${g.manufacturer.manufacturerName as string}\n .IsActive=${isCurrent}\n ?selected=${isCurrent}\n @click=${onClick}\n ></fv-titled-image>\n `;\n }\n\n private renderRadioValue(g: GroupRow, p: PropertyRow, v: IProgPropertyValue): TemplateResult {\n const modifyParams = this.getModifyParameters(g.manufacturer, g.program, p.model, v);\n const isCurrent = p.current?.propertyKey === v.propertyKey;\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n CommunicationMessageService.modifyProperty(JSON.stringify([modifyParams]), this.PPContainer.PPOptions);\n WebViewerService.FurnviewWebViewer?.focus();\n };\n\n return html`\n <fv-radio\n class=\"top-radio\"\n .name=${p.model.key}\n ?checked=${isCurrent}\n @click=${onClick}\n >${v.name}</fv-radio>\n `;\n }\n\n // Cached because FinishParamsContainer's constructor fires a backend filter-context request.\n private getFinishParamsContainer(g: GroupRow, p: PropertyRow): FinishParamsContainerComponent {\n const cacheKey = `${g.key}/${p.model.key}`;\n let el = this.finishParamsByKey.get(cacheKey);\n if (!el) {\n el = new FinishParamsContainerComponent(\n g.manufacturer.manufacturerName,\n g.program.programName,\n p.model.id,\n g.finishParams,\n );\n this.finishParamsByKey.set(cacheKey, el);\n }\n return el;\n }\n}\n","export class NoticeUtils {\n public static selectedNoticeItems: Array<any> = [];\n public static currentNoticeItem: any;\n public static getProperties(sceneSettings: { cloudId: string, properties: any }) {\n const properties: { [key: string]: { name: string, title: string } } = {};\n\n for (const key in sceneSettings.properties) {\n for (const group of sceneSettings.properties[key]) {\n group.keys.forEach((gkey: any) => {\n if (gkey && gkey.value) {\n properties[gkey.key] = { title: gkey.title, name: gkey.value.name };\n }\n });\n }\n }\n return properties;\n }\n\n public static getPropertyValues(noticeValues: Array<{ title: string, properties: Array<string> }>, properties: {[p: string]: {name: string, title: string}}) {\n const propertiesKeys = Object.keys(properties);\n return noticeValues.map((value) => {\n const propertyList = value.properties.map((v) => {\n const propertyRegex = new RegExp(\"\" + v);\n const propertiesKey = propertiesKeys.find((key) => {\n return propertyRegex.test(key);\n });\n return properties[propertiesKey||\"\"];\n }).filter((p) => p !== undefined);\n\n return {\n propertyValues: propertyList\n };\n });\n }\n}\n","import { css, html, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./property-info.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { NoticeUtils } from \"../../notice/notice-utils\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport {CommunicationMessageService, EventFactoryService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-property-info\")\nexport class PropertyInfoComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private program = \"\";\n private propertyList: Array<{[key: string]: string} | undefined>;\n\n public isActive = true;\n public properties = [];\n\n constructor() {\n super();\n this.propertyList = [];\n\n }\n\n private async updateProperties() {\n const programs = await CommunicationMessageService.getProgramsInScene() as Array<string>;\n this.program = programs[0] || \"\";\n const currentProperties = await CommunicationMessageService.getCurrentProgProperties({\n manufacturer: window.g_article.manu,\n useRelevant: true\n });\n const properties = NoticeUtils.getProperties({ cloudId: \"\", properties: currentProperties });\n const propertiesKeys = Object.keys(properties);\n this.propertyList = this.properties.map((v) => {\n const propertyRegex = new RegExp(v);\n const propertiesKey = propertiesKeys.find((key) => {\n return propertyRegex.test(key);\n });\n if (propertiesKey) {\n return properties[propertiesKey];\n }\n return undefined;\n });\n for (let i = this.propertyList.length - 1; i < 0; i++) {\n if (this.propertyList[i] === undefined) this.propertyList.splice(i, 1);\n }\n\n this.requestUpdate();\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n await this.updateProperties();\n EventFactoryService.RefreshPropertyPanel.register(() => {\n this.updateProperties();\n });\n }\n\n private toggleInfo() {\n this.isActive = !this.isActive;\n this.requestUpdate();\n }\n\n render(): TemplateResult<1> {\n const propertyInfoClass = { \"property-info-text\": true, active: this.isActive };\n return html`\n <span>\n <fv-info-button @info-button-clicked=\"${this.toggleInfo}\"></fv-info-button>\n <span class=\"${classMap(propertyInfoClass)}\">\n ${this.program ? html`<span>Modell: <span class=\"bold\">${this.program}</span></span>` : \"\"} \n ${this.propertyList.map((property) => {\n if (property) return html`<span>| ${property.title}: <span class=\"bold\">${property.name} </span></span>`;\n })}\n </span>\n </span>\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./separator.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-separator\")\nexport class SeparatorComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return html``;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./dockable-menu.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { SeparatorComponent } from \"../../separator\";\nimport {IconStepComponent} from \"../../step\";\n\n@customElement(\"fv-dockable-menu\")\nexport class DockableMenuComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true })\n public toggleable = true;\n\n constructor() {\n super();\n }\n\n menuToggleClick() {\n this.classList.toggle(\"hide\");\n }\n\n appendChild<T extends Node>(node: T): T {\n this.append(node);\n return node;\n }\n append(...nodes: Node[]) {\n nodes.forEach((node: Node)=>{\n (node as unknown as HTMLElement)?.classList?.add(\"docked\");\n });\n\n super.append(...nodes);\n }\n\n render(): TemplateResult<1> {\n return html`\n ${ this.toggleable ? html`<div @click=\"${this.menuToggleClick}\" class=\"menu-toggle\"><i class=\"fv-icon-arrow-down-2\"></i></div>` : \"\" }\n <div class=\"menu-content invisible-scroll bottom\">\n <div class=\"scroll-content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport style from \"./finish-modal.component.sass?inline\";\nimport { BaseMaskElement } from \"../../standard/base/mask.component\";\nimport { property, customElement, state } from \"lit/decorators.js\";\nimport { EventHandlerDispatchEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\n\n@customElement(\"fv-finish-modal-mask\")\nexport class FinishModalComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n public mask = \"finish-modal\";\n public reloadEvent?: { command: string, data: unknown };\n\n @property({type: String})\n public dealerLink = \"\";\n\n constructor() {\n super();\n }\n\n private findDealer() {\n if (this.dealerLink) {\n window.open(this.dealerLink, \"_blank\");\n }\n }\n\n private reload() {\n if (this.reloadEvent) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: [{\n id: this.reloadEvent.command,\n data: this.reloadEvent.data as EventHandlerEventData\n }]\n }));\n }\n else {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: [{\n id: \"reload-window\",\n data: {}\n }]\n }));\n }\n }\n\n protected build(content: TemplateResult = html``) {\n return html`\n <div class=\"finish-header\">\n <h3>\n <span i18n=\"modal.finish.head-text\"></span>\n </h3>\n </div>\n <div class=\"finish-content\">\n <div class=\"finish-header\" i18n=\"modal.finish.content.head-text\">\n <span></span>\n </div>\n <div class=\"finish-text\">\n <span i18n=\"modal.finish.content.text\"></span>\n </div>\n <div class=\"finish-illustration\">\n <div>\n <div class=\"finish-image\">\n <img part=\"finish-illustration-first\"/>\n </div>\n <div>\n <span i18n=\"modal.finish.content.illustration.left\"></span>\n </div>\n </div>\n <div class=\"finish-image\">\n <img part=\"finish-illustration-arrow\"/>\n </div>\n <div>\n <div class=\"finish-image\">\n <img part=\"finish-illustration-second\"/>\n </div>\n <div>\n <span i18n=\"modal.finish.content.illustration.right\"></span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"notice-footer\">\n <fv-button class=\"bordered\" i18n=\"modal.finish.restart\" @click=\"${this.reload}\"></fv-button>\n ${this.dealerLink ? html`<fv-button class=\"bordered\" i18n=\"modal.finish.find_dealer\" @click=\"${this.findDealer}\"></fv-button>`: \"\"}\n </div>\n `;\n }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./notice-accordion-item.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nimport { AccordionItemComponent } from \"../../standard/accordion\";\nimport { LoadingModalComponent } from \"../../standard/loading\";\nimport { NoticeModalComponent } from \"./notice-list.component\";\nimport { INoticeItem } from \"../interface\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\n\n\nexport interface IAccordionItem {\n header: string;\n image: string;\n}\n\n@customElement(\"fv-notice-accordion-item\")\nexport class NoticeAccordionItemComponent extends AccordionItemComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true })\n public selected = false;\n\n public item: INoticeItem;\n\n @query(\".checkbox\")\n private selectionCheckbox: CheckboxComponent | undefined;\n\n constructor() {\n super();\n this.item = { properties: [], id: \"\", manufacturer: \"\", program: \"\", selected: false };\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n if (this.selectionCheckbox)\n this.selectionCheckbox.onChange = (e, component) => {\n this.selected = component.checked;\n this.requestUpdate();\n this.updateComplete.then(()=>{\n this.dispatchEvent(new CustomEvent(\"onselectionchange\", {}));\n });\n };\n }\n\n async append(...nodes: any[]) {\n super.append(...nodes);\n StyleHelper.updateMaxTransitionHeight(this.content as HTMLElement);\n }\n\n appendChild<T extends Node>(node: T): T {\n this.append(node);\n return node as T;\n }\n\n\n private openPlanning(e: MouseEvent) {\n this.dispatchEvent(new CustomEvent(\"open-planning\", {\n detail: this.item,\n bubbles: true\n }));\n }\n\n private checkboxClicked(e: MouseEvent) {\n e.cancelBubble = true;\n e.stopPropagation();\n }\n\n protected build(): TemplateResult<1> {\n return html`\n <div class=\"header-content\">\n ${this.classList.contains(\"view-only\") ? \"\" :\n html`<div class = \"checkbox-content\" >\n <fv-checkbox class=\"checkbox\" .checked=\"${this.selected}\" @click=\"${this.checkboxClicked}\"></fv-checkbox>\n </div>`}\n <div class=\"image-content\">\n <img src=\"${this.item.image}\">\n </div>\n <div class=\"header-text\">\n <span>${this.item.programName}</span>\n </div>\n <div class=\"header-text\">\n <span>${this.item.price}</span>\n </div>\n ${this.classList.contains(\"view-only\") ? \"\" :\n html`<div class=\"open-planning\">\n ${StyleHelper.getVar(this.parentAccordion as HTMLElement, \"--open-planning-image\") ? html`<img @click=${this.openPlanning} src=\"${StyleHelper.getVar(this.parentAccordion as HTMLElement, \"--open-planning-image\")}\">` : html`<i class=\"icon fv-icon-folder\" @click=${this.openPlanning}></i>` }\n\n\n </div>`}\n\n </div>\n `;\n }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport style from \"./notice-carousel.component.sass?inline\";\nimport { property, customElement, query } from \"lit/decorators.js\";\nimport { INoticeItem, INoticeProperty } from \"./interface\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { LocalStorageService } from \"../../utils/local-storage.service\";\nimport { NoticeUtils } from \"./notice-utils\";\nimport { NoticeAccordionItemComponent } from \"./modal/notice-accordion-item.component\";\n\n@customElement(\"fv-notice-carousel\")\nexport class NoticeCarouselComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, attribute: \"hide-price\", reflect: true })\n private hidePrice = false;\n\n @property()\n public noticeValues: Array<{ title: string, properties: Array<string> }> = [];\n\n public items: Array<INoticeItem>;\n\n private itemIndex: number;\n private onlyCurrent = false;\n\n constructor() {\n super();\n this.itemIndex = 0;\n this.items = [];\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n if (this.noticeValues?.length > 0) this.updateItems();\n }\n\n public updateItems(onlyCurrent?: boolean) {\n this.onlyCurrent = !!onlyCurrent;\n this.items = [];\n this.itemIndex = 0;\n const sceneSettings: Array<any> = [];\n\n if (onlyCurrent) {\n sceneSettings.push(NoticeUtils.currentNoticeItem);\n }\n else {\n NoticeUtils.selectedNoticeItems.forEach((components)=>{\n if (components.listItem.selected) {\n sceneSettings.push(components.listItem.item);\n }\n });\n }\n sceneSettings.forEach((setting: any) => {\n let rawProperties: any;\n\n this.items.push({\n selected: false,\n price: setting.price,\n properties: (()=> {\n if (setting.properties && Array.isArray(setting.properties)) {\n rawProperties = setting.properties;\n return setting.properties;\n }\n rawProperties = NoticeUtils.getProperties(setting);\n return NoticeUtils.getPropertyValues(this.noticeValues, rawProperties);\n })(),\n image: setting.image,\n programName: setting.programName,\n program: setting.program,\n manufacturer: setting.manufacturer,\n id: setting.cloudId || setting.id,\n rawProperties: rawProperties\n });\n });\n this.requestUpdate();\n }\n\n public requestResetOfCurrentItem() {\n if (this.onlyCurrent) {\n NoticeUtils.currentNoticeItem = undefined;\n this.onlyCurrent = false;\n }\n }\n\n private renderItems() {\n if (this.items.length > 0) {\n const noticeItem = this.items[this.itemIndex];\n const element = document.createElement(\"div\");\n element.classList.add(\"item\");\n\n\n\n this.noticeValues.forEach((value) => {\n const titleDiv = Object.assign(document.createElement(\"div\"), { className: \"title-text\" });\n const textDiv = Object.assign(document.createElement(\"div\"), { className: \"value-text\" });\n\n if (noticeItem.rawProperties) {\n const propertyKeys = Object.keys(noticeItem.rawProperties);\n value.properties.forEach((v) => {\n const propertyRegex = new RegExp(\"\" + v);\n const propertiesKey = propertyKeys.find((key) => {\n return propertyRegex.test(key);\n });\n if (propertiesKey && noticeItem.rawProperties) {\n textDiv.append(Object.assign(document.createElement(\"span\"), { textContent: `${noticeItem.rawProperties[propertiesKey].title}: ${noticeItem.rawProperties[propertiesKey].name}` }));\n }\n });\n }\n\n const contentDiv = Object.assign(document.createElement(\"div\"), { className: \"content-div\" });\n contentDiv.append(titleDiv, textDiv);\n element.append(contentDiv);\n titleDiv.setAttribute(\"i18n\", value.title);\n });\n return html`${element}`;\n }\n return html``;\n }\n\n private renderAccordionItems() {\n if (!(this.noticeValues?.length > 0)) return \"\";\n const noticeAccordionItemList: Array<NoticeAccordionItemComponent> = [];\n this.items.forEach((noticeItem) => {\n const noticeAccordionItem = new NoticeAccordionItemComponent();\n noticeAccordionItem.classList.add(\"view-only\");\n noticeAccordionItem.item.price = noticeItem.price;\n noticeAccordionItem.item.properties = noticeItem.properties;\n noticeAccordionItem.item.image = noticeItem.image;\n noticeAccordionItem.item.programName = noticeItem.programName;\n noticeAccordionItem.item.program = noticeItem.program;\n noticeAccordionItem.item.manufacturer = noticeItem.manufacturer;\n noticeAccordionItem.item.id = noticeItem.id;\n noticeAccordionItemList.push(noticeAccordionItem);\n this.noticeValues.forEach((value) => {\n const titleDiv = Object.assign(document.createElement(\"div\"), { className: \"title-text\" });\n const textDiv = Object.assign(document.createElement(\"div\"), { className: \"value-text\" });\n\n if (noticeItem.rawProperties) {\n const propertyKeys = Object.keys(noticeItem.rawProperties);\n value.properties.forEach((v) => {\n const propertyRegex = new RegExp(\"\" + v);\n const propertiesKey = propertyKeys.find((key) => {\n return propertyRegex.test(key);\n });\n if (propertiesKey && noticeItem.rawProperties) {\n textDiv.append(Object.assign(document.createElement(\"span\"), { textContent: `${noticeItem.rawProperties[propertiesKey].title}: ${noticeItem.rawProperties[propertiesKey].name}` }));\n }\n });\n }\n\n const contentDiv = Object.assign(document.createElement(\"div\"), { className: \"content-div\" });\n contentDiv.append(titleDiv, textDiv);\n noticeAccordionItem.append(contentDiv);\n titleDiv.setAttribute(\"i18n\", value.title);\n });\n });\n if (this.items.length > 0) {\n return html`${\n noticeAccordionItemList\n }\n `;\n }\n return html``;\n }\n\n private lastNotice() {\n this.itemIndex--;\n if (this.itemIndex < 0) this.itemIndex = 0;\n this.requestUpdate();\n }\n\n private nextNotice() {\n this.itemIndex++;\n if (this.itemIndex >= this.items.length) this.itemIndex = this.items.length - 1;\n this.requestUpdate();\n }\n\n protected render(content: TemplateResult = html``) {\n const lastNoticeClass = { \"hidden\": this.itemIndex === 0 };\n const nextNoticeClass = { \"hidden\": this.itemIndex === this.items.length - 1 };\n return html`\n <div class=\"carousel-content only-desktop\">\n <div class=\"last-notice\" @click=\"${this.lastNotice}\" part=\"last-notice-image\">\n <svg class=\"${classMap(lastNoticeClass)}\" width=\"20\" height=\"65\" viewBox=\"0 0 20 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M19.2378 1L1.00009 32.5L19.2378 64\" stroke=\"#777777\" stroke-width=\"0.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div class=\"notice-view\">\n <div class=\"notice-image\">\n <img src=\"${this.items[this.itemIndex]?.image}\"/>\n </div>\n <div class=\"notice-content\">\n <div class=\"notice-title\">\n ${this.items[this.itemIndex]?.programName}\n </div>\n <div class=\"notice-properties\">\n ${this.renderItems()}\n ${this.hidePrice ? html`` : html`\n <div class=\"item\">\n <div class=\"content-div\">\n <div class=\"title-text\">Preis:</div>\n <div class=\"value-text\">${this.items[this.itemIndex]?.price} (UVP)</div>\n </div>\n </div>\n `}\n </div>\n </div>\n </div>\n <div class=\"next-notice\" @click=\"${this.nextNotice}\" part=\"next-notice-image\">\n <svg class=\"${classMap(nextNoticeClass)}\" width=\"20\" height=\"65\" viewBox=\"0 0 20 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1 64L19.2377 32.5L0.999997 1\" stroke=\"#777777\" stroke-width=\"0.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </div>\n <div class=\"accordion-content only-mobile\">\n <fv-accordion>${this.renderAccordionItems()}</fv-accordion>\n </div>\n `;\n }\n}\n","class LocalStorageServiceClass {\n private readonly _prefix: string = \"LSS_\";\n\n update(key_: string, data_: {[key: string]: unknown} | Array<unknown>) {\n if (key_.length > 0) {\n const jsonString = JSON.stringify(data_);\n const base64String = btoa(jsonString);\n localStorage.setItem(this._prefix + key_, base64String);\n }\n return data_;\n }\n\n get(key_: string) {\n if (key_.length > 0) {\n const base64String = localStorage.getItem(this._prefix + key_);\n if (base64String) {\n const jsonString = atob(base64String);\n try {\n return JSON.parse(jsonString);\n }\n catch {\n return null;\n }\n }\n }\n }\n\n remove(key_: string) {\n localStorage.removeItem(this._prefix + key_);\n }\n}\nexport const LocalStorageService = new LocalStorageServiceClass();\n","import \"../../standard/checkbox/checkbox.component\";\nimport { INoticeItem } from \"../interface\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nexport class NoticeTableRowComponent extends HTMLTableRowElement {\n public item: INoticeItem;\n public hidePrice = false;\n private selected_ = false;\n public set selected (val: boolean) {\n this.selected_ = val;\n if (this.selectionCheckbox) this.selectionCheckbox.checked = this.selected_;\n }\n\n public get selected (): boolean {\n return this.selected_;\n }\n\n private selectionCheckbox?: CheckboxComponent | null;\n\n constructor() {\n super();\n this.item = { properties: [], id: \"\", selected: false, program: \"\", manufacturer: \"\" };\n }\n\n connectedCallback() {\n this.render();\n this.selectionCheckbox = this.querySelector(\".checkbox\");\n if (this.selectionCheckbox) {\n this.selectionCheckbox.checked = this.selected_;\n this.selectionCheckbox.onChange = (e, component) => {\n this.selected_ = component.checked;\n this.dispatchEvent(new CustomEvent(\"onselectionchange\", {}));\n };\n }\n this.querySelector(\".open-planning\")?.children[0]?.addEventListener(\"click\", ()=>{\n this.openPlanning();\n });\n }\n\n private renderItems() {\n return `${\n this.item.properties.map((item) => {\n const element = document.createElement(\"td\");\n element.classList.add(\"item\");\n if (item) {\n for (const value of item.propertyValues) {\n if (value) {\n const propertyValue = element.appendChild(Object.assign(document.createElement(\"div\"), {\n textContent: `${value.title}: ${value.name}`\n }));\n propertyValue.classList.add(\"item-value\");\n }\n }\n }\n\n return element.outerHTML;\n }).join(\"\")\n }\n `;\n }\n\n private openPlanning() {\n this.dispatchEvent(new CustomEvent(\"open-planning\", {\n detail: this.item,\n bubbles: true\n }));\n }\n\n private render() {\n this.innerHTML = `\n <td>\n <fv-checkbox class=\"checkbox\" checked=\"${this.selected_}\"></fv-checkbox>\n </td>\n <td class=\"model\">\n <div class=\"model-image\">\n <img src=\"${this.item.image}\">\n </div>\n <div class=\"model-text\">${this.item.programName}</div>\n </td>\n ${ this.renderItems() }\n ${this.hidePrice ? `` : `\n <td class=\"price\">${this.item.price}</td>\n `}\n <td class=\"open-planning\">\n ${StyleHelper.getVar(this.parentElement as HTMLElement, \"--open-planning-image\") ? \n `<img src=\"${StyleHelper.getVar(this.parentElement as HTMLElement, \"--open-planning-image\")}\">` :\n \"<i class=\\\"icon fv-icon-folder\\\"></i>\" }\n </td>\n `;\n }\n}\ncustomElements.define( \"table-row\", NoticeTableRowComponent, { extends: \"tr\" } );\n","import {ConfigurationService, RequestService} from \"@dh-software/webui-api\";\n\nclass NoticeStorageServiceClass {\n private readonly _prefix: string = \"SSS_\";\n private _noticeKey = \"\";\n\n private async createNoticeKey() {\n if (this._noticeKey) return;\n const queryParameters: string = (await ConfigurationService.Configuration)[\"query_parameters\"] as string;\n if (queryParameters) {\n const url = new URL(window.location.href);\n queryParameters.split(\",\").forEach((key) => {\n if (url.searchParams.has(key)) {\n if (this._noticeKey.length > 0) {\n this._noticeKey += \"_\";\n }\n this._noticeKey += url.searchParams.get(key);\n }\n });\n }\n }\n\n has() {\n return !!this._noticeKey;\n }\n\n async set(data_: { [key: string]: unknown }) {\n await this.createNoticeKey();\n if (this._noticeKey.length > 0) {\n const jsonString = JSON.stringify(data_);\n const url = new URL(window.location.href);\n const token = url.searchParams.get(\"token\");\n if (!token) return null;\n\n const noticePosition = {\n noticeKey: this._noticeKey,\n token: token,\n noticePositionData: btoa(jsonString),\n cloudId: data_.cloudId as string\n };\n await RequestService.post(RequestService.setQuery(\"/notice-list\") + \"¬iceKey=\" + this._noticeKey, noticePosition);\n }\n return data_;\n }\n\n async get(): Promise<Array<{ [key: string]: never } | never> | null> {\n await this.createNoticeKey();\n if (this._noticeKey.length > 0) {\n const response: Array<never> = await RequestService.fetchJSON(RequestService.setQuery(\"/notice-list\") + \"¬iceKey=\" + this._noticeKey) as Array<never>;\n const noticePositions: Array<{ [key: string]: never } | never> = [];\n\n if (response) {\n response.forEach((noticePosition: { [key: string]: never }) => {\n if (noticePosition && noticePosition.noticePositionData) {\n const jsonString = atob(noticePosition.noticePositionData);\n try {\n const data: { [key: string]: never } = JSON.parse(jsonString) as never;\n data.id = noticePosition._id;\n noticePositions.push(data);\n } catch {\n //\n }\n }\n });\n }\n\n if (noticePositions.length > 0) {\n return noticePositions;\n } else {\n return null;\n }\n }\n return null;\n }\n\n async remove(id_: string) {\n await this.createNoticeKey();\n await RequestService.fetch(RequestService.setQuery(\"/notice-list/\" + id_) + \"¬iceKey=\" + this._noticeKey, {\n method: \"DELETE\"\n });\n }\n}\n\nexport const NoticeStorageService = new NoticeStorageServiceClass();\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport style from \"./notice-list.component.sass?inline\";\nimport { BaseMaskElement } from \"../../standard/base/mask.component\";\nimport { property, customElement, query, queryAll, state } from \"lit/decorators.js\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { LocalStorageService } from \"../../../utils/local-storage.service\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nimport { LoadingModalComponent } from \"../../standard/loading\";\nimport { AccordionComponent } from \"../../standard/accordion\";\nimport { NoticeAccordionItemComponent } from \"./notice-accordion-item.component\";\nimport { INoticeItem } from \"../interface\";\nimport { NoticeUtils } from \"../notice-utils\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { NoticeTableRowComponent } from \"./notice-table-row.component\";\nimport { NoticeStorageService } from \"../../../utils/notice-storage.service\";\nimport { CloudIdService } from \"../../../utils/cloud-id.service\";\nimport { ManuProgService } from \"../../../utils/manu-prog.service\";\nimport {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\n\n\ndeclare global {\n interface ComponentStates {\n \"notice-list-mask:save-current-scene-settings\": any;\n }\n}\n\n\n@customElement(\"fv-notice-list-mask\")\nexport class NoticeModalComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private noticeDomItems: Array<{ listItem: NoticeTableRowComponent, accordionItem: NoticeAccordionItemComponent }> = [];\n\n @state()\n public mask = \"notice-list-modal\";\n\n @property()\n public noticeValues: Array<{ title: string, properties: Array<string> }> = [];\n\n @property({ type: Boolean, attribute: \"hide-price\", reflect: true })\n private hidePrice = false;\n\n @queryAll(\".select-all\")\n private selectAllCheckboxes: Array<CheckboxComponent> | undefined;\n\n @query(\".mobile-accordion\")\n private accordionComponent: AccordionComponent | undefined;\n\n @query(\"tbody\")\n private tableBody?: HTMLTableSectionElement;\n\n @query(\"#price-cell\")\n private priceCell?: HTMLTableCellElement;\n\n private allSelected = false;\n private noticeCount = 0;\n private maxNoticeCount = 10;\n\n stateHandlers: ComponentStateHandlerMap = {\n \"notice-list-mask:save-current-scene-settings\": async (e: EventHandlerEventData) => {\n let loadingModal: LoadingModalComponent | null = null;\n this.Modal?.setLoading(true);\n if ((await CommunicationMessageService.getPlannedArticles()).length > 0) {\n const urlParams = new URL(window.location.href);\n const configurationID = urlParams.searchParams.get(\"a\");\n let storageKey = \"currentSceneSettings_\" + configurationID;\n if (e.onlyCurrent) {\n storageKey = \"currentSceneSettings\";\n loadingModal = document.querySelector(\"fv-loading-modal\");\n if (loadingModal) {\n loadingModal.show(false, true);\n }\n }\n const noticeData = await NoticeStorageService.get();\n\n\n const currentSceneSettings: Array<{\n cloudId: string,\n properties: unknown\n }> = NoticeStorageService.has() ? noticeData || [] : LocalStorageService.get(storageKey) || [];\n\n await WebViewerService.IsAppReady;\n const properties = await CommunicationMessageService.getCurrentProgProperties({\n manufacturer: window.g_article.manu,\n useRelevant: true\n });\n const cloudID = await CloudIdService.createCloudId();\n if (cloudID) {\n const mimeType = \"image/png\";\n const imageData = await CommunicationMessageService.takeSnap(300, 300, mimeType, 0.9, true);\n const price = await CommunicationMessageService.getAppConnectionData() as any;\n const plannedArticle = await CommunicationMessageService.getPlannedArticles();\n const sceneSettings = {\n price: price.totalPrice,\n image: `data:${mimeType};base64,${imageData}`,\n cloudId: cloudID,\n manufacturer: price.Articles[0]?.DH_Manu,\n program: price.Articles[0]?.DH_Prog,\n programName: plannedArticle[0]?.progName,\n manufacturerName: price.Articles[0].Manu,\n properties: properties\n };\n NoticeUtils.currentNoticeItem = Object.assign(sceneSettings);\n currentSceneSettings.push(sceneSettings);\n if (!e.onlyCurrent) {\n if (NoticeStorageService.has()) {\n await NoticeStorageService.set(sceneSettings);\n }\n this.createItem(sceneSettings);\n }\n }\n\n if (!NoticeStorageService.has()) {\n for (let i = currentSceneSettings.length - 1; i >= 0; i--) {\n if (!currentSceneSettings[i].cloudId) {\n currentSceneSettings.splice(i, 1);\n }\n }\n if (currentSceneSettings.length > this.maxNoticeCount) {\n currentSceneSettings.splice(0, currentSceneSettings.length - this.maxNoticeCount);\n }\n LocalStorageService.update(storageKey, currentSceneSettings);\n }\n this.noticeCount = currentSceneSettings.length;\n if (loadingModal) {\n loadingModal.hide(false, true);\n }\n this.requestUpdate(\"noticeCount\");\n }\n this.shadowRoot?.dispatchEvent(new Event(\"contentChanged\"));\n this.Modal?.setLoading();\n }\n };\n\n constructor() {\n super();\n LocalStorageService.remove(\"currentSceneSettings\");\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n this.Modal?.setLoading(true);\n this.shadowRoot?.addEventListener(\"headerChanged\", (ev) => {\n const headers = this.querySelectorAll(\"[slot='header']\");\n const oldHeaders = this.shadowRoot?.querySelectorAll(\"[slot='header']\");\n oldHeaders?.forEach((element)=>{\n element.remove();\n });\n if (this.priceCell) {\n headers.forEach((element) => {\n this.priceCell!.parentElement?.insertBefore(element, this.priceCell!);\n });\n }\n\n });\n this.shadowRoot?.addEventListener(\"contentChanged\", (ev) => {\n const contents = this.querySelectorAll(\"[slot='content']\");\n if (this.priceCell) {\n contents.forEach((element) => {\n this.tableBody?.append(element);\n });\n }\n\n });\n if (this.selectAllCheckboxes) {\n this.selectAllCheckboxes.forEach((selectAllCheckbox) => {\n selectAllCheckbox.onChange = this.selectAll;\n });\n }\n\n const urlParams = new URL(window.location.href);\n const configurationID = urlParams.searchParams.get(\"a\");\n const noticeData = await NoticeStorageService.get();\n const currentSceneSettings: Array<{ cloudId: string, properties: unknown }> = NoticeStorageService.has() ? noticeData || [] : LocalStorageService.get(\"currentSceneSettings_\" + configurationID) || [];\n this.noticeDomItems = [];\n NoticeUtils.selectedNoticeItems = this.noticeDomItems;\n currentSceneSettings.slice().reverse().forEach((currentProperties) => {\n this.createItem(currentProperties);\n });\n this.shadowRoot?.dispatchEvent(new Event(\"contentChanged\"));\n this.noticeCount = currentSceneSettings.length;\n this.requestUpdate(\"noticeCount\");\n this.Modal?.setLoading(false);\n }\n\n private updateSelections(isAccordion: boolean) {\n for (let i = 0; i < this.noticeDomItems.length; i++) {\n if (isAccordion) {\n this.noticeDomItems[i].listItem.selected = this.noticeDomItems[i].accordionItem.selected;\n }\n else {\n this.noticeDomItems[i].accordionItem.selected = this.noticeDomItems[i].listItem.selected;\n }\n }\n }\n\n private createAccordionItem(currentProperties: { [key: string]: never }, properties: {[p: string]: {name: string, title: string}}) {\n const noticeAccordionItem = new NoticeAccordionItemComponent();\n noticeAccordionItem.selected = this.allSelected;\n noticeAccordionItem.item.selected = this.allSelected;\n noticeAccordionItem.item.price = currentProperties.price;\n\n\n noticeAccordionItem.item.properties = NoticeUtils.getPropertyValues(this.noticeValues, properties);\n noticeAccordionItem.item.image = currentProperties.image;\n noticeAccordionItem.item.programName = currentProperties.programName;\n noticeAccordionItem.item.program = currentProperties.program;\n noticeAccordionItem.item.manufacturer = currentProperties.manufacturer;\n noticeAccordionItem.item.id = currentProperties.cloudId;\n noticeAccordionItem.item.rawProperties = Object.assign(properties);\n noticeAccordionItem.addEventListener(\"open-planning\", (e: CustomEventInit) => {\n this.openPlanning(e.detail);\n });\n noticeAccordionItem.addEventListener(\"onselectionchange\", (e) => {\n this.allSelected = this.noticeDomItems.every((item) => {\n return item.accordionItem.selected;\n });\n this.updateSelections(true);\n this.requestUpdate();\n });\n\n const propertiesKeys = Object.keys(properties);\n this.noticeValues.forEach((value) => {\n const titleDiv = Object.assign(document.createElement(\"div\"), { className: \"title-text\" });\n const textDiv = Object.assign(document.createElement(\"div\"), { className: \"value-text\" });\n value.properties.forEach((v) => {\n const propertyRegex = new RegExp(\"\" + v);\n const propertiesKey = propertiesKeys.find((key) => {\n return propertyRegex.test(key);\n });\n if (propertiesKey) {\n textDiv.append(Object.assign(document.createElement(\"span\"), { textContent: `${properties[propertiesKey].title}: ${properties[propertiesKey].name}` }));\n }\n });\n const contentDiv = Object.assign(document.createElement(\"div\"), { className: \"content-div\" });\n contentDiv.append(titleDiv, textDiv);\n noticeAccordionItem.append(contentDiv);\n titleDiv.setAttribute(\"i18n\", value.title);\n });\n this.accordionComponent?.append(noticeAccordionItem);\n return noticeAccordionItem;\n }\n\n private createListItem(currentProperties: { [key: string]: never }, properties: {[p: string]: {name:string, title: string}}) {\n const noticeItem = new NoticeTableRowComponent();\n noticeItem.selected = this.allSelected;\n noticeItem.item.price = currentProperties.price;\n noticeItem.hidePrice = this.hidePrice;\n\n noticeItem.item.properties = NoticeUtils.getPropertyValues(this.noticeValues, properties);\n noticeItem.item.image = currentProperties.image;\n noticeItem.item.programName = currentProperties.programName;\n noticeItem.item.program = currentProperties.program;\n noticeItem.item.manufacturer = currentProperties.manufacturer;\n noticeItem.item.id = currentProperties.cloudId;\n noticeItem.slot = \"content\";\n noticeItem.addEventListener(\"open-planning\", (e: CustomEventInit) => {\n this.openPlanning(e.detail);\n });\n noticeItem.addEventListener(\"onselectionchange\", (e) => {\n this.allSelected = this.noticeDomItems.every((item) => {\n return item.listItem.selected;\n });\n this.updateSelections(false);\n this.requestUpdate();\n });\n this.append(noticeItem);\n return noticeItem;\n }\n\n private createItem(currentProperties: any) {\n const properties = NoticeUtils.getProperties(currentProperties);\n const item: { accordionItem: NoticeAccordionItemComponent, listItem: NoticeTableRowComponent } = {\n accordionItem: this.createAccordionItem(currentProperties, properties),\n listItem: this.createListItem(currentProperties, properties)\n };\n\n this.noticeDomItems.push(item);\n }\n\n private async openPlanning(item: INoticeItem) {\n const loadingModal: LoadingModalComponent = document.querySelector(\"fv-loading-modal\") as LoadingModalComponent;\n loadingModal?.show();\n this.hide(true);\n await ManuProgService.setManuProg(item.manufacturer, item.manufacturer, item.program);\n await CommunicationMessageService.openCloudId(item.id);\n loadingModal?.hide(false, true);\n }\n\n private selectAll = (e: Event, component: CheckboxComponent) => {\n this.allSelected = component.checked;\n this.noticeDomItems.forEach((item: any ) => {\n item.listItem.selected = this.allSelected;\n item.accordionItem.selected = this.allSelected;\n });\n this.requestUpdate();\n }\n\n public async show() {\n this.noticeValues.forEach((value) => {\n const theader = document.createElement(\"th\");\n theader.slot = \"header\";\n this.append(theader);\n theader.setAttribute(\"i18n\", value.title);\n });\n this.shadowRoot?.dispatchEvent(new Event(\"headerChanged\"));\n super.show();\n }\n\n private async removeNotice() {\n const urlParams = new URL(window.location.href);\n const configurationID = urlParams.searchParams.get(\"a\");\n const noticeData = await NoticeStorageService.get();\n const currentSceneSettings: Array<{ cloudId: string, id: string, properties: unknown }> = NoticeStorageService.has() ? noticeData || [] : LocalStorageService.get(\"currentSceneSettings_\" + configurationID) || [];\n for (let i = this.noticeDomItems.length - 1; i >= 0; i--) {\n const item: {accordionItem: NoticeAccordionItemComponent, listItem: NoticeTableRowComponent} = this.noticeDomItems[i];\n if (item.listItem.selected) {\n const index = currentSceneSettings.findIndex((sceneSetting) => {\n return sceneSetting.cloudId === item.listItem.item.id;\n });\n\n if (index !== -1) {\n if (NoticeStorageService.has()) {\n await NoticeStorageService.remove(currentSceneSettings[index].id);\n }\n currentSceneSettings.splice(index, 1);\n }\n item.listItem.parentElement?.removeChild(item.listItem);\n this.accordionComponent?.removeChild(item.accordionItem);\n this.noticeDomItems.splice(i, 1);\n }\n }\n\n this.noticeCount = currentSceneSettings.length;\n if (!NoticeStorageService.has()) {\n LocalStorageService.update(\"currentSceneSettings_\" + configurationID, currentSceneSettings);\n }\n this.requestUpdate(\"noticeCount\");\n }\n\n protected build(content: TemplateResult = html``) {\n const noticeEmpty = { \"notice-empty\": true, hidden: this.noticeCount > 0 };\n const noticeAccordion = { \"mobile-accordion\": true, hidden: this.noticeCount === 0 };\n return html`\n<!-- <fv-loading class=\"loading\"></fv-loading>-->\n <div class=\"notice-header\">\n <span>\n <span i18n=\"modal.notice.head-text\"></span>\n ${ NoticeStorageService.has() ? html`(<span class=\"notice-count\">${this.noticeCount}</span>)` : html`\n(<span class=\"notice-count\">${this.noticeCount}</span>/<span\n class=\"max-notice\">${this.maxNoticeCount}</span>)\n`}\n </span>\n </div>\n <div class=\"notice-list\">\n <fv-checkbox class=\"select-all host-mobile\" i18n=\"modal.notice.select_all\" .checked=\"${this.allSelected}\"></fv-checkbox>\n <fv-accordion style=\"--open-planning-image: ${StyleHelper.getVar(this, \"--open-planning-image\") || \"\"}\" class=\"${classMap(noticeAccordion)}\"></fv-accordion>\n <table class=\"host-desktop\">\n <thead>\n <tr>\n <th>\n <fv-checkbox class=\"select-all\" .checked=\"${this.allSelected}\"></fv-checkbox>\n </th>\n <th i18n=\"modal.notice.header.model\" id=\"model-cell\"></th>\n <th i18n=\"modal.notice.header.price\" id=\"price-cell\"></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n\n </tbody>\n </table>\n <div class=\"${classMap(noticeEmpty)}\">\n <span i18n=\"modal.notice.text.empty\"></span>\n </div>\n </div>\n <div class=\"notice-footer\">\n <div class=\"text-line\">\n <div class=\"left-text\">${StyleHelper.getVar(this, \"--open-planning-image\") ? html`<img src=\"${StyleHelper.getVar(this, \"--open-planning-image\")}\">` : html`<i class=\"icon fv-icon-folder\"></i>`}<span i18n=\"modal.notice.text.left\"></span></div>\n <div class=\"right-text host-desktop\" i18n=\"modal.notice.text.right\"></div>\n <div class=\"right-text host-mobile\" i18n=\"modal.notice.header.price\"></div>\n </div>\n <fv-separator class=\"horizontal\"></fv-separator>\n <div class=\"bottom-line\">\n <fv-checkbox class=\"select-all host-desktop\" i18n=\"modal.notice.select_all\" .checked=\"${this.allSelected}\"></fv-checkbox>\n <div class=\"notice-buttons\">\n <fv-button part=\"remove_button\" @click=\"${this.removeNotice}\" i18n=\"modal.notice.remove_button\" .disabled=\"${this.noticeCount === 0}\"></fv-button>\n <fv-button part=\"submit_button\" i18n=\"modal.notice.submit\" .disabled=\"${this.noticeCount === 0}\"></fv-button>\n </div>\n </div>\n </div>\n `;\n }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport style from \"./notice-list-item.component.sass?inline\";\nimport { property, customElement, query } from \"lit/decorators.js\";\nimport \"../../standard/checkbox/checkbox.component\";\nimport { INoticeItem } from \"../interface\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\n\n@customElement(\"fv-notice-list-item\")\nexport class NoticeListItemComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n public item: INoticeItem;\n\n @property({ type: Boolean, reflect: true })\n public selected = false;\n\n @query(\".checkbox\")\n private selectionCheckbox: CheckboxComponent | undefined;\n\n constructor() {\n super();\n this.item = { properties: [], id: \"\", selected: false, program: \"\", manufacturer: \"\" };\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n if (this.selectionCheckbox)\n this.selectionCheckbox.onChange = (e, component) => {\n this.selected = component.checked;\n this.requestUpdate();\n this.updateComplete.then(()=>{\n this.dispatchEvent(new CustomEvent(\"onselectionchange\", {}));\n });\n };\n }\n\n private renderItems() {\n return html`${\n this.item.properties.map((item) => {\n const element = document.createElement(\"div\");\n element.classList.add(\"item\");\n if (item) {\n for (const value of item.propertyValues) {\n if (value) {\n const propertyValue = element.appendChild(Object.assign(document.createElement(\"div\"), { \n textContent: `${value.title}: ${value.name}`\n }));\n propertyValue.classList.add(\"item-value\");\n }\n }\n }\n\n return element;\n })\n }\n `;\n }\n\n private openPlanning() {\n this.dispatchEvent(new CustomEvent(\"open-planning\", {\n detail: this.item,\n bubbles: true\n }));\n }\n\n\n protected render(content: TemplateResult = html``) {\n return html`\n <div class=\"item-content\">\n <div class=\"item-checkbox\">\n <fv-checkbox class=\"checkbox\" .checked=\"${this.selected}\"></fv-checkbox>\n </div>\n <div class=\"model\">\n <div class=\"model-image\">\n <img src=\"${this.item.image}\">\n </div>\n <div class=\"model-text\">${this.item.programName}</div>\n </div>\n <div class=\"items\">${ this.renderItems() }</div>\n <div class=\"price\">${this.item.price}</div>\n <div class=\"open-planning\">\n ${StyleHelper.getVar(this.parentElement as HTMLElement, \"--open-planning-image\") ? html`<img src=\"${StyleHelper.getVar(this.parentElement as HTMLElement, \"--open-planning-image\")}\" @click=${this.openPlanning}>` : html`<i class=\"icon fv-icon-folder\" @click=${this.openPlanning}></i>` }\n </div>\n </div>\n `;\n }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport style from \"./request-modal.component.sass?inline\";\nimport { BaseMaskElement } from \"../../standard/base/mask.component\";\nimport { property, customElement, query, queryAll, state } from \"lit/decorators.js\";\nimport \"../../notice/notice-carousel.components\";\nimport { NoticeCarouselComponent } from \"../../notice\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\nimport { ButtonComponent } from \"../../standard/button\";\nimport { InputComponent } from \"../../standard/input\";\nimport { PropertyValues } from \"lit/development\";\nimport {MailerService, RequestService} from \"@dh-software/webui-api\";\nimport {ConstructionService} from \"@dh-software/webui-configuration-parser\";\n\n@customElement(\"fv-request-modal-mask\")\nexport class RequestModalComponent extends BaseMaskElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\"fv-notice-carousel\")\n private noticeCarousel: NoticeCarouselComponent | undefined;\n\n @query(\"#policyCheckbox\")\n private policyCheckbox: CheckboxComponent | undefined;\n\n @queryAll(\".submitButton\")\n private submitButtons: Array<ButtonComponent> | undefined;\n\n\n @query(\"#nameInput\")\n private nameInput: InputComponent | undefined;\n @query(\"#surnameInput\")\n private surnameInput: InputComponent | undefined\n @query(\"#streetInput\")\n private streetInput: InputComponent | undefined\n @query(\"#townInput\")\n private townInput: InputComponent | undefined\n @query(\"#postCodeInput\")\n private postCodeInput: InputComponent | undefined\n @query(\"#emailInput\")\n private emailInput: InputComponent | undefined\n\n @property({ type: String })\n public privacyPolicy = \"#\";\n @property({ type: String })\n private name = \"\";\n @property({ type: String })\n private surname = \"\";\n @property({ type: String })\n private street = \"\";\n @property({ type: String })\n private town = \"\";\n @property({ type: String })\n private postCode = \"\";\n @property({ type: String })\n private email = \"\";\n\n @property({ type: Boolean })\n private policySelected = false;\n\n @property({ type: Boolean, attribute: \"prevent-notice-carousel\", reflect: true })\n private preventNoticeCarousel = false;\n\n @property({ type: Boolean, attribute: \"hide-notice-carousel-price\", reflect: true })\n private hideNoticeCarouselPrice = false;\n\n @property()\n public noticeValues: Array<{ title: string, properties: Array<string> }> = [];\n\n @state()\n public mask = \"customer-request-modal\";\n\n @property()\n public templateName = \"\";\n\n constructor() {\n super();\n }\n\n show() {\n super.show();\n if (this.noticeCarousel && this.noticeValues && this.noticeValues.length > 0) {\n this.noticeCarousel.noticeValues = this.noticeValues;\n this.noticeCarousel.updateItems(this.maskData.onlyCurrent as boolean);\n }\n }\n\n hide(closeModal = false) {\n super.hide(closeModal);\n this.noticeCarousel?.requestResetOfCurrentItem();\n }\n\n private async onSubmit() {\n await RequestService.Initialized;\n const parameters = this.noticeCarousel?.items?.map((item) => {\n return { id: item.id, image: item.image, price: item.price, programName: item.programName };\n });\n\n const customMailService = ConstructionService.CustomMailService || undefined;\n // const price = this.noticeCarousel?.items[0].price;\n // const image = this.noticeCarousel?.items[0].image;\n parameters?.forEach((param) => {\n const values = [\n {\n key: \"PRICE\", value: param.price\n },\n {\n key: \"CODE\", value: param.id\n },\n {\n key: \"name\", value: this.name\n },\n {\n key: \"surname\", value: this.surname\n },\n {\n key: \"email\", value: this.email\n },\n {\n key: \"street\", value: this.street\n },\n {\n key: \"town\", value: this.town\n },\n {\n key: \"postCode\", value: this.postCode\n },\n {\n key: \"PNG_STRING\", value: param.image\n },\n {\n key: \"category\", value: window.selectedProgram ? window.selectedProgram.category : window.g_article.level1\n },\n {\n key: \"model\", value: window.selectedProgram ? window.selectedProgram.level : window.g_article.level2 ? window.g_article.level2 : window.g_article.level1\n }\n ];\n MailerService.sendConfiguredMail({\n name: this.templateName,\n values: values,\n cloudIds: [param.id],\n customMailService: customMailService ? customMailService : undefined,\n to: this.email,\n buyingGroup: window.g_configuration.furnplan_article_url_configurator_verband,\n language: \"\"\n });\n });\n\n this.noticeCarousel?.requestResetOfCurrentItem();\n }\n\n\n private onPolicyCheckboxClicked(e: MouseEvent) {\n e.cancelBubble = true;\n e.stopPropagation();\n }\n\n private valuesChanged(e: unknown) {\n this.name = this.nameInput?.value || \"\";\n this.surname = this.surnameInput?.value || \"\";\n this.email = this.emailInput?.value || \"\";\n this.street = this.streetInput?.value || \"\";\n this.town = this.townInput?.value || \"\";\n this.postCode = this.postCodeInput?.value || \"\";\n if (this.submitButtons && this.submitButtons.length > 0) {\n this.submitButtons.forEach((submitButton) => {\n submitButton.disabled = !this.validate() || !this.policyCheckbox?.checked;\n });\n }\n this.requestUpdate();\n }\n\n private validate() {\n if (this.name && this.surname && this.email && /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(this.email)) {\n return true;\n }\n return false;\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n if (this.policyCheckbox)\n this.policyCheckbox.onChange = (e, component) => {\n if (this.submitButtons && this.submitButtons.length > 0) {\n this.submitButtons.forEach((submitButton) => {\n submitButton.disabled = !this.validate() || !this.policyCheckbox?.checked;\n });\n }\n this.requestUpdate();\n };\n }\n\n protected build(content: TemplateResult = html``) {\n return html`\n <div class=\"content\">\n\n <div class=\"request-header\">\n <span>\n <span i18n=\"fv.modal.finish.header\">Ihre Wunschplanung</span>\n </span>\n </div>\n <div class=\"request-content\">\n <div class=\"request-form\">\n <label i18n=\"fv.modal.finish.form.title\">Konfiguration und Artikelliste per E-Mail\n senden</label>\n <div class=\"request-form-content\">\n <div class=\"row\">\n <div class=\"column\">\n <label>Name*</label>\n <fv-input id=\"nameInput\" @change=\"${this.valuesChanged}\"\n .value=\"${this.name}\"></fv-input>\n </div>\n <div class=\"column\">\n <label>Vorname*</label>\n <fv-input id=\"surnameInput\" @change=\"${this.valuesChanged}\"\n .value=\"${this.surname}\"></fv-input>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"column\">\n <label>E-Mail*</label>\n <fv-input id=\"emailInput\" @change=\"${this.valuesChanged}\"\n .value=\"${this.email}\"></fv-input>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"column\">\n <label>Straße</label>\n <fv-input id=\"streetInput\" @change=\"${this.valuesChanged}\"\n .value=\"${this.street}\"></fv-input>\n </div>\n </div>\n <div class=\"row inline\">\n <div class=\"column\">\n <label>PLZ</label>\n <fv-input id=\"postCodeInput\" @change=\"${this.valuesChanged}\"\n .value=\"${this.postCode}\"></fv-input>\n </div>\n <div class=\"column\">\n <label>Ort</label>\n <fv-input id=\"townInput\" @change=\"${this.valuesChanged}\"\n .value=\"${this.town}\"></fv-input>\n </div>\n </div>\n </div>\n <div class=\"bottom-row\">\n <fv-checkbox id=\"policyCheckbox\" .checked=\"${this.policySelected}\"\n @click=\"${this.onPolicyCheckboxClicked}\">\n <span i18n=\"fv.modal.finish.checkbox.prefix\">Ich habe die </span><a\n i18n=\"fv.modal.finish.checkbox.policy\" href=\"${this.privacyPolicy}\" target=\"_blank\">Datenschutzerklärung</a><span\n i18n=\"fv.modal.finish.checkbox.suffix\"> gelesen und stimme dieser zu.</span>\n </fv-checkbox>\n <fv-button part=\"submit_button\" class=\"submitButton bordered only-desktop\" disabled\n @click=\"${this.onSubmit}\"><i\n class=\"fv-icon-arrow mirrored\"></i><span i18n=\"fv.modal.finish.button\">Senden</span>\n </fv-button>\n </div>\n\n </div>\n ${this.preventNoticeCarousel ? html`` : html`\n <div class=\"request-carousel\">\n <fv-notice-carousel ?hide-price=\"${this.hideNoticeCarouselPrice}\"></fv-notice-carousel>\n </div>\n `}\n </div>\n </div>\n <div class=\"only-mobile footer\">\n <fv-button part=\"submit_button\" class=\"submitButton bordered\" disabled @click=\"${this.onSubmit}\"><i\n class=\"fv-icon-arrow mirrored\"></i><span i18n=\"fv.modal.finish.button\">Senden</span>\n </fv-button>\n </div>\n `;\n }\n}\n","import { css, unsafeCSS, html, TemplateResult } from \"lit\";\nimport style from \"./cloud-id-display.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-cloud-id-display\")\nexport class CloudIdDisplayComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private cloudid = \"\";\n private loading = true;\n\n @property({ type: Boolean, reflect: true, attribute: \"custom\" })\n public custom = false;\n\n constructor() {\n super();\n\n console.warn(\"deprecation warning! Please replace fv-cloud-id-display width fv-cloud-id!!\");\n\n this.addHideStateUpdatedEventListener((value: boolean)=>{\n if (value == false) {\n this.showCloudId();\n }\n });\n }\n\n private printPromise: Promise<{ cloudId: string }> | undefined = undefined;\n private async showCloudId() {\n if (this.printPromise == undefined) {\n this.showLoader();\n\n this.printPromise = this.custom ? CommunicationMessageService.printCustomPDF() as Promise<{ cloudId: string }> : CommunicationMessageService.printPDF() as Promise<{ cloudId: string }>;\n\n const pdf = await this.printPromise;//this.custom ? await CommunicationMessageService.printCustomPDF() as { cloudId: string } : await CommunicationMessageService.printPDF() as { cloudId: string };\n this.cloudid = pdf.cloudId ? pdf.cloudId : \"\";\n this.loading = false;\n this.requestUpdate();\n\n this.printPromise = undefined;\n }\n }\n private async showLoader() {\n this.loading = true;\n this.cloudid = \"\";\n this.requestUpdate();\n }\n\n render(): TemplateResult<1> {\n return html`\n <div class=\"container\">\n <div class=\"message\" i18n=\"cloud.id.display.component.text\"></div>\n ${this.cloudid && this.cloudid.length > 0 ? html`<div class=\"cloud-id\">${this.cloudid}</div>` : html``}\n ${this.loading ? html`<div class=\"loader-container\"><slot name=\"loader\"></slot></div>` : html``}\n </div>\n `;\n }\n}\n","export enum EasingType {\n SINE = \"SINE\",\n QUAD = \"QUAD\",\n CUBIC = \"CUBIC\",\n QUART = \"QUART\",\n QUINT = \"QUINT\",\n EXPONENTIAL = \"EXPO\",\n CIRCULAR = \"CIRC\",\n BACK = \"BACK\",\n ELASTIC = \"ELASTIC\",\n BOUNCE = \"BOUNCE\"\n}\nexport enum EasingDirection {\n OUT = \"OUT\",\n IN = \"IN\",\n INOUT = \"INOUT\"\n}\n\nclass AnimationEasingFunctionServiceClass {\n private apply(direction: EasingDirection, value: number, inMethod: (x: number)=>number, outMethod: (x: number)=>number, inoutMethod: (x: number)=>number): number {\n switch (direction) {\n case EasingDirection.IN:\n return inMethod(value);\n case EasingDirection.OUT:\n return outMethod(value);\n case EasingDirection.INOUT:\n return inoutMethod(value);\n default:\n return 0;\n }\n }\n public Apply(type: EasingType, direction: EasingDirection, value: number): number {\n switch (type) {\n case EasingType.BACK:\n return this.apply(direction, value, this.EaseInBack, this.EaseOutBack, this.EaseInOutBack);\n case EasingType.BOUNCE:\n return this.apply(direction, value, this.EaseInBounce, this.EaseOutBounce, this.EaseInOutBounce);\n case EasingType.CIRCULAR:\n return this.apply(direction, value, this.EaseInCirc, this.EaseOutCirc, this.EaseInOutCirc);\n case EasingType.CUBIC:\n return this.apply(direction, value, this.EaseInCubic, this.EaseOutCubic, this.EaseInOutCubic);\n case EasingType.ELASTIC:\n return this.apply(direction, value, this.EaseInElastic, this.EaseOutElastic, this.EaseInOutElastic);\n case EasingType.EXPONENTIAL:\n return this.apply(direction, value, this.EaseInExpo, this.EaseOutExpo, this.EaseInOutExpo);\n case EasingType.QUAD:\n return this.apply(direction, value, this.EaseInQuad, this.EaseOutQuad, this.EaseInOutQuad);\n case EasingType.QUART:\n return this.apply(direction, value, this.EaseInQuart, this.EaseOutQuart, this.EaseInOutQuart);\n case EasingType.QUINT:\n return this.apply(direction, value, this.EaseInQuint, this.EaseOutQuint, this.EaseInOutQuint);\n case EasingType.SINE:\n return this.apply(direction, value, this.EaseInSine, this.EaseOutSine, this.EaseInOutSine);\n default:\n return 0;\n }\n }\n\n\n // ____ ___ _ _ _____ \n // / ___|_ _| \\ | | ____|\n // \\___ \\| || \\| | _| \n // ___) | || |\\ | |___ \n // |____/___|_| \\_|_____|\n public EaseInSine(x: number): number {\n return 1 - Math.cos((x * Math.PI) / 2);\n }\n public EaseOutSine(x: number): number {\n return Math.sin((x * Math.PI) / 2);\n }\n public EaseInOutSine(x: number): number {\n return -(Math.cos(Math.PI * x) - 1) / 2;\n }\n\n // ___ _ _ _ ____ \n // / _ \\| | | | / \\ | _ \\ \n // | | | | | | |/ _ \\ | | | |\n // | |_| | |_| / ___ \\| |_| |\n // \\__\\_\\\\___/_/ \\_\\____/ \n public EaseInQuad(x: number): number {\n return x * x;\n }\n public EaseOutQuad(x: number): number {\n return 1 - (1 - x) * (1 - x);\n }\n public EaseInOutQuad(x: number): number {\n return x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2;\n }\n\n // ____ _ _ ____ ___ ____ \n // / ___| | | | __ )_ _/ ___|\n // | | | | | | _ \\| | | \n // | |___| |_| | |_) | | |___ \n // \\____|\\___/|____/___\\____|\n public EaseInCubic(x: number): number {\n return x * x * x;\n }\n public EaseOutCubic(x: number): number {\n return 1 - Math.pow(1 - x, 3);\n }\n public EaseInOutCubic(x: number): number {\n return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;\n }\n\n // ___ _ _ _ ____ _____ \n // / _ \\| | | | / \\ | _ \\_ _|\n // | | | | | | |/ _ \\ | |_) || | \n // | |_| | |_| / ___ \\| _ < | | \n // \\__\\_\\\\___/_/ \\_\\_| \\_\\|_| \n public EaseInQuart(x: number): number {\n return x * x * x * x;\n }\n public EaseOutQuart(x: number): number {\n return 1 - Math.pow(1 - x, 4);\n }\n public EaseInOutQuart(x: number): number {\n return x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2;\n }\n\n // ___ _ _ ___ _ _ _____ \n // / _ \\| | | |_ _| \\ | |_ _|\n // | | | | | | || || \\| | | | \n // | |_| | |_| || || |\\ | | | \n // \\__\\_\\\\___/|___|_| \\_| |_| \n public EaseInQuint(x: number): number {\n return x * x * x * x * x;\n }\n public EaseOutQuint(x: number): number {\n return 1 - Math.pow(1 - x, 5);\n }\n public EaseInOutQuint(x: number): number {\n return x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2;\n }\n\n // _______ ______ ___ _ _ _____ _ _ _____ ___ _ _ \n // | ____\\ \\/ / _ \\ / _ \\| \\ | | ____| \\ | |_ _|_ _| / \\ | | \n // | _| \\ /| |_) | | | | \\| | _| | \\| | | | | | / _ \\ | | \n // | |___ / \\| __/| |_| | |\\ | |___| |\\ | | | | | / ___ \\| |___ \n // |_____/_/\\_\\_| \\___/|_| \\_|_____|_| \\_| |_| |___/_/ \\_\\_____|\n public EaseInExpo(x: number): number {\n return x === 0 ? 0 : Math.pow(2, 10 * x - 10);\n }\n public EaseOutExpo(x: number): number {\n return x === 1 ? 1 : 1 - Math.pow(2, -10 * x);\n }\n public EaseInOutExpo(x: number): number {\n return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2;\n }\n\n // ____ ___ ____ ____ _ _ _ _ ____ \n // / ___|_ _| _ \\ / ___| | | | | / \\ | _ \\ \n // | | | || |_) | | | | | | | / _ \\ | |_) |\n // | |___ | || _ <| |___| |_| | |___ / ___ \\| _ < \n // \\____|___|_| \\_\\\\____|\\___/|_____/_/ \\_\\_| \\_\\\n public EaseInCirc(x: number): number {\n return 1 - Math.sqrt(1 - Math.pow(x, 2));\n }\n public EaseOutCirc(x: number): number {\n return Math.sqrt(1 - Math.pow(x - 1, 2));\n }\n public EaseInOutCirc(x: number): number {\n return x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2;\n }\n\n // ____ _ ____ _ __\n // | __ ) / \\ / ___| |/ /\n // | _ \\ / _ \\| | | ' / \n // | |_) / ___ \\ |___| . \\ \n // |____/_/ \\_\\____|_|\\_\\\n public EaseInBack(x: number): number {\n const c1 = 1.70158;\n const c3 = c1 + 1;\n return c3 * x * x * x - c1 * x * x;\n }\n public EaseOutBack(x: number): number {\n const c1 = 1.70158;\n const c3 = c1 + 1;\n return 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2);\n }\n public EaseInOutBack(x: number): number {\n const c1 = 1.70158;\n const c2 = c1 * 1.525;\n return x < 0.5 ? (Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2)) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2;\n }\n\n // _____ _ _ ____ _____ ___ ____ \n // | ____| | / \\ / ___|_ _|_ _/ ___|\n // | _| | | / _ \\ \\___ \\ | | | | | \n // | |___| |___ / ___ \\ ___) || | | | |___ \n // |_____|_____/_/ \\_\\____/ |_| |___\\____|\n public EaseInElastic(x: number): number {\n const c4 = (2 * Math.PI) / 3;\n return x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4);\n }\n public EaseOutElastic(x: number): number {\n const c4 = (2 * Math.PI) / 3;\n return x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n }\n public EaseInOutElastic(x: number): number {\n const c5 = (2 * Math.PI) / 4.5;\n return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : (Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;\n }\n\n // ____ ___ _ _ _ _ ____ _____ \n // | __ ) / _ \\| | | | \\ | |/ ___| ____|\n // | _ \\| | | | | | | \\| | | | _| \n // | |_) | |_| | |_| | |\\ | |___| |___ \n // |____/ \\___/ \\___/|_| \\_|\\____|_____|\n public EaseInBounce(x: number): number {\n return 1 - this.EaseOutBounce(1 - x);\n }\n public EaseOutBounce(x: number): number {\n const n1 = 7.5625;\n const d1 = 2.75;\n \n if (x < 1 / d1) {\n return n1 * x * x;\n }\n else if (x < 2 / d1) {\n return n1 * (x -= 1.5 / d1) * x + 0.75;\n }\n else if (x < 2.5 / d1) {\n return n1 * (x -= 2.25 / d1) * x + 0.9375;\n }\n else {\n return n1 * (x -= 2.625 / d1) * x + 0.984375;\n }\n }\n public EaseInOutBounce(x: number): number {\n return x < 0.5 ? (1 - this.EaseOutBounce(1 - 2 * x)) / 2 : (1 + this.EaseOutBounce(2 * x - 1)) / 2;\n }\n}\n\nexport const AnimationEasingFunctionService = new AnimationEasingFunctionServiceClass();","import { BaseElement } from \"../../base/base.component\";\nimport { PropertyValueMap, css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport style from \"./animated.container.sass?inline\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { AnimationEasingFunctionService, EasingDirection, EasingType } from \"../../../../utils/animation-easing.service\";\n\n\n@customElement(\"fv-animated-container\")\nexport abstract class AnimatedContainerComoponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n\n static get observedAttributes(): Array<string> {\n return [\"class\", ...super.observedAttributes];\n }\n\n private _heightStyleWhileOpen = \"\";\n private _heightValueBeforeAnimation = 0;\n private _animationDuration = 600;\n\n private _isAnimating = false;\n private openCloseAnimation(targetHeight: number, duration: number, targetStyle: string): void {\n this._isAnimating = true;\n\n let startTime: DOMHighResTimeStamp | undefined = undefined;\n const startHeight = this.offsetHeight;\n const isOpening = targetHeight > startHeight;\n\n const animate: FrameRequestCallback = (currentTime: DOMHighResTimeStamp)=>{\n if (!startTime) {\n startTime = currentTime;\n }\n const elapsed = currentTime - startTime;\n const progress = AnimationEasingFunctionService.Apply(EasingType.CUBIC, EasingDirection.INOUT, Math.min(1, elapsed / duration));\n\n const newHeight = isOpening\n ? startHeight + progress * (targetHeight - startHeight)\n : startHeight - progress * (startHeight - targetHeight);\n\n this.style.visibility = \"\";\n this.style.height = newHeight + \"px\";\n\n if (progress < 1) {\n requestAnimationFrame(animate);\n }\n else {\n this.style.height = targetStyle;\n this._isAnimating = false;\n\n if (this.style.height === \"0px\") {\n this.style.visibility = \"hidden\";\n }\n }\n };\n\n requestAnimationFrame(animate);\n }\n\n private async handleHeightChange(oldClasses: string, newClasses: string) {\n const oldList = oldClasses.split(\" \");\n const newList = newClasses.split(\" \");\n\n const isHidden: boolean = this.anyHiddenClassInArray(newList);\n const wasHidden: boolean = this.anyHiddenClassInArray(oldList);\n if (isHidden == wasHidden) return;\n\n if (isHidden && !wasHidden) {// close\n if (!this._isAnimating) {\n this._heightValueBeforeAnimation = this.offsetHeight;\n this._heightStyleWhileOpen = this.style.height;\n }\n await ComponentService.waitForAllChildren(this);\n this.openCloseAnimation(0, this._animationDuration, \"0px\");\n }\n\n if (!isHidden && wasHidden) {//open\n await ComponentService.waitForAllChildren(this);\n this.openCloseAnimation(this._heightValueBeforeAnimation, this._animationDuration, this._heightStyleWhileOpen);\n setTimeout(()=>{\n this.style.height = this._heightStyleWhileOpen;\n }, this._animationDuration);\n }\n }\n\n\n\n constructor() {\n super();\n\n this.hiddenClasses = [\"hidden-by-animation\"];\n }\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.updated(_changedProperties);\n }\n connectedCallback(): void {\n super.connectedCallback();\n }\n\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n\n public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n super.attributeChangedCallback(name, _old, value);\n\n if (name == \"class\" && _old && value) {\n this.handleHeightChange(_old, value);\n }\n }\n}","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./container.component.sass?inline\";\n\n\n@customElement(\"fv-container\")\nexport class ContainerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n}","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./grid-container.component.sass?inline\";\n\n\n@customElement(\"fv-grid-container\")\nexport class GridContainerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n}","import { css, html, TemplateResult, PropertyValueMap, unsafeCSS } from \"lit\";\nimport style from \"./image.aligned.container.component.sass?inline\"\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\"\n\n\nexport interface IImageAlignedContainerOverlayItem {\n name: string,\n top?: number,\n right?: number,\n bottom?: number,\n left?: number,\n zIndex?: number,\n skipHorizontalCenter?: boolean\n};\n\n@customElement(\"fv-image-aligned-container\")\nexport class ImageAlignedContainerComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"src\" })\n public _src = \"\";\n\n @property({ type: Array, reflect: true, attribute: \"overlay-items\" })\n public overlayItems: Array<IImageAlignedContainerOverlayItem> = [];\n\n @query(\".image-wrapper\")\n private imageWrapper: HTMLDivElement | undefined;\n\n @query(\".overlay-container\")\n private overlayContainer: HTMLDivElement | undefined;\n\n private naturalHeight: number = 0;\n private naturalWidth: number = 0;\n\n private static _imageCache: Record<string, HTMLImageElement> = {};\n\n constructor() {\n super();\n\n window.addEventListener(\"resize\", () => {\n this.updateOverlay();\n });\n }\n\n protected firstUpdated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n this.initImageAndOverlay();\n super.firstUpdated(_changedProperties);\n }\n\n private updateOverlay() {\n if (!this.imageWrapper || !this.overlayContainer || this.naturalWidth === 0 || this.naturalHeight === 0) {\n return;\n }\n\n const wrapperRect = this.imageWrapper.getBoundingClientRect();\n const wrapperWidth = wrapperRect.width;\n const wrapperHeight = wrapperRect.height;\n\n const imageAspect = this.naturalWidth / this.naturalHeight;\n const containerAspect = wrapperWidth / wrapperHeight;\n\n let imgWidth, imgHeight;\n\n if (imageAspect > containerAspect) {\n imgWidth = wrapperWidth;\n imgHeight = wrapperWidth / imageAspect;\n }\n else {\n imgHeight = wrapperHeight;\n imgWidth = wrapperHeight * imageAspect;\n }\n\n const left = (wrapperWidth - imgWidth) / 2;\n const top = (wrapperHeight - imgHeight) / 2;\n\n this.overlayContainer.style.width = imgWidth + 'px';\n this.overlayContainer.style.height = imgHeight + 'px';\n this.overlayContainer.style.left = left + 'px';\n this.overlayContainer.style.top = top + 'px';\n }\n\n private initImageAndOverlay(): void {\n const cachedImg = ImageAlignedContainerComponent._imageCache[this._src];\n if (cachedImg) {\n this.naturalWidth = cachedImg.naturalWidth;\n this.naturalHeight = cachedImg.naturalHeight;\n this.updateOverlay();\n return;\n }\n\n const img = new Image();\n img.src = this._src;\n\n img.onload = () => {\n ImageAlignedContainerComponent._imageCache[this._src] = img;\n this.naturalWidth = img.naturalWidth;\n this.naturalHeight = img.naturalHeight;\n this.updateOverlay();\n };\n }\n\n private getOverlayItemPositionStyle(item: IImageAlignedContainerOverlayItem): string {\n let style = \"\";\n\n if (item.top) {\n style += \"top: \" + item.top + \"%; \";\n }\n if (item.right) {\n style += \"right: \" + item.right + \"%; \";\n }\n if (item.bottom) {\n style += \"bottom: \" + item.bottom + \"%; \";\n }\n if (item.left) {\n style += \"left: \" + item.left + \"%; \";\n }\n if (item.zIndex) {\n style += \"z-index: \" + item.zIndex + \"; \";\n }\n return style;\n }\n\n render(): TemplateResult<1> {\n return html`\n <div class=\"image-container\">\n <div class=\"image-wrapper\" style=\"background-image: url(${this._src})\">\n <div class=\"overlay-container\">\n ${this.overlayItems.map(overlayEntry => html`\n <div\n class=\"overlay-item ${overlayEntry.skipHorizontalCenter ? \"skip-horizontal-center\" : \"\"}\"\n style=${this.getOverlayItemPositionStyle(overlayEntry)}>\n <slot name=${overlayEntry.name}></slot>\n </div>\n `)}\n </div>\n </div>\n </div>\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./layout.component.sass?inline\";\n\n\n\ninterface LayoutDefinition {\n\t[key:string]: LayoutNode;\n}\n\ninterface LayoutNode {\n\tnodes?: LayoutDefinition\n\tdata?: LayoutData;\n}\n\ninterface LayoutData {\n\tclass?: string[];\n}\n\n\n@customElement(\"fv-layout\")\nexport class LayoutComponent extends BaseElement {\n\tstatic styles = [\n\t\tsuper.styles || [],\n\t\tcss`${unsafeCSS(style)}`\n\t];\n\n\t@property({ type: Object, reflect: true })\n\tpublic definition: LayoutDefinition = {}\n\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Opt-in light DOM. With the `light-dom` attribute present, render the scaffold into the light\n\t * DOM instead of a shadow root, so the region nodes become document-queryable\n\t * (e.g. `#main.querySelector('.content')`). That lets legacy layout configs — whose `areas`\n\t * target region classes against `#main` — resolve unchanged. Default (no attribute) stays shadow\n\t * DOM, so existing behaviour is untouched.\n\t */\n\tprotected createRenderRoot(): HTMLElement | DocumentFragment {\n\t\tif (this.hasAttribute(\"light-dom\")) {\n\t\t\treturn this;\n\t\t}\n\t\treturn super.createRenderRoot();\n\t}\n\n\tprivate static traverseDefinition(target: LayoutDefinition | undefined, container: HTMLDivElement, emitSlots: boolean, action: (node: LayoutNode, key: string, container: HTMLDivElement, emitSlots: boolean) => void) {\n\t\tif (target === undefined) return;\n\n\t\tconst keys = Object.keys(target);\n\t\tfor (const key of keys) {\n\t\t\tconst node = target[key];\n\t\t\taction(node, key, container, emitSlots);// hier wird createNodeElement aufgerufen\n\t\t}\n\t}\n\n\tprivate static createNodeElement(node: LayoutNode | undefined, key: string, container: HTMLDivElement, emitSlots: boolean) {\n\t\tif (node === undefined) return;//erstellt anschliesend \"kinder\" und danach travers aufrufen\n\n\t\tconst nodeElement = document.createElement(\"div\");\n\t\tnodeElement.classList.add(\"node\");\n\n\t\t// Region identity from the slot key (plus any explicit data.class). Applied as classes so a\n\t\t// layout config can target the region from INSIDE the shadow (customCSS / styleVars), and\n\t\t// mirrored onto `part` so it can also be themed from OUTSIDE via ::part(<region>).\n\t\tconst regionClasses: string[] = [];\n\t\tif (/^[A-Za-z_][\\w-]*$/.test(key)) regionClasses.push(key);\n\t\tif (node.data && Array.isArray(node.data.class)) regionClasses.push(...node.data.class);\n\t\tif (regionClasses.length > 0) nodeElement.classList.add(...regionClasses);\n\t\tnodeElement.setAttribute(\"part\", [\"node\", ...regionClasses].join(\" \"));\n\n\t\t// Slots only project in shadow DOM; in light-DOM mode they're inert (legacy configs append their\n\t\t// areas directly to the region node), so skip them.\n\t\tif (emitSlots) {\n\t\t\tconst slot = document.createElement(\"slot\");\n\t\t\tslot.name = key;\n\t\t\tnodeElement.appendChild(slot);\n\t\t}\n\n\n\t\tLayoutComponent.traverseDefinition(node.nodes, nodeElement, emitSlots, LayoutComponent.createNodeElement);\n\t\tcontainer.appendChild(nodeElement);\n\t}\n\n\n\tpublic render(): TemplateResult<1> {\n\t\tconst container = document.createElement(\"div\");\n\t\tcontainer.classList.add(\"layout-container\");\n\t\tcontainer.id = \"main\";\n\t\tcontainer.setAttribute(\"part\", \"layout-container\");\n\t\t// In light-DOM mode the region <slot>s are inert, so don't emit them.\n\t\tconst emitSlots = !this.hasAttribute(\"light-dom\");\n\t\tLayoutComponent.traverseDefinition(this.definition, container, emitSlots, LayoutComponent.createNodeElement);//es werden unendlich Kinder aufgerufen und in container verwiesen\n\t\treturn html`${container}`;\n\t}\n}","import { BaseElement } from \"../../base/base.component\";\nimport { css, html, unsafeCSS } from \"lit\";\nimport style from \"./scene-button-page.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { SceneHelperService } from \"../../../../utils/scene-helper.service\";\nimport { SelectionChangeEventParams } from \"../../../../define/interface\";\nimport {CommunicationMessageService, EventFactoryService} from \"@dh-software/webui-api\";\nimport {IPlannedArticle} from \"@dh-software/webui-types\";\n\nexport interface CustomIcon_ExecuteCustomEventData {\n command: string,\n instanceIdent: number | number[];\n parameters?: any;\n}\n\nexport interface ISceneButtonPageEvent {\n \"target-selector\": string,\n event: unknown | undefined\n}\n\n@customElement(\"fv-scene-button-page\")\nexport class SceneButtonPage extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"command\" })\n public command = \"\";\n\n @property({ type: Array, reflect: true, attribute: \"open-event\" })\n public openEvent: Array<ISceneButtonPageEvent> = [];\n\n @property({ type: Array, reflect: true, attribute: \"close-event\" })\n public closeEvent: Array<ISceneButtonPageEvent> = [];\n\n @property({ type: Boolean, reflect: true, attribute: \"close-on-scene-click\" })\n public closeOnSceneClick = false;\n\n private _active = false;\n private _previousOwner = new Array<number>();\n private _currentOwners = new Array<string>();\n\n constructor() {\n super();\n\n EventFactoryService.CustomIcon_ExecuteCustomEvent.register((eventData_?: unknown) => {\n const eventData = (eventData_ as CustomIcon_ExecuteCustomEventData);\n if (eventData && eventData.command === this.command) {\n this.openPage(eventData?.parameters?.instanceIdent ? eventData.parameters.instanceIdent : eventData.instanceIdent);\n }\n });\n }\n\n private closeOnClickNotOnPage(event: Event) {\n if (event.target == this) return;\n for (const key in this.children) {\n if (Object.prototype.hasOwnProperty.call(this.children, key)) {\n const element = this.children[key];\n if (event.target == element) return;\n }\n }\n this.closePage();\n }\n\n private async openPage(instanceIdents: number | number[]) {\n if (this.hideElement === true) {\n window.addEventListener(\"click\", (event: Event) => {\n if (this._active) {\n this.closeOnClickNotOnPage(event);\n }\n });\n EventFactoryService.SelectionChanged.register(async (params?: unknown) => {\n if (this._active && !this.isSameSelection(params as SelectionChangeEventParams)) {\n this.closePage();\n }\n });\n if (this.closeOnSceneClick) {\n EventFactoryService.CameraOnStart.register((params?: unknown) => {\n if (this._active) {\n this.closePage();\n }\n });\n }\n\n\n this.hideElement = false;\n\n if (this._active && !this.isSameOwner(instanceIdents)) {\n this.closePageAndClearOwners();\n }\n\n this._previousOwner = [];\n if (Array.isArray(instanceIdents)) {\n this._previousOwner.push(...instanceIdents);\n }\n else {\n this._previousOwner.push(instanceIdents);\n }\n\n await CommunicationMessageService.getPlannedArticles(this._previousOwner).then((articles: Array<IPlannedArticle>) => {\n for (const article of articles) {\n this._currentOwners.push(article.guid);\n }\n });\n\n this.openPageAndNotifyOwners();\n }\n }\n\n private async closePage() {\n if (this.hideElement === false) {\n window.removeEventListener(\"click\", (event: Event) => {\n if (this._active) {\n this.closeOnClickNotOnPage(event);\n }\n });\n EventFactoryService.SelectionChanged.unregister(async (params?: unknown) => {\n if (this._active && !this.isSameSelection(params as SelectionChangeEventParams)) {\n this.closePage();\n }\n });\n if (this.closeOnSceneClick) {\n EventFactoryService.CameraOnStart.unregister((params?: unknown) => {\n if (this._active) {\n this.closePage();\n }\n });\n }\n this.hideElement = true;\n this.closePageAndClearOwners();\n }\n }\n\n private openPageAndNotifyOwners() {\n this.triggerScenePageEvent(\"openscenebuttonpage\", this.openEvent);\n\n this._active = true;\n }\n\n private closePageAndClearOwners() {\n this.triggerScenePageEvent(\"closescenebuttonpage\", this.closeEvent);\n SceneHelperService.clearSelection();\n\n this._active = false;\n this._currentOwners = [];\n }\n\n private triggerScenePageEvent(type: \"openscenebuttonpage\" | \"closescenebuttonpage\", data: Array<ISceneButtonPageEvent>) {\n if (data.length === 0 || this._currentOwners.length === 0) {\n return;\n }\n for (const eventData of data) {\n const targets = this.querySelectorAll(eventData[\"target-selector\"]);\n targets.forEach((target) => {\n const eventDetail = {\n page: this,\n owners: this._currentOwners,\n value: eventData.event\n };\n target.dispatchEvent(new CustomEvent(type, { detail: eventDetail }));\n });\n }\n }\n\n private isSameOwner(instanceIdents: number | number[]) {\n if (Array.isArray(instanceIdents)) {\n return instanceIdents.every(ident => this._previousOwner.includes(ident));\n }\n return this._previousOwner.includes(instanceIdents);\n }\n\n private isSameSelection(params_: SelectionChangeEventParams): boolean {\n if (params_?.objectInfo.length === 0) {\n return false;\n }\n const instanceIdents = params_.objectInfo.map(obj => obj.instanceIdent);\n return this.isSameOwner(instanceIdents);\n }\n\n protected render() {\n return html`\n <div class=\"page\">\n <div class=\"cancel-button\" @click=\"${this.closePage}\">\n <span class=\"close-symbol\"></span>\n </div>\n <slot></slot>\n </div>\n `;\n }\n}\n","import {css, html, LitElement, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport {BaseElement, IBaseElement, UpdatedEventInit, WillUpdateEventInit} from \"../../base/base.component\";\nimport style from \"./scroll.aware.container.component.sass?inline\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { AsyncBaseElement, FetchParameters } from \"../../base/async.base.component\";\nimport { FetchResult } from \"../../../../models/card-container\";\n\nconst scrollAwareContainerOffsets = new Map<string, number>();\n\n@customElement(\"fv-scroll-aware-container\")\nexport class ScrollAwareContainerComponent extends BaseElement {\n\n @property({ type: String, reflect: false })\n private identifier = \"\";\n\n private _updatedAnimationFrameHandle: number | undefined = undefined;\n private _willUpdateTimeout: number | undefined = undefined;\n\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private _willupdate() {\n const parent = this.ScrollableParent\n if (parent && parent.scrollTop) {\n this.ScrollPosition = parent.scrollTop;\n }\n }\n private async _updated(element: LitElement | AsyncBaseElement<FetchParameters, FetchResult>) {\n const parent = this.ScrollableParent\n if (parent) {\n if (element instanceof AsyncBaseElement) {\n await element.CheckFetchPromise();\n }\n if (element instanceof BaseElement) {\n await element.updateComplete;\n }\n parent.scrollTop = this.ScrollPosition;\n }\n }\n\n constructor() {\n super();\n this.addEventListener('scroll', () => {\n this._willupdate();\n })\n this.addEventListener(\"willupdate\", (event: WillUpdateEventInit) => {\n if (event.detail !== undefined) {\n if (this._willUpdateTimeout) {\n clearTimeout(this._willUpdateTimeout);\n this._willUpdateTimeout = undefined;\n }\n this._willUpdateTimeout = setTimeout(() => {\n this._willupdate();\n }, 1);\n }\n });\n this.addEventListener(\"updated\", (event: UpdatedEventInit) => {\n if (event.detail !== undefined) {\n // Restore scroll in a requestAnimationFrame (runs right BEFORE the next paint) rather\n // than setTimeout (a macrotask that fires AFTER the browser has already painted the\n // rebuilt list at scrollTop = 0). This removes the visible top<->previous flash.\n if (this._updatedAnimationFrameHandle !== undefined) {\n cancelAnimationFrame(this._updatedAnimationFrameHandle);\n this._updatedAnimationFrameHandle = undefined;\n }\n this._updatedAnimationFrameHandle = requestAnimationFrame(() => {\n this._updatedAnimationFrameHandle = undefined;\n if (event.detail !== undefined) {\n this._updated(event.detail);\n }\n });\n }\n });\n }\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n\n\n private _scrollableParent: HTMLElement | undefined = undefined;\n private get ScrollableParent(): HTMLElement | undefined {\n if (!this._scrollableParent) {\n this._scrollableParent = ComponentService.findScrollableParent(this);\n }\n return this._scrollableParent\n }\n\n private _scrollPosition = 0;\n public set ScrollPosition(value: number) {\n this._scrollPosition = value;\n if (this.identifier) {\n scrollAwareContainerOffsets.set(this.identifier, value);\n }\n }\n public get ScrollPosition(): number {\n const stored = scrollAwareContainerOffsets.get(this.identifier) || -1\n if (this.identifier && stored != -1) {\n this._scrollPosition = stored\n }\n return this._scrollPosition;\n }\n\n protected willUpdate(_changedProperties: PropertyValues): void {\n super.willUpdate(_changedProperties);\n this._willupdate();\n }\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n if (this.ScrollableParent != undefined) {\n this._updated(this);\n }\n }\n}\n","import { css, html, nothing, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport style from \"./cam-control-overlay.component.sass?inline\";\nimport { isProduction } from \"@dh-software/env\";\n\n@customElement(\"fv-cam-control-overlay\")\nexport class CamControlOverlayComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @state()\n private topActive = false;\n\n @state()\n private leftActive = false;\n\n @state()\n private rightActive = false;\n\n @state()\n private bottomActive = false;\n\n @property({ type: Number, reflect: true, attribute: \"speed\" })\n public speed = 3;\n\n @property({ type: Number, reflect: true, attribute: \"edge-width\" })\n public edgeWidth = 60;\n\n @property({ type: Number, reflect: true, attribute: \"hover-delay\" })\n public hoverDelay = 200;\n\n\n private _hoverTop = false;\n private _hoverLeft = false;\n private _hoverRight = false;\n private _hoverBottom = false;\n\n private _hoverTimeout: number | null = null;\n private _animationFrame: number | null = null;\n\n constructor() {\n super();\n\n this.AddConnectedCallbackAction(async (): Promise<void> => {\n this.role = \"presentation\";\n this.ariaHidden = \"true\";\n });\n\n this.addEventListener(\"pointermove\", this.onPointerMove);\n this.addEventListener(\"pointerleave\", this.onPointerLeave);\n\n document.addEventListener(\"visibilitychange\", (): void => {\n if (document.hidden) {\n this.clearActive();\n }\n });\n window.addEventListener(\"blur\", (): void => {\n this.clearActive();\n });\n }\n\n disconnectedCallback(): void {\n if (this._animationFrame !== null) {\n cancelAnimationFrame(this._animationFrame);\n this._animationFrame = null;\n }\n if (this._hoverTimeout !== null) {\n clearTimeout(this._hoverTimeout);\n this._hoverTimeout = null;\n }\n super.disconnectedCallback();\n }\n\n private get IsActive(): boolean {\n return this.topActive || this.bottomActive || this.leftActive || this.rightActive;\n }\n\n private get IsHover(): boolean {\n return this._hoverTop || this._hoverBottom || this._hoverLeft || this._hoverRight;\n }\n\n private onPointerLeave(): void {\n this.clearActive();\n }\n\n private onPointerMove(event_: PointerEvent): void {\n const rect = this.getBoundingClientRect();\n const x = event_.clientX - rect.left;\n const y = event_.clientY - rect.top;\n const w = this.edgeWidth;\n\n this._hoverTop = y < w;\n this._hoverBottom = y > rect.height - w;\n this._hoverLeft = x < w;\n this._hoverRight = x > rect.width - w;\n\n if (this._animationFrame !== null) {\n this.applyActiveState();\n return;\n }\n\n if (this._hoverTimeout !== null || !this.IsHover) {\n return;\n }\n\n if (this.hoverDelay <= 0) {\n this.applyActiveState();\n this._animationFrame = requestAnimationFrame(this.tick);\n return;\n }\n\n this._hoverTimeout = setTimeout((): void => {\n this._hoverTimeout = null;\n if (this.IsHover) {\n this.applyActiveState();\n this._animationFrame = requestAnimationFrame(this.tick);\n }\n }, this.hoverDelay);\n }\n\n private tick = (): void => {\n if (!this.IsActive) {\n this._animationFrame = null;\n return;\n }\n\n const speed = this.speed;\n const deltaX = (this.leftActive ? speed : 0) + (this.rightActive ? -speed : 0);\n const deltaY = (this.topActive ? speed : 0) + (this.bottomActive ? -speed : 0);\n\n if (deltaX !== 0 || deltaY !== 0) {\n CommunicationMessageService.panCamera({ deltaX, deltaY });\n }\n\n this._animationFrame = requestAnimationFrame(this.tick);\n };\n\n private clearActive(): void {\n this._hoverTop = false;\n this._hoverLeft = false;\n this._hoverRight = false;\n this._hoverBottom = false;\n\n this.topActive = false;\n this.leftActive = false;\n this.rightActive = false;\n this.bottomActive = false;\n\n if (this._hoverTimeout !== null) {\n clearTimeout(this._hoverTimeout);\n this._hoverTimeout = null;\n }\n }\n\n private applyActiveState(): void {\n this.topActive = this._hoverTop;\n this.leftActive = this._hoverLeft;\n this.rightActive = this._hoverRight;\n this.bottomActive = this._hoverBottom;\n }\n\n protected render() {\n if (!isProduction) return nothing;\n const zoneWidth = `${this.edgeWidth}px`;\n return html`\n <div class=\"edge-zone top\" style=\"height: ${zoneWidth}\"></div>\n <div class=\"edge-zone bottom\" style=\"height: ${zoneWidth}\"></div>\n <div class=\"edge-zone left\" style=\"width: ${zoneWidth}\"></div>\n <div class=\"edge-zone right\" style=\"width: ${zoneWidth}\"></div>\n\n <fv-icon class=\"arrow top ${this.topActive ? \"active\" : \"\"}\" icon=\"fv-icon-arrow-down-2 mirrored-y\"></fv-icon>\n <fv-icon class=\"arrow left ${this.leftActive ? \"active\" : \"\"}\" icon=\"fv-icon-arrow-left\"></fv-icon>\n <fv-icon class=\"arrow right ${this.rightActive ? \"active\" : \"\"}\" icon=\"fv-icon-arrow-left mirrored-x\"></fv-icon>\n <fv-icon class=\"arrow bottom ${this.bottomActive ? \"active\" : \"\"}\" icon=\"fv-icon-arrow-down-2\"></fv-icon>\n `;\n }\n}\n","import { BaseElement } from \"../standard/base/base.component\";\nimport { customElement } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./arrow.component.sass?inline\";\n\n\n@customElement(\"fv-arrow-component\")\nexport class ArrowComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n constructor() {\n super();\n }\n\n protected render(): TemplateResult<1> {\n const styles = getComputedStyle(this);\n let arrowStrokeWidth = styles.getPropertyValue(\"--arrow-thickness\");\n if (arrowStrokeWidth.length < 1)\n {\n arrowStrokeWidth = \"2\";\n }\n let width = styles.getPropertyValue(\"--arrow-width\");\n if (width.length < 1)\n {\n width = \"48\";\n }\n let pointX = styles.getPropertyValue(\"--arrow-point-pos-x\");\n if (pointX.length < 1)\n {\n pointX = \"22\";\n }\n let pointY = styles.getPropertyValue(\"--arrow-point-pos-y\");\n if (pointY.length < 1)\n {\n pointY = \"20\";\n }\n let height = styles.getPropertyValue(\"--arrow-height\");\n if (height.length < 1)\n {\n height = \"22\";\n }\n let color = styles.getPropertyValue(\"--arrow-color\");\n if (color.length < 1)\n {\n color = \"black\";\n }\n\n return html`\n <div class=\"arrow\">\n <svg width=\"${width}px\" height=\"${height}px\" viewBox=\"0 0 ${width} ${height}\" xml:space=\"preserve\">\n <polyline \n fill=\"none\"\n stroke=\"${color}\"\n stroke-width=\"${arrowStrokeWidth}\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n points=\"0,0 ${pointX},${pointY} ${width},0\"\n />\n </svg> \n </div>\n `;\n }\n}\n","import {css, html, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../components/standard/base/base.component\";\nimport {FilteredCatalogComponentFilterButtons} from \"./filtered-catalog-filter-buttons.component\";\nimport style from \"./filtered-catalog.component.sass?inline\";\nimport {\n BaseFilteredCatalogOptionComponent,\n FilteredCatalogClickData\n} from \"./catalog-options/base/base-filtered-catalog-option.component\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../../utils/defer-helper.class\";\nimport {ButtonComponent} from \"../standard/button/button.component\";\nimport {ComponentService} from \"../../utils/component.service\";\nimport {DimensionHelper} from \"../../utils/dimension-helper.class\";\nimport {\n CommunicationMessageService, EventFactoryService,\n LocaleService,\n ProgPropertyModel,\n WebViewerService\n} from \"@dh-software/webui-api\";\nimport {\n IArticleData,\n IProgProperty,\n IProgPropertyFinishParams,\n IProgPropertyManufacturer,\n IProgPropertyProgram,\n IProgPropertyRootList,\n IPropTransferItem\n} from \"@dh-software/webui-types\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport type { ComponentStateHandlerMap } from \"../../models/event-handler/component-state-event\";\n\ndeclare global {\n interface ComponentStates {\n \"fv-filtered-catalog:update\": { force?: boolean } | undefined;\n }\n}\n\nexport interface FilteredCatalogBaseOptionData {\n txt: string,\n img: string,\n active?: boolean,\n icon?: string | undefined,\n clickData: FilteredCatalogClickData,\n dimensions?: {\n x: number,\n y: number,\n z: number\n },\n \"filter-categories\"?: Array<string>\n}\n\ninterface FilteredCatalogOptionData extends FilteredCatalogBaseOptionData {\n remove?: FilteredCatalogBaseOptionData\n}\n\nexport interface FilteredCatalogData {\n title: string,\n type: string,\n options: Array<FilteredCatalogOptionData>,\n \"filtered-options\"?: Array<FilteredCatalogOptionData>,\n propertyFilterValue?: string,\n catgoriesTexts?: { [category: string]: string }\n}\n\ninterface DimensionsFilter {\n x: Array<number>,\n y: Array<number>,\n z: Array<number>\n}\n\n\nclass FilteredCatalogDeferredDataReaderBase<T> {\n protected data: T | undefined = undefined;\n}\n\nclass FilteredCatalogDeferredMapDataReader<KEY, VALUE> extends FilteredCatalogDeferredDataReaderBase<Map<KEY, VALUE>> {\n protected readDeferHelpers: Map<KEY, IDeferHelperClass | undefined> = new Map<KEY, IDeferHelperClass | undefined>();\n\n // protected readDeferHelper: IDeferHelperClass | undefined = undefined;\n\n public Clear() {\n this.data = undefined;\n }\n\n public async Read(key: KEY, check: (data: VALUE) => boolean, read: () => Promise<VALUE>, force = false): Promise<VALUE | undefined> {\n if (force === false && this.data !== undefined) {\n const deferHelper = this.readDeferHelpers.get(key);\n if (deferHelper != undefined) await deferHelper;\n\n const dataValue = this.data.get(key);\n if (dataValue !== undefined && check(dataValue)) return dataValue;\n }\n\n if (this.data === undefined) {\n this.data = new Map<KEY, VALUE>();\n }\n\n if (this.readDeferHelpers.get(key) == undefined) {\n this.readDeferHelpers.set(key, DeferHelperClass());\n\n if (force) {\n this.data = new Map<KEY, VALUE>();// get rid of old data\n }\n\n const dataValue = await read();\n this.data.set(key, dataValue);\n\n this.readDeferHelpers.get(key)?.resolve([true]);\n this.readDeferHelpers.set(key, undefined);\n\n for (const callback of this.ReadEvents) {\n callback(dataValue);\n }\n return dataValue;\n }\n\n await this.readDeferHelpers.get(key);\n const dataValue = this.data.get(key);\n if (dataValue !== undefined && check(dataValue)) return dataValue;\n\n return undefined;\n }\n\n private ReadEvents: Array<(dataValue: VALUE) => Promise<void>> = [];\n\n public RegisterReadEvent(callback: (dataValue: VALUE) => Promise<void>): void {\n this.ReadEvents.push(callback);\n }\n}\n\nexport type FilteredCatalogFilterStrategy = 'exact' | 'start' | \"end\" | 'regex'\n\n@customElement(\"fv-filtered-catalog\")\nexport class FilteredCatalogComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n stateHandlers: ComponentStateHandlerMap = {\n \"fv-filtered-catalog:update\": async (data) => { await this.Update(data?.force === true); },\n };\n\n @property({type: String, reflect: true, attribute: \"option-tag\"})\n optionTag = \"\";\n\n @property({type: String, reflect: true, attribute: \"options-wrapper-tag\"})\n optionsWrapperTag = \"\";\n\n @property({type: String, reflect: true, attribute: \"mobile-options-wrapper-tag\"})\n mobileOptionsWrapperTag = \"\";\n\n @property({type: Array, reflect: true, attribute: \"catalog-types\"})\n types: Array<string> = [];\n\n @property({type: Array, reflect: true, attribute: \"filter\"})\n filter: Array<string> = [];\n\n @property({type: String, reflect: true, attribute: \"filter-strategy\"})\n filterStrategy: FilteredCatalogFilterStrategy = 'exact';\n\n @property({type: Boolean, reflect: true, attribute: \"property-filter-buttons\"})\n propertyFilterButtons = false;\n\n @property({type: Boolean, reflect: true, attribute: \"property-filter-buttons-limit-one-active\"})\n propertyFilterButtonsLimitOneActive = false;\n\n @property({type: Boolean, reflect: true, attribute: \"finish-params-filter-buttons\"})\n finishParamsFilterButtons = false;\n\n @property({type: Boolean, reflect: true, attribute: \"finish-params-filter-limit-to-one-per-para\"})\n finishParamsFilterLimitToOnePerPara = false;\n\n @property({type: String, reflect: true, attribute: \"selected-filter\"})\n selectedFilter = \"\";\n\n @property({type: Boolean, reflect: true, attribute: \"articles-are-fittings\"})\n articlesAreFittings = false;\n\n @property({type: String, reflect: true, attribute: \"program\"})\n program = \"\";\n\n @property({type: Boolean, reflect: true, attribute: \"prop-transfers-deleteable\"})\n propTransfersDeleteable = false;\n\n @property({type: Boolean, reflect: true, attribute: \"prop-transfer-deletes-all\"})\n propTransferDeletesAll = false;\n\n @property({type: Boolean, reflect: true, attribute: \"dimensions-filter-buttons\"})\n dimensionsFilterButtons = false;\n\n @property({type: Object, reflect: true, attribute: \"dimensions-filter\"})\n dimensionsFilter: DimensionsFilter = {\n x: [],\n y: [],\n z: []\n };\n\n @property({type: String, reflect: true, attribute: \"dimensions-filter-unit\"})\n dimensionsFilterUnit: \"cm\" | \"mm\" = \"cm\";\n\n @property({type: Number, reflect: true, attribute: \"dimensions-filter-group-value-range\"})\n dimensionsFilterGroupValueRange = 100;\n\n @property({type: Boolean, reflect: true, attribute: \"categories-filter-buttons\"})\n categoriesFilterButtons = false;\n\n @property({type: Boolean, reflect: true, attribute: \"show-dimensions\"})\n showDimensions = false;\n\n @property({type: Array, reflect: true, attribute: \"categories-buttons-filter\"})\n categoriesButtonsFilter: Array<string> = [];\n\n @property({type: String, reflect: true, attribute: \"remove-button-img\"})\n removeButtonImg = \"\";\n\n @property({type: String, reflect: true, attribute: \"remove-button-icon\"})\n removeButtonIcon = \"\";\n\n @property({type: Boolean, reflect: true, attribute: \"property-use-relevant\"})\n propertyUseRelevant = false;\n\n @property({type: Boolean, reflect: true, attribute: \"titled\"})\n titled = false;\n\n @property({type: Boolean, reflect: true, attribute: \"refresh-on-option-click\"})\n refreshOnOptionClick = false;\n\n @property({type: Array, reflect: true, attribute: \"post-option-click-events\"})\n postOptionClickEvents: Array<{ id: string, data: EventHandlerEventData }> = [];\n\n @property({type: Boolean, reflect: true, attribute: \"options-draggable\"})\n optionsDraggable = false;\n\n @property({type: Object, reflect: true, attribute: \"property-modify-component\"})\n propertyModifyComponent = {click: false, dragdrop: false};\n\n private forceRefresh = false;\n\n private dimensionsFilterGroupOptions: DimensionsFilter = {x: [], y: [], z: []};\n\n\n public static RegisterPropTransfersReadEvent(callback: (dataValue: Array<IPropTransferItem>) => Promise<void>) {\n FilteredCatalogComponent.propTransfers.RegisterReadEvent(callback);\n }\n\n public static RegisterPropertiesReadEvent(callback: (dataValue: IProgPropertyProgram) => Promise<void>) {\n FilteredCatalogComponent.programProperties.RegisterReadEvent(callback);\n }\n\n public static RegisterArticlesReadEvent(callback: (dataValue: Array<IArticleData>) => Promise<void>) {\n FilteredCatalogComponent.articles.RegisterReadEvent(callback);\n }\n\n private static propTransfers = new FilteredCatalogDeferredMapDataReader<number, Array<IPropTransferItem>>();\n\n private async ReadPropTransfers(): Promise<Array<IPropTransferItem> | undefined> {\n return FilteredCatalogComponent.propTransfers.Read(0, (data: Array<IPropTransferItem>) => {\n if (data == undefined || (data && data.length == undefined)) {\n return false;\n }\n return data.length > 0;\n }, async () => {\n return await CommunicationMessageService.getPropTransfer({}) as Array<IPropTransferItem>;\n }, this.forceRefresh);\n }\n\n private static propertiesDataDeferHelper: IDeferHelperClass | undefined = undefined;\n private static propertiesData: IProgPropertyRootList<IProgPropertyManufacturer> | undefined = undefined;\n private static programProperties = new FilteredCatalogDeferredMapDataReader<string, IProgPropertyProgram>();\n\n private async ReadProperties(): Promise<IProgPropertyProgram | undefined> {\n if (FilteredCatalogComponent.propertiesDataDeferHelper != undefined) await FilteredCatalogComponent.propertiesDataDeferHelper;\n\n if ((FilteredCatalogComponent.propertiesData == undefined || this.forceRefresh) && FilteredCatalogComponent.propertiesDataDeferHelper == undefined) {\n FilteredCatalogComponent.propertiesDataDeferHelper = DeferHelperClass();\n FilteredCatalogComponent.propertiesData = await ProgPropertyModel.findAll(true, true);\n FilteredCatalogComponent.propertiesDataDeferHelper.resolve([true]);\n FilteredCatalogComponent.propertiesDataDeferHelper = undefined;\n }\n\n if (FilteredCatalogComponent.propertiesData != undefined && FilteredCatalogComponent.propertiesData.children != undefined) {\n return FilteredCatalogComponent.programProperties.Read(this.program, () => {\n return true;\n }, async () => {\n if (FilteredCatalogComponent.propertiesData != undefined && FilteredCatalogComponent.propertiesData.children != undefined) {\n const manufacturers = Object.keys(FilteredCatalogComponent.propertiesData.children);\n for (let index = 0; index < manufacturers.length; ++index) {\n const manufacturerIndex = manufacturers[index];\n const manufacturer = FilteredCatalogComponent.propertiesData.children[manufacturerIndex];\n const programs = Object.keys(manufacturer.children);\n if (programs.includes(this.program.toUpperCase())) {\n return manufacturer.children[this.program.toUpperCase()];\n }\n }\n }\n // const result = await ProgPropertyModel.find(window.g_article.manu, this.program, false, this.propertyUseRelevant, false) as IProgPropertyProgram;\n return {} as IProgPropertyProgram;\n }, this.forceRefresh);\n }\n }\n\n private static articles = new FilteredCatalogDeferredMapDataReader<string, Array<IArticleData>>();\n\n private async ReadArticlesData(): Promise<Array<IArticleData> | undefined> {\n return FilteredCatalogComponent.articles.Read(this.filter.length > 0 ? this.filter.toString() : \"all\", (data) => {\n return true;\n }, async () => {\n let filter = this.filter;\n if (this.selectedFilter.length > 0) {\n if (this.filter.includes(this.selectedFilter)) {\n filter = [this.selectedFilter];\n } else {\n filter = [];\n }\n }\n\n const articles = await CommunicationMessageService.getArticleByCategories(window.g_article.manu, this.program, filter);\n const result = new Array<IArticleData>();\n if (!articles) {\n return result;\n }\n for (let index = 0; index < articles.length; ++index) {\n const article = articles[index];\n result.push(article);\n }\n return result;\n }, this.forceRefresh);\n }\n\n private static nodePrefix: string | undefined = undefined;\n\n private async GetNodePrefix() {\n if (FilteredCatalogComponent.nodePrefix === undefined) FilteredCatalogComponent.nodePrefix = await CommunicationMessageService.getNodePrefix();\n return FilteredCatalogComponent.nodePrefix;\n }\n\n static matchesFilterStrategy(sourceValue: string, filterValue: string, strategy: FilteredCatalogFilterStrategy = 'exact'): boolean {\n switch (strategy) {\n case 'exact':\n return sourceValue === filterValue;\n case 'start':\n return sourceValue.startsWith(filterValue);\n case 'end':\n return sourceValue.endsWith(filterValue);\n case 'regex':\n try {\n const regex = new RegExp(filterValue);\n return regex.test(sourceValue);\n } catch (e) {\n console.warn(`Invalid regex pattern: ${filterValue}`, e);\n return false;\n }\n default:\n return sourceValue === filterValue;\n }\n }\n\n public checkFilter(source?: Array<string>, filter?: Array<string>, strategy?: FilteredCatalogFilterStrategy): boolean {\n return FilteredCatalogComponent.checkFilter(source, filter, strategy || this.filterStrategy);\n }\n\n public static checkFilter(source?: Array<string>, filter?: Array<string>, strategy: FilteredCatalogFilterStrategy = 'exact'): boolean {\n if (filter === undefined) return false;\n if (filter.length < 1) return true;\n if (source === undefined) return false;\n return source.some(sourceValue =>\n filter.some(filterValue =>\n FilteredCatalogComponent.matchesFilterStrategy(sourceValue, filterValue, strategy)\n )\n );\n }\n\n private async GetPropTransferOptions(propTransfers: Array<IPropTransferItem>): Promise<Array<FilteredCatalogOptionData>> {\n const options = new Array<FilteredCatalogOptionData>();\n\n let filter = this.filter;\n if (this.selectedFilter.length > 0) {\n if (this.filter.includes(this.selectedFilter)) {\n filter = [this.selectedFilter];\n } else {\n filter = [];\n }\n }\n\n for (let index = 0; index < propTransfers.length; ++index) {\n const prop = propTransfers[index];\n if (this.checkFilter(prop.Cat, filter) === false) continue;\n\n const url = await CommunicationMessageService.getMediaUrl(window.g_article.manu, this.program, \"art\", prop.image, true);\n const option: FilteredCatalogOptionData = {\n txt: prop.text && prop.text.length > 0 ? prop.text : prop.id,\n img: url,\n clickData: {\n propTransfer: {\n id: prop.id\n },\n refresh: this.refreshOnOptionClick,\n postEvents: this.postOptionClickEvents\n }\n };\n\n if (this.propTransfersDeleteable) {\n let deleteText = LocaleService.translate(\"fitered.catalog.proptrans.delete.text.alternative\", \"\");\n if (deleteText.length < 1) {\n deleteText = LocaleService.translate(\"156\", \"\");\n }\n option.remove = {\n txt: deleteText,\n img: this.removeButtonImg.length > 0 ? this.removeButtonImg : \"\",\n icon: this.removeButtonIcon.length > 0 ? this.removeButtonIcon : undefined,\n clickData: {\n propTransfer: {\n id: prop.id,\n manufacturer: prop.manufacturer,\n program: prop.program,\n instanceIdents: this.propTransferDeletesAll ? prop.instanceIdent : [],\n delete: true\n },\n refresh: this.refreshOnOptionClick,\n postEvents: this.postOptionClickEvents\n }\n };\n }\n options.push(option);\n }\n\n return options;\n }\n\n private async GetPropTransfersData(): Promise<FilteredCatalogData> {\n const propTransfer = await this.ReadPropTransfers();\n return {\n type: \"prop-transfers\",\n title: this.titled ? \"filtered.catalog.prop.transfer.heading\" : \"\",\n options: propTransfer ? await this.GetPropTransferOptions(propTransfer) : []\n };\n }\n\n\n public static FilterProgPropertyProgram(hirarchy: IProgPropertyProgram, filter: Array<string>, strategy: FilteredCatalogFilterStrategy = 'exact'): Array<IProgProperty> {\n const properties: Array<IProgProperty> = [];\n hirarchy.propertyKeyOrder?.forEach((propertyKey) => {\n const property = hirarchy.children[propertyKey];\n if (FilteredCatalogComponent.checkFilter([property.id], filter, strategy)) {\n properties.push(property);\n }\n });\n return properties;\n }\n\n private GetProperties(hirarchy: IProgPropertyProgram) {\n let filter = this.filter;\n if (this.selectedFilter.length > 0) {\n if (this.filter.includes(this.selectedFilter)) {\n filter = [this.selectedFilter];\n } else {\n filter = [];\n }\n }\n return FilteredCatalogComponent.FilterProgPropertyProgram(hirarchy, filter, this.filterStrategy);\n }\n\n private GetPropertyOptions(property: IProgProperty): Array<FilteredCatalogOptionData> {\n const options: Array<FilteredCatalogOptionData> = [];\n\n const valueKeys = Object.keys(property.children);\n for (let index = 0; index < valueKeys.length; ++index) {\n const value = property.children[valueKeys[index]];\n options.push({\n txt: value.name,\n img: value.alternativeImageUrl,\n active: property.currentValue == value.propertyKey ? true : false,\n clickData: {\n property: {\n manufacturer: window.g_article.manu,\n program: this.program,\n key: property.id,\n property: value.key,\n propertyKey: value.propertyKey,\n colorPicker: value.colorPicker\n },\n refresh: this.refreshOnOptionClick,\n postEvents: this.postOptionClickEvents\n }\n });\n }\n return options;\n }\n\n private async EachProperty(action: (property: IProgProperty) => void) {\n const hirarchy: IProgPropertyProgram | undefined = await this.ReadProperties();\n if (hirarchy) {\n const properties: Array<IProgProperty> = this.GetProperties(hirarchy);\n properties.forEach((property) => {\n action(property);\n });\n }\n }\n\n private GetPropertyData(property: IProgProperty): FilteredCatalogData {\n return {\n type: \"properties\",\n title: this.titled || this.propertyFilterButtons ? property.name : \"\",\n options: this.GetPropertyOptions(property),\n propertyFilterValue: property.id\n };\n }\n\n\n private static ncrToUTF8(ncr: string) {\n if (ncr && ncr.length > 0) {\n return ncr.replace(/&#([0-9]+);/g, function (b) {\n return String.fromCodePoint(parseInt(b.slice(2, -1)));\n });\n }\n return ncr;\n }\n\n private async GetArticlesImage(imageName: string): Promise<string> {\n if (imageName && imageName.length > 0) return await this.GetNodePrefix() + FilteredCatalogComponent.ncrToUTF8(imageName);\n return \"\";\n }\n\n private async GetArticlesOptions(articles: Array<IArticleData>, additionalCategories: {\n [article: string]: Array<string>\n }): Promise<Array<FilteredCatalogOptionData>> {\n const result = new Array<FilteredCatalogOptionData>();\n for (let index = 0; index < articles.length; ++index) {\n const article = articles[index];\n result.push({\n txt: article.artText ? article.artText : article.ArtNr,\n img: await this.GetArticlesImage(article.imgName),\n dimensions: {\n x: parseFloat(article.kataWidth),\n y: parseFloat(article.kataDepth),\n z: parseFloat(article.kataHeight)\n },\n clickData: {\n article: {\n nr: article.ArtNr,\n manufacturer: window.g_article.manu,\n program: this.program,\n fitting: this.articlesAreFittings\n },\n refresh: this.refreshOnOptionClick,\n postEvents: this.postOptionClickEvents\n },\n \"filter-categories\": additionalCategories[article.ArtNr]\n });\n }\n return result;\n }\n\n private async ReadArticlesAdditonalCategories(): Promise<{ [article: string]: Array<string> }> {\n const additionalCategories: { [article: string]: Array<string> } = {};\n if (this.categoriesFilterButtons) {\n for (const category of this.filter) {\n const page = await CommunicationMessageService?.getKataPage(category.replace(\"dhcat_\", \"\"), \"\");\n if (page) {\n for (const module of page.Modules) {\n for (const articleArray of module.Articles) {\n for (const article of articleArray) {\n const categories = article.CatString.split(\",\");\n\n if (additionalCategories[article.ArtNr] === undefined) {\n additionalCategories[article.ArtNr] = new Array<string>();\n }\n\n for (const category of categories) {\n if (this.filter.includes(category)) continue;\n if (additionalCategories[article.ArtNr].includes(category) == false) {\n additionalCategories[article.ArtNr].push(category);\n }\n }\n }\n }\n }\n }\n }\n }\n return additionalCategories;\n }\n\n private async GetArticlesData(): Promise<FilteredCatalogData> {\n const articlesData = await this.ReadArticlesData();\n const additionalCategories = await this.ReadArticlesAdditonalCategories();\n\n const categoriesTexts: { [category: string]: string } = {};\n const definedFilterCategories = (await CommunicationMessageService?.getKataTreeJson()).definedFilterCategories;\n for (const definedCategory of definedFilterCategories) {\n categoriesTexts[definedCategory.id] = definedCategory.name;\n }\n\n return {\n type: \"articles\",\n title: this.titled ? \"filtered.catalog.articles.heading\" : \"\",\n options: articlesData ? await this.GetArticlesOptions(articlesData, additionalCategories) : [],\n catgoriesTexts: categoriesTexts\n };\n }\n\n private async GetData(): Promise<Array<FilteredCatalogData>> {\n if (this.program.length < 1) {\n this.program = window.g_article.prog;\n }\n\n const result = new Array<FilteredCatalogData>();\n for (const type of this.types) {\n if (type === \"prop-transfers\") {\n result.push(await this.GetPropTransfersData());\n }\n if (type === \"properties\") {\n await this.EachProperty((property) => {\n result.push(this.GetPropertyData(property));\n });\n }\n if (type === \"articles\") {\n result.push(await this.GetArticlesData());\n }\n }\n this.forceRefresh = false;\n return result;\n }\n\n private getFilteredOptionsByDimension(dimensionsFilter: DimensionsFilter, options: Array<FilteredCatalogOptionData>, dimension: \"x\" | \"y\" | \"z\"): Array<FilteredCatalogOptionData> {\n const filtered: Array<FilteredCatalogOptionData> = [];\n options.forEach((option) => {\n if (option.dimensions) {\n if (dimensionsFilter[dimension].includes(option.dimensions[dimension])) {\n filtered.push(option);\n }\n }\n });\n return filtered;\n }\n\n private getFilteredOptionsByCategories(filter: Array<string>, options: Array<FilteredCatalogOptionData>) {\n const hasAnyOf = function (left: Array<unknown>, right: Array<unknown>) {\n for (const entry of right) {\n if (left.includes(entry)) {\n return true;\n }\n }\n };\n\n if (this.categoriesButtonsFilter.length > 0) {\n const filtered: Array<FilteredCatalogOptionData> = [];\n options.forEach((option) => {\n if (option[\"filter-categories\"]) {\n if (hasAnyOf(filter, option[\"filter-categories\"])) filtered.push(option);\n }\n });\n return filtered;\n }\n return options;\n }\n\n\n private getFilteredOptions(categoriesFilter: Array<string>, dimensionsFilter: DimensionsFilter, options: Array<FilteredCatalogOptionData>): Array<FilteredCatalogOptionData> {\n const categoriesFiltered: Array<FilteredCatalogOptionData> = this.getFilteredOptionsByCategories(categoriesFilter, options);\n const xFiltered: Array<FilteredCatalogOptionData> = this.getFilteredOptionsByDimension(dimensionsFilter, options, \"x\");\n const yFiltered: Array<FilteredCatalogOptionData> = this.getFilteredOptionsByDimension(dimensionsFilter, options, \"y\");\n const zFiltered: Array<FilteredCatalogOptionData> = this.getFilteredOptionsByDimension(dimensionsFilter, options, \"z\");\n\n const isResult = function (filteredArray: Array<FilteredCatalogOptionData>, optionData: FilteredCatalogOptionData, appendAction: CallableFunction) {\n if (filteredArray.length > 0) {\n if (filteredArray.includes(optionData)) {\n appendAction();\n return;\n }\n return;\n }\n appendAction();\n };\n\n const result = new Array<FilteredCatalogOptionData>();\n if (categoriesFiltered.length > 0) {\n categoriesFiltered.forEach((optionData) => {\n isResult(xFiltered, optionData, () => {\n isResult(yFiltered, optionData, () => {\n isResult(zFiltered, optionData, () => {\n result.push(optionData);\n });\n });\n });\n });\n return result;\n }\n\n if (xFiltered.length > 0) {\n xFiltered.forEach((optionData) => {\n isResult(yFiltered, optionData, () => {\n isResult(zFiltered, optionData, () => {\n result.push(optionData);\n });\n });\n });\n return result;\n }\n\n if (yFiltered.length > 0) {\n yFiltered.forEach((optionData) => {\n isResult(zFiltered, optionData, () => {\n result.push(optionData);\n });\n });\n return result;\n }\n\n if (zFiltered.length > 0) {\n return zFiltered;\n }\n\n return result;\n }\n\n private createOption(optionData: FilteredCatalogOptionData): BaseFilteredCatalogOptionComponent | undefined {\n const option = document.createElement(this.optionTag) as BaseFilteredCatalogOptionComponent;\n option.setAttribute(\"txt\", optionData.txt);\n option.setAttribute(\"img\", optionData.img);\n if (optionData.active) {\n option.setAttribute(\"active\", \"true\");\n }\n if (optionData.dimensions) {\n option.setAttribute(\"dimensions\", JSON.stringify(optionData.dimensions));\n }\n if (this.showDimensions) {\n option.setAttribute(\"show-dimensions\", \"\");\n }\n option.clickData = optionData.clickData;\n option.dragable = this.optionsDraggable;\n option.propertyModifyComponent = this.propertyModifyComponent;\n if (optionData.remove) {\n option.removeClickData = optionData.remove.clickData;\n option.removeImg = optionData.remove.img;\n option.removeTxt = optionData.remove.txt;\n if (optionData.remove.icon != undefined) {\n option.removeIcon = optionData.remove.icon;\n }\n }\n return option;\n }\n\n private createTitle(text: string): HTMLElement | undefined {\n if (this.propertyFilterButtons == false && text.length > 0) {\n const title = document.createElement(\"fv-label\");\n title.classList.add(\"filtered-catalog-data-title\");\n title.classList.add(\"custom\");\n title.setAttribute(\"i18n\", text);\n title.innerText = text;\n title.classList.add(\"custom\");\n return title;\n }\n return undefined;\n }\n\n\n private createCategoriesFilterButtons(data: FilteredCatalogData, currentOptionsCount: number) {\n const categories = new Array<string>();\n for (const option of data.options) {\n if (option[\"filter-categories\"]) {\n for (const category of option[\"filter-categories\"]) {\n if (categories.includes(category) == false) {\n categories.push(category);\n }\n }\n }\n }\n\n\n const container = document.createElement(\"div\");\n container.classList.add(\"categories-filter-container\");\n\n\n let columns = this.style.getPropertyValue(\"--filter-columns-count\");\n if (columns.length < 1) {\n columns = \"6\";\n }\n const currentColumns = parseInt(columns);\n if (currentColumns > categories.length) {\n columns = categories.length.toFixed(0);\n }\n container.style.setProperty(\"--filter-columns-count\", columns);\n\n\n if (categories.length > 1) {\n for (const category of categories) {\n const button = document.createElement(\"fv-button\");\n button.innerHTML = data.catgoriesTexts && data.catgoriesTexts[category] ? data.catgoriesTexts[category] : category;\n button.classList.add(\"filter-button\");\n button.classList.add(\"bordered\");\n\n let clickable = true;\n if (this.categoriesButtonsFilter.includes(category)) {\n button.classList.add(\"active\");\n } else {\n const filter = [...this.categoriesButtonsFilter, category];\n const result = this.getFilteredOptions(filter, this.dimensionsFilter, data.options);\n\n if ((this.categoriesButtonsFilter.length > 0 && result.length == currentOptionsCount) || result.length < 1) {\n button.classList.add(\"disabled\");\n button.setAttribute(\"disabled\", \"\");\n clickable = false;\n }\n }\n\n if (clickable) {\n button.addEventListener(\"click\", () => {\n if (button.classList.contains(\"active\")) {\n button.classList.remove(\"active\");\n\n const index = this.categoriesButtonsFilter.indexOf(category);\n if (index > -1) {\n this.categoriesButtonsFilter.splice(index, 1);\n }\n this.prepUpdate();\n this.requestUpdate();\n return;\n }\n button.classList.add(\"active\");\n if (this.categoriesButtonsFilter.includes(category) == false) {\n this.categoriesButtonsFilter.push(category);\n }\n this.prepUpdate();\n this.requestUpdate();\n });\n }\n container.appendChild(button);\n }\n }\n return container;\n }\n\n\n private getDimensionFilterUnitifier(): number {\n switch (this.dimensionsFilterUnit) {\n case \"cm\":\n return 0.1;\n default:\n return 1.0;\n }\n }\n\n private createSingleDimensionFilterButtons(options: Array<number>, dimension: \"x\" | \"y\" | \"z\", data: FilteredCatalogData, currentOptionsCount: number) {\n const unitifier = this.getDimensionFilterUnitifier();\n\n\n const styles = getComputedStyle(this);\n const columnsCount = parseInt(styles.getPropertyValue(\"--dimension-filter-columns-count\"));\n const checkDimensionFilter = options.length > columnsCount;\n\n\n const container = document.createElement(\"div\");\n container.classList.add(\"dimension-filter-container\");\n container.classList.add(dimension);\n\n\n let columns = this.style.getPropertyValue(\"--filter-columns-count\");\n if (columns.length < 1) {\n columns = \"6\";\n }\n const currentColumns = parseInt(columns);\n if (currentColumns > options.length) {\n columns = options.length.toFixed(0);\n }\n container.style.setProperty(\"--filter-columns-count\", columns);\n\n\n let empty = true;\n options.forEach((option) => {\n if (checkDimensionFilter) {\n if (this.dimensionsFilterGroupOptions[dimension].includes(option) == false) {\n return;\n }\n }\n empty = false;\n });\n if (empty) {\n container.classList.add(\"hidden\");\n }\n\n options.forEach((option) => {\n const button = document.createElement(\"fv-button\");\n button.innerText = (option * unitifier).toFixed(1).replace(\".\", \",\");\n button.classList.add(\"filter-button\");\n button.classList.add(\"bordered\");\n button.classList.add(option.toFixed(0));\n // button.classList.add();\n if (checkDimensionFilter) {\n if (this.dimensionsFilterGroupOptions[dimension].includes(option) == false) {\n button.classList.add(\"hidden\");\n }\n }\n\n let clickable = true;\n if (this.dimensionsFilter[dimension].includes(option)) {\n button.classList.add(\"active\");\n } else {\n const filter = {\n x: this.dimensionsFilter.x,\n y: this.dimensionsFilter.y,\n z: this.dimensionsFilter.z\n };\n filter[dimension] = [...this.dimensionsFilter[dimension], option];\n\n const result = this.getFilteredOptions(this.categoriesButtonsFilter, filter, data.options);\n\n if ((this.dimensionsFilter[dimension].length > 0 && result.length == currentOptionsCount) || result.length < 1) {\n button.classList.add(\"disabled\");\n button.setAttribute(\"disabled\", \"\");\n clickable = false;\n }\n }\n\n if (clickable) {\n button.addEventListener(\"click\", () => {\n if (button.classList.contains(\"active\")) {\n button.classList.remove(\"active\");\n\n const index = this.dimensionsFilter[dimension].indexOf(option);\n if (index > -1) {\n this.dimensionsFilter[dimension].splice(index, 1);\n }\n this.prepUpdate();\n this.requestUpdate();\n return;\n }\n button.classList.add(\"active\");\n if (this.dimensionsFilter[dimension].includes(option) == false) {\n this.dimensionsFilter[dimension].push(option);\n }\n this.prepUpdate();\n this.requestUpdate();\n });\n }\n container.appendChild(button);\n });\n return container;\n }\n\n private createSingleDimensionFilterButtonsFilterButtons(options: Array<number>, dimension: \"x\" | \"y\" | \"z\", outerFilterButtonsContainer: HTMLElement) {\n const unitifier = this.getDimensionFilterUnitifier();\n\n const styles = getComputedStyle(this);\n const groups: { [group: string]: Array<number> } = {};\n const columnsCount = parseInt(styles.getPropertyValue(\"--dimension-filter-columns-count\"));\n if (options.length > columnsCount) {\n options.forEach((option) => {\n const optionValue = option * unitifier;\n const group = (optionValue - (optionValue % this.dimensionsFilterGroupValueRange)) / this.dimensionsFilterGroupValueRange;\n const groupName = group.toString();\n\n const keys = Object.keys(groups);\n if (keys.includes(groupName)) {\n groups[groupName].push(option);\n } else {\n groups[groupName] = [option];\n }\n });\n }\n\n const container = document.createElement(\"div\");\n container.classList.add(\"dimension-filter-filter-container\");\n const groupKeys = Object.keys(groups);\n groupKeys.forEach((groupKey) => {\n const button = document.createElement(\"fv-button\");\n const groupid = parseInt(groupKey);\n button.innerText = groupid * this.dimensionsFilterGroupValueRange + \" - \" + (groupid + 1) * this.dimensionsFilterGroupValueRange;\n button.classList.add(\"bordered\");\n button.classList.add(\"filter-button\");\n\n let isActive = false;\n groups[groupKey].forEach((option) => {\n if (this.dimensionsFilterGroupOptions[dimension].includes(option)) {\n isActive = true;\n }\n });\n if (isActive) {\n button.classList.add(\"active\");\n }\n\n button.addEventListener(\"click\", () => {\n const wasActive = button.classList.contains(\"active\");\n const buttons = container.querySelectorAll(\"fv-button\");\n buttons.forEach((button: Element) => {\n button.classList.remove(\"active\");\n });\n if (wasActive == false) {\n button.classList.add(\"active\");\n }\n\n let remove = false;\n groups[groupKey].forEach((option) => {\n if (this.dimensionsFilterGroupOptions[dimension].includes(option)) {\n remove = true;\n }\n });\n\n this.dimensionsFilterGroupOptions[dimension] = [];\n if (remove == false) {\n this.dimensionsFilterGroupOptions[dimension].push(...groups[groupKey]);\n }\n\n const optionFilterContainer = outerFilterButtonsContainer.querySelector(\".dimension-filter-container\" + \".\" + dimension);\n if (optionFilterContainer) {\n optionFilterContainer.classList.remove(\"hidden\");\n\n let empty = true;\n const buttons = optionFilterContainer.querySelectorAll(\".filter-button\");\n buttons.forEach((button) => {\n button.classList.add(\"hidden\");\n\n this.dimensionsFilterGroupOptions[dimension].forEach((dimFilter: number) => {\n if (button.classList.contains(dimFilter.toFixed(0))) {\n button.classList.remove(\"hidden\");\n empty = false;\n }\n });\n });\n if (empty) {\n optionFilterContainer.classList.add(\"hidden\");\n }\n }\n\n this.prepUpdate();\n this.requestUpdate();\n });\n container.appendChild(button);\n });\n return container;\n }\n\n private createSingleDimensionFilterButtonsTitle(txt: string) {\n const title = document.createElement(\"fv-label\");\n title.classList.add(\"title-label\");\n title.innerText = txt;\n title.setAttribute(\"i18n\", txt);\n return title;\n }\n\n private createDimensionFilterButtons(data: FilteredCatalogData, currentOptionsCount: number) {\n let x = new Array<number>();\n let y = new Array<number>();\n let z = new Array<number>();\n data.options.forEach((option: FilteredCatalogOptionData) => {\n if (option.dimensions) {\n if (x.includes(option.dimensions.x) == false) x.push(option.dimensions.x);\n if (y.includes(option.dimensions.y) == false) y.push(option.dimensions.y);\n if (z.includes(option.dimensions.z) == false) z.push(option.dimensions.z);\n }\n });\n\n x = x.sort((a, b) => a - b);\n y = y.sort((a, b) => a - b);\n z = z.sort((a, b) => a - b);\n\n const container = document.createElement(\"div\");\n container.classList.add(\"dimension-filter-buttons-container\");\n\n const dimensionMap: { [key: string]: { dimData: Array<number>; dimension: \"x\" | \"y\" | \"z\" } } = {\n B: {dimData: x, dimension: \"x\"},\n T: {dimData: y, dimension: \"y\"},\n H: {dimData: z, dimension: \"z\"},\n };\n\n for (const dimensionKey of DimensionHelper.DimensionsOrder) {\n const dim = dimensionMap[dimensionKey];\n if (dim && dim.dimData.length > 1) {\n const titleLineContainer = document.createElement(\"div\");\n titleLineContainer.classList.add(\"title-line-container\");\n\n titleLineContainer.appendChild(this.createSingleDimensionFilterButtonsTitle(`filtered-catalog-dimension-filters-${dim.dimension}`));\n titleLineContainer.appendChild(this.createSingleDimensionFilterButtonsFilterButtons(dim.dimData, dim.dimension, container));\n container.appendChild(titleLineContainer);\n container.appendChild(this.createSingleDimensionFilterButtons(dim.dimData, dim.dimension, data, currentOptionsCount));\n }\n }\n\n return container;\n }\n\n\n private createFilterButtons(data: FilteredCatalogData, currentOptionsCount: number): FilteredCatalogComponentFilterButtons | undefined {\n if (this.categoriesFilterButtons || this.dimensionsFilterButtons) {\n const filterButtons = document.createElement(\"fv-filtered-catalog-filter-buttons\") as FilteredCatalogComponentFilterButtons;\n filterButtons.Data = data;\n filterButtons.OptionsCount = currentOptionsCount;\n filterButtons.addCreateFilterButtonsFunction((data: FilteredCatalogData, currentOptionsCount: number) => this.createCategoriesFilterButtons(data, currentOptionsCount));\n filterButtons.addCreateFilterButtonsFunction((data: FilteredCatalogData, currentOptionsCount: number) => this.createDimensionFilterButtons(data, currentOptionsCount));\n return filterButtons;\n }\n return undefined;\n }\n\n\n private createOptionsWrapper(): HTMLElement | undefined {\n let element = undefined;\n if (this.mobile && this.mobileOptionsWrapperTag.length > 0) {\n element = document.createElement(this.mobileOptionsWrapperTag);\n } else if (this.optionsWrapperTag.length > 0) {\n element = document.createElement(this.optionsWrapperTag);\n }\n\n if (element && this.classList.contains(\"hide-scrollbar\")) {\n element.classList.add(\"hide-scrollbar\");\n }\n return element;\n }\n\n private finishParamsData: { [key: string]: { [key: string]: IProgPropertyFinishParams } } = {};\n\n private async readFinishParamsData(force: boolean = false) {\n if (this.finishParamsFilterButtons || force) {\n this.finishParamsData = await CommunicationMessageService.getFinishParams({\n manufacturer: window.g_article.manu,\n program: this.program,\n association: \"\"\n });\n }\n }\n\n private finishParamsPropertyValueFilter: { [finpara: string]: { [id: string]: Array<string> } } = {};\n\n private createFinishParamFilterButton(filterButtonFinishParamsValue: {\n auspraegung: string[],\n text: string,\n id: string\n }, finpara: string): TemplateResult<1> {\n const finparaClassSuffix = finpara.replaceAll(\".\", \"-\");\n const filter = (e: Event) => {\n const element = e.target as ButtonComponent;\n if (this.finishParamsFilterLimitToOnePerPara) {\n // disable all\n this.renderRoot.querySelectorAll(\".finish-param-filter-button-\" + finparaClassSuffix).forEach((filterButton: Element) => {\n filterButton.classList.remove(\"active\");\n });\n\n if (this.finishParamsPropertyValueFilter[finpara] && this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id]) {\n // is currently active\n delete this.finishParamsPropertyValueFilter[finpara];\n } else {\n // currently not active\n element.classList.add(\"active\");\n this.finishParamsPropertyValueFilter[finpara] = {};\n this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id] = filterButtonFinishParamsValue.auspraegung;\n }\n } else {\n if (this.finishParamsPropertyValueFilter[finpara] && this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id]) {\n delete this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id];\n element.classList.remove(\"active\");\n if (Object.keys(this.finishParamsPropertyValueFilter[finpara]).length < 1) {\n delete this.finishParamsPropertyValueFilter[finpara];\n }\n } else {\n if (!this.finishParamsPropertyValueFilter[finpara]) {\n this.finishParamsPropertyValueFilter[finpara] = {};\n }\n this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id] = filterButtonFinishParamsValue.auspraegung;\n element.classList.add(\"active\");\n }\n }\n this.prepUpdate();\n this.requestUpdate();\n };\n return html`\n <fv-button @click=\"${filter}\"\n class=\"filter-button bordered finish-param-filter-button-${finparaClassSuffix}\">\n ${filterButtonFinishParamsValue.text ? filterButtonFinishParamsValue.text : filterButtonFinishParamsValue.id}\n </fv-button>`;\n }\n\n private createFinishParamFilterButtonTypes(filterButtonFinishParams_: IProgPropertyFinishParams, key_: string): TemplateResult<1> {\n const valueKeys = Object.keys(filterButtonFinishParams_.values);\n return html`\n <div class=\"finish-params-filter-type\">\n <fv-label class=\"custom\">${filterButtonFinishParams_.text ? filterButtonFinishParams_.text : key_}\n </fv-label>\n <div class=\"finish-params-filter-buttons\">\n ${valueKeys.map((valueKey) => this.createFinishParamFilterButton(filterButtonFinishParams_.values[valueKey], key_))}\n </div>\n </div>\n `;\n }\n\n private createFinishParamsFilterButtons(): TemplateResult<1> {\n const finishKeys = Object.keys(this.finishParamsData);\n if (this.finishParamsFilterButtons && finishKeys.length > 0) {\n const filterButtonTypes: { [finpara: string]: IProgPropertyFinishParams } = {};\n for (const key of finishKeys) {\n const finparas = this.finishParamsData[key];\n const finparaKeys = Object.keys(finparas);\n for (const finparaKey of finparaKeys) {\n if (Object.keys(filterButtonTypes).includes(finparaKey)) {\n const finpara = finparas[finparaKey];\n const valueKeys = Object.keys(finpara.values);\n for (const valueKey of valueKeys) {\n const filterButtonTypeValueKeys = Object.keys(filterButtonTypes[finparaKey].values);\n if (filterButtonTypeValueKeys.includes(valueKey) == false) {\n filterButtonTypes[finparaKey].values[valueKey] = finpara.values[valueKey];\n }\n }\n } else {\n filterButtonTypes[finparaKey] = finparas[finparaKey];\n }\n }\n }\n const filterButtonTypeKeys = Object.keys(filterButtonTypes);\n return html`\n <div class=\"finish-params-filter-types\">\n ${filterButtonTypeKeys.map((key) => this.createFinishParamFilterButtonTypes(filterButtonTypes[key], key))}\n </div>`;\n }\n return html``;\n }\n\n private filterDataByFinishParamsFilterButtons(unfilteredData: Array<FilteredCatalogData>): Array<FilteredCatalogData> {\n if (this.finishParamsFilterButtons) {\n const filterValuesData: { [id: string]: Array<string> } = {};\n const finparaKeys = Object.keys(this.finishParamsPropertyValueFilter);\n for (const finparaKey of finparaKeys) {\n const finpara = this.finishParamsPropertyValueFilter[finparaKey];\n for (const proeprtyValueKey of Object.keys(finpara)) {\n filterValuesData[proeprtyValueKey] = finpara[proeprtyValueKey];\n }\n }\n\n let possibleValues: Array<string> = [];\n const possibleValueArrays = [];\n const valueFilterKeys = Object.keys(filterValuesData);\n for (const key of valueFilterKeys) {\n possibleValueArrays.push(filterValuesData[key]);\n }\n if (possibleValueArrays.length > 0) {\n possibleValues = possibleValueArrays.reduce((a, b) => a.filter(c => b.includes(c)));\n }\n\n if (Object.keys(filterValuesData).length > 0) {\n const result: Array<FilteredCatalogData> = [];\n if (possibleValues.length > 0) {\n for (const catalogData of unfilteredData) {\n const validOptions: Array<FilteredCatalogOptionData> = [];\n for (const option of catalogData.options) {\n if (option.clickData.property) {\n if (possibleValues.includes(option.clickData.property.property)) {\n validOptions.push(option);\n }\n }\n }\n\n if (validOptions.length > 0) {\n const resultCatalogData = catalogData;\n resultCatalogData.options = validOptions;\n result.push(resultCatalogData);\n }\n }\n }\n return result;\n }\n }\n return unfilteredData;\n }\n\n private propertyDataFilter: Array<string> = [];\n\n private filterDataByPropertyFilterButtons(unfilteredData: Array<FilteredCatalogData>): Array<FilteredCatalogData> {\n if (this.propertyFilterButtons) {\n const result: Array<FilteredCatalogData> = [];\n unfilteredData.forEach((data: FilteredCatalogData) => {\n if (data.propertyFilterValue) {\n if (this.propertyDataFilter.includes(data.propertyFilterValue)) {\n result.push(data);\n }\n }\n });\n return result;\n }\n return unfilteredData;\n }\n\n private getPropertyDataFilterButtons(unfilteredData: Array<FilteredCatalogData>): HTMLDivElement {\n const container = document.createElement(\"div\");\n container.classList.add(\"data-filter-buttons-container\");\n\n if (this.finishParamsFilterButtons) {\n const materialTitle = document.createElement(\"fv-label\");\n materialTitle.classList.add(\"custom\");\n materialTitle.setAttribute(\"i18n\", \"finish-params-filter-properties-title\");\n materialTitle.innerText = \"finish-params-filter-properties-title\";\n container.appendChild(materialTitle);\n }\n\n unfilteredData.forEach((data: FilteredCatalogData) => {\n const filterValue = data.propertyFilterValue;\n if (filterValue) {\n const button = document.createElement(\"fv-button\");\n button.innerText = data.title;\n button.classList.add(\"filter-button\");\n button.classList.add(\"bordered\");\n\n if (this.propertyDataFilter.includes(filterValue)) {\n button.classList.add(\"active\");\n }\n\n button.addEventListener(\"click\", () => {\n const index = this.propertyDataFilter.indexOf(filterValue);\n if (index == -1) {\n if (this.propertyFilterButtonsLimitOneActive == false) {\n this.propertyDataFilter.push(filterValue);\n } else {\n this.propertyDataFilter = [filterValue];\n }\n } else {\n this.propertyDataFilter.splice(index, 1);\n }\n this.prepUpdate();\n this.requestUpdate();\n });\n container.appendChild(button);\n }\n });\n return container;\n }\n\n private async fill(container: Element, dataArray: Array<FilteredCatalogData>, byFinishParamsFilteredDataArray: Array<FilteredCatalogData>) {\n if (this.optionTag.length > 0) {\n const results = new Array<HTMLElement>;\n\n if (this.propertyFilterButtons) {\n results.push(this.getPropertyDataFilterButtons(byFinishParamsFilteredDataArray));\n }\n\n dataArray.forEach((data: FilteredCatalogData) => {\n const title = this.createTitle(data.title);\n if (title !== undefined) results.push(title);\n\n // const filteredOptions = this.getFilteredOptions(this.categoriesButtonsFilter, this.dimensionsFilter, data.options);\n const filteredOptions = data[\"filtered-options\"] ? data[\"filtered-options\"] : data.options;\n const filterButtons = this.createFilterButtons(data, filteredOptions.length);\n if (filterButtons) {\n results.push(filterButtons);\n }\n\n const wrapper = this.createOptionsWrapper();\n filteredOptions.forEach((option) => {\n const optionElement = this.createOption(option);\n if (optionElement) {\n if (wrapper) {\n wrapper.appendChild(optionElement);\n } else {\n results.push(optionElement);\n }\n }\n });\n if (wrapper) {\n results.push(wrapper);\n }\n });\n\n container.innerHTML = \"\";\n for (const result of results) {\n container.appendChild(result);\n }\n if (this.scrollAble) {\n this.scrollAble.scrollTo(0, this.topScrollDist);\n }\n this.dispatchEvent(new CustomEvent(\"filtered-catalog-filled\", {\n bubbles: true,\n composed: true,\n detail: {\n empty: dataArray.length === 0,\n catalog: this\n }\n }))\n }\n }\n\n isEmpty(): boolean {\n const isEmpty = (element: Element) => {\n const isEmptyFunc = (<any>element).isEmpty;\n if(isEmptyFunc) return isEmptyFunc.call(element);\n return element.childElementCount === 0\n }\n return Array.from(this.querySelectorAll(\"*\")).every(x => isEmpty(x));\n }\n\n private async init() {\n await WebViewerService.IsAppReady;\n await this.readFinishParamsData();\n EventFactoryService.LastPOLoaded.register(() => {\n this.Update();\n });\n EventFactoryService.RefreshPropertyPanel.register(() => {\n this.Update();\n })\n this.requestUpdate();\n }\n\n constructor() {\n super();\n this.init();\n }\n\n\n private once = false;\n private count = 0;\n private oldDataArray: Array<FilteredCatalogData> | undefined = undefined;\n\n private async prepareContainers(containersToPrepare: NodeListOf<Element>, containersToHide: NodeListOf<Element>) {\n await WebViewerService.IsAppReady;\n\n\n const unfilteredDataArray: Array<FilteredCatalogData> = await this.GetData();\n const byFinishParamsFilteredDataArray: Array<FilteredCatalogData> = this.filterDataByFinishParamsFilterButtons(unfilteredDataArray);\n const dataArray = this.filterDataByPropertyFilterButtons(byFinishParamsFilteredDataArray) as Array<FilteredCatalogData>;\n\n const filteredOptionsDataArray = new Array<FilteredCatalogData>();\n dataArray.forEach((data: FilteredCatalogData) => {\n filteredOptionsDataArray.push({\n title: data.title,\n type: data.type,\n options: data.options,\n \"filtered-options\": this.getFilteredOptions(this.categoriesButtonsFilter, this.dimensionsFilter, data.options),\n propertyFilterValue: data.propertyFilterValue,\n catgoriesTexts: data.catgoriesTexts\n });\n });\n\n if (this.once == false || JSON.stringify(filteredOptionsDataArray) != JSON.stringify(this.oldDataArray) || this.count < 3) {\n containersToPrepare.forEach((container) => {\n this.fill(container, filteredOptionsDataArray, byFinishParamsFilteredDataArray);\n container.classList.remove(\"hidden\");\n });\n containersToHide.forEach((container) => {\n container.classList.add(\"hidden\");\n });\n\n this.once = true;\n this.oldDataArray = filteredOptionsDataArray;\n ++this.count;\n }\n }\n\n private topScrollDist = 0;\n private scrollAble: HTMLElement | undefined = undefined;\n\n private prepUpdate() {\n this.scrollAble = ComponentService.findScrollableParent(this);\n if (this.scrollAble) {\n this.topScrollDist = this.scrollAble.scrollTop;\n }\n }\n\n public async Update(forceReadFinishParamsData: boolean = false) {\n this.forceRefresh = true;\n\n this.prepUpdate();\n await this.readFinishParamsData(forceReadFinishParamsData);\n this.requestUpdate();\n }\n\n render(): TemplateResult<1> {\n const mobileContainers = this.querySelectorAll(\"[slot='mobile-container']\");\n const containers = this.querySelectorAll(\"[slot='container']\");\n\n if (this.mobile) {\n this.prepareContainers(mobileContainers, containers);\n return html`${this.createFinishParamsFilterButtons()}\n <slot name=\"before\"></slot>\n <slot name=\"mobile-container\"></slot>`;\n }\n this.prepareContainers(containers, mobileContainers);\n return html`${this.createFinishParamsFilterButtons()}\n <slot name=\"before\"></slot>\n <slot name=\"container\"></slot>`;\n }\n}\n","import { html, TemplateResult } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../components/standard/base/base.component\";\nimport { EventHandlerService } from \"../../utils/event.handler.service\";\nimport { ComponentService } from \"../../utils/component.service\";\nimport { FilteredCatalogComponent } from \"./filtered-catalog.component\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\nimport {IProgProperty, IProgPropertyProgram} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-filtered-catalog-toggle-button\")\nexport class FilteredCatalogToggleButtonComponent extends BaseElement {\n static styles = [\n super.styles || []\n ];\n\n @property({ type: Array, reflect: true, attribute: \"fv-button-classes\" })\n public buttonClasses: Array<string> = [];\n @property({ type: Array, reflect: true, attribute: \"fv-button-toggle-attributes\" })\n public buttonAttributes: Array<string> = [];\n @property({ type: String, reflect: true, attribute: \"text-overwrite\" })\n public textOverwrite = \"\";\n @property({ type: String, reflect: true, attribute: \"selector\" })\n public selector = \"\";\n @property({ type: String, reflect: true, attribute: \"no-values-txt-id\" })\n public noValuesTxtId = \"\";\n\n\n private anyTargetsHidden = false;\n private readTargetHiddenState() {\n this.anyTargetsHidden = false;\n const filteredCatalogs = ComponentService.findAll(\"fv-filtered-catalog\", this.selector);\n for (const filteredCatalog of filteredCatalogs) {\n if (filteredCatalog.classList.contains(\"hidden\")) {\n this.anyTargetsHidden = true;\n }\n }\n this.requestUpdate();\n }\n\n private propertyNames: Array<string> = [];\n private async init() {\n await WebViewerService.IsAppReady;\n FilteredCatalogComponent.RegisterPropertiesReadEvent(async (dataValue: IProgPropertyProgram)=>{\n const filteredCatalog = ComponentService.find(\"fv-filtered-catalog\", this.selector) as FilteredCatalogComponent;\n const properties: Array<IProgProperty> = FilteredCatalogComponent.FilterProgPropertyProgram(dataValue, filteredCatalog.filter);\n this.propertyNames = [];\n for (const property of properties) {\n this.propertyNames.push(property.name);\n }\n this.requestUpdate();\n });\n this.readTargetHiddenState();\n }\n\n constructor() {\n super();\n this.addEventListener(\"click\", (e: Event) => {\n if (this.buttonAttributes.includes(\"disabled\") || this.buttonClasses.includes(\"disabled\")) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n EventHandlerService.dispatch(\"toggle-classes\", {\n components: [{ name: \"fv-filtered-catalog\", selector: this.selector }],\n classes: [\"hidden\"]\n });\n\n this.readTargetHiddenState();\n });\n this.init();\n }\n\n private makeString(array: Array<string>): string {\n let result = \"\";\n array.forEach((entry: string)=>{\n result += \" \";\n result += entry;\n });\n return result;\n }\n\n render(): TemplateResult<1> {\n let text = html`NO TARGET FILTERED CATALOG FOUND!`;\n if (this.textOverwrite.length > 0) {\n text = html`${this.textOverwrite}`;\n }\n else {\n this.classList.remove(\"hidden\");\n if (this.propertyNames.length < 1) {\n if (this.noValuesTxtId.length > 0) {\n return html`<fv-label class=\"no-values-txt\" i18n=\"${this.noValuesTxtId}\">${this.noValuesTxtId}</fv-label>`;\n }\n this.classList.add(\"hidden\");\n }\n text = html`${this.propertyNames.map((propName: string, index: number)=>html`${ index < 1 ? propName : \", \" + propName}`)}`;\n }\n\n const classes = new Array<string>;\n classes.push(...this.buttonClasses);\n classes.push(...this.buttonAttributes);\n if (this.anyTargetsHidden == false) {\n classes.push(\"active\");\n }\n return html`<fv-button class=\"${this.makeString(classes)}\">${text}</fv-button>`;\n }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport style from \"./base-filtered-catalog-option.component.sass?inline\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { SikkensPickerComponent } from \"../../../colorpicker/sikkens\";\nimport { NcsPickerComponent } from \"../../../colorpicker/ncs\";\nimport { RalPickerComponent } from \"../../../colorpicker/ral\";\nimport {CommunicationMessageService, DragDropService} from \"@dh-software/webui-api\";\nimport {DragType, IColorPicker, IColorPickerChangeEventData, IDragOptions} from \"@dh-software/webui-types\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\n\nexport interface FilteredCatalogClickData {\n propTransfer?: {\n id: string,\n delete?: boolean,\n manufacturer?: string\n program?: string,\n instanceIdents?: Array<string | number>\n }\n property?: {\n manufacturer: string,\n program: string,\n key: string,\n property: string,\n propertyKey: string,\n colorPicker?: IColorPicker\n }\n article?: {\n nr: string,\n manufacturer: string,\n program: string,\n fitting: boolean\n }\n refresh?: boolean,\n postEvents?: Array<{\n id: string,\n data: EventHandlerEventData\n }>\n}\n\nexport class BaseFilteredCatalogOptionComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: Object, reflect: true, attribute: \"click-data\"})\n clickData: FilteredCatalogClickData = {};\n\n @property({type: String, reflect: true})\n img = \"\";\n\n @property({type: String, reflect: true})\n txt = \"\";\n\n @property({type: Object, reflect: true})\n dimensions: { x: number, y: number, z:number } = { x: 0, y: 0, z: 0 };\n\n @property({type: String, reflect: true, attribute: \"drag-image\"})\n dragImage = \"\";\n\n @property({type: Boolean, reflect: true, attribute: \"show-dimensions\"})\n showDimensions = false;\n\n @property({type: Object, reflect: true, attribute: \"remove-click-data\"})\n removeClickData: FilteredCatalogClickData | undefined = undefined;\n\n @property({type: String, reflect: true, attribute: \"remove-icon\"})\n removeIcon = \"\";\n\n @property({type: String, reflect: true, attribute: \"remove-img\"})\n removeImg = \"\";\n\n @property({type: String, reflect: true, attribute: \"remove-txt\"})\n removeTxt = \"\";\n\n @property({type: Object, reflect: true, attribute: \"property-modify-component\"})\n propertyModifyComponent = { click: false, dragdrop: false };\n\n @property({type: Boolean, reflect: true})\n active = false;\n\n @property({type: Boolean, reflect: true})\n dragable = false;\n\n private scrollableParent: HTMLElement | undefined = undefined;\n\n protected dragElement: Element = this;\n\n protected _colorPicker: RalPickerComponent | NcsPickerComponent | SikkensPickerComponent | undefined;\n\n private static async PropTransfer(clickData_: FilteredCatalogClickData) {\n if (clickData_.propTransfer) {\n if (clickData_.propTransfer.delete) {\n await CommunicationMessageService.deletePropTransfer({\n manufacturer: clickData_.propTransfer.manufacturer ? clickData_.propTransfer.manufacturer : window.g_article.manu,\n program: clickData_.propTransfer.program ? clickData_.propTransfer.program : window.g_article.prog,\n instanceIdents: clickData_.propTransfer.instanceIdents ? clickData_.propTransfer.instanceIdents : [],\n id: clickData_.propTransfer.id\n });\n return;\n }\n await CommunicationMessageService.startPropTransfer(clickData_.propTransfer.id);\n return;\n }\n }\n private static async Property(clickData_: FilteredCatalogClickData, modifyComponent_: boolean) {\n if (clickData_.property) {\n await CommunicationMessageService.modifyProperty(JSON.stringify(clickData_.property), modifyComponent_ ? { modifyComponent: true } : undefined);\n return;\n }\n }\n private static async Article(clickData_: FilteredCatalogClickData) {\n if (clickData_.article) {\n if (clickData_.article.fitting) {\n await CommunicationMessageService.loadFitting(clickData_.article.manufacturer, clickData_.article.program, clickData_.article.nr);\n return;\n }\n await CommunicationMessageService.loadArticle(clickData_.article.manufacturer, clickData_.article.program, clickData_.article.nr);\n }\n }\n private static async Refresh(clickData_: FilteredCatalogClickData) {\n if (clickData_.refresh) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: [{\n id: \"update-filtered-catalogs\",\n data: {\n components: [{ name: \"fv-filtered-catalog\", all: true }]\n }\n }]\n }));\n }\n }\n private static async CallPostEvents(clickData_: FilteredCatalogClickData) {\n if (clickData_.postEvents) {\n window.dispatchEvent(new EventHandlerDispatchEvent({\n async: false,\n events: clickData_.postEvents\n }));\n }\n }\n\n protected static async PerformClick(clickData_: FilteredCatalogClickData, propertyModifyComponent_: boolean): Promise<void> {\n await BaseFilteredCatalogOptionComponent.PropTransfer(clickData_);\n await BaseFilteredCatalogOptionComponent.Property(clickData_, propertyModifyComponent_);\n await BaseFilteredCatalogOptionComponent.Article(clickData_);\n await BaseFilteredCatalogOptionComponent.Refresh(clickData_);\n await BaseFilteredCatalogOptionComponent.CallPostEvents(clickData_);\n }\n\n\n protected async clicked(): Promise<void> {\n await BaseFilteredCatalogOptionComponent.PerformClick(this.clickData, this.propertyModifyComponent.click);\n }\n protected async removeClicked(): Promise<void> {\n if (this.removeClickData) {\n await BaseFilteredCatalogOptionComponent.PerformClick(this.removeClickData, this.propertyModifyComponent.click);\n }\n }\n private async triggerRemoveClick(e: Event): Promise<void> {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n await this.removeClicked();\n }\n protected async colorPickerChangeEvent(event: CustomEventInit<IColorPickerChangeEventData>) {\n if (this.clickData?.property && event.detail) {\n const data = event.detail;\n const modifyOptions = {\n modifyColorPicker: {\n code: data.code,\n rgb: `${data.rgba.r},${data.rgba.g},${data.rgba.b}`,\n key: this.clickData.property.propertyKey,\n id: this.clickData.property.key\n },\n modifyComponent: this.propertyModifyComponent.click,\n };\n await CommunicationMessageService.modifyProperty(JSON.stringify(this.clickData.property), modifyOptions);\n return;\n }\n }\n\n protected createColorPicker() {\n if (this.clickData.property?.colorPicker) {\n switch (this.clickData.property.colorPicker.type) {\n case \"RAL\":\n this._colorPicker = new RalPickerComponent();\n break;\n case \"NCS\":\n this._colorPicker = new NcsPickerComponent();\n break;\n case \"SIKKENS\":\n this._colorPicker = new SikkensPickerComponent();\n break;\n }\n\n this._colorPicker?.addEventListener(\"colorChange\", async (event_: CustomEventInit<IColorPickerChangeEventData>) => {\n await this.colorPickerChangeEvent(event_);\n });\n }\n }\n\n constructor() {\n super();\n\n this.addEventListener(\"click\", ()=>{\n this.clicked();\n });\n }\n\n protected buildRemoveButton(): TemplateResult<1> {\n if (this.removeIcon && this.removeIcon.length > 0) {\n return html`\n <button class=\"remove-button\" @click=\"${this.triggerRemoveClick}\" ${this.removeTxt && this.removeTxt.length > 0 ? html`title=\"${this.removeTxt}\"` : html``}>\n <i part=\"icon\" class=\"icon ${this.removeIcon}\"></i>\n </button>\n `;\n }\n if (this.removeImg && this.removeImg.length > 0) {\n return html`\n <button class=\"remove-button\" @click=\"${this.triggerRemoveClick}\" ${this.removeTxt && this.removeTxt.length > 0 ? html`title=\"${this.removeTxt}\"` : html``}>\n <img src=\"${this.removeImg}\">\n </button>\n `;\n }\n return html`\n <button class=\"remove-button\" @click=\"${this.triggerRemoveClick}\">\n ${this.removeTxt}\n </button>\n `;\n }\n\n render(): TemplateResult<1> {\n DragDropService.removeElement(this);\n if (this.dragable) {\n if (this.img.length > 0) {\n this.setAttribute(\"drag-image\", this.img);\n }\n this.scrollableParent = ComponentService.findScrollableParent(this);\n if (this.clickData.propTransfer) {\n DragDropService.addElement(this, {\n id: this.clickData.propTransfer.id,\n type: DragType.PROPTRANSFER\n }, this.scrollableParent);\n }\n else if (this.clickData.property) {\n const data: IDragOptions = {\n id: this.clickData.property.key,\n extData: this.clickData.property,\n type: DragType.PROGPROPERTY\n };\n if (this.propertyModifyComponent.dragdrop) {\n data.options = { modifyComponent: true };\n }\n DragDropService.addElement(this, data, this.scrollableParent);\n }\n else if (this.clickData.article) {\n let type = DragType.ARTICLE;\n if (this.clickData.article.fitting) {\n type = DragType.FITTING;\n }\n DragDropService.addElement(this, {\n id: this.clickData.article.nr,\n type: type\n }, this.scrollableParent);\n }\n }\n\n if (this.removeClickData) {\n return html`${this.buildRemoveButton()}`;\n }\n return html``;\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n\n // if (this.dragable) { // TODO Maybe?\n // if (this.removeClickData) {\n // const button = this.renderRoot.querySelector(\".remove-button\");\n // if (button) {\n // if (this.removeClickData.propTransfer) {\n // DragDropHelperService.addElement(button, {\n // id: this.removeClickData.propTransfer.id,\n // type: DragType.PROPTRANSFER\n // }, this.scrollableParent);\n // }\n // if (this.removeClickData.property) {\n // DragDropHelperService.addElement(button, {\n // id: this.removeClickData.property.key,\n // extData: this.removeClickData,\n // type: DragType.PROGPROPERTY\n // }, this.scrollableParent);\n // }\n // if (this.removeClickData.article) {\n // let type = DragType.ARTICLE;\n // if (this.removeClickData.article.fitting) {\n // type = DragType.FITTING;\n // }\n // DragDropHelperService.addElement(button, {\n // id: this.removeClickData.article.nr,\n // type: type\n // }, this.scrollableParent);\n // }\n // }\n // }\n // }\n }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, query } from \"lit/decorators.js\";\nimport { BaseFilteredCatalogOptionComponent } from \"../../base/base-filtered-catalog-option.component\";\nimport style from \"./filtered-catalog-labled-img-option.component.sass?inline\";\nimport { IDimensionSortItem, DimensionHelper } from \"../../../../../utils/dimension-helper.class\";\nimport {LocaleService} from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-filtered-catalog-option-labled-img\")\nexport class FilteredCatalogLabledImgOption extends BaseFilteredCatalogOptionComponent {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\".color-picker-container\")\n private _colorPickerContainer: HTMLDivElement | undefined;\n\n protected async clicked(): Promise<void> {\n await super.clicked();\n }\n\n constructor() {\n super();\n }\n\n private getDimensionDisplay(): TemplateResult<1> {\n if (this.showDimensions && this.dimensions.x && this.dimensions.y && this.dimensions.z) {\n const dimensionItems: IDimensionSortItem[] = [\n { key :\"B\", value: this.dimensions.x, params: { label: \"181\" } },\n { key :\"T\", value: this.dimensions.y, params: { label: \"182\" } },\n { key :\"H\", value: this.dimensions.z, params: { label: \"183\" } },\n ];\n DimensionHelper.sortDimensionsByOrder(dimensionItems);\n\n return html`\n <div class=\"dimensions-container\">\n ${dimensionItems.map(item => html`\n <label class=\"dimensions\">\n ${LocaleService.translate(item.params.label as string)}: ${(item.value * 0.1).toFixed(2)} cm\n </label>\n `)}\n </div>\n `;\n }\n return html``;\n }\n\n protected getColorPickerDisplay(): TemplateResult<1> {\n if (this.clickData.property?.colorPicker) {\n if (!this._colorPicker) {\n this.createColorPicker();\n }\n\n return html`\n <div class=\"color-picker-icon fv-icon-colors\" @click=\"${this.openColorPicker}\"></div>\n ${this.active ?\n html`\n <div class=\"color-picker-container\">\n <div class=\"cancel-button\" @click=\"${this.closeColorPicker}\">\n <span class=\"close-symbol\"></span>\n </div>\n ${this._colorPicker}\n </div>` : ``}\n `;\n }\n return html``;\n }\n\n private openColorPicker() {\n this._colorPickerContainer?.classList.remove(\"hidden\");\n }\n\n private closeColorPicker() {\n this._colorPickerContainer?.classList.add(\"hidden\");\n }\n\n render(): TemplateResult<1> {\n return html`\n ${super.render()}\n <div class=\"container${this.active ? \" active\" : \"\"}\">\n ${this.img.length > 0 ? html`<div class=\"img-container\"><div class=\"img-inner-container\"><img src=\"${this.img}\"/></div></div>` : html``}\n ${this.txt.length > 0 ? html`<div class=\"txt-container\"><label class=\"txt\">${this.txt}</label></div>` : html`${this.clickData.article}`}\n ${this.getDimensionDisplay()}\n ${this.getColorPickerDisplay()}\n </div>\n `;\n }\n}\n","import { css, TemplateResult, html, unsafeCSS } from \"lit\";\nimport style from \"./filtered-catalog-filter-buttons.component.sass?inline\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { FilteredCatalogData } from \"./filtered-catalog.component\";\n\n@customElement(\"fv-filtered-catalog-filter-buttons\")\nexport class FilteredCatalogComponentFilterButtons extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n private data: FilteredCatalogData = {\n title: \"\",\n type: \"\",\n options: []\n };\n public set Data(data_: FilteredCatalogData) {\n this.data = data_;\n }\n private optionsCount = 0;\n public set OptionsCount(optionsCount_: number) {\n this.optionsCount = optionsCount_;\n }\n\n private createFilterButtonsFunctions: Array<(data: FilteredCatalogData, currentOptionsCount: number)=>HTMLDivElement> = [];\n public addCreateFilterButtonsFunction(createFunction_: (data: FilteredCatalogData, currentOptionsCount: number)=>HTMLDivElement) {\n this.createFilterButtonsFunctions.push(createFunction_);\n }\n\n private createFilterButtons(): TemplateResult<1> {\n return html`\n ${this.createFilterButtonsFunctions.map((func)=>func(this.data, this.optionsCount))}\n `;\n }\n\n private clickHideButton() {\n const container = this.querySelector(\".filter-buttons-container\");\n container?.classList.toggle(\"toggled-off\");\n\n const styles = getComputedStyle(this);\n let duration = 1000;\n const durationString = styles.getPropertyValue(\"--filter-buttons-open-close-animation-duration\");\n if (durationString.length > 0) {\n if (durationString.includes(\"ms\")) {\n duration = parseInt(durationString.replace(\"ms\", \"\"));\n }\n if (durationString.includes(\"s\")) {\n duration = parseInt(durationString.replace(\"s\", \"\"));\n duration *= 1000;\n }\n }\n duration *= 0.5;\n\n const hideButton = this.querySelector(\".hide-button\");\n if (hideButton) {\n setTimeout(() => {\n hideButton.classList.toggle(\"fv-icon-eye-closed\");\n hideButton.classList.toggle(\"fv-icon-eye\");\n }, duration);\n }\n }\n private createHideButton(): TemplateResult<1> {\n return html`\n <fv-button class=\"hide-button fv-icon-eye-closed\" @click=\"${this.clickHideButton}\" style=\"--fv-button-html-button-min-width:0px;--button-span-margin:0px;\"></fv-button>\n `;\n }\n\n render(): TemplateResult<1> {\n return html`\n <div class=\"filter-buttons-container\">\n <div class=\"filter-buttons-inner-container ${this.classList.contains(\"hide-scrollbar\") ? \"hide-scrollbar\" : \"\"}\">\n ${this.createFilterButtons()}\n </div>\n <div class=\"hide-button-container\">\n ${this.createHideButton()}\n </div>\n </div>\n `;\n }\n}","import {css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./pdf-viewer.component.sass?inline\";\nimport {customElement, query} from \"lit/decorators.js\";\nimport {BaseElement} from \"../standard/base/base.component\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\n\nclass PDFShadowDocument {\n constructor(documentFragment: ShadowRoot) {\n for (const key in document) {\n if (documentFragment && (documentFragment as unknown as { [key: string]: unknown })[key]) {\n if ((documentFragment as unknown as { [key: string]: unknown })[key] instanceof Function) {\n (this as unknown as { [key: string]: unknown })[key] = (...args: []) => {\n return (documentFragment as unknown as {\n [key: string]: (...args: []) => unknown\n })[key](...args);\n };\n } else {\n try {\n (this as unknown as { [key: string]: unknown })[key] = (documentFragment as unknown as {\n [key: string]: unknown\n })[key];\n } catch (e) {\n console.error(e);\n }\n }\n } else {\n try {\n if ((document as unknown as { [key: string]: unknown })[key] instanceof Function) {\n (this as unknown as { [key: string]: unknown })[key] = (...args: []) => {\n return (document as unknown as {\n [key: string]: (...args: []) => unknown\n })[key](...args);\n };\n } else {\n (this as unknown as { [key: string]: unknown })[key] = (document as unknown as {\n [key: string]: unknown\n })[key];\n }\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n}\n\n@customElement(\"fv-pdf-viewer\")\nexport class PDFViewerComponent extends BaseElement {\n static styles: CSSResultGroup[] = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\".loading\")\n private loadingIcon?: HTMLDivElement;\n\n private opened = false;\n\n constructor() {\n super();\n }\n\n private body_position?: string;\n private isInitialized?: Promise<boolean>;\n\n private async initialize() {\n await WebViewerService.IsAppReady;\n if (this.isInitialized) {\n await this.isInitialized;\n return;\n }\n window.addEventListener(\"beforeprint\", () => {\n this.dispatchEvent(new CustomEvent(\"onBeforePrint\", {}));\n });\n window.addEventListener(\"afterprint\", () => {\n this.dispatchEvent(new CustomEvent(\"onAfterPrint\", {}));\n });\n this.loadingIcon?.classList.remove(\"hidden\");\n this.isInitialized = new Promise((resolve, reject) => {\n const pdfJS: HTMLScriptElement = this.shadowRoot?.appendChild(Object.assign(document.createElement(\"script\"), {src: window.location.origin + \"/pdfjs/build/pdf.js\"})) as HTMLScriptElement;\n pdfJS.onload = () => {\n // @ts-ignore\n (window.pdfjsLib.GlobalWorkerOptions as {\n [key: string]: string\n }).workerSrc = window.location.origin + \"/pdfjs/build/pdf.worker.js\";\n this.shadowRoot?.appendChild(Object.assign(document.createElement(\"link\"), {\n rel: \"stylesheet\",\n href: window.location.origin + \"/pdfjs/web/viewer.css\"\n }));\n this.shadowRoot?.appendChild(Object.assign(document.createElement(\"link\"), {\n rel: \"resource\",\n type: \"application/l10n\",\n href: window.location.origin + \"/pdfjs/web/locale/locale.properties\"\n }));\n this.shadowRoot?.appendChild(Object.assign(document.createElement(\"script\"), {src: window.location.origin + \"/pdfjs/web/pdf_extension.js\"}));\n const viewer: HTMLScriptElement = this.shadowRoot?.appendChild(Object.assign(document.createElement(\"script\"), {src: window.location.origin + \"/pdfjs/web/viewer.js\"})) as HTMLScriptElement;\n viewer.onload = () => {\n resolve(true);\n };\n viewer.onerror = reject;\n };\n pdfJS.onerror = reject;\n });\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n if (this.shadowRoot) { // @ts-ignore\n window[\"pdfShadowDocument\"] = new PDFShadowDocument(this.shadowRoot);\n }\n this.initialize();\n }\n\n public close() {\n // @ts-ignore\n window[\"PDFViewerApplication\"].close();\n this.opened = false;\n this.classList.add(\"hidden\");\n document.querySelector(\"html\")?.classList.remove(\"print\");\n document.querySelector(\"body\")?.classList.remove(\"print\");\n this.dispatchEvent(new CustomEvent(\"onClose\", {}));\n }\n\n public show() {\n this.classList.remove(\"hidden\");\n if (!this.opened) {\n this.loadingIcon?.classList.remove(\"hidden\");\n }\n this.dispatchEvent(new CustomEvent(\"onShow\", {}));\n }\n\n public async open(url: string) {\n await this.updateComplete;\n await this.initialize();\n document.querySelector(\"html\")?.classList.add(\"print\");\n document.querySelector(\"body\")?.classList.add(\"print\");\n this.loadingIcon?.classList.add(\"hidden\");\n // @ts-ignore\n window[\"PDFViewerApplication\"].open({url: url});\n this.opened = true;\n this.dispatchEvent(new CustomEvent(\"onOpen\", {}));\n }\n\n private print() {\n\n if (this.opened) {\n window.print();\n }\n\n }\n\n private download() {\n if (this.opened) {\n // @ts-ignore\n window[\"PDFViewerApplication\"].download({});\n }\n }\n\n protected render(content: TemplateResult = html``) {\n return html`\n <button class=\"close-symbol\" @click=${this.close}></button>\n <button class=\"print-symbol\" @click=${this.print}><i></i></button>\n <button class=\"download-symbol\" @click=${this.download}><i></i></button>\n <div class=\"loading hidden\"><i></i></div>\n <div class=\"body\">\n <div id=\"outerContainer\">\n <div id=\"loadingBar\">\n <div class=\"progress\">\n <div class=\"glimmer\">\n </div>\n </div>\n </div>\n <div id=\"mainContainer\">\n <div id=\"viewerContainer\" tabindex=\"0\">\n <div id=\"viewer\" class=\"pdfViewer\"></div>\n </div>\n </div> <!-- mainContainer -->\n\n <div id=\"dialogContainer\">\n <dialog id=\"printServiceDialog\" style=\"min-width: 200px;\">\n <div class=\"row\">\n <span data-l10n-id=\"print_progress_message\">Preparing document for printing…</span>\n </div>\n <div class=\"row\">\n <progress value=\"0\" max=\"100\"></progress>\n <span data-l10n-id=\"print_progress_percent\" data-l10n-args='{ \"progress\": 0 }'\n class=\"relative-progress\">0%</span>\n </div>\n <div class=\"buttonRow\">\n <button id=\"printCancel\" class=\"dialogButton\"><span data-l10n-id=\"print_progress_close\">Cancel</span>\n </button>\n </div>\n </dialog>\n </div> <!-- dialogContainer -->\n\n </div> <!-- outerContainer -->\n <div id=\"printContainer\"></div>\n </div>\n `;\n }\n}\n","import { css, html, LitElement, PropertyValueMap, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./cloud-id.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { UtilService } from \"../../../utils/util.service\";\nimport { InputComponent } from \"../../standard/input\";\nimport { ConfirmingButtonComponent, ButtonComponent } from \"../../standard/button\";\nimport { CloudIdService } from \"../../../utils/cloud-id.service\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport {UtilityService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-cloud-id\")\nexport class CloudIdComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true, attribute: \"readonly\" })\n public _readonly?: boolean;\n\n @property({ type: String, reflect: true, attribute: \"observable\" })\n private _observable?: string;\n\n @property({ type: String, attribute: \"observe-attr\" })\n private _observeAttr?: string;\n\n @property({ type: Boolean, reflect: true, attribute: \"hide-button\" })\n public _hideButton = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"loading\" })\n public _loading = true;\n\n @property({ type: Boolean, reflect: true, attribute: \"disable-fetch\" })\n public _disableFetch = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"reset-ui-manu-prog\" })\n public _resetUserinterfaceManuProg = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"clear-after-action\" })\n public _clearAfterAction = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"icon-button\" })\n public _iconButton = false;\n\n @property({ type: String, reflect: true, attribute: \"button-title-text\" })\n public _buttonTitleText = \"\";\n\n private _observer?: MutationObserver;\n\n @query(\"#cloud-id-input\")\n private _cloudIDInput?: InputComponent;\n\n @query(\"#action-button\")\n private _actionButton?: ConfirmingButtonComponent | ButtonComponent;\n\n\n constructor() {\n super();\n\n this.addHideStateUpdatedEventListener((value: boolean)=>{\n if (!value) {\n this.updateData();\n }\n });\n }\n\n protected updated(_changedProperties: PropertyValueMap<unknown>) {\n super.updated(_changedProperties);\n\n // const parentElement = (this._observable ? document.querySelector(this._observable) : this.parentElement) as LitElement;\n // if (parentElement && this._observeAttr && !this._observer) {\n // this._observer = new MutationObserver(mutations => {\n // mutations.forEach(mutation => {\n // if (this._observeAttr && mutation.type === \"attributes\") {\n // if ((mutation.attributeName === this._observeAttr && (mutation.target as LitElement).getAttribute(this._observeAttr) !== null) || (mutation.attributeName === \"class\" && !(mutation.target as LitElement).classList.contains(\"hidden\"))) { //TODO change Hidden\n // this.updateData();\n // }\n // }\n // });\n // });\n // this._observer.observe(parentElement, { attributes: true });\n // }\n }\n\n get CloudID(): string {\n return this._cloudIDInput?.value || \"\";\n }\n\n get MoveablePlaceHolder(): boolean {\n return this.classList.contains(\"moveable-placeholder\")\n }\n\n get HoverButton(): boolean {\n return this._actionButton !== undefined && this.classList.contains(\"custom-hover-border\");\n }\n\n public async updateData(): Promise<string> {\n this._loading = true;\n\n if (this._disableFetch) {\n this._actionButton?.removeAttribute(\"disabled\");\n this._loading = false;\n if (this._actionButton instanceof ConfirmingButtonComponent) {\n this._actionButton?.reset();\n }\n return \"\";\n }\n\n const cloudId = await CloudIdService.createCloudId();\n if (cloudId != undefined) {\n if (this._cloudIDInput) this._cloudIDInput.value = cloudId;\n this._actionButton?.removeAttribute(\"disabled\");\n this._loading = false;\n if (this._actionButton instanceof ConfirmingButtonComponent) {\n this._actionButton?.reset();\n }\n return cloudId;\n }\n if (this._cloudIDInput) this._cloudIDInput.value = \"\";\n await UtilService.delay(5000);// try again if connection failed!\n return this.updateData();\n // return CommunicationMessageService.createCloudID().then((cloudId) => {\n // if (this._cloudIDInput) this._cloudIDInput.value = cloudId;\n // this._actionButton?.removeAttribute(\"disabled\");\n // this._loading = false;\n // return;\n // });\n }\n\n private onChange() {\n if (this._actionButton && this._actionButton)\n if (CloudIdService.isCloudIdValid(this._cloudIDInput!.value.trim())) {\n this._actionButton.removeAttribute(\"disabled\");\n }\n else {\n this._actionButton.setAttribute(\"disabled\", \"\");\n }\n }\n\n private async openCloudId() {\n if (this._actionButton && this._cloudIDInput) {\n if (this._actionButton.getAttribute(\"disabled\") === null) {\n await UtilService.openCloudId(this._cloudIDInput.value, this._resetUserinterfaceManuProg);\n await EventHandlerService.dispatchAsyncEvent(\"update-animation-toolbar-button\", {});\n window.dispatchEvent(new CustomEvent(\"onCloudId\", { detail: { cloudid: this._cloudIDInput.value } }));\n }\n }\n }\n\n private async copyCloudId() {\n if (this._cloudIDInput) {\n await UtilityService.copyTextToClipboard(this._cloudIDInput.value);\n }\n }\n\n private async clickButton() {\n if (this._readonly) {\n await this.copyCloudId();\n }\n else {\n await this.openCloudId();\n }\n\n if (this._clearAfterAction && this._cloudIDInput) {\n this._cloudIDInput.value = \"\";\n this.onChange();\n }\n\n if (this._actionButton && this._actionButton instanceof ConfirmingButtonComponent) {\n this._actionButton.confirm();\n await UtilService.delay(3000);\n this._actionButton.reset();\n }\n }\n\n private createHideButton(): TemplateResult<1> {\n if (!this._hideButton) {\n if (this._iconButton) {\n const buttonIcon = !this._readonly ? \"fv-icon-cloud-download\" : \"fv-icon-content-copy\";\n return html`\n <fv-button\n id=\"action-button\"\n class=\"action-button ${this.HoverButton ? \"custom-hover-border\" : \"\"}\"\n i18n-title=\"${this._buttonTitleText}\"\n @click=\"${this.clickButton}\"\n disabled\n icon=\"${buttonIcon}\">\n </fv-button>`;\n }\n const readOnly = !this._readonly ? \"20011\" : \"fs.broadcaster.copy_tooltip\";\n const confirmTxt = !this._readonly ? \"fv.opened\" : \"fv.copied\";\n return html`\n <fv-confirming-button\n id=\"action-button\"\n class=\"action-button\"\n i18n-title=\"${this._buttonTitleText}\"\n txt=\"${readOnly}\"\n confirm-txt=\"${confirmTxt}\"\n @click=\"${this.clickButton}\"\n disabled>\n </fv-confirming-button>`;\n }\n return html``;\n }\n\n render(): TemplateResult<1> {\n const titleText = !this._readonly ? \"fv.modal.open_existing_planning_number\" : \"fv.modal.your_planning_number\";\n return html`\n ${!this.MoveablePlaceHolder ? html`<fv-label i18n=\"${titleText}\"></fv-label>` : html``}\n <fv-input\n id=\"cloud-id-input\"\n @change=\"${this.onChange}\"\n ?readonly=${this._readonly}\n ?moveable-placeholder=${this.MoveablePlaceHolder}\n label=\"${titleText}\"\n placeholder=\"${this.MoveablePlaceHolder ? titleText : \"\"}\">\n ${this._loading ? html`<div class=\"loader-container\"><slot name=\"loader\"></slot></div>` : html``}\n ${this.createHideButton()}\n </fv-input>`\n }\n\n firstUpdated() {\n if (!this._readonly && this._disableFetch) {\n this._loading = false;\n }\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./download.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { ButtonComponent } from \"../../standard/button\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DropDownComponent } from \"../../standard/dropdown\";\nimport { SessionStorageService } from \"../../../utils/session-storage.service\"\n\n@customElement(\"fv-download\")\nexport class DownloadComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @query(\"#action-button\")\n private _actionButton?: ButtonComponent;\n\n @query(\"#action-type\")\n private _actionTypeDropdown?: DropDownComponent;\n\n @property({ type: Boolean, reflect: true, attribute: \"without-text\" })\n private _withoutText = false;\n\n @property({ type: Array, state: true })\n private _downloadTypes: Array<string> = [];\n\n @property({ type: Boolean, reflect: true, attribute: \"bordered-button\" })\n private _borderedButton = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"custom-hover-button\" })\n private _customHoverButton = false;\n\n @property({ type: Boolean, reflect: true, attribute: \"custom-click-button\" })\n private _customClickButton = false;\n\n @property({ type: String, reflect: true, attribute: \"button-text\" })\n private _buttonText = \"20244\";\n\n @property({ type: String, reflect: true, attribute: \"button-type\" })\n private _buttonType = \"pdf\";\n\n @property({ type: Boolean, reflect: true, attribute: \"furncloud-request\" })\n private _isFurncloudRequest = false;\n\n @property({ type: String, reflect: true, attribute: \"session-storage-key\" })\n private _sessionStorageKey = \"\";\n\n @property({ type: String, reflect: true, attribute: \"password-modal-query\" })\n private _passwordModalQuery = \".general-modal\";\n\n @property({ type: String, reflect: true, attribute: \"password-modal-mask\" })\n private _passwordModalMask = \"password-mask\";\n\n set DownloadTypes(value: Array<string>) {\n this._downloadTypes = value;\n }\n\n constructor() {\n super();\n }\n\n private async downloadFile() {\n const fileType = this._downloadTypes?.length === 0 ? this._buttonType || \"pdf\" : this._actionTypeDropdown?.value || \"pdf\";\n if (this._isFurncloudRequest) {\n const hasFurncloudPassword = SessionStorageService.has(this._sessionStorageKey);\n if (!hasFurncloudPassword) {\n EventHandlerService.dispatch(\"open-modal\", {\n query: this._passwordModalQuery,\n mask: this._passwordModalMask,\n data: {\n eventsToDispatch: [\n {\n id: \"download-furncloud-file\",\n data: {\n fileType: fileType,\n sessionStorageKey: this._sessionStorageKey\n }\n }\n ],\n sessionStorageKey: this._sessionStorageKey,\n }\n });\n }\n else {\n EventHandlerService.dispatch(\"download-furncloud-file\", {\n fileType: fileType,\n sessionStorageKey: this._sessionStorageKey\n });\n }\n }\n else {\n EventHandlerService.dispatch(\"download-generated-file\", {\n fileType: fileType,\n lastCloudID: true,\n currentTarget: this._actionButton,\n });\n }\n }\n\n render(): TemplateResult<1> {\n const dropdownTypeClass = {\n hidden: (this._downloadTypes?.length === 0)\n };\n const buttonClasses = {\n bordered: this._borderedButton,\n \"custom-hover-border\": this._customHoverButton,\n \"custom-click-color\": this._customClickButton\n };\n return html`\n <div class=\"container column ${this._withoutText ? \"hidden\" : \"\"}\">\n <fv-label class=\"header space after\" i18n=\"20244\"></fv-label>\n <fv-label class=\"space after\" i18n=\"fv.modal.download.text\"></fv-label>\n </div>\n <div class=\"container row\">\n <fv-dropdown class=\"${classMap(dropdownTypeClass)}\" id=\"action-type\"></fv-dropdown>\n <fv-button id=\"action-button\" i18n=\"${this._buttonText}\"\n class=${classMap(buttonClasses)}\n @click=\"${this.downloadFile}\">\n <fv-loading slot=\"loader-slot\"></fv-loading>\n </fv-button>\n </div>\n `;\n }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { PropertyValues, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./legend.component.sass?inline\";\nimport {LocaleService} from \"@dh-software/webui-api\";\n\nexport interface LegendEntry {\n key: string,\n value: string\n}\n\n@customElement(\"fv-legend\")\nexport class LegendComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Array, reflect: true, attribute: \"entries\" })\n public entries?: LegendEntry[]\n\n constructor() {\n super();\n LocaleService.Register(this);\n }\n\n protected render(): TemplateResult<1> {\n return html`<fv-flex-container class=\"legend-column\">\n ${this.entries?.map((x) => \n {\n return html`<fv-flex-container class=\"legend-row\"><fv-label i18n=\"${x.key}\">${x.key}</fv-label><fv-label i18n=\"${x.value}\">${x.value}</fv-label></fv-flex-container>`;\n })}\n </fv-flex-container>`;\n }\n}\n","import { BaseElement } from \"../standard/base/base.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\n\nimport style from \"./external-widget.compoent.sass?inline\";\nimport {IGetWidgetPositionParams} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-external-widget\")\nexport class ExternalWidgetComponent extends BaseElement {\n\n static styles = [super.styles || [], unsafeCSS(style)];\n\n private _timer?: number;\n\n @property({ type: Array, reflect: true, attribute: \"instance-idents\" })\n public _instanceIdents?: Array<number>;\n\n @property({ type: Object, reflect: true, attribute: \"position-vector\" })\n public _positionVector?: IGetWidgetPositionParams;\n\n @property({ type: Boolean, reflect: true, attribute: \"check-frustum\" })\n public _checkFrustum: boolean = false;\n\n @property({ type: Number, reflect: true, attribute: \"update-timeout\" })\n public _updateTimeout?: number = 100;\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n this.createUpdateScheduler();\n }\n\n disconnectedCallback(): void {\n this.cancelUpdateScheduler();\n super.disconnectedCallback();\n }\n\n render(): TemplateResult<1> {\n return html`\n <slot></slot>\n `;\n }\n\n protected updated(_changedProperties: PropertyValues) {\n if (_changedProperties.has(\"_updateTimeout\")) {\n this.createUpdateScheduler();\n }\n super.updated(_changedProperties);\n }\n\n private async onUpdate() {\n if (this._positionVector) {\n const position = await CommunicationMessageService.getWidgetPosition(this._instanceIdents || [], this._positionVector, this.getBoundingClientRect());\n if (position && position.length) {\n const item = position[0];\n this.style.top = item.y;\n this.style.left = item.left ? item.x : \"\";\n this.classList.remove(\"hidden\");\n if (!item.pointer && this._checkFrustum) {\n this.classList.add(\"hidden\");\n }\n }\n }\n }\n\n private createUpdateScheduler() {\n if (this._timer) {\n this.cancelUpdateScheduler();\n }\n this._timer = window.setInterval(this.onUpdate.bind(this), this._updateTimeout);\n }\n\n private cancelUpdateScheduler() {\n if (this._timer) {\n window.clearInterval(this._timer);\n this._timer = undefined;\n }\n }\n\n}\n","import { BaseElement } from \"../base/base.component\";\nimport { css, html, PropertyDeclaration, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./manu-prog-info.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport {CommunicationMessageService, EventHandler, EventService} from \"@dh-software/webui-api\";\nimport {ifDefined} from \"lit/directives/if-defined.js\";\nimport {ManuProgService} from \"../../../utils/manu-prog.service\";\n\n@customElement(\"fv-manu-prog-info\")\nexport class ManuProgInfoComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Boolean, reflect: true, attribute: \"show-manu-name\" })\n public showManuName = true;\n\n @property({ type: Boolean, reflect: true, attribute: \"show-prog-name\" })\n public showProgName = true;\n\n @property({type: String, reflect: true, attribute: \"label-class\" })\n public labelClass = \"\";\n\n private _manufacturerName = \"\";\n private _programName = \"\";\n\n constructor() {\n super();\n EventService.register(this);\n }\n\n @EventHandler(\"set-manu-prog\")\n private onManuProgChanged() {\n this.requestUpdate();\n }\n\n private async fetchDisplayNames() {\n const manufacturer = await ManuProgService.getManufacturer()\n const program = await ManuProgService.getProgram();\n const displayNames = await CommunicationMessageService.getDisplayNameManuProg(manufacturer.toLowerCase(), program.toLowerCase());\n if (displayNames) {\n this._manufacturerName = displayNames.ManuL;\n this._programName = displayNames.ProgL;\n }\n }\n\n private renderManuProgText() {\n return html`\n ${(this.showManuName || this.showProgName)\n ? html`<fv-label class=\"${ifDefined(this.labelClass)}\">${this.showManuName ? this._manufacturerName : ''} ${this.showProgName ? this._programName : ''}</fv-label>`\n : ``}\n `;\n }\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n await this.fetchDisplayNames();\n super.firstUpdated(_changedProperties);\n }\n\n async requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n await this.fetchDisplayNames();\n super.requestUpdate(name, oldValue, options);\n }\n\n protected render() {\n return this.renderManuProgText();\n }\n}\n","import { css, html, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./select.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { SelectionChangeEventInit } from \"./select-option.component\";\nimport { InputComponent } from \"../input/input/input.component\";\n\n\nexport type PopUpChangeEventInit = CustomEventInit<{ open: boolean, element: SelectComponent }>;\nclass PopUpChangeEvent extends CustomEvent<{ open: boolean, element: SelectComponent }> {\n constructor(open: boolean, element: SelectComponent) {\n super(\"popupchange\", {\n bubbles: true,\n composed: true,\n detail: { open: open, element: element }\n } as PopUpChangeEventInit);\n }\n}\n\n@customElement(\"fv-select\")\nexport class SelectComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"selected\" })\n public selected: string | undefined = undefined;\n\n @property({ type: String, reflect: true, attribute: \"selected-display-value\" })\n public selectedDisplayValue: string | undefined = undefined;\n\n @property({ type: String, reflect: true, attribute: \"placeholder\" })\n public placeholder: string | undefined = \"\";\n\n @property({ type: Number, reflect: true, attribute: \"max-amount-select-by-buttons\" })\n public maxAmountSelectByButtons = 3;\n\n @property({ type: Boolean, reflect: true, attribute: \"open\" })\n public open = false;\n\n @property({ type: Number, reflect: true, attribute: \"close-on-selection-max-options-count\" })\n public closeOnSelectionMaxOptionsCount = 2;\n\n @query(\".options-popup\")\n protected optionsPopup: HTMLDivElement | undefined;\n\n @query(\"fv-input\")\n protected input: InputComponent | undefined;\n\n @query(\".select-button\")\n protected selectButton: HTMLDivElement | undefined;\n\n\n constructor() {\n super();\n\n this.addEventListener(\"selectionchange\", (event: SelectionChangeEventInit)=>{\n if (event.detail && this.input) {\n this.selected = event.detail.option;\n this.selectedDisplayValue = event.detail.element.displayValue != undefined ? event.detail.element.displayValue : this.selected;\n this.input.value = this.selectedDisplayValue;\n if (this.closeOnSelectionMaxOptionsCount < this.children.length) {\n this.openPopup();\n }\n else {\n // this.input?.closePopup();\n }\n }\n });\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n\n this.input?.addEventListener(\"blur\", ()=>{\n this.open = false;\n this.dispatchEvent(new PopUpChangeEvent(this.open, this));\n });\n }\n\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.updated(_changedProperties);\n\n this.childNodes.forEach(child => {\n if (!(child instanceof HTMLElement)) return;\n if (!child.hasAttribute(\"option\")) return;\n\n\n if (this.children.length > this.maxAmountSelectByButtons) {\n child.setAttribute(\"option-in-popup\", \"\");\n }\n else {\n child.removeAttribute(\"option-in-popup\");\n }\n\n\n const optionDuringUpdate = child.getAttribute(\"option\");\n if (this.selected == optionDuringUpdate) {\n child.setAttribute(\"selected-option\", \"\");\n }\n else {\n child.removeAttribute(\"selected-option\");\n }\n });\n }\n\n public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n super.attributeChangedCallback(name, _old, value);\n\n if (name === \"open\") {\n if (this.optionsPopup && this.selectButton) {\n if (value != undefined) {\n this.optionsPopup.classList.add(\"open\");\n this.selectButton.classList.add(\"open\");\n }\n else {\n this.optionsPopup.classList.remove(\"open\");\n this.selectButton.classList.remove(\"open\");\n }\n }\n }\n }\n\n protected openPopup(event?: Event) {\n event?.stopPropagation();\n event?.stopImmediatePropagation();\n event?.preventDefault();\n\n this.open = !this.open;\n this.dispatchEvent(new PopUpChangeEvent(this.open, this));\n if (this.open) {\n this.input?.focus();\n }\n }\n\n render(): TemplateResult<1> {\n if (this.children.length > this.maxAmountSelectByButtons) {\n return html`\n <div class=\"select\">\n <div class=\"select-button\" @click=\"${this.openPopup}\">\n <fv-input placeholder=\"${this.placeholder ? this.placeholder : \"\"}\" readonly value=\"${this.selectedDisplayValue ? this.selectedDisplayValue : (this.selected ? this.selected : \"\")}\"></fv-input>\n <div class=\"select-button-arrow\"><fv-arrow-component></fv-arrow-component></div>\n </div>\n <div class=\"options-popup\"><fv-flex-container><slot></slot></fv-flex-container></div>\n </div>\n `;\n }\n return html`<fv-flex-container class=\"buttons-container\"><slot></slot></fv-flex-container>`;\n }\n}","import { css, html, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./select-option.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n\nexport type SelectionChangeEventInit = CustomEventInit<{ option: string, element: SelectOptionComponent }>;\nclass SelectionChangeEvent extends CustomEvent<{ option: string, element: SelectOptionComponent }> {\n constructor(option: string, element: SelectOptionComponent) {\n super(\"selectionchange\", {\n bubbles: true,\n composed: true,\n detail: { option: option, element: element }\n } as SelectionChangeEventInit);\n }\n}\n\n\n@customElement(\"fv-select-option\")\nexport class SelectOptionComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: String, reflect: true, attribute: \"option\" })\n public option: string | undefined = undefined;\n\n @property({ type: String, reflect: true, attribute: \"display-value\" })\n public displayValue: string | undefined = undefined;\n\n constructor() {\n super();\n\n this.addEventListener(\"click\", ()=>{\n if (this.option) {\n this.dispatchEvent(new SelectionChangeEvent(this.option, this));\n }\n else {\n console.error(\"option attribute was not defined on:\", this);\n }\n });\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n }\n\n protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n super.updated(_changedProperties);\n }\n\n render(): TemplateResult<1> {\n return html`<slot></slot>`;\n }\n}","import {BaseElement} from \"../standard/base/base.component\";\nimport {customElement} from \"lit/decorators.js\";\nimport {html, PropertyValues, unsafeCSS} from \"lit\";\nimport {ConfigurationService, WebViewerService} from \"@dh-software/webui-api\";\nimport style from \"./webviewer.component.sass?inline\";\n\n@customElement('fv-webviewer')\nexport class WebViewerComponent extends BaseElement {\n\n static styles = [\n super.styles || [],\n unsafeCSS(style)\n ]\n\n protected async firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n await ConfigurationService.Initialized;\n WebViewerService.initialize(this.shadowRoot?.querySelector('iframe') || undefined);\n }\n\n render() {\n return html`\n <iframe></iframe>\n `\n }\n\n}\n","import {css, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport style from \"./pagination.component.sass?inline\";\nimport {EventHandlerService} from \"../../../utils/event.handler.service\";\nimport {EventHandlerEvent} from \"../../../models/event-handler/event.handler.model\";\nimport {classMap} from \"lit/directives/class-map.js\";\n\nexport type PaginationEvent = EventHandlerEvent & { userInteraction?: boolean };\n\nexport interface IPaginationEvents {\n [key: number]: PaginationEvent[];\n\n first?: PaginationEvent[];\n last?: PaginationEvent[];\n any?: PaginationEvent[];\n}\n\n@customElement(\"fv-pagination\")\nexport class PaginationComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({type: Number, reflect: true})\n public current: number = 0;\n\n @property({type: Number, reflect: true})\n public total: number = 0;\n\n @property({type: Boolean, reflect: true, attribute: \"auto-hide-slots\"})\n public autoHideSlots = false;\n\n @property({type: Object, reflect: false})\n public events: IPaginationEvents = {};\n\n @property({type: Boolean, reflect: true, attribute: \"prevent-empty-handler-selection\"})\n public preventEmptyHandlers = false;\n\n @property({type: Boolean, reflect: true, attribute: \"prevent-default-handler\"})\n public preventDefaultHandlers = false;\n\n private _beforeFirstElement: Element | null = null;\n private _afterFirstElement: Element | null = null;\n\n /** True only while a page change originated from a user click. */\n private _isUserInteraction = false;\n\n private readonly _prevHandler = () => {\n !this.preventDefaultHandlers && this.handlePageClick(Math.max(0, this.current - 1));\n };\n private readonly _nextHandler = () => {\n !this.preventDefaultHandlers && this.handlePageClick(Math.min(this.total - 1, this.current + 1));\n };\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n super.firstUpdated(_changedProperties);\n\n this.shadowRoot!.querySelector<HTMLSlotElement>('slot[name=\"before\"]')!\n .addEventListener('slotchange', (e) => {\n this._beforeFirstElement?.removeEventListener('click', this._prevHandler);\n this._beforeFirstElement = (e.target as HTMLSlotElement).assignedElements()[0] ?? null;\n this._beforeFirstElement?.addEventListener('click', this._prevHandler);\n });\n\n this.shadowRoot!.querySelector<HTMLSlotElement>('slot[name=\"after\"]')!\n .addEventListener('slotchange', (e) => {\n this._afterFirstElement?.removeEventListener('click', this._nextHandler);\n this._afterFirstElement = (e.target as HTMLSlotElement).assignedElements()[0] ?? null;\n this._afterFirstElement?.addEventListener('click', this._nextHandler);\n });\n }\n\n disconnectedCallback(): void {\n this._beforeFirstElement?.removeEventListener('click', this._prevHandler);\n this._afterFirstElement?.removeEventListener('click', this._nextHandler);\n super.disconnectedCallback();\n }\n\n private _hasEventsForPage(page: number): boolean {\n if ((this.events[page]?.length ?? 0) > 0) return true;\n if (page === 0 && (this.events.first?.length ?? 0) > 0) return true;\n if (page === this.total - 1 && (this.events.last?.length ?? 0) > 0) return true;\n return (this.events.any?.length ?? 0) > 0;\n }\n\n private async dispatchEventList(events: PaginationEvent[]): Promise<void> {\n for (const event of events) {\n if (event.userInteraction !== undefined && event.userInteraction !== this._isUserInteraction) continue;\n await EventHandlerService.dispatchAsyncEvent(event.id, event.data ?? {});\n }\n }\n\n private async triggerPageEvents(): Promise<void> {\n const pageEvents = this.events[this.current];\n if (pageEvents?.length > 0) {\n await this.dispatchEventList(pageEvents);\n }\n\n if (this.events.any && this.events.any.length > 0) {\n await this.dispatchEventList(this.events.any);\n }\n\n if (this.current === 0 && this.events.first && this.events.first.length > 0) {\n await this.dispatchEventList(this.events.first);\n }\n\n if (this.current === this.total - 1 && this.events.last && this.events.last.length > 0) {\n await this.dispatchEventList(this.events.last);\n }\n }\n\n private async handlePageClick(page: number): Promise<void> {\n if (page === this.current) return;\n if (this.preventEmptyHandlers && !this._hasEventsForPage(page)) return;\n this.current = page;\n this.dispatchEvent(new CustomEvent(\"page-changed\", {\n detail: {page},\n bubbles: true,\n composed: true\n }));\n try {\n await this.triggerPageEvents();\n } finally {\n this._isUserInteraction = false;\n }\n }\n\n updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n if (_changedProperties.has(\"current\")) {\n this.triggerPageEvents(); // _isUserInteraction is false for programmatic changes\n }\n }\n\n private get pages(): number[] {\n return Array.from({length: this.total}, (_, i) => i);\n }\n\n protected render(): TemplateResult<1> {\n const firstSlotClasses = {\n invisible: this.autoHideSlots && this.current <= 0\n }\n const lastSlotClasses = {\n invisible: this.autoHideSlots && this.current >= this.total - 1\n };\n return html`\n <slot name=\"before\" class=\"${classMap(firstSlotClasses)}\"></slot>\n <div class=\"pagination-items\">\n ${this.pages.map(page => html`\n <fv-pagination-item\n .value=\"${page + 1}\"\n ?active=\"${page === this.current}\"\n @click=\"${() => {\n this._isUserInteraction = true;\n this.handlePageClick(page)\n }}\">\n </fv-pagination-item>\n `)}\n </div>\n <slot name=\"after\" class=\"${classMap(lastSlotClasses)}\"></slot>\n `;\n }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport style from \"./pagination-item.component.sass?inline\";\n\n@customElement(\"fv-pagination-item\")\nexport class PaginationItemComponent extends BaseElement {\n static styles = [\n super.styles || [],\n css`${unsafeCSS(style)}`\n ];\n\n @property({ type: Number, reflect: true })\n public value: number = 0;\n\n @property({ type: Boolean, reflect: true })\n public active: boolean = false;\n\n protected render(): TemplateResult<1> {\n return html`<span class=\"label\">${this.value}</span>`;\n }\n}\n","import \"./utils/logging\";\n\nwindow.g_dataInterface = {};\n\nimport \"@dh-software/dh-components\";\n\nexport * from './components/additional-positions';\n\nexport { DropDownComponent } from \"./components/standard/dropdown\";\n\nexport { ArticleItemComponent } from \"./components/catalog/article-item\";\nexport { ArticleListComponent } from \"./components/catalog/article-list\";\nexport { FittingItemComponent } from \"./components/catalog/fitting-item\";\nexport { ProptransItemComponent } from \"./components/catalog/proptrans-item\";\nexport { ShoppingcartItemComponent } from \"./components/catalog/shoppingcart-item\";\nexport { EquipmentListComponent } from \"./components/catalog/equipment-list\";\nexport { CatalogSelectorComponent, CatalogSelectorOptionComponent } from \"./components/catalog-selector\";\n\nexport { TotalPriceComponent } from \"./components/price/total-price\";\nexport { PriceSummaryComponent } from \"./components/price/price-summary\";\n\nexport { PriceItemComponent } from \"./components/price/price-item\";\nexport { PriceItem2Component } from \"./components/price/price-item-2\";\nexport { PriceItem3Component } from \"./components/price/price-item-3\";\nexport { PriceItem4Component } from \"./components/price/price-item-4\";\nexport { PriceItem5Component } from \"./components/price/price-item-5\";\nexport { PriceItem6Component } from \"./components/price/price-item-6\";\nexport { PriceItemFpComponent } from \"./components/price/price-item-fp\";\nexport { PriceLevelAccordionComponent } from './components/price/price-level-accordion';\nexport { PriceAccordionItem } from './components/price/price-level-accordion/price-accordion-item'\nexport { PriceDimensionsItemComponent } from \"./components/price/price-dimensions-item\";\nexport { PriceListComponent } from \"./components/price/price-list\";\nexport { PriceOverviewComponent } from \"./components/price/price-overview\";\n\nexport { PriceDisplayComponent } from \"./components/price/price-display\";\n\nexport { ButtonComponent, ConfirmingButtonComponent } from \"./components/standard/button\";\nexport * from \"./components/standard/tab-control\";\nexport { LabelComponent } from \"./components/standard/label\";\nexport { DimensionChangeComponent } from \"./components/standard/dimension-change\";\nexport { InputComponent, ConstrainedInputComponent, RangeSliderInputComponent, SharedRangeSliderInputComponent, ValidatingInputComponent, BasicSliderComponent } from \"./components/standard/input\";\nexport { TextBoxComponent } from \"./components/standard/text-box\";\nexport { ListBoxComponent } from \"./components/standard/list\";\nexport { IconComponent } from \"./components/standard/icon\";\nexport { DealerComponent } from \"./components/dealer\";\nexport { ModalStepComponent } from \"./components/standard/modal-step\";\nexport { RequestComponent } from \"./components/dealer/request\";\nexport { SearchDealerComponent } from \"./components/dealer/search-dealer\";\n\nexport { DimmerComponent } from \"./components/standard/dimmer\";\nexport { LoadingComponent, LoadingModalComponent, DotFlashingLoaderComponent, RotatingDotsLoaderComponent, ConfiguratorFormLoadingModalComponent } from \"./components/standard/loading\";\nexport { ProgressComponent } from \"./components/standard/loading/progress\";\nexport { CheckboxComponent } from \"./components/standard/checkbox\";\nexport { PopupComponent } from \"./components/standard/popup\";\nexport { HRListComponent, HRItemComponent } from \"./components/hr\";\n\n//ProgProperties\nexport { PPContainerComponent } from \"./components/properties/prog-property\";\n\n//PropTransfer\nexport { PTContainerComponent } from \"./components/properties/prop-transfer\";\n\n//ColorPicker\nexport { RalPickerComponent } from \"./components/colorpicker/ral\";\nexport { NcsPickerComponent } from \"./components/colorpicker/ncs\";\nexport { SikkensPickerComponent } from \"./components/colorpicker/sikkens\";\n\n//LanguagePicker\nexport { LanguagePickerComponent } from './components/language-picker';\n\n//DatePicker\nexport { DatepickerComponent } from \"./components/datepicker/datepicker.component\";\n\n//DeliveryDatePicker\nexport { DeliveryDatepickerComponent } from \"./components/delivery-datepicker/delivery-datepicker.component\";\n\n//ARComponent\nexport * from \"./components/ar\";\n\nexport { InfoModalComponent, MessageComponent, OptionSelectionModalComponent, ModalComponent } from \"./components/standard/modal\";\n\n//Action Buttons\nexport { ShowOnTargetScrollableActionButtonComponent } from \"./components/action-buttons\";\n\n//Cards\n// export { CardContainerComponent, FilterCardContainerComponent, LevelPageCardContainerComponent, RootLevelSelectionCardContainerComponent, CardContainerBackButtonComponent, CardAccordionContainerComponent } from \"./components/standard/card-container\";\nexport * from \"./components/standard/card-container/index\";\nexport * from \"./components/standard/cards\";\nimport \"./utils/card-app-connections/index\";\n\n//Program Selection\nexport { ProgramSelectionComponent, ProgramSelectionLevelComponent, ProgramInformationComponent } from \"./components/standard/program-selection\";\n\n// configurator\nexport * from \"./components/configurator/index\";\n\n//WebCab\nexport { WebCabOverviewComponent, WebCabDisplayOptionSelectionComponent, WebCabOptionSelection, WebCabValueInputComponent, WebCabUiComponent, WebCabUiImplementationCabinetsToggle } from \"./components/webcab\";\n\n// informational-components\nexport { LandscapeInfo, CatalogInformationComponent, DimensionInformationComponent, DimensionsInformationComponent } from \"./components/standard/informationals\";\n\n// toolbar\nexport { ToolbarComponent, ToggleToolbarComponent, ToolbarButtonComponent, AnimationToolbarButtonComponent } from \"./components/standard/toolbar\";\n\n// steps component\nexport { StepsComponent } from \"./components/standard/steps\";\nexport { PillStepComponent } from \"./components/standard/pill-steps\"\n// step components\nexport { StepComponent, IconStepComponent } from \"./components/standard/step\";\n\nexport { ProgContextAccordionLayer } from './components/properties/prop-context/accordion-theme/pp-context-accordion-layer.component';\n\nexport { ProgPropertyFurnviewAccordionLayer } from './components/properties/prog-property/furnview_theme/pp-furnview-accordion-layer.component';\nexport { ProgPropertyWebUIAccordionLayer } from './components/properties/prog-property/webui_theme/pp-webui-accordion-layer.component';\nexport { ProgPropertyCombineAccordionLayer } from './components/properties/prog-property/combine_theme/pp-combine-accordion-layer.component';\nexport { ProgPropertyAccordionLayer } from './components/properties/prog-property/accordion_theme/pp-accordion-layer.component'\n\n// accordion component\nexport { AccordionComponent, AccordionLayerComponent } from \"./components/standard/accordion\";\n\nexport { InfoComponent } from \"./components/standard/info_button\";\n\nexport { PropertyInfoComponent } from \"./components/standard/property-info/property-info.component\";\n\nexport { SeparatorComponent } from \"./components/standard/separator\";\nexport { DockableMenuComponent } from \"./components/standard/menu\";\n\nexport { FinishModalComponent } from \"./components/finish\";\nexport { NoticeModalComponent, NoticeListItemComponent, NoticeCarouselComponent, NoticeAccordionItemComponent } from \"./components/notice\";\nexport { RequestModalComponent } from \"./components/customer/request-modal\";\n\n// modal masks\nexport { ResetMaskComponent, RestartCheckMaskComponent, ProgramSelectionConfirmationMaskComponent, InformationMaskComponent, OpenCloudIdMaskComponent, InputMaskComponent, ShareLinkPerMailComponent, RequestAppointmentComponent, SelectPropertyMaskComponent, SelectArticleMaskComponent, PerspectiveControlMaskComponent, StepBasedMaskComponent, MessageNoCalcMask, ContainerMaskComponent, IwoFurnMaskComponent, SaveDialogMaskComponent, FileUploadMaskComponent } from \"./components/standard/modal/masks/index\";\n\n// cloud\nexport { CloudIdDisplayComponent } from \"./components/cloud\";\n\n// arrange\nexport * from \"./components/standard/arrange\";\n\n// control\nexport * from \"./components/standard/control\";\n\n// configurable icons\nexport { ArrowComponent } from \"./components/configurable-icons\";\n\n// filtered catalog\nexport { FilteredCatalogComponent, FilteredCatalogToggleButtonComponent, FilteredCatalogLabledImgOption } from \"./components/filtered-catalog\";\n\n// PDF Viewer\nexport { PDFViewerComponent } from \"./components/pdf-viewer\";\n\nexport { ImageComponent } from \"./components/standard/image\";\n\nexport { SVGIconComponent } from \"./components/standard/embedded-svg-icon\";\nexport { CloudIdComponent } from \"./components/extension\";\nexport { DownloadComponent } from \"./components/extension\";\nexport { LegendComponent } from \"./components/legend/legend.component\";\nexport { SliderComponent } from \"./components/standard/input\";\n\nexport { ExternalWidgetComponent } from \"./components/external-widget/external-widget.component\";\n\nexport { ManuProgInfoComponent } from \"./components/standard/info\";\n\n\nexport { SelectComponent, SelectOptionComponent } from \"./components/standard/select/index\";\n\nexport { WebViewerComponent } from './components/webviewer/webviewer.component';\n\nexport * from \"./components/pagination\";\n"],"x_google_ignoreList":[0,1,2,19,20,21,22,23,91],"mappings":"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"}
\ No newline at end of file
diff --git a/client/vendor/vendor.chunk.js b/client/vendor/vendor.chunk.js
index 1256930..dc041e2 100644
--- a/client/vendor/vendor.chunk.js
+++ b/client/vendor/vendor.chunk.js
@@ -70,5 +70,4 @@
<div class="tooltip">
<h4>Debug-Statistiken</h4>
</div>
- `,this.circle=this.shadow.querySelector(`.circle`),this.badge=this.shadow.querySelector(`.badge`),this.tooltip=this.shadow.querySelector(`.tooltip`),this.circle.addEventListener(`contextmenu`,e=>(this.keepOpen=!this.keepOpen,e.preventDefault(),1)),this.tooltip.style.left=`80%`,this.tooltip.style.bottom=`80%`,this.addEventListener(`mouseenter`,()=>{this.tooltip.style.display=`block`}),this.addEventListener(`mouseleave`,()=>{this.keepOpen||(this.tooltip.style.display=`none`)}),this.enableDragging()}enableDragging(){let e=this.circle,t=!1,n=0,r=0,i={x:0,y:0},a=(t,a)=>{i.x=t-n,i.y=a-r;let o=window.innerWidth-e.clientWidth,s=window.innerHeight-e.clientHeight;i.x=Math.max(0,Math.min(i.x,o)),i.y=Math.max(0,Math.min(i.y,s)),this.tooltip.style.left=i.x<o*.5?`80%`:``,this.tooltip.style.right=i.x<o*.5?``:`80%`,this.tooltip.style.top=i.y<s*.5?`80%`:``,this.tooltip.style.bottom=i.y<s*.5?``:`80%`,this.style.left=`${i.x}px`,this.style.top=`${i.y}px`},o=`_debug_comindicator_pos_`+window.location.pathname.substring(1),s=localStorage.getItem(o);if(s){let{x:e,y:t}=JSON.parse(s);a(e,t)}let c=e=>{t=!0,n=e.clientX-this.getBoundingClientRect().left,r=e.clientY-this.getBoundingClientRect().top,this.circle.style.cursor=`grabbing`,document.addEventListener(`mousemove`,l),document.addEventListener(`mouseup`,u)},l=e=>{t&&a(e.clientX,e.clientY)},u=()=>{t=!1,this.circle.style.cursor=``,document.removeEventListener(`mousemove`,l),document.removeEventListener(`mouseup`,u),localStorage.setItem(o,JSON.stringify(i))};e.addEventListener(`mousedown`,c)}getColor(){switch(this.status){case K.UNKNOWN:return`gray`;case K.DISCONNECTED:return`red`;case K.DISCONNECTING:return`red`;case K.CONNECTING:return`orange`;case K.RECONNECTING:return`yellow`;case K.CONNECTED:return`turquoise`;case K.READY:return`green`;default:return`gray`}}}customElements.define(`dhcom-debug-indicator`,e)}new class{static{this.templates=new WeakMap}_getNestedOptions(e,t){return t?.subkeyValidation?.[e]??void 0}_log(e,t){return console.warn(`[ValidatedProperty] Key '${String(e)}' was set to 'undefined'. Reverting to`,t??`'empty'`),t}_validateObject(e,t,n,r){let i=!1;for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;let a=this._getNestedOptions(r,n),o=t[r],s=e[r];if(s===void 0){let t=a??o;t=a&&t!==void 0?this.validateObjectProperty(r,Array.isArray(t)?[]:{},t,n,!1).result:o,e[r]=this._log(r,t),i=!0}else if(a){let t=this.validateObjectProperty(r,s,a,n,!1);t.changed&&(e[r]=this._log(r,t.result),i=!0)}}return{changed:i,result:e}}_validateArray(e,t,n,r){let i=!1,a=r?[]:e,o=Array.isArray(t)?t[0]:t;if(!o)return{changed:!1,result:e};let s=a.map(e=>{let t=this._validateObject(e,o,n,r);return t.changed&&(i=!0),t.result});return{changed:i,result:s}}_getValidatedValue(e,t,n,r=!1){return Array.isArray(e)?this._validateArray([...e],t,n,r):this._validateObject({...e},t,n,r)}validateObjectProperty(e,t,n,r,i=!1,a=0){return t===void 0?{changed:!0,result:JSON.parse(JSON.stringify(this._log(e,n)))}:typeof t!=`object`||!t?{changed:!1,result:t}:this._getValidatedValue(t,n,r,i)}static getTemplate(e,t){return this.templates.get(e)?.get(t)}static setTemplate(e,t,n){typeof n==`object`&&n&&n!==void 0&&!Array.isArray(n)&&(this.templates.has(e)||this.templates.set(e,new Map),this.templates.get(e).set(t,JSON.parse(JSON.stringify(n))))}};var In=class{constructor(e,t,n){this.element=e,this.name=t,this.env=n}composeEvent(e){return e instanceof Event&&e.type==this.name?e:new CustomEvent(this.name,{...this.env,detail:e})}dispatch(e){this.element.dispatchEvent(this.composeEvent(e))}addListener(e,t){this.element.addEventListener(this.name,e,t)}removeListener(e,t){this.element.removeEventListener(this.name,e,t)}handleEvent(e){this.dispatch()}detail(e){let t=this;return{handleEvent(n){t.dispatch(e)}}}};function Ln(e,t){return(n,r)=>{t||=r.toString().toLowerCase(),t.endsWith(`event`)&&(t=t.replace(`event`,``));let i=Symbol(`__${String(r)}_eventRef`);Object.defineProperty(n,r,{get(){return this[i]||(this[i]=new In(this,t,e)),this[i]},enumerable:!0,configurable:!0})}}var Rn={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},J=e=>(...t)=>({_$litDirective$:e,values:t}),zn=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},Bn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.ATTRIBUTE||e.name!==`class`||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return` `+Object.keys(e).filter((t=>e[t])).join(` `)+` `}update(e,[t]){if(this.st===void 0){this.st=new Set,e.strings!==void 0&&(this.nt=new Set(e.strings.join(` `).split(/\s/).filter((e=>e!==``))));for(let e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}let n=e.element.classList;for(let e of this.st)e in t||(n.remove(e),this.st.delete(e));for(let e in t){let r=!!t[e];r===this.st.has(e)||this.nt?.has(e)||(r?(n.add(e),this.st.add(e)):(n.remove(e),this.st.delete(e)))}return z}}),{I:Vn}=rn,Hn=e=>e.strings===void 0,Un=()=>document.createComment(``),Y=(e,t,n)=>{let r=e._$AA.parentNode,i=t===void 0?e._$AB:t._$AA;if(n===void 0)n=new Vn(r.insertBefore(Un(),i),r.insertBefore(Un(),i),e,e.options);else{let t=n._$AB.nextSibling,a=n._$AM,o=a!==e;if(o){let t;n._$AQ?.(e),n._$AM=e,n._$AP!==void 0&&(t=e._$AU)!==a._$AU&&n._$AP(t)}if(t!==i||o){let e=n._$AA;for(;e!==t;){let t=e.nextSibling;r.insertBefore(e,i),e=t}}}return n},X=(e,t,n=e)=>(e._$AI(t,n),e),Wn={},Gn=(e,t=Wn)=>e._$AH=t,Kn=e=>e._$AH,qn=e=>{e._$AP?.(!1,!0);let t=e._$AA,n=e._$AB.nextSibling;for(;t!==n;){let e=t.nextSibling;t.remove(),t=e}},Jn=(e,t,n)=>{let r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},Yn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.CHILD)throw Error(`repeat() can only be used in text expressions`)}dt(e,t,n){let r;n===void 0?n=t:t!==void 0&&(r=t);let i=[],a=[],o=0;for(let t of e)i[o]=r?r(t,o):o,a[o]=n(t,o),o++;return{values:a,keys:i}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,r]){let i=Kn(e),{values:a,keys:o}=this.dt(t,n,r);if(!Array.isArray(i))return this.ut=o,a;let s=this.ut??=[],c=[],l,u,d=0,f=i.length-1,p=0,m=a.length-1;for(;d<=f&&p<=m;)if(i[d]===null)d++;else if(i[f]===null)f--;else if(s[d]===o[p])c[p]=X(i[d],a[p]),d++,p++;else if(s[f]===o[m])c[m]=X(i[f],a[m]),f--,m--;else if(s[d]===o[m])c[m]=X(i[d],a[m]),Y(e,c[m+1],i[d]),d++,m--;else if(s[f]===o[p])c[p]=X(i[f],a[p]),Y(e,i[d],i[f]),f--,p++;else if(l===void 0&&(l=Jn(o,p,m),u=Jn(s,d,f)),l.has(s[d]))if(l.has(s[f])){let t=u.get(o[p]),n=t===void 0?null:i[t];if(n===null){let t=Y(e,i[d]);X(t,a[p]),c[p]=t}else c[p]=X(n,a[p]),Y(e,i[d],n),i[t]=null;p++}else qn(i[f]),f--;else qn(i[d]),d++;for(;p<=m;){let t=Y(e,c[m+1]);X(t,a[p]),c[p++]=t}for(;d<=f;){let e=i[d++];e!==null&&qn(e)}return this.ut=o,Gn(e,c),z}}),Xn=`important`,Zn=` !important`,Qn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.ATTRIBUTE||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce(((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`}),``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(Zn);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?Xn:``):n[e]=r}}return z}}),$n=Symbol.for(``),er=e=>{if(e?.r===$n)return e?._$litStatic$},tr=e=>({_$litStatic$:e,r:$n}),nr=new Map,rr=(e=>(t,...n)=>{let r=n.length,i,a,o=[],s=[],c,l=0,u=!1;for(;l<r;){for(c=t[l];l<r&&(a=n[l],i=er(a))!==void 0;)c+=i+t[++l],u=!0;l!==r&&s.push(a),o.push(c),l++}if(l===r&&o.push(t[r]),u){let e=o.join(`$$lit$$`);(t=nr.get(e))===void 0&&(o.raw=o,nr.set(e,t=o)),n=s}return e(t,...n)})(Kt),ir=e=>e??B;function*ar(e,t){if(e!==void 0){let n=0;for(let r of e)yield t(r,n++)}}function*or(e,t,n=1){let r=t===void 0?0:e;t??=e;for(let e=r;n>0?e<t:t<e;e+=n)yield e}var sr=globalThis,cr=sr.ShadowRoot&&(sr.ShadyCSS===void 0||sr.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,lr=Symbol(),ur=new WeakMap,dr=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==lr)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(cr&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=ur.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&ur.set(t,e))}return e}toString(){return this.cssText}},fr=e=>new dr(typeof e==`string`?e:e+``,void 0,lr),pr=(e,t)=>{if(cr)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=sr.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},mr=cr?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return fr(t)})(e):e,{is:hr,defineProperty:gr,getOwnPropertyDescriptor:_r,getOwnPropertyNames:vr,getOwnPropertySymbols:yr,getPrototypeOf:br}=Object,xr=globalThis,Sr=xr.trustedTypes,Cr=Sr?Sr.emptyScript:``,wr=xr.reactiveElementPolyfillSupport,Z=(e,t)=>e,Tr={toAttribute(e,t){switch(t){case Boolean:e=e?Cr:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Er=(e,t)=>!hr(e,t),Dr={attribute:!0,type:String,converter:Tr,reflect:!1,useDefault:!1,hasChanged:Er};Symbol.metadata??=Symbol(`metadata`),xr.litPropertyMetadata??=new WeakMap;var Q=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=Dr){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&gr(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=_r(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Dr}static _$Ei(){if(this.hasOwnProperty(Z(`elementProperties`)))return;let e=br(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Z(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Z(`properties`))){let e=this.properties,t=[...vr(e),...yr(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(mr(e))}else e!==void 0&&t.push(mr(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return pr(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?Tr:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?Tr:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??Er)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};Q.elementStyles=[],Q.shadowRootOptions={mode:`open`},Q[Z(`elementProperties`)]=new Map,Q[Z(`finalized`)]=new Map,wr?.({ReactiveElement:Q}),(xr.reactiveElementVersions??=[]).push(`2.1.2`);var Or=Symbol(),kr=class{get taskComplete(){return this.t||(this.i===1?this.t=new Promise(((e,t)=>{this.o=e,this.h=t})):this.i===3?this.t=Promise.reject(this.l):this.t=Promise.resolve(this.u)),this.t}constructor(e,t,n){this.p=0,this.i=0,(this._=e).addController(this);let r=typeof t==`object`?t:{task:t,args:n};this.v=r.task,this.j=r.args,this.m=r.argsEqual??Ar,this.k=r.onComplete,this.A=r.onError,this.autoRun=r.autoRun??!0,`initialValue`in r&&(this.u=r.initialValue,this.i=2,this.O=this.T?.())}hostUpdate(){!0===this.autoRun&&this.S()}hostUpdated(){this.autoRun===`afterUpdate`&&this.S()}T(){if(this.j===void 0)return;let e=this.j();if(!Array.isArray(e))throw Error(`The args function must return an array`);return e}async S(){let e=this.T(),t=this.O;this.O=e,e===t||e===void 0||t!==void 0&&this.m(t,e)||await this.run(e)}async run(e){let t,n;e??=this.T(),this.O=e,this.i===1?this.q?.abort():(this.t=void 0,this.o=void 0,this.h=void 0),this.i=1,this.autoRun===`afterUpdate`?queueMicrotask((()=>this._.requestUpdate())):this._.requestUpdate();let r=++this.p;this.q=new AbortController;let i=!1;try{t=await this.v(e,{signal:this.q.signal})}catch(e){i=!0,n=e}if(this.p===r){if(t===Or)this.i=0;else{if(!1===i){try{this.k?.(t)}catch{}this.i=2,this.o?.(t)}else{try{this.A?.(n)}catch{}this.i=3,this.h?.(n)}this.u=t,this.l=n}this._.requestUpdate()}}abort(e){this.i===1&&this.q?.abort(e)}get value(){return this.u}get error(){return this.l}get status(){return this.i}render(e){switch(this.i){case 0:return e.initial?.();case 1:return e.pending?.();case 2:return e.complete?.(this.value);case 3:return e.error?.(this.error);default:throw Error(`Unexpected status: `+this.i)}}},Ar=(e,t)=>e===t||e.length===t.length&&e.every(((e,n)=>!Er(e,t[n]))),$=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),$(e,t);return!0},jr=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},Mr=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),Fr(t)}};function Nr(e){this._$AN===void 0?this._$AM=e:(jr(this),this._$AM=e,Mr(this))}function Pr(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let e=n;e<r.length;e++)$(r[e],!1),jr(r[e]);else r!=null&&($(r,!1),jr(r));else $(this,e)}var Fr=e=>{e.type==Rn.CHILD&&(e._$AP??=Pr,e._$AQ??=Nr)},Ir=class extends zn{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),Mr(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&($(this,e),jr(this))}setValue(e){if(Hn(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},Lr=()=>new Rr,Rr=class{},zr=new WeakMap,Br=J(class extends Ir{render(e){return B}update(e,[t]){let n=t!==this.G;return n&&this.G!==void 0&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),B}rt(e){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=zr.get(t);n===void 0&&(n=new WeakMap,zr.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ht,e)}else this.G.value=e}get lt(){return typeof this.G==`function`?zr.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});export{$e as A,w as B,W as C,ht as D,gt as E,We as F,o as H,He as I,Ve as L,Ze as M,Ke as N,lt as O,Ge as P,Re as R,ln as S,Kt as T,a as U,Se as V,vn as _,ar as a,pn as b,rr as c,Bn as d,Ln as f,bn as g,An as h,or as i,Qe as j,ct as k,Qn as l,Mn as m,Br as n,ir as o,jn as p,kr as r,tr as s,Lr as t,Yn as u,_n as v,B as w,fn as x,hn as y,O as z};
-//# sourceMappingURL=vendor.chunk.js.map
\ No newline at end of file
+ `,this.circle=this.shadow.querySelector(`.circle`),this.badge=this.shadow.querySelector(`.badge`),this.tooltip=this.shadow.querySelector(`.tooltip`),this.circle.addEventListener(`contextmenu`,e=>(this.keepOpen=!this.keepOpen,e.preventDefault(),1)),this.tooltip.style.left=`80%`,this.tooltip.style.bottom=`80%`,this.addEventListener(`mouseenter`,()=>{this.tooltip.style.display=`block`}),this.addEventListener(`mouseleave`,()=>{this.keepOpen||(this.tooltip.style.display=`none`)}),this.enableDragging()}enableDragging(){let e=this.circle,t=!1,n=0,r=0,i={x:0,y:0},a=(t,a)=>{i.x=t-n,i.y=a-r;let o=window.innerWidth-e.clientWidth,s=window.innerHeight-e.clientHeight;i.x=Math.max(0,Math.min(i.x,o)),i.y=Math.max(0,Math.min(i.y,s)),this.tooltip.style.left=i.x<o*.5?`80%`:``,this.tooltip.style.right=i.x<o*.5?``:`80%`,this.tooltip.style.top=i.y<s*.5?`80%`:``,this.tooltip.style.bottom=i.y<s*.5?``:`80%`,this.style.left=`${i.x}px`,this.style.top=`${i.y}px`},o=`_debug_comindicator_pos_`+window.location.pathname.substring(1),s=localStorage.getItem(o);if(s){let{x:e,y:t}=JSON.parse(s);a(e,t)}let c=e=>{t=!0,n=e.clientX-this.getBoundingClientRect().left,r=e.clientY-this.getBoundingClientRect().top,this.circle.style.cursor=`grabbing`,document.addEventListener(`mousemove`,l),document.addEventListener(`mouseup`,u)},l=e=>{t&&a(e.clientX,e.clientY)},u=()=>{t=!1,this.circle.style.cursor=``,document.removeEventListener(`mousemove`,l),document.removeEventListener(`mouseup`,u),localStorage.setItem(o,JSON.stringify(i))};e.addEventListener(`mousedown`,c)}getColor(){switch(this.status){case K.UNKNOWN:return`gray`;case K.DISCONNECTED:return`red`;case K.DISCONNECTING:return`red`;case K.CONNECTING:return`orange`;case K.RECONNECTING:return`yellow`;case K.CONNECTED:return`turquoise`;case K.READY:return`green`;default:return`gray`}}}customElements.define(`dhcom-debug-indicator`,e)}new class{static{this.templates=new WeakMap}_getNestedOptions(e,t){return t?.subkeyValidation?.[e]??void 0}_log(e,t){return console.warn(`[ValidatedProperty] Key '${String(e)}' was set to 'undefined'. Reverting to`,t??`'empty'`),t}_validateObject(e,t,n,r){let i=!1;for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;let a=this._getNestedOptions(r,n),o=t[r],s=e[r];if(s===void 0){let t=a??o;t=a&&t!==void 0?this.validateObjectProperty(r,Array.isArray(t)?[]:{},t,n,!1).result:o,e[r]=this._log(r,t),i=!0}else if(a){let t=this.validateObjectProperty(r,s,a,n,!1);t.changed&&(e[r]=this._log(r,t.result),i=!0)}}return{changed:i,result:e}}_validateArray(e,t,n,r){let i=!1,a=r?[]:e,o=Array.isArray(t)?t[0]:t;if(!o)return{changed:!1,result:e};let s=a.map(e=>{let t=this._validateObject(e,o,n,r);return t.changed&&(i=!0),t.result});return{changed:i,result:s}}_getValidatedValue(e,t,n,r=!1){return Array.isArray(e)?this._validateArray([...e],t,n,r):this._validateObject({...e},t,n,r)}validateObjectProperty(e,t,n,r,i=!1,a=0){return t===void 0?{changed:!0,result:JSON.parse(JSON.stringify(this._log(e,n)))}:typeof t!=`object`||!t?{changed:!1,result:t}:this._getValidatedValue(t,n,r,i)}static getTemplate(e,t){return this.templates.get(e)?.get(t)}static setTemplate(e,t,n){typeof n==`object`&&n&&n!==void 0&&!Array.isArray(n)&&(this.templates.has(e)||this.templates.set(e,new Map),this.templates.get(e).set(t,JSON.parse(JSON.stringify(n))))}};var In=class{constructor(e,t,n){this.element=e,this.name=t,this.env=n}composeEvent(e){return e instanceof Event&&e.type==this.name?e:new CustomEvent(this.name,{...this.env,detail:e})}dispatch(e){this.element.dispatchEvent(this.composeEvent(e))}addListener(e,t){this.element.addEventListener(this.name,e,t)}removeListener(e,t){this.element.removeEventListener(this.name,e,t)}handleEvent(e){this.dispatch()}detail(e){let t=this;return{handleEvent(n){t.dispatch(e)}}}};function Ln(e,t){return(n,r)=>{t||=r.toString().toLowerCase(),t.endsWith(`event`)&&(t=t.replace(`event`,``));let i=Symbol(`__${String(r)}_eventRef`);Object.defineProperty(n,r,{get(){return this[i]||(this[i]=new In(this,t,e)),this[i]},enumerable:!0,configurable:!0})}}var Rn={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},J=e=>(...t)=>({_$litDirective$:e,values:t}),zn=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},Bn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.ATTRIBUTE||e.name!==`class`||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return` `+Object.keys(e).filter((t=>e[t])).join(` `)+` `}update(e,[t]){if(this.st===void 0){this.st=new Set,e.strings!==void 0&&(this.nt=new Set(e.strings.join(` `).split(/\s/).filter((e=>e!==``))));for(let e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}let n=e.element.classList;for(let e of this.st)e in t||(n.remove(e),this.st.delete(e));for(let e in t){let r=!!t[e];r===this.st.has(e)||this.nt?.has(e)||(r?(n.add(e),this.st.add(e)):(n.remove(e),this.st.delete(e)))}return z}}),{I:Vn}=rn,Hn=e=>e.strings===void 0,Un=()=>document.createComment(``),Y=(e,t,n)=>{let r=e._$AA.parentNode,i=t===void 0?e._$AB:t._$AA;if(n===void 0)n=new Vn(r.insertBefore(Un(),i),r.insertBefore(Un(),i),e,e.options);else{let t=n._$AB.nextSibling,a=n._$AM,o=a!==e;if(o){let t;n._$AQ?.(e),n._$AM=e,n._$AP!==void 0&&(t=e._$AU)!==a._$AU&&n._$AP(t)}if(t!==i||o){let e=n._$AA;for(;e!==t;){let t=e.nextSibling;r.insertBefore(e,i),e=t}}}return n},X=(e,t,n=e)=>(e._$AI(t,n),e),Wn={},Gn=(e,t=Wn)=>e._$AH=t,Kn=e=>e._$AH,qn=e=>{e._$AP?.(!1,!0);let t=e._$AA,n=e._$AB.nextSibling;for(;t!==n;){let e=t.nextSibling;t.remove(),t=e}},Jn=(e,t,n)=>{let r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},Yn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.CHILD)throw Error(`repeat() can only be used in text expressions`)}dt(e,t,n){let r;n===void 0?n=t:t!==void 0&&(r=t);let i=[],a=[],o=0;for(let t of e)i[o]=r?r(t,o):o,a[o]=n(t,o),o++;return{values:a,keys:i}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,r]){let i=Kn(e),{values:a,keys:o}=this.dt(t,n,r);if(!Array.isArray(i))return this.ut=o,a;let s=this.ut??=[],c=[],l,u,d=0,f=i.length-1,p=0,m=a.length-1;for(;d<=f&&p<=m;)if(i[d]===null)d++;else if(i[f]===null)f--;else if(s[d]===o[p])c[p]=X(i[d],a[p]),d++,p++;else if(s[f]===o[m])c[m]=X(i[f],a[m]),f--,m--;else if(s[d]===o[m])c[m]=X(i[d],a[m]),Y(e,c[m+1],i[d]),d++,m--;else if(s[f]===o[p])c[p]=X(i[f],a[p]),Y(e,i[d],i[f]),f--,p++;else if(l===void 0&&(l=Jn(o,p,m),u=Jn(s,d,f)),l.has(s[d]))if(l.has(s[f])){let t=u.get(o[p]),n=t===void 0?null:i[t];if(n===null){let t=Y(e,i[d]);X(t,a[p]),c[p]=t}else c[p]=X(n,a[p]),Y(e,i[d],n),i[t]=null;p++}else qn(i[f]),f--;else qn(i[d]),d++;for(;p<=m;){let t=Y(e,c[m+1]);X(t,a[p]),c[p++]=t}for(;d<=f;){let e=i[d++];e!==null&&qn(e)}return this.ut=o,Gn(e,c),z}}),Xn=`important`,Zn=` !important`,Qn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.ATTRIBUTE||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce(((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`}),``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(Zn);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?Xn:``):n[e]=r}}return z}}),$n=Symbol.for(``),er=e=>{if(e?.r===$n)return e?._$litStatic$},tr=e=>({_$litStatic$:e,r:$n}),nr=new Map,rr=(e=>(t,...n)=>{let r=n.length,i,a,o=[],s=[],c,l=0,u=!1;for(;l<r;){for(c=t[l];l<r&&(a=n[l],i=er(a))!==void 0;)c+=i+t[++l],u=!0;l!==r&&s.push(a),o.push(c),l++}if(l===r&&o.push(t[r]),u){let e=o.join(`$$lit$$`);(t=nr.get(e))===void 0&&(o.raw=o,nr.set(e,t=o)),n=s}return e(t,...n)})(Kt),ir=e=>e??B;function*ar(e,t){if(e!==void 0){let n=0;for(let r of e)yield t(r,n++)}}function*or(e,t,n=1){let r=t===void 0?0:e;t??=e;for(let e=r;n>0?e<t:t<e;e+=n)yield e}var sr=globalThis,cr=sr.ShadowRoot&&(sr.ShadyCSS===void 0||sr.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,lr=Symbol(),ur=new WeakMap,dr=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==lr)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(cr&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=ur.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&ur.set(t,e))}return e}toString(){return this.cssText}},fr=e=>new dr(typeof e==`string`?e:e+``,void 0,lr),pr=(e,t)=>{if(cr)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=sr.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},mr=cr?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return fr(t)})(e):e,{is:hr,defineProperty:gr,getOwnPropertyDescriptor:_r,getOwnPropertyNames:vr,getOwnPropertySymbols:yr,getPrototypeOf:br}=Object,xr=globalThis,Sr=xr.trustedTypes,Cr=Sr?Sr.emptyScript:``,wr=xr.reactiveElementPolyfillSupport,Z=(e,t)=>e,Tr={toAttribute(e,t){switch(t){case Boolean:e=e?Cr:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Er=(e,t)=>!hr(e,t),Dr={attribute:!0,type:String,converter:Tr,reflect:!1,useDefault:!1,hasChanged:Er};Symbol.metadata??=Symbol(`metadata`),xr.litPropertyMetadata??=new WeakMap;var Q=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=Dr){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&gr(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=_r(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Dr}static _$Ei(){if(this.hasOwnProperty(Z(`elementProperties`)))return;let e=br(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Z(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Z(`properties`))){let e=this.properties,t=[...vr(e),...yr(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(mr(e))}else e!==void 0&&t.push(mr(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return pr(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?Tr:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?Tr:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??Er)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};Q.elementStyles=[],Q.shadowRootOptions={mode:`open`},Q[Z(`elementProperties`)]=new Map,Q[Z(`finalized`)]=new Map,wr?.({ReactiveElement:Q}),(xr.reactiveElementVersions??=[]).push(`2.1.2`);var Or=Symbol(),kr=class{get taskComplete(){return this.t||(this.i===1?this.t=new Promise(((e,t)=>{this.o=e,this.h=t})):this.i===3?this.t=Promise.reject(this.l):this.t=Promise.resolve(this.u)),this.t}constructor(e,t,n){this.p=0,this.i=0,(this._=e).addController(this);let r=typeof t==`object`?t:{task:t,args:n};this.v=r.task,this.j=r.args,this.m=r.argsEqual??Ar,this.k=r.onComplete,this.A=r.onError,this.autoRun=r.autoRun??!0,`initialValue`in r&&(this.u=r.initialValue,this.i=2,this.O=this.T?.())}hostUpdate(){!0===this.autoRun&&this.S()}hostUpdated(){this.autoRun===`afterUpdate`&&this.S()}T(){if(this.j===void 0)return;let e=this.j();if(!Array.isArray(e))throw Error(`The args function must return an array`);return e}async S(){let e=this.T(),t=this.O;this.O=e,e===t||e===void 0||t!==void 0&&this.m(t,e)||await this.run(e)}async run(e){let t,n;e??=this.T(),this.O=e,this.i===1?this.q?.abort():(this.t=void 0,this.o=void 0,this.h=void 0),this.i=1,this.autoRun===`afterUpdate`?queueMicrotask((()=>this._.requestUpdate())):this._.requestUpdate();let r=++this.p;this.q=new AbortController;let i=!1;try{t=await this.v(e,{signal:this.q.signal})}catch(e){i=!0,n=e}if(this.p===r){if(t===Or)this.i=0;else{if(!1===i){try{this.k?.(t)}catch{}this.i=2,this.o?.(t)}else{try{this.A?.(n)}catch{}this.i=3,this.h?.(n)}this.u=t,this.l=n}this._.requestUpdate()}}abort(e){this.i===1&&this.q?.abort(e)}get value(){return this.u}get error(){return this.l}get status(){return this.i}render(e){switch(this.i){case 0:return e.initial?.();case 1:return e.pending?.();case 2:return e.complete?.(this.value);case 3:return e.error?.(this.error);default:throw Error(`Unexpected status: `+this.i)}}},Ar=(e,t)=>e===t||e.length===t.length&&e.every(((e,n)=>!Er(e,t[n]))),$=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),$(e,t);return!0},jr=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},Mr=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),Fr(t)}};function Nr(e){this._$AN===void 0?this._$AM=e:(jr(this),this._$AM=e,Mr(this))}function Pr(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let e=n;e<r.length;e++)$(r[e],!1),jr(r[e]);else r!=null&&($(r,!1),jr(r));else $(this,e)}var Fr=e=>{e.type==Rn.CHILD&&(e._$AP??=Pr,e._$AQ??=Nr)},Ir=class extends zn{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),Mr(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&($(this,e),jr(this))}setValue(e){if(Hn(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},Lr=()=>new Rr,Rr=class{},zr=new WeakMap,Br=J(class extends Ir{render(e){return B}update(e,[t]){let n=t!==this.G;return n&&this.G!==void 0&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),B}rt(e){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=zr.get(t);n===void 0&&(n=new WeakMap,zr.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ht,e)}else this.G.value=e}get lt(){return typeof this.G==`function`?zr.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});export{$e as A,w as B,W as C,ht as D,gt as E,We as F,o as H,He as I,Ve as L,Ze as M,Ke as N,lt as O,Ge as P,Re as R,ln as S,Kt as T,a as U,Se as V,vn as _,ar as a,pn as b,rr as c,Bn as d,Ln as f,bn as g,An as h,or as i,Qe as j,ct as k,Qn as l,Mn as m,Br as n,ir as o,jn as p,kr as r,tr as s,Lr as t,Yn as u,_n as v,B as w,fn as x,hn as y,O as z};
\ No newline at end of file
diff --git a/client/vendor/vendor.chunk.js.map b/client/vendor/vendor.chunk.js.map
deleted file mode 100644
index 7ad179f..0000000
--- a/client/vendor/vendor.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"vendor.chunk.js","names":["global","globalThis","supportsAdoptingStyleSheets","ShadowRoot","undefined","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","constructionToken","Symbol","cssTagCache","WeakMap","CSSResult","constructor","cssText","strings","safeToken","this","Error","_strings","styleSheet","_styleSheet","cacheable","length","get","replaceSync","set","toString","unsafeCSS","value","String","css","values","reduce","acc","v","idx","textFromCSSResult","adoptStyles","renderRoot","styles","adoptedStyleSheets","map","s","style","document","createElement","nonce","setAttribute","textContent","appendChild","getCompatibleStyle","sheet","rule","cssRules","cssResultFromStyleSheet","is","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","global","globalThis","trustedTypes","emptyStringForBooleanAttribute","emptyScript","polyfillSupport","reactiveElementPolyfillSupport","JSCompiler_renameProperty","prop","_obj","defaultConverter","toAttribute","value","type","Boolean","Array","JSON","stringify","fromAttribute","fromValue","Number","parse","e","notEqual","old","defaultPropertyDeclaration","attribute","String","converter","reflect","useDefault","hasChanged","Symbol","metadata","litPropertyMetadata","WeakMap","ReactiveElement","HTMLElement","addInitializer","initializer","this","__prepare","_initializers","push","observedAttributes","finalize","__attributeToPropertyMap","keys","createProperty","name","options","state","prototype","hasOwnProperty","create","wrapped","elementProperties","set","noAccessor","key","descriptor","getPropertyDescriptor","undefined","get","v","oldValue","call","requestUpdate","configurable","enumerable","getPropertyOptions","superCtor","Map","finalized","props","properties","propKeys","p","attr","__attributeNameForProperty","elementStyles","finalizeStyles","styles","isArray","Set","flat","Infinity","reverse","s","unshift","getCompatibleStyle","toLowerCase","constructor","super","__instanceProperties","isUpdatePending","hasUpdated","__reflectingProperty","__initialize","__updatePromise","Promise","res","enableUpdating","_$changedProperties","__saveInstanceProperties","forEach","i","addController","controller","__controllers","add","renderRoot","isConnected","hostConnected","removeController","delete","instanceProperties","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptStyles","connectedCallback","c","_requestedUpdate","disconnectedCallback","hostDisconnected","attributeChangedCallback","_old","_$attributeToProperty","__propertyToAttribute","attrValue","removeAttribute","setAttribute","ctor","propName","convertedValue","__defaultValues","useNewValue","newValue","hasAttribute","_$changeProperty","__enqueueUpdate","initializeValue","has","__reflectingProperties","reject","result","scheduleUpdate","performUpdate","shouldUpdate","changedProperties","willUpdate","hostUpdate","update","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","reactiveElementVersions","global","globalThis","wrap","node","trustedTypes","policy","createPolicy","createHTML","s","undefined","boundAttributeSuffix","marker","Math","random","toFixed","slice","markerMatch","nodeMarker","d","document","createMarker","createComment","isPrimitive","value","isArray","Array","isIterable","Symbol","iterator","SPACE_CHAR","textEndRegex","commentEndRegex","comment2EndRegex","tagEndRegex","RegExp","singleQuoteAttrEndRegex","doubleQuoteAttrEndRegex","rawTextElement","tag","type","strings","values","_$litType$","html","svg","mathml","noChange","for","nothing","templateCache","WeakMap","walker","createTreeWalker","trustFromTemplateString","tsa","stringFromTSA","hasOwnProperty","Error","getTemplateHtml","l","length","attrNames","rawTextEndRegex","regex","i","attrName","match","attrNameEndIndex","lastIndex","exec","test","end","startsWith","push","Template","constructor","options","this","parts","nodeIndex","attrNameIndex","partCount","el","createElement","currentNode","content","wrapper","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","name","getAttributeNames","endsWith","realName","statics","getAttribute","split","m","index","ctor","PropertyPart","BooleanAttributePart","EventPart","AttributePart","removeAttribute","tagName","textContent","emptyScript","append","data","indexOf","_options","innerHTML","resolveDirective","part","parent","attributeIndex","currentDirective","__directives","__directive","nextDirectiveConstructor","_$initialize","_$resolve","TemplateInstance","template","_$parts","_$disconnectableChildren","_$template","_$parent","parentNode","_$isConnected","_clone","fragment","creationScope","importNode","partIndex","templatePart","ChildPart","nextSibling","ElementPart","_update","_$setValue","__isConnected","startNode","endNode","_$committedValue","_$startNode","_$endNode","isConnected","directiveParent","_$clear","_commitText","_commitTemplateResult","_commitNode","_commitIterable","_insert","insertBefore","createTextNode","result","_$getTemplate","h","instance","get","set","itemParts","itemPart","item","start","from","_$notifyConnectionChanged","n","remove","setConnected","element","fill","String","valueIndex","noCommit","change","v","_commitValue","setAttribute","toggleAttribute","super","newListener","oldListener","shouldRemoveListener","capture","once","passive","shouldAddListener","removeEventListener","addEventListener","handleEvent","event","call","host","_$LH","_boundAttributeSuffix","_marker","_markerMatch","_HTML_RESULT","_getTemplateHtml","_TemplateInstance","_isIterable","_resolveDirective","_ChildPart","_AttributePart","_BooleanAttributePart","_EventPart","_PropertyPart","_ElementPart","polyfillSupport","litHtmlPolyfillSupport","litHtmlVersions","render","container","partOwnerNode","renderBefore","global","globalThis","LitElement","ReactiveElement","constructor","this","renderOptions","host","__childPart","undefined","createRenderRoot","renderRoot","super","renderBefore","firstChild","update","changedProperties","value","render","hasUpdated","isConnected","connectedCallback","setConnected","disconnectedCallback","noChange","litElementHydrateSupport","polyfillSupport","litElementPolyfillSupport","_$LE","_$attributeToProperty","el","name","_$changedProperties","litElementVersions","push","customElement","tagName","classOrTarget","context","undefined","addInitializer","customElements","define","defaultPropertyDeclaration","attribute","type","String","converter","defaultConverter","reflect","hasChanged","notEqual","standardProperty","options","target","context","kind","metadata","properties","globalThis","litPropertyMetadata","get","undefined","set","Map","Object","create","wrapped","name","v","oldValue","call","this","requestUpdate","init","_$changeProperty","value","Error","property","protoOrTarget","nameOrContext","proto","hasOwnProperty","constructor","createProperty","getOwnPropertyDescriptor","legacyProperty","state","options","property","attribute","desc","obj","name","descriptor","configurable","enumerable","Reflect","decorate","Object","defineProperty","query","selector","cache","protoOrTarget","nameOrContext","descriptor","doQuery","el","renderRoot","querySelector","get","set","key","Symbol","this","v","desc","result","call","undefined","hasUpdated","queryAsync","selector","obj","name","desc","get","this","updateComplete","renderRoot","querySelector","choose","value","cases","defaultCase","c","fn","PartType","ATTRIBUTE","CHILD","PROPERTY","BOOLEAN_ATTRIBUTE","EVENT","ELEMENT","directive","c","values","_$litDirective$","Directive","constructor","_partInfo","_$isConnected","this","_$parent","_$initialize","part","parent","attributeIndex","__part","__attributeIndex","_$resolve","props","update","_part","render","initialValue","guard","directive","Directive","constructor","this","_previousValue","render","_value","f","update","_part","value","Array","isArray","length","every","v","i","noChange","from","classMap","directive","Directive","constructor","partInfo","super","type","PartType","ATTRIBUTE","name","strings","length","Error","render","classInfo","Object","keys","filter","key","join","update","part","undefined","this","_previousClasses","Set","_staticClasses","split","s","has","add","classList","element","remove","delete","value","noChange","ifDefined","value","nothing","_ChildPart","ChildPart","_$LH","wrap","node","isPrimitive","value","TemplateResultType","HTML","SVG","MATHML","isTemplateResult","type","undefined","isCompiledTemplateResult","h","isDirectiveResult","getDirectiveClass","isSingleExpression","part","strings","createMarker","document","createComment","insertPart","containerPart","refPart","container","_$startNode","parentNode","refNode","_$endNode","startNode","insertBefore","endNode","options","nextSibling","oldParent","_$parent","parentChanged","newConnectionState","_$reparentDisconnectables","_$notifyConnectionChanged","_$isConnected","start","n","setChildPartValue","directiveParent","_$setValue","RESET_VALUE","setCommittedValue","_$committedValue","getCommittedValue","removePart","_$clear","remove","clearPart","generateMap","list","start","end","map","Map","i","set","repeat","directive","Directive","constructor","partInfo","super","type","PartType","CHILD","Error","_getValuesAndKeys","items","keyFnOrTemplate","template","keyFn","undefined","keys","values","index","item","render","this","update","containerPart","oldParts","getCommittedValue","newValues","newKeys","Array","isArray","_itemKeys","oldKeys","newParts","newKeyToIndexMap","oldKeyToIndexMap","oldHead","oldTail","length","newHead","newTail","setChildPartValue","insertPart","has","oldIndex","get","oldPart","newPart","removePart","setCommittedValue","noChange","keyed","directive","Directive","constructor","this","key","nothing","render","k","v","update","part","setCommittedValue","global","globalThis","supportsAdoptingStyleSheets","ShadowRoot","undefined","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","constructionToken","Symbol","cssTagCache","WeakMap","CSSResult","constructor","cssText","strings","safeToken","this","Error","_strings","styleSheet","_styleSheet","cacheable","length","get","replaceSync","set","toString","unsafeCSS","value","String","css","values","reduce","acc","v","idx","textFromCSSResult","adoptStyles","renderRoot","styles","adoptedStyleSheets","map","s","style","document","createElement","nonce","setAttribute","textContent","appendChild","getCompatibleStyle","sheet","rule","cssRules","cssResultFromStyleSheet","is","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","global","globalThis","trustedTypes","emptyStringForBooleanAttribute","emptyScript","polyfillSupport","reactiveElementPolyfillSupport","JSCompiler_renameProperty","prop","_obj","defaultConverter","toAttribute","value","type","Boolean","Array","JSON","stringify","fromAttribute","fromValue","Number","parse","e","notEqual","old","defaultPropertyDeclaration","attribute","String","converter","reflect","useDefault","hasChanged","Symbol","metadata","litPropertyMetadata","WeakMap","ReactiveElement","HTMLElement","addInitializer","initializer","this","__prepare","_initializers","push","observedAttributes","finalize","__attributeToPropertyMap","keys","createProperty","name","options","state","prototype","hasOwnProperty","create","wrapped","elementProperties","set","noAccessor","key","descriptor","getPropertyDescriptor","undefined","get","v","oldValue","call","requestUpdate","configurable","enumerable","getPropertyOptions","superCtor","Map","finalized","props","properties","propKeys","p","attr","__attributeNameForProperty","elementStyles","finalizeStyles","styles","isArray","Set","flat","Infinity","reverse","s","unshift","getCompatibleStyle","toLowerCase","constructor","super","__instanceProperties","isUpdatePending","hasUpdated","__reflectingProperty","__initialize","__updatePromise","Promise","res","enableUpdating","_$changedProperties","__saveInstanceProperties","forEach","i","addController","controller","__controllers","add","renderRoot","isConnected","hostConnected","removeController","delete","instanceProperties","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptStyles","connectedCallback","c","_requestedUpdate","disconnectedCallback","hostDisconnected","attributeChangedCallback","_old","_$attributeToProperty","__propertyToAttribute","attrValue","removeAttribute","setAttribute","ctor","propName","__defaultValues","newValue","hasAttribute","_$changeProperty","__enqueueUpdate","initializeValue","has","__reflectingProperties","reject","result","scheduleUpdate","performUpdate","shouldUpdate","changedProperties","willUpdate","hostUpdate","update","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","reactiveElementVersions","global","globalThis","trustedTypes","policy","createPolicy","createHTML","s","undefined","boundAttributeSuffix","marker","Math","random","toFixed","slice","markerMatch","nodeMarker","d","document","createMarker","createComment","isPrimitive","value","isArray","Array","isIterable","Symbol","iterator","SPACE_CHAR","textEndRegex","commentEndRegex","comment2EndRegex","tagEndRegex","RegExp","singleQuoteAttrEndRegex","doubleQuoteAttrEndRegex","rawTextElement","tag","type","strings","values","_$litType$","html","svg","mathml","noChange","for","nothing","templateCache","WeakMap","walker","createTreeWalker","trustFromTemplateString","tsa","stringFromTSA","hasOwnProperty","Error","getTemplateHtml","l","length","attrNames","rawTextEndRegex","regex","i","attrName","match","attrNameEndIndex","lastIndex","exec","test","end","startsWith","push","Template","constructor","options","node","this","parts","nodeIndex","attrNameIndex","partCount","el","createElement","currentNode","content","wrapper","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","name","getAttributeNames","endsWith","realName","statics","getAttribute","split","m","index","ctor","PropertyPart","BooleanAttributePart","EventPart","AttributePart","removeAttribute","tagName","textContent","emptyScript","append","data","indexOf","_options","innerHTML","resolveDirective","part","parent","attributeIndex","currentDirective","__directives","__directive","nextDirectiveConstructor","_$initialize","_$resolve","TemplateInstance","template","_$parts","_$disconnectableChildren","_$template","_$parent","parentNode","_$isConnected","_clone","fragment","creationScope","importNode","partIndex","templatePart","ChildPart","nextSibling","ElementPart","_update","_$setValue","__isConnected","startNode","endNode","_$committedValue","_$startNode","_$endNode","isConnected","directiveParent","_$clear","_commitText","_commitTemplateResult","_commitNode","_commitIterable","_insert","insertBefore","createTextNode","result","_$getTemplate","h","instance","get","set","itemParts","itemPart","item","start","from","_$notifyConnectionChanged","n","remove","setConnected","element","fill","String","valueIndex","noCommit","change","v","_commitValue","setAttribute","toggleAttribute","super","newListener","oldListener","shouldRemoveListener","capture","once","passive","shouldAddListener","removeEventListener","addEventListener","handleEvent","event","call","host","_$LH","_boundAttributeSuffix","_marker","_markerMatch","_HTML_RESULT","_getTemplateHtml","_TemplateInstance","_isIterable","_resolveDirective","_ChildPart","_AttributePart","_BooleanAttributePart","_EventPart","_PropertyPart","_ElementPart","polyfillSupport","litHtmlPolyfillSupport","litHtmlVersions","render","container","partOwnerNode","renderBefore","global","globalThis","LitElement","ReactiveElement","constructor","this","renderOptions","host","__childPart","undefined","createRenderRoot","renderRoot","super","renderBefore","firstChild","update","changedProperties","value","render","hasUpdated","isConnected","connectedCallback","setConnected","disconnectedCallback","noChange","litElementHydrateSupport","polyfillSupport","litElementPolyfillSupport","_$LE","_$attributeToProperty","el","name","_$changedProperties","litElementVersions","push","customElement","tagName","classOrTarget","context","undefined","addInitializer","customElements","define","defaultPropertyDeclaration","attribute","type","String","converter","defaultConverter","reflect","hasChanged","notEqual","standardProperty","options","target","context","kind","metadata","properties","globalThis","litPropertyMetadata","get","undefined","set","Map","Object","create","wrapped","name","v","oldValue","call","this","requestUpdate","init","_$changeProperty","value","Error","property","protoOrTarget","nameOrContext","proto","hasOwnProperty","constructor","createProperty","getOwnPropertyDescriptor","legacyProperty","state","options","property","attribute","desc","obj","name","descriptor","configurable","enumerable","Reflect","decorate","Object","defineProperty","query","selector","cache","protoOrTarget","nameOrContext","descriptor","doQuery","el","renderRoot","querySelector","get","set","key","Symbol","this","v","desc","result","call","undefined","hasUpdated","fragment","queryAll","selector","obj","name","desc","get","this","renderRoot","document","createDocumentFragment","querySelectorAll","queryAsync","selector","obj","name","desc","get","this","updateComplete","renderRoot","querySelector","i","l","l","C","r","p","S","m","d","M","f","PartType","ATTRIBUTE","CHILD","PROPERTY","BOOLEAN_ATTRIBUTE","EVENT","ELEMENT","directive","c","values","_$litDirective$","Directive","constructor","_partInfo","_$isConnected","this","_$parent","_$initialize","part","parent","attributeIndex","__part","__attributeIndex","_$resolve","props","update","_part","render","classMap","directive","Directive","constructor","partInfo","super","type","PartType","ATTRIBUTE","name","strings","length","Error","render","classInfo","Object","keys","filter","key","join","update","part","undefined","this","_previousClasses","Set","_staticClasses","split","s","has","add","classList","element","remove","delete","value","noChange","_ChildPart","ChildPart","_$LH","isPrimitive","value","TemplateResultType","HTML","SVG","MATHML","isTemplateResult","type","undefined","isCompiledTemplateResult","h","isDirectiveResult","getDirectiveClass","isSingleExpression","part","strings","createMarker","document","createComment","insertPart","containerPart","refPart","container","_$startNode","parentNode","refNode","_$endNode","startNode","insertBefore","endNode","options","nextSibling","oldParent","_$parent","parentChanged","newConnectionState","_$reparentDisconnectables","_$notifyConnectionChanged","_$isConnected","start","n","setChildPartValue","directiveParent","_$setValue","RESET_VALUE","setCommittedValue","_$committedValue","getCommittedValue","removePart","end","remove","clearPart","_$clear","generateMap","list","start","end","map","Map","i","set","repeat","directive","Directive","constructor","partInfo","super","type","PartType","CHILD","Error","_getValuesAndKeys","items","keyFnOrTemplate","template","keyFn","undefined","keys","values","index","item","render","this","update","containerPart","oldParts","getCommittedValue","newValues","newKeys","Array","isArray","_itemKeys","oldKeys","newParts","newKeyToIndexMap","oldKeyToIndexMap","oldHead","oldTail","length","newHead","newTail","setChildPartValue","insertPart","has","oldIndex","get","oldPart","newPart","removePart","setCommittedValue","noChange","important","importantFlag","styleMap","directive","Directive","constructor","partInfo","super","type","PartType","ATTRIBUTE","name","strings","length","Error","render","styleInfo","Object","keys","reduce","style","prop","value","includes","replace","toLowerCase","update","part","element","undefined","this","_previousStyleProperties","Set","delete","removeProperty","add","isImportant","endsWith","setProperty","slice","noChange","brand","Symbol","for","unwrapStaticValue","value","r","unsafeStatic","_$litStatic$","literal","strings","values","reduce","acc","v","idx","undefined","Error","textFromStatic","stringsCache","Map","withStatic","coreTag","l","length","staticValue","dynamicValue","staticStrings","dynamicValues","s","i","hasStatics","push","key","join","get","raw","set","html","coreHtml","svg","coreSvg","mathml","coreMathml","ifDefined","value","nothing","map","items","f","undefined","i","value","range","startOrEnd","end","step","start","undefined","i","global","globalThis","supportsAdoptingStyleSheets","ShadowRoot","undefined","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","constructionToken","Symbol","cssTagCache","WeakMap","CSSResult","constructor","cssText","strings","safeToken","this","Error","_strings","styleSheet","_styleSheet","cacheable","length","get","replaceSync","set","toString","unsafeCSS","value","String","css","values","reduce","acc","v","idx","textFromCSSResult","adoptStyles","renderRoot","styles","adoptedStyleSheets","map","s","style","document","createElement","nonce","setAttribute","textContent","appendChild","getCompatibleStyle","sheet","rule","cssRules","cssResultFromStyleSheet","is","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","global","globalThis","trustedTypes","emptyStringForBooleanAttribute","emptyScript","polyfillSupport","reactiveElementPolyfillSupport","JSCompiler_renameProperty","prop","_obj","defaultConverter","toAttribute","value","type","Boolean","Array","JSON","stringify","fromAttribute","fromValue","Number","parse","e","notEqual","old","defaultPropertyDeclaration","attribute","String","converter","reflect","useDefault","hasChanged","Symbol","metadata","litPropertyMetadata","WeakMap","ReactiveElement","HTMLElement","addInitializer","initializer","this","__prepare","_initializers","push","observedAttributes","finalize","__attributeToPropertyMap","keys","createProperty","name","options","state","prototype","hasOwnProperty","create","wrapped","elementProperties","set","noAccessor","key","descriptor","getPropertyDescriptor","undefined","get","v","oldValue","call","requestUpdate","configurable","enumerable","getPropertyOptions","superCtor","Map","finalized","props","properties","propKeys","p","attr","__attributeNameForProperty","elementStyles","finalizeStyles","styles","isArray","Set","flat","Infinity","reverse","s","unshift","getCompatibleStyle","toLowerCase","constructor","super","__instanceProperties","isUpdatePending","hasUpdated","__reflectingProperty","__initialize","__updatePromise","Promise","res","enableUpdating","_$changedProperties","__saveInstanceProperties","forEach","i","addController","controller","__controllers","add","renderRoot","isConnected","hostConnected","removeController","delete","instanceProperties","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptStyles","connectedCallback","c","_requestedUpdate","disconnectedCallback","hostDisconnected","attributeChangedCallback","_old","_$attributeToProperty","__propertyToAttribute","attrValue","removeAttribute","setAttribute","ctor","propName","convertedValue","__defaultValues","useNewValue","newValue","hasAttribute","_$changeProperty","__enqueueUpdate","initializeValue","has","__reflectingProperties","reject","result","scheduleUpdate","performUpdate","shouldUpdate","changedProperties","willUpdate","hostUpdate","update","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","reactiveElementVersions","TaskStatus","INITIAL","PENDING","COMPLETE","ERROR","initialState","Symbol","Task","taskComplete","this","_taskComplete","_status","Promise","res","rej","_resolveTaskComplete","_rejectTaskComplete","reject","_error","resolve","_value","constructor","host","task","args","_callId","_host","addController","taskConfig","_task","_argsFn","_argsEqual","argsEqual","shallowArrayEquals","_onComplete","onComplete","_onError","onError","autoRun","initialValue","_previousArgs","_getArgs","hostUpdate","_performTask","hostUpdated","undefined","Array","isArray","Error","prev","run","result","error","_abortController","abort","queueMicrotask","requestUpdate","key","AbortController","errored","signal","e","reason","value","status","render","renderer","initial","pending","complete","oldArgs","newArgs","length","every","v","i","notEqual","notifyChildrenConnectedChanged","parent","isConnected","children","_$disconnectableChildren","undefined","obj","removeDisconnectableFromParent","_$parent","delete","size","addDisconnectableToParent","Set","has","add","installDisconnectAPI","reparentDisconnectables","newParent","this","notifyChildPartConnectedChanged","isClearingValue","fromPartIndex","value","_$committedValue","Array","isArray","i","length","type","PartType","CHILD","_$notifyConnectionChanged","_$reparentDisconnectables","AsyncDirective","Directive","constructor","_$initialize","part","attributeIndex","super","_$isConnected","isClearingDirective","reconnected","disconnected","setValue","isSingleExpression","__part","_$setValue","newValues","__attributeIndex","createRef","Ref","lastElementForContextAndCallback","WeakMap","ref","directive","AsyncDirective","render","_ref","nothing","update","part","refChanged","this","undefined","_updateRefValue","_lastElementForRef","_element","_context","options","host","element","isConnected","context","globalThis","lastElementForCallback","get","set","call","value","disconnected","reconnected"],"sources":["../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/css-tag.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/reactive-element.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/lit-html.ts","../../../../node_modules/.pnpm/lit-element@4.2.2/node_modules/lit-element/src/lit-element.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/custom-element.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/property.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/state.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/base.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/query.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/query-async.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/choose.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directive.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/guard.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/class-map.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/if-defined.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directive-helpers.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/repeat.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/keyed.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/css-tag.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/reactive-element.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/lit-html.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-element@4.2.0/node_modules/lit-element/src/lit-element.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/custom-element.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/property.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/state.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/base.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/query.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/query-all.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/query-async.ts","../../../../../../webui-core/webui/node_modules/.pnpm/@dh-software+event-emitter@_b277588488f1b80172ecfc340ff9a52f/node_modules/@dh-software/event-emitter/dist/event-emitter.mjs","../../../../../../webui-core/webui/node_modules/.pnpm/@dh-software+message-commun_c2870b572ecacae3e0cb061d925cb71d/node_modules/@dh-software/message-communicator-browser/dist/message-communicator-browser.mjs","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+lit-extensions@0.0.14_lit@3.3.3/node_modules/@dh-software/lit-extensions/src/PropertyValidator.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+lit-extensions@0.0.14_lit@3.3.3/node_modules/@dh-software/lit-extensions/src/decorator/validate.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+lit-extensions@0.0.14_lit@3.3.3/node_modules/@dh-software/lit-extensions/src/decorator/event.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directive.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/class-map.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directive-helpers.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/repeat.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/style-map.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/static.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/if-defined.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/map.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/range.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/css-tag.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/reactive-element.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+task@1.0.3/node_modules/@lit/task/src/task.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/async-directive.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/ref.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nexport const supportsAdoptingStyleSheets: boolean =\n global.ShadowRoot &&\n (global.ShadyCSS === undefined || global.ShadyCSS.nativeShadow) &&\n 'adoptedStyleSheets' in Document.prototype &&\n 'replace' in CSSStyleSheet.prototype;\n\n/**\n * A CSSResult or native CSSStyleSheet.\n *\n * In browsers that support constructible CSS style sheets, CSSStyleSheet\n * object can be used for styling along side CSSResult from the `css`\n * template tag.\n */\nexport type CSSResultOrNative = CSSResult | CSSStyleSheet;\n\nexport type CSSResultArray = Array<CSSResultOrNative | CSSResultArray>;\n\n/**\n * A single CSSResult, CSSStyleSheet, or an array or nested arrays of those.\n */\nexport type CSSResultGroup = CSSResultOrNative | CSSResultArray;\n\nconst constructionToken = Symbol();\n\nconst cssTagCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * A container for a string of CSS text, that may be used to create a CSSStyleSheet.\n *\n * CSSResult is the return value of `css`-tagged template literals and\n * `unsafeCSS()`. In order to ensure that CSSResults are only created via the\n * `css` tag and `unsafeCSS()`, CSSResult cannot be constructed directly.\n */\nexport class CSSResult {\n // This property needs to remain unminified.\n ['_$cssResult$'] = true;\n readonly cssText: string;\n private _styleSheet?: CSSStyleSheet;\n private _strings: TemplateStringsArray | undefined;\n\n private constructor(\n cssText: string,\n strings: TemplateStringsArray | undefined,\n safeToken: symbol\n ) {\n if (safeToken !== constructionToken) {\n throw new Error(\n 'CSSResult is not constructable. Use `unsafeCSS` or `css` instead.'\n );\n }\n this.cssText = cssText;\n this._strings = strings;\n }\n\n // This is a getter so that it's lazy. In practice, this means stylesheets\n // are not created until the first element instance is made.\n get styleSheet(): CSSStyleSheet | undefined {\n // If `supportsAdoptingStyleSheets` is true then we assume CSSStyleSheet is\n // constructable.\n let styleSheet = this._styleSheet;\n const strings = this._strings;\n if (supportsAdoptingStyleSheets && styleSheet === undefined) {\n const cacheable = strings !== undefined && strings.length === 1;\n if (cacheable) {\n styleSheet = cssTagCache.get(strings);\n }\n if (styleSheet === undefined) {\n (this._styleSheet = styleSheet = new CSSStyleSheet()).replaceSync(\n this.cssText\n );\n if (cacheable) {\n cssTagCache.set(strings, styleSheet);\n }\n }\n }\n return styleSheet;\n }\n\n toString(): string {\n return this.cssText;\n }\n}\n\ntype ConstructableCSSResult = CSSResult & {\n new (\n cssText: string,\n strings: TemplateStringsArray | undefined,\n safeToken: symbol\n ): CSSResult;\n};\n\nconst textFromCSSResult = (value: CSSResultGroup | number) => {\n // This property needs to remain unminified.\n if ((value as CSSResult)['_$cssResult$'] === true) {\n return (value as CSSResult).cssText;\n } else if (typeof value === 'number') {\n return value;\n } else {\n throw new Error(\n `Value passed to 'css' function must be a 'css' function result: ` +\n `${value}. Use 'unsafeCSS' to pass non-literal values, but take care ` +\n `to ensure page security.`\n );\n }\n};\n\n/**\n * Wrap a value for interpolation in a {@linkcode css} tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nexport const unsafeCSS = (value: unknown) =>\n new (CSSResult as ConstructableCSSResult)(\n typeof value === 'string' ? value : String(value),\n undefined,\n constructionToken\n );\n\n/**\n * A template literal tag which can be used with LitElement's\n * {@linkcode LitElement.styles} property to set element styles.\n *\n * For security reasons, only literal string values and number may be used in\n * embedded expressions. To incorporate non-literal values {@linkcode unsafeCSS}\n * may be used inside an expression.\n */\nexport const css = (\n strings: TemplateStringsArray,\n ...values: (CSSResultGroup | number)[]\n): CSSResult => {\n const cssText =\n strings.length === 1\n ? strings[0]\n : values.reduce(\n (acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1],\n strings[0]\n );\n return new (CSSResult as ConstructableCSSResult)(\n cssText,\n strings,\n constructionToken\n );\n};\n\n/**\n * Applies the given styles to a `shadowRoot`. When Shadow DOM is\n * available but `adoptedStyleSheets` is not, styles are appended to the\n * `shadowRoot` to [mimic the native feature](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/adoptedStyleSheets).\n * Note, when shimming is used, any styles that are subsequently placed into\n * the shadowRoot should be placed *before* any shimmed adopted styles. This\n * will match spec behavior that gives adopted sheets precedence over styles in\n * shadowRoot.\n */\nexport const adoptStyles = (\n renderRoot: ShadowRoot,\n styles: Array<CSSResultOrNative>\n) => {\n if (supportsAdoptingStyleSheets) {\n (renderRoot as ShadowRoot).adoptedStyleSheets = styles.map((s) =>\n s instanceof CSSStyleSheet ? s : s.styleSheet!\n );\n } else {\n for (const s of styles) {\n const style = document.createElement('style');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nonce = (global as any)['litNonce'];\n if (nonce !== undefined) {\n style.setAttribute('nonce', nonce);\n }\n style.textContent = (s as CSSResult).cssText;\n renderRoot.appendChild(style);\n }\n }\n};\n\nconst cssResultFromStyleSheet = (sheet: CSSStyleSheet) => {\n let cssText = '';\n for (const rule of sheet.cssRules) {\n cssText += rule.cssText;\n }\n return unsafeCSS(cssText);\n};\n\nexport const getCompatibleStyle =\n supportsAdoptingStyleSheets ||\n (NODE_MODE && global.CSSStyleSheet === undefined)\n ? (s: CSSResultOrNative) => s\n : (s: CSSResultOrNative) =>\n s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Use this module if you want to create your own base class extending\n * {@link ReactiveElement}.\n * @packageDocumentation\n */\n\nimport {\n getCompatibleStyle,\n adoptStyles,\n CSSResultGroup,\n CSSResultOrNative,\n} from './css-tag.js';\nimport type {\n ReactiveController,\n ReactiveControllerHost,\n} from './reactive-controller.js';\n\n// In the Node build, this import will be injected by Rollup:\n// import {HTMLElement, customElements} from '@lit-labs/ssr-dom-shim';\n\nexport * from './css-tag.js';\nexport type {\n ReactiveController,\n ReactiveControllerHost,\n} from './reactive-controller.js';\n\n/**\n * Removes the `readonly` modifier from properties in the union K.\n *\n * This is a safer way to cast a value to a type with a mutable version of a\n * readonly field, than casting to an interface with the field re-declared\n * because it preserves the type of all the fields and warns on typos.\n */\ntype Mutable<T, K extends keyof T> = Omit<T, K> & {\n -readonly [P in keyof Pick<T, K>]: P extends K ? T[P] : never;\n};\n\n// TODO (justinfagnani): Add `hasOwn` here when we ship ES2022\nconst {\n is,\n defineProperty,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n getPrototypeOf,\n} = Object;\n\nconst NODE_MODE = false;\n\n// Lets a minifier replace globalThis references with a minified name\nconst global = globalThis;\n\nif (NODE_MODE) {\n global.customElements ??= customElements;\n}\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nconst trustedTypes = (global as unknown as {trustedTypes?: {emptyScript: ''}})\n .trustedTypes;\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n ? (trustedTypes.emptyScript as unknown as '')\n : '';\n\nconst polyfillSupport = DEV_MODE\n ? global.reactiveElementPolyfillSupportDevMode\n : global.reactiveElementPolyfillSupport;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n global.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (\n !global.litIssuedWarnings!.has(warning) &&\n !global.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n global.litIssuedWarnings!.add(warning);\n }\n };\n\n queueMicrotask(() => {\n issueWarning(\n 'dev-mode',\n `Lit is in dev mode. Not recommended for production!`\n );\n\n // Issue polyfill support warning.\n if (global.ShadyDOM?.inUse && polyfillSupport === undefined) {\n issueWarning(\n 'polyfill-support-missing',\n `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n `the \\`polyfill-support\\` module has not been loaded.`\n );\n }\n });\n}\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ReactiveUnstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry = Update;\n export interface Update {\n kind: 'update';\n }\n }\n}\n\ninterface DebugLoggingWindow {\n // Even in dev mode, we generally don't want to emit these events, as that's\n // another level of cost, so only emit them when DEV_MODE is true _and_ when\n // window.emitLitDebugEvents is true.\n emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n ? (event: ReactiveUnstable.DebugLog.Entry) => {\n const shouldEmit = (global as unknown as DebugLoggingWindow)\n .emitLitDebugLogEvents;\n if (!shouldEmit) {\n return;\n }\n global.dispatchEvent(\n new CustomEvent<ReactiveUnstable.DebugLog.Entry>('lit-debug', {\n detail: event,\n })\n );\n }\n : undefined;\n\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n prop: P,\n _obj: unknown\n): P => prop;\n\n/**\n * Converts property values to and from attribute values.\n */\nexport interface ComplexAttributeConverter<Type = unknown, TypeHint = unknown> {\n /**\n * Called to convert an attribute value to a property\n * value.\n */\n fromAttribute?(value: string | null, type?: TypeHint): Type;\n\n /**\n * Called to convert a property value to an attribute\n * value.\n *\n * It returns unknown instead of string, to be compatible with\n * https://github.com/WICG/trusted-types (and similar efforts).\n */\n toAttribute?(value: Type, type?: TypeHint): unknown;\n}\n\ntype AttributeConverter<Type = unknown, TypeHint = unknown> =\n | ComplexAttributeConverter<Type>\n | ((value: string | null, type?: TypeHint) => Type);\n\n/**\n * Defines options for a property accessor.\n */\nexport interface PropertyDeclaration<Type = unknown, TypeHint = unknown> {\n /**\n * When set to `true`, indicates the property is internal private state. The\n * property should not be set by users. When using TypeScript, this property\n * should be marked as `private` or `protected`, and it is also a common\n * practice to use a leading `_` in the name. The property is not added to\n * `observedAttributes`.\n */\n readonly state?: boolean;\n\n /**\n * Indicates how and whether the property becomes an observed attribute.\n * If the value is `false`, the property is not added to `observedAttributes`.\n * If true or absent, the lowercased property name is observed (e.g. `fooBar`\n * becomes `foobar`). If a string, the string value is observed (e.g\n * `attribute: 'foo-bar'`).\n */\n readonly attribute?: boolean | string;\n\n /**\n * Indicates the type of the property. This is used only as a hint for the\n * `converter` to determine how to convert the attribute\n * to/from a property.\n */\n readonly type?: TypeHint;\n\n /**\n * Indicates how to convert the attribute to/from a property. If this value\n * is a function, it is used to convert the attribute value a the property\n * value. If it's an object, it can have keys for `fromAttribute` and\n * `toAttribute`. If no `toAttribute` function is provided and\n * `reflect` is set to `true`, the property value is set directly to the\n * attribute. A default `converter` is used if none is provided; it supports\n * `Boolean`, `String`, `Number`, `Object`, and `Array`. Note,\n * when a property changes and the converter is used to update the attribute,\n * the property is never updated again as a result of the attribute changing,\n * and vice versa.\n */\n readonly converter?: AttributeConverter<Type, TypeHint>;\n\n /**\n * Indicates if the property should reflect to an attribute.\n * If `true`, when the property is set, the attribute is set using the\n * attribute name determined according to the rules for the `attribute`\n * property option and the value of the property converted using the rules\n * from the `converter` property option.\n */\n readonly reflect?: boolean;\n\n /**\n * A function that indicates if a property should be considered changed when\n * it is set. The function should take the `newValue` and `oldValue` and\n * return `true` if an update should be requested.\n */\n hasChanged?(value: Type, oldValue: Type): boolean;\n\n /**\n * Indicates whether an accessor will be created for this property. By\n * default, an accessor will be generated for this property that requests an\n * update when set. If this flag is `true`, no accessor will be created, and\n * it will be the user's responsibility to call\n * `this.requestUpdate(propertyName, oldValue)` to request an update when\n * the property changes.\n */\n readonly noAccessor?: boolean;\n\n /**\n * Whether this property is wrapping accessors. This is set by `@property`\n * to control the initial value change and reflection logic.\n *\n * @internal\n */\n wrapped?: boolean;\n\n /**\n * When `true`, uses the initial value of the property as the default value,\n * which changes how attributes are handled:\n * - The initial value does *not* reflect, even if the `reflect` option is `true`.\n * Subsequent changes to the property will reflect, even if they are equal to the\n * default value.\n * - When the attribute is removed, the property is set to the default value\n * - The initial value will not trigger an old value in the `changedProperties` map\n * argument to update lifecycle methods.\n *\n * When set, properties must be initialized, either with a field initializer, or an\n * assignment in the constructor. Not initializing the property may lead to\n * improper handling of subsequent property assignments.\n *\n * While this behavior is opt-in, most properties that reflect to attributes should\n * use `useDefault: true` so that their initial values do not reflect.\n */\n useDefault?: boolean;\n}\n\n/**\n * Map of properties to PropertyDeclaration options. For each property an\n * accessor is made, and the property is processed according to the\n * PropertyDeclaration options.\n */\nexport interface PropertyDeclarations {\n readonly [key: string]: PropertyDeclaration;\n}\n\ntype PropertyDeclarationMap = Map<PropertyKey, PropertyDeclaration>;\n\ntype AttributeMap = Map<string, PropertyKey>;\n\n/**\n * A Map of property keys to values.\n *\n * Takes an optional type parameter T, which when specified as a non-any,\n * non-unknown type, will make the Map more strongly-typed, associating the map\n * keys with their corresponding value type on T.\n *\n * Use `PropertyValues<this>` when overriding ReactiveElement.update() and\n * other lifecycle methods in order to get stronger type-checking on keys\n * and values.\n */\n// This type is conditional so that if the parameter T is not specified, or\n// is `any`, the type will include `Map<PropertyKey, unknown>`. Since T is not\n// given in the uses of PropertyValues in this file, all uses here fallback to\n// meaning `Map<PropertyKey, unknown>`, but if a developer uses\n// `PropertyValues<this>` (or any other value for T) they will get a\n// strongly-typed Map type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PropertyValues<T = any> = T extends object\n ? PropertyValueMap<T>\n : Map<PropertyKey, unknown>;\n\n/**\n * Do not use, instead prefer {@linkcode PropertyValues}.\n */\n// This type must be exported such that JavaScript generated by the Google\n// Closure Compiler can import a type reference.\nexport interface PropertyValueMap<T> extends Map<PropertyKey, unknown> {\n get<K extends keyof T>(k: K): T[K] | undefined;\n set<K extends keyof T>(key: K, value: T[K]): this;\n has<K extends keyof T>(k: K): boolean;\n delete<K extends keyof T>(k: K): boolean;\n}\n\nexport const defaultConverter: ComplexAttributeConverter = {\n toAttribute(value: unknown, type?: unknown): unknown {\n switch (type) {\n case Boolean:\n value = value ? emptyStringForBooleanAttribute : null;\n break;\n case Object:\n case Array:\n // if the value is `null` or `undefined` pass this through\n // to allow removing/no change behavior.\n value = value == null ? value : JSON.stringify(value);\n break;\n }\n return value;\n },\n\n fromAttribute(value: string | null, type?: unknown) {\n let fromValue: unknown = value;\n switch (type) {\n case Boolean:\n fromValue = value !== null;\n break;\n case Number:\n fromValue = value === null ? null : Number(value);\n break;\n case Object:\n case Array:\n // Do *not* generate exception when invalid JSON is set as elements\n // don't normally complain on being mis-configured.\n // TODO(sorvell): Do generate exception in *dev mode*.\n try {\n // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n fromValue = JSON.parse(value!) as unknown;\n } catch (e) {\n fromValue = null;\n }\n break;\n }\n return fromValue;\n },\n};\n\nexport interface HasChanged {\n (value: unknown, old: unknown): boolean;\n}\n\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nexport const notEqual: HasChanged = (value: unknown, old: unknown): boolean =>\n !is(value, old);\n\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n attribute: true,\n type: String,\n converter: defaultConverter,\n reflect: false,\n useDefault: false,\n hasChanged: notEqual,\n};\n\n/**\n * A string representing one of the supported dev mode warning categories.\n */\nexport type WarningKind =\n | 'change-in-update'\n | 'migration'\n | 'async-perform-update';\n\nexport type Initializer = (element: ReactiveElement) => void;\n\n// Temporary, until google3 is on TypeScript 5.2\ndeclare global {\n interface SymbolConstructor {\n readonly metadata: unique symbol;\n }\n}\n\n// Ensure metadata is enabled. TypeScript does not polyfill\n// Symbol.metadata, so we must ensure that it exists.\n(Symbol as {metadata: symbol}).metadata ??= Symbol('metadata');\n\ndeclare global {\n // This is public global API, do not change!\n // eslint-disable-next-line no-var\n var litPropertyMetadata: WeakMap<\n object,\n Map<PropertyKey, PropertyDeclaration>\n >;\n}\n\n// Map from a class's metadata object to property options\n// Note that we must use nullish-coalescing assignment so that we only use one\n// map even if we load multiple version of this module.\nglobal.litPropertyMetadata ??= new WeakMap<\n object,\n Map<PropertyKey, PropertyDeclaration>\n>();\n\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclasses to render updates as desired.\n * @noInheritDoc\n */\nexport abstract class ReactiveElement\n // In the Node build, this `extends` clause will be substituted with\n // `(globalThis.HTMLElement ?? HTMLElement)`.\n //\n // This way, we will first prefer any global `HTMLElement` polyfill that the\n // user has assigned, and then fall back to the `HTMLElement` shim which has\n // been imported (see note at the top of this file about how this import is\n // generated by Rollup). Note that the `HTMLElement` variable has been\n // shadowed by this import, so it no longer refers to the global.\n extends HTMLElement\n implements ReactiveControllerHost\n{\n // Note: these are patched in only in DEV_MODE.\n /**\n * Read or set all the enabled warning categories for this class.\n *\n * This property is only used in development builds.\n *\n * @nocollapse\n * @category dev-mode\n */\n static enabledWarnings?: WarningKind[];\n\n /**\n * Enable the given warning category for this class.\n *\n * This method only exists in development builds, so it should be accessed\n * with a guard like:\n *\n * ```ts\n * // Enable for all ReactiveElement subclasses\n * ReactiveElement.enableWarning?.('migration');\n *\n * // Enable for only MyElement and subclasses\n * MyElement.enableWarning?.('migration');\n * ```\n *\n * @nocollapse\n * @category dev-mode\n */\n static enableWarning?: (warningKind: WarningKind) => void;\n\n /**\n * Disable the given warning category for this class.\n *\n * This method only exists in development builds, so it should be accessed\n * with a guard like:\n *\n * ```ts\n * // Disable for all ReactiveElement subclasses\n * ReactiveElement.disableWarning?.('migration');\n *\n * // Disable for only MyElement and subclasses\n * MyElement.disableWarning?.('migration');\n * ```\n *\n * @nocollapse\n * @category dev-mode\n */\n static disableWarning?: (warningKind: WarningKind) => void;\n\n /**\n * Adds an initializer function to the class that is called during instance\n * construction.\n *\n * This is useful for code that runs against a `ReactiveElement`\n * subclass, such as a decorator, that needs to do work for each\n * instance, such as setting up a `ReactiveController`.\n *\n * ```ts\n * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n * target.addInitializer((instance: ReactiveElement) => {\n * // This is run during construction of the element\n * new MyController(instance);\n * });\n * }\n * ```\n *\n * Decorating a field will then cause each instance to run an initializer\n * that adds a controller:\n *\n * ```ts\n * class MyElement extends LitElement {\n * @myDecorator foo;\n * }\n * ```\n *\n * Initializers are stored per-constructor. Adding an initializer to a\n * subclass does not add it to a superclass. Since initializers are run in\n * constructors, initializers will run in order of the class hierarchy,\n * starting with superclasses and progressing to the instance's class.\n *\n * @nocollapse\n */\n static addInitializer(initializer: Initializer) {\n this.__prepare();\n (this._initializers ??= []).push(initializer);\n }\n\n static _initializers?: Initializer[];\n\n /*\n * Due to closure compiler ES6 compilation bugs, @nocollapse is required on\n * all static methods and properties with initializers. Reference:\n * - https://github.com/google/closure-compiler/issues/1776\n */\n\n /**\n * Maps attribute names to properties; for example `foobar` attribute to\n * `fooBar` property. Created lazily on user subclasses when finalizing the\n * class.\n * @nocollapse\n */\n private static __attributeToPropertyMap: AttributeMap;\n\n /**\n * Marks class as having been finalized, which includes creating properties\n * from `static properties`, but does *not* include all properties created\n * from decorators.\n * @nocollapse\n */\n protected static finalized: true | undefined;\n\n /**\n * Memoized list of all element properties, including any superclass\n * properties. Created lazily on user subclasses when finalizing the class.\n *\n * @nocollapse\n * @category properties\n */\n static elementProperties: PropertyDeclarationMap;\n\n /**\n * User-supplied object that maps property names to `PropertyDeclaration`\n * objects containing options for configuring reactive properties. When\n * a reactive property is set the element will update and render.\n *\n * By default properties are public fields, and as such, they should be\n * considered as primarily settable by element users, either via attribute or\n * the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the `state: true` option. Properties\n * marked as `state` do not reflect from the corresponding attribute\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating\n * public properties should typically not be done for non-primitive (object or\n * array) properties. In other cases when an element needs to manage state, a\n * private property set with the `state: true` option should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n * @nocollapse\n * @category properties\n */\n static properties: PropertyDeclarations;\n\n /**\n * Memoized list of all element styles.\n * Created lazily on user subclasses when finalizing the class.\n * @nocollapse\n * @category styles\n */\n static elementStyles: Array<CSSResultOrNative> = [];\n\n /**\n * Array of styles to apply to the element. The styles should be defined\n * using the {@linkcode css} tag function, via constructible stylesheets, or\n * imported from native CSS module scripts.\n *\n * Note on Content Security Policy:\n *\n * Element styles are implemented with `<style>` tags when the browser doesn't\n * support adopted StyleSheets. To use such `<style>` tags with the style-src\n * CSP directive, the style-src value must either include 'unsafe-inline' or\n * `nonce-<base64-value>` with `<base64-value>` replaced be a server-generated\n * nonce.\n *\n * To provide a nonce to use on generated `<style>` elements, set\n * `window.litNonce` to a server-generated nonce in your page's HTML, before\n * loading application code:\n *\n * ```html\n * <script>\n * // Generated and unique per request:\n * window.litNonce = 'a1b2c3d4';\n * </script>\n * ```\n * @nocollapse\n * @category styles\n */\n static styles?: CSSResultGroup;\n\n /**\n * Returns a list of attributes corresponding to the registered properties.\n * @nocollapse\n * @category attributes\n */\n static get observedAttributes() {\n // Ensure we've created all properties\n this.finalize();\n // this.__attributeToPropertyMap is only undefined after finalize() in\n // ReactiveElement itself. ReactiveElement.observedAttributes is only\n // accessed with ReactiveElement as the receiver when a subclass or mixin\n // calls super.observedAttributes\n return (\n this.__attributeToPropertyMap && [...this.__attributeToPropertyMap.keys()]\n );\n }\n\n private __instanceProperties?: PropertyValues = undefined;\n\n /**\n * Creates a property accessor on the element prototype if one does not exist\n * and stores a {@linkcode PropertyDeclaration} for the property with the\n * given options. The property setter calls the property's `hasChanged`\n * property option or uses a strict identity check to determine whether or not\n * to request an update.\n *\n * This method may be overridden to customize properties; however,\n * when doing so, it's important to call `super.createProperty` to ensure\n * the property is setup correctly. This method calls\n * `getPropertyDescriptor` internally to get a descriptor to install.\n * To customize what properties do when they are get or set, override\n * `getPropertyDescriptor`. To customize the options for a property,\n * implement `createProperty` like this:\n *\n * ```ts\n * static createProperty(name, options) {\n * options = Object.assign(options, {myOption: true});\n * super.createProperty(name, options);\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n static createProperty(\n name: PropertyKey,\n options: PropertyDeclaration = defaultPropertyDeclaration\n ) {\n // If this is a state property, force the attribute to false.\n if (options.state) {\n (options as Mutable<PropertyDeclaration, 'attribute'>).attribute = false;\n }\n this.__prepare();\n // Whether this property is wrapping accessors.\n // Helps control the initial value change and reflection logic.\n if (this.prototype.hasOwnProperty(name)) {\n options = Object.create(options);\n options.wrapped = true;\n }\n this.elementProperties.set(name, options);\n if (!options.noAccessor) {\n const key = DEV_MODE\n ? // Use Symbol.for in dev mode to make it easier to maintain state\n // when doing HMR.\n Symbol.for(`${String(name)} (@property() cache)`)\n : Symbol();\n const descriptor = this.getPropertyDescriptor(name, key, options);\n if (descriptor !== undefined) {\n defineProperty(this.prototype, name, descriptor);\n }\n }\n }\n\n /**\n * Returns a property descriptor to be defined on the given named property.\n * If no descriptor is returned, the property will not become an accessor.\n * For example,\n *\n * ```ts\n * class MyElement extends LitElement {\n * static getPropertyDescriptor(name, key, options) {\n * const defaultDescriptor =\n * super.getPropertyDescriptor(name, key, options);\n * const setter = defaultDescriptor.set;\n * return {\n * get: defaultDescriptor.get,\n * set(value) {\n * setter.call(this, value);\n * // custom action.\n * },\n * configurable: true,\n * enumerable: true\n * }\n * }\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n protected static getPropertyDescriptor(\n name: PropertyKey,\n key: string | symbol,\n options: PropertyDeclaration\n ): PropertyDescriptor | undefined {\n const {get, set} = getOwnPropertyDescriptor(this.prototype, name) ?? {\n get(this: ReactiveElement) {\n return this[key as keyof typeof this];\n },\n set(this: ReactiveElement, v: unknown) {\n (this as unknown as Record<string | symbol, unknown>)[key] = v;\n },\n };\n if (DEV_MODE && get == null) {\n if ('value' in (getOwnPropertyDescriptor(this.prototype, name) ?? {})) {\n throw new Error(\n `Field ${JSON.stringify(String(name))} on ` +\n `${this.name} was declared as a reactive property ` +\n `but it's actually declared as a value on the prototype. ` +\n `Usually this is due to using @property or @state on a method.`\n );\n }\n issueWarning(\n 'reactive-property-without-getter',\n `Field ${JSON.stringify(String(name))} on ` +\n `${this.name} was declared as a reactive property ` +\n `but it does not have a getter. This will be an error in a ` +\n `future version of Lit.`\n );\n }\n return {\n get,\n set(this: ReactiveElement, value: unknown) {\n const oldValue = get?.call(this);\n set?.call(this, value);\n this.requestUpdate(name, oldValue, options);\n },\n configurable: true,\n enumerable: true,\n };\n }\n\n /**\n * Returns the property options associated with the given property.\n * These options are defined with a `PropertyDeclaration` via the `properties`\n * object or the `@property` decorator and are registered in\n * `createProperty(...)`.\n *\n * Note, this method should be considered \"final\" and not overridden. To\n * customize the options for a given property, override\n * {@linkcode createProperty}.\n *\n * @nocollapse\n * @final\n * @category properties\n */\n static getPropertyOptions(name: PropertyKey) {\n return this.elementProperties.get(name) ?? defaultPropertyDeclaration;\n }\n\n // Temporary, until google3 is on TypeScript 5.2\n declare static [Symbol.metadata]: object & Record<PropertyKey, unknown>;\n\n /**\n * Initializes static own properties of the class used in bookkeeping\n * for element properties, initializers, etc.\n *\n * Can be called multiple times by code that needs to ensure these\n * properties exist before using them.\n *\n * This method ensures the superclass is finalized so that inherited\n * property metadata can be copied down.\n * @nocollapse\n */\n private static __prepare() {\n if (\n this.hasOwnProperty(JSCompiler_renameProperty('elementProperties', this))\n ) {\n // Already prepared\n return;\n }\n // Finalize any superclasses\n const superCtor = getPrototypeOf(this) as typeof ReactiveElement;\n superCtor.finalize();\n\n // Create own set of initializers for this class if any exist on the\n // superclass and copy them down. Note, for a small perf boost, avoid\n // creating initializers unless needed.\n if (superCtor._initializers !== undefined) {\n this._initializers = [...superCtor._initializers];\n }\n // Initialize elementProperties from the superclass\n this.elementProperties = new Map(superCtor.elementProperties);\n }\n\n /**\n * Finishes setting up the class so that it's ready to be registered\n * as a custom element and instantiated.\n *\n * This method is called by the ReactiveElement.observedAttributes getter.\n * If you override the observedAttributes getter, you must either call\n * super.observedAttributes to trigger finalization, or call finalize()\n * yourself.\n *\n * @nocollapse\n */\n protected static finalize() {\n if (this.hasOwnProperty(JSCompiler_renameProperty('finalized', this))) {\n return;\n }\n this.finalized = true;\n this.__prepare();\n\n // Create properties from the static properties block:\n if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n const props = this.properties;\n const propKeys = [\n ...getOwnPropertyNames(props),\n ...getOwnPropertySymbols(props),\n ] as Array<keyof typeof props>;\n for (const p of propKeys) {\n this.createProperty(p, props[p]);\n }\n }\n\n // Create properties from standard decorator metadata:\n const metadata = this[Symbol.metadata];\n if (metadata !== null) {\n const properties = litPropertyMetadata.get(metadata);\n if (properties !== undefined) {\n for (const [p, options] of properties) {\n this.elementProperties.set(p, options);\n }\n }\n }\n\n // Create the attribute-to-property map\n this.__attributeToPropertyMap = new Map();\n for (const [p, options] of this.elementProperties) {\n const attr = this.__attributeNameForProperty(p, options);\n if (attr !== undefined) {\n this.__attributeToPropertyMap.set(attr, p);\n }\n }\n\n this.elementStyles = this.finalizeStyles(this.styles);\n\n if (DEV_MODE) {\n if (this.hasOwnProperty('createProperty')) {\n issueWarning(\n 'no-override-create-property',\n 'Overriding ReactiveElement.createProperty() is deprecated. ' +\n 'The override will not be called with standard decorators'\n );\n }\n if (this.hasOwnProperty('getPropertyDescriptor')) {\n issueWarning(\n 'no-override-get-property-descriptor',\n 'Overriding ReactiveElement.getPropertyDescriptor() is deprecated. ' +\n 'The override will not be called with standard decorators'\n );\n }\n }\n }\n\n /**\n * Options used when calling `attachShadow`. Set this property to customize\n * the options for the shadowRoot; for example, to create a closed\n * shadowRoot: `{mode: 'closed'}`.\n *\n * Note, these options are used in `createRenderRoot`. If this method\n * is customized, options should be respected if possible.\n * @nocollapse\n * @category rendering\n */\n static shadowRootOptions: ShadowRootInit = {mode: 'open'};\n\n /**\n * Takes the styles the user supplied via the `static styles` property and\n * returns the array of styles to apply to the element.\n * Override this method to integrate into a style management system.\n *\n * Styles are deduplicated preserving the _last_ instance in the list. This\n * is a performance optimization to avoid duplicated styles that can occur\n * especially when composing via subclassing. The last item is kept to try\n * to preserve the cascade order with the assumption that it's most important\n * that last added styles override previous styles.\n *\n * @nocollapse\n * @category styles\n */\n protected static finalizeStyles(\n styles?: CSSResultGroup\n ): Array<CSSResultOrNative> {\n const elementStyles = [];\n if (Array.isArray(styles)) {\n // Dedupe the flattened array in reverse order to preserve the last items.\n // Casting to Array<unknown> works around TS error that\n // appears to come from trying to flatten a type CSSResultArray.\n const set = new Set((styles as Array<unknown>).flat(Infinity).reverse());\n // Then preserve original order by adding the set items in reverse order.\n for (const s of set) {\n elementStyles.unshift(getCompatibleStyle(s as CSSResultOrNative));\n }\n } else if (styles !== undefined) {\n elementStyles.push(getCompatibleStyle(styles));\n }\n return elementStyles;\n }\n\n /**\n * Node or ShadowRoot into which element DOM should be rendered. Defaults\n * to an open shadowRoot.\n * @category rendering\n */\n readonly renderRoot!: HTMLElement | DocumentFragment;\n\n /**\n * Returns the property name for the given attribute `name`.\n * @nocollapse\n */\n private static __attributeNameForProperty(\n name: PropertyKey,\n options: PropertyDeclaration\n ) {\n const attribute = options.attribute;\n return attribute === false\n ? undefined\n : typeof attribute === 'string'\n ? attribute\n : typeof name === 'string'\n ? name.toLowerCase()\n : undefined;\n }\n\n // Initialize to an unresolved Promise so we can make sure the element has\n // connected before first update.\n private __updatePromise!: Promise<boolean>;\n\n /**\n * True if there is a pending update as a result of calling `requestUpdate()`.\n * Should only be read.\n * @category updates\n */\n isUpdatePending = false;\n\n /**\n * Is set to `true` after the first update. The element code cannot assume\n * that `renderRoot` exists before the element `hasUpdated`.\n * @category updates\n */\n hasUpdated = false;\n\n /**\n * Map with keys for any properties that have changed since the last\n * update cycle with previous values.\n *\n * @internal\n */\n _$changedProperties!: PropertyValues;\n\n /**\n * Records property default values when the\n * `useDefault` option is used.\n */\n private __defaultValues?: Map<PropertyKey, unknown>;\n\n /**\n * Properties that should be reflected when updated.\n */\n private __reflectingProperties?: Set<PropertyKey>;\n\n /**\n * Name of currently reflecting property\n */\n private __reflectingProperty: PropertyKey | null = null;\n\n /**\n * Set of controllers.\n */\n private __controllers?: Set<ReactiveController>;\n\n constructor() {\n super();\n this.__initialize();\n }\n\n /**\n * Internal only override point for customizing work done when elements\n * are constructed.\n */\n private __initialize() {\n this.__updatePromise = new Promise<boolean>(\n (res) => (this.enableUpdating = res)\n );\n this._$changedProperties = new Map();\n // This enqueues a microtask that must run before the first update, so it\n // must be called before requestUpdate()\n this.__saveInstanceProperties();\n // ensures first update will be caught by an early access of\n // `updateComplete`\n this.requestUpdate();\n (this.constructor as typeof ReactiveElement)._initializers?.forEach((i) =>\n i(this)\n );\n }\n\n /**\n * Registers a `ReactiveController` to participate in the element's reactive\n * update cycle. The element automatically calls into any registered\n * controllers during its lifecycle callbacks.\n *\n * If the element is connected when `addController()` is called, the\n * controller's `hostConnected()` callback will be immediately called.\n * @category controllers\n */\n addController(controller: ReactiveController) {\n (this.__controllers ??= new Set()).add(controller);\n // If a controller is added after the element has been connected,\n // call hostConnected. Note, re-using existence of `renderRoot` here\n // (which is set in connectedCallback) to avoid the need to track a\n // first connected state.\n if (this.renderRoot !== undefined && this.isConnected) {\n controller.hostConnected?.();\n }\n }\n\n /**\n * Removes a `ReactiveController` from the element.\n * @category controllers\n */\n removeController(controller: ReactiveController) {\n this.__controllers?.delete(controller);\n }\n\n /**\n * Fixes any properties set on the instance before upgrade time.\n * Otherwise these would shadow the accessor and break these properties.\n * The properties are stored in a Map which is played back after the\n * constructor runs.\n */\n private __saveInstanceProperties() {\n const instanceProperties = new Map<PropertyKey, unknown>();\n const elementProperties = (this.constructor as typeof ReactiveElement)\n .elementProperties;\n for (const p of elementProperties.keys() as IterableIterator<keyof this>) {\n if (this.hasOwnProperty(p)) {\n instanceProperties.set(p, this[p]);\n delete this[p];\n }\n }\n if (instanceProperties.size > 0) {\n this.__instanceProperties = instanceProperties;\n }\n }\n\n /**\n * Returns the node into which the element should render and by default\n * creates and returns an open shadowRoot. Implement to customize where the\n * element's DOM is rendered. For example, to render into the element's\n * childNodes, return `this`.\n *\n * @return Returns a node into which to render.\n * @category rendering\n */\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n const renderRoot =\n this.shadowRoot ??\n this.attachShadow(\n (this.constructor as typeof ReactiveElement).shadowRootOptions\n );\n adoptStyles(\n renderRoot,\n (this.constructor as typeof ReactiveElement).elementStyles\n );\n return renderRoot;\n }\n\n /**\n * On first connection, creates the element's renderRoot, sets up\n * element styling, and enables updating.\n * @category lifecycle\n */\n connectedCallback() {\n // Create renderRoot before controllers `hostConnected`\n (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n this.createRenderRoot();\n this.enableUpdating(true);\n this.__controllers?.forEach((c) => c.hostConnected?.());\n }\n\n /**\n * Note, this method should be considered final and not overridden. It is\n * overridden on the element instance with a function that triggers the first\n * update.\n * @category updates\n */\n protected enableUpdating(_requestedUpdate: boolean) {}\n\n /**\n * Allows for `super.disconnectedCallback()` in extensions while\n * reserving the possibility of making non-breaking feature additions\n * when disconnecting at some point in the future.\n * @category lifecycle\n */\n disconnectedCallback() {\n this.__controllers?.forEach((c) => c.hostDisconnected?.());\n }\n\n /**\n * Synchronizes property values when attributes change.\n *\n * Specifically, when an attribute is set, the corresponding property is set.\n * You should rarely need to implement this callback. If this method is\n * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n * called.\n *\n * See [responding to attribute changes](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#responding_to_attribute_changes)\n * on MDN for more information about the `attributeChangedCallback`.\n * @category attributes\n */\n attributeChangedCallback(\n name: string,\n _old: string | null,\n value: string | null\n ) {\n this._$attributeToProperty(name, value);\n }\n\n private __propertyToAttribute(name: PropertyKey, value: unknown) {\n const elemProperties: PropertyDeclarationMap = (\n this.constructor as typeof ReactiveElement\n ).elementProperties;\n const options = elemProperties.get(name)!;\n const attr = (\n this.constructor as typeof ReactiveElement\n ).__attributeNameForProperty(name, options);\n if (attr !== undefined && options.reflect === true) {\n const converter =\n (options.converter as ComplexAttributeConverter)?.toAttribute !==\n undefined\n ? (options.converter as ComplexAttributeConverter)\n : defaultConverter;\n const attrValue = converter.toAttribute!(value, options.type);\n if (\n DEV_MODE &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n 'migration'\n ) &&\n attrValue === undefined\n ) {\n issueWarning(\n 'undefined-attribute-value',\n `The attribute value for the ${name as string} property is ` +\n `undefined on element ${this.localName}. The attribute will be ` +\n `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n `the attribute would not have changed.`\n );\n }\n // Track if the property is being reflected to avoid\n // setting the property again via `attributeChangedCallback`. Note:\n // 1. this takes advantage of the fact that the callback is synchronous.\n // 2. will behave incorrectly if multiple attributes are in the reaction\n // stack at time of calling. However, since we process attributes\n // in `update` this should not be possible (or an extreme corner case\n // that we'd like to discover).\n // mark state reflecting\n this.__reflectingProperty = name;\n if (attrValue == null) {\n this.removeAttribute(attr);\n } else {\n this.setAttribute(attr, attrValue as string);\n }\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n\n /** @internal */\n _$attributeToProperty(name: string, value: string | null) {\n const ctor = this.constructor as typeof ReactiveElement;\n // Note, hint this as an `AttributeMap` so closure clearly understands\n // the type; it has issues with tracking types through statics\n const propName = (ctor.__attributeToPropertyMap as AttributeMap).get(name);\n // Use tracking info to avoid reflecting a property value to an attribute\n // if it was just set because the attribute changed.\n if (propName !== undefined && this.__reflectingProperty !== propName) {\n const options = ctor.getPropertyOptions(propName);\n const converter =\n typeof options.converter === 'function'\n ? {fromAttribute: options.converter}\n : options.converter?.fromAttribute !== undefined\n ? options.converter\n : defaultConverter;\n // mark state reflecting\n this.__reflectingProperty = propName;\n const convertedValue = converter.fromAttribute!(value, options.type);\n this[propName as keyof this] =\n convertedValue ??\n this.__defaultValues?.get(propName) ??\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (convertedValue as any);\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n\n /**\n * Requests an update which is processed asynchronously. This should be called\n * when an element should update based on some state not triggered by setting\n * a reactive property. In this case, pass no arguments. It should also be\n * called when manually implementing a property setter. In this case, pass the\n * property `name` and `oldValue` to ensure that any configured property\n * options are honored.\n *\n * @param name name of requesting property\n * @param oldValue old value of requesting property\n * @param options property options to use instead of the previously\n * configured options\n * @param useNewValue if true, the newValue argument is used instead of\n * reading the property value. This is important to use if the reactive\n * property is a standard private accessor, as opposed to a plain\n * property, since private members can't be dynamically read by name.\n * @param newValue the new value of the property. This is only used if\n * `useNewValue` is true.\n * @category updates\n */\n requestUpdate(\n name?: PropertyKey,\n oldValue?: unknown,\n options?: PropertyDeclaration,\n useNewValue = false,\n newValue?: unknown\n ): void {\n // If we have a property key, perform property update steps.\n if (name !== undefined) {\n if (DEV_MODE && (name as unknown) instanceof Event) {\n issueWarning(\n ``,\n `The requestUpdate() method was called with an Event as the property name. This is probably a mistake caused by binding this.requestUpdate as an event listener. Instead bind a function that will call it with no arguments: () => this.requestUpdate()`\n );\n }\n const ctor = this.constructor as typeof ReactiveElement;\n if (useNewValue === false) {\n newValue = this[name as keyof this];\n }\n options ??= ctor.getPropertyOptions(name);\n const changed =\n (options.hasChanged ?? notEqual)(newValue, oldValue) ||\n // When there is no change, check a corner case that can occur when\n // 1. there's a initial value which was not reflected\n // 2. the property is subsequently set to this value.\n // For example, `prop: {useDefault: true, reflect: true}`\n // and el.prop = 'foo'. This should be considered a change if the\n // attribute is not set because we will now reflect the property to the attribute.\n (options.useDefault &&\n options.reflect &&\n newValue === this.__defaultValues?.get(name) &&\n !this.hasAttribute(ctor.__attributeNameForProperty(name, options)!));\n if (changed) {\n this._$changeProperty(name, oldValue, options);\n } else {\n // Abort the request if the property should not be considered changed.\n return;\n }\n }\n if (this.isUpdatePending === false) {\n this.__updatePromise = this.__enqueueUpdate();\n }\n }\n\n /**\n * @internal\n */\n _$changeProperty(\n name: PropertyKey,\n oldValue: unknown,\n {useDefault, reflect, wrapped}: PropertyDeclaration,\n initializeValue?: unknown\n ) {\n // Record default value when useDefault is used. This allows us to\n // restore this value when the attribute is removed.\n if (useDefault && !(this.__defaultValues ??= new Map()).has(name)) {\n this.__defaultValues.set(\n name,\n initializeValue ?? oldValue ?? this[name as keyof this]\n );\n // if this is not wrapping an accessor, it must be an initial setting\n // and in this case we do not want to record the change or reflect.\n if (wrapped !== true || initializeValue !== undefined) {\n return;\n }\n }\n // TODO (justinfagnani): Create a benchmark of Map.has() + Map.set(\n // vs just Map.set()\n if (!this._$changedProperties.has(name)) {\n // On the initial change, the old value should be `undefined`, except\n // with `useDefault`\n if (!this.hasUpdated && !useDefault) {\n oldValue = undefined;\n }\n this._$changedProperties.set(name, oldValue);\n }\n // Add to reflecting properties set.\n // Note, it's important that every change has a chance to add the\n // property to `__reflectingProperties`. This ensures setting\n // attribute + property reflects correctly.\n if (reflect === true && this.__reflectingProperty !== name) {\n (this.__reflectingProperties ??= new Set<PropertyKey>()).add(name);\n }\n }\n\n /**\n * Sets up the element to asynchronously update.\n */\n private async __enqueueUpdate() {\n this.isUpdatePending = true;\n try {\n // Ensure any previous update has resolved before updating.\n // This `await` also ensures that property changes are batched.\n await this.__updatePromise;\n } catch (e) {\n // Refire any previous errors async so they do not disrupt the update\n // cycle. Errors are refired so developers have a chance to observe\n // them, and this can be done by implementing\n // `window.onunhandledrejection`.\n Promise.reject(e);\n }\n const result = this.scheduleUpdate();\n // If `scheduleUpdate` returns a Promise, we await it. This is done to\n // enable coordinating updates with a scheduler. Note, the result is\n // checked to avoid delaying an additional microtask unless we need to.\n if (result != null) {\n await result;\n }\n return !this.isUpdatePending;\n }\n\n /**\n * Schedules an element update. You can override this method to change the\n * timing of updates by returning a Promise. The update will await the\n * returned Promise, and you should resolve the Promise to allow the update\n * to proceed. If this method is overridden, `super.scheduleUpdate()`\n * must be called.\n *\n * For instance, to schedule updates to occur just before the next frame:\n *\n * ```ts\n * override protected async scheduleUpdate(): Promise<unknown> {\n * await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n * super.scheduleUpdate();\n * }\n * ```\n * @category updates\n */\n protected scheduleUpdate(): void | Promise<unknown> {\n const result = this.performUpdate();\n if (\n DEV_MODE &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n 'async-perform-update'\n ) &&\n typeof (result as unknown as Promise<unknown> | undefined)?.then ===\n 'function'\n ) {\n issueWarning(\n 'async-perform-update',\n `Element ${this.localName} returned a Promise from performUpdate(). ` +\n `This behavior is deprecated and will be removed in a future ` +\n `version of ReactiveElement.`\n );\n }\n return result;\n }\n\n /**\n * Performs an element update. Note, if an exception is thrown during the\n * update, `firstUpdated` and `updated` will not be called.\n *\n * Call `performUpdate()` to immediately process a pending update. This should\n * generally not be needed, but it can be done in rare cases when you need to\n * update synchronously.\n *\n * @category updates\n */\n protected performUpdate(): void {\n // Abort any update if one is not pending when this is called.\n // This can happen if `performUpdate` is called early to \"flush\"\n // the update.\n if (!this.isUpdatePending) {\n return;\n }\n debugLogEvent?.({kind: 'update'});\n if (!this.hasUpdated) {\n // Create renderRoot before first update. This occurs in `connectedCallback`\n // but is done here to support out of tree calls to `enableUpdating`/`performUpdate`.\n (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n this.createRenderRoot();\n if (DEV_MODE) {\n // Produce warning if any reactive properties on the prototype are\n // shadowed by class fields. Instance fields set before upgrade are\n // deleted by this point, so any own property is caused by class field\n // initialization in the constructor.\n const ctor = this.constructor as typeof ReactiveElement;\n const shadowedProperties = [...ctor.elementProperties.keys()].filter(\n (p) => this.hasOwnProperty(p) && p in getPrototypeOf(this)\n );\n if (shadowedProperties.length) {\n throw new Error(\n `The following properties on element ${this.localName} will not ` +\n `trigger updates as expected because they are set using class ` +\n `fields: ${shadowedProperties.join(', ')}. ` +\n `Native class fields and some compiled output will overwrite ` +\n `accessors used for detecting changes. See ` +\n `https://lit.dev/msg/class-field-shadowing ` +\n `for more information.`\n );\n }\n }\n // Mixin instance properties once, if they exist.\n if (this.__instanceProperties) {\n // TODO (justinfagnani): should we use the stored value? Could a new value\n // have been set since we stored the own property value?\n for (const [p, value] of this.__instanceProperties) {\n this[p as keyof this] = value as this[keyof this];\n }\n this.__instanceProperties = undefined;\n }\n // Trigger initial value reflection and populate the initial\n // `changedProperties` map, but only for the case of properties created\n // via `createProperty` on accessors, which will not have already\n // populated the `changedProperties` map since they are not set.\n // We can't know if these accessors had initializers, so we just set\n // them anyway - a difference from experimental decorators on fields and\n // standard decorators on auto-accessors.\n // For context see:\n // https://github.com/lit/lit/pull/4183#issuecomment-1711959635\n const elementProperties = (this.constructor as typeof ReactiveElement)\n .elementProperties;\n if (elementProperties.size > 0) {\n for (const [p, options] of elementProperties) {\n const {wrapped} = options;\n const value = this[p as keyof this];\n if (\n wrapped === true &&\n !this._$changedProperties.has(p) &&\n value !== undefined\n ) {\n this._$changeProperty(p, undefined, options, value);\n }\n }\n }\n }\n let shouldUpdate = false;\n const changedProperties = this._$changedProperties;\n try {\n shouldUpdate = this.shouldUpdate(changedProperties);\n if (shouldUpdate) {\n this.willUpdate(changedProperties);\n this.__controllers?.forEach((c) => c.hostUpdate?.());\n this.update(changedProperties);\n } else {\n this.__markUpdated();\n }\n } catch (e) {\n // Prevent `firstUpdated` and `updated` from running when there's an\n // update exception.\n shouldUpdate = false;\n // Ensure element can accept additional updates after an exception.\n this.__markUpdated();\n throw e;\n }\n // The update is no longer considered pending and further updates are now allowed.\n if (shouldUpdate) {\n this._$didUpdate(changedProperties);\n }\n }\n\n /**\n * Invoked before `update()` to compute values needed during the update.\n *\n * Implement `willUpdate` to compute property values that depend on other\n * properties and are used in the rest of the update process.\n *\n * ```ts\n * willUpdate(changedProperties) {\n * // only need to check changed properties for an expensive computation.\n * if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n * this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n * }\n * }\n *\n * render() {\n * return html`SHA: ${this.sha}`;\n * }\n * ```\n *\n * @category updates\n */\n protected willUpdate(_changedProperties: PropertyValues): void {}\n\n // Note, this is an override point for polyfill-support.\n // @internal\n _$didUpdate(changedProperties: PropertyValues) {\n this.__controllers?.forEach((c) => c.hostUpdated?.());\n if (!this.hasUpdated) {\n this.hasUpdated = true;\n this.firstUpdated(changedProperties);\n }\n this.updated(changedProperties);\n if (\n DEV_MODE &&\n this.isUpdatePending &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n 'change-in-update'\n )\n ) {\n issueWarning(\n 'change-in-update',\n `Element ${this.localName} scheduled an update ` +\n `(generally because a property was set) ` +\n `after an update completed, causing a new update to be scheduled. ` +\n `This is inefficient and should be avoided unless the next update ` +\n `can only be scheduled as a side effect of the previous update.`\n );\n }\n }\n\n private __markUpdated() {\n this._$changedProperties = new Map();\n this.isUpdatePending = false;\n }\n\n /**\n * Returns a Promise that resolves when the element has completed updating.\n * The Promise value is a boolean that is `true` if the element completed the\n * update without triggering another update. The Promise result is `false` if\n * a property was set inside `updated()`. If the Promise is rejected, an\n * exception was thrown during the update.\n *\n * To await additional asynchronous work, override the `getUpdateComplete`\n * method. For example, it is sometimes useful to await a rendered element\n * before fulfilling this Promise. To do this, first await\n * `super.getUpdateComplete()`, then any subsequent state.\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n get updateComplete(): Promise<boolean> {\n return this.getUpdateComplete();\n }\n\n /**\n * Override point for the `updateComplete` promise.\n *\n * It is not safe to override the `updateComplete` getter directly due to a\n * limitation in TypeScript which means it is not possible to call a\n * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n * This method should be overridden instead. For example:\n *\n * ```ts\n * class MyElement extends LitElement {\n * override async getUpdateComplete() {\n * const result = await super.getUpdateComplete();\n * await this._myChild.updateComplete;\n * return result;\n * }\n * }\n * ```\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n protected getUpdateComplete(): Promise<boolean> {\n return this.__updatePromise;\n }\n\n /**\n * Controls whether or not `update()` should be called when the element requests\n * an update. By default, this method always returns `true`, but this can be\n * customized to control when to update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n return true;\n }\n\n /**\n * Updates the element. This method reflects property values to attributes.\n * It can be overridden to render and keep updated element DOM.\n * Setting properties inside this method will *not* trigger\n * another update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected update(_changedProperties: PropertyValues) {\n // The forEach() expression will only run when __reflectingProperties is\n // defined, and it returns undefined, setting __reflectingProperties to\n // undefined\n this.__reflectingProperties &&= this.__reflectingProperties.forEach((p) =>\n this.__propertyToAttribute(p, this[p as keyof this])\n ) as undefined;\n this.__markUpdated();\n }\n\n /**\n * Invoked whenever the element is updated. Implement to perform\n * post-updating tasks via DOM APIs, for example, focusing an element.\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected updated(_changedProperties: PropertyValues) {}\n\n /**\n * Invoked when the element is first updated. Implement to perform one time\n * work on the element after update.\n *\n * ```ts\n * firstUpdated() {\n * this.renderRoot.getElementById('my-text-area').focus();\n * }\n * ```\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected firstUpdated(_changedProperties: PropertyValues) {}\n}\n// Assigned here to work around a jscompiler bug with static fields\n// when compiling to ES5.\n// https://github.com/google/closure-compiler/issues/3177\n(ReactiveElement as unknown as Record<string, unknown>)[\n JSCompiler_renameProperty('elementProperties', ReactiveElement)\n] = new Map();\n(ReactiveElement as unknown as Record<string, unknown>)[\n JSCompiler_renameProperty('finalized', ReactiveElement)\n] = new Map();\n\n// Apply polyfills if available\npolyfillSupport?.({ReactiveElement});\n\n// Dev mode warnings...\nif (DEV_MODE) {\n // Default warning set.\n ReactiveElement.enabledWarnings = [\n 'change-in-update',\n 'async-perform-update',\n ];\n const ensureOwnWarnings = function (ctor: typeof ReactiveElement) {\n if (\n !ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))\n ) {\n ctor.enabledWarnings = ctor.enabledWarnings!.slice();\n }\n };\n ReactiveElement.enableWarning = function (\n this: typeof ReactiveElement,\n warning: WarningKind\n ) {\n ensureOwnWarnings(this);\n if (!this.enabledWarnings!.includes(warning)) {\n this.enabledWarnings!.push(warning);\n }\n };\n ReactiveElement.disableWarning = function (\n this: typeof ReactiveElement,\n warning: WarningKind\n ) {\n ensureOwnWarnings(this);\n const i = this.enabledWarnings!.indexOf(warning);\n if (i >= 0) {\n this.enabledWarnings!.splice(i, 1);\n }\n };\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n(global.reactiveElementVersions ??= []).push('2.1.2');\nif (DEV_MODE && global.reactiveElementVersions.length > 1) {\n queueMicrotask(() => {\n issueWarning!(\n 'multiple-versions',\n `Multiple versions of Lit loaded. Loading multiple versions ` +\n `is not recommended.`\n );\n });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// IMPORTANT: these imports must be type-only\nimport type {Directive, DirectiveResult, PartInfo} from './directive.js';\nimport type {TrustedHTML, TrustedTypesWindow} from 'trusted-types/lib/index.js';\n\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LitUnstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry =\n | TemplatePrep\n | TemplateInstantiated\n | TemplateInstantiatedAndUpdated\n | TemplateUpdating\n | BeginRender\n | EndRender\n | CommitPartEntry\n | SetPartValue;\n export interface TemplatePrep {\n kind: 'template prep';\n template: Template;\n strings: TemplateStringsArray;\n clonableTemplate: HTMLTemplateElement;\n parts: TemplatePart[];\n }\n export interface BeginRender {\n kind: 'begin render';\n id: number;\n value: unknown;\n container: RenderRootNode;\n options: RenderOptions | undefined;\n part: ChildPart | undefined;\n }\n export interface EndRender {\n kind: 'end render';\n id: number;\n value: unknown;\n container: RenderRootNode;\n options: RenderOptions | undefined;\n part: ChildPart;\n }\n export interface TemplateInstantiated {\n kind: 'template instantiated';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n fragment: Node;\n parts: Array<Part | undefined>;\n values: unknown[];\n }\n export interface TemplateInstantiatedAndUpdated {\n kind: 'template instantiated and updated';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n fragment: Node;\n parts: Array<Part | undefined>;\n values: unknown[];\n }\n export interface TemplateUpdating {\n kind: 'template updating';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n parts: Array<Part | undefined>;\n values: unknown[];\n }\n export interface SetPartValue {\n kind: 'set part';\n part: Part;\n value: unknown;\n valueIndex: number;\n values: unknown[];\n templateInstance: TemplateInstance;\n }\n\n export type CommitPartEntry =\n | CommitNothingToChildEntry\n | CommitText\n | CommitNode\n | CommitAttribute\n | CommitProperty\n | CommitBooleanAttribute\n | CommitEventListener\n | CommitToElementBinding;\n\n export interface CommitNothingToChildEntry {\n kind: 'commit nothing to child';\n start: ChildNode;\n end: ChildNode | null;\n parent: Disconnectable | undefined;\n options: RenderOptions | undefined;\n }\n\n export interface CommitText {\n kind: 'commit text';\n node: Text;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitNode {\n kind: 'commit node';\n start: Node;\n parent: Disconnectable | undefined;\n value: Node;\n options: RenderOptions | undefined;\n }\n\n export interface CommitAttribute {\n kind: 'commit attribute';\n element: Element;\n name: string;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitProperty {\n kind: 'commit property';\n element: Element;\n name: string;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitBooleanAttribute {\n kind: 'commit boolean attribute';\n element: Element;\n name: string;\n value: boolean;\n options: RenderOptions | undefined;\n }\n\n export interface CommitEventListener {\n kind: 'commit event listener';\n element: Element;\n name: string;\n value: unknown;\n oldListener: unknown;\n options: RenderOptions | undefined;\n // True if we're removing the old event listener (e.g. because settings changed, or value is nothing)\n removeListener: boolean;\n // True if we're adding a new event listener (e.g. because first render, or settings changed)\n addListener: boolean;\n }\n\n export interface CommitToElementBinding {\n kind: 'commit to element binding';\n element: Element;\n value: unknown;\n options: RenderOptions | undefined;\n }\n }\n}\n\ninterface DebugLoggingWindow {\n // Even in dev mode, we generally don't want to emit these events, as that's\n // another level of cost, so only emit them when DEV_MODE is true _and_ when\n // window.emitLitDebugEvents is true.\n emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n ? (event: LitUnstable.DebugLog.Entry) => {\n const shouldEmit = (global as unknown as DebugLoggingWindow)\n .emitLitDebugLogEvents;\n if (!shouldEmit) {\n return;\n }\n global.dispatchEvent(\n new CustomEvent<LitUnstable.DebugLog.Entry>('lit-debug', {\n detail: event,\n })\n );\n }\n : undefined;\n// Used for connecting beginRender and endRender events when there are nested\n// renders when errors are thrown preventing an endRender event from being\n// called.\nlet debugLogRenderId = 0;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n global.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += code\n ? ` See https://lit.dev/msg/${code} for more information.`\n : '';\n if (\n !global.litIssuedWarnings!.has(warning) &&\n !global.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n global.litIssuedWarnings!.add(warning);\n }\n };\n\n queueMicrotask(() => {\n issueWarning(\n 'dev-mode',\n `Lit is in dev mode. Not recommended for production!`\n );\n });\n}\n\nconst wrap =\n ENABLE_SHADYDOM_NOPATCH &&\n global.ShadyDOM?.inUse &&\n global.ShadyDOM?.noPatch === true\n ? (global.ShadyDOM!.wrap as <T extends Node>(node: T) => T)\n : <T extends Node>(node: T) => node;\n\nconst trustedTypes = (global as unknown as TrustedTypesWindow).trustedTypes;\n\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n ? trustedTypes.createPolicy('lit-html', {\n createHTML: (s) => s,\n })\n : undefined;\n\n/**\n * Used to sanitize any value before it is written into the DOM. This can be\n * used to implement a security policy of allowed and disallowed values in\n * order to prevent XSS attacks.\n *\n * One way of using this callback would be to check attributes and properties\n * against a list of high risk fields, and require that values written to such\n * fields be instances of a class which is safe by construction. Closure's Safe\n * HTML Types is one implementation of this technique (\n * https://github.com/google/safe-html-types/blob/master/doc/safehtml-types.md).\n * The TrustedTypes polyfill in API-only mode could also be used as a basis\n * for this technique (https://github.com/WICG/trusted-types).\n *\n * @param node The HTML node (usually either a #text node or an Element) that\n * is being written to. Note that this is just an exemplar node, the write\n * may take place against another instance of the same class of node.\n * @param name The name of an attribute or property (for example, 'href').\n * @param type Indicates whether the write that's about to be performed will\n * be to a property or a node.\n * @return A function that will sanitize this class of writes.\n */\nexport type SanitizerFactory = (\n node: Node,\n name: string,\n type: 'property' | 'attribute'\n) => ValueSanitizer;\n\n/**\n * A function which can sanitize values that will be written to a specific kind\n * of DOM sink.\n *\n * See SanitizerFactory.\n *\n * @param value The value to sanitize. Will be the actual value passed into\n * the lit-html template literal, so this could be of any type.\n * @return The value to write to the DOM. Usually the same as the input value,\n * unless sanitization is needed.\n */\nexport type ValueSanitizer = (value: unknown) => unknown;\n\nconst identityFunction: ValueSanitizer = (value: unknown) => value;\nconst noopSanitizer: SanitizerFactory = (\n _node: Node,\n _name: string,\n _type: 'property' | 'attribute'\n) => identityFunction;\n\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer: SanitizerFactory) => {\n if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n return;\n }\n if (sanitizerFactoryInternal !== noopSanitizer) {\n throw new Error(\n `Attempted to overwrite existing lit-html security policy.` +\n ` setSanitizeDOMValueFactory should be called at most once.`\n );\n }\n sanitizerFactoryInternal = newSanitizer;\n};\n\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n sanitizerFactoryInternal = noopSanitizer;\n};\n\nconst createSanitizer: SanitizerFactory = (node, name, type) => {\n return sanitizerFactoryInternal(node, name, type);\n};\n\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${Math.random().toFixed(9).slice(2)}$`;\n\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\n\nconst d =\n NODE_MODE && global.document === undefined\n ? ({\n createTreeWalker() {\n return {};\n },\n } as unknown as Document)\n : document;\n\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = () => d.createComment('');\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\nconst isPrimitive = (value: unknown): value is Primitive =>\n value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n isArray(value) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (value as any)?.[Symbol.iterator] === 'function';\n\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n\n/**\n * End of text is: `<` followed by:\n * (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\n\nconst commentEndRegex = /-->/g;\n/**\n * Comments not started with <!--, like </{, can be ended by a single `>`\n */\nconst comment2EndRegex = />/g;\n\n/**\n * The tagEnd regex matches the end of the \"inside an opening\" tag syntax\n * position. It either matches a `>`, an attribute-like sequence, or the end\n * of the string after a space (attribute-name position ending).\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\t\\n\\f\\r\" are HTML space characters:\n * https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * So an attribute is:\n * * The name: any character except a whitespace character, (\"), ('), \">\",\n * \"=\", or \"/\". Note: this is different from the HTML spec which also excludes control characters.\n * * Followed by zero or more space characters\n * * Followed by \"=\"\n * * Followed by zero or more space characters\n * * Followed by:\n * * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n * * (\") then any non-(\"), or\n * * (') then any non-(')\n */\nconst tagEndRegex = new RegExp(\n `>|${SPACE_CHAR}(?:(${NAME_CHAR}+)(${SPACE_CHAR}*=${SPACE_CHAR}*(?:${ATTR_VALUE_CHAR}|(\"|')|))|$)`,\n 'g'\n);\nconst ENTIRE_MATCH = 0;\nconst ATTRIBUTE_NAME = 1;\nconst SPACES_AND_EQUALS = 2;\nconst QUOTE_CHAR = 3;\n\nconst singleQuoteAttrEndRegex = /'/g;\nconst doubleQuoteAttrEndRegex = /\"/g;\n/**\n * Matches the raw text elements.\n *\n * Comments are not parsed within raw text elements, so we need to search their\n * text content for marker strings.\n */\nconst rawTextElement = /^(?:script|style|textarea|title)$/i;\n\n/** TemplateResult types */\nconst HTML_RESULT = 1;\nconst SVG_RESULT = 2;\nconst MATHML_RESULT = 3;\n\ntype ResultType = typeof HTML_RESULT | typeof SVG_RESULT | typeof MATHML_RESULT;\n\n// TemplatePart types\n// IMPORTANT: these must match the values in PartType\nconst ATTRIBUTE_PART = 1;\nconst CHILD_PART = 2;\nconst PROPERTY_PART = 3;\nconst BOOLEAN_ATTRIBUTE_PART = 4;\nconst EVENT_PART = 5;\nconst ELEMENT_PART = 6;\nconst COMMENT_PART = 7;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg} when it hasn't been compiled by @lit-labs/compiler.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n */\nexport type UncompiledTemplateResult<T extends ResultType = ResultType> = {\n // This property needs to remain unminified.\n ['_$litType$']: T;\n strings: TemplateStringsArray;\n values: unknown[];\n};\n\n/**\n * This is a template result that may be either uncompiled or compiled.\n *\n * In the future, TemplateResult will be this type. If you want to explicitly\n * note that a template result is potentially compiled, you can reference this\n * type and it will continue to behave the same through the next major version\n * of Lit. This can be useful for code that wants to prepare for the next\n * major version of Lit.\n */\nexport type MaybeCompiledTemplateResult<T extends ResultType = ResultType> =\n | UncompiledTemplateResult<T>\n | CompiledTemplateResult;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg}.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n * In Lit 4, this type will be an alias of\n * MaybeCompiledTemplateResult, so that code will get type errors if it assumes\n * that Lit templates are not compiled. When deliberately working with only\n * one, use either {@linkcode CompiledTemplateResult} or\n * {@linkcode UncompiledTemplateResult} explicitly.\n */\nexport type TemplateResult<T extends ResultType = ResultType> =\n UncompiledTemplateResult<T>;\n\nexport type HTMLTemplateResult = TemplateResult<typeof HTML_RESULT>;\n\nexport type SVGTemplateResult = TemplateResult<typeof SVG_RESULT>;\n\nexport type MathMLTemplateResult = TemplateResult<typeof MATHML_RESULT>;\n\n/**\n * A TemplateResult that has been compiled by @lit-labs/compiler, skipping the\n * prepare step.\n */\nexport interface CompiledTemplateResult {\n // This is a factory in order to make template initialization lazy\n // and allow ShadyRenderOptions scope to be passed in.\n // This property needs to remain unminified.\n ['_$litType$']: CompiledTemplate;\n values: unknown[];\n}\n\nexport interface CompiledTemplate extends Omit<Template, 'el'> {\n // el is overridden to be optional. We initialize it on first render\n el?: HTMLTemplateElement;\n\n // The prepared HTML string to create a template element from.\n // The type is a TemplateStringsArray to guarantee that the value came from\n // source code, preventing a JSON injection attack.\n h: TemplateStringsArray;\n}\n\n/**\n * Generates a template literal tag function that returns a TemplateResult with\n * the given result type.\n */\nconst tag =\n <T extends ResultType>(type: T) =>\n (strings: TemplateStringsArray, ...values: unknown[]): TemplateResult<T> => {\n // Warn against templates octal escape sequences\n // We do this here rather than in render so that the warning is closer to the\n // template definition.\n if (DEV_MODE && strings.some((s) => s === undefined)) {\n console.warn(\n 'Some template strings are undefined.\\n' +\n 'This is probably caused by illegal octal escape sequences.'\n );\n }\n if (DEV_MODE) {\n // Import static-html.js results in a circular dependency which g3 doesn't\n // handle. Instead we know that static values must have the field\n // `_$litStatic$`.\n if (\n values.some((val) => (val as {_$litStatic$: unknown})?.['_$litStatic$'])\n ) {\n issueWarning(\n '',\n `Static values 'literal' or 'unsafeStatic' cannot be used as values to non-static templates.\\n` +\n `Please use the static 'html' tag function. See https://lit.dev/docs/templates/expressions/#static-expressions`\n );\n }\n }\n return {\n // This property needs to remain unminified.\n ['_$litType$']: type,\n strings,\n values,\n };\n };\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n *\n * ```ts\n * const header = (title: string) => html`<h1>${title}</h1>`;\n * ```\n *\n * The `html` tag returns a description of the DOM to render as a value. It is\n * lazy, meaning no work is done until the template is rendered. When rendering,\n * if a template comes from the same expression as a previously rendered result,\n * it's efficiently updated instead of replaced.\n */\nexport const html = tag(HTML_RESULT);\n\n/**\n * Interprets a template literal as an SVG fragment that can efficiently render\n * to and update a container.\n *\n * ```ts\n * const rect = svg`<rect width=\"10\" height=\"10\"></rect>`;\n *\n * const myImage = html`\n * <svg viewBox=\"0 0 10 10\" xmlns=\"http://www.w3.org/2000/svg\">\n * ${rect}\n * </svg>`;\n * ```\n *\n * The `svg` *tag function* should only be used for SVG fragments, or elements\n * that would be contained **inside** an `<svg>` HTML element. A common error is\n * placing an `<svg>` *element* in a template tagged with the `svg` tag\n * function. The `<svg>` element is an HTML element and should be used within a\n * template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an SVG fragment from the\n * `render()` method, as the SVG fragment will be contained within the element's\n * shadow root and thus not be properly contained within an `<svg>` HTML\n * element.\n */\nexport const svg = tag(SVG_RESULT);\n\n/**\n * Interprets a template literal as MathML fragment that can efficiently render\n * to and update a container.\n *\n * ```ts\n * const num = mathml`<mn>1</mn>`;\n *\n * const eq = html`\n * <math>\n * ${num}\n * </math>`;\n * ```\n *\n * The `mathml` *tag function* should only be used for MathML fragments, or\n * elements that would be contained **inside** a `<math>` HTML element. A common\n * error is placing a `<math>` *element* in a template tagged with the `mathml`\n * tag function. The `<math>` element is an HTML element and should be used\n * within a template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an MathML fragment from the\n * `render()` method, as the MathML fragment will be contained within the\n * element's shadow root and thus not be properly contained within a `<math>`\n * HTML element.\n */\nexport const mathml = tag(MATHML_RESULT);\n\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = Symbol.for('lit-noChange');\n\n/**\n * A sentinel value that signals a ChildPart to fully clear its content.\n *\n * ```ts\n * const button = html`${\n * user.isAdmin\n * ? html`<button>DELETE</button>`\n * : nothing\n * }`;\n * ```\n *\n * Prefer using `nothing` over other falsy values as it provides a consistent\n * behavior between various expression binding contexts.\n *\n * In child expressions, `undefined`, `null`, `''`, and `nothing` all behave the\n * same and render no nodes. In attribute expressions, `nothing` _removes_ the\n * attribute, while `undefined` and `null` will render an empty string. In\n * property expressions `nothing` becomes `undefined`.\n */\nexport const nothing = Symbol.for('lit-nothing');\n\n/**\n * The cache of prepared templates, keyed by the tagged TemplateStringsArray\n * and _not_ accounting for the specific template tag used. This means that\n * template tags cannot be dynamic - they must statically be one of html, svg,\n * or attr. This restriction simplifies the cache lookup, which is on the hot\n * path for rendering.\n */\nconst templateCache = new WeakMap<TemplateStringsArray, Template>();\n\n/**\n * Object specifying options for controlling lit-html rendering. Note that\n * while `render` may be called multiple times on the same `container` (and\n * `renderBefore` reference node) to efficiently update the rendered content,\n * only the options passed in during the first render are respected during\n * the lifetime of renders to that unique `container` + `renderBefore`\n * combination.\n */\nexport interface RenderOptions {\n /**\n * An object to use as the `this` value for event listeners. It's often\n * useful to set this to the host component rendering a template.\n */\n host?: object;\n /**\n * A DOM node before which to render content in the container.\n */\n renderBefore?: ChildNode | null;\n /**\n * Node used for cloning the template (`importNode` will be called on this\n * node). This controls the `ownerDocument` of the rendered DOM, along with\n * any inherited context. Defaults to the global `document`.\n */\n creationScope?: {importNode(node: Node, deep?: boolean): Node};\n /**\n * The initial connected state for the top-level part being rendered. If no\n * `isConnected` option is set, `AsyncDirective`s will be connected by\n * default. Set to `false` if the initial render occurs in a disconnected tree\n * and `AsyncDirective`s should see `isConnected === false` for their initial\n * render. The `part.setConnected()` method must be used subsequent to initial\n * render to change the connected state of the part.\n */\n isConnected?: boolean;\n}\n\n/**\n * The root DOM node for rendering.\n */\nexport type RenderRootNode = HTMLElement | SVGElement | DocumentFragment;\n\nconst walker = d.createTreeWalker(\n d,\n 129 /* NodeFilter.SHOW_{ELEMENT|COMMENT} */\n);\n\nlet sanitizerFactoryInternal: SanitizerFactory = noopSanitizer;\n\n//\n// Classes only below here, const variable declarations only above here...\n//\n// Keeping variable declarations and classes together improves minification.\n// Interfaces and type aliases can be interleaved freely.\n//\n\n// Type for classes that have a `_directive` or `_directives[]` field, used by\n// `resolveDirective`\nexport interface DirectiveParent {\n _$parent?: DirectiveParent;\n _$isConnected: boolean;\n __directive?: Directive;\n __directives?: Array<Directive | undefined>;\n}\n\nfunction trustFromTemplateString(\n tsa: TemplateStringsArray,\n stringFromTSA: string\n): TrustedHTML {\n // A security check to prevent spoofing of Lit template results.\n // In the future, we may be able to replace this with Array.isTemplateObject,\n // though we might need to make that check inside of the html and svg\n // functions, because precompiled templates don't come in as\n // TemplateStringArray objects.\n if (!isArray(tsa) || !tsa.hasOwnProperty('raw')) {\n let message = 'invalid template strings array';\n if (DEV_MODE) {\n message = `\n Internal Error: expected template strings to be an array\n with a 'raw' field. Faking a template strings array by\n calling html or svg like an ordinary function is effectively\n the same as calling unsafeHtml and can lead to major security\n issues, e.g. opening your code up to XSS attacks.\n If you're using the html or svg tagged template functions normally\n and still seeing this error, please file a bug at\n https://github.com/lit/lit/issues/new?template=bug_report.md\n and include information about your build tooling, if any.\n `\n .trim()\n .replace(/\\n */g, '\\n');\n }\n throw new Error(message);\n }\n return policy !== undefined\n ? policy.createHTML(stringFromTSA)\n : (stringFromTSA as unknown as TrustedHTML);\n}\n\n/**\n * Returns an HTML string for the given TemplateStringsArray and result type\n * (HTML or SVG), along with the case-sensitive bound attribute names in\n * template order. The HTML contains comment markers denoting the `ChildPart`s\n * and suffixes on bound attributes denoting the `AttributeParts`.\n *\n * @param strings template strings array\n * @param type HTML or SVG\n * @return Array containing `[html, attrNames]` (array returned for terseness,\n * to avoid object fields since this code is shared with non-minified SSR\n * code)\n */\nconst getTemplateHtml = (\n strings: TemplateStringsArray,\n type: ResultType\n): [TrustedHTML, Array<string>] => {\n // Insert makers into the template HTML to represent the position of\n // bindings. The following code scans the template strings to determine the\n // syntactic position of the bindings. They can be in text position, where\n // we insert an HTML comment, attribute value position, where we insert a\n // sentinel string and re-write the attribute name, or inside a tag where\n // we insert the sentinel string.\n const l = strings.length - 1;\n // Stores the case-sensitive bound attribute names in the order of their\n // parts. ElementParts are also reflected in this array as undefined\n // rather than a string, to disambiguate from attribute bindings.\n const attrNames: Array<string> = [];\n let html =\n type === SVG_RESULT ? '<svg>' : type === MATHML_RESULT ? '<math>' : '';\n\n // When we're inside a raw text tag (not it's text content), the regex\n // will still be tagRegex so we can find attributes, but will switch to\n // this regex when the tag ends.\n let rawTextEndRegex: RegExp | undefined;\n\n // The current parsing state, represented as a reference to one of the\n // regexes\n let regex = textEndRegex;\n\n for (let i = 0; i < l; i++) {\n const s = strings[i];\n // The index of the end of the last attribute name. When this is\n // positive at end of a string, it means we're in an attribute value\n // position and need to rewrite the attribute name.\n // We also use a special value of -2 to indicate that we encountered\n // the end of a string in attribute name position.\n let attrNameEndIndex = -1;\n let attrName: string | undefined;\n let lastIndex = 0;\n let match!: RegExpExecArray | null;\n\n // The conditions in this loop handle the current parse state, and the\n // assignments to the `regex` variable are the state transitions.\n while (lastIndex < s.length) {\n // Make sure we start searching from where we previously left off\n regex.lastIndex = lastIndex;\n match = regex.exec(s);\n if (match === null) {\n break;\n }\n lastIndex = regex.lastIndex;\n if (regex === textEndRegex) {\n if (match[COMMENT_START] === '!--') {\n regex = commentEndRegex;\n } else if (match[COMMENT_START] !== undefined) {\n // We started a weird comment, like </{\n regex = comment2EndRegex;\n } else if (match[TAG_NAME] !== undefined) {\n if (rawTextElement.test(match[TAG_NAME])) {\n // Record if we encounter a raw-text element. We'll switch to\n // this regex at the end of the tag.\n rawTextEndRegex = new RegExp(`</${match[TAG_NAME]}`, 'g');\n }\n regex = tagEndRegex;\n } else if (match[DYNAMIC_TAG_NAME] !== undefined) {\n if (DEV_MODE) {\n throw new Error(\n 'Bindings in tag names are not supported. Please use static templates instead. ' +\n 'See https://lit.dev/docs/templates/expressions/#static-expressions'\n );\n }\n regex = tagEndRegex;\n }\n } else if (regex === tagEndRegex) {\n if (match[ENTIRE_MATCH] === '>') {\n // End of a tag. If we had started a raw-text element, use that\n // regex\n regex = rawTextEndRegex ?? textEndRegex;\n // We may be ending an unquoted attribute value, so make sure we\n // clear any pending attrNameEndIndex\n attrNameEndIndex = -1;\n } else if (match[ATTRIBUTE_NAME] === undefined) {\n // Attribute name position\n attrNameEndIndex = -2;\n } else {\n attrNameEndIndex = regex.lastIndex - match[SPACES_AND_EQUALS].length;\n attrName = match[ATTRIBUTE_NAME];\n regex =\n match[QUOTE_CHAR] === undefined\n ? tagEndRegex\n : match[QUOTE_CHAR] === '\"'\n ? doubleQuoteAttrEndRegex\n : singleQuoteAttrEndRegex;\n }\n } else if (\n regex === doubleQuoteAttrEndRegex ||\n regex === singleQuoteAttrEndRegex\n ) {\n regex = tagEndRegex;\n } else if (regex === commentEndRegex || regex === comment2EndRegex) {\n regex = textEndRegex;\n } else {\n // Not one of the five state regexes, so it must be the dynamically\n // created raw text regex and we're at the close of that element.\n regex = tagEndRegex;\n rawTextEndRegex = undefined;\n }\n }\n\n if (DEV_MODE) {\n // If we have a attrNameEndIndex, which indicates that we should\n // rewrite the attribute name, assert that we're in a valid attribute\n // position - either in a tag, or a quoted attribute value.\n console.assert(\n attrNameEndIndex === -1 ||\n regex === tagEndRegex ||\n regex === singleQuoteAttrEndRegex ||\n regex === doubleQuoteAttrEndRegex,\n 'unexpected parse state B'\n );\n }\n\n // We have four cases:\n // 1. We're in text position, and not in a raw text element\n // (regex === textEndRegex): insert a comment marker.\n // 2. We have a non-negative attrNameEndIndex which means we need to\n // rewrite the attribute name to add a bound attribute suffix.\n // 3. We're at the non-first binding in a multi-binding attribute, use a\n // plain marker.\n // 4. We're somewhere else inside the tag. If we're in attribute name\n // position (attrNameEndIndex === -2), add a sequential suffix to\n // generate a unique attribute name.\n\n // Detect a binding next to self-closing tag end and insert a space to\n // separate the marker from the tag end:\n const end =\n regex === tagEndRegex && strings[i + 1].startsWith('/>') ? ' ' : '';\n html +=\n regex === textEndRegex\n ? s + nodeMarker\n : attrNameEndIndex >= 0\n ? (attrNames.push(attrName!),\n s.slice(0, attrNameEndIndex) +\n boundAttributeSuffix +\n s.slice(attrNameEndIndex)) +\n marker +\n end\n : s + marker + (attrNameEndIndex === -2 ? i : end);\n }\n\n const htmlResult: string | TrustedHTML =\n html +\n (strings[l] || '<?>') +\n (type === SVG_RESULT ? '</svg>' : type === MATHML_RESULT ? '</math>' : '');\n\n // Returned as an array for terseness\n return [trustFromTemplateString(strings, htmlResult), attrNames];\n};\n\n/** @internal */\nexport type {Template};\nclass Template {\n /** @internal */\n el!: HTMLTemplateElement;\n\n parts: Array<TemplatePart> = [];\n\n constructor(\n // This property needs to remain unminified.\n {strings, ['_$litType$']: type}: UncompiledTemplateResult,\n options?: RenderOptions\n ) {\n let node: Node | null;\n let nodeIndex = 0;\n let attrNameIndex = 0;\n const partCount = strings.length - 1;\n const parts = this.parts;\n\n // Create template element\n const [html, attrNames] = getTemplateHtml(strings, type);\n this.el = Template.createElement(html, options);\n walker.currentNode = this.el.content;\n\n // Re-parent SVG or MathML nodes into template root\n if (type === SVG_RESULT || type === MATHML_RESULT) {\n const wrapper = this.el.content.firstChild!;\n wrapper.replaceWith(...wrapper.childNodes);\n }\n\n // Walk the template to find binding markers and create TemplateParts\n while ((node = walker.nextNode()) !== null && parts.length < partCount) {\n if (node.nodeType === 1) {\n if (DEV_MODE) {\n const tag = (node as Element).localName;\n // Warn if `textarea` includes an expression and throw if `template`\n // does since these are not supported. We do this by checking\n // innerHTML for anything that looks like a marker. This catches\n // cases like bindings in textarea there markers turn into text nodes.\n if (\n /^(?:textarea|template)$/i!.test(tag) &&\n (node as Element).innerHTML.includes(marker)\n ) {\n const m =\n `Expressions are not supported inside \\`${tag}\\` ` +\n `elements. See https://lit.dev/msg/expression-in-${tag} for more ` +\n `information.`;\n if (tag === 'template') {\n throw new Error(m);\n } else issueWarning('', m);\n }\n }\n // TODO (justinfagnani): for attempted dynamic tag names, we don't\n // increment the bindingIndex, and it'll be off by 1 in the element\n // and off by two after it.\n if ((node as Element).hasAttributes()) {\n for (const name of (node as Element).getAttributeNames()) {\n if (name.endsWith(boundAttributeSuffix)) {\n const realName = attrNames[attrNameIndex++];\n const value = (node as Element).getAttribute(name)!;\n const statics = value.split(marker);\n const m = /([.?@])?(.*)/.exec(realName)!;\n parts.push({\n type: ATTRIBUTE_PART,\n index: nodeIndex,\n name: m[2],\n strings: statics,\n ctor:\n m[1] === '.'\n ? PropertyPart\n : m[1] === '?'\n ? BooleanAttributePart\n : m[1] === '@'\n ? EventPart\n : AttributePart,\n });\n (node as Element).removeAttribute(name);\n } else if (name.startsWith(marker)) {\n parts.push({\n type: ELEMENT_PART,\n index: nodeIndex,\n });\n (node as Element).removeAttribute(name);\n }\n }\n }\n // TODO (justinfagnani): benchmark the regex against testing for each\n // of the 3 raw text element names.\n if (rawTextElement.test((node as Element).tagName)) {\n // For raw text elements we need to split the text content on\n // markers, create a Text node for each segment, and create\n // a TemplatePart for each marker.\n const strings = (node as Element).textContent!.split(marker);\n const lastIndex = strings.length - 1;\n if (lastIndex > 0) {\n (node as Element).textContent = trustedTypes\n ? (trustedTypes.emptyScript as unknown as '')\n : '';\n // Generate a new text node for each literal section\n // These nodes are also used as the markers for child parts\n for (let i = 0; i < lastIndex; i++) {\n (node as Element).append(strings[i], createMarker());\n // Walk past the marker node we just added\n walker.nextNode();\n parts.push({type: CHILD_PART, index: ++nodeIndex});\n }\n // Note because this marker is added after the walker's current\n // node, it will be walked to in the outer loop (and ignored), so\n // we don't need to adjust nodeIndex here\n (node as Element).append(strings[lastIndex], createMarker());\n }\n }\n } else if (node.nodeType === 8) {\n const data = (node as Comment).data;\n if (data === markerMatch) {\n parts.push({type: CHILD_PART, index: nodeIndex});\n } else {\n let i = -1;\n while ((i = (node as Comment).data.indexOf(marker, i + 1)) !== -1) {\n // Comment node has a binding marker inside, make an inactive part\n // The binding won't work, but subsequent bindings will\n parts.push({type: COMMENT_PART, index: nodeIndex});\n // Move to the end of the match\n i += marker.length - 1;\n }\n }\n }\n nodeIndex++;\n }\n\n if (DEV_MODE) {\n // If there was a duplicate attribute on a tag, then when the tag is\n // parsed into an element the attribute gets de-duplicated. We can detect\n // this mismatch if we haven't precisely consumed every attribute name\n // when preparing the template. This works because `attrNames` is built\n // from the template string and `attrNameIndex` comes from processing the\n // resulting DOM.\n if (attrNames.length !== attrNameIndex) {\n throw new Error(\n `Detected duplicate attribute bindings. This occurs if your template ` +\n `has duplicate attributes on an element tag. For example ` +\n `\"<input ?disabled=\\${true} ?disabled=\\${false}>\" contains a ` +\n `duplicate \"disabled\" attribute. The error was detected in ` +\n `the following template: \\n` +\n '`' +\n strings.join('${...}') +\n '`'\n );\n }\n }\n\n // We could set walker.currentNode to another node here to prevent a memory\n // leak, but every time we prepare a template, we immediately render it\n // and re-use the walker in new TemplateInstance._clone().\n debugLogEvent &&\n debugLogEvent({\n kind: 'template prep',\n template: this,\n clonableTemplate: this.el,\n parts: this.parts,\n strings,\n });\n }\n\n // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n /** @nocollapse */\n static createElement(html: TrustedHTML, _options?: RenderOptions) {\n const el = d.createElement('template');\n el.innerHTML = html as unknown as string;\n return el;\n }\n}\n\nexport interface Disconnectable {\n _$parent?: Disconnectable;\n _$disconnectableChildren?: Set<Disconnectable>;\n // Rather than hold connection state on instances, Disconnectables recursively\n // fetch the connection state from the RootPart they are connected in via\n // getters up the Disconnectable tree via _$parent references. This pushes the\n // cost of tracking the isConnected state to `AsyncDirectives`, and avoids\n // needing to pass all Disconnectables (parts, template instances, and\n // directives) their connection state each time it changes, which would be\n // costly for trees that have no AsyncDirectives.\n _$isConnected: boolean;\n}\n\nfunction resolveDirective(\n part: ChildPart | AttributePart | ElementPart,\n value: unknown,\n parent: DirectiveParent = part,\n attributeIndex?: number\n): unknown {\n // Bail early if the value is explicitly noChange. Note, this means any\n // nested directive is still attached and is not run.\n if (value === noChange) {\n return value;\n }\n let currentDirective =\n attributeIndex !== undefined\n ? (parent as AttributePart).__directives?.[attributeIndex]\n : (parent as ChildPart | ElementPart | Directive).__directive;\n const nextDirectiveConstructor = isPrimitive(value)\n ? undefined\n : // This property needs to remain unminified.\n (value as DirectiveResult)['_$litDirective$'];\n if (currentDirective?.constructor !== nextDirectiveConstructor) {\n // This property needs to remain unminified.\n currentDirective?.['_$notifyDirectiveConnectionChanged']?.(false);\n if (nextDirectiveConstructor === undefined) {\n currentDirective = undefined;\n } else {\n currentDirective = new nextDirectiveConstructor(part as PartInfo);\n currentDirective._$initialize(part, parent, attributeIndex);\n }\n if (attributeIndex !== undefined) {\n ((parent as AttributePart).__directives ??= [])[attributeIndex] =\n currentDirective;\n } else {\n (parent as ChildPart | Directive).__directive = currentDirective;\n }\n }\n if (currentDirective !== undefined) {\n value = resolveDirective(\n part,\n currentDirective._$resolve(part, (value as DirectiveResult).values),\n currentDirective,\n attributeIndex\n );\n }\n return value;\n}\n\nexport type {TemplateInstance};\n/**\n * An updateable instance of a Template. Holds references to the Parts used to\n * update the template instance.\n */\nclass TemplateInstance implements Disconnectable {\n _$template: Template;\n _$parts: Array<Part | undefined> = [];\n\n /** @internal */\n _$parent: ChildPart;\n /** @internal */\n _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n constructor(template: Template, parent: ChildPart) {\n this._$template = template;\n this._$parent = parent;\n }\n\n // Called by ChildPart parentNode getter\n get parentNode() {\n return this._$parent.parentNode;\n }\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n\n // This method is separate from the constructor because we need to return a\n // DocumentFragment and we don't want to hold onto it with an instance field.\n _clone(options: RenderOptions | undefined) {\n const {\n el: {content},\n parts: parts,\n } = this._$template;\n const fragment = (options?.creationScope ?? d).importNode(content, true);\n walker.currentNode = fragment;\n\n let node = walker.nextNode()!;\n let nodeIndex = 0;\n let partIndex = 0;\n let templatePart = parts[0];\n\n while (templatePart !== undefined) {\n if (nodeIndex === templatePart.index) {\n let part: Part | undefined;\n if (templatePart.type === CHILD_PART) {\n part = new ChildPart(\n node as HTMLElement,\n node.nextSibling,\n this,\n options\n );\n } else if (templatePart.type === ATTRIBUTE_PART) {\n part = new templatePart.ctor(\n node as HTMLElement,\n templatePart.name,\n templatePart.strings,\n this,\n options\n );\n } else if (templatePart.type === ELEMENT_PART) {\n part = new ElementPart(node as HTMLElement, this, options);\n }\n this._$parts.push(part);\n templatePart = parts[++partIndex];\n }\n if (nodeIndex !== templatePart?.index) {\n node = walker.nextNode()!;\n nodeIndex++;\n }\n }\n // We need to set the currentNode away from the cloned tree so that we\n // don't hold onto the tree even if the tree is detached and should be\n // freed.\n walker.currentNode = d;\n return fragment;\n }\n\n _update(values: Array<unknown>) {\n let i = 0;\n for (const part of this._$parts) {\n if (part !== undefined) {\n debugLogEvent &&\n debugLogEvent({\n kind: 'set part',\n part,\n value: values[i],\n valueIndex: i,\n values,\n templateInstance: this,\n });\n if ((part as AttributePart).strings !== undefined) {\n (part as AttributePart)._$setValue(values, part as AttributePart, i);\n // The number of values the part consumes is part.strings.length - 1\n // since values are in between template spans. We increment i by 1\n // later in the loop, so increment it by part.strings.length - 2 here\n i += (part as AttributePart).strings!.length - 2;\n } else {\n part._$setValue(values[i]);\n }\n }\n i++;\n }\n }\n}\n\n/*\n * Parts\n */\ntype AttributeTemplatePart = {\n readonly type: typeof ATTRIBUTE_PART;\n readonly index: number;\n readonly name: string;\n readonly ctor: typeof AttributePart;\n readonly strings: ReadonlyArray<string>;\n};\ntype ChildTemplatePart = {\n readonly type: typeof CHILD_PART;\n readonly index: number;\n};\ntype ElementTemplatePart = {\n readonly type: typeof ELEMENT_PART;\n readonly index: number;\n};\ntype CommentTemplatePart = {\n readonly type: typeof COMMENT_PART;\n readonly index: number;\n};\n\n/**\n * A TemplatePart represents a dynamic part in a template, before the template\n * is instantiated. When a template is instantiated Parts are created from\n * TemplateParts.\n */\ntype TemplatePart =\n | ChildTemplatePart\n | AttributeTemplatePart\n | ElementTemplatePart\n | CommentTemplatePart;\n\nexport type Part =\n | ChildPart\n | AttributePart\n | PropertyPart\n | BooleanAttributePart\n | ElementPart\n | EventPart;\n\nexport type {ChildPart};\nclass ChildPart implements Disconnectable {\n readonly type = CHILD_PART;\n readonly options: RenderOptions | undefined;\n _$committedValue: unknown = nothing;\n /** @internal */\n __directive?: Directive;\n /** @internal */\n _$startNode: ChildNode;\n /** @internal */\n _$endNode: ChildNode | null;\n private _textSanitizer: ValueSanitizer | undefined;\n /** @internal */\n _$parent: Disconnectable | undefined;\n /**\n * Connection state for RootParts only (i.e. ChildPart without _$parent\n * returned from top-level `render`). This field is unused otherwise. The\n * intention would be clearer if we made `RootPart` a subclass of `ChildPart`\n * with this field (and a different _$isConnected getter), but the subclass\n * caused a perf regression, possibly due to making call sites polymorphic.\n * @internal\n */\n __isConnected: boolean;\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n // ChildParts that are not at the root should always be created with a\n // parent; only RootChildNode's won't, so they return the local isConnected\n // state\n return this._$parent?._$isConnected ?? this.__isConnected;\n }\n\n // The following fields will be patched onto ChildParts when required by\n // AsyncDirective\n /** @internal */\n _$disconnectableChildren?: Set<Disconnectable> = undefined;\n /** @internal */\n _$notifyConnectionChanged?(\n isConnected: boolean,\n removeFromParent?: boolean,\n from?: number\n ): void;\n /** @internal */\n _$reparentDisconnectables?(parent: Disconnectable): void;\n\n constructor(\n startNode: ChildNode,\n endNode: ChildNode | null,\n parent: TemplateInstance | ChildPart | undefined,\n options: RenderOptions | undefined\n ) {\n this._$startNode = startNode;\n this._$endNode = endNode;\n this._$parent = parent;\n this.options = options;\n // Note __isConnected is only ever accessed on RootParts (i.e. when there is\n // no _$parent); the value on a non-root-part is \"don't care\", but checking\n // for parent would be more code\n this.__isConnected = options?.isConnected ?? true;\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n // Explicitly initialize for consistent class shape.\n this._textSanitizer = undefined;\n }\n }\n\n /**\n * The parent node into which the part renders its content.\n *\n * A ChildPart's content consists of a range of adjacent child nodes of\n * `.parentNode`, possibly bordered by 'marker nodes' (`.startNode` and\n * `.endNode`).\n *\n * - If both `.startNode` and `.endNode` are non-null, then the part's content\n * consists of all siblings between `.startNode` and `.endNode`, exclusively.\n *\n * - If `.startNode` is non-null but `.endNode` is null, then the part's\n * content consists of all siblings following `.startNode`, up to and\n * including the last child of `.parentNode`. If `.endNode` is non-null, then\n * `.startNode` will always be non-null.\n *\n * - If both `.endNode` and `.startNode` are null, then the part's content\n * consists of all child nodes of `.parentNode`.\n */\n get parentNode(): Node {\n let parentNode: Node = wrap(this._$startNode).parentNode!;\n const parent = this._$parent;\n if (\n parent !== undefined &&\n parentNode?.nodeType === 11 /* Node.DOCUMENT_FRAGMENT */\n ) {\n // If the parentNode is a DocumentFragment, it may be because the DOM is\n // still in the cloned fragment during initial render; if so, get the real\n // parentNode the part will be committed into by asking the parent.\n parentNode = (parent as ChildPart | TemplateInstance).parentNode;\n }\n return parentNode;\n }\n\n /**\n * The part's leading marker node, if any. See `.parentNode` for more\n * information.\n */\n get startNode(): Node | null {\n return this._$startNode;\n }\n\n /**\n * The part's trailing marker node, if any. See `.parentNode` for more\n * information.\n */\n get endNode(): Node | null {\n return this._$endNode;\n }\n\n _$setValue(value: unknown, directiveParent: DirectiveParent = this): void {\n if (DEV_MODE && this.parentNode === null) {\n throw new Error(\n `This \\`ChildPart\\` has no \\`parentNode\\` and therefore cannot accept a value. This likely means the element containing the part was manipulated in an unsupported way outside of Lit's control such that the part's marker nodes were ejected from DOM. For example, setting the element's \\`innerHTML\\` or \\`textContent\\` can do this.`\n );\n }\n value = resolveDirective(this, value, directiveParent);\n if (isPrimitive(value)) {\n // Non-rendering child values. It's important that these do not render\n // empty text nodes to avoid issues with preventing default <slot>\n // fallback content.\n if (value === nothing || value == null || value === '') {\n if (this._$committedValue !== nothing) {\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit nothing to child',\n start: this._$startNode,\n end: this._$endNode,\n parent: this._$parent,\n options: this.options,\n });\n this._$clear();\n }\n this._$committedValue = nothing;\n } else if (value !== this._$committedValue && value !== noChange) {\n this._commitText(value);\n }\n // This property needs to remain unminified.\n } else if ((value as TemplateResult)['_$litType$'] !== undefined) {\n this._commitTemplateResult(value as TemplateResult);\n } else if ((value as Node).nodeType !== undefined) {\n if (DEV_MODE && this.options?.host === value) {\n this._commitText(\n `[probable mistake: rendered a template's host in itself ` +\n `(commonly caused by writing \\${this} in a template]`\n );\n console.warn(\n `Attempted to render the template host`,\n value,\n `inside itself. This is almost always a mistake, and in dev mode `,\n `we render some warning text. In production however, we'll `,\n `render it, which will usually result in an error, and sometimes `,\n `in the element disappearing from the DOM.`\n );\n return;\n }\n this._commitNode(value as Node);\n } else if (isIterable(value)) {\n this._commitIterable(value);\n } else {\n // Fallback, will render the string representation\n this._commitText(value);\n }\n }\n\n private _insert<T extends Node>(node: T) {\n return wrap(wrap(this._$startNode).parentNode!).insertBefore(\n node,\n this._$endNode\n );\n }\n\n private _commitNode(value: Node): void {\n if (this._$committedValue !== value) {\n this._$clear();\n if (\n ENABLE_EXTRA_SECURITY_HOOKS &&\n sanitizerFactoryInternal !== noopSanitizer\n ) {\n const parentNodeName = this._$startNode.parentNode?.nodeName;\n if (parentNodeName === 'STYLE' || parentNodeName === 'SCRIPT') {\n let message = 'Forbidden';\n if (DEV_MODE) {\n if (parentNodeName === 'STYLE') {\n message =\n `Lit does not support binding inside style nodes. ` +\n `This is a security risk, as style injection attacks can ` +\n `exfiltrate data and spoof UIs. ` +\n `Consider instead using css\\`...\\` literals ` +\n `to compose styles, and do dynamic styling with ` +\n `css custom properties, ::parts, <slot>s, ` +\n `and by mutating the DOM rather than stylesheets.`;\n } else {\n message =\n `Lit does not support binding inside script nodes. ` +\n `This is a security risk, as it could allow arbitrary ` +\n `code execution.`;\n }\n }\n throw new Error(message);\n }\n }\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit node',\n start: this._$startNode,\n parent: this._$parent,\n value: value,\n options: this.options,\n });\n this._$committedValue = this._insert(value);\n }\n }\n\n private _commitText(value: unknown): void {\n // If the committed value is a primitive it means we called _commitText on\n // the previous render, and we know that this._$startNode.nextSibling is a\n // Text node. We can now just replace the text content (.data) of the node.\n if (\n this._$committedValue !== nothing &&\n isPrimitive(this._$committedValue)\n ) {\n const node = wrap(this._$startNode).nextSibling as Text;\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n if (this._textSanitizer === undefined) {\n this._textSanitizer = createSanitizer(node, 'data', 'property');\n }\n value = this._textSanitizer(value);\n }\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit text',\n node,\n value,\n options: this.options,\n });\n (node as Text).data = value as string;\n } else {\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n const textNode = d.createTextNode('');\n this._commitNode(textNode);\n // When setting text content, for security purposes it matters a lot\n // what the parent is. For example, <style> and <script> need to be\n // handled with care, while <span> does not. So first we need to put a\n // text node into the document, then we can sanitize its content.\n if (this._textSanitizer === undefined) {\n this._textSanitizer = createSanitizer(textNode, 'data', 'property');\n }\n value = this._textSanitizer(value);\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit text',\n node: textNode,\n value,\n options: this.options,\n });\n textNode.data = value as string;\n } else {\n this._commitNode(d.createTextNode(value as string));\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit text',\n node: wrap(this._$startNode).nextSibling as Text,\n value,\n options: this.options,\n });\n }\n }\n this._$committedValue = value;\n }\n\n private _commitTemplateResult(\n result: TemplateResult | CompiledTemplateResult\n ): void {\n // This property needs to remain unminified.\n const {values, ['_$litType$']: type} = result;\n // If $litType$ is a number, result is a plain TemplateResult and we get\n // the template from the template cache. If not, result is a\n // CompiledTemplateResult and _$litType$ is a CompiledTemplate and we need\n // to create the <template> element the first time we see it.\n const template: Template | CompiledTemplate =\n typeof type === 'number'\n ? this._$getTemplate(result as UncompiledTemplateResult)\n : (type.el === undefined &&\n (type.el = Template.createElement(\n trustFromTemplateString(type.h, type.h[0]),\n this.options\n )),\n type);\n\n if ((this._$committedValue as TemplateInstance)?._$template === template) {\n debugLogEvent &&\n debugLogEvent({\n kind: 'template updating',\n template,\n instance: this._$committedValue as TemplateInstance,\n parts: (this._$committedValue as TemplateInstance)._$parts,\n options: this.options,\n values,\n });\n (this._$committedValue as TemplateInstance)._update(values);\n } else {\n const instance = new TemplateInstance(template as Template, this);\n const fragment = instance._clone(this.options);\n debugLogEvent &&\n debugLogEvent({\n kind: 'template instantiated',\n template,\n instance,\n parts: instance._$parts,\n options: this.options,\n fragment,\n values,\n });\n instance._update(values);\n debugLogEvent &&\n debugLogEvent({\n kind: 'template instantiated and updated',\n template,\n instance,\n parts: instance._$parts,\n options: this.options,\n fragment,\n values,\n });\n this._commitNode(fragment);\n this._$committedValue = instance;\n }\n }\n\n // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n /** @internal */\n _$getTemplate(result: UncompiledTemplateResult) {\n let template = templateCache.get(result.strings);\n if (template === undefined) {\n templateCache.set(result.strings, (template = new Template(result)));\n }\n return template;\n }\n\n private _commitIterable(value: Iterable<unknown>): void {\n // For an Iterable, we create a new InstancePart per item, then set its\n // value to the item. This is a little bit of overhead for every item in\n // an Iterable, but it lets us recurse easily and efficiently update Arrays\n // of TemplateResults that will be commonly returned from expressions like:\n // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n\n // If value is an array, then the previous render was of an\n // iterable and value will contain the ChildParts from the previous\n // render. If value is not an array, clear this part and make a new\n // array for ChildParts.\n if (!isArray(this._$committedValue)) {\n this._$committedValue = [];\n this._$clear();\n }\n\n // Lets us keep track of how many items we stamped so we can clear leftover\n // items from a previous render\n const itemParts = this._$committedValue as ChildPart[];\n let partIndex = 0;\n let itemPart: ChildPart | undefined;\n\n for (const item of value) {\n if (partIndex === itemParts.length) {\n // If no existing part, create a new one\n // TODO (justinfagnani): test perf impact of always creating two parts\n // instead of sharing parts between nodes\n // https://github.com/lit/lit/issues/1266\n itemParts.push(\n (itemPart = new ChildPart(\n this._insert(createMarker()),\n this._insert(createMarker()),\n this,\n this.options\n ))\n );\n } else {\n // Reuse an existing part\n itemPart = itemParts[partIndex];\n }\n itemPart._$setValue(item);\n partIndex++;\n }\n\n if (partIndex < itemParts.length) {\n // itemParts always have end nodes\n this._$clear(\n itemPart && wrap(itemPart._$endNode!).nextSibling,\n partIndex\n );\n // Truncate the parts array so _value reflects the current state\n itemParts.length = partIndex;\n }\n }\n\n /**\n * Removes the nodes contained within this Part from the DOM.\n *\n * @param start Start node to clear from, for clearing a subset of the part's\n * DOM (used when truncating iterables)\n * @param from When `start` is specified, the index within the iterable from\n * which ChildParts are being removed, used for disconnecting directives\n * in those Parts.\n *\n * @internal\n */\n _$clear(\n start: ChildNode | null = wrap(this._$startNode).nextSibling,\n from?: number\n ) {\n this._$notifyConnectionChanged?.(false, true, from);\n while (start !== this._$endNode) {\n // The non-null assertion is safe because if _$startNode.nextSibling is\n // null, then _$endNode is also null, and we would not have entered this\n // loop.\n const n = wrap(start!).nextSibling;\n wrap(start!).remove();\n start = n;\n }\n }\n\n /**\n * Implementation of RootPart's `isConnected`. Note that this method\n * should only be called on `RootPart`s (the `ChildPart` returned from a\n * top-level `render()` call). It has no effect on non-root ChildParts.\n * @param isConnected Whether to set\n * @internal\n */\n setConnected(isConnected: boolean) {\n if (this._$parent === undefined) {\n this.__isConnected = isConnected;\n this._$notifyConnectionChanged?.(isConnected);\n } else if (DEV_MODE) {\n throw new Error(\n 'part.setConnected() may only be called on a ' +\n 'RootPart returned from render().'\n );\n }\n }\n}\n\n/**\n * A top-level `ChildPart` returned from `render` that manages the connected\n * state of `AsyncDirective`s created throughout the tree below it.\n */\nexport interface RootPart extends ChildPart {\n /**\n * Sets the connection state for `AsyncDirective`s contained within this root\n * ChildPart.\n *\n * lit-html does not automatically monitor the connectedness of DOM rendered;\n * as such, it is the responsibility of the caller to `render` to ensure that\n * `part.setConnected(false)` is called before the part object is potentially\n * discarded, to ensure that `AsyncDirective`s have a chance to dispose of\n * any resources being held. If a `RootPart` that was previously\n * disconnected is subsequently re-connected (and its `AsyncDirective`s should\n * re-connect), `setConnected(true)` should be called.\n *\n * @param isConnected Whether directives within this tree should be connected\n * or not\n */\n setConnected(isConnected: boolean): void;\n}\n\nexport type {AttributePart};\nclass AttributePart implements Disconnectable {\n readonly type:\n | typeof ATTRIBUTE_PART\n | typeof PROPERTY_PART\n | typeof BOOLEAN_ATTRIBUTE_PART\n | typeof EVENT_PART = ATTRIBUTE_PART;\n readonly element: HTMLElement;\n readonly name: string;\n readonly options: RenderOptions | undefined;\n\n /**\n * If this attribute part represents an interpolation, this contains the\n * static strings of the interpolation. For single-value, complete bindings,\n * this is undefined.\n */\n readonly strings?: ReadonlyArray<string>;\n /** @internal */\n _$committedValue: unknown | Array<unknown> = nothing;\n /** @internal */\n __directives?: Array<Directive | undefined>;\n /** @internal */\n _$parent: Disconnectable;\n /** @internal */\n _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n protected _sanitizer: ValueSanitizer | undefined;\n\n get tagName() {\n return this.element.tagName;\n }\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n\n constructor(\n element: HTMLElement,\n name: string,\n strings: ReadonlyArray<string>,\n parent: Disconnectable,\n options: RenderOptions | undefined\n ) {\n this.element = element;\n this.name = name;\n this._$parent = parent;\n this.options = options;\n if (strings.length > 2 || strings[0] !== '' || strings[1] !== '') {\n this._$committedValue = new Array(strings.length - 1).fill(new String());\n this.strings = strings;\n } else {\n this._$committedValue = nothing;\n }\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n this._sanitizer = undefined;\n }\n }\n\n /**\n * Sets the value of this part by resolving the value from possibly multiple\n * values and static strings and committing it to the DOM.\n * If this part is single-valued, `this._strings` will be undefined, and the\n * method will be called with a single value argument. If this part is\n * multi-value, `this._strings` will be defined, and the method is called\n * with the value array of the part's owning TemplateInstance, and an offset\n * into the value array from which the values should be read.\n * This method is overloaded this way to eliminate short-lived array slices\n * of the template instance values, and allow a fast-path for single-valued\n * parts.\n *\n * @param value The part value, or an array of values for multi-valued parts\n * @param valueIndex the index to start reading values from. `undefined` for\n * single-valued parts\n * @param noCommit causes the part to not commit its value to the DOM. Used\n * in hydration to prime attribute parts with their first-rendered value,\n * but not set the attribute, and in SSR to no-op the DOM operation and\n * capture the value for serialization.\n *\n * @internal\n */\n _$setValue(\n value: unknown | Array<unknown>,\n directiveParent: DirectiveParent = this,\n valueIndex?: number,\n noCommit?: boolean\n ) {\n const strings = this.strings;\n\n // Whether any of the values has changed, for dirty-checking\n let change = false;\n\n if (strings === undefined) {\n // Single-value binding case\n value = resolveDirective(this, value, directiveParent, 0);\n change =\n !isPrimitive(value) ||\n (value !== this._$committedValue && value !== noChange);\n if (change) {\n this._$committedValue = value;\n }\n } else {\n // Interpolation case\n const values = value as Array<unknown>;\n value = strings[0];\n\n let i, v;\n for (i = 0; i < strings.length - 1; i++) {\n v = resolveDirective(this, values[valueIndex! + i], directiveParent, i);\n\n if (v === noChange) {\n // If the user-provided value is `noChange`, use the previous value\n v = (this._$committedValue as Array<unknown>)[i];\n }\n change ||=\n !isPrimitive(v) || v !== (this._$committedValue as Array<unknown>)[i];\n if (v === nothing) {\n value = nothing;\n } else if (value !== nothing) {\n value += (v ?? '') + strings[i + 1];\n }\n // We always record each value, even if one is `nothing`, for future\n // change detection.\n (this._$committedValue as Array<unknown>)[i] = v;\n }\n }\n if (change && !noCommit) {\n this._commitValue(value);\n }\n }\n\n /** @internal */\n _commitValue(value: unknown) {\n if (value === nothing) {\n (wrap(this.element) as Element).removeAttribute(this.name);\n } else {\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n if (this._sanitizer === undefined) {\n this._sanitizer = sanitizerFactoryInternal(\n this.element,\n this.name,\n 'attribute'\n );\n }\n value = this._sanitizer(value ?? '');\n }\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit attribute',\n element: this.element,\n name: this.name,\n value,\n options: this.options,\n });\n (wrap(this.element) as Element).setAttribute(\n this.name,\n (value ?? '') as string\n );\n }\n }\n}\n\nexport type {PropertyPart};\nclass PropertyPart extends AttributePart {\n override readonly type = PROPERTY_PART;\n\n /** @internal */\n override _commitValue(value: unknown) {\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n if (this._sanitizer === undefined) {\n this._sanitizer = sanitizerFactoryInternal(\n this.element,\n this.name,\n 'property'\n );\n }\n value = this._sanitizer(value);\n }\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit property',\n element: this.element,\n name: this.name,\n value,\n options: this.options,\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.element as any)[this.name] = value === nothing ? undefined : value;\n }\n}\n\nexport type {BooleanAttributePart};\nclass BooleanAttributePart extends AttributePart {\n override readonly type = BOOLEAN_ATTRIBUTE_PART;\n\n /** @internal */\n override _commitValue(value: unknown) {\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit boolean attribute',\n element: this.element,\n name: this.name,\n value: !!(value && value !== nothing),\n options: this.options,\n });\n (wrap(this.element) as Element).toggleAttribute(\n this.name,\n !!value && value !== nothing\n );\n }\n}\n\ntype EventListenerWithOptions = EventListenerOrEventListenerObject &\n Partial<AddEventListenerOptions>;\n\n/**\n * An AttributePart that manages an event listener via add/removeEventListener.\n *\n * This part works by adding itself as the event listener on an element, then\n * delegating to the value passed to it. This reduces the number of calls to\n * add/removeEventListener if the listener changes frequently, such as when an\n * inline function is used as a listener.\n *\n * Because event options are passed when adding listeners, we must take case\n * to add and remove the part as a listener when the event options change.\n */\nexport type {EventPart};\nclass EventPart extends AttributePart {\n override readonly type = EVENT_PART;\n\n constructor(\n element: HTMLElement,\n name: string,\n strings: ReadonlyArray<string>,\n parent: Disconnectable,\n options: RenderOptions | undefined\n ) {\n super(element, name, strings, parent, options);\n\n if (DEV_MODE && this.strings !== undefined) {\n throw new Error(\n `A \\`<${element.localName}>\\` has a \\`@${name}=...\\` listener with ` +\n 'invalid content. Event listeners in templates must have exactly ' +\n 'one expression and no surrounding text.'\n );\n }\n }\n\n // EventPart does not use the base _$setValue/_resolveValue implementation\n // since the dirty checking is more complex\n /** @internal */\n override _$setValue(\n newListener: unknown,\n directiveParent: DirectiveParent = this\n ) {\n newListener =\n resolveDirective(this, newListener, directiveParent, 0) ?? nothing;\n if (newListener === noChange) {\n return;\n }\n const oldListener = this._$committedValue;\n\n // If the new value is nothing or any options change we have to remove the\n // part as a listener.\n const shouldRemoveListener =\n (newListener === nothing && oldListener !== nothing) ||\n (newListener as EventListenerWithOptions).capture !==\n (oldListener as EventListenerWithOptions).capture ||\n (newListener as EventListenerWithOptions).once !==\n (oldListener as EventListenerWithOptions).once ||\n (newListener as EventListenerWithOptions).passive !==\n (oldListener as EventListenerWithOptions).passive;\n\n // If the new value is not nothing and we removed the listener, we have\n // to add the part as a listener.\n const shouldAddListener =\n newListener !== nothing &&\n (oldListener === nothing || shouldRemoveListener);\n\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit event listener',\n element: this.element,\n name: this.name,\n value: newListener,\n options: this.options,\n removeListener: shouldRemoveListener,\n addListener: shouldAddListener,\n oldListener,\n });\n if (shouldRemoveListener) {\n this.element.removeEventListener(\n this.name,\n this,\n oldListener as EventListenerWithOptions\n );\n }\n if (shouldAddListener) {\n this.element.addEventListener(\n this.name,\n this,\n newListener as EventListenerWithOptions\n );\n }\n this._$committedValue = newListener;\n }\n\n handleEvent(event: Event) {\n if (typeof this._$committedValue === 'function') {\n this._$committedValue.call(this.options?.host ?? this.element, event);\n } else {\n (this._$committedValue as EventListenerObject).handleEvent(event);\n }\n }\n}\n\nexport type {ElementPart};\nclass ElementPart implements Disconnectable {\n readonly type = ELEMENT_PART;\n\n /** @internal */\n __directive?: Directive;\n\n // This is to ensure that every Part has a _$committedValue\n _$committedValue: undefined;\n\n /** @internal */\n _$parent!: Disconnectable;\n\n /** @internal */\n _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n options: RenderOptions | undefined;\n\n constructor(\n public element: Element,\n parent: Disconnectable,\n options: RenderOptions | undefined\n ) {\n this._$parent = parent;\n this.options = options;\n }\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n\n _$setValue(value: unknown): void {\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit to element binding',\n element: this.element,\n value,\n options: this.options,\n });\n resolveDirective(this, value);\n }\n}\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports mangled in the\n * client side code, we export a _$LH object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-element, which re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LH = {\n // Used in lit-ssr\n _boundAttributeSuffix: boundAttributeSuffix,\n _marker: marker,\n _markerMatch: markerMatch,\n _HTML_RESULT: HTML_RESULT,\n _getTemplateHtml: getTemplateHtml,\n // Used in tests and private-ssr-support\n _TemplateInstance: TemplateInstance,\n _isIterable: isIterable,\n _resolveDirective: resolveDirective,\n _ChildPart: ChildPart,\n _AttributePart: AttributePart,\n _BooleanAttributePart: BooleanAttributePart,\n _EventPart: EventPart,\n _PropertyPart: PropertyPart,\n _ElementPart: ElementPart,\n};\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n ? global.litHtmlPolyfillSupportDevMode\n : global.litHtmlPolyfillSupport;\npolyfillSupport?.(Template, ChildPart);\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n(global.litHtmlVersions ??= []).push('3.3.3');\nif (DEV_MODE && global.litHtmlVersions.length > 1) {\n queueMicrotask(() => {\n issueWarning!(\n 'multiple-versions',\n `Multiple versions of Lit loaded. ` +\n `Loading multiple versions is not recommended.`\n );\n });\n}\n\n/**\n * Renders a value, usually a lit-html TemplateResult, to the container.\n *\n * This example renders the text \"Hello, Zoe!\" inside a paragraph tag, appending\n * it to the container `document.body`.\n *\n * ```js\n * import {html, render} from 'lit';\n *\n * const name = \"Zoe\";\n * render(html`<p>Hello, ${name}!</p>`, document.body);\n * ```\n *\n * @param value Any [renderable\n * value](https://lit.dev/docs/templates/expressions/#child-expressions),\n * typically a {@linkcode TemplateResult} created by evaluating a template tag\n * like {@linkcode html} or {@linkcode svg}.\n * @param container A DOM container to render to. The first render will append\n * the rendered value to the container, and subsequent renders will\n * efficiently update the rendered value if the same result type was\n * previously rendered there.\n * @param options See {@linkcode RenderOptions} for options documentation.\n * @see\n * {@link https://lit.dev/docs/libraries/standalone-templates/#rendering-lit-html-templates| Rendering Lit HTML Templates}\n */\nexport const render = (\n value: unknown,\n container: RenderRootNode,\n options?: RenderOptions\n): RootPart => {\n if (DEV_MODE && container == null) {\n // Give a clearer error message than\n // Uncaught TypeError: Cannot read properties of null (reading\n // '_$litPart$')\n // which reads like an internal Lit error.\n throw new TypeError(`The container to render into may not be ${container}`);\n }\n const renderId = DEV_MODE ? debugLogRenderId++ : 0;\n const partOwnerNode = options?.renderBefore ?? container;\n // This property needs to remain unminified.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let part: ChildPart = (partOwnerNode as any)['_$litPart$'];\n debugLogEvent &&\n debugLogEvent({\n kind: 'begin render',\n id: renderId,\n value,\n container,\n options,\n part,\n });\n if (part === undefined) {\n const endNode = options?.renderBefore ?? null;\n // This property needs to remain unminified.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (partOwnerNode as any)['_$litPart$'] = part = new ChildPart(\n container.insertBefore(createMarker(), endNode),\n endNode,\n undefined,\n options ?? {}\n );\n }\n part._$setValue(value);\n debugLogEvent &&\n debugLogEvent({\n kind: 'end render',\n id: renderId,\n value,\n container,\n options,\n part,\n });\n return part as RootPart;\n};\n\nif (ENABLE_EXTRA_SECURITY_HOOKS) {\n render.setSanitizer = setSanitizer;\n render.createSanitizer = createSanitizer;\n if (DEV_MODE) {\n render._testOnlyClearSanitizerFactoryDoNotCallOrElse =\n _testOnlyClearSanitizerFactoryDoNotCallOrElse;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * The main LitElement module, which defines the {@linkcode LitElement} base\n * class and related APIs.\n *\n * LitElement components can define a template and a set of observed\n * properties. Changing an observed property triggers a re-render of the\n * element.\n *\n * Import {@linkcode LitElement} and {@linkcode html} from this module to\n * create a component:\n *\n * ```js\n * import {LitElement, html} from 'lit-element';\n *\n * class MyElement extends LitElement {\n *\n * // Declare observed properties\n * static get properties() {\n * return {\n * adjective: {}\n * }\n * }\n *\n * constructor() {\n * this.adjective = 'awesome';\n * }\n *\n * // Define the element's template\n * render() {\n * return html`<p>your ${adjective} template here</p>`;\n * }\n * }\n *\n * customElements.define('my-element', MyElement);\n * ```\n *\n * `LitElement` extends {@linkcode ReactiveElement} and adds lit-html\n * templating. The `ReactiveElement` class is provided for users that want to\n * build their own custom element base classes that don't use lit-html.\n *\n * @packageDocumentation\n */\nimport {PropertyValues, ReactiveElement} from '@lit/reactive-element';\nimport {render, RenderOptions, noChange, RootPart} from 'lit-html';\nexport * from '@lit/reactive-element';\nexport * from 'lit-html';\n\nimport {LitUnstable} from 'lit-html';\nimport {ReactiveUnstable} from '@lit/reactive-element';\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Unstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry =\n | LitUnstable.DebugLog.Entry\n | ReactiveUnstable.DebugLog.Entry;\n }\n}\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n prop: P,\n _obj: unknown\n): P => prop;\n\nconst DEV_MODE = true;\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n global.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (\n !global.litIssuedWarnings!.has(warning) &&\n !global.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n global.litIssuedWarnings!.add(warning);\n }\n };\n}\n\n/**\n * Base element class that manages element properties and attributes, and\n * renders a lit-html template.\n *\n * To define a component, subclass `LitElement` and implement a\n * `render` method to provide the component's template. Define properties\n * using the {@linkcode LitElement.properties properties} property or the\n * {@linkcode property} decorator.\n */\nexport class LitElement extends ReactiveElement {\n // This property needs to remain unminified.\n static ['_$litElement$'] = true;\n\n /**\n * @category rendering\n */\n readonly renderOptions: RenderOptions = {host: this};\n\n private __childPart: RootPart | undefined = undefined;\n\n /**\n * @category rendering\n */\n protected override createRenderRoot() {\n const renderRoot = super.createRenderRoot();\n // When adoptedStyleSheets are shimmed, they are inserted into the\n // shadowRoot by createRenderRoot. Adjust the renderBefore node so that\n // any styles in Lit content render before adoptedStyleSheets. This is\n // important so that adoptedStyleSheets have precedence over styles in\n // the shadowRoot.\n this.renderOptions.renderBefore ??= renderRoot!.firstChild as ChildNode;\n return renderRoot;\n }\n\n /**\n * Updates the element. This method reflects property values to attributes\n * and calls `render` to render DOM via lit-html. Setting properties inside\n * this method will *not* trigger another update.\n * @param changedProperties Map of changed properties with old values\n * @category updates\n */\n protected override update(changedProperties: PropertyValues) {\n // Setting properties in `render` should not trigger an update. Since\n // updates are allowed after super.update, it's important to call `render`\n // before that.\n const value = this.render();\n if (!this.hasUpdated) {\n this.renderOptions.isConnected = this.isConnected;\n }\n super.update(changedProperties);\n this.__childPart = render(value, this.renderRoot, this.renderOptions);\n }\n\n /**\n * Invoked when the component is added to the document's DOM.\n *\n * In `connectedCallback()` you should setup tasks that should only occur when\n * the element is connected to the document. The most common of these is\n * adding event listeners to nodes external to the element, like a keydown\n * event handler added to the window.\n *\n * ```ts\n * connectedCallback() {\n * super.connectedCallback();\n * addEventListener('keydown', this._handleKeydown);\n * }\n * ```\n *\n * Typically, anything done in `connectedCallback()` should be undone when the\n * element is disconnected, in `disconnectedCallback()`.\n *\n * @category lifecycle\n */\n override connectedCallback() {\n super.connectedCallback();\n this.__childPart?.setConnected(true);\n }\n\n /**\n * Invoked when the component is removed from the document's DOM.\n *\n * This callback is the main signal to the element that it may no longer be\n * used. `disconnectedCallback()` should ensure that nothing is holding a\n * reference to the element (such as event listeners added to nodes external\n * to the element), so that it is free to be garbage collected.\n *\n * ```ts\n * disconnectedCallback() {\n * super.disconnectedCallback();\n * window.removeEventListener('keydown', this._handleKeydown);\n * }\n * ```\n *\n * An element may be re-connected after being disconnected.\n *\n * @category lifecycle\n */\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.__childPart?.setConnected(false);\n }\n\n /**\n * Invoked on each update to perform rendering tasks. This method may return\n * any value renderable by lit-html's `ChildPart` - typically a\n * `TemplateResult`. Setting properties inside this method will *not* trigger\n * the element to update.\n * @category rendering\n */\n protected render(): unknown {\n return noChange;\n }\n}\n\n/**\n * Ensure this class is marked as `finalized` as an optimization ensuring\n * it will not needlessly try to `finalize`.\n *\n * Note this property name is a string to prevent breaking Closure JS Compiler\n * optimizations. See @lit/reactive-element for more information.\n */\n(LitElement as unknown as Record<string, unknown>)[\n JSCompiler_renameProperty('finalized', LitElement)\n] = true;\n\n// Install hydration if available\nglobal.litElementHydrateSupport?.({LitElement});\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n ? global.litElementPolyfillSupportDevMode\n : global.litElementPolyfillSupport;\npolyfillSupport?.({LitElement});\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports mangled in the\n * client side code, we export a _$LE object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-html, since this module re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LE = {\n _$attributeToProperty: (\n el: LitElement,\n name: string,\n value: string | null\n ) => {\n // eslint-disable-next-line\n (el as any)._$attributeToProperty(name, value);\n },\n // eslint-disable-next-line\n _$changedProperties: (el: LitElement) => (el as any)._$changedProperties,\n};\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for LitElement usage.\n(global.litElementVersions ??= []).push('4.2.2');\nif (DEV_MODE && global.litElementVersions.length > 1) {\n queueMicrotask(() => {\n issueWarning!(\n 'multiple-versions',\n `Multiple versions of Lit loaded. Loading multiple versions ` +\n `is not recommended.`\n );\n });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport type {Constructor} from './base.js';\n\n/**\n * Allow for custom element classes with private constructors\n */\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\nexport type CustomElementDecorator = {\n // legacy\n (cls: CustomElementClass): void;\n\n // standard\n (\n target: CustomElementClass,\n context: ClassDecoratorContext<Constructor<HTMLElement>>\n ): void;\n};\n\n/**\n * Class decorator factory that defines the decorated class as a custom element.\n *\n * ```js\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html``;\n * }\n * }\n * ```\n * @category Decorator\n * @param tagName The tag name of the custom element to define.\n */\nexport const customElement =\n (tagName: string): CustomElementDecorator =>\n (\n classOrTarget: CustomElementClass | Constructor<HTMLElement>,\n context?: ClassDecoratorContext<Constructor<HTMLElement>>\n ) => {\n if (context !== undefined) {\n context.addInitializer(() => {\n customElements.define(\n tagName,\n classOrTarget as CustomElementConstructor\n );\n });\n } else {\n customElements.define(tagName, classOrTarget as CustomElementConstructor);\n }\n };\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {\n type PropertyDeclaration,\n type ReactiveElement,\n defaultConverter,\n notEqual,\n} from '../reactive-element.js';\nimport type {Interface} from './base.js';\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n globalThis.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (\n !globalThis.litIssuedWarnings!.has(warning) &&\n !globalThis.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n globalThis.litIssuedWarnings!.add(warning);\n }\n };\n}\n\n// Overloads for property decorator so that TypeScript can infer the correct\n// return type when a decorator is used as an accessor decorator or a setter\n// decorator.\nexport type PropertyDecorator = {\n // accessor decorator signature\n <C extends Interface<ReactiveElement>, V>(\n target: ClassAccessorDecoratorTarget<C, V>,\n context: ClassAccessorDecoratorContext<C, V>\n ): ClassAccessorDecoratorResult<C, V>;\n\n // setter decorator signature\n <C extends Interface<ReactiveElement>, V>(\n target: (value: V) => void,\n context: ClassSetterDecoratorContext<C, V>\n ): (this: C, value: V) => void;\n\n // legacy decorator signature\n (\n protoOrDescriptor: Object,\n name: PropertyKey,\n descriptor?: PropertyDescriptor\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any;\n};\n\nconst legacyProperty = (\n options: PropertyDeclaration | undefined,\n proto: Object,\n name: PropertyKey\n) => {\n const hasOwnProperty = proto.hasOwnProperty(name);\n (proto.constructor as typeof ReactiveElement).createProperty(name, options);\n // For accessors (which have a descriptor on the prototype) we need to\n // return a descriptor, otherwise TypeScript overwrites the descriptor we\n // define in createProperty() with the original descriptor. We don't do this\n // for fields, which don't have a descriptor, because this could overwrite\n // descriptor defined by other decorators.\n return hasOwnProperty\n ? Object.getOwnPropertyDescriptor(proto, name)\n : undefined;\n};\n\n// This is duplicated from a similar variable in reactive-element.ts, but\n// actually makes sense to have this default defined with the decorator, so\n// that different decorators could have different defaults.\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n attribute: true,\n type: String,\n converter: defaultConverter,\n reflect: false,\n hasChanged: notEqual,\n};\n\n// Temporary type, until google3 is on TypeScript 5.2\ntype StandardPropertyContext<C, V> = (\n | ClassAccessorDecoratorContext<C, V>\n | ClassSetterDecoratorContext<C, V>\n) & {metadata: object};\n\n/**\n * Wraps a class accessor or setter so that `requestUpdate()` is called with the\n * property name and old value when the accessor is set.\n */\nexport const standardProperty = <C extends Interface<ReactiveElement>, V>(\n options: PropertyDeclaration = defaultPropertyDeclaration,\n target: ClassAccessorDecoratorTarget<C, V> | ((value: V) => void),\n context: StandardPropertyContext<C, V>\n): ClassAccessorDecoratorResult<C, V> | ((this: C, value: V) => void) => {\n const {kind, metadata} = context;\n\n if (DEV_MODE && metadata == null) {\n issueWarning(\n 'missing-class-metadata',\n `The class ${target} is missing decorator metadata. This ` +\n `could mean that you're using a compiler that supports decorators ` +\n `but doesn't support decorator metadata, such as TypeScript 5.1. ` +\n `Please update your compiler.`\n );\n }\n\n // Store the property options\n let properties = globalThis.litPropertyMetadata.get(metadata);\n if (properties === undefined) {\n globalThis.litPropertyMetadata.set(metadata, (properties = new Map()));\n }\n if (kind === 'setter') {\n options = Object.create(options);\n options.wrapped = true;\n }\n properties.set(context.name, options);\n\n if (kind === 'accessor') {\n // Standard decorators cannot dynamically modify the class, so we can't\n // replace a field with accessors. The user must use the new `accessor`\n // keyword instead.\n const {name} = context;\n return {\n set(this: ReactiveElement, v: V) {\n const oldValue = (\n target as ClassAccessorDecoratorTarget<C, V>\n ).get.call(this as unknown as C);\n (target as ClassAccessorDecoratorTarget<C, V>).set.call(\n this as unknown as C,\n v\n );\n this.requestUpdate(name, oldValue, options, true, v);\n },\n init(this: ReactiveElement, v: V): V {\n if (v !== undefined) {\n this._$changeProperty(name, undefined, options, v);\n }\n return v;\n },\n } as unknown as ClassAccessorDecoratorResult<C, V>;\n } else if (kind === 'setter') {\n const {name} = context;\n return function (this: ReactiveElement, value: V) {\n const oldValue = this[name as keyof ReactiveElement];\n (target as (value: V) => void).call(this, value);\n this.requestUpdate(name, oldValue, options, true, value);\n } as unknown as (this: C, value: V) => void;\n }\n throw new Error(`Unsupported decorator location: ${kind}`);\n};\n\n/**\n * A class field or accessor decorator which creates a reactive property that\n * reflects a corresponding attribute value. When a decorated property is set\n * the element will update and render. A {@linkcode PropertyDeclaration} may\n * optionally be supplied to configure property features.\n *\n * This decorator should only be used for public fields. As public fields,\n * properties should be considered as primarily settable by element users,\n * either via attribute or the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the {@linkcode state} decorator.\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating public\n * properties should typically not be done for non-primitive (object or array)\n * properties. In other cases when an element needs to manage state, a private\n * property decorated via the {@linkcode state} decorator should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n *\n * ```ts\n * class MyElement {\n * @property({ type: Boolean })\n * clicked = false;\n * }\n * ```\n * @category Decorator\n * @ExportDecoratedItems\n */\nexport function property(options?: PropertyDeclaration): PropertyDecorator {\n return <C extends Interface<ReactiveElement>, V>(\n protoOrTarget:\n | object\n | ClassAccessorDecoratorTarget<C, V>\n | ((value: V) => void),\n nameOrContext:\n | PropertyKey\n | ClassAccessorDecoratorContext<C, V>\n | ClassSetterDecoratorContext<C, V>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any => {\n return (\n typeof nameOrContext === 'object'\n ? standardProperty<C, V>(\n options,\n protoOrTarget as\n | ClassAccessorDecoratorTarget<C, V>\n | ((value: V) => void),\n nameOrContext as StandardPropertyContext<C, V>\n )\n : legacyProperty(\n options,\n protoOrTarget as Object,\n nameOrContext as PropertyKey\n )\n ) as PropertyDecorator;\n };\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {property} from './property.js';\n\nexport interface StateDeclaration<Type = unknown> {\n /**\n * A function that indicates if a property should be considered changed when\n * it is set. The function should take the `newValue` and `oldValue` and\n * return `true` if an update should be requested.\n */\n hasChanged?(value: Type, oldValue: Type): boolean;\n}\n\n/**\n * @deprecated use StateDeclaration\n */\nexport type InternalPropertyDeclaration<Type = unknown> =\n StateDeclaration<Type>;\n\n/**\n * Declares a private or protected reactive property that still triggers\n * updates to the element when it changes. It does not reflect from the\n * corresponding attribute.\n *\n * Properties declared this way must not be used from HTML or HTML templating\n * systems, they're solely for properties internal to the element. These\n * properties may be renamed by optimization tools like closure compiler.\n * @category Decorator\n */\nexport function state(options?: StateDeclaration) {\n return property({\n ...options,\n // Add both `state` and `attribute` because we found a third party\n // controller that is keying off of PropertyOptions.state to determine\n // whether a field is a private internal property or not.\n state: true,\n attribute: false,\n });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Generates a public interface type that removes private and protected fields.\n * This allows accepting otherwise incompatible versions of the type (e.g. from\n * multiple copies of the same package in `node_modules`).\n */\nexport type Interface<T> = {\n [K in keyof T]: T[K];\n};\n\nexport type Constructor<T> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n};\n\n/**\n * Wraps up a few best practices when returning a property descriptor from a\n * decorator.\n *\n * Marks the defined property as configurable, and enumerable, and handles\n * the case where we have a busted Reflect.decorate zombiefill (e.g. in Angular\n * apps).\n *\n * @internal\n */\nexport const desc = (\n obj: object,\n name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>,\n descriptor: PropertyDescriptor\n) => {\n // For backwards compatibility, we keep them configurable and enumerable.\n descriptor.configurable = true;\n descriptor.enumerable = true;\n if (\n // We check for Reflect.decorate each time, in case the zombiefill\n // is applied via lazy loading some Angular code.\n (Reflect as typeof Reflect & {decorate?: unknown}).decorate &&\n typeof name !== 'object'\n ) {\n // If we're called as a legacy decorator, and Reflect.decorate is present\n // then we have no guarantees that the returned descriptor will be\n // defined on the class, so we must apply it directly ourselves.\n\n Object.defineProperty(obj, name, descriptor);\n }\n return descriptor;\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n globalThis.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += code\n ? ` See https://lit.dev/msg/${code} for more information.`\n : '';\n if (\n !globalThis.litIssuedWarnings!.has(warning) &&\n !globalThis.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n globalThis.litIssuedWarnings!.add(warning);\n }\n };\n}\n\nexport type QueryDecorator = {\n // legacy\n (\n proto: Interface<ReactiveElement>,\n name: PropertyKey,\n descriptor?: PropertyDescriptor\n // Note TypeScript requires the return type to be `void|any`\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): void | any;\n\n // standard\n <C extends Interface<ReactiveElement>, V extends Element | null>(\n value: ClassAccessorDecoratorTarget<C, V>,\n context: ClassAccessorDecoratorContext<C, V>\n ): ClassAccessorDecoratorResult<C, V>;\n};\n\n/**\n * A property decorator that converts a class property into a getter that\n * executes a querySelector on the element's renderRoot.\n *\n * @param selector A DOMString containing one or more selectors to match.\n * @param cache An optional boolean which when true performs the DOM query only\n * once and caches the result.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * ```ts\n * class MyElement {\n * @query('#first')\n * first: HTMLDivElement;\n *\n * render() {\n * return html`\n * <div id=\"first\"></div>\n * <div id=\"second\"></div>\n * `;\n * }\n * }\n * ```\n * @category Decorator\n */\nexport function query(selector: string, cache?: boolean): QueryDecorator {\n return (<C extends Interface<ReactiveElement>, V extends Element | null>(\n protoOrTarget: ClassAccessorDecoratorTarget<C, V>,\n nameOrContext: PropertyKey | ClassAccessorDecoratorContext<C, V>,\n descriptor?: PropertyDescriptor\n ) => {\n const doQuery = (el: Interface<ReactiveElement>): V => {\n const result = (el.renderRoot?.querySelector(selector) ?? null) as V;\n if (DEV_MODE && result === null && cache && !el.hasUpdated) {\n const name =\n typeof nameOrContext === 'object'\n ? nameOrContext.name\n : nameOrContext;\n issueWarning(\n '',\n `@query'd field ${JSON.stringify(String(name))} with the 'cache' ` +\n `flag set for selector '${selector}' has been accessed before ` +\n `the first update and returned null. This is expected if the ` +\n `renderRoot tree has not been provided beforehand (e.g. via ` +\n `Declarative Shadow DOM). Therefore the value hasn't been cached.`\n );\n }\n // TODO: if we want to allow users to assert that the query will never\n // return null, we need a new option and to throw here if the result\n // is null.\n return result;\n };\n if (cache) {\n // Accessors to wrap from either:\n // 1. The decorator target, in the case of standard decorators\n // 2. The property descriptor, in the case of experimental decorators\n // on auto-accessors.\n // 3. Functions that access our own cache-key property on the instance,\n // in the case of experimental decorators on fields.\n const {get, set} =\n typeof nameOrContext === 'object'\n ? protoOrTarget\n : (descriptor ??\n (() => {\n const key = DEV_MODE\n ? Symbol(`${String(nameOrContext)} (@query() cache)`)\n : Symbol();\n type WithCache = ReactiveElement & {\n [key: symbol]: Element | null;\n };\n return {\n get() {\n return (this as WithCache)[key];\n },\n set(v) {\n (this as WithCache)[key] = v;\n },\n };\n })());\n return desc(protoOrTarget, nameOrContext, {\n get(this: ReactiveElement): V {\n let result: V = get!.call(this);\n if (result === undefined) {\n result = doQuery(this);\n if (result !== null || this.hasUpdated) {\n set!.call(this, result);\n }\n }\n return result;\n },\n });\n } else {\n // This object works as the return type for both standard and\n // experimental decorators.\n return desc(protoOrTarget, nameOrContext, {\n get(this: ReactiveElement) {\n return doQuery(this);\n },\n });\n }\n }) as QueryDecorator;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nexport type QueryAsyncDecorator = {\n // legacy\n (\n proto: Interface<ReactiveElement>,\n name: PropertyKey,\n descriptor?: PropertyDescriptor\n // Note TypeScript requires the return type to be `void|any`\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): void | any;\n\n // standard\n <C extends Interface<ReactiveElement>, V extends Promise<Element | null>>(\n value: ClassAccessorDecoratorTarget<C, V>,\n context: ClassAccessorDecoratorContext<C, V>\n ): ClassAccessorDecoratorResult<C, V>;\n};\n\n// Note, in the future, we may extend this decorator to support the use case\n// where the queried element may need to do work to become ready to interact\n// with (e.g. load some implementation code). If so, we might elect to\n// add a second argument defining a function that can be run to make the\n// queried element loaded/updated/ready.\n/**\n * A property decorator that converts a class property into a getter that\n * returns a promise that resolves to the result of a querySelector on the\n * element's renderRoot done after the element's `updateComplete` promise\n * resolves. When the queried property may change with element state, this\n * decorator can be used instead of requiring users to await the\n * `updateComplete` before accessing the property.\n *\n * @param selector A DOMString containing one or more selectors to match.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * ```ts\n * class MyElement {\n * @queryAsync('#first')\n * first: Promise<HTMLDivElement>;\n *\n * render() {\n * return html`\n * <div id=\"first\"></div>\n * <div id=\"second\"></div>\n * `;\n * }\n * }\n *\n * // external usage\n * async doSomethingWithFirst() {\n * (await aMyElement.first).doSomething();\n * }\n * ```\n * @category Decorator\n */\nexport function queryAsync(selector: string) {\n return ((\n obj: object,\n name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>\n ) => {\n return desc(obj, name, {\n async get(this: ReactiveElement) {\n await this.updateComplete;\n return this.renderRoot?.querySelector(selector) ?? null;\n },\n });\n }) as QueryAsyncDecorator;\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Chooses and evaluates a template function from a list based on matching\n * the given `value` to a case.\n *\n * Cases are structured as `[caseValue, func]`. `value` is matched to\n * `caseValue` by strict equality. The first match is selected. Case values\n * can be of any type including primitives, objects, and symbols.\n *\n * This is similar to a switch statement, but as an expression and without\n * fallthrough.\n *\n * @example\n *\n * ```ts\n * render() {\n * return html`\n * ${choose(this.section, [\n * ['home', () => html`<h1>Home</h1>`],\n * ['about', () => html`<h1>About</h1>`]\n * ],\n * () => html`<h1>Error</h1>`)}\n * `;\n * }\n * ```\n */\nexport const choose = <T, V, K extends T = T>(\n value: T,\n cases: Array<[K, () => V]>,\n defaultCase?: () => V\n) => {\n for (const c of cases) {\n const caseValue = c[0];\n if (caseValue === value) {\n const fn = c[1];\n return fn();\n }\n }\n return defaultCase?.();\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {Disconnectable, Part} from './lit-html.js';\n\nexport {\n AttributePart,\n BooleanAttributePart,\n ChildPart,\n ElementPart,\n EventPart,\n Part,\n PropertyPart,\n} from './lit-html.js';\n\nexport interface DirectiveClass {\n new (part: PartInfo): Directive;\n}\n\n/**\n * This utility type extracts the signature of a directive class's render()\n * method so we can use it for the type of the generated directive function.\n */\nexport type DirectiveParameters<C extends Directive> = Parameters<C['render']>;\n\n/**\n * A generated directive function doesn't evaluate the directive, but just\n * returns a DirectiveResult object that captures the arguments.\n */\nexport interface DirectiveResult<C extends DirectiveClass = DirectiveClass> {\n /**\n * This property needs to remain unminified.\n * @internal\n */\n ['_$litDirective$']: C;\n /** @internal */\n values: DirectiveParameters<InstanceType<C>>;\n}\n\nexport const PartType = {\n ATTRIBUTE: 1,\n CHILD: 2,\n PROPERTY: 3,\n BOOLEAN_ATTRIBUTE: 4,\n EVENT: 5,\n ELEMENT: 6,\n} as const;\n\nexport type PartType = (typeof PartType)[keyof typeof PartType];\n\nexport interface ChildPartInfo {\n readonly type: typeof PartType.CHILD;\n}\n\nexport interface AttributePartInfo {\n readonly type:\n | typeof PartType.ATTRIBUTE\n | typeof PartType.PROPERTY\n | typeof PartType.BOOLEAN_ATTRIBUTE\n | typeof PartType.EVENT;\n readonly strings?: ReadonlyArray<string>;\n readonly name: string;\n readonly tagName: string;\n}\n\nexport interface ElementPartInfo {\n readonly type: typeof PartType.ELEMENT;\n}\n\n/**\n * Information about the part a directive is bound to.\n *\n * This is useful for checking that a directive is attached to a valid part,\n * such as with directive that can only be used on attribute bindings.\n */\nexport type PartInfo = ChildPartInfo | AttributePartInfo | ElementPartInfo;\n\n/**\n * Creates a user-facing directive function from a Directive class. This\n * function has the same parameters as the directive's render() method.\n */\nexport const directive =\n <C extends DirectiveClass>(c: C) =>\n (...values: DirectiveParameters<InstanceType<C>>): DirectiveResult<C> => ({\n // This property needs to remain unminified.\n ['_$litDirective$']: c,\n values,\n });\n\n/**\n * Base class for creating custom directives. Users should extend this class,\n * implement `render` and/or `update`, and then pass their subclass to\n * `directive`.\n */\nexport abstract class Directive implements Disconnectable {\n //@internal\n __part!: Part;\n //@internal\n __attributeIndex: number | undefined;\n //@internal\n __directive?: Directive;\n\n //@internal\n _$parent!: Disconnectable;\n\n // These will only exist on the AsyncDirective subclass\n //@internal\n _$disconnectableChildren?: Set<Disconnectable>;\n // This property needs to remain unminified.\n //@internal\n ['_$notifyDirectiveConnectionChanged']?(isConnected: boolean): void;\n\n constructor(_partInfo: PartInfo) {}\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n\n /** @internal */\n _$initialize(\n part: Part,\n parent: Disconnectable,\n attributeIndex: number | undefined\n ) {\n this.__part = part;\n this._$parent = parent;\n this.__attributeIndex = attributeIndex;\n }\n /** @internal */\n _$resolve(part: Part, props: Array<unknown>): unknown {\n return this.update(part, props);\n }\n\n abstract render(...props: Array<unknown>): unknown;\n\n update(_part: Part, props: Array<unknown>): unknown {\n return this.render(...props);\n }\n}\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {noChange, Part} from '../lit-html.js';\nimport {\n directive,\n Directive,\n DirectiveParameters,\n DirectiveResult,\n} from '../directive.js';\n\n// A sentinel that indicates guard() hasn't rendered anything yet\nconst initialValue = {};\n\nclass GuardDirective<T> extends Directive {\n private _previousValue: unknown = initialValue;\n\n render(_value: unknown, f: () => T): T {\n return f();\n }\n\n override update(_part: Part, [value, f]: DirectiveParameters<this>) {\n if (Array.isArray(value)) {\n // Dirty-check arrays by item\n if (\n Array.isArray(this._previousValue) &&\n this._previousValue.length === value.length &&\n value.every((v, i) => v === (this._previousValue as Array<unknown>)[i])\n ) {\n return noChange;\n }\n } else if (this._previousValue === value) {\n // Dirty-check non-arrays by identity\n return noChange;\n }\n\n // Copy the value if it's an array so that if it's mutated we don't forget\n // what the previous values were.\n this._previousValue = Array.isArray(value) ? Array.from(value) : value;\n const r = this.render(value, f);\n return r;\n }\n}\n\ninterface Guard {\n <T>(vals: unknown[], f: () => T): DirectiveResult<typeof GuardDirective<T>>;\n}\n\n/**\n * Prevents re-render of a template function until a single value or an array of\n * values changes.\n *\n * Values are checked against previous values with strict equality (`===`), and\n * so the check won't detect nested property changes inside objects or arrays.\n * Arrays values have each item checked against the previous value at the same\n * index with strict equality. Nested arrays are also checked only by strict\n * equality.\n *\n * Example:\n *\n * ```js\n * html`\n * <div>\n * ${guard([user.id, company.id], () => html`...`)}\n * </div>\n * `\n * ```\n *\n * In this case, the template only rerenders if either `user.id` or `company.id`\n * changes.\n *\n * guard() is useful with immutable data patterns, by preventing expensive work\n * until data updates.\n *\n * Example:\n *\n * ```js\n * html`\n * <div>\n * ${guard([immutableItems], () => immutableItems.map(i => html`${i}`))}\n * </div>\n * `\n * ```\n *\n * In this case, items are mapped over only when the array reference changes.\n *\n * @param value the value to check before re-rendering\n * @param f the template function\n */\nexport const guard: Guard = directive(GuardDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {GuardDirective};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange} from '../lit-html.js';\nimport {\n directive,\n Directive,\n DirectiveParameters,\n PartInfo,\n PartType,\n} from '../directive.js';\n\n/**\n * A key-value set of class names to truthy values.\n */\nexport interface ClassInfo {\n [name: string]: string | boolean | number;\n}\n\nclass ClassMapDirective extends Directive {\n /**\n * Stores the ClassInfo object applied to a given AttributePart.\n * Used to unset existing values when a new ClassInfo object is applied.\n */\n private _previousClasses?: Set<string>;\n private _staticClasses?: Set<string>;\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n if (\n partInfo.type !== PartType.ATTRIBUTE ||\n partInfo.name !== 'class' ||\n (partInfo.strings?.length as number) > 2\n ) {\n throw new Error(\n '`classMap()` can only be used in the `class` attribute ' +\n 'and must be the only part in the attribute.'\n );\n }\n }\n\n render(classInfo: ClassInfo) {\n // Add spaces to ensure separation from static classes\n return (\n ' ' +\n Object.keys(classInfo)\n .filter((key) => classInfo[key])\n .join(' ') +\n ' '\n );\n }\n\n override update(part: AttributePart, [classInfo]: DirectiveParameters<this>) {\n // Remember dynamic classes on the first render\n if (this._previousClasses === undefined) {\n this._previousClasses = new Set();\n if (part.strings !== undefined) {\n this._staticClasses = new Set(\n part.strings\n .join(' ')\n .split(/\\s/)\n .filter((s) => s !== '')\n );\n }\n for (const name in classInfo) {\n if (classInfo[name] && !this._staticClasses?.has(name)) {\n this._previousClasses.add(name);\n }\n }\n return this.render(classInfo);\n }\n\n const classList = part.element.classList;\n\n // Remove old classes that no longer apply\n for (const name of this._previousClasses) {\n if (!(name in classInfo)) {\n classList.remove(name);\n this._previousClasses!.delete(name);\n }\n }\n\n // Add or remove classes based on their classMap value\n for (const name in classInfo) {\n // We explicitly want a loose truthy check of `value` because it seems\n // more convenient that '' and 0 are skipped.\n const value = !!classInfo[name];\n if (\n value !== this._previousClasses.has(name) &&\n !this._staticClasses?.has(name)\n ) {\n if (value) {\n classList.add(name);\n this._previousClasses.add(name);\n } else {\n classList.remove(name);\n this._previousClasses.delete(name);\n }\n }\n }\n return noChange;\n }\n}\n\n/**\n * A directive that applies dynamic CSS classes.\n *\n * This must be used in the `class` attribute and must be the only part used in\n * the attribute. It takes each property in the `classInfo` argument and adds\n * the property name to the element's `classList` if the property value is\n * truthy; if the property value is falsy, the property name is removed from\n * the element's `class`.\n *\n * For example `{foo: bar}` applies the class `foo` if the value of `bar` is\n * truthy.\n *\n * @param classInfo\n */\nexport const classMap = directive(ClassMapDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {ClassMapDirective};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\n\n/**\n * For AttributeParts, sets the attribute if the value is defined and removes\n * the attribute if the value is undefined.\n *\n * For other part types, this directive is a no-op.\n */\nexport const ifDefined = <T>(value: T) => value ?? nothing;\n","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {\n _$LH,\n Part,\n DirectiveParent,\n CompiledTemplateResult,\n MaybeCompiledTemplateResult,\n UncompiledTemplateResult,\n} from './lit-html.js';\nimport {\n DirectiveResult,\n DirectiveClass,\n PartInfo,\n AttributePartInfo,\n} from './directive.js';\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\n\nconst {_ChildPart: ChildPart} = _$LH;\n\ntype ChildPart = InstanceType<typeof ChildPart>;\n\nconst ENABLE_SHADYDOM_NOPATCH = true;\n\nconst wrap =\n ENABLE_SHADYDOM_NOPATCH &&\n window.ShadyDOM?.inUse &&\n window.ShadyDOM?.noPatch === true\n ? window.ShadyDOM!.wrap\n : (node: Node) => node;\n\n/**\n * Tests if a value is a primitive value.\n *\n * See https://tc39.github.io/ecma262/#sec-typeof-operator\n */\nexport const isPrimitive = (value: unknown): value is Primitive =>\n value === null || (typeof value != 'object' && typeof value != 'function');\n\nexport const TemplateResultType = {\n HTML: 1,\n SVG: 2,\n MATHML: 3,\n} as const;\n\nexport type TemplateResultType =\n (typeof TemplateResultType)[keyof typeof TemplateResultType];\n\ntype IsTemplateResult = {\n (val: unknown): val is MaybeCompiledTemplateResult;\n <T extends TemplateResultType>(\n val: unknown,\n type: T\n ): val is UncompiledTemplateResult<T>;\n};\n\n/**\n * Tests if a value is a TemplateResult or a CompiledTemplateResult.\n */\nexport const isTemplateResult: IsTemplateResult = (\n value: unknown,\n type?: TemplateResultType\n): value is UncompiledTemplateResult =>\n type === undefined\n ? // This property needs to remain unminified.\n (value as UncompiledTemplateResult)?.['_$litType$'] !== undefined\n : (value as UncompiledTemplateResult)?.['_$litType$'] === type;\n\n/**\n * Tests if a value is a CompiledTemplateResult.\n */\nexport const isCompiledTemplateResult = (\n value: unknown\n): value is CompiledTemplateResult => {\n return (value as CompiledTemplateResult)?.['_$litType$']?.h != null;\n};\n\n/**\n * Tests if a value is a DirectiveResult.\n */\nexport const isDirectiveResult = (value: unknown): value is DirectiveResult =>\n // This property needs to remain unminified.\n (value as DirectiveResult)?.['_$litDirective$'] !== undefined;\n\n/**\n * Retrieves the Directive class for a DirectiveResult\n */\nexport const getDirectiveClass = (value: unknown): DirectiveClass | undefined =>\n // This property needs to remain unminified.\n (value as DirectiveResult)?.['_$litDirective$'];\n\n/**\n * Tests whether a part has only a single-expression with no strings to\n * interpolate between.\n *\n * Only AttributePart and PropertyPart can have multiple expressions.\n * Multi-expression parts have a `strings` property and single-expression\n * parts do not.\n */\nexport const isSingleExpression = (part: PartInfo) =>\n (part as AttributePartInfo).strings === undefined;\n\nconst createMarker = () => document.createComment('');\n\n/**\n * Inserts a ChildPart into the given container ChildPart's DOM, either at the\n * end of the container ChildPart, or before the optional `refPart`.\n *\n * This does not add the part to the containerPart's committed value. That must\n * be done by callers.\n *\n * @param containerPart Part within which to add the new ChildPart\n * @param refPart Part before which to add the new ChildPart; when omitted the\n * part added to the end of the `containerPart`\n * @param part Part to insert, or undefined to create a new part\n */\nexport const insertPart = (\n containerPart: ChildPart,\n refPart?: ChildPart,\n part?: ChildPart\n): ChildPart => {\n const container = wrap(containerPart._$startNode).parentNode!;\n\n const refNode =\n refPart === undefined ? containerPart._$endNode : refPart._$startNode;\n\n if (part === undefined) {\n const startNode = wrap(container).insertBefore(createMarker(), refNode);\n const endNode = wrap(container).insertBefore(createMarker(), refNode);\n part = new ChildPart(\n startNode,\n endNode,\n containerPart,\n containerPart.options\n );\n } else {\n const endNode = wrap(part._$endNode!).nextSibling;\n const oldParent = part._$parent;\n const parentChanged = oldParent !== containerPart;\n if (parentChanged) {\n part._$reparentDisconnectables?.(containerPart);\n // Note that although `_$reparentDisconnectables` updates the part's\n // `_$parent` reference after unlinking from its current parent, that\n // method only exists if Disconnectables are present, so we need to\n // unconditionally set it here\n part._$parent = containerPart;\n // Since the _$isConnected getter is somewhat costly, only\n // read it once we know the subtree has directives that need\n // to be notified\n let newConnectionState;\n if (\n part._$notifyConnectionChanged !== undefined &&\n (newConnectionState = containerPart._$isConnected) !==\n oldParent!._$isConnected\n ) {\n part._$notifyConnectionChanged(newConnectionState);\n }\n }\n if (endNode !== refNode || parentChanged) {\n let start: Node | null = part._$startNode;\n while (start !== endNode) {\n const n: Node | null = wrap(start!).nextSibling;\n wrap(container).insertBefore(start!, refNode);\n start = n;\n }\n }\n }\n\n return part;\n};\n\n/**\n * Sets the value of a Part.\n *\n * Note that this should only be used to set/update the value of user-created\n * parts (i.e. those created using `insertPart`); it should not be used\n * by directives to set the value of the directive's container part. Directives\n * should return a value from `update`/`render` to update their part state.\n *\n * For directives that require setting their part value asynchronously, they\n * should extend `AsyncDirective` and call `this.setValue()`.\n *\n * @param part Part to set\n * @param value Value to set\n * @param index For `AttributePart`s, the index to set\n * @param directiveParent Used internally; should not be set by user\n */\nexport const setChildPartValue = <T extends ChildPart>(\n part: T,\n value: unknown,\n directiveParent: DirectiveParent = part\n): T => {\n part._$setValue(value, directiveParent);\n return part;\n};\n\n// A sentinel value that can never appear as a part value except when set by\n// live(). Used to force a dirty-check to fail and cause a re-render.\nconst RESET_VALUE = {};\n\n/**\n * Sets the committed value of a ChildPart directly without triggering the\n * commit stage of the part.\n *\n * This is useful in cases where a directive needs to update the part such\n * that the next update detects a value change or not. When value is omitted,\n * the next update will be guaranteed to be detected as a change.\n *\n * @param part\n * @param value\n */\nexport const setCommittedValue = (part: Part, value: unknown = RESET_VALUE) =>\n (part._$committedValue = value);\n\n/**\n * Returns the committed value of a ChildPart.\n *\n * The committed value is used for change detection and efficient updates of\n * the part. It can differ from the value set by the template or directive in\n * cases where the template value is transformed before being committed.\n *\n * - `TemplateResult`s are committed as a `TemplateInstance`\n * - Iterables are committed as `Array<ChildPart>`\n * - All other types are committed as the template value or value returned or\n * set by a directive.\n *\n * @param part\n */\nexport const getCommittedValue = (part: ChildPart) => part._$committedValue;\n\n/**\n * Removes a ChildPart from the DOM, including any of its content and markers.\n *\n * Note: The only difference between this and clearPart() is that this also\n * removes the part's start node. This means that the ChildPart must own its\n * start node, ie it must be a marker node specifically for this part and not an\n * anchor from surrounding content.\n *\n * @param part The Part to remove\n */\nexport const removePart = (part: ChildPart) => {\n part._$clear();\n part._$startNode.remove();\n};\n\nexport const clearPart = (part: ChildPart) => {\n part._$clear();\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {ChildPart, noChange} from '../lit-html.js';\nimport {directive, Directive, PartInfo, PartType} from '../directive.js';\nimport {\n insertPart,\n getCommittedValue,\n removePart,\n setCommittedValue,\n setChildPartValue,\n} from '../directive-helpers.js';\n\nexport type KeyFn<T> = (item: T, index: number) => unknown;\nexport type ItemTemplate<T> = (item: T, index: number) => unknown;\n\n// Helper for generating a map of array item to its index over a subset\n// of an array (used to lazily generate `newKeyToIndexMap` and\n// `oldKeyToIndexMap`)\nconst generateMap = (list: unknown[], start: number, end: number) => {\n const map = new Map<unknown, number>();\n for (let i = start; i <= end; i++) {\n map.set(list[i], i);\n }\n return map;\n};\n\nclass RepeatDirective extends Directive {\n private _itemKeys?: unknown[];\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n if (partInfo.type !== PartType.CHILD) {\n throw new Error('repeat() can only be used in text expressions');\n }\n }\n\n private _getValuesAndKeys<T>(\n items: Iterable<T>,\n keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n template?: ItemTemplate<T>\n ) {\n let keyFn: KeyFn<T> | undefined;\n if (template === undefined) {\n template = keyFnOrTemplate;\n } else if (keyFnOrTemplate !== undefined) {\n keyFn = keyFnOrTemplate as KeyFn<T>;\n }\n const keys = [];\n const values = [];\n let index = 0;\n for (const item of items) {\n keys[index] = keyFn ? keyFn(item, index) : index;\n values[index] = template!(item, index);\n index++;\n }\n return {\n values,\n keys,\n };\n }\n\n render<T>(items: Iterable<T>, template: ItemTemplate<T>): Array<unknown>;\n render<T>(\n items: Iterable<T>,\n keyFn: KeyFn<T> | ItemTemplate<T>,\n template: ItemTemplate<T>\n ): Array<unknown>;\n render<T>(\n items: Iterable<T>,\n keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n template?: ItemTemplate<T>\n ) {\n return this._getValuesAndKeys(items, keyFnOrTemplate, template).values;\n }\n\n override update<T>(\n containerPart: ChildPart,\n [items, keyFnOrTemplate, template]: [\n Iterable<T>,\n KeyFn<T> | ItemTemplate<T>,\n ItemTemplate<T>,\n ]\n ) {\n // Old part & key lists are retrieved from the last update (which may\n // be primed by hydration)\n const oldParts = getCommittedValue(\n containerPart\n ) as Array<ChildPart | null>;\n const {values: newValues, keys: newKeys} = this._getValuesAndKeys(\n items,\n keyFnOrTemplate,\n template\n );\n\n // We check that oldParts, the committed value, is an Array as an\n // indicator that the previous value came from a repeat() call. If\n // oldParts is not an Array then this is the first render and we return\n // an array for lit-html's array handling to render, and remember the\n // keys.\n if (!Array.isArray(oldParts)) {\n this._itemKeys = newKeys;\n return newValues;\n }\n\n // In SSR hydration it's possible for oldParts to be an array but for us\n // to not have item keys because the update() hasn't run yet. We set the\n // keys to an empty array. This will cause all oldKey/newKey comparisons\n // to fail and execution to fall to the last nested brach below which\n // reuses the oldPart.\n const oldKeys = (this._itemKeys ??= []);\n\n // New part list will be built up as we go (either reused from\n // old parts or created for new keys in this update). This is\n // saved in the above cache at the end of the update.\n const newParts: ChildPart[] = [];\n\n // Maps from key to index for current and previous update; these\n // are generated lazily only when needed as a performance\n // optimization, since they are only required for multiple\n // non-contiguous changes in the list, which are less common.\n let newKeyToIndexMap!: Map<unknown, number>;\n let oldKeyToIndexMap!: Map<unknown, number>;\n\n // Head and tail pointers to old parts and new values\n let oldHead = 0;\n let oldTail = oldParts.length - 1;\n let newHead = 0;\n let newTail = newValues.length - 1;\n\n // Overview of O(n) reconciliation algorithm (general approach\n // based on ideas found in ivi, vue, snabbdom, etc.):\n //\n // * We start with the list of old parts and new values (and\n // arrays of their respective keys), head/tail pointers into\n // each, and we build up the new list of parts by updating\n // (and when needed, moving) old parts or creating new ones.\n // The initial scenario might look like this (for brevity of\n // the diagrams, the numbers in the array reflect keys\n // associated with the old parts or new values, although keys\n // and parts/values are actually stored in parallel arrays\n // indexed using the same head/tail pointers):\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [ , , , , , , ]\n // newKeys: [0, 2, 1, 4, 3, 7, 6] <- reflects the user's new\n // item order\n // newHead ^ ^ newTail\n //\n // * Iterate old & new lists from both sides, updating,\n // swapping, or removing parts at the head/tail locations\n // until neither head nor tail can move.\n //\n // * Example below: keys at head pointers match, so update old\n // part 0 in-place (no need to move it) and record part 0 in\n // the `newParts` list. The last thing we do is advance the\n // `oldHead` and `newHead` pointers (will be reflected in the\n // next diagram).\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [0, , , , , , ] <- heads matched: update 0\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance both oldHead\n // & newHead\n // newHead ^ ^ newTail\n //\n // * Example below: head pointers don't match, but tail\n // pointers do, so update part 6 in place (no need to move\n // it), and record part 6 in the `newParts` list. Last,\n // advance the `oldTail` and `oldHead` pointers.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [0, , , , , , 6] <- tails matched: update 6\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance both oldTail\n // & newTail\n // newHead ^ ^ newTail\n //\n // * If neither head nor tail match; next check if one of the\n // old head/tail items was removed. We first need to generate\n // the reverse map of new keys to index (`newKeyToIndexMap`),\n // which is done once lazily as a performance optimization,\n // since we only hit this case if multiple non-contiguous\n // changes were made. Note that for contiguous removal\n // anywhere in the list, the head and tails would advance\n // from either end and pass each other before we get to this\n // case and removals would be handled in the final while loop\n // without needing to generate the map.\n //\n // * Example below: The key at `oldTail` was removed (no longer\n // in the `newKeyToIndexMap`), so remove that part from the\n // DOM and advance just the `oldTail` pointer.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [0, , , , , , 6] <- 5 not in new map: remove\n // newKeys: [0, 2, 1, 4, 3, 7, 6] 5 and advance oldTail\n // newHead ^ ^ newTail\n //\n // * Once head and tail cannot move, any mismatches are due to\n // either new or moved items; if a new key is in the previous\n // \"old key to old index\" map, move the old part to the new\n // location, otherwise create and insert a new part. Note\n // that when moving an old part we null its position in the\n // oldParts array if it lies between the head and tail so we\n // know to skip it when the pointers get there.\n //\n // * Example below: neither head nor tail match, and neither\n // were removed; so find the `newHead` key in the\n // `oldKeyToIndexMap`, and move that old part's DOM into the\n // next head position (before `oldParts[oldHead]`). Last,\n // null the part in the `oldPart` array since it was\n // somewhere in the remaining oldParts still to be scanned\n // (between the head and tail pointers) so that we know to\n // skip that old part on future iterations.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, , , , , 6] <- stuck: update & move 2\n // newKeys: [0, 2, 1, 4, 3, 7, 6] into place and advance\n // newHead\n // newHead ^ ^ newTail\n //\n // * Note that for moves/insertions like the one above, a part\n // inserted at the head pointer is inserted before the\n // current `oldParts[oldHead]`, and a part inserted at the\n // tail pointer is inserted before `newParts[newTail+1]`. The\n // seeming asymmetry lies in the fact that new parts are\n // moved into place outside in, so to the right of the head\n // pointer are old parts, and to the right of the tail\n // pointer are new parts.\n //\n // * We always restart back from the top of the algorithm,\n // allowing matching and simple updates in place to\n // continue...\n //\n // * Example below: the head pointers once again match, so\n // simply update part 1 and record it in the `newParts`\n // array. Last, advance both head pointers.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, , , , 6] <- heads matched: update 1\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance both oldHead\n // & newHead\n // newHead ^ ^ newTail\n //\n // * As mentioned above, items that were moved as a result of\n // being stuck (the final else clause in the code below) are\n // marked with null, so we always advance old pointers over\n // these so we're comparing the next actual old value on\n // either end.\n //\n // * Example below: `oldHead` is null (already placed in\n // newParts), so advance `oldHead`.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6] <- old head already used:\n // newParts: [0, 2, 1, , , , 6] advance oldHead\n // newKeys: [0, 2, 1, 4, 3, 7, 6]\n // newHead ^ ^ newTail\n //\n // * Note it's not critical to mark old parts as null when they\n // are moved from head to tail or tail to head, since they\n // will be outside the pointer range and never visited again.\n //\n // * Example below: Here the old tail key matches the new head\n // key, so the part at the `oldTail` position and move its\n // DOM to the new head position (before `oldParts[oldHead]`).\n // Last, advance `oldTail` and `newHead` pointers.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, 4, , , 6] <- old tail matches new\n // newKeys: [0, 2, 1, 4, 3, 7, 6] head: update & move 4,\n // advance oldTail & newHead\n // newHead ^ ^ newTail\n //\n // * Example below: Old and new head keys match, so update the\n // old head part in place, and advance the `oldHead` and\n // `newHead` pointers.\n //\n // oldHead v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, 4, 3, ,6] <- heads match: update 3\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance oldHead &\n // newHead\n // newHead ^ ^ newTail\n //\n // * Once the new or old pointers move past each other then all\n // we have left is additions (if old list exhausted) or\n // removals (if new list exhausted). Those are handled in the\n // final while loops at the end.\n //\n // * Example below: `oldHead` exceeded `oldTail`, so we're done\n // with the main loop. Create the remaining part and insert\n // it at the new head position, and the update is complete.\n //\n // (oldHead > oldTail)\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, 4, 3, 7 ,6] <- create and insert 7\n // newKeys: [0, 2, 1, 4, 3, 7, 6]\n // newHead ^ newTail\n //\n // * Note that the order of the if/else clauses is not\n // important to the algorithm, as long as the null checks\n // come first (to ensure we're always working on valid old\n // parts) and that the final else clause comes last (since\n // that's where the expensive moves occur). The order of\n // remaining clauses is just a simple guess at which cases\n // will be most common.\n //\n // * Note, we could calculate the longest\n // increasing subsequence (LIS) of old items in new position,\n // and only move those not in the LIS set. However that costs\n // O(nlogn) time and adds a bit more code, and only helps\n // make rare types of mutations require fewer moves. The\n // above handles removes, adds, reversal, swaps, and single\n // moves of contiguous items in linear time, in the minimum\n // number of moves. As the number of multiple moves where LIS\n // might help approaches a random shuffle, the LIS\n // optimization becomes less helpful, so it seems not worth\n // the code at this point. Could reconsider if a compelling\n // case arises.\n\n while (oldHead <= oldTail && newHead <= newTail) {\n if (oldParts[oldHead] === null) {\n // `null` means old part at head has already been used\n // below; skip\n oldHead++;\n } else if (oldParts[oldTail] === null) {\n // `null` means old part at tail has already been used\n // below; skip\n oldTail--;\n } else if (oldKeys[oldHead] === newKeys[newHead]) {\n // Old head matches new head; update in place\n newParts[newHead] = setChildPartValue(\n oldParts[oldHead]!,\n newValues[newHead]\n );\n oldHead++;\n newHead++;\n } else if (oldKeys[oldTail] === newKeys[newTail]) {\n // Old tail matches new tail; update in place\n newParts[newTail] = setChildPartValue(\n oldParts[oldTail]!,\n newValues[newTail]\n );\n oldTail--;\n newTail--;\n } else if (oldKeys[oldHead] === newKeys[newTail]) {\n // Old head matches new tail; update and move to new tail\n newParts[newTail] = setChildPartValue(\n oldParts[oldHead]!,\n newValues[newTail]\n );\n insertPart(containerPart, newParts[newTail + 1], oldParts[oldHead]!);\n oldHead++;\n newTail--;\n } else if (oldKeys[oldTail] === newKeys[newHead]) {\n // Old tail matches new head; update and move to new head\n newParts[newHead] = setChildPartValue(\n oldParts[oldTail]!,\n newValues[newHead]\n );\n insertPart(containerPart, oldParts[oldHead]!, oldParts[oldTail]!);\n oldTail--;\n newHead++;\n } else {\n if (newKeyToIndexMap === undefined) {\n // Lazily generate key-to-index maps, used for removals &\n // moves below\n newKeyToIndexMap = generateMap(newKeys, newHead, newTail);\n oldKeyToIndexMap = generateMap(oldKeys, oldHead, oldTail);\n }\n if (!newKeyToIndexMap.has(oldKeys[oldHead])) {\n // Old head is no longer in new list; remove\n removePart(oldParts[oldHead]!);\n oldHead++;\n } else if (!newKeyToIndexMap.has(oldKeys[oldTail])) {\n // Old tail is no longer in new list; remove\n removePart(oldParts[oldTail]!);\n oldTail--;\n } else {\n // Any mismatches at this point are due to additions or\n // moves; see if we have an old part we can reuse and move\n // into place\n const oldIndex = oldKeyToIndexMap.get(newKeys[newHead]);\n const oldPart = oldIndex !== undefined ? oldParts[oldIndex] : null;\n if (oldPart === null) {\n // No old part for this value; create a new one and\n // insert it\n const newPart = insertPart(containerPart, oldParts[oldHead]!);\n setChildPartValue(newPart, newValues[newHead]);\n newParts[newHead] = newPart;\n } else {\n // Reuse old part\n newParts[newHead] = setChildPartValue(oldPart, newValues[newHead]);\n insertPart(containerPart, oldParts[oldHead]!, oldPart);\n // This marks the old part as having been used, so that\n // it will be skipped in the first two checks above\n oldParts[oldIndex as number] = null;\n }\n newHead++;\n }\n }\n }\n // Add parts for any remaining new values\n while (newHead <= newTail) {\n // For all remaining additions, we insert before last new\n // tail, since old pointers are no longer valid\n const newPart = insertPart(containerPart, newParts[newTail + 1]);\n setChildPartValue(newPart, newValues[newHead]);\n newParts[newHead++] = newPart;\n }\n // Remove any remaining unused old parts\n while (oldHead <= oldTail) {\n const oldPart = oldParts[oldHead++];\n if (oldPart !== null) {\n removePart(oldPart);\n }\n }\n\n // Save order of new parts for next round\n this._itemKeys = newKeys;\n // Directly set part value, bypassing it's dirty-checking\n setCommittedValue(containerPart, newParts);\n return noChange;\n }\n}\n\nexport interface RepeatDirectiveFn {\n <T>(\n items: Iterable<T>,\n keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n template?: ItemTemplate<T>\n ): unknown;\n <T>(items: Iterable<T>, template: ItemTemplate<T>): unknown;\n <T>(\n items: Iterable<T>,\n keyFn: KeyFn<T> | ItemTemplate<T>,\n template: ItemTemplate<T>\n ): unknown;\n}\n\n/**\n * A directive that repeats a series of values (usually `TemplateResults`)\n * generated from an iterable, and updates those items efficiently when the\n * iterable changes based on user-provided `keys` associated with each item.\n *\n * Note that if a `keyFn` is provided, strict key-to-DOM mapping is maintained,\n * meaning previous DOM for a given key is moved into the new position if\n * needed, and DOM will never be reused with values for different keys (new DOM\n * will always be created for new keys). This is generally the most efficient\n * way to use `repeat` since it performs minimum unnecessary work for insertions\n * and removals.\n *\n * The `keyFn` takes two parameters, the item and its index, and returns a unique key value.\n *\n * ```js\n * html`\n * <ol>\n * ${repeat(this.items, (item) => item.id, (item, index) => {\n * return html`<li>${index}: ${item.name}</li>`;\n * })}\n * </ol>\n * `\n * ```\n *\n * **Important**: If providing a `keyFn`, keys *must* be unique for all items in a\n * given call to `repeat`. The behavior when two or more items have the same key\n * is undefined.\n *\n * If no `keyFn` is provided, this directive will perform similar to mapping\n * items to values, and DOM will be reused against potentially different items.\n */\nexport const repeat = directive(RepeatDirective) as RepeatDirectiveFn;\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RepeatDirective};\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\nimport {\n directive,\n Directive,\n ChildPart,\n DirectiveParameters,\n DirectiveResult,\n} from '../directive.js';\nimport {setCommittedValue} from '../directive-helpers.js';\n\nclass Keyed<T> extends Directive {\n key: unknown = nothing;\n\n render(k: unknown, v: T): T {\n this.key = k;\n return v;\n }\n\n override update(part: ChildPart, [k, v]: DirectiveParameters<this>) {\n if (k !== this.key) {\n // Clear the part before returning a value. The one-arg form of\n // setCommittedValue sets the value to a sentinel which forces a\n // commit the next render.\n setCommittedValue(part);\n this.key = k;\n }\n return v;\n }\n}\n\ninterface KeyedFunc {\n <V>(k: unknown, v: V): DirectiveResult<typeof Keyed<V>>;\n}\n\n/**\n * Associates a renderable value with a unique key. When the key changes, the\n * previous DOM is removed and disposed before rendering the next value, even\n * if the value - such as a template - is the same.\n *\n * This is useful for forcing re-renders of stateful components, or working\n * with code that expects new data to generate new HTML elements, such as some\n * animation techniques.\n */\nexport const keyed: KeyedFunc = directive(Keyed);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {Keyed};\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nexport const supportsAdoptingStyleSheets: boolean =\n global.ShadowRoot &&\n (global.ShadyCSS === undefined || global.ShadyCSS.nativeShadow) &&\n 'adoptedStyleSheets' in Document.prototype &&\n 'replace' in CSSStyleSheet.prototype;\n\n/**\n * A CSSResult or native CSSStyleSheet.\n *\n * In browsers that support constructible CSS style sheets, CSSStyleSheet\n * object can be used for styling along side CSSResult from the `css`\n * template tag.\n */\nexport type CSSResultOrNative = CSSResult | CSSStyleSheet;\n\nexport type CSSResultArray = Array<CSSResultOrNative | CSSResultArray>;\n\n/**\n * A single CSSResult, CSSStyleSheet, or an array or nested arrays of those.\n */\nexport type CSSResultGroup = CSSResultOrNative | CSSResultArray;\n\nconst constructionToken = Symbol();\n\nconst cssTagCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * A container for a string of CSS text, that may be used to create a CSSStyleSheet.\n *\n * CSSResult is the return value of `css`-tagged template literals and\n * `unsafeCSS()`. In order to ensure that CSSResults are only created via the\n * `css` tag and `unsafeCSS()`, CSSResult cannot be constructed directly.\n */\nexport class CSSResult {\n // This property needs to remain unminified.\n ['_$cssResult$'] = true;\n readonly cssText: string;\n private _styleSheet?: CSSStyleSheet;\n private _strings: TemplateStringsArray | undefined;\n\n private constructor(\n cssText: string,\n strings: TemplateStringsArray | undefined,\n safeToken: symbol\n ) {\n if (safeToken !== constructionToken) {\n throw new Error(\n 'CSSResult is not constructable. Use `unsafeCSS` or `css` instead.'\n );\n }\n this.cssText = cssText;\n this._strings = strings;\n }\n\n // This is a getter so that it's lazy. In practice, this means stylesheets\n // are not created until the first element instance is made.\n get styleSheet(): CSSStyleSheet | undefined {\n // If `supportsAdoptingStyleSheets` is true then we assume CSSStyleSheet is\n // constructable.\n let styleSheet = this._styleSheet;\n const strings = this._strings;\n if (supportsAdoptingStyleSheets && styleSheet === undefined) {\n const cacheable = strings !== undefined && strings.length === 1;\n if (cacheable) {\n styleSheet = cssTagCache.get(strings);\n }\n if (styleSheet === undefined) {\n (this._styleSheet = styleSheet = new CSSStyleSheet()).replaceSync(\n this.cssText\n );\n if (cacheable) {\n cssTagCache.set(strings, styleSheet);\n }\n }\n }\n return styleSheet;\n }\n\n toString(): string {\n return this.cssText;\n }\n}\n\ntype ConstructableCSSResult = CSSResult & {\n new (\n cssText: string,\n strings: TemplateStringsArray | undefined,\n safeToken: symbol\n ): CSSResult;\n};\n\nconst textFromCSSResult = (value: CSSResultGroup | number) => {\n // This property needs to remain unminified.\n if ((value as CSSResult)['_$cssResult$'] === true) {\n return (value as CSSResult).cssText;\n } else if (typeof value === 'number') {\n return value;\n } else {\n throw new Error(\n `Value passed to 'css' function must be a 'css' function result: ` +\n `${value}. Use 'unsafeCSS' to pass non-literal values, but take care ` +\n `to ensure page security.`\n );\n }\n};\n\n/**\n * Wrap a value for interpolation in a {@linkcode css} tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nexport const unsafeCSS = (value: unknown) =>\n new (CSSResult as ConstructableCSSResult)(\n typeof value === 'string' ? value : String(value),\n undefined,\n constructionToken\n );\n\n/**\n * A template literal tag which can be used with LitElement's\n * {@linkcode LitElement.styles} property to set element styles.\n *\n * For security reasons, only literal string values and number may be used in\n * embedded expressions. To incorporate non-literal values {@linkcode unsafeCSS}\n * may be used inside an expression.\n */\nexport const css = (\n strings: TemplateStringsArray,\n ...values: (CSSResultGroup | number)[]\n): CSSResult => {\n const cssText =\n strings.length === 1\n ? strings[0]\n : values.reduce(\n (acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1],\n strings[0]\n );\n return new (CSSResult as ConstructableCSSResult)(\n cssText,\n strings,\n constructionToken\n );\n};\n\n/**\n * Applies the given styles to a `shadowRoot`. When Shadow DOM is\n * available but `adoptedStyleSheets` is not, styles are appended to the\n * `shadowRoot` to [mimic the native feature](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/adoptedStyleSheets).\n * Note, when shimming is used, any styles that are subsequently placed into\n * the shadowRoot should be placed *before* any shimmed adopted styles. This\n * will match spec behavior that gives adopted sheets precedence over styles in\n * shadowRoot.\n */\nexport const adoptStyles = (\n renderRoot: ShadowRoot,\n styles: Array<CSSResultOrNative>\n) => {\n if (supportsAdoptingStyleSheets) {\n (renderRoot as ShadowRoot).adoptedStyleSheets = styles.map((s) =>\n s instanceof CSSStyleSheet ? s : s.styleSheet!\n );\n } else {\n for (const s of styles) {\n const style = document.createElement('style');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nonce = (global as any)['litNonce'];\n if (nonce !== undefined) {\n style.setAttribute('nonce', nonce);\n }\n style.textContent = (s as CSSResult).cssText;\n renderRoot.appendChild(style);\n }\n }\n};\n\nconst cssResultFromStyleSheet = (sheet: CSSStyleSheet) => {\n let cssText = '';\n for (const rule of sheet.cssRules) {\n cssText += rule.cssText;\n }\n return unsafeCSS(cssText);\n};\n\nexport const getCompatibleStyle =\n supportsAdoptingStyleSheets ||\n (NODE_MODE && global.CSSStyleSheet === undefined)\n ? (s: CSSResultOrNative) => s\n : (s: CSSResultOrNative) =>\n s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Use this module if you want to create your own base class extending\n * {@link ReactiveElement}.\n * @packageDocumentation\n */\n\nimport {\n getCompatibleStyle,\n adoptStyles,\n CSSResultGroup,\n CSSResultOrNative,\n} from './css-tag.js';\nimport type {\n ReactiveController,\n ReactiveControllerHost,\n} from './reactive-controller.js';\n\n// In the Node build, this import will be injected by Rollup:\n// import {HTMLElement, customElements} from '@lit-labs/ssr-dom-shim';\n\nexport * from './css-tag.js';\nexport type {\n ReactiveController,\n ReactiveControllerHost,\n} from './reactive-controller.js';\n\n/**\n * Removes the `readonly` modifier from properties in the union K.\n *\n * This is a safer way to cast a value to a type with a mutable version of a\n * readonly field, than casting to an interface with the field re-declared\n * because it preserves the type of all the fields and warns on typos.\n */\ntype Mutable<T, K extends keyof T> = Omit<T, K> & {\n -readonly [P in keyof Pick<T, K>]: P extends K ? T[P] : never;\n};\n\n// TODO (justinfagnani): Add `hasOwn` here when we ship ES2022\nconst {\n is,\n defineProperty,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n getPrototypeOf,\n} = Object;\n\nconst NODE_MODE = false;\n\n// Lets a minifier replace globalThis references with a minified name\nconst global = globalThis;\n\nif (NODE_MODE) {\n global.customElements ??= customElements;\n}\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nconst trustedTypes = (global as unknown as {trustedTypes?: {emptyScript: ''}})\n .trustedTypes;\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n ? (trustedTypes.emptyScript as unknown as '')\n : '';\n\nconst polyfillSupport = DEV_MODE\n ? global.reactiveElementPolyfillSupportDevMode\n : global.reactiveElementPolyfillSupport;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n global.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (\n !global.litIssuedWarnings!.has(warning) &&\n !global.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n global.litIssuedWarnings!.add(warning);\n }\n };\n\n queueMicrotask(() => {\n issueWarning(\n 'dev-mode',\n `Lit is in dev mode. Not recommended for production!`\n );\n\n // Issue polyfill support warning.\n if (global.ShadyDOM?.inUse && polyfillSupport === undefined) {\n issueWarning(\n 'polyfill-support-missing',\n `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n `the \\`polyfill-support\\` module has not been loaded.`\n );\n }\n });\n}\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ReactiveUnstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry = Update;\n export interface Update {\n kind: 'update';\n }\n }\n}\n\ninterface DebugLoggingWindow {\n // Even in dev mode, we generally don't want to emit these events, as that's\n // another level of cost, so only emit them when DEV_MODE is true _and_ when\n // window.emitLitDebugEvents is true.\n emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n ? (event: ReactiveUnstable.DebugLog.Entry) => {\n const shouldEmit = (global as unknown as DebugLoggingWindow)\n .emitLitDebugLogEvents;\n if (!shouldEmit) {\n return;\n }\n global.dispatchEvent(\n new CustomEvent<ReactiveUnstable.DebugLog.Entry>('lit-debug', {\n detail: event,\n })\n );\n }\n : undefined;\n\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n prop: P,\n _obj: unknown\n): P => prop;\n\n/**\n * Converts property values to and from attribute values.\n */\nexport interface ComplexAttributeConverter<Type = unknown, TypeHint = unknown> {\n /**\n * Called to convert an attribute value to a property\n * value.\n */\n fromAttribute?(value: string | null, type?: TypeHint): Type;\n\n /**\n * Called to convert a property value to an attribute\n * value.\n *\n * It returns unknown instead of string, to be compatible with\n * https://github.com/WICG/trusted-types (and similar efforts).\n */\n toAttribute?(value: Type, type?: TypeHint): unknown;\n}\n\ntype AttributeConverter<Type = unknown, TypeHint = unknown> =\n | ComplexAttributeConverter<Type>\n | ((value: string | null, type?: TypeHint) => Type);\n\n/**\n * Defines options for a property accessor.\n */\nexport interface PropertyDeclaration<Type = unknown, TypeHint = unknown> {\n /**\n * When set to `true`, indicates the property is internal private state. The\n * property should not be set by users. When using TypeScript, this property\n * should be marked as `private` or `protected`, and it is also a common\n * practice to use a leading `_` in the name. The property is not added to\n * `observedAttributes`.\n */\n readonly state?: boolean;\n\n /**\n * Indicates how and whether the property becomes an observed attribute.\n * If the value is `false`, the property is not added to `observedAttributes`.\n * If true or absent, the lowercased property name is observed (e.g. `fooBar`\n * becomes `foobar`). If a string, the string value is observed (e.g\n * `attribute: 'foo-bar'`).\n */\n readonly attribute?: boolean | string;\n\n /**\n * Indicates the type of the property. This is used only as a hint for the\n * `converter` to determine how to convert the attribute\n * to/from a property.\n */\n readonly type?: TypeHint;\n\n /**\n * Indicates how to convert the attribute to/from a property. If this value\n * is a function, it is used to convert the attribute value a the property\n * value. If it's an object, it can have keys for `fromAttribute` and\n * `toAttribute`. If no `toAttribute` function is provided and\n * `reflect` is set to `true`, the property value is set directly to the\n * attribute. A default `converter` is used if none is provided; it supports\n * `Boolean`, `String`, `Number`, `Object`, and `Array`. Note,\n * when a property changes and the converter is used to update the attribute,\n * the property is never updated again as a result of the attribute changing,\n * and vice versa.\n */\n readonly converter?: AttributeConverter<Type, TypeHint>;\n\n /**\n * Indicates if the property should reflect to an attribute.\n * If `true`, when the property is set, the attribute is set using the\n * attribute name determined according to the rules for the `attribute`\n * property option and the value of the property converted using the rules\n * from the `converter` property option.\n */\n readonly reflect?: boolean;\n\n /**\n * A function that indicates if a property should be considered changed when\n * it is set. The function should take the `newValue` and `oldValue` and\n * return `true` if an update should be requested.\n */\n hasChanged?(value: Type, oldValue: Type): boolean;\n\n /**\n * Indicates whether an accessor will be created for this property. By\n * default, an accessor will be generated for this property that requests an\n * update when set. If this flag is `true`, no accessor will be created, and\n * it will be the user's responsibility to call\n * `this.requestUpdate(propertyName, oldValue)` to request an update when\n * the property changes.\n */\n readonly noAccessor?: boolean;\n\n /**\n * Whether this property is wrapping accessors. This is set by `@property`\n * to control the initial value change and reflection logic.\n *\n * @internal\n */\n wrapped?: boolean;\n\n /**\n * When `true`, uses the initial value of the property as the default value,\n * which changes how attributes are handled:\n * - The initial value does *not* reflect, even if the `reflect` option is `true`.\n * Subsequent changes to the property will reflect, even if they are equal to the\n * default value.\n * - When the attribute is removed, the property is set to the default value\n * - The initial value will not trigger an old value in the `changedProperties` map\n * argument to update lifecycle methods.\n *\n * When set, properties must be initialized, either with a field initializer, or an\n * assignment in the constructor. Not initializing the property may lead to\n * improper handling of subsequent property assignments.\n *\n * While this behavior is opt-in, most properties that reflect to attributes should\n * use `useDefault: true` so that their initial values do not reflect.\n */\n useDefault?: boolean;\n}\n\n/**\n * Map of properties to PropertyDeclaration options. For each property an\n * accessor is made, and the property is processed according to the\n * PropertyDeclaration options.\n */\nexport interface PropertyDeclarations {\n readonly [key: string]: PropertyDeclaration;\n}\n\ntype PropertyDeclarationMap = Map<PropertyKey, PropertyDeclaration>;\n\ntype AttributeMap = Map<string, PropertyKey>;\n\n/**\n * A Map of property keys to values.\n *\n * Takes an optional type parameter T, which when specified as a non-any,\n * non-unknown type, will make the Map more strongly-typed, associating the map\n * keys with their corresponding value type on T.\n *\n * Use `PropertyValues<this>` when overriding ReactiveElement.update() and\n * other lifecycle methods in order to get stronger type-checking on keys\n * and values.\n */\n// This type is conditional so that if the parameter T is not specified, or\n// is `any`, the type will include `Map<PropertyKey, unknown>`. Since T is not\n// given in the uses of PropertyValues in this file, all uses here fallback to\n// meaning `Map<PropertyKey, unknown>`, but if a developer uses\n// `PropertyValues<this>` (or any other value for T) they will get a\n// strongly-typed Map type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PropertyValues<T = any> = T extends object\n ? PropertyValueMap<T>\n : Map<PropertyKey, unknown>;\n\n/**\n * Do not use, instead prefer {@linkcode PropertyValues}.\n */\n// This type must be exported such that JavaScript generated by the Google\n// Closure Compiler can import a type reference.\nexport interface PropertyValueMap<T> extends Map<PropertyKey, unknown> {\n get<K extends keyof T>(k: K): T[K] | undefined;\n set<K extends keyof T>(key: K, value: T[K]): this;\n has<K extends keyof T>(k: K): boolean;\n delete<K extends keyof T>(k: K): boolean;\n}\n\nexport const defaultConverter: ComplexAttributeConverter = {\n toAttribute(value: unknown, type?: unknown): unknown {\n switch (type) {\n case Boolean:\n value = value ? emptyStringForBooleanAttribute : null;\n break;\n case Object:\n case Array:\n // if the value is `null` or `undefined` pass this through\n // to allow removing/no change behavior.\n value = value == null ? value : JSON.stringify(value);\n break;\n }\n return value;\n },\n\n fromAttribute(value: string | null, type?: unknown) {\n let fromValue: unknown = value;\n switch (type) {\n case Boolean:\n fromValue = value !== null;\n break;\n case Number:\n fromValue = value === null ? null : Number(value);\n break;\n case Object:\n case Array:\n // Do *not* generate exception when invalid JSON is set as elements\n // don't normally complain on being mis-configured.\n // TODO(sorvell): Do generate exception in *dev mode*.\n try {\n // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n fromValue = JSON.parse(value!) as unknown;\n } catch (e) {\n fromValue = null;\n }\n break;\n }\n return fromValue;\n },\n};\n\nexport interface HasChanged {\n (value: unknown, old: unknown): boolean;\n}\n\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nexport const notEqual: HasChanged = (value: unknown, old: unknown): boolean =>\n !is(value, old);\n\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n attribute: true,\n type: String,\n converter: defaultConverter,\n reflect: false,\n useDefault: false,\n hasChanged: notEqual,\n};\n\n/**\n * A string representing one of the supported dev mode warning categories.\n */\nexport type WarningKind =\n | 'change-in-update'\n | 'migration'\n | 'async-perform-update';\n\nexport type Initializer = (element: ReactiveElement) => void;\n\n// Temporary, until google3 is on TypeScript 5.2\ndeclare global {\n interface SymbolConstructor {\n readonly metadata: unique symbol;\n }\n}\n\n// Ensure metadata is enabled. TypeScript does not polyfill\n// Symbol.metadata, so we must ensure that it exists.\n(Symbol as {metadata: symbol}).metadata ??= Symbol('metadata');\n\ndeclare global {\n // This is public global API, do not change!\n // eslint-disable-next-line no-var\n var litPropertyMetadata: WeakMap<\n object,\n Map<PropertyKey, PropertyDeclaration>\n >;\n}\n\n// Map from a class's metadata object to property options\n// Note that we must use nullish-coalescing assignment so that we only use one\n// map even if we load multiple version of this module.\nglobal.litPropertyMetadata ??= new WeakMap<\n object,\n Map<PropertyKey, PropertyDeclaration>\n>();\n\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclasses to render updates as desired.\n * @noInheritDoc\n */\nexport abstract class ReactiveElement\n // In the Node build, this `extends` clause will be substituted with\n // `(globalThis.HTMLElement ?? HTMLElement)`.\n //\n // This way, we will first prefer any global `HTMLElement` polyfill that the\n // user has assigned, and then fall back to the `HTMLElement` shim which has\n // been imported (see note at the top of this file about how this import is\n // generated by Rollup). Note that the `HTMLElement` variable has been\n // shadowed by this import, so it no longer refers to the global.\n extends HTMLElement\n implements ReactiveControllerHost\n{\n // Note: these are patched in only in DEV_MODE.\n /**\n * Read or set all the enabled warning categories for this class.\n *\n * This property is only used in development builds.\n *\n * @nocollapse\n * @category dev-mode\n */\n static enabledWarnings?: WarningKind[];\n\n /**\n * Enable the given warning category for this class.\n *\n * This method only exists in development builds, so it should be accessed\n * with a guard like:\n *\n * ```ts\n * // Enable for all ReactiveElement subclasses\n * ReactiveElement.enableWarning?.('migration');\n *\n * // Enable for only MyElement and subclasses\n * MyElement.enableWarning?.('migration');\n * ```\n *\n * @nocollapse\n * @category dev-mode\n */\n static enableWarning?: (warningKind: WarningKind) => void;\n\n /**\n * Disable the given warning category for this class.\n *\n * This method only exists in development builds, so it should be accessed\n * with a guard like:\n *\n * ```ts\n * // Disable for all ReactiveElement subclasses\n * ReactiveElement.disableWarning?.('migration');\n *\n * // Disable for only MyElement and subclasses\n * MyElement.disableWarning?.('migration');\n * ```\n *\n * @nocollapse\n * @category dev-mode\n */\n static disableWarning?: (warningKind: WarningKind) => void;\n\n /**\n * Adds an initializer function to the class that is called during instance\n * construction.\n *\n * This is useful for code that runs against a `ReactiveElement`\n * subclass, such as a decorator, that needs to do work for each\n * instance, such as setting up a `ReactiveController`.\n *\n * ```ts\n * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n * target.addInitializer((instance: ReactiveElement) => {\n * // This is run during construction of the element\n * new MyController(instance);\n * });\n * }\n * ```\n *\n * Decorating a field will then cause each instance to run an initializer\n * that adds a controller:\n *\n * ```ts\n * class MyElement extends LitElement {\n * @myDecorator foo;\n * }\n * ```\n *\n * Initializers are stored per-constructor. Adding an initializer to a\n * subclass does not add it to a superclass. Since initializers are run in\n * constructors, initializers will run in order of the class hierarchy,\n * starting with superclasses and progressing to the instance's class.\n *\n * @nocollapse\n */\n static addInitializer(initializer: Initializer) {\n this.__prepare();\n (this._initializers ??= []).push(initializer);\n }\n\n static _initializers?: Initializer[];\n\n /*\n * Due to closure compiler ES6 compilation bugs, @nocollapse is required on\n * all static methods and properties with initializers. Reference:\n * - https://github.com/google/closure-compiler/issues/1776\n */\n\n /**\n * Maps attribute names to properties; for example `foobar` attribute to\n * `fooBar` property. Created lazily on user subclasses when finalizing the\n * class.\n * @nocollapse\n */\n private static __attributeToPropertyMap: AttributeMap;\n\n /**\n * Marks class as having been finalized, which includes creating properties\n * from `static properties`, but does *not* include all properties created\n * from decorators.\n * @nocollapse\n */\n protected static finalized: true | undefined;\n\n /**\n * Memoized list of all element properties, including any superclass\n * properties. Created lazily on user subclasses when finalizing the class.\n *\n * @nocollapse\n * @category properties\n */\n static elementProperties: PropertyDeclarationMap;\n\n /**\n * User-supplied object that maps property names to `PropertyDeclaration`\n * objects containing options for configuring reactive properties. When\n * a reactive property is set the element will update and render.\n *\n * By default properties are public fields, and as such, they should be\n * considered as primarily settable by element users, either via attribute or\n * the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the `state: true` option. Properties\n * marked as `state` do not reflect from the corresponding attribute\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating\n * public properties should typically not be done for non-primitive (object or\n * array) properties. In other cases when an element needs to manage state, a\n * private property set with the `state: true` option should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n * @nocollapse\n * @category properties\n */\n static properties: PropertyDeclarations;\n\n /**\n * Memoized list of all element styles.\n * Created lazily on user subclasses when finalizing the class.\n * @nocollapse\n * @category styles\n */\n static elementStyles: Array<CSSResultOrNative> = [];\n\n /**\n * Array of styles to apply to the element. The styles should be defined\n * using the {@linkcode css} tag function, via constructible stylesheets, or\n * imported from native CSS module scripts.\n *\n * Note on Content Security Policy:\n *\n * Element styles are implemented with `<style>` tags when the browser doesn't\n * support adopted StyleSheets. To use such `<style>` tags with the style-src\n * CSP directive, the style-src value must either include 'unsafe-inline' or\n * `nonce-<base64-value>` with `<base64-value>` replaced be a server-generated\n * nonce.\n *\n * To provide a nonce to use on generated `<style>` elements, set\n * `window.litNonce` to a server-generated nonce in your page's HTML, before\n * loading application code:\n *\n * ```html\n * <script>\n * // Generated and unique per request:\n * window.litNonce = 'a1b2c3d4';\n * </script>\n * ```\n * @nocollapse\n * @category styles\n */\n static styles?: CSSResultGroup;\n\n /**\n * Returns a list of attributes corresponding to the registered properties.\n * @nocollapse\n * @category attributes\n */\n static get observedAttributes() {\n // Ensure we've created all properties\n this.finalize();\n // this.__attributeToPropertyMap is only undefined after finalize() in\n // ReactiveElement itself. ReactiveElement.observedAttributes is only\n // accessed with ReactiveElement as the receiver when a subclass or mixin\n // calls super.observedAttributes\n return (\n this.__attributeToPropertyMap && [...this.__attributeToPropertyMap.keys()]\n );\n }\n\n private __instanceProperties?: PropertyValues = undefined;\n\n /**\n * Creates a property accessor on the element prototype if one does not exist\n * and stores a {@linkcode PropertyDeclaration} for the property with the\n * given options. The property setter calls the property's `hasChanged`\n * property option or uses a strict identity check to determine whether or not\n * to request an update.\n *\n * This method may be overridden to customize properties; however,\n * when doing so, it's important to call `super.createProperty` to ensure\n * the property is setup correctly. This method calls\n * `getPropertyDescriptor` internally to get a descriptor to install.\n * To customize what properties do when they are get or set, override\n * `getPropertyDescriptor`. To customize the options for a property,\n * implement `createProperty` like this:\n *\n * ```ts\n * static createProperty(name, options) {\n * options = Object.assign(options, {myOption: true});\n * super.createProperty(name, options);\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n static createProperty(\n name: PropertyKey,\n options: PropertyDeclaration = defaultPropertyDeclaration\n ) {\n // If this is a state property, force the attribute to false.\n if (options.state) {\n (options as Mutable<PropertyDeclaration, 'attribute'>).attribute = false;\n }\n this.__prepare();\n // Whether this property is wrapping accessors.\n // Helps control the initial value change and reflection logic.\n if (this.prototype.hasOwnProperty(name)) {\n options = Object.create(options);\n options.wrapped = true;\n }\n this.elementProperties.set(name, options);\n if (!options.noAccessor) {\n const key = DEV_MODE\n ? // Use Symbol.for in dev mode to make it easier to maintain state\n // when doing HMR.\n Symbol.for(`${String(name)} (@property() cache)`)\n : Symbol();\n const descriptor = this.getPropertyDescriptor(name, key, options);\n if (descriptor !== undefined) {\n defineProperty(this.prototype, name, descriptor);\n }\n }\n }\n\n /**\n * Returns a property descriptor to be defined on the given named property.\n * If no descriptor is returned, the property will not become an accessor.\n * For example,\n *\n * ```ts\n * class MyElement extends LitElement {\n * static getPropertyDescriptor(name, key, options) {\n * const defaultDescriptor =\n * super.getPropertyDescriptor(name, key, options);\n * const setter = defaultDescriptor.set;\n * return {\n * get: defaultDescriptor.get,\n * set(value) {\n * setter.call(this, value);\n * // custom action.\n * },\n * configurable: true,\n * enumerable: true\n * }\n * }\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n protected static getPropertyDescriptor(\n name: PropertyKey,\n key: string | symbol,\n options: PropertyDeclaration\n ): PropertyDescriptor | undefined {\n const {get, set} = getOwnPropertyDescriptor(this.prototype, name) ?? {\n get(this: ReactiveElement) {\n return this[key as keyof typeof this];\n },\n set(this: ReactiveElement, v: unknown) {\n (this as unknown as Record<string | symbol, unknown>)[key] = v;\n },\n };\n if (DEV_MODE && get == null) {\n if ('value' in (getOwnPropertyDescriptor(this.prototype, name) ?? {})) {\n throw new Error(\n `Field ${JSON.stringify(String(name))} on ` +\n `${this.name} was declared as a reactive property ` +\n `but it's actually declared as a value on the prototype. ` +\n `Usually this is due to using @property or @state on a method.`\n );\n }\n issueWarning(\n 'reactive-property-without-getter',\n `Field ${JSON.stringify(String(name))} on ` +\n `${this.name} was declared as a reactive property ` +\n `but it does not have a getter. This will be an error in a ` +\n `future version of Lit.`\n );\n }\n return {\n get,\n set(this: ReactiveElement, value: unknown) {\n const oldValue = get?.call(this);\n set?.call(this, value);\n this.requestUpdate(name, oldValue, options);\n },\n configurable: true,\n enumerable: true,\n };\n }\n\n /**\n * Returns the property options associated with the given property.\n * These options are defined with a `PropertyDeclaration` via the `properties`\n * object or the `@property` decorator and are registered in\n * `createProperty(...)`.\n *\n * Note, this method should be considered \"final\" and not overridden. To\n * customize the options for a given property, override\n * {@linkcode createProperty}.\n *\n * @nocollapse\n * @final\n * @category properties\n */\n static getPropertyOptions(name: PropertyKey) {\n return this.elementProperties.get(name) ?? defaultPropertyDeclaration;\n }\n\n // Temporary, until google3 is on TypeScript 5.2\n declare static [Symbol.metadata]: object & Record<PropertyKey, unknown>;\n\n /**\n * Initializes static own properties of the class used in bookkeeping\n * for element properties, initializers, etc.\n *\n * Can be called multiple times by code that needs to ensure these\n * properties exist before using them.\n *\n * This method ensures the superclass is finalized so that inherited\n * property metadata can be copied down.\n * @nocollapse\n */\n private static __prepare() {\n if (\n this.hasOwnProperty(JSCompiler_renameProperty('elementProperties', this))\n ) {\n // Already prepared\n return;\n }\n // Finalize any superclasses\n const superCtor = getPrototypeOf(this) as typeof ReactiveElement;\n superCtor.finalize();\n\n // Create own set of initializers for this class if any exist on the\n // superclass and copy them down. Note, for a small perf boost, avoid\n // creating initializers unless needed.\n if (superCtor._initializers !== undefined) {\n this._initializers = [...superCtor._initializers];\n }\n // Initialize elementProperties from the superclass\n this.elementProperties = new Map(superCtor.elementProperties);\n }\n\n /**\n * Finishes setting up the class so that it's ready to be registered\n * as a custom element and instantiated.\n *\n * This method is called by the ReactiveElement.observedAttributes getter.\n * If you override the observedAttributes getter, you must either call\n * super.observedAttributes to trigger finalization, or call finalize()\n * yourself.\n *\n * @nocollapse\n */\n protected static finalize() {\n if (this.hasOwnProperty(JSCompiler_renameProperty('finalized', this))) {\n return;\n }\n this.finalized = true;\n this.__prepare();\n\n // Create properties from the static properties block:\n if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n const props = this.properties;\n const propKeys = [\n ...getOwnPropertyNames(props),\n ...getOwnPropertySymbols(props),\n ] as Array<keyof typeof props>;\n for (const p of propKeys) {\n this.createProperty(p, props[p]);\n }\n }\n\n // Create properties from standard decorator metadata:\n const metadata = this[Symbol.metadata];\n if (metadata !== null) {\n const properties = litPropertyMetadata.get(metadata);\n if (properties !== undefined) {\n for (const [p, options] of properties) {\n this.elementProperties.set(p, options);\n }\n }\n }\n\n // Create the attribute-to-property map\n this.__attributeToPropertyMap = new Map();\n for (const [p, options] of this.elementProperties) {\n const attr = this.__attributeNameForProperty(p, options);\n if (attr !== undefined) {\n this.__attributeToPropertyMap.set(attr, p);\n }\n }\n\n this.elementStyles = this.finalizeStyles(this.styles);\n\n if (DEV_MODE) {\n if (this.hasOwnProperty('createProperty')) {\n issueWarning(\n 'no-override-create-property',\n 'Overriding ReactiveElement.createProperty() is deprecated. ' +\n 'The override will not be called with standard decorators'\n );\n }\n if (this.hasOwnProperty('getPropertyDescriptor')) {\n issueWarning(\n 'no-override-get-property-descriptor',\n 'Overriding ReactiveElement.getPropertyDescriptor() is deprecated. ' +\n 'The override will not be called with standard decorators'\n );\n }\n }\n }\n\n /**\n * Options used when calling `attachShadow`. Set this property to customize\n * the options for the shadowRoot; for example, to create a closed\n * shadowRoot: `{mode: 'closed'}`.\n *\n * Note, these options are used in `createRenderRoot`. If this method\n * is customized, options should be respected if possible.\n * @nocollapse\n * @category rendering\n */\n static shadowRootOptions: ShadowRootInit = {mode: 'open'};\n\n /**\n * Takes the styles the user supplied via the `static styles` property and\n * returns the array of styles to apply to the element.\n * Override this method to integrate into a style management system.\n *\n * Styles are deduplicated preserving the _last_ instance in the list. This\n * is a performance optimization to avoid duplicated styles that can occur\n * especially when composing via subclassing. The last item is kept to try\n * to preserve the cascade order with the assumption that it's most important\n * that last added styles override previous styles.\n *\n * @nocollapse\n * @category styles\n */\n protected static finalizeStyles(\n styles?: CSSResultGroup\n ): Array<CSSResultOrNative> {\n const elementStyles = [];\n if (Array.isArray(styles)) {\n // Dedupe the flattened array in reverse order to preserve the last items.\n // Casting to Array<unknown> works around TS error that\n // appears to come from trying to flatten a type CSSResultArray.\n const set = new Set((styles as Array<unknown>).flat(Infinity).reverse());\n // Then preserve original order by adding the set items in reverse order.\n for (const s of set) {\n elementStyles.unshift(getCompatibleStyle(s as CSSResultOrNative));\n }\n } else if (styles !== undefined) {\n elementStyles.push(getCompatibleStyle(styles));\n }\n return elementStyles;\n }\n\n /**\n * Node or ShadowRoot into which element DOM should be rendered. Defaults\n * to an open shadowRoot.\n * @category rendering\n */\n readonly renderRoot!: HTMLElement | DocumentFragment;\n\n /**\n * Returns the property name for the given attribute `name`.\n * @nocollapse\n */\n private static __attributeNameForProperty(\n name: PropertyKey,\n options: PropertyDeclaration\n ) {\n const attribute = options.attribute;\n return attribute === false\n ? undefined\n : typeof attribute === 'string'\n ? attribute\n : typeof name === 'string'\n ? name.toLowerCase()\n : undefined;\n }\n\n // Initialize to an unresolved Promise so we can make sure the element has\n // connected before first update.\n private __updatePromise!: Promise<boolean>;\n\n /**\n * True if there is a pending update as a result of calling `requestUpdate()`.\n * Should only be read.\n * @category updates\n */\n isUpdatePending = false;\n\n /**\n * Is set to `true` after the first update. The element code cannot assume\n * that `renderRoot` exists before the element `hasUpdated`.\n * @category updates\n */\n hasUpdated = false;\n\n /**\n * Map with keys for any properties that have changed since the last\n * update cycle with previous values.\n *\n * @internal\n */\n _$changedProperties!: PropertyValues;\n\n /**\n * Records property default values when the\n * `useDefault` option is used.\n */\n private __defaultValues?: Map<PropertyKey, unknown>;\n\n /**\n * Properties that should be reflected when updated.\n */\n private __reflectingProperties?: Set<PropertyKey>;\n\n /**\n * Name of currently reflecting property\n */\n private __reflectingProperty: PropertyKey | null = null;\n\n /**\n * Set of controllers.\n */\n private __controllers?: Set<ReactiveController>;\n\n constructor() {\n super();\n this.__initialize();\n }\n\n /**\n * Internal only override point for customizing work done when elements\n * are constructed.\n */\n private __initialize() {\n this.__updatePromise = new Promise<boolean>(\n (res) => (this.enableUpdating = res)\n );\n this._$changedProperties = new Map();\n // This enqueues a microtask that must run before the first update, so it\n // must be called before requestUpdate()\n this.__saveInstanceProperties();\n // ensures first update will be caught by an early access of\n // `updateComplete`\n this.requestUpdate();\n (this.constructor as typeof ReactiveElement)._initializers?.forEach((i) =>\n i(this)\n );\n }\n\n /**\n * Registers a `ReactiveController` to participate in the element's reactive\n * update cycle. The element automatically calls into any registered\n * controllers during its lifecycle callbacks.\n *\n * If the element is connected when `addController()` is called, the\n * controller's `hostConnected()` callback will be immediately called.\n * @category controllers\n */\n addController(controller: ReactiveController) {\n (this.__controllers ??= new Set()).add(controller);\n // If a controller is added after the element has been connected,\n // call hostConnected. Note, re-using existence of `renderRoot` here\n // (which is set in connectedCallback) to avoid the need to track a\n // first connected state.\n if (this.renderRoot !== undefined && this.isConnected) {\n controller.hostConnected?.();\n }\n }\n\n /**\n * Removes a `ReactiveController` from the element.\n * @category controllers\n */\n removeController(controller: ReactiveController) {\n this.__controllers?.delete(controller);\n }\n\n /**\n * Fixes any properties set on the instance before upgrade time.\n * Otherwise these would shadow the accessor and break these properties.\n * The properties are stored in a Map which is played back after the\n * constructor runs.\n */\n private __saveInstanceProperties() {\n const instanceProperties = new Map<PropertyKey, unknown>();\n const elementProperties = (this.constructor as typeof ReactiveElement)\n .elementProperties;\n for (const p of elementProperties.keys() as IterableIterator<keyof this>) {\n if (this.hasOwnProperty(p)) {\n instanceProperties.set(p, this[p]);\n delete this[p];\n }\n }\n if (instanceProperties.size > 0) {\n this.__instanceProperties = instanceProperties;\n }\n }\n\n /**\n * Returns the node into which the element should render and by default\n * creates and returns an open shadowRoot. Implement to customize where the\n * element's DOM is rendered. For example, to render into the element's\n * childNodes, return `this`.\n *\n * @return Returns a node into which to render.\n * @category rendering\n */\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n const renderRoot =\n this.shadowRoot ??\n this.attachShadow(\n (this.constructor as typeof ReactiveElement).shadowRootOptions\n );\n adoptStyles(\n renderRoot,\n (this.constructor as typeof ReactiveElement).elementStyles\n );\n return renderRoot;\n }\n\n /**\n * On first connection, creates the element's renderRoot, sets up\n * element styling, and enables updating.\n * @category lifecycle\n */\n connectedCallback() {\n // Create renderRoot before controllers `hostConnected`\n (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n this.createRenderRoot();\n this.enableUpdating(true);\n this.__controllers?.forEach((c) => c.hostConnected?.());\n }\n\n /**\n * Note, this method should be considered final and not overridden. It is\n * overridden on the element instance with a function that triggers the first\n * update.\n * @category updates\n */\n protected enableUpdating(_requestedUpdate: boolean) {}\n\n /**\n * Allows for `super.disconnectedCallback()` in extensions while\n * reserving the possibility of making non-breaking feature additions\n * when disconnecting at some point in the future.\n * @category lifecycle\n */\n disconnectedCallback() {\n this.__controllers?.forEach((c) => c.hostDisconnected?.());\n }\n\n /**\n * Synchronizes property values when attributes change.\n *\n * Specifically, when an attribute is set, the corresponding property is set.\n * You should rarely need to implement this callback. If this method is\n * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n * called.\n *\n * See [responding to attribute changes](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#responding_to_attribute_changes)\n * on MDN for more information about the `attributeChangedCallback`.\n * @category attributes\n */\n attributeChangedCallback(\n name: string,\n _old: string | null,\n value: string | null\n ) {\n this._$attributeToProperty(name, value);\n }\n\n private __propertyToAttribute(name: PropertyKey, value: unknown) {\n const elemProperties: PropertyDeclarationMap = (\n this.constructor as typeof ReactiveElement\n ).elementProperties;\n const options = elemProperties.get(name)!;\n const attr = (\n this.constructor as typeof ReactiveElement\n ).__attributeNameForProperty(name, options);\n if (attr !== undefined && options.reflect === true) {\n const converter =\n (options.converter as ComplexAttributeConverter)?.toAttribute !==\n undefined\n ? (options.converter as ComplexAttributeConverter)\n : defaultConverter;\n const attrValue = converter.toAttribute!(value, options.type);\n if (\n DEV_MODE &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n 'migration'\n ) &&\n attrValue === undefined\n ) {\n issueWarning(\n 'undefined-attribute-value',\n `The attribute value for the ${name as string} property is ` +\n `undefined on element ${this.localName}. The attribute will be ` +\n `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n `the attribute would not have changed.`\n );\n }\n // Track if the property is being reflected to avoid\n // setting the property again via `attributeChangedCallback`. Note:\n // 1. this takes advantage of the fact that the callback is synchronous.\n // 2. will behave incorrectly if multiple attributes are in the reaction\n // stack at time of calling. However, since we process attributes\n // in `update` this should not be possible (or an extreme corner case\n // that we'd like to discover).\n // mark state reflecting\n this.__reflectingProperty = name;\n if (attrValue == null) {\n this.removeAttribute(attr);\n } else {\n this.setAttribute(attr, attrValue as string);\n }\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n\n /** @internal */\n _$attributeToProperty(name: string, value: string | null) {\n const ctor = this.constructor as typeof ReactiveElement;\n // Note, hint this as an `AttributeMap` so closure clearly understands\n // the type; it has issues with tracking types through statics\n const propName = (ctor.__attributeToPropertyMap as AttributeMap).get(name);\n // Use tracking info to avoid reflecting a property value to an attribute\n // if it was just set because the attribute changed.\n if (propName !== undefined && this.__reflectingProperty !== propName) {\n const options = ctor.getPropertyOptions(propName);\n const converter =\n typeof options.converter === 'function'\n ? {fromAttribute: options.converter}\n : options.converter?.fromAttribute !== undefined\n ? options.converter\n : defaultConverter;\n // mark state reflecting\n this.__reflectingProperty = propName;\n this[propName as keyof this] =\n converter.fromAttribute!(value, options.type) ??\n this.__defaultValues?.get(propName) ??\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (null as any);\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n\n /**\n * Requests an update which is processed asynchronously. This should be called\n * when an element should update based on some state not triggered by setting\n * a reactive property. In this case, pass no arguments. It should also be\n * called when manually implementing a property setter. In this case, pass the\n * property `name` and `oldValue` to ensure that any configured property\n * options are honored.\n *\n * @param name name of requesting property\n * @param oldValue old value of requesting property\n * @param options property options to use instead of the previously\n * configured options\n * @category updates\n */\n requestUpdate(\n name?: PropertyKey,\n oldValue?: unknown,\n options?: PropertyDeclaration\n ): void {\n // If we have a property key, perform property update steps.\n if (name !== undefined) {\n if (DEV_MODE && (name as unknown) instanceof Event) {\n issueWarning(\n ``,\n `The requestUpdate() method was called with an Event as the property name. This is probably a mistake caused by binding this.requestUpdate as an event listener. Instead bind a function that will call it with no arguments: () => this.requestUpdate()`\n );\n }\n const ctor = this.constructor as typeof ReactiveElement;\n const newValue = this[name as keyof this];\n options ??= ctor.getPropertyOptions(name);\n const changed =\n (options.hasChanged ?? notEqual)(newValue, oldValue) ||\n // When there is no change, check a corner case that can occur when\n // 1. there's a initial value which was not reflected\n // 2. the property is subsequently set to this value.\n // For example, `prop: {useDefault: true, reflect: true}`\n // and el.prop = 'foo'. This should be considered a change if the\n // attribute is not set because we will now reflect the property to the attribute.\n (options.useDefault &&\n options.reflect &&\n newValue === this.__defaultValues?.get(name) &&\n !this.hasAttribute(ctor.__attributeNameForProperty(name, options)!));\n if (changed) {\n this._$changeProperty(name, oldValue, options);\n } else {\n // Abort the request if the property should not be considered changed.\n return;\n }\n }\n if (this.isUpdatePending === false) {\n this.__updatePromise = this.__enqueueUpdate();\n }\n }\n\n /**\n * @internal\n */\n _$changeProperty(\n name: PropertyKey,\n oldValue: unknown,\n {useDefault, reflect, wrapped}: PropertyDeclaration,\n initializeValue?: unknown\n ) {\n // Record default value when useDefault is used. This allows us to\n // restore this value when the attribute is removed.\n if (useDefault && !(this.__defaultValues ??= new Map()).has(name)) {\n this.__defaultValues.set(\n name,\n initializeValue ?? oldValue ?? this[name as keyof this]\n );\n // if this is not wrapping an accessor, it must be an initial setting\n // and in this case we do not want to record the change or reflect.\n if (wrapped !== true || initializeValue !== undefined) {\n return;\n }\n }\n // TODO (justinfagnani): Create a benchmark of Map.has() + Map.set(\n // vs just Map.set()\n if (!this._$changedProperties.has(name)) {\n // On the initial change, the old value should be `undefined`, except\n // with `useDefault`\n if (!this.hasUpdated && !useDefault) {\n oldValue = undefined;\n }\n this._$changedProperties.set(name, oldValue);\n }\n // Add to reflecting properties set.\n // Note, it's important that every change has a chance to add the\n // property to `__reflectingProperties`. This ensures setting\n // attribute + property reflects correctly.\n if (reflect === true && this.__reflectingProperty !== name) {\n (this.__reflectingProperties ??= new Set<PropertyKey>()).add(name);\n }\n }\n\n /**\n * Sets up the element to asynchronously update.\n */\n private async __enqueueUpdate() {\n this.isUpdatePending = true;\n try {\n // Ensure any previous update has resolved before updating.\n // This `await` also ensures that property changes are batched.\n await this.__updatePromise;\n } catch (e) {\n // Refire any previous errors async so they do not disrupt the update\n // cycle. Errors are refired so developers have a chance to observe\n // them, and this can be done by implementing\n // `window.onunhandledrejection`.\n Promise.reject(e);\n }\n const result = this.scheduleUpdate();\n // If `scheduleUpdate` returns a Promise, we await it. This is done to\n // enable coordinating updates with a scheduler. Note, the result is\n // checked to avoid delaying an additional microtask unless we need to.\n if (result != null) {\n await result;\n }\n return !this.isUpdatePending;\n }\n\n /**\n * Schedules an element update. You can override this method to change the\n * timing of updates by returning a Promise. The update will await the\n * returned Promise, and you should resolve the Promise to allow the update\n * to proceed. If this method is overridden, `super.scheduleUpdate()`\n * must be called.\n *\n * For instance, to schedule updates to occur just before the next frame:\n *\n * ```ts\n * override protected async scheduleUpdate(): Promise<unknown> {\n * await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n * super.scheduleUpdate();\n * }\n * ```\n * @category updates\n */\n protected scheduleUpdate(): void | Promise<unknown> {\n const result = this.performUpdate();\n if (\n DEV_MODE &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n 'async-perform-update'\n ) &&\n typeof (result as unknown as Promise<unknown> | undefined)?.then ===\n 'function'\n ) {\n issueWarning(\n 'async-perform-update',\n `Element ${this.localName} returned a Promise from performUpdate(). ` +\n `This behavior is deprecated and will be removed in a future ` +\n `version of ReactiveElement.`\n );\n }\n return result;\n }\n\n /**\n * Performs an element update. Note, if an exception is thrown during the\n * update, `firstUpdated` and `updated` will not be called.\n *\n * Call `performUpdate()` to immediately process a pending update. This should\n * generally not be needed, but it can be done in rare cases when you need to\n * update synchronously.\n *\n * @category updates\n */\n protected performUpdate(): void {\n // Abort any update if one is not pending when this is called.\n // This can happen if `performUpdate` is called early to \"flush\"\n // the update.\n if (!this.isUpdatePending) {\n return;\n }\n debugLogEvent?.({kind: 'update'});\n if (!this.hasUpdated) {\n // Create renderRoot before first update. This occurs in `connectedCallback`\n // but is done here to support out of tree calls to `enableUpdating`/`performUpdate`.\n (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n this.createRenderRoot();\n if (DEV_MODE) {\n // Produce warning if any reactive properties on the prototype are\n // shadowed by class fields. Instance fields set before upgrade are\n // deleted by this point, so any own property is caused by class field\n // initialization in the constructor.\n const ctor = this.constructor as typeof ReactiveElement;\n const shadowedProperties = [...ctor.elementProperties.keys()].filter(\n (p) => this.hasOwnProperty(p) && p in getPrototypeOf(this)\n );\n if (shadowedProperties.length) {\n throw new Error(\n `The following properties on element ${this.localName} will not ` +\n `trigger updates as expected because they are set using class ` +\n `fields: ${shadowedProperties.join(', ')}. ` +\n `Native class fields and some compiled output will overwrite ` +\n `accessors used for detecting changes. See ` +\n `https://lit.dev/msg/class-field-shadowing ` +\n `for more information.`\n );\n }\n }\n // Mixin instance properties once, if they exist.\n if (this.__instanceProperties) {\n // TODO (justinfagnani): should we use the stored value? Could a new value\n // have been set since we stored the own property value?\n for (const [p, value] of this.__instanceProperties) {\n this[p as keyof this] = value as this[keyof this];\n }\n this.__instanceProperties = undefined;\n }\n // Trigger initial value reflection and populate the initial\n // `changedProperties` map, but only for the case of properties created\n // via `createProperty` on accessors, which will not have already\n // populated the `changedProperties` map since they are not set.\n // We can't know if these accessors had initializers, so we just set\n // them anyway - a difference from experimental decorators on fields and\n // standard decorators on auto-accessors.\n // For context see:\n // https://github.com/lit/lit/pull/4183#issuecomment-1711959635\n const elementProperties = (this.constructor as typeof ReactiveElement)\n .elementProperties;\n if (elementProperties.size > 0) {\n for (const [p, options] of elementProperties) {\n const {wrapped} = options;\n const value = this[p as keyof this];\n if (\n wrapped === true &&\n !this._$changedProperties.has(p) &&\n value !== undefined\n ) {\n this._$changeProperty(p, undefined, options, value);\n }\n }\n }\n }\n let shouldUpdate = false;\n const changedProperties = this._$changedProperties;\n try {\n shouldUpdate = this.shouldUpdate(changedProperties);\n if (shouldUpdate) {\n this.willUpdate(changedProperties);\n this.__controllers?.forEach((c) => c.hostUpdate?.());\n this.update(changedProperties);\n } else {\n this.__markUpdated();\n }\n } catch (e) {\n // Prevent `firstUpdated` and `updated` from running when there's an\n // update exception.\n shouldUpdate = false;\n // Ensure element can accept additional updates after an exception.\n this.__markUpdated();\n throw e;\n }\n // The update is no longer considered pending and further updates are now allowed.\n if (shouldUpdate) {\n this._$didUpdate(changedProperties);\n }\n }\n\n /**\n * Invoked before `update()` to compute values needed during the update.\n *\n * Implement `willUpdate` to compute property values that depend on other\n * properties and are used in the rest of the update process.\n *\n * ```ts\n * willUpdate(changedProperties) {\n * // only need to check changed properties for an expensive computation.\n * if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n * this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n * }\n * }\n *\n * render() {\n * return html`SHA: ${this.sha}`;\n * }\n * ```\n *\n * @category updates\n */\n protected willUpdate(_changedProperties: PropertyValues): void {}\n\n // Note, this is an override point for polyfill-support.\n // @internal\n _$didUpdate(changedProperties: PropertyValues) {\n this.__controllers?.forEach((c) => c.hostUpdated?.());\n if (!this.hasUpdated) {\n this.hasUpdated = true;\n this.firstUpdated(changedProperties);\n }\n this.updated(changedProperties);\n if (\n DEV_MODE &&\n this.isUpdatePending &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n 'change-in-update'\n )\n ) {\n issueWarning(\n 'change-in-update',\n `Element ${this.localName} scheduled an update ` +\n `(generally because a property was set) ` +\n `after an update completed, causing a new update to be scheduled. ` +\n `This is inefficient and should be avoided unless the next update ` +\n `can only be scheduled as a side effect of the previous update.`\n );\n }\n }\n\n private __markUpdated() {\n this._$changedProperties = new Map();\n this.isUpdatePending = false;\n }\n\n /**\n * Returns a Promise that resolves when the element has completed updating.\n * The Promise value is a boolean that is `true` if the element completed the\n * update without triggering another update. The Promise result is `false` if\n * a property was set inside `updated()`. If the Promise is rejected, an\n * exception was thrown during the update.\n *\n * To await additional asynchronous work, override the `getUpdateComplete`\n * method. For example, it is sometimes useful to await a rendered element\n * before fulfilling this Promise. To do this, first await\n * `super.getUpdateComplete()`, then any subsequent state.\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n get updateComplete(): Promise<boolean> {\n return this.getUpdateComplete();\n }\n\n /**\n * Override point for the `updateComplete` promise.\n *\n * It is not safe to override the `updateComplete` getter directly due to a\n * limitation in TypeScript which means it is not possible to call a\n * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n * This method should be overridden instead. For example:\n *\n * ```ts\n * class MyElement extends LitElement {\n * override async getUpdateComplete() {\n * const result = await super.getUpdateComplete();\n * await this._myChild.updateComplete;\n * return result;\n * }\n * }\n * ```\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n protected getUpdateComplete(): Promise<boolean> {\n return this.__updatePromise;\n }\n\n /**\n * Controls whether or not `update()` should be called when the element requests\n * an update. By default, this method always returns `true`, but this can be\n * customized to control when to update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n return true;\n }\n\n /**\n * Updates the element. This method reflects property values to attributes.\n * It can be overridden to render and keep updated element DOM.\n * Setting properties inside this method will *not* trigger\n * another update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected update(_changedProperties: PropertyValues) {\n // The forEach() expression will only run when __reflectingProperties is\n // defined, and it returns undefined, setting __reflectingProperties to\n // undefined\n this.__reflectingProperties &&= this.__reflectingProperties.forEach((p) =>\n this.__propertyToAttribute(p, this[p as keyof this])\n ) as undefined;\n this.__markUpdated();\n }\n\n /**\n * Invoked whenever the element is updated. Implement to perform\n * post-updating tasks via DOM APIs, for example, focusing an element.\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected updated(_changedProperties: PropertyValues) {}\n\n /**\n * Invoked when the element is first updated. Implement to perform one time\n * work on the element after update.\n *\n * ```ts\n * firstUpdated() {\n * this.renderRoot.getElementById('my-text-area').focus();\n * }\n * ```\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected firstUpdated(_changedProperties: PropertyValues) {}\n}\n// Assigned here to work around a jscompiler bug with static fields\n// when compiling to ES5.\n// https://github.com/google/closure-compiler/issues/3177\n(ReactiveElement as unknown as Record<string, unknown>)[\n JSCompiler_renameProperty('elementProperties', ReactiveElement)\n] = new Map();\n(ReactiveElement as unknown as Record<string, unknown>)[\n JSCompiler_renameProperty('finalized', ReactiveElement)\n] = new Map();\n\n// Apply polyfills if available\npolyfillSupport?.({ReactiveElement});\n\n// Dev mode warnings...\nif (DEV_MODE) {\n // Default warning set.\n ReactiveElement.enabledWarnings = [\n 'change-in-update',\n 'async-perform-update',\n ];\n const ensureOwnWarnings = function (ctor: typeof ReactiveElement) {\n if (\n !ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))\n ) {\n ctor.enabledWarnings = ctor.enabledWarnings!.slice();\n }\n };\n ReactiveElement.enableWarning = function (\n this: typeof ReactiveElement,\n warning: WarningKind\n ) {\n ensureOwnWarnings(this);\n if (!this.enabledWarnings!.includes(warning)) {\n this.enabledWarnings!.push(warning);\n }\n };\n ReactiveElement.disableWarning = function (\n this: typeof ReactiveElement,\n warning: WarningKind\n ) {\n ensureOwnWarnings(this);\n const i = this.enabledWarnings!.indexOf(warning);\n if (i >= 0) {\n this.enabledWarnings!.splice(i, 1);\n }\n };\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n(global.reactiveElementVersions ??= []).push('2.1.0');\nif (DEV_MODE && global.reactiveElementVersions.length > 1) {\n queueMicrotask(() => {\n issueWarning!(\n 'multiple-versions',\n `Multiple versions of Lit loaded. Loading multiple versions ` +\n `is not recommended.`\n );\n });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// IMPORTANT: these imports must be type-only\nimport type {Directive, DirectiveResult, PartInfo} from './directive.js';\nimport type {TrustedHTML, TrustedTypesWindow} from 'trusted-types/lib/index.js';\n\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LitUnstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry =\n | TemplatePrep\n | TemplateInstantiated\n | TemplateInstantiatedAndUpdated\n | TemplateUpdating\n | BeginRender\n | EndRender\n | CommitPartEntry\n | SetPartValue;\n export interface TemplatePrep {\n kind: 'template prep';\n template: Template;\n strings: TemplateStringsArray;\n clonableTemplate: HTMLTemplateElement;\n parts: TemplatePart[];\n }\n export interface BeginRender {\n kind: 'begin render';\n id: number;\n value: unknown;\n container: HTMLElement | DocumentFragment;\n options: RenderOptions | undefined;\n part: ChildPart | undefined;\n }\n export interface EndRender {\n kind: 'end render';\n id: number;\n value: unknown;\n container: HTMLElement | DocumentFragment;\n options: RenderOptions | undefined;\n part: ChildPart;\n }\n export interface TemplateInstantiated {\n kind: 'template instantiated';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n fragment: Node;\n parts: Array<Part | undefined>;\n values: unknown[];\n }\n export interface TemplateInstantiatedAndUpdated {\n kind: 'template instantiated and updated';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n fragment: Node;\n parts: Array<Part | undefined>;\n values: unknown[];\n }\n export interface TemplateUpdating {\n kind: 'template updating';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n parts: Array<Part | undefined>;\n values: unknown[];\n }\n export interface SetPartValue {\n kind: 'set part';\n part: Part;\n value: unknown;\n valueIndex: number;\n values: unknown[];\n templateInstance: TemplateInstance;\n }\n\n export type CommitPartEntry =\n | CommitNothingToChildEntry\n | CommitText\n | CommitNode\n | CommitAttribute\n | CommitProperty\n | CommitBooleanAttribute\n | CommitEventListener\n | CommitToElementBinding;\n\n export interface CommitNothingToChildEntry {\n kind: 'commit nothing to child';\n start: ChildNode;\n end: ChildNode | null;\n parent: Disconnectable | undefined;\n options: RenderOptions | undefined;\n }\n\n export interface CommitText {\n kind: 'commit text';\n node: Text;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitNode {\n kind: 'commit node';\n start: Node;\n parent: Disconnectable | undefined;\n value: Node;\n options: RenderOptions | undefined;\n }\n\n export interface CommitAttribute {\n kind: 'commit attribute';\n element: Element;\n name: string;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitProperty {\n kind: 'commit property';\n element: Element;\n name: string;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitBooleanAttribute {\n kind: 'commit boolean attribute';\n element: Element;\n name: string;\n value: boolean;\n options: RenderOptions | undefined;\n }\n\n export interface CommitEventListener {\n kind: 'commit event listener';\n element: Element;\n name: string;\n value: unknown;\n oldListener: unknown;\n options: RenderOptions | undefined;\n // True if we're removing the old event listener (e.g. because settings changed, or value is nothing)\n removeListener: boolean;\n // True if we're adding a new event listener (e.g. because first render, or settings changed)\n addListener: boolean;\n }\n\n export interface CommitToElementBinding {\n kind: 'commit to element binding';\n element: Element;\n value: unknown;\n options: RenderOptions | undefined;\n }\n }\n}\n\ninterface DebugLoggingWindow {\n // Even in dev mode, we generally don't want to emit these events, as that's\n // another level of cost, so only emit them when DEV_MODE is true _and_ when\n // window.emitLitDebugEvents is true.\n emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n ? (event: LitUnstable.DebugLog.Entry) => {\n const shouldEmit = (global as unknown as DebugLoggingWindow)\n .emitLitDebugLogEvents;\n if (!shouldEmit) {\n return;\n }\n global.dispatchEvent(\n new CustomEvent<LitUnstable.DebugLog.Entry>('lit-debug', {\n detail: event,\n })\n );\n }\n : undefined;\n// Used for connecting beginRender and endRender events when there are nested\n// renders when errors are thrown preventing an endRender event from being\n// called.\nlet debugLogRenderId = 0;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n global.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += code\n ? ` See https://lit.dev/msg/${code} for more information.`\n : '';\n if (\n !global.litIssuedWarnings!.has(warning) &&\n !global.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n global.litIssuedWarnings!.add(warning);\n }\n };\n\n queueMicrotask(() => {\n issueWarning(\n 'dev-mode',\n `Lit is in dev mode. Not recommended for production!`\n );\n });\n}\n\nconst wrap =\n ENABLE_SHADYDOM_NOPATCH &&\n global.ShadyDOM?.inUse &&\n global.ShadyDOM?.noPatch === true\n ? (global.ShadyDOM!.wrap as <T extends Node>(node: T) => T)\n : <T extends Node>(node: T) => node;\n\nconst trustedTypes = (global as unknown as TrustedTypesWindow).trustedTypes;\n\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n ? trustedTypes.createPolicy('lit-html', {\n createHTML: (s) => s,\n })\n : undefined;\n\n/**\n * Used to sanitize any value before it is written into the DOM. This can be\n * used to implement a security policy of allowed and disallowed values in\n * order to prevent XSS attacks.\n *\n * One way of using this callback would be to check attributes and properties\n * against a list of high risk fields, and require that values written to such\n * fields be instances of a class which is safe by construction. Closure's Safe\n * HTML Types is one implementation of this technique (\n * https://github.com/google/safe-html-types/blob/master/doc/safehtml-types.md).\n * The TrustedTypes polyfill in API-only mode could also be used as a basis\n * for this technique (https://github.com/WICG/trusted-types).\n *\n * @param node The HTML node (usually either a #text node or an Element) that\n * is being written to. Note that this is just an exemplar node, the write\n * may take place against another instance of the same class of node.\n * @param name The name of an attribute or property (for example, 'href').\n * @param type Indicates whether the write that's about to be performed will\n * be to a property or a node.\n * @return A function that will sanitize this class of writes.\n */\nexport type SanitizerFactory = (\n node: Node,\n name: string,\n type: 'property' | 'attribute'\n) => ValueSanitizer;\n\n/**\n * A function which can sanitize values that will be written to a specific kind\n * of DOM sink.\n *\n * See SanitizerFactory.\n *\n * @param value The value to sanitize. Will be the actual value passed into\n * the lit-html template literal, so this could be of any type.\n * @return The value to write to the DOM. Usually the same as the input value,\n * unless sanitization is needed.\n */\nexport type ValueSanitizer = (value: unknown) => unknown;\n\nconst identityFunction: ValueSanitizer = (value: unknown) => value;\nconst noopSanitizer: SanitizerFactory = (\n _node: Node,\n _name: string,\n _type: 'property' | 'attribute'\n) => identityFunction;\n\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer: SanitizerFactory) => {\n if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n return;\n }\n if (sanitizerFactoryInternal !== noopSanitizer) {\n throw new Error(\n `Attempted to overwrite existing lit-html security policy.` +\n ` setSanitizeDOMValueFactory should be called at most once.`\n );\n }\n sanitizerFactoryInternal = newSanitizer;\n};\n\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n sanitizerFactoryInternal = noopSanitizer;\n};\n\nconst createSanitizer: SanitizerFactory = (node, name, type) => {\n return sanitizerFactoryInternal(node, name, type);\n};\n\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${Math.random().toFixed(9).slice(2)}$`;\n\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\n\nconst d =\n NODE_MODE && global.document === undefined\n ? ({\n createTreeWalker() {\n return {};\n },\n } as unknown as Document)\n : document;\n\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = () => d.createComment('');\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\nconst isPrimitive = (value: unknown): value is Primitive =>\n value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n isArray(value) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (value as any)?.[Symbol.iterator] === 'function';\n\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n\n/**\n * End of text is: `<` followed by:\n * (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\n\nconst commentEndRegex = /-->/g;\n/**\n * Comments not started with <!--, like </{, can be ended by a single `>`\n */\nconst comment2EndRegex = />/g;\n\n/**\n * The tagEnd regex matches the end of the \"inside an opening\" tag syntax\n * position. It either matches a `>`, an attribute-like sequence, or the end\n * of the string after a space (attribute-name position ending).\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\t\\n\\f\\r\" are HTML space characters:\n * https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * So an attribute is:\n * * The name: any character except a whitespace character, (\"), ('), \">\",\n * \"=\", or \"/\". Note: this is different from the HTML spec which also excludes control characters.\n * * Followed by zero or more space characters\n * * Followed by \"=\"\n * * Followed by zero or more space characters\n * * Followed by:\n * * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n * * (\") then any non-(\"), or\n * * (') then any non-(')\n */\nconst tagEndRegex = new RegExp(\n `>|${SPACE_CHAR}(?:(${NAME_CHAR}+)(${SPACE_CHAR}*=${SPACE_CHAR}*(?:${ATTR_VALUE_CHAR}|(\"|')|))|$)`,\n 'g'\n);\nconst ENTIRE_MATCH = 0;\nconst ATTRIBUTE_NAME = 1;\nconst SPACES_AND_EQUALS = 2;\nconst QUOTE_CHAR = 3;\n\nconst singleQuoteAttrEndRegex = /'/g;\nconst doubleQuoteAttrEndRegex = /\"/g;\n/**\n * Matches the raw text elements.\n *\n * Comments are not parsed within raw text elements, so we need to search their\n * text content for marker strings.\n */\nconst rawTextElement = /^(?:script|style|textarea|title)$/i;\n\n/** TemplateResult types */\nconst HTML_RESULT = 1;\nconst SVG_RESULT = 2;\nconst MATHML_RESULT = 3;\n\ntype ResultType = typeof HTML_RESULT | typeof SVG_RESULT | typeof MATHML_RESULT;\n\n// TemplatePart types\n// IMPORTANT: these must match the values in PartType\nconst ATTRIBUTE_PART = 1;\nconst CHILD_PART = 2;\nconst PROPERTY_PART = 3;\nconst BOOLEAN_ATTRIBUTE_PART = 4;\nconst EVENT_PART = 5;\nconst ELEMENT_PART = 6;\nconst COMMENT_PART = 7;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg} when it hasn't been compiled by @lit-labs/compiler.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n */\nexport type UncompiledTemplateResult<T extends ResultType = ResultType> = {\n // This property needs to remain unminified.\n ['_$litType$']: T;\n strings: TemplateStringsArray;\n values: unknown[];\n};\n\n/**\n * This is a template result that may be either uncompiled or compiled.\n *\n * In the future, TemplateResult will be this type. If you want to explicitly\n * note that a template result is potentially compiled, you can reference this\n * type and it will continue to behave the same through the next major version\n * of Lit. This can be useful for code that wants to prepare for the next\n * major version of Lit.\n */\nexport type MaybeCompiledTemplateResult<T extends ResultType = ResultType> =\n | UncompiledTemplateResult<T>\n | CompiledTemplateResult;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg}.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n * In Lit 4, this type will be an alias of\n * MaybeCompiledTemplateResult, so that code will get type errors if it assumes\n * that Lit templates are not compiled. When deliberately working with only\n * one, use either {@linkcode CompiledTemplateResult} or\n * {@linkcode UncompiledTemplateResult} explicitly.\n */\nexport type TemplateResult<T extends ResultType = ResultType> =\n UncompiledTemplateResult<T>;\n\nexport type HTMLTemplateResult = TemplateResult<typeof HTML_RESULT>;\n\nexport type SVGTemplateResult = TemplateResult<typeof SVG_RESULT>;\n\nexport type MathMLTemplateResult = TemplateResult<typeof MATHML_RESULT>;\n\n/**\n * A TemplateResult that has been compiled by @lit-labs/compiler, skipping the\n * prepare step.\n */\nexport interface CompiledTemplateResult {\n // This is a factory in order to make template initialization lazy\n // and allow ShadyRenderOptions scope to be passed in.\n // This property needs to remain unminified.\n ['_$litType$']: CompiledTemplate;\n values: unknown[];\n}\n\nexport interface CompiledTemplate extends Omit<Template, 'el'> {\n // el is overridden to be optional. We initialize it on first render\n el?: HTMLTemplateElement;\n\n // The prepared HTML string to create a template element from.\n // The type is a TemplateStringsArray to guarantee that the value came from\n // source code, preventing a JSON injection attack.\n h: TemplateStringsArray;\n}\n\n/**\n * Generates a template literal tag function that returns a TemplateResult with\n * the given result type.\n */\nconst tag =\n <T extends ResultType>(type: T) =>\n (strings: TemplateStringsArray, ...values: unknown[]): TemplateResult<T> => {\n // Warn against templates octal escape sequences\n // We do this here rather than in render so that the warning is closer to the\n // template definition.\n if (DEV_MODE && strings.some((s) => s === undefined)) {\n console.warn(\n 'Some template strings are undefined.\\n' +\n 'This is probably caused by illegal octal escape sequences.'\n );\n }\n if (DEV_MODE) {\n // Import static-html.js results in a circular dependency which g3 doesn't\n // handle. Instead we know that static values must have the field\n // `_$litStatic$`.\n if (\n values.some((val) => (val as {_$litStatic$: unknown})?.['_$litStatic$'])\n ) {\n issueWarning(\n '',\n `Static values 'literal' or 'unsafeStatic' cannot be used as values to non-static templates.\\n` +\n `Please use the static 'html' tag function. See https://lit.dev/docs/templates/expressions/#static-expressions`\n );\n }\n }\n return {\n // This property needs to remain unminified.\n ['_$litType$']: type,\n strings,\n values,\n };\n };\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n *\n * ```ts\n * const header = (title: string) => html`<h1>${title}</h1>`;\n * ```\n *\n * The `html` tag returns a description of the DOM to render as a value. It is\n * lazy, meaning no work is done until the template is rendered. When rendering,\n * if a template comes from the same expression as a previously rendered result,\n * it's efficiently updated instead of replaced.\n */\nexport const html = tag(HTML_RESULT);\n\n/**\n * Interprets a template literal as an SVG fragment that can efficiently render\n * to and update a container.\n *\n * ```ts\n * const rect = svg`<rect width=\"10\" height=\"10\"></rect>`;\n *\n * const myImage = html`\n * <svg viewBox=\"0 0 10 10\" xmlns=\"http://www.w3.org/2000/svg\">\n * ${rect}\n * </svg>`;\n * ```\n *\n * The `svg` *tag function* should only be used for SVG fragments, or elements\n * that would be contained **inside** an `<svg>` HTML element. A common error is\n * placing an `<svg>` *element* in a template tagged with the `svg` tag\n * function. The `<svg>` element is an HTML element and should be used within a\n * template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an SVG fragment from the\n * `render()` method, as the SVG fragment will be contained within the element's\n * shadow root and thus not be properly contained within an `<svg>` HTML\n * element.\n */\nexport const svg = tag(SVG_RESULT);\n\n/**\n * Interprets a template literal as MathML fragment that can efficiently render\n * to and update a container.\n *\n * ```ts\n * const num = mathml`<mn>1</mn>`;\n *\n * const eq = html`\n * <math>\n * ${num}\n * </math>`;\n * ```\n *\n * The `mathml` *tag function* should only be used for MathML fragments, or\n * elements that would be contained **inside** a `<math>` HTML element. A common\n * error is placing a `<math>` *element* in a template tagged with the `mathml`\n * tag function. The `<math>` element is an HTML element and should be used\n * within a template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an MathML fragment from the\n * `render()` method, as the MathML fragment will be contained within the\n * element's shadow root and thus not be properly contained within a `<math>`\n * HTML element.\n */\nexport const mathml = tag(MATHML_RESULT);\n\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = Symbol.for('lit-noChange');\n\n/**\n * A sentinel value that signals a ChildPart to fully clear its content.\n *\n * ```ts\n * const button = html`${\n * user.isAdmin\n * ? html`<button>DELETE</button>`\n * : nothing\n * }`;\n * ```\n *\n * Prefer using `nothing` over other falsy values as it provides a consistent\n * behavior between various expression binding contexts.\n *\n * In child expressions, `undefined`, `null`, `''`, and `nothing` all behave the\n * same and render no nodes. In attribute expressions, `nothing` _removes_ the\n * attribute, while `undefined` and `null` will render an empty string. In\n * property expressions `nothing` becomes `undefined`.\n */\nexport const nothing = Symbol.for('lit-nothing');\n\n/**\n * The cache of prepared templates, keyed by the tagged TemplateStringsArray\n * and _not_ accounting for the specific template tag used. This means that\n * template tags cannot be dynamic - they must statically be one of html, svg,\n * or attr. This restriction simplifies the cache lookup, which is on the hot\n * path for rendering.\n */\nconst templateCache = new WeakMap<TemplateStringsArray, Template>();\n\n/**\n * Object specifying options for controlling lit-html rendering. Note that\n * while `render` may be called multiple times on the same `container` (and\n * `renderBefore` reference node) to efficiently update the rendered content,\n * only the options passed in during the first render are respected during\n * the lifetime of renders to that unique `container` + `renderBefore`\n * combination.\n */\nexport interface RenderOptions {\n /**\n * An object to use as the `this` value for event listeners. It's often\n * useful to set this to the host component rendering a template.\n */\n host?: object;\n /**\n * A DOM node before which to render content in the container.\n */\n renderBefore?: ChildNode | null;\n /**\n * Node used for cloning the template (`importNode` will be called on this\n * node). This controls the `ownerDocument` of the rendered DOM, along with\n * any inherited context. Defaults to the global `document`.\n */\n creationScope?: {importNode(node: Node, deep?: boolean): Node};\n /**\n * The initial connected state for the top-level part being rendered. If no\n * `isConnected` option is set, `AsyncDirective`s will be connected by\n * default. Set to `false` if the initial render occurs in a disconnected tree\n * and `AsyncDirective`s should see `isConnected === false` for their initial\n * render. The `part.setConnected()` method must be used subsequent to initial\n * render to change the connected state of the part.\n */\n isConnected?: boolean;\n}\n\nconst walker = d.createTreeWalker(\n d,\n 129 /* NodeFilter.SHOW_{ELEMENT|COMMENT} */\n);\n\nlet sanitizerFactoryInternal: SanitizerFactory = noopSanitizer;\n\n//\n// Classes only below here, const variable declarations only above here...\n//\n// Keeping variable declarations and classes together improves minification.\n// Interfaces and type aliases can be interleaved freely.\n//\n\n// Type for classes that have a `_directive` or `_directives[]` field, used by\n// `resolveDirective`\nexport interface DirectiveParent {\n _$parent?: DirectiveParent;\n _$isConnected: boolean;\n __directive?: Directive;\n __directives?: Array<Directive | undefined>;\n}\n\nfunction trustFromTemplateString(\n tsa: TemplateStringsArray,\n stringFromTSA: string\n): TrustedHTML {\n // A security check to prevent spoofing of Lit template results.\n // In the future, we may be able to replace this with Array.isTemplateObject,\n // though we might need to make that check inside of the html and svg\n // functions, because precompiled templates don't come in as\n // TemplateStringArray objects.\n if (!isArray(tsa) || !tsa.hasOwnProperty('raw')) {\n let message = 'invalid template strings array';\n if (DEV_MODE) {\n message = `\n Internal Error: expected template strings to be an array\n with a 'raw' field. Faking a template strings array by\n calling html or svg like an ordinary function is effectively\n the same as calling unsafeHtml and can lead to major security\n issues, e.g. opening your code up to XSS attacks.\n If you're using the html or svg tagged template functions normally\n and still seeing this error, please file a bug at\n https://github.com/lit/lit/issues/new?template=bug_report.md\n and include information about your build tooling, if any.\n `\n .trim()\n .replace(/\\n */g, '\\n');\n }\n throw new Error(message);\n }\n return policy !== undefined\n ? policy.createHTML(stringFromTSA)\n : (stringFromTSA as unknown as TrustedHTML);\n}\n\n/**\n * Returns an HTML string for the given TemplateStringsArray and result type\n * (HTML or SVG), along with the case-sensitive bound attribute names in\n * template order. The HTML contains comment markers denoting the `ChildPart`s\n * and suffixes on bound attributes denoting the `AttributeParts`.\n *\n * @param strings template strings array\n * @param type HTML or SVG\n * @return Array containing `[html, attrNames]` (array returned for terseness,\n * to avoid object fields since this code is shared with non-minified SSR\n * code)\n */\nconst getTemplateHtml = (\n strings: TemplateStringsArray,\n type: ResultType\n): [TrustedHTML, Array<string>] => {\n // Insert makers into the template HTML to represent the position of\n // bindings. The following code scans the template strings to determine the\n // syntactic position of the bindings. They can be in text position, where\n // we insert an HTML comment, attribute value position, where we insert a\n // sentinel string and re-write the attribute name, or inside a tag where\n // we insert the sentinel string.\n const l = strings.length - 1;\n // Stores the case-sensitive bound attribute names in the order of their\n // parts. ElementParts are also reflected in this array as undefined\n // rather than a string, to disambiguate from attribute bindings.\n const attrNames: Array<string> = [];\n let html =\n type === SVG_RESULT ? '<svg>' : type === MATHML_RESULT ? '<math>' : '';\n\n // When we're inside a raw text tag (not it's text content), the regex\n // will still be tagRegex so we can find attributes, but will switch to\n // this regex when the tag ends.\n let rawTextEndRegex: RegExp | undefined;\n\n // The current parsing state, represented as a reference to one of the\n // regexes\n let regex = textEndRegex;\n\n for (let i = 0; i < l; i++) {\n const s = strings[i];\n // The index of the end of the last attribute name. When this is\n // positive at end of a string, it means we're in an attribute value\n // position and need to rewrite the attribute name.\n // We also use a special value of -2 to indicate that we encountered\n // the end of a string in attribute name position.\n let attrNameEndIndex = -1;\n let attrName: string | undefined;\n let lastIndex = 0;\n let match!: RegExpExecArray | null;\n\n // The conditions in this loop handle the current parse state, and the\n // assignments to the `regex` variable are the state transitions.\n while (lastIndex < s.length) {\n // Make sure we start searching from where we previously left off\n regex.lastIndex = lastIndex;\n match = regex.exec(s);\n if (match === null) {\n break;\n }\n lastIndex = regex.lastIndex;\n if (regex === textEndRegex) {\n if (match[COMMENT_START] === '!--') {\n regex = commentEndRegex;\n } else if (match[COMMENT_START] !== undefined) {\n // We started a weird comment, like </{\n regex = comment2EndRegex;\n } else if (match[TAG_NAME] !== undefined) {\n if (rawTextElement.test(match[TAG_NAME])) {\n // Record if we encounter a raw-text element. We'll switch to\n // this regex at the end of the tag.\n rawTextEndRegex = new RegExp(`</${match[TAG_NAME]}`, 'g');\n }\n regex = tagEndRegex;\n } else if (match[DYNAMIC_TAG_NAME] !== undefined) {\n if (DEV_MODE) {\n throw new Error(\n 'Bindings in tag names are not supported. Please use static templates instead. ' +\n 'See https://lit.dev/docs/templates/expressions/#static-expressions'\n );\n }\n regex = tagEndRegex;\n }\n } else if (regex === tagEndRegex) {\n if (match[ENTIRE_MATCH] === '>') {\n // End of a tag. If we had started a raw-text element, use that\n // regex\n regex = rawTextEndRegex ?? textEndRegex;\n // We may be ending an unquoted attribute value, so make sure we\n // clear any pending attrNameEndIndex\n attrNameEndIndex = -1;\n } else if (match[ATTRIBUTE_NAME] === undefined) {\n // Attribute name position\n attrNameEndIndex = -2;\n } else {\n attrNameEndIndex = regex.lastIndex - match[SPACES_AND_EQUALS].length;\n attrName = match[ATTRIBUTE_NAME];\n regex =\n match[QUOTE_CHAR] === undefined\n ? tagEndRegex\n : match[QUOTE_CHAR] === '\"'\n ? doubleQuoteAttrEndRegex\n : singleQuoteAttrEndRegex;\n }\n } else if (\n regex === doubleQuoteAttrEndRegex ||\n regex === singleQuoteAttrEndRegex\n ) {\n regex = tagEndRegex;\n } else if (regex === commentEndRegex || regex === comment2EndRegex) {\n regex = textEndRegex;\n } else {\n // Not one of the five state regexes, so it must be the dynamically\n // created raw text regex and we're at the close of that element.\n regex = tagEndRegex;\n rawTextEndRegex = undefined;\n }\n }\n\n if (DEV_MODE) {\n // If we have a attrNameEndIndex, which indicates that we should\n // rewrite the attribute name, assert that we're in a valid attribute\n // position - either in a tag, or a quoted attribute value.\n console.assert(\n attrNameEndIndex === -1 ||\n regex === tagEndRegex ||\n regex === singleQuoteAttrEndRegex ||\n regex === doubleQuoteAttrEndRegex,\n 'unexpected parse state B'\n );\n }\n\n // We have four cases:\n // 1. We're in text position, and not in a raw text element\n // (regex === textEndRegex): insert a comment marker.\n // 2. We have a non-negative attrNameEndIndex which means we need to\n // rewrite the attribute name to add a bound attribute suffix.\n // 3. We're at the non-first binding in a multi-binding attribute, use a\n // plain marker.\n // 4. We're somewhere else inside the tag. If we're in attribute name\n // position (attrNameEndIndex === -2), add a sequential suffix to\n // generate a unique attribute name.\n\n // Detect a binding next to self-closing tag end and insert a space to\n // separate the marker from the tag end:\n const end =\n regex === tagEndRegex && strings[i + 1].startsWith('/>') ? ' ' : '';\n html +=\n regex === textEndRegex\n ? s + nodeMarker\n : attrNameEndIndex >= 0\n ? (attrNames.push(attrName!),\n s.slice(0, attrNameEndIndex) +\n boundAttributeSuffix +\n s.slice(attrNameEndIndex)) +\n marker +\n end\n : s + marker + (attrNameEndIndex === -2 ? i : end);\n }\n\n const htmlResult: string | TrustedHTML =\n html +\n (strings[l] || '<?>') +\n (type === SVG_RESULT ? '</svg>' : type === MATHML_RESULT ? '</math>' : '');\n\n // Returned as an array for terseness\n return [trustFromTemplateString(strings, htmlResult), attrNames];\n};\n\n/** @internal */\nexport type {Template};\nclass Template {\n /** @internal */\n el!: HTMLTemplateElement;\n\n parts: Array<TemplatePart> = [];\n\n constructor(\n // This property needs to remain unminified.\n {strings, ['_$litType$']: type}: UncompiledTemplateResult,\n options?: RenderOptions\n ) {\n let node: Node | null;\n let nodeIndex = 0;\n let attrNameIndex = 0;\n const partCount = strings.length - 1;\n const parts = this.parts;\n\n // Create template element\n const [html, attrNames] = getTemplateHtml(strings, type);\n this.el = Template.createElement(html, options);\n walker.currentNode = this.el.content;\n\n // Re-parent SVG or MathML nodes into template root\n if (type === SVG_RESULT || type === MATHML_RESULT) {\n const wrapper = this.el.content.firstChild!;\n wrapper.replaceWith(...wrapper.childNodes);\n }\n\n // Walk the template to find binding markers and create TemplateParts\n while ((node = walker.nextNode()) !== null && parts.length < partCount) {\n if (node.nodeType === 1) {\n if (DEV_MODE) {\n const tag = (node as Element).localName;\n // Warn if `textarea` includes an expression and throw if `template`\n // does since these are not supported. We do this by checking\n // innerHTML for anything that looks like a marker. This catches\n // cases like bindings in textarea there markers turn into text nodes.\n if (\n /^(?:textarea|template)$/i!.test(tag) &&\n (node as Element).innerHTML.includes(marker)\n ) {\n const m =\n `Expressions are not supported inside \\`${tag}\\` ` +\n `elements. See https://lit.dev/msg/expression-in-${tag} for more ` +\n `information.`;\n if (tag === 'template') {\n throw new Error(m);\n } else issueWarning('', m);\n }\n }\n // TODO (justinfagnani): for attempted dynamic tag names, we don't\n // increment the bindingIndex, and it'll be off by 1 in the element\n // and off by two after it.\n if ((node as Element).hasAttributes()) {\n for (const name of (node as Element).getAttributeNames()) {\n if (name.endsWith(boundAttributeSuffix)) {\n const realName = attrNames[attrNameIndex++];\n const value = (node as Element).getAttribute(name)!;\n const statics = value.split(marker);\n const m = /([.?@])?(.*)/.exec(realName)!;\n parts.push({\n type: ATTRIBUTE_PART,\n index: nodeIndex,\n name: m[2],\n strings: statics,\n ctor:\n m[1] === '.'\n ? PropertyPart\n : m[1] === '?'\n ? BooleanAttributePart\n : m[1] === '@'\n ? EventPart\n : AttributePart,\n });\n (node as Element).removeAttribute(name);\n } else if (name.startsWith(marker)) {\n parts.push({\n type: ELEMENT_PART,\n index: nodeIndex,\n });\n (node as Element).removeAttribute(name);\n }\n }\n }\n // TODO (justinfagnani): benchmark the regex against testing for each\n // of the 3 raw text element names.\n if (rawTextElement.test((node as Element).tagName)) {\n // For raw text elements we need to split the text content on\n // markers, create a Text node for each segment, and create\n // a TemplatePart for each marker.\n const strings = (node as Element).textContent!.split(marker);\n const lastIndex = strings.length - 1;\n if (lastIndex > 0) {\n (node as Element).textContent = trustedTypes\n ? (trustedTypes.emptyScript as unknown as '')\n : '';\n // Generate a new text node for each literal section\n // These nodes are also used as the markers for child parts\n for (let i = 0; i < lastIndex; i++) {\n (node as Element).append(strings[i], createMarker());\n // Walk past the marker node we just added\n walker.nextNode();\n parts.push({type: CHILD_PART, index: ++nodeIndex});\n }\n // Note because this marker is added after the walker's current\n // node, it will be walked to in the outer loop (and ignored), so\n // we don't need to adjust nodeIndex here\n (node as Element).append(strings[lastIndex], createMarker());\n }\n }\n } else if (node.nodeType === 8) {\n const data = (node as Comment).data;\n if (data === markerMatch) {\n parts.push({type: CHILD_PART, index: nodeIndex});\n } else {\n let i = -1;\n while ((i = (node as Comment).data.indexOf(marker, i + 1)) !== -1) {\n // Comment node has a binding marker inside, make an inactive part\n // The binding won't work, but subsequent bindings will\n parts.push({type: COMMENT_PART, index: nodeIndex});\n // Move to the end of the match\n i += marker.length - 1;\n }\n }\n }\n nodeIndex++;\n }\n\n if (DEV_MODE) {\n // If there was a duplicate attribute on a tag, then when the tag is\n // parsed into an element the attribute gets de-duplicated. We can detect\n // this mismatch if we haven't precisely consumed every attribute name\n // when preparing the template. This works because `attrNames` is built\n // from the template string and `attrNameIndex` comes from processing the\n // resulting DOM.\n if (attrNames.length !== attrNameIndex) {\n throw new Error(\n `Detected duplicate attribute bindings. This occurs if your template ` +\n `has duplicate attributes on an element tag. For example ` +\n `\"<input ?disabled=\\${true} ?disabled=\\${false}>\" contains a ` +\n `duplicate \"disabled\" attribute. The error was detected in ` +\n `the following template: \\n` +\n '`' +\n strings.join('${...}') +\n '`'\n );\n }\n }\n\n // We could set walker.currentNode to another node here to prevent a memory\n // leak, but every time we prepare a template, we immediately render it\n // and re-use the walker in new TemplateInstance._clone().\n debugLogEvent &&\n debugLogEvent({\n kind: 'template prep',\n template: this,\n clonableTemplate: this.el,\n parts: this.parts,\n strings,\n });\n }\n\n // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n /** @nocollapse */\n static createElement(html: TrustedHTML, _options?: RenderOptions) {\n const el = d.createElement('template');\n el.innerHTML = html as unknown as string;\n return el;\n }\n}\n\nexport interface Disconnectable {\n _$parent?: Disconnectable;\n _$disconnectableChildren?: Set<Disconnectable>;\n // Rather than hold connection state on instances, Disconnectables recursively\n // fetch the connection state from the RootPart they are connected in via\n // getters up the Disconnectable tree via _$parent references. This pushes the\n // cost of tracking the isConnected state to `AsyncDirectives`, and avoids\n // needing to pass all Disconnectables (parts, template instances, and\n // directives) their connection state each time it changes, which would be\n // costly for trees that have no AsyncDirectives.\n _$isConnected: boolean;\n}\n\nfunction resolveDirective(\n part: ChildPart | AttributePart | ElementPart,\n value: unknown,\n parent: DirectiveParent = part,\n attributeIndex?: number\n): unknown {\n // Bail early if the value is explicitly noChange. Note, this means any\n // nested directive is still attached and is not run.\n if (value === noChange) {\n return value;\n }\n let currentDirective =\n attributeIndex !== undefined\n ? (parent as AttributePart).__directives?.[attributeIndex]\n : (parent as ChildPart | ElementPart | Directive).__directive;\n const nextDirectiveConstructor = isPrimitive(value)\n ? undefined\n : // This property needs to remain unminified.\n (value as DirectiveResult)['_$litDirective$'];\n if (currentDirective?.constructor !== nextDirectiveConstructor) {\n // This property needs to remain unminified.\n currentDirective?.['_$notifyDirectiveConnectionChanged']?.(false);\n if (nextDirectiveConstructor === undefined) {\n currentDirective = undefined;\n } else {\n currentDirective = new nextDirectiveConstructor(part as PartInfo);\n currentDirective._$initialize(part, parent, attributeIndex);\n }\n if (attributeIndex !== undefined) {\n ((parent as AttributePart).__directives ??= [])[attributeIndex] =\n currentDirective;\n } else {\n (parent as ChildPart | Directive).__directive = currentDirective;\n }\n }\n if (currentDirective !== undefined) {\n value = resolveDirective(\n part,\n currentDirective._$resolve(part, (value as DirectiveResult).values),\n currentDirective,\n attributeIndex\n );\n }\n return value;\n}\n\nexport type {TemplateInstance};\n/**\n * An updateable instance of a Template. Holds references to the Parts used to\n * update the template instance.\n */\nclass TemplateInstance implements Disconnectable {\n _$template: Template;\n _$parts: Array<Part | undefined> = [];\n\n /** @internal */\n _$parent: ChildPart;\n /** @internal */\n _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n constructor(template: Template, parent: ChildPart) {\n this._$template = template;\n this._$parent = parent;\n }\n\n // Called by ChildPart parentNode getter\n get parentNode() {\n return this._$parent.parentNode;\n }\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n\n // This method is separate from the constructor because we need to return a\n // DocumentFragment and we don't want to hold onto it with an instance field.\n _clone(options: RenderOptions | undefined) {\n const {\n el: {content},\n parts: parts,\n } = this._$template;\n const fragment = (options?.creationScope ?? d).importNode(content, true);\n walker.currentNode = fragment;\n\n let node = walker.nextNode()!;\n let nodeIndex = 0;\n let partIndex = 0;\n let templatePart = parts[0];\n\n while (templatePart !== undefined) {\n if (nodeIndex === templatePart.index) {\n let part: Part | undefined;\n if (templatePart.type === CHILD_PART) {\n part = new ChildPart(\n node as HTMLElement,\n node.nextSibling,\n this,\n options\n );\n } else if (templatePart.type === ATTRIBUTE_PART) {\n part = new templatePart.ctor(\n node as HTMLElement,\n templatePart.name,\n templatePart.strings,\n this,\n options\n );\n } else if (templatePart.type === ELEMENT_PART) {\n part = new ElementPart(node as HTMLElement, this, options);\n }\n this._$parts.push(part);\n templatePart = parts[++partIndex];\n }\n if (nodeIndex !== templatePart?.index) {\n node = walker.nextNode()!;\n nodeIndex++;\n }\n }\n // We need to set the currentNode away from the cloned tree so that we\n // don't hold onto the tree even if the tree is detached and should be\n // freed.\n walker.currentNode = d;\n return fragment;\n }\n\n _update(values: Array<unknown>) {\n let i = 0;\n for (const part of this._$parts) {\n if (part !== undefined) {\n debugLogEvent &&\n debugLogEvent({\n kind: 'set part',\n part,\n value: values[i],\n valueIndex: i,\n values,\n templateInstance: this,\n });\n if ((part as AttributePart).strings !== undefined) {\n (part as AttributePart)._$setValue(values, part as AttributePart, i);\n // The number of values the part consumes is part.strings.length - 1\n // since values are in between template spans. We increment i by 1\n // later in the loop, so increment it by part.strings.length - 2 here\n i += (part as AttributePart).strings!.length - 2;\n } else {\n part._$setValue(values[i]);\n }\n }\n i++;\n }\n }\n}\n\n/*\n * Parts\n */\ntype AttributeTemplatePart = {\n readonly type: typeof ATTRIBUTE_PART;\n readonly index: number;\n readonly name: string;\n readonly ctor: typeof AttributePart;\n readonly strings: ReadonlyArray<string>;\n};\ntype ChildTemplatePart = {\n readonly type: typeof CHILD_PART;\n readonly index: number;\n};\ntype ElementTemplatePart = {\n readonly type: typeof ELEMENT_PART;\n readonly index: number;\n};\ntype CommentTemplatePart = {\n readonly type: typeof COMMENT_PART;\n readonly index: number;\n};\n\n/**\n * A TemplatePart represents a dynamic part in a template, before the template\n * is instantiated. When a template is instantiated Parts are created from\n * TemplateParts.\n */\ntype TemplatePart =\n | ChildTemplatePart\n | AttributeTemplatePart\n | ElementTemplatePart\n | CommentTemplatePart;\n\nexport type Part =\n | ChildPart\n | AttributePart\n | PropertyPart\n | BooleanAttributePart\n | ElementPart\n | EventPart;\n\nexport type {ChildPart};\nclass ChildPart implements Disconnectable {\n readonly type = CHILD_PART;\n readonly options: RenderOptions | undefined;\n _$committedValue: unknown = nothing;\n /** @internal */\n __directive?: Directive;\n /** @internal */\n _$startNode: ChildNode;\n /** @internal */\n _$endNode: ChildNode | null;\n private _textSanitizer: ValueSanitizer | undefined;\n /** @internal */\n _$parent: Disconnectable | undefined;\n /**\n * Connection state for RootParts only (i.e. ChildPart without _$parent\n * returned from top-level `render`). This field is unused otherwise. The\n * intention would be clearer if we made `RootPart` a subclass of `ChildPart`\n * with this field (and a different _$isConnected getter), but the subclass\n * caused a perf regression, possibly due to making call sites polymorphic.\n * @internal\n */\n __isConnected: boolean;\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n // ChildParts that are not at the root should always be created with a\n // parent; only RootChildNode's won't, so they return the local isConnected\n // state\n return this._$parent?._$isConnected ?? this.__isConnected;\n }\n\n // The following fields will be patched onto ChildParts when required by\n // AsyncDirective\n /** @internal */\n _$disconnectableChildren?: Set<Disconnectable> = undefined;\n /** @internal */\n _$notifyConnectionChanged?(\n isConnected: boolean,\n removeFromParent?: boolean,\n from?: number\n ): void;\n /** @internal */\n _$reparentDisconnectables?(parent: Disconnectable): void;\n\n constructor(\n startNode: ChildNode,\n endNode: ChildNode | null,\n parent: TemplateInstance | ChildPart | undefined,\n options: RenderOptions | undefined\n ) {\n this._$startNode = startNode;\n this._$endNode = endNode;\n this._$parent = parent;\n this.options = options;\n // Note __isConnected is only ever accessed on RootParts (i.e. when there is\n // no _$parent); the value on a non-root-part is \"don't care\", but checking\n // for parent would be more code\n this.__isConnected = options?.isConnected ?? true;\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n // Explicitly initialize for consistent class shape.\n this._textSanitizer = undefined;\n }\n }\n\n /**\n * The parent node into which the part renders its content.\n *\n * A ChildPart's content consists of a range of adjacent child nodes of\n * `.parentNode`, possibly bordered by 'marker nodes' (`.startNode` and\n * `.endNode`).\n *\n * - If both `.startNode` and `.endNode` are non-null, then the part's content\n * consists of all siblings between `.startNode` and `.endNode`, exclusively.\n *\n * - If `.startNode` is non-null but `.endNode` is null, then the part's\n * content consists of all siblings following `.startNode`, up to and\n * including the last child of `.parentNode`. If `.endNode` is non-null, then\n * `.startNode` will always be non-null.\n *\n * - If both `.endNode` and `.startNode` are null, then the part's content\n * consists of all child nodes of `.parentNode`.\n */\n get parentNode(): Node {\n let parentNode: Node = wrap(this._$startNode).parentNode!;\n const parent = this._$parent;\n if (\n parent !== undefined &&\n parentNode?.nodeType === 11 /* Node.DOCUMENT_FRAGMENT */\n ) {\n // If the parentNode is a DocumentFragment, it may be because the DOM is\n // still in the cloned fragment during initial render; if so, get the real\n // parentNode the part will be committed into by asking the parent.\n parentNode = (parent as ChildPart | TemplateInstance).parentNode;\n }\n return parentNode;\n }\n\n /**\n * The part's leading marker node, if any. See `.parentNode` for more\n * information.\n */\n get startNode(): Node | null {\n return this._$startNode;\n }\n\n /**\n * The part's trailing marker node, if any. See `.parentNode` for more\n * information.\n */\n get endNode(): Node | null {\n return this._$endNode;\n }\n\n _$setValue(value: unknown, directiveParent: DirectiveParent = this): void {\n if (DEV_MODE && this.parentNode === null) {\n throw new Error(\n `This \\`ChildPart\\` has no \\`parentNode\\` and therefore cannot accept a value. This likely means the element containing the part was manipulated in an unsupported way outside of Lit's control such that the part's marker nodes were ejected from DOM. For example, setting the element's \\`innerHTML\\` or \\`textContent\\` can do this.`\n );\n }\n value = resolveDirective(this, value, directiveParent);\n if (isPrimitive(value)) {\n // Non-rendering child values. It's important that these do not render\n // empty text nodes to avoid issues with preventing default <slot>\n // fallback content.\n if (value === nothing || value == null || value === '') {\n if (this._$committedValue !== nothing) {\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit nothing to child',\n start: this._$startNode,\n end: this._$endNode,\n parent: this._$parent,\n options: this.options,\n });\n this._$clear();\n }\n this._$committedValue = nothing;\n } else if (value !== this._$committedValue && value !== noChange) {\n this._commitText(value);\n }\n // This property needs to remain unminified.\n } else if ((value as TemplateResult)['_$litType$'] !== undefined) {\n this._commitTemplateResult(value as TemplateResult);\n } else if ((value as Node).nodeType !== undefined) {\n if (DEV_MODE && this.options?.host === value) {\n this._commitText(\n `[probable mistake: rendered a template's host in itself ` +\n `(commonly caused by writing \\${this} in a template]`\n );\n console.warn(\n `Attempted to render the template host`,\n value,\n `inside itself. This is almost always a mistake, and in dev mode `,\n `we render some warning text. In production however, we'll `,\n `render it, which will usually result in an error, and sometimes `,\n `in the element disappearing from the DOM.`\n );\n return;\n }\n this._commitNode(value as Node);\n } else if (isIterable(value)) {\n this._commitIterable(value);\n } else {\n // Fallback, will render the string representation\n this._commitText(value);\n }\n }\n\n private _insert<T extends Node>(node: T) {\n return wrap(wrap(this._$startNode).parentNode!).insertBefore(\n node,\n this._$endNode\n );\n }\n\n private _commitNode(value: Node): void {\n if (this._$committedValue !== value) {\n this._$clear();\n if (\n ENABLE_EXTRA_SECURITY_HOOKS &&\n sanitizerFactoryInternal !== noopSanitizer\n ) {\n const parentNodeName = this._$startNode.parentNode?.nodeName;\n if (parentNodeName === 'STYLE' || parentNodeName === 'SCRIPT') {\n let message = 'Forbidden';\n if (DEV_MODE) {\n if (parentNodeName === 'STYLE') {\n message =\n `Lit does not support binding inside style nodes. ` +\n `This is a security risk, as style injection attacks can ` +\n `exfiltrate data and spoof UIs. ` +\n `Consider instead using css\\`...\\` literals ` +\n `to compose styles, and do dynamic styling with ` +\n `css custom properties, ::parts, <slot>s, ` +\n `and by mutating the DOM rather than stylesheets.`;\n } else {\n message =\n `Lit does not support binding inside script nodes. ` +\n `This is a security risk, as it could allow arbitrary ` +\n `code execution.`;\n }\n }\n throw new Error(message);\n }\n }\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit node',\n start: this._$startNode,\n parent: this._$parent,\n value: value,\n options: this.options,\n });\n this._$committedValue = this._insert(value);\n }\n }\n\n private _commitText(value: unknown): void {\n // If the committed value is a primitive it means we called _commitText on\n // the previous render, and we know that this._$startNode.nextSibling is a\n // Text node. We can now just replace the text content (.data) of the node.\n if (\n this._$committedValue !== nothing &&\n isPrimitive(this._$committedValue)\n ) {\n const node = wrap(this._$startNode).nextSibling as Text;\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n if (this._textSanitizer === undefined) {\n this._textSanitizer = createSanitizer(node, 'data', 'property');\n }\n value = this._textSanitizer(value);\n }\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit text',\n node,\n value,\n options: this.options,\n });\n (node as Text).data = value as string;\n } else {\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n const textNode = d.createTextNode('');\n this._commitNode(textNode);\n // When setting text content, for security purposes it matters a lot\n // what the parent is. For example, <style> and <script> need to be\n // handled with care, while <span> does not. So first we need to put a\n // text node into the document, then we can sanitize its content.\n if (this._textSanitizer === undefined) {\n this._textSanitizer = createSanitizer(textNode, 'data', 'property');\n }\n value = this._textSanitizer(value);\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit text',\n node: textNode,\n value,\n options: this.options,\n });\n textNode.data = value as string;\n } else {\n this._commitNode(d.createTextNode(value as string));\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit text',\n node: wrap(this._$startNode).nextSibling as Text,\n value,\n options: this.options,\n });\n }\n }\n this._$committedValue = value;\n }\n\n private _commitTemplateResult(\n result: TemplateResult | CompiledTemplateResult\n ): void {\n // This property needs to remain unminified.\n const {values, ['_$litType$']: type} = result;\n // If $litType$ is a number, result is a plain TemplateResult and we get\n // the template from the template cache. If not, result is a\n // CompiledTemplateResult and _$litType$ is a CompiledTemplate and we need\n // to create the <template> element the first time we see it.\n const template: Template | CompiledTemplate =\n typeof type === 'number'\n ? this._$getTemplate(result as UncompiledTemplateResult)\n : (type.el === undefined &&\n (type.el = Template.createElement(\n trustFromTemplateString(type.h, type.h[0]),\n this.options\n )),\n type);\n\n if ((this._$committedValue as TemplateInstance)?._$template === template) {\n debugLogEvent &&\n debugLogEvent({\n kind: 'template updating',\n template,\n instance: this._$committedValue as TemplateInstance,\n parts: (this._$committedValue as TemplateInstance)._$parts,\n options: this.options,\n values,\n });\n (this._$committedValue as TemplateInstance)._update(values);\n } else {\n const instance = new TemplateInstance(template as Template, this);\n const fragment = instance._clone(this.options);\n debugLogEvent &&\n debugLogEvent({\n kind: 'template instantiated',\n template,\n instance,\n parts: instance._$parts,\n options: this.options,\n fragment,\n values,\n });\n instance._update(values);\n debugLogEvent &&\n debugLogEvent({\n kind: 'template instantiated and updated',\n template,\n instance,\n parts: instance._$parts,\n options: this.options,\n fragment,\n values,\n });\n this._commitNode(fragment);\n this._$committedValue = instance;\n }\n }\n\n // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n /** @internal */\n _$getTemplate(result: UncompiledTemplateResult) {\n let template = templateCache.get(result.strings);\n if (template === undefined) {\n templateCache.set(result.strings, (template = new Template(result)));\n }\n return template;\n }\n\n private _commitIterable(value: Iterable<unknown>): void {\n // For an Iterable, we create a new InstancePart per item, then set its\n // value to the item. This is a little bit of overhead for every item in\n // an Iterable, but it lets us recurse easily and efficiently update Arrays\n // of TemplateResults that will be commonly returned from expressions like:\n // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n\n // If value is an array, then the previous render was of an\n // iterable and value will contain the ChildParts from the previous\n // render. If value is not an array, clear this part and make a new\n // array for ChildParts.\n if (!isArray(this._$committedValue)) {\n this._$committedValue = [];\n this._$clear();\n }\n\n // Lets us keep track of how many items we stamped so we can clear leftover\n // items from a previous render\n const itemParts = this._$committedValue as ChildPart[];\n let partIndex = 0;\n let itemPart: ChildPart | undefined;\n\n for (const item of value) {\n if (partIndex === itemParts.length) {\n // If no existing part, create a new one\n // TODO (justinfagnani): test perf impact of always creating two parts\n // instead of sharing parts between nodes\n // https://github.com/lit/lit/issues/1266\n itemParts.push(\n (itemPart = new ChildPart(\n this._insert(createMarker()),\n this._insert(createMarker()),\n this,\n this.options\n ))\n );\n } else {\n // Reuse an existing part\n itemPart = itemParts[partIndex];\n }\n itemPart._$setValue(item);\n partIndex++;\n }\n\n if (partIndex < itemParts.length) {\n // itemParts always have end nodes\n this._$clear(\n itemPart && wrap(itemPart._$endNode!).nextSibling,\n partIndex\n );\n // Truncate the parts array so _value reflects the current state\n itemParts.length = partIndex;\n }\n }\n\n /**\n * Removes the nodes contained within this Part from the DOM.\n *\n * @param start Start node to clear from, for clearing a subset of the part's\n * DOM (used when truncating iterables)\n * @param from When `start` is specified, the index within the iterable from\n * which ChildParts are being removed, used for disconnecting directives in\n * those Parts.\n *\n * @internal\n */\n _$clear(\n start: ChildNode | null = wrap(this._$startNode).nextSibling,\n from?: number\n ) {\n this._$notifyConnectionChanged?.(false, true, from);\n while (start && start !== this._$endNode) {\n const n = wrap(start!).nextSibling;\n (wrap(start!) as Element).remove();\n start = n;\n }\n }\n /**\n * Implementation of RootPart's `isConnected`. Note that this method\n * should only be called on `RootPart`s (the `ChildPart` returned from a\n * top-level `render()` call). It has no effect on non-root ChildParts.\n * @param isConnected Whether to set\n * @internal\n */\n setConnected(isConnected: boolean) {\n if (this._$parent === undefined) {\n this.__isConnected = isConnected;\n this._$notifyConnectionChanged?.(isConnected);\n } else if (DEV_MODE) {\n throw new Error(\n 'part.setConnected() may only be called on a ' +\n 'RootPart returned from render().'\n );\n }\n }\n}\n\n/**\n * A top-level `ChildPart` returned from `render` that manages the connected\n * state of `AsyncDirective`s created throughout the tree below it.\n */\nexport interface RootPart extends ChildPart {\n /**\n * Sets the connection state for `AsyncDirective`s contained within this root\n * ChildPart.\n *\n * lit-html does not automatically monitor the connectedness of DOM rendered;\n * as such, it is the responsibility of the caller to `render` to ensure that\n * `part.setConnected(false)` is called before the part object is potentially\n * discarded, to ensure that `AsyncDirective`s have a chance to dispose of\n * any resources being held. If a `RootPart` that was previously\n * disconnected is subsequently re-connected (and its `AsyncDirective`s should\n * re-connect), `setConnected(true)` should be called.\n *\n * @param isConnected Whether directives within this tree should be connected\n * or not\n */\n setConnected(isConnected: boolean): void;\n}\n\nexport type {AttributePart};\nclass AttributePart implements Disconnectable {\n readonly type:\n | typeof ATTRIBUTE_PART\n | typeof PROPERTY_PART\n | typeof BOOLEAN_ATTRIBUTE_PART\n | typeof EVENT_PART = ATTRIBUTE_PART;\n readonly element: HTMLElement;\n readonly name: string;\n readonly options: RenderOptions | undefined;\n\n /**\n * If this attribute part represents an interpolation, this contains the\n * static strings of the interpolation. For single-value, complete bindings,\n * this is undefined.\n */\n readonly strings?: ReadonlyArray<string>;\n /** @internal */\n _$committedValue: unknown | Array<unknown> = nothing;\n /** @internal */\n __directives?: Array<Directive | undefined>;\n /** @internal */\n _$parent: Disconnectable;\n /** @internal */\n _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n protected _sanitizer: ValueSanitizer | undefined;\n\n get tagName() {\n return this.element.tagName;\n }\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n\n constructor(\n element: HTMLElement,\n name: string,\n strings: ReadonlyArray<string>,\n parent: Disconnectable,\n options: RenderOptions | undefined\n ) {\n this.element = element;\n this.name = name;\n this._$parent = parent;\n this.options = options;\n if (strings.length > 2 || strings[0] !== '' || strings[1] !== '') {\n this._$committedValue = new Array(strings.length - 1).fill(new String());\n this.strings = strings;\n } else {\n this._$committedValue = nothing;\n }\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n this._sanitizer = undefined;\n }\n }\n\n /**\n * Sets the value of this part by resolving the value from possibly multiple\n * values and static strings and committing it to the DOM.\n * If this part is single-valued, `this._strings` will be undefined, and the\n * method will be called with a single value argument. If this part is\n * multi-value, `this._strings` will be defined, and the method is called\n * with the value array of the part's owning TemplateInstance, and an offset\n * into the value array from which the values should be read.\n * This method is overloaded this way to eliminate short-lived array slices\n * of the template instance values, and allow a fast-path for single-valued\n * parts.\n *\n * @param value The part value, or an array of values for multi-valued parts\n * @param valueIndex the index to start reading values from. `undefined` for\n * single-valued parts\n * @param noCommit causes the part to not commit its value to the DOM. Used\n * in hydration to prime attribute parts with their first-rendered value,\n * but not set the attribute, and in SSR to no-op the DOM operation and\n * capture the value for serialization.\n *\n * @internal\n */\n _$setValue(\n value: unknown | Array<unknown>,\n directiveParent: DirectiveParent = this,\n valueIndex?: number,\n noCommit?: boolean\n ) {\n const strings = this.strings;\n\n // Whether any of the values has changed, for dirty-checking\n let change = false;\n\n if (strings === undefined) {\n // Single-value binding case\n value = resolveDirective(this, value, directiveParent, 0);\n change =\n !isPrimitive(value) ||\n (value !== this._$committedValue && value !== noChange);\n if (change) {\n this._$committedValue = value;\n }\n } else {\n // Interpolation case\n const values = value as Array<unknown>;\n value = strings[0];\n\n let i, v;\n for (i = 0; i < strings.length - 1; i++) {\n v = resolveDirective(this, values[valueIndex! + i], directiveParent, i);\n\n if (v === noChange) {\n // If the user-provided value is `noChange`, use the previous value\n v = (this._$committedValue as Array<unknown>)[i];\n }\n change ||=\n !isPrimitive(v) || v !== (this._$committedValue as Array<unknown>)[i];\n if (v === nothing) {\n value = nothing;\n } else if (value !== nothing) {\n value += (v ?? '') + strings[i + 1];\n }\n // We always record each value, even if one is `nothing`, for future\n // change detection.\n (this._$committedValue as Array<unknown>)[i] = v;\n }\n }\n if (change && !noCommit) {\n this._commitValue(value);\n }\n }\n\n /** @internal */\n _commitValue(value: unknown) {\n if (value === nothing) {\n (wrap(this.element) as Element).removeAttribute(this.name);\n } else {\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n if (this._sanitizer === undefined) {\n this._sanitizer = sanitizerFactoryInternal(\n this.element,\n this.name,\n 'attribute'\n );\n }\n value = this._sanitizer(value ?? '');\n }\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit attribute',\n element: this.element,\n name: this.name,\n value,\n options: this.options,\n });\n (wrap(this.element) as Element).setAttribute(\n this.name,\n (value ?? '') as string\n );\n }\n }\n}\n\nexport type {PropertyPart};\nclass PropertyPart extends AttributePart {\n override readonly type = PROPERTY_PART;\n\n /** @internal */\n override _commitValue(value: unknown) {\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n if (this._sanitizer === undefined) {\n this._sanitizer = sanitizerFactoryInternal(\n this.element,\n this.name,\n 'property'\n );\n }\n value = this._sanitizer(value);\n }\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit property',\n element: this.element,\n name: this.name,\n value,\n options: this.options,\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.element as any)[this.name] = value === nothing ? undefined : value;\n }\n}\n\nexport type {BooleanAttributePart};\nclass BooleanAttributePart extends AttributePart {\n override readonly type = BOOLEAN_ATTRIBUTE_PART;\n\n /** @internal */\n override _commitValue(value: unknown) {\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit boolean attribute',\n element: this.element,\n name: this.name,\n value: !!(value && value !== nothing),\n options: this.options,\n });\n (wrap(this.element) as Element).toggleAttribute(\n this.name,\n !!value && value !== nothing\n );\n }\n}\n\ntype EventListenerWithOptions = EventListenerOrEventListenerObject &\n Partial<AddEventListenerOptions>;\n\n/**\n * An AttributePart that manages an event listener via add/removeEventListener.\n *\n * This part works by adding itself as the event listener on an element, then\n * delegating to the value passed to it. This reduces the number of calls to\n * add/removeEventListener if the listener changes frequently, such as when an\n * inline function is used as a listener.\n *\n * Because event options are passed when adding listeners, we must take case\n * to add and remove the part as a listener when the event options change.\n */\nexport type {EventPart};\nclass EventPart extends AttributePart {\n override readonly type = EVENT_PART;\n\n constructor(\n element: HTMLElement,\n name: string,\n strings: ReadonlyArray<string>,\n parent: Disconnectable,\n options: RenderOptions | undefined\n ) {\n super(element, name, strings, parent, options);\n\n if (DEV_MODE && this.strings !== undefined) {\n throw new Error(\n `A \\`<${element.localName}>\\` has a \\`@${name}=...\\` listener with ` +\n 'invalid content. Event listeners in templates must have exactly ' +\n 'one expression and no surrounding text.'\n );\n }\n }\n\n // EventPart does not use the base _$setValue/_resolveValue implementation\n // since the dirty checking is more complex\n /** @internal */\n override _$setValue(\n newListener: unknown,\n directiveParent: DirectiveParent = this\n ) {\n newListener =\n resolveDirective(this, newListener, directiveParent, 0) ?? nothing;\n if (newListener === noChange) {\n return;\n }\n const oldListener = this._$committedValue;\n\n // If the new value is nothing or any options change we have to remove the\n // part as a listener.\n const shouldRemoveListener =\n (newListener === nothing && oldListener !== nothing) ||\n (newListener as EventListenerWithOptions).capture !==\n (oldListener as EventListenerWithOptions).capture ||\n (newListener as EventListenerWithOptions).once !==\n (oldListener as EventListenerWithOptions).once ||\n (newListener as EventListenerWithOptions).passive !==\n (oldListener as EventListenerWithOptions).passive;\n\n // If the new value is not nothing and we removed the listener, we have\n // to add the part as a listener.\n const shouldAddListener =\n newListener !== nothing &&\n (oldListener === nothing || shouldRemoveListener);\n\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit event listener',\n element: this.element,\n name: this.name,\n value: newListener,\n options: this.options,\n removeListener: shouldRemoveListener,\n addListener: shouldAddListener,\n oldListener,\n });\n if (shouldRemoveListener) {\n this.element.removeEventListener(\n this.name,\n this,\n oldListener as EventListenerWithOptions\n );\n }\n if (shouldAddListener) {\n this.element.addEventListener(\n this.name,\n this,\n newListener as EventListenerWithOptions\n );\n }\n this._$committedValue = newListener;\n }\n\n handleEvent(event: Event) {\n if (typeof this._$committedValue === 'function') {\n this._$committedValue.call(this.options?.host ?? this.element, event);\n } else {\n (this._$committedValue as EventListenerObject).handleEvent(event);\n }\n }\n}\n\nexport type {ElementPart};\nclass ElementPart implements Disconnectable {\n readonly type = ELEMENT_PART;\n\n /** @internal */\n __directive?: Directive;\n\n // This is to ensure that every Part has a _$committedValue\n _$committedValue: undefined;\n\n /** @internal */\n _$parent!: Disconnectable;\n\n /** @internal */\n _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n options: RenderOptions | undefined;\n\n constructor(\n public element: Element,\n parent: Disconnectable,\n options: RenderOptions | undefined\n ) {\n this._$parent = parent;\n this.options = options;\n }\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n\n _$setValue(value: unknown): void {\n debugLogEvent &&\n debugLogEvent({\n kind: 'commit to element binding',\n element: this.element,\n value,\n options: this.options,\n });\n resolveDirective(this, value);\n }\n}\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports mangled in the\n * client side code, we export a _$LH object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-element, which re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LH = {\n // Used in lit-ssr\n _boundAttributeSuffix: boundAttributeSuffix,\n _marker: marker,\n _markerMatch: markerMatch,\n _HTML_RESULT: HTML_RESULT,\n _getTemplateHtml: getTemplateHtml,\n // Used in tests and private-ssr-support\n _TemplateInstance: TemplateInstance,\n _isIterable: isIterable,\n _resolveDirective: resolveDirective,\n _ChildPart: ChildPart,\n _AttributePart: AttributePart,\n _BooleanAttributePart: BooleanAttributePart,\n _EventPart: EventPart,\n _PropertyPart: PropertyPart,\n _ElementPart: ElementPart,\n};\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n ? global.litHtmlPolyfillSupportDevMode\n : global.litHtmlPolyfillSupport;\npolyfillSupport?.(Template, ChildPart);\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n(global.litHtmlVersions ??= []).push('3.3.0');\nif (DEV_MODE && global.litHtmlVersions.length > 1) {\n queueMicrotask(() => {\n issueWarning!(\n 'multiple-versions',\n `Multiple versions of Lit loaded. ` +\n `Loading multiple versions is not recommended.`\n );\n });\n}\n\n/**\n * Renders a value, usually a lit-html TemplateResult, to the container.\n *\n * This example renders the text \"Hello, Zoe!\" inside a paragraph tag, appending\n * it to the container `document.body`.\n *\n * ```js\n * import {html, render} from 'lit';\n *\n * const name = \"Zoe\";\n * render(html`<p>Hello, ${name}!</p>`, document.body);\n * ```\n *\n * @param value Any [renderable\n * value](https://lit.dev/docs/templates/expressions/#child-expressions),\n * typically a {@linkcode TemplateResult} created by evaluating a template tag\n * like {@linkcode html} or {@linkcode svg}.\n * @param container A DOM container to render to. The first render will append\n * the rendered value to the container, and subsequent renders will\n * efficiently update the rendered value if the same result type was\n * previously rendered there.\n * @param options See {@linkcode RenderOptions} for options documentation.\n * @see\n * {@link https://lit.dev/docs/libraries/standalone-templates/#rendering-lit-html-templates| Rendering Lit HTML Templates}\n */\nexport const render = (\n value: unknown,\n container: HTMLElement | DocumentFragment,\n options?: RenderOptions\n): RootPart => {\n if (DEV_MODE && container == null) {\n // Give a clearer error message than\n // Uncaught TypeError: Cannot read properties of null (reading\n // '_$litPart$')\n // which reads like an internal Lit error.\n throw new TypeError(`The container to render into may not be ${container}`);\n }\n const renderId = DEV_MODE ? debugLogRenderId++ : 0;\n const partOwnerNode = options?.renderBefore ?? container;\n // This property needs to remain unminified.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let part: ChildPart = (partOwnerNode as any)['_$litPart$'];\n debugLogEvent &&\n debugLogEvent({\n kind: 'begin render',\n id: renderId,\n value,\n container,\n options,\n part,\n });\n if (part === undefined) {\n const endNode = options?.renderBefore ?? null;\n // This property needs to remain unminified.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (partOwnerNode as any)['_$litPart$'] = part = new ChildPart(\n container.insertBefore(createMarker(), endNode),\n endNode,\n undefined,\n options ?? {}\n );\n }\n part._$setValue(value);\n debugLogEvent &&\n debugLogEvent({\n kind: 'end render',\n id: renderId,\n value,\n container,\n options,\n part,\n });\n return part as RootPart;\n};\n\nif (ENABLE_EXTRA_SECURITY_HOOKS) {\n render.setSanitizer = setSanitizer;\n render.createSanitizer = createSanitizer;\n if (DEV_MODE) {\n render._testOnlyClearSanitizerFactoryDoNotCallOrElse =\n _testOnlyClearSanitizerFactoryDoNotCallOrElse;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * The main LitElement module, which defines the {@linkcode LitElement} base\n * class and related APIs.\n *\n * LitElement components can define a template and a set of observed\n * properties. Changing an observed property triggers a re-render of the\n * element.\n *\n * Import {@linkcode LitElement} and {@linkcode html} from this module to\n * create a component:\n *\n * ```js\n * import {LitElement, html} from 'lit-element';\n *\n * class MyElement extends LitElement {\n *\n * // Declare observed properties\n * static get properties() {\n * return {\n * adjective: {}\n * }\n * }\n *\n * constructor() {\n * this.adjective = 'awesome';\n * }\n *\n * // Define the element's template\n * render() {\n * return html`<p>your ${adjective} template here</p>`;\n * }\n * }\n *\n * customElements.define('my-element', MyElement);\n * ```\n *\n * `LitElement` extends {@linkcode ReactiveElement} and adds lit-html\n * templating. The `ReactiveElement` class is provided for users that want to\n * build their own custom element base classes that don't use lit-html.\n *\n * @packageDocumentation\n */\nimport {PropertyValues, ReactiveElement} from '@lit/reactive-element';\nimport {render, RenderOptions, noChange, RootPart} from 'lit-html';\nexport * from '@lit/reactive-element';\nexport * from 'lit-html';\n\nimport {LitUnstable} from 'lit-html';\nimport {ReactiveUnstable} from '@lit/reactive-element';\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Unstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry =\n | LitUnstable.DebugLog.Entry\n | ReactiveUnstable.DebugLog.Entry;\n }\n}\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n prop: P,\n _obj: unknown\n): P => prop;\n\nconst DEV_MODE = true;\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n global.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (\n !global.litIssuedWarnings!.has(warning) &&\n !global.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n global.litIssuedWarnings!.add(warning);\n }\n };\n}\n\n/**\n * Base element class that manages element properties and attributes, and\n * renders a lit-html template.\n *\n * To define a component, subclass `LitElement` and implement a\n * `render` method to provide the component's template. Define properties\n * using the {@linkcode LitElement.properties properties} property or the\n * {@linkcode property} decorator.\n */\nexport class LitElement extends ReactiveElement {\n // This property needs to remain unminified.\n static ['_$litElement$'] = true;\n\n /**\n * @category rendering\n */\n readonly renderOptions: RenderOptions = {host: this};\n\n private __childPart: RootPart | undefined = undefined;\n\n /**\n * @category rendering\n */\n protected override createRenderRoot() {\n const renderRoot = super.createRenderRoot();\n // When adoptedStyleSheets are shimmed, they are inserted into the\n // shadowRoot by createRenderRoot. Adjust the renderBefore node so that\n // any styles in Lit content render before adoptedStyleSheets. This is\n // important so that adoptedStyleSheets have precedence over styles in\n // the shadowRoot.\n this.renderOptions.renderBefore ??= renderRoot!.firstChild as ChildNode;\n return renderRoot;\n }\n\n /**\n * Updates the element. This method reflects property values to attributes\n * and calls `render` to render DOM via lit-html. Setting properties inside\n * this method will *not* trigger another update.\n * @param changedProperties Map of changed properties with old values\n * @category updates\n */\n protected override update(changedProperties: PropertyValues) {\n // Setting properties in `render` should not trigger an update. Since\n // updates are allowed after super.update, it's important to call `render`\n // before that.\n const value = this.render();\n if (!this.hasUpdated) {\n this.renderOptions.isConnected = this.isConnected;\n }\n super.update(changedProperties);\n this.__childPart = render(value, this.renderRoot, this.renderOptions);\n }\n\n /**\n * Invoked when the component is added to the document's DOM.\n *\n * In `connectedCallback()` you should setup tasks that should only occur when\n * the element is connected to the document. The most common of these is\n * adding event listeners to nodes external to the element, like a keydown\n * event handler added to the window.\n *\n * ```ts\n * connectedCallback() {\n * super.connectedCallback();\n * addEventListener('keydown', this._handleKeydown);\n * }\n * ```\n *\n * Typically, anything done in `connectedCallback()` should be undone when the\n * element is disconnected, in `disconnectedCallback()`.\n *\n * @category lifecycle\n */\n override connectedCallback() {\n super.connectedCallback();\n this.__childPart?.setConnected(true);\n }\n\n /**\n * Invoked when the component is removed from the document's DOM.\n *\n * This callback is the main signal to the element that it may no longer be\n * used. `disconnectedCallback()` should ensure that nothing is holding a\n * reference to the element (such as event listeners added to nodes external\n * to the element), so that it is free to be garbage collected.\n *\n * ```ts\n * disconnectedCallback() {\n * super.disconnectedCallback();\n * window.removeEventListener('keydown', this._handleKeydown);\n * }\n * ```\n *\n * An element may be re-connected after being disconnected.\n *\n * @category lifecycle\n */\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.__childPart?.setConnected(false);\n }\n\n /**\n * Invoked on each update to perform rendering tasks. This method may return\n * any value renderable by lit-html's `ChildPart` - typically a\n * `TemplateResult`. Setting properties inside this method will *not* trigger\n * the element to update.\n * @category rendering\n */\n protected render(): unknown {\n return noChange;\n }\n}\n\n/**\n * Ensure this class is marked as `finalized` as an optimization ensuring\n * it will not needlessly try to `finalize`.\n *\n * Note this property name is a string to prevent breaking Closure JS Compiler\n * optimizations. See @lit/reactive-element for more information.\n */\n(LitElement as unknown as Record<string, unknown>)[\n JSCompiler_renameProperty('finalized', LitElement)\n] = true;\n\n// Install hydration if available\nglobal.litElementHydrateSupport?.({LitElement});\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n ? global.litElementPolyfillSupportDevMode\n : global.litElementPolyfillSupport;\npolyfillSupport?.({LitElement});\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports mangled in the\n * client side code, we export a _$LE object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-html, since this module re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LE = {\n _$attributeToProperty: (\n el: LitElement,\n name: string,\n value: string | null\n ) => {\n // eslint-disable-next-line\n (el as any)._$attributeToProperty(name, value);\n },\n // eslint-disable-next-line\n _$changedProperties: (el: LitElement) => (el as any)._$changedProperties,\n};\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for LitElement usage.\n(global.litElementVersions ??= []).push('4.2.0');\nif (DEV_MODE && global.litElementVersions.length > 1) {\n queueMicrotask(() => {\n issueWarning!(\n 'multiple-versions',\n `Multiple versions of Lit loaded. Loading multiple versions ` +\n `is not recommended.`\n );\n });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport type {Constructor} from './base.js';\n\n/**\n * Allow for custom element classes with private constructors\n */\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\nexport type CustomElementDecorator = {\n // legacy\n (cls: CustomElementClass): void;\n\n // standard\n (\n target: CustomElementClass,\n context: ClassDecoratorContext<Constructor<HTMLElement>>\n ): void;\n};\n\n/**\n * Class decorator factory that defines the decorated class as a custom element.\n *\n * ```js\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html``;\n * }\n * }\n * ```\n * @category Decorator\n * @param tagName The tag name of the custom element to define.\n */\nexport const customElement =\n (tagName: string): CustomElementDecorator =>\n (\n classOrTarget: CustomElementClass | Constructor<HTMLElement>,\n context?: ClassDecoratorContext<Constructor<HTMLElement>>\n ) => {\n if (context !== undefined) {\n context.addInitializer(() => {\n customElements.define(\n tagName,\n classOrTarget as CustomElementConstructor\n );\n });\n } else {\n customElements.define(tagName, classOrTarget as CustomElementConstructor);\n }\n };\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {\n type PropertyDeclaration,\n type ReactiveElement,\n defaultConverter,\n notEqual,\n} from '../reactive-element.js';\nimport type {Interface} from './base.js';\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n globalThis.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (\n !globalThis.litIssuedWarnings!.has(warning) &&\n !globalThis.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n globalThis.litIssuedWarnings!.add(warning);\n }\n };\n}\n\n// Overloads for property decorator so that TypeScript can infer the correct\n// return type when a decorator is used as an accessor decorator or a setter\n// decorator.\nexport type PropertyDecorator = {\n // accessor decorator signature\n <C extends Interface<ReactiveElement>, V>(\n target: ClassAccessorDecoratorTarget<C, V>,\n context: ClassAccessorDecoratorContext<C, V>\n ): ClassAccessorDecoratorResult<C, V>;\n\n // setter decorator signature\n <C extends Interface<ReactiveElement>, V>(\n target: (value: V) => void,\n context: ClassSetterDecoratorContext<C, V>\n ): (this: C, value: V) => void;\n\n // legacy decorator signature\n (\n protoOrDescriptor: Object,\n name: PropertyKey,\n descriptor?: PropertyDescriptor\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any;\n};\n\nconst legacyProperty = (\n options: PropertyDeclaration | undefined,\n proto: Object,\n name: PropertyKey\n) => {\n const hasOwnProperty = proto.hasOwnProperty(name);\n (proto.constructor as typeof ReactiveElement).createProperty(name, options);\n // For accessors (which have a descriptor on the prototype) we need to\n // return a descriptor, otherwise TypeScript overwrites the descriptor we\n // define in createProperty() with the original descriptor. We don't do this\n // for fields, which don't have a descriptor, because this could overwrite\n // descriptor defined by other decorators.\n return hasOwnProperty\n ? Object.getOwnPropertyDescriptor(proto, name)\n : undefined;\n};\n\n// This is duplicated from a similar variable in reactive-element.ts, but\n// actually makes sense to have this default defined with the decorator, so\n// that different decorators could have different defaults.\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n attribute: true,\n type: String,\n converter: defaultConverter,\n reflect: false,\n hasChanged: notEqual,\n};\n\n// Temporary type, until google3 is on TypeScript 5.2\ntype StandardPropertyContext<C, V> = (\n | ClassAccessorDecoratorContext<C, V>\n | ClassSetterDecoratorContext<C, V>\n) & {metadata: object};\n\n/**\n * Wraps a class accessor or setter so that `requestUpdate()` is called with the\n * property name and old value when the accessor is set.\n */\nexport const standardProperty = <C extends Interface<ReactiveElement>, V>(\n options: PropertyDeclaration = defaultPropertyDeclaration,\n target: ClassAccessorDecoratorTarget<C, V> | ((value: V) => void),\n context: StandardPropertyContext<C, V>\n): ClassAccessorDecoratorResult<C, V> | ((this: C, value: V) => void) => {\n const {kind, metadata} = context;\n\n if (DEV_MODE && metadata == null) {\n issueWarning(\n 'missing-class-metadata',\n `The class ${target} is missing decorator metadata. This ` +\n `could mean that you're using a compiler that supports decorators ` +\n `but doesn't support decorator metadata, such as TypeScript 5.1. ` +\n `Please update your compiler.`\n );\n }\n\n // Store the property options\n let properties = globalThis.litPropertyMetadata.get(metadata);\n if (properties === undefined) {\n globalThis.litPropertyMetadata.set(metadata, (properties = new Map()));\n }\n if (kind === 'setter') {\n options = Object.create(options);\n options.wrapped = true;\n }\n properties.set(context.name, options);\n\n if (kind === 'accessor') {\n // Standard decorators cannot dynamically modify the class, so we can't\n // replace a field with accessors. The user must use the new `accessor`\n // keyword instead.\n const {name} = context;\n return {\n set(this: ReactiveElement, v: V) {\n const oldValue = (\n target as ClassAccessorDecoratorTarget<C, V>\n ).get.call(this as unknown as C);\n (target as ClassAccessorDecoratorTarget<C, V>).set.call(\n this as unknown as C,\n v\n );\n this.requestUpdate(name, oldValue, options);\n },\n init(this: ReactiveElement, v: V): V {\n if (v !== undefined) {\n this._$changeProperty(name, undefined, options, v);\n }\n return v;\n },\n } as unknown as ClassAccessorDecoratorResult<C, V>;\n } else if (kind === 'setter') {\n const {name} = context;\n return function (this: ReactiveElement, value: V) {\n const oldValue = this[name as keyof ReactiveElement];\n (target as (value: V) => void).call(this, value);\n this.requestUpdate(name, oldValue, options);\n } as unknown as (this: C, value: V) => void;\n }\n throw new Error(`Unsupported decorator location: ${kind}`);\n};\n\n/**\n * A class field or accessor decorator which creates a reactive property that\n * reflects a corresponding attribute value. When a decorated property is set\n * the element will update and render. A {@linkcode PropertyDeclaration} may\n * optionally be supplied to configure property features.\n *\n * This decorator should only be used for public fields. As public fields,\n * properties should be considered as primarily settable by element users,\n * either via attribute or the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the {@linkcode state} decorator.\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating public\n * properties should typically not be done for non-primitive (object or array)\n * properties. In other cases when an element needs to manage state, a private\n * property decorated via the {@linkcode state} decorator should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n *\n * ```ts\n * class MyElement {\n * @property({ type: Boolean })\n * clicked = false;\n * }\n * ```\n * @category Decorator\n * @ExportDecoratedItems\n */\nexport function property(options?: PropertyDeclaration): PropertyDecorator {\n return <C extends Interface<ReactiveElement>, V>(\n protoOrTarget:\n | object\n | ClassAccessorDecoratorTarget<C, V>\n | ((value: V) => void),\n nameOrContext:\n | PropertyKey\n | ClassAccessorDecoratorContext<C, V>\n | ClassSetterDecoratorContext<C, V>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any => {\n return (\n typeof nameOrContext === 'object'\n ? standardProperty<C, V>(\n options,\n protoOrTarget as\n | ClassAccessorDecoratorTarget<C, V>\n | ((value: V) => void),\n nameOrContext as StandardPropertyContext<C, V>\n )\n : legacyProperty(\n options,\n protoOrTarget as Object,\n nameOrContext as PropertyKey\n )\n ) as PropertyDecorator;\n };\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {property} from './property.js';\n\nexport interface StateDeclaration<Type = unknown> {\n /**\n * A function that indicates if a property should be considered changed when\n * it is set. The function should take the `newValue` and `oldValue` and\n * return `true` if an update should be requested.\n */\n hasChanged?(value: Type, oldValue: Type): boolean;\n}\n\n/**\n * @deprecated use StateDeclaration\n */\nexport type InternalPropertyDeclaration<Type = unknown> =\n StateDeclaration<Type>;\n\n/**\n * Declares a private or protected reactive property that still triggers\n * updates to the element when it changes. It does not reflect from the\n * corresponding attribute.\n *\n * Properties declared this way must not be used from HTML or HTML templating\n * systems, they're solely for properties internal to the element. These\n * properties may be renamed by optimization tools like closure compiler.\n * @category Decorator\n */\nexport function state(options?: StateDeclaration) {\n return property({\n ...options,\n // Add both `state` and `attribute` because we found a third party\n // controller that is keying off of PropertyOptions.state to determine\n // whether a field is a private internal property or not.\n state: true,\n attribute: false,\n });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Generates a public interface type that removes private and protected fields.\n * This allows accepting otherwise incompatible versions of the type (e.g. from\n * multiple copies of the same package in `node_modules`).\n */\nexport type Interface<T> = {\n [K in keyof T]: T[K];\n};\n\nexport type Constructor<T> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n};\n\n/**\n * Wraps up a few best practices when returning a property descriptor from a\n * decorator.\n *\n * Marks the defined property as configurable, and enumerable, and handles\n * the case where we have a busted Reflect.decorate zombiefill (e.g. in Angular\n * apps).\n *\n * @internal\n */\nexport const desc = (\n obj: object,\n name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>,\n descriptor: PropertyDescriptor\n) => {\n // For backwards compatibility, we keep them configurable and enumerable.\n descriptor.configurable = true;\n descriptor.enumerable = true;\n if (\n // We check for Reflect.decorate each time, in case the zombiefill\n // is applied via lazy loading some Angular code.\n (Reflect as typeof Reflect & {decorate?: unknown}).decorate &&\n typeof name !== 'object'\n ) {\n // If we're called as a legacy decorator, and Reflect.decorate is present\n // then we have no guarantees that the returned descriptor will be\n // defined on the class, so we must apply it directly ourselves.\n\n Object.defineProperty(obj, name, descriptor);\n }\n return descriptor;\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n globalThis.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += code\n ? ` See https://lit.dev/msg/${code} for more information.`\n : '';\n if (\n !globalThis.litIssuedWarnings!.has(warning) &&\n !globalThis.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n globalThis.litIssuedWarnings!.add(warning);\n }\n };\n}\n\nexport type QueryDecorator = {\n // legacy\n (\n proto: Interface<ReactiveElement>,\n name: PropertyKey,\n descriptor?: PropertyDescriptor\n // Note TypeScript requires the return type to be `void|any`\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): void | any;\n\n // standard\n <C extends Interface<ReactiveElement>, V extends Element | null>(\n value: ClassAccessorDecoratorTarget<C, V>,\n context: ClassAccessorDecoratorContext<C, V>\n ): ClassAccessorDecoratorResult<C, V>;\n};\n\n/**\n * A property decorator that converts a class property into a getter that\n * executes a querySelector on the element's renderRoot.\n *\n * @param selector A DOMString containing one or more selectors to match.\n * @param cache An optional boolean which when true performs the DOM query only\n * once and caches the result.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * ```ts\n * class MyElement {\n * @query('#first')\n * first: HTMLDivElement;\n *\n * render() {\n * return html`\n * <div id=\"first\"></div>\n * <div id=\"second\"></div>\n * `;\n * }\n * }\n * ```\n * @category Decorator\n */\nexport function query(selector: string, cache?: boolean): QueryDecorator {\n return (<C extends Interface<ReactiveElement>, V extends Element | null>(\n protoOrTarget: ClassAccessorDecoratorTarget<C, V>,\n nameOrContext: PropertyKey | ClassAccessorDecoratorContext<C, V>,\n descriptor?: PropertyDescriptor\n ) => {\n const doQuery = (el: Interface<ReactiveElement>): V => {\n const result = (el.renderRoot?.querySelector(selector) ?? null) as V;\n if (DEV_MODE && result === null && cache && !el.hasUpdated) {\n const name =\n typeof nameOrContext === 'object'\n ? nameOrContext.name\n : nameOrContext;\n issueWarning(\n '',\n `@query'd field ${JSON.stringify(String(name))} with the 'cache' ` +\n `flag set for selector '${selector}' has been accessed before ` +\n `the first update and returned null. This is expected if the ` +\n `renderRoot tree has not been provided beforehand (e.g. via ` +\n `Declarative Shadow DOM). Therefore the value hasn't been cached.`\n );\n }\n // TODO: if we want to allow users to assert that the query will never\n // return null, we need a new option and to throw here if the result\n // is null.\n return result;\n };\n if (cache) {\n // Accessors to wrap from either:\n // 1. The decorator target, in the case of standard decorators\n // 2. The property descriptor, in the case of experimental decorators\n // on auto-accessors.\n // 3. Functions that access our own cache-key property on the instance,\n // in the case of experimental decorators on fields.\n const {get, set} =\n typeof nameOrContext === 'object'\n ? protoOrTarget\n : descriptor ??\n (() => {\n const key = DEV_MODE\n ? Symbol(`${String(nameOrContext)} (@query() cache)`)\n : Symbol();\n type WithCache = ReactiveElement & {\n [key: symbol]: Element | null;\n };\n return {\n get() {\n return (this as WithCache)[key];\n },\n set(v) {\n (this as WithCache)[key] = v;\n },\n };\n })();\n return desc(protoOrTarget, nameOrContext, {\n get(this: ReactiveElement): V {\n let result: V = get!.call(this);\n if (result === undefined) {\n result = doQuery(this);\n if (result !== null || this.hasUpdated) {\n set!.call(this, result);\n }\n }\n return result;\n },\n });\n } else {\n // This object works as the return type for both standard and\n // experimental decorators.\n return desc(protoOrTarget, nameOrContext, {\n get(this: ReactiveElement) {\n return doQuery(this);\n },\n });\n }\n }) as QueryDecorator;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nexport type QueryAllDecorator = {\n // legacy\n (\n proto: Interface<ReactiveElement>,\n name: PropertyKey,\n descriptor?: PropertyDescriptor\n // Note TypeScript requires the return type to be `void|any`\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): void | any;\n\n // standard\n <C extends Interface<ReactiveElement>, V extends NodeList>(\n value: ClassAccessorDecoratorTarget<C, V>,\n context: ClassAccessorDecoratorContext<C, V>\n ): ClassAccessorDecoratorResult<C, V>;\n};\n\n// Shared fragment used to generate empty NodeLists when a render root is\n// undefined\nlet fragment: DocumentFragment;\n\n/**\n * A property decorator that converts a class property into a getter\n * that executes a querySelectorAll on the element's renderRoot.\n *\n * @param selector A DOMString containing one or more selectors to match.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll\n *\n * ```ts\n * class MyElement {\n * @queryAll('div')\n * divs: NodeListOf<HTMLDivElement>;\n *\n * render() {\n * return html`\n * <div id=\"first\"></div>\n * <div id=\"second\"></div>\n * `;\n * }\n * }\n * ```\n * @category Decorator\n */\nexport function queryAll(selector: string): QueryAllDecorator {\n return ((\n obj: object,\n name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>\n ) => {\n return desc(obj, name, {\n get(this: ReactiveElement) {\n const container =\n this.renderRoot ?? (fragment ??= document.createDocumentFragment());\n return container.querySelectorAll(selector);\n },\n });\n }) as QueryAllDecorator;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nexport type QueryAsyncDecorator = {\n // legacy\n (\n proto: Interface<ReactiveElement>,\n name: PropertyKey,\n descriptor?: PropertyDescriptor\n // Note TypeScript requires the return type to be `void|any`\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): void | any;\n\n // standard\n <C extends Interface<ReactiveElement>, V extends Promise<Element | null>>(\n value: ClassAccessorDecoratorTarget<C, V>,\n context: ClassAccessorDecoratorContext<C, V>\n ): ClassAccessorDecoratorResult<C, V>;\n};\n\n// Note, in the future, we may extend this decorator to support the use case\n// where the queried element may need to do work to become ready to interact\n// with (e.g. load some implementation code). If so, we might elect to\n// add a second argument defining a function that can be run to make the\n// queried element loaded/updated/ready.\n/**\n * A property decorator that converts a class property into a getter that\n * returns a promise that resolves to the result of a querySelector on the\n * element's renderRoot done after the element's `updateComplete` promise\n * resolves. When the queried property may change with element state, this\n * decorator can be used instead of requiring users to await the\n * `updateComplete` before accessing the property.\n *\n * @param selector A DOMString containing one or more selectors to match.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * ```ts\n * class MyElement {\n * @queryAsync('#first')\n * first: Promise<HTMLDivElement>;\n *\n * render() {\n * return html`\n * <div id=\"first\"></div>\n * <div id=\"second\"></div>\n * `;\n * }\n * }\n *\n * // external usage\n * async doSomethingWithFirst() {\n * (await aMyElement.first).doSomething();\n * }\n * ```\n * @category Decorator\n */\nexport function queryAsync(selector: string) {\n return ((\n obj: object,\n name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>\n ) => {\n return desc(obj, name, {\n async get(this: ReactiveElement) {\n await this.updateComplete;\n return this.renderRoot?.querySelector(selector) ?? null;\n },\n });\n }) as QueryAsyncDecorator;\n}\n","class i{constructor(s){this.listeners=new Set,this.startListenHook=s?.startListen||null,this.stopListenHook=s?.stopListen||null}on(s){return this.listeners.size===0&&this.startListenHook?.(),this.listeners.add(s),{unsubscribe:()=>this.off(s)}}off(s){const t=this.listeners.delete(s);return t&&this.listeners.size<1&&this.stopListenHook?.(),t}once(s){const t=(...e)=>{this.off(t),s(...e)};return this.on(t)}async emit(...s){const t=[];for(const e of[...this.listeners])t.push(e(...s));await Promise.all(t.filter(Boolean))}hasListener(){return!!this.listeners.size}asPromise(){return new Promise(s=>this.once(s))}clear(){this.hasListener()&&(this.listeners.clear(),this.stopListenHook?.())}dispose(){this.listeners.clear(),this.startListenHook=null,this.stopListenHook=null}}class l{constructor(s){this._listeners=new Map,this._linked=new Set,this._callstack=[],this._hooks={startListen:new i,stopListen:new i},s?.startListen&&this._hooks.startListen.on(s.startListen),s?.stopListen&&this._hooks.stopListen.on(s.stopListen)}_getListeners(s){let t=this._listeners.get(s);return t||(t=new i({startListen:()=>this._hooks.startListen.emit(s),stopListen:()=>this._hooks.stopListen.emit(s)}),this._listeners.set(s,t)),t}startListen(s){return this._hooks.startListen.on(s)}stopListen(s){return this._hooks.stopListen.on(s)}has(s){return!!this._listeners.get(s)?.hasListener()}listeners(){return[...this._listeners.keys()]}on(s,t){return this._getListeners(s).on(t)}off(s,t){return this._listeners.get(s)?.off(t)??!1}once(s,t){return this._getListeners(s).once(t)}async emit(s,...t){const e=[],r=this._listeners.get(s);r&&e.push(r.emit(...t));for(const n of[...this._linked])if(!n.hasLinkTo?.(this))e.push(n.emit(s,...t));else{const h=n._listeners.get(s);e.push(h.emit(...t))}await Promise.all(e.filter(Boolean))}asPromise(s){return this._getListeners(s).asPromise()}link(s){if(!this._linked.has(s)&&(this._linked.add(s),this._hooks.startListen.hasListener()&&s.listeners)){const t=s.listeners().filter(e=>!this._listeners.has(e));for(const e of t)this._hooks.startListen.emit(e)}}unlink(s){return this._linked.delete(s)}hasLinkTo(s){if(!this._linked.size)return!1;if(this._linked.has(s))return!0;for(const t of this._linked)if(t.hasLinkTo?.(s))return!0;return!1}isEmpty(){if(this._listeners.size>0)return!0;for(const s of this._linked)if(s.isEmpty&&!s.isEmpty())return!0;return!1}clear(){this._linked.clear(),this._listeners.clear()}}export{l as EventEmitter,i as EventWrapper};\n","import{EventWrapper as M,EventEmitter as C}from\"@dh-software/event-emitter\";import{EventEmitter as z}from\"@dh-software/event-emitter\";class g{promise;resolve;reject;constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}let k=0;function L(){return(++k).toString()}class x{stats=new Map;labels={};start(e,t=\"\"){if(this.labels[e]){this.labels[e].push(t);return}e===\"REQUEST\"&&this.end(\"IDLE\"),this.labels[e]=[t],performance.mark(`start.${e}`)}push(e,t){if(this.stats.has(e)){const s=this.stats.get(e);s.sum+=t,s.count++}else this.stats.set(e,{sum:t,count:1})}end(e,t=\"\"){if(!this.labels[e]||(this.labels[e].pop(),this.labels[e].length>0))return;performance.mark(\"end.\"+e),this.labels[e]=void 0;const s=performance.measure(e,\"start.\"+e,\"end.\"+e).duration;this.push(e,s),e===\"REQUEST\"&&this.start(\"IDLE\")}reset(e){this.stats.has(e)&&this.stats.delete(e)}get(e){return this.stats.get(e)}getAll(){return this.stats}log(e){const t=this.stats.get(e);t&&console.log(`${e}: ${t.sum} ms and called ${t.count} times`)}}const l=new x;class I{constructor(e){this._hooks=e}_localListener=new Map;_remoteListener=new Map;create(e){return this._localListener.has(e)||this._localListener.set(e,new C({startListen:t=>this._hooks.startLocalListen(e,t),stopListen:t=>this._hooks.stopLocalListen(e,t)})),this._localListener.get(e)}onLocal(e,t,s){return this.create(e).on(t,s)}onceLocal(e,t,s){return this.create(e).once(t,s)}emitFromRemote(e,t,...s){const i=this._localListener.get(e);if(i)return i.emit(t,...s)}getEventRemotes(e){return[...this._remoteListener.get(e)]}hasRemoteListener(e){return this._remoteListener.has(e)}addRemoteListener(e,t){let s=this._remoteListener.get(t);s||(s=new Set,this._remoteListener.set(t,s)),s.add(e)}removeRemote(e){this._localListener.delete(e);for(const[t,s]of[...this._remoteListener])s.delete(e),s.size===0&&this._remoteListener.delete(t)}}var r=(o=>(o[o.UNKNOWN=0]=\"UNKNOWN\",o[o.DISCONNECTED=1]=\"DISCONNECTED\",o[o.DISCONNECTING=2]=\"DISCONNECTING\",o[o.CONNECTING=3]=\"CONNECTING\",o[o.RECONNECTING=4]=\"RECONNECTING\",o[o.CONNECTED=5]=\"CONNECTED\",o[o.READY=6]=\"READY\",o))(r||{});class p extends C{static _INSTANCE_COUNTER=0;verbosity=1;_debugName;_communicator;_status=1;_stats={received:0,send:0,sumLength:0,maxLength:0,maxLengthCommand:\"\",workTime:0,maxTime:0,maxTimeCommand:\"\"};constructor(){super(),this._debugName=this.constructor.name+\"-\"+ ++p._INSTANCE_COUNTER}setCommunicator(e,t){this._communicator=e.registerConnector(this,t)}sendHandshake(){this.setStatus(5),this._communicator.sendHandshake(this)}dispose(){super.clear(),this._communicator.removeConnector(this)}receiveMessage(e){this._communicator.receiveMessage(this,e)}receiveRequest(e){return this._communicator.receiveRequest(this,e)}_ready(){this._status!==6&&(this.setStatus(6),this.emit(\"ready\"))}isReady(){return this._status===6}getStatus(){return this._status}setStatus(e){if(e!==this._status){const t=this._status;this._status=e,this.emit(\"status\",e,t),t===6&&this.emit(\"disconnect\",e)}}updateIncomingStats(e,t=0){this._stats.sumLength+=t,this._stats.received++,t>this._stats.maxLength&&(this._stats.maxLength=t,this._stats.maxLengthCommand=e.header.command),e.header.work&&(this._stats.workTime+=e.header.work,e.header.work>this._stats.maxTime&&(this._stats.maxTime=e.header.work,this._stats.maxTimeCommand=e.header.command)),this.emit(\"stats\",this._stats)}updateOutgoingStats(e,t=0){this._stats.sumLength+=t,this._stats.send++,t>this._stats.maxLength&&(this._stats.maxLength=t,this._stats.maxLengthCommand=e.header.command),this.emit(\"stats\",this._stats)}getStats(){return{type:this.type,status:`${r[this._status]} (${this._status})`,...this._stats}}getDebugName(){return this._debugName}setDebugName(e){this._debugName=e}setVerbosity(e){this.verbosity=e}}class S extends p{_pending=new Map;constructor(){super()}registerRequest(e){typeof e==\"object\"&&(e=e.reqId);const t=new g;return this._pending.set(e,t),t.promise}resolveRequest(e){const t=this._pending.get(e.header.resId);return t?(e.header.err?t.reject(e.header.err):t.resolve(e),!0):(console.error(\"No matching request found for response ID:\",e.header.resId),!1)}createResponseHeader(e){const t={};for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)){const i=e[s];s==\"reqId\"&&(s=\"resId\"),s==\"from\"?s=\"to\":s==\"to\"&&(s=\"from\"),t[s]=i}return console.assert(!!t.command,t.from,t.to,t.resId),t}send(e){this.verbosity>=3&&console.log(`WS [${this.getDebugName()}] - Send Message`,e),this.sendWrapped({header:e.header,data:e.data}),this.updateOutgoingStats(e)}async request(e){const t=e.header;return t.reqId||(t.reqId=e.header.from+L()),this.verbosity>=3&&console.log(`WS [${this.getDebugName()}] - Send Request`,e),this.updateOutgoingStats(e),this.sendWrapped({header:e.header,data:e.data}),await this.registerRequest(t)}handleWrapped(e,t){if(typeof e!=\"object\"){console.error(new TypeError(`${this.type} [${this.getDebugName()}] - Invalid Message Type, not object!`),e);return}if(this.updateIncomingStats(e,t),!e.header?.from){console.error(`${this.type} [${this.getDebugName()}] - Invalid header data!`,event);return}if(e.header.resId)this.verbosity>=3&&console.log(`[${this.getDebugName()}] - Get Response`,e),this.resolveRequest(e);else if(e.header.reqId){this.verbosity>=3&&console.log(`${this.type} [${this.getDebugName()}] - Get Request`,e);const s={header:{...e.header},data:e.data};(async()=>{const i={header:void 0,data:void 0};try{const n=await this.receiveRequest(s);n.header?i.header=n.header:i.header=this.createResponseHeader(s.header),i.data=n.data}catch(n){i.header=this.createResponseHeader(s.header),i.header.err=n.toString()}this.verbosity>=3&&console.log(`${this.type} [${this.getDebugName()}] - Send Response`,i),this.sendWrapped(i)})()}else this.verbosity>=3&&console.log(`${this.type} [${this.getDebugName()}] - Get Message`,e),this.receiveMessage(e)}}var m=(o=>(o[o.NEVER=0]=\"NEVER\",o[o.ALWAYS=1]=\"ALWAYS\",o[o.UNTIL_CONNECTING=2]=\"UNTIL_CONNECTING\",o))(m||{}),d=(o=>(o[o.NONE=0]=\"NONE\",o[o.SHOULD_PING=1]=\"SHOULD_PING\",o[o.CAN_RECONNECT=2]=\"CAN_RECONNECT\",o[o.EXISTING_CONNECTION=4]=\"EXISTING_CONNECTION\",o))(d||{});class q{constructor(){}defined(e,t=\"unexpected undefined/null\"){}number(e,t=\"unexpected undefined/null\"){}positive(e,t=\"unexpected undefined/null\"){this.number(e,t)}filledString(e,t=\"string expected\"){}}let W=new q;class A extends C{id;connector;persistent;discardMode;constructor(e){super(),this.id=e.id,this.connector=null,this.persistent=!1,this.discardMode=m.NEVER,this.update(e)}update(e){typeof e.connector<\"u\"&&e.connector!=this.connector&&(this.connector&&(this.connector.unlink(this),e.connector!=this.connector&&console.warn(`CDhMessageConnector changed unexpected for route '${this.id}'! Review Needed?`)),this.connector=e.connector,this.connector&&this.connector.link(this)),this.persistent=e.persistent??this.persistent,this.discardMode=e.discardMode??this.discardMode}getStatus(){return this.connector?this.connector.getStatus():r.DISCONNECTED}isReady(){return this.connector?.isReady()}}class O{id;_debugName;_routes=new Map;_services=[];_holdMessages=[];_pendingRequests=[];_debugIndicator;_remoteEventManager;_clientListener=new Map;_verbosity=1;_history=[];constructor(e){W.filledString(e),this._debugName=this.id=e,globalThis.communicator==null&&(globalThis.communicator=this),this._remoteEventManager=new I({startLocalListen:(t,s)=>{this.send(t,\"dh-com-listener-add\",{command:s})},stopLocalListen:(t,s)=>{this.send(t,\"dh-com-listener-remove\",{command:s})}}),globalThis.timeline?.note(\"COM created!\")}dispose(){const e=this._routes.size,t=this._services.length,s=this._holdMessages.length,i=this._pendingRequests.length;for(const n of[...this._holdMessages,...this._pendingRequests])n.defer&&n.defer.reject(new Error(\"Communicator closed, reject pending Message/Request!\"));this._pendingRequests=[],this._holdMessages=[],this._history=[];for(const[n,a]of this._routes.entries())a.connector&&a.connector.unlink(a),a.clear();this._routes.clear(),this._services=[],this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - Disposed! Routes: ${e} Services: ${t} Hold Messages: ${s} Pending Messages: ${i}!`),this._debugIndicator&&(this._debugIndicator.remove(),this._debugIndicator=null)}internalInterface(){return this}registerService(e){return e?(this._services.push(e),this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - registered service '${e.constructor.name}'!`),this.internalInterface()):{}}removeService(e){const t=this._services.indexOf(e);t>-1&&this._services.splice(t,1),this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - removed service '${e.constructor.name}'!`)}registerConnector(e,t){if(!e)return{};function s(i){return typeof i[0]==\"string\"}if(Array.isArray(t)&&t.length>0){if(s(t))t=t.map(i=>({id:i,connector:e,persistent:!0}));else for(const i of t)i.connector!==e&&(i.connector&&console.error(`connector [${e.getDebugName()}] defined route ${i.id} config with a different connector!`,i),i.connector=e);for(const i of t)this.defineRoute(i)}return this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - registered connector '${e.getDebugName()}'!`),this._verbosity&2&&(e.on(\"status\",()=>this._updateIndicator(2)),e.on(\"stats\",()=>this._updateIndicator(4)),this._updateIndicator(2)),this.internalInterface()}removeConnector(e){for(const[t,s]of this._routes.entries())if(s.connector===e){e.unlink(s),s.connector=null;const i=this._pendingRequests.filter(n=>n.message.header.to===s.id);i.length&&console.warn(\"Connector removed with pending requests... REVIEW NEEDED?\",i);for(const n of i)n.defer?.reject(\"connector removed\");this._remoteEventManager.removeRemote(t),s.persistent||this._routes.delete(t)}this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - removed connector '${e.getDebugName()}'!`)}getHandshakeData(e){return{id:this.id,routes:[...this._routes.entries()].filter(([t,s])=>s.connector!==e&&s.connector?.getStatus()===r.READY).map(([t])=>t)}}async sendHandshake(e,t){const s=this.getHandshakeData(e);t&&(s.update=!0),this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - send handshake to CON [${e.getDebugName()}]`,s);const i=await e.request({header:{from:this.id,to:\"\",command:\"handshake\"},data:s});this.updateHandshake(i.data,e)}async updateHandshake(e,t){if(!e.id){this._verbosity&1&&console.error(`COM [${this.getDebugName()}] - Invalid Handshake Data from CON [${t}]!`);return}const s=[e.id,...e.routes],i=s.filter(h=>{const c=this._routes.get(h);return c?.connector===t?!c.isReady():!0}),n=[...this._routes.values()].filter(h=>h.connector===t&&!s.includes(h.id));if(n.length===0&&i.length===0){this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - Handshake from '${e.id}' has no updates!`,e);return}this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - Handshake from '${e.id}' update! data:`,e,\"new/modified:\",i,\"missing/removed\",n);const a=i.map(h=>this.defineRoute(h,t));for(const h of n)if(h.persistent)h.update({id:h.id,connector:null});else{const c=h.connector.getStatus();h.emit(\"status\",r.DISCONNECTED,c),c===r.READY&&h.emit(\"disconnect\",r.DISCONNECTED),this._routes.delete(h.id)}if(!t.isReady())t._ready();else for(const h of a)h.emit(\"status\",r.READY),h.emit(\"ready\");if(this._routes.size!==i.length){const h=[];for(const c of this._routes.values())t!==c.connector&&c.isReady()&&!h.includes(c.connector)&&h.push(c.connector);for(const c of h)this.sendHandshake(c,!0)}this._verbosity&2&&this._updateIndicator(7)}listen(e,t,s){if(!this.hasRoute(e))throw ReferenceError(`listen to unknown route '${e}'`);return this._remoteEventManager.onLocal(e,t,s)}listenOnce(e,t,s){if(!this.hasRoute(e))throw ReferenceError(`listen to unknown route '${e}'`);return this._remoteEventManager.onceLocal(e,t,s)}hasListener(e){return this._remoteEventManager.hasRemoteListener(e)}emit(e,t){const s=this._remoteEventManager.getEventRemotes(e);for(const i of s)this._internalSend({header:{from:this.id,to:i,command:e},data:t})}send(e,t,s){this._internalSend({header:{from:this.id,to:e,command:t},data:s})}async request(e,t,s){return(await this._internalRequest({header:{from:this.id,to:e,command:t},data:s})).data}receiveMessage(e,t){if(t.header.to===\"*\"){for(const s of this._services)s.processMessage(t);this._internalSend(t);return}if(t.header.to!==this.id){this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - redirect message`,t),this._internalSend(t),l.end(\"RECEIVE\",t.header.command);return}if(this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - received message '${t.header.command}' from '${t.header.from}'`,t),t.header.command.startsWith(\"dh-com-listener-\")){t.data.command&&(this._clientListener.has(t.data.command)||this._clientListener.set(t.data.command,new Set)),this._clientListener.get(t.data.command).add(t.header.from);return}else this._remoteEventManager.emitFromRemote(t.header.from,t.header.command,t.data);for(const s of this._services)s.processMessage(t);l.end(\"RECEIVE\",t.header.command)}async receiveRequest(e,t){if(t.header.command===\"handshake\")return t.header.to=this.id,this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - received handshake request from '${t.header.from}'`,t.data),t.data.update&&this.updateHandshake(t.data,e),l.end(\"RECEIVE\",t.header.command),Promise.resolve({header:null,data:this.getHandshakeData(e)});if(t.header.to!==this.id){for(const i of this._services){const n=i.intercept(t);if(n!=null)return this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - Service '${i.constructor.name}' intercept request '${t.header.command}' from '${t.header.from}' to '${t.header.to}'`,t),l.end(\"RECEIVE\",t.header.command),await n}this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - redirect request '${t.header.command}' from '${t.header.from}' to '${t.header.to}'`,t);const s=this._internalRequest(t);return l.end(\"RECEIVE\",t.header.command),await s}this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - received request '${t.header.command}' from '${t.header.from}'`,t);for(const s of this._services){const i=s.processRequest(t);if(i)return l.end(\"RECEIVE\",t.header.command),i.then(n=>({header:null,data:n}))}return l.end(\"RECEIVE\",t.header.command),Promise.reject(new Error(`COM [${this.getDebugName()}] - no service to handle requested command '${t.header.command}'`))}async _internalSend(e){if(e.header.to===\"*\"){const s=this.getRoute(e.header.from),i=new Set([...this._routes.values()].map(n=>n.isReady()?n.connector:void 0).filter(n=>n&&n!==s?.connector));for(const n of i)n.send(e);return}const t=this.getRoute(e.header.to);if(t){if(!t.connector||t.connector.getStatus()!==r.READY){if(t.discardMode===m.ALWAYS||t.discardMode===m.UNTIL_CONNECTING&&t.connector.getStatus()<r.CONNECTING)return;this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - route to ${e.header.to} not ready! ...Waiting for connector update.`),await this.holdMessage(e)}}else throw ReferenceError(`send to unknown route '${e.header.to}'`);if(this._verbosity&4){const s={type:0,req:e};this._history.push(s)}t.connector.send(e)}async _internalRequest(e){l.start(\"REQUEST\",e.header.command);let t;const s=this.getRoute(e.header.to);if(s)if(s.isReady())t=globalThis.timeline?.add(`REQ-${e.header.command}`);else{if(s.discardMode===m.ALWAYS)return Promise.reject(\"Not Connected\");if(s.discardMode===m.UNTIL_CONNECTING&&s.connector.getStatus()<r.CONNECTING)return Promise.reject(\"Not Connected\");this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - route to ${e.header.to} not ready! ...Waiting for connector update.`),t=globalThis.timeline?.add(`REQ-${e.header.command}`),await this.holdMessage(e)}else return Promise.reject(new ReferenceError(`request to unknown route '${e.header.to}'`));let i;this._verbosity&&(this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - send request '${e.header.command}' by connector '${s.connector.getDebugName()}'`),this._verbosity&2&&this._updateIndicator(1),this._verbosity&4&&(i={type:1,req:e,res:\"<yet not received>\"},this._history.push(i)));const n={message:e,defer:new g};this._pendingRequests.push(n);const a=await s.connector.request(e);return t?.stop(),i&&(i.res=a),this._pendingRequests.splice(this._pendingRequests.indexOf(n),1),this._verbosity&2&&(this._updateIndicator(5),l.end(\"REQUEST\",e.header.command)),a}holdMessage(e){const t={message:e,defer:new g},s=this.getRoute(e.header.to);return this._holdMessages.push(t),this._updateIndicator(1),s.asPromise(\"ready\").then(()=>{this._holdMessages.splice(this._holdMessages.indexOf(t)),this._updateIndicator(1)})}defineRoute(e,t=null,s=!0){typeof e==\"string\"&&(e={id:e,persistent:s,connector:t});let i=this._routes.get(e.id);if(i)i.update(e);else{i=new A(e),this._routes.set(e.id,i);const n=globalThis.timeline?.add(`Route: create '${e.id}'`);n&&i.once(\"ready\",()=>n.stop())}return i}getRouteStatus(e){const t=this.getRoute(e);return t?t.getStatus():r.UNKNOWN}getRoute(e){return this._routes.get(e)}hasRoute(e){return this._routes.has(e)}static getMainInstance(){return globalThis.communicator}static _onMainInstance;static mainInstanceRegistered(e){if(globalThis.communicator){e(globalThis.communicator);return}this._onMainInstance||(this._onMainInstance=new M),this._onMainInstance.on(e)}static setMainInstance(e){if(globalThis.communicator&&globalThis.communicator!==e)throw new Error(\"Multiple Main Instances of MessageCommunicator not allowed!\");if(globalThis.communicator===0&&e)throw new Error(\"Main Instance of MessageCommunicator was disabled and should not dynamically change!\");globalThis.communicator=e,e&&this._onMainInstance&&(this._onMainInstance.emit(e),this._onMainInstance.dispose(),this._onMainInstance=null)}getDebugName(){return this._debugName}setDebugName(e){this._debugName=e}setVerbosity(e){typeof window==\"object\"&&typeof window.document==\"object\"&&(e&2)!==(this._verbosity&2)&&(e&2?(this._debugIndicator=document.createElement(\"dhcom-debug-indicator\"),document.body.appendChild(this._debugIndicator),this._updateIndicator(255)):this._debugIndicator&&(this._debugIndicator.remove(),this._debugIndicator=null)),this._verbosity=e}getConnectorList(){const e=[];for(const[t,s]of this._routes)s.connector&&!e.includes(s.connector)&&e.push(s.connector);return e}_updateIndicator(e){if(this._debugIndicator&&(e&1&&this._debugIndicator.setAttribute(\"counter\",this._pendingRequests.length.toString()),e&7)){const t=this.getConnectorList();if(e&4){const s={name:this.getDebugName(),connectors:{},pending:this._pendingRequests.map(i=>i.message.header.command)};for(const i of t){const n=[...this._routes.values()].filter(a=>a.connector===i).map(a=>a.id);s.connectors[i.getDebugName()]={routes:n,...i.getStats()}}this._debugIndicator.renderStats(s)}if(e&2){let s=r.READY,i=r.UNKNOWN;for(const n of t){const a=n.getStatus();a<s&&(s=a),a>i&&(i=a)}s>i&&(s=r.UNKNOWN),this._debugIndicator.setAttribute(\"status\",s.toString())}}}}class D{communicator;setCommunicator(e){this.communicator=e.registerService(this)}dispose(){return this.communicator.removeService(this)}processMessage(e){return!1}processRequest(e){}intercept(e){}send(e,t,s){this.communicator.send(e,t,s)}request(e,t,s){return this.communicator.request(e,t,s)}listen(e,t,s){return this.communicator.listen(e,t,s)}listenOnce(e,t,s){return this.communicator.listenOnce(e,t,s)}hasListener(e){return this.communicator.hasListener(e)}emit(e,t){return this.communicator.emit(e,t)}}class G extends p{type=\"Direct\";other;constructor(e){super(),e&&(this.other=e,e.other=this)}_init(){this.other&&this.sendHandshake()}request(e){return this.other.receiveRequest(e)}send(e){this.other.receiveMessage(e)}}class E extends S{constructor(e,t){super(),this.targetWindow=e,this.targetOrigin=t}type=\"PostMessage\";start(){window.addEventListener(\"message\",e=>this.receiveEvent(e)),this.sendHandshake()}resetTargetWindow(e){this.targetWindow=e,this.targetOrigin=e.origin,this.setStatus(r.RECONNECTING),this.init()}async receiveEvent(e){try{if(typeof e.data==\"string\")return;if(this.targetOrigin!==\"*\"&&e.origin!=this.targetOrigin){console.log(`[${this.getDebugName()}] - Origin mismatch`,e.origin,this.targetOrigin);return}this.handleWrapped(e.data)}catch(t){console.error(`[${this.getDebugName()}] - CATCH in Socket Message`,e,t)}}sendWrapped(e){try{this.targetWindow.postMessage(e,this.targetOrigin)}catch(t){console.error(t,e)}}init(){E.tryPing(this.targetWindow,e=>{this.targetWindow=e.source,this.start()})}static tryPing(e,t){const s=e.origin;let i=n=>{if(n.origin===s)switch(e!=n.source&&console.warn(\"CHECK target?!\",e,n.source),n.data){case\"dh-pmc-init-ping\":n.source.postMessage(\"dh-pmc-init-pong\",n.origin);case\"dh-pmc-init-pong\":window.removeEventListener(\"message\",i),t(n)}};window.addEventListener(\"message\",i),e.postMessage(\"dh-pmc-init-ping\",\"*\")}}class H extends S{type=\"WebSocket\";impl;holdMessages=new g;pingTime=3e4;reconnectConfig={counter:-1,delay:1e3,id:null};pingTimerId;constructor(e,t){super(),this.reset(e),t&&this.setCommunicator(t)}init(){this.impl.onOpen=()=>this.onSocketOpen(),this.impl.onClose=()=>this.onSocketClose(),this.impl.onMessage=e=>this.onSocketMessage(e),this.impl.onError=e=>console.error(e)}reset(e){this.getStatus()!==r.DISCONNECTED&&this.disconnect(),this.impl=e,e&&(this.init(),(this.impl.traits&d.CAN_RECONNECT)===0&&(this.reconnectConfig=null),(this.impl.traits&d.SHOULD_PING)===0&&(this.pingTime=0),this.impl.traits&d.EXISTING_CONNECTION&&this.setStatus(r.CONNECTING))}getImpl(){return this.impl}setReconnectConfig(e){if((this.impl.traits&d.CAN_RECONNECT)===0)return;const t=this.reconnectConfig?.id;if(t&&(clearTimeout(this.reconnectConfig.id),this.reconnectConfig.id=null,this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Restart canceled`)),!e?.counter||e.delay<0){this.reconnectConfig=null,this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Restart disabled`);return}console.log(`WS [${this.getDebugName()}] - New restart config`,e),this.reconnectConfig.counter=e.counter,this.reconnectConfig.delay=e.delay,t&&this.connect()}setPingTime(e=30){this.pingTime!==e&&(this.pingTime=e*1e3,console.log(`WS [${this.getDebugName()}] - New ping time:`,e),this.updatePing(!!this.pingTime))}updatePing(e){this.pingTimerId&&clearInterval(this.pingTimerId),e&&this.pingTime>0&&(this.pingTimerId=setInterval(()=>this.ping(),this.pingTime))}connect(){if(!this.impl){console.error(`WS [${this.getDebugName()}] - Missing Socket-Implentation`);return}this.verbosity>=2&&console.log(`WS [${this.getDebugName()}]- Connected`),this.setStatus(r.CONNECTING),this.impl.start()}terminate(){this.impl&&(this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Disconnected`),this.setStatus(r.DISCONNECTED),this.impl.stop())}disconnect(){this.impl&&(this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Disconnected`),this.getStatus()>r.DISCONNECTING&&this.setStatus(r.DISCONNECTING),this.impl.stop())}onSocketOpen(){if(this.getStatus()<r.CONNECTING&&(console.warn(`Unexpected Web Socket Connection State ${this.getStatus()}!`),this.getStatus()===r.DISCONNECTING)){this.impl.stop();return}this.setStatus(r.CONNECTED),this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Socket Connected`),this.updatePing(!0),this.sendHandshake();const e=this.holdMessages;this.holdMessages=void 0,e?.resolve()}reconnect(e){this.impl.traits&d.CAN_RECONNECT&&(this.reconnectConfig?.id&&(clearTimeout(this.reconnectConfig.id),this.reconnectConfig.id=null),this.setStatus(r.RECONNECTING),this.getStatus()>=r.CONNECTED&&(this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - forced stop for reconnect`),this.impl.stop()),e?(this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Restart in ${e} ms`),this.reconnectConfig.id=setTimeout(()=>{this.reconnectConfig.id=null,this.connect()},e)):this.connect())}onSocketClose(){if(this.holdMessages||(this.holdMessages=new g),clearInterval(this.pingTimerId),console.warn(`WS [${this.getDebugName()}] - Socket closed`),!(this.impl.traits&d.CAN_RECONNECT&&this.reconnectConfig?.counter&&this.getStatus()>r.DISCONNECTING)){this.setStatus(r.DISCONNECTED);return}this.reconnectConfig.counter>0&&this.reconnectConfig.counter--,this.reconnect(this.reconnectConfig.delay)}ping(){this.impl.send(\"ping\")}sendWrapped(e){const t=JSON.stringify(e);return this.impl.send(t),t.length}onSocketMessage(e){try{if(typeof e!=\"string\"){console.error(`WS [${this.getDebugName()}] - Invalid data from`,e);return}else if(e[0]!==\"{\")if(e===\"ping\"){this.impl.send(\"pong\"),this.emit(\"ping\");return}else if(e===\"pong\"){this.emit(\"ping\");return}else{console.error(`WS [${this.getDebugName()}] - Invalid data from`,e);return}const t=JSON.parse(e);this.handleWrapped(t,e.length)}catch(t){console.error(`WS [${this.getDebugName()}] - CATCH in Socket Message`,e,t)}}}class R{constructor(e){this.name=e,this.name=e,this.start=performance.now(),this.end=0}start;end;stop(){this.end=performance.now()}}class f{name=window.location.pathname.match(/^\\/(?<basepath>\\w+)\\b/)?.groups?.basepath||\"nopath\";clock=Date.now()-performance.now();times=[];constructor(){if(this.note(\"Timeline: start\"),typeof window<\"u\"){const e=this.add(\"load\");window.addEventListener(\"load\",()=>e.stop())}setTimeout(()=>{performance.getEntriesByType(\"resource\").forEach(e=>{const t=this.add(`RES(${e.initiatorType}): ${e.name}`);t.start=e.fetchStart,t.end=e.responseEnd}),this.times.sort((e,t)=>e.start-t.start),console.log(\"TIMELINE:\",this)},2e4)}add(e){const t=new R(e);return this.times.push(t),t}note(e){const t=new R(e);this.times.push(t),t.end=t.start}static stackCounter=new Map;stack(e){let t=f.stackCounter.get(e);return t?t.i===0&&performance.now()-t.t.end>1?(t={i:1,t:this.add(e)},f.stackCounter.set(e,t)):++t.i:(t={i:1,t:this.add(e)},f.stackCounter.set(e,t)),{pop:()=>{--t.i===0&&t.t.stop()}}}}globalThis.timeline=new f;class U extends D{processMessage(e){return e.header.command===\"getTimeline\"&&globalThis.timeline?(this.send(e.header.from,\"timelineData\",structuredClone(globalThis.timeline)),!0):!1}}let T=null;if(O.mainInstanceRegistered(o=>{T=new U,T.setCommunicator(o)}),typeof window<\"u\"&&typeof document<\"u\"&&!customElements.get(\"dhcom-debug-indicator\")){class o extends HTMLElement{status=r.UNKNOWN;counter=0;shadow;circle;badge;tooltip;keepOpen=!1;communicator;constructor(){super()}static get observedAttributes(){return[\"status\",\"counter\"]}connectedCallback(){this.shadow||(this.shadow=this.attachShadow({mode:\"open\"}),this.build())}disconnectedCallback(){}attributeChangedCallback(t,s,i){s!==i&&(t===\"status\"&&(this.status=parseInt(i,10)||0,this.circle.style.backgroundColor=this.getColor()),t===\"counter\"&&(this.counter=parseInt(i,10)||0,this.badge.innerHTML=i,this.badge.style.display=this.counter?\"block\":\"none\"))}renderStatsTree(t,s=0){return`<ul>${Object.entries(t).map(([i,n])=>n?(Array.isArray(n)?n=n.join(\", \"):typeof n==\"object\"?n=this.renderStatsTree(n,s+1):n=` <i>${n}</i>`,`<li class=\"level${s}\"><b>${i}</b>:${n}</li>`):\"\").join(\"\")}</ul>`}renderStats(t){const s=this.keepOpen?'<svg class=\"lock\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"white\"><path d=\"M6.5 9V6a3.5 3.5 0 1 1 7 0v3\" stroke=\"white\" stroke-width=\"2\" fill=\"none\"/><rect x=\"5\" y=\"8\" width=\"10\" height=\"8\" rx=\"1\" fill=\"white\"/></svg>':\"\";this.tooltip.innerHTML=`<h4>${t.name} Communication</h4>${s}`+this.renderStatsTree(t)}build(){this.shadow.innerHTML=`\n\t\t\t\t<style>\n\t\t\t\t:host {\n\t\t\t\t\tposition: fixed;\n\t\t\t\t\tbottom: 30px;\n\t\t\t\t\tleft: 30px;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t\theight: 20px;\n\t\t\t\t\tz-index: 9999999;\n\t\t\t\t\tfont-family: arial;\n\t\t\t\t\tmax-width: 350px;\n\t\t\t\t}\n\t\t\t\t.circle {\n\t\t\t\t\twidth: 20px;\n\t\t\t\t\theight: 20px;\n\t\t\t\t\tborder-radius: 50%;\n\t\t\t\t\tbackground-color: ${this.getColor()};\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tcursor: grab;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t}\n\t\t\t\t.badge {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbottom: 60%;\n\t\t\t\t\tleft: 60%;\n\t\t\t\t\tbackground-color: blue;\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tfont-size: 9px;\n\t\t\t\t\tline-height: 10px;\n\t\t\t\t\tpadding: 2px;\n\t\t\t\t\tborder-radius: 12px;\n\t\t\t\t}\n\t\t\t\t.tooltip {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbackground: rgba(0, 0, 0, 0.8);\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tpadding: 10px;\n\t\t\t\t\tborder-radius: 5px;\n\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\tz-index: 99999999;\n\t\t\t\t}\n\t\t\t\t.tooltip h4 {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t}\n\t\t\t\t.tooltip ul {\n\t\t\t\t\tpadding: 0 0 0 5px;\n\t\t\t\t\tmargin: 0 0 0 10px;\n\t\t\t\t}\n\t\t\t\t.tooltip li {\n\t\t\t\t\tmargin: 2px 0;\n\t\t\t\t}\n\t\t\t\t.lock {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: 5px;\n\t\t\t\t\ttop: 5px;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t\theight: 20px;\n\t\t\t\t}\n\t\t\t\t</style>\n\t\t\t\t<div class=\"circle\">\n\t\t\t\t<span class=\"badge\">${this.counter}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"tooltip\">\n\t\t\t\t\t<h4>Debug-Statistiken</h4>\n\t\t\t\t</div>\n\t\t\t`,this.circle=this.shadow.querySelector(\".circle\"),this.badge=this.shadow.querySelector(\".badge\"),this.tooltip=this.shadow.querySelector(\".tooltip\"),this.circle.addEventListener(\"contextmenu\",t=>(this.keepOpen=!this.keepOpen,t.preventDefault(),1)),this.tooltip.style.left=\"80%\",this.tooltip.style.bottom=\"80%\",this.addEventListener(\"mouseenter\",()=>{this.tooltip.style.display=\"block\"}),this.addEventListener(\"mouseleave\",()=>{this.keepOpen||(this.tooltip.style.display=\"none\")}),this.enableDragging()}enableDragging(){const t=this.circle;let s=!1,i=0,n=0;const a={x:0,y:0},h=(u,N)=>{a.x=u-i,a.y=N-n;const _=window.innerWidth-t.clientWidth,b=window.innerHeight-t.clientHeight;a.x=Math.max(0,Math.min(a.x,_)),a.y=Math.max(0,Math.min(a.y,b)),this.tooltip.style.left=a.x<_*.5?\"80%\":\"\",this.tooltip.style.right=a.x<_*.5?\"\":\"80%\",this.tooltip.style.top=a.y<b*.5?\"80%\":\"\",this.tooltip.style.bottom=a.y<b*.5?\"\":\"80%\",this.style.left=`${a.x}px`,this.style.top=`${a.y}px`},c=\"_debug_comindicator_pos_\"+window.location.pathname.substring(1),v=localStorage.getItem(c);if(v){const{x:u,y:N}=JSON.parse(v);h(u,N)}const $=u=>{s=!0,i=u.clientX-this.getBoundingClientRect().left,n=u.clientY-this.getBoundingClientRect().top,this.circle.style.cursor=\"grabbing\",document.addEventListener(\"mousemove\",y),document.addEventListener(\"mouseup\",w)},y=u=>{s&&h(u.clientX,u.clientY)},w=()=>{s=!1,this.circle.style.cursor=\"\",document.removeEventListener(\"mousemove\",y),document.removeEventListener(\"mouseup\",w),localStorage.setItem(c,JSON.stringify(a))};t.addEventListener(\"mousedown\",$)}getColor(){switch(this.status){case r.UNKNOWN:return\"gray\";case r.DISCONNECTED:return\"red\";case r.DISCONNECTING:return\"red\";case r.CONNECTING:return\"orange\";case r.RECONNECTING:return\"yellow\";case r.CONNECTED:return\"turquoise\";case r.READY:return\"green\";default:return\"gray\"}}}customElements.define(\"dhcom-debug-indicator\",o)}class j{traits=d.CAN_RECONNECT|d.SHOULD_PING;url;socket;onMessage;onOpen;onClose;onError;constructor(e){this.url=new URL(e)}getUrl(){return this.url}setUrl(e){this.url=new URL(e),this.url.protocol.startsWith(\"ws\")||(console.warn(`WS WebSocket url '${e.toString()}' should use Protocol 'wss://' or 'ws://'!`),this.url.protocol===\"https\"?this.url.protocol=\"wss\":this.url.protocol=\"ws\")}start(){this.socket=new WebSocket(this.getUrl()),this.socket.onmessage=e=>this.onMessage(e.data),this.socket.onerror=e=>this.onError(e),this.socket.onopen=()=>this.onOpen(),this.socket.onclose=()=>{this.socket=null,this.onClose()}}stop(e=!0){this.socket&&(e||(this.socket.onmessage=null,this.socket.onerror=null,this.socket.onclose=null),this.socket.close())}send(e){this.socket.send(e)}}export{G as CDhDirectConnector,O as CDhMessageCommunicator,p as CDhMessageConnector,D as CDhMessageService,E as CDhPostMessageConnector,j as CDhWebSocketBrowserClient,H as CDhWebSocketConnector,r as ConnectorStatus,z as EventEmitter,I as RemoteEventManager,m as RouteMessageDiscardMode,d as WebSocketTraits};\n","import {PropertyDeclaration} from \"lit\";\r\nimport {InternalPropertyDeclaration} from \"lit/decorators.js\";\r\n\r\ntype UnwrapArray<T> = T extends Array<infer U> ? U : T;\r\n\r\ntype FallbackProvider<T> = {\r\n fallback?: T\r\n subkeyValidation?: SubkeyValidation<UnwrapArray<T>>\r\n}\r\n\r\ntype SubkeyValidation<T> = {\r\n [K in keyof T]?: any\r\n}\r\n\r\nexport type BaseDeclaration<T> = PropertyDeclaration<T> | InternalPropertyDeclaration<T>;\r\nexport type FallbackPropertyDeclaration<T> = FallbackProvider<T> & PropertyDeclaration<T>;\r\nexport type InternalFallbackPropertyDeclaration<T> = FallbackProvider<T> & InternalPropertyDeclaration<T>\r\nexport type PropertyDecoratorFunction<T = any> = (options?: BaseDeclaration<T>) => PropertyDecorator;\r\n\r\nexport type ValidationResult = {\r\n changed: boolean;\r\n result?: any;\r\n}\r\n\r\nexport class PropertyValidator {\r\n\r\n private static templates = new WeakMap<object, Map<string | symbol, object>>();\r\n\r\n private _getNestedOptions(key: string, options: FallbackPropertyDeclaration<any>): any | undefined {\r\n return options?.subkeyValidation?.[key] ?? undefined;\r\n }\r\n\r\n private _log(propertyName: string | symbol, value: any) {\r\n console.warn(\r\n `[ValidatedProperty] Key '${String(propertyName)}' was set to 'undefined'. Reverting to`, value ?? `'empty'`\r\n );\r\n return value;\r\n }\r\n\r\n private _validateObject(object: any, template: any, options: FallbackPropertyDeclaration<any>, initialize: boolean): ValidationResult {\r\n let changed = false;\r\n\r\n for (const key in template) {\r\n if (!Object.prototype.hasOwnProperty.call(template, key)) {\r\n continue;\r\n }\r\n const currentNestedOptions = this._getNestedOptions(key, options);\r\n const templateValue = (template as any)[key];\r\n const currentValue = (object as any)[key];\r\n\r\n if (currentValue === undefined) {\r\n let templateToUse = currentNestedOptions ?? templateValue;\r\n\r\n if (currentNestedOptions && templateToUse !== undefined) {\r\n const nestedResult = this.validateObjectProperty(key, Array.isArray(templateToUse) ? [] : {}, templateToUse, options, false);\r\n templateToUse = nestedResult.result;\r\n } else {\r\n templateToUse = templateValue;\r\n }\r\n (object as any)[key] = this._log(key, templateToUse);\r\n changed = true;\r\n } else if(currentNestedOptions) {\r\n const nestedResult = this.validateObjectProperty(key, currentValue, currentNestedOptions, options, false);\r\n\r\n if (nestedResult.changed) {\r\n object[key] = this._log(key, nestedResult.result);\r\n changed = true;\r\n }\r\n }\r\n }\r\n return {\r\n changed,\r\n result: object\r\n }\r\n }\r\n\r\n private _validateArray(array: any[], validationTemplate: any, options: FallbackPropertyDeclaration<any>, initialize: boolean): ValidationResult {\r\n let changed = false;\r\n const arrayToValidate = initialize ? [] : array;\r\n const elementTemplate = Array.isArray(validationTemplate) ? validationTemplate[0] : validationTemplate;\r\n\r\n if (!elementTemplate) {\r\n return { changed: false, result: array };\r\n }\r\n\r\n const validatedArray = arrayToValidate.map(x => {\r\n const result = this._validateObject(x, elementTemplate, options, initialize);\r\n if (result.changed) changed = true;\r\n return result.result;\r\n });\r\n\r\n return {\r\n changed: changed,\r\n result: validatedArray,\r\n }\r\n }\r\n\r\n private _getValidatedValue(value: any, template: any, options: FallbackPropertyDeclaration<any>, initialize = false): any {\r\n if (Array.isArray(value)) {\r\n return this._validateArray([...value], template, options, initialize);\r\n } else {\r\n return this._validateObject({...value}, template, options, initialize);\r\n }\r\n }\r\n\r\n validateObjectProperty(\r\n propertyName: string | symbol,\r\n value: any,\r\n template: any,\r\n options: FallbackPropertyDeclaration<any>,\r\n initialize = false,\r\n depth = 0\r\n ): ValidationResult {\r\n if (value === undefined) {\r\n return {changed: true, result: JSON.parse(JSON.stringify(this._log(propertyName, template)))};\r\n }\r\n if (typeof value !== 'object' || value === null) {\r\n return {changed: false, result: value};\r\n }\r\n return this._getValidatedValue(value, template, options, initialize);\r\n }\r\n\r\n static getTemplate(prototype: any, propertyKey: string | symbol) : object | undefined {\r\n return this.templates!.get(prototype)?.get(propertyKey);\r\n }\r\n\r\n static setTemplate(prototype: any, propertyKey: string | symbol, val: any) {\r\n if (typeof val === 'object' && val !== null && val !== undefined && !Array.isArray(val)) {\r\n if (!this.templates.has(prototype)) {\r\n this.templates.set(prototype, new Map());\r\n }\r\n this.templates.get(prototype)!.set(propertyKey, JSON.parse(JSON.stringify(val)));\r\n }\r\n }\r\n\r\n}\r\n","import {InternalPropertyDeclaration, property, state} from \"lit/decorators.js\";\r\nimport {LitElement, PropertyDeclaration} from \"lit\";\r\nimport {\r\n BaseDeclaration,\r\n FallbackPropertyDeclaration, InternalFallbackPropertyDeclaration,\r\n PropertyDecoratorFunction,\r\n PropertyValidator\r\n} from \"../PropertyValidator\";\r\n\r\nconst validator = new PropertyValidator();\r\n\r\nfunction createValidatedDecorator<T>(\r\n baseDecorator: PropertyDecoratorFunction<T>\r\n): (options?: BaseDeclaration<T>) => PropertyDecorator {\r\n return function (options?: FallbackPropertyDeclaration<T>): PropertyDecorator {\r\n return function (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) {\r\n const elementPrototype = target as object;\r\n const privateKey = Symbol(`__default_val_${String(propertyKey)}`);\r\n Object.defineProperty(elementPrototype, propertyKey, {\r\n configurable: true,\r\n enumerable: true,\r\n set(this: any, val: any) {\r\n PropertyValidator.setTemplate(elementPrototype, propertyKey, val);\r\n this[privateKey] = val;\r\n delete this[propertyKey];\r\n },\r\n get(this: any) {\r\n return this[privateKey];\r\n }\r\n });\r\n\r\n baseDecorator(options)(target, propertyKey);\r\n\r\n const litDescriptor = Object.getOwnPropertyDescriptor(elementPrototype, propertyKey);\r\n\r\n if (litDescriptor && litDescriptor.set) {\r\n const originalLitSetter = litDescriptor.set;\r\n if (options?.fallback && !PropertyValidator.getTemplate(target, propertyKey)) {\r\n target[privateKey] = options?.fallback\r\n }\r\n Object.defineProperty(elementPrototype, propertyKey, {\r\n ...litDescriptor,\r\n set(this: LitElement, newValue: any) {\r\n const template = PropertyValidator.getTemplate(target, propertyKey) ?? options?.fallback;\r\n let validatedValue = newValue;\r\n if (template) {\r\n validatedValue = validator.validateObjectProperty(propertyKey, newValue, template, options).result;\r\n }\r\n\r\n const oldValue = this[privateKey];\r\n this[privateKey] = validatedValue;\r\n originalLitSetter.call(this, validatedValue);\r\n this.requestUpdate(propertyKey, oldValue);\r\n },\r\n get(this: any) {\r\n return this[privateKey];\r\n }\r\n });\r\n }\r\n };\r\n };\r\n}\r\n\r\nexport function validatedProperty<T>(options?: FallbackPropertyDeclaration<T>): PropertyDecorator {\r\n return createValidatedDecorator<T>(property)(options);\r\n}\r\nexport function validatedState<T>(options?: InternalFallbackPropertyDeclaration<T>): PropertyDecorator {\r\n return createValidatedDecorator<T>(state)(options);\r\n}\r\n","import {LitElement} from \"lit\";\r\n\r\ninterface EventRefListener<T = Event> {\r\n (evt: T): void;\r\n}\r\n\r\ninterface EventRefListenerObject<T = Event> {\r\n handleEvent(object: T): void;\r\n}\r\n\r\ntype EventRefListenerOrEventRefListenerObject<T> = EventRefListener<T> | EventRefListenerObject<T>\r\n\r\ntype RefListener<T> = T extends Event ? EventRefListenerOrEventRefListenerObject<T> : EventRefListenerOrEventRefListenerObject<CustomEvent<T>>;\r\n\r\nexport interface EventRef<T> extends EventRefImpl<T> {}\r\n/**\r\n * A reference to a specific event on a LitElement.\r\n * This class handles creating and dispatching the event, and adding/removing listeners.\r\n */\r\nclass EventRefImpl<T> implements EventRef<T> {\r\n constructor(public element: LitElement, public name: string, public env: EventInit) {\r\n\r\n }\r\n\r\n /**\r\n * Composes the event to be dispatched.\r\n * If the detail is an Event of the correct type, it is returned directly.\r\n * Otherwise, a new CustomEvent is created with the detail.\r\n * @param detail The event detail or the event itself.\r\n * @returns The event to dispatch.\r\n */\r\n private composeEvent(detail?: T) {\r\n if (detail instanceof Event && detail.type == this.name) {\r\n return detail;\r\n }\r\n return new CustomEvent(this.name, {...this.env, detail})\r\n }\r\n\r\n /**\r\n * Dispatches the event on the element.\r\n * @param detail The event detail or the event itself.\r\n */\r\n dispatch(detail?: T) {\r\n this.element.dispatchEvent(this.composeEvent(detail));\r\n }\r\n\r\n /**\r\n * Adds an event listener to the element for this event.\r\n * @param callback The function to be called when the event is dispatched.\r\n * @param options Options for the event listener.\r\n */\r\n addListener<K = T>(callback: RefListener<K> | null, options?: AddEventListenerOptions | boolean): void {\r\n this.element.addEventListener(this.name, callback, options);\r\n }\r\n\r\n /**\r\n * Removes an event listener from the element for this event.\r\n * @param callback The function to remove.\r\n * @param options Options for the event listener.\r\n */\r\n removeListener<K = T>(callback: RefListener<K> | null, options?: EventListenerOptions | boolean): void {\r\n this.element.removeEventListener(this.name, callback, options);\r\n }\r\n\r\n handleEvent(object: T): void {\r\n this.dispatch()\r\n }\r\n\r\n detail(object: T): EventListenerObject {\r\n const _this = this;\r\n return {\r\n handleEvent(_event: Event) {\r\n _this.dispatch(object);\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\nclass ManagedEventRef<T = undefined> extends EventRefImpl<T> {\r\n\r\n private listeners: Array<{\r\n callback: RefListener<any>,\r\n options?: AddEventListenerOptions | boolean\r\n }> = [];\r\n\r\n addListener<K = T>(callback: RefListener<K> | null, options?: AddEventListenerOptions | boolean) {\r\n this.listeners.push({callback, options});\r\n super.addListener(callback, options);\r\n }\r\n\r\n removeListener<K = T>(callback: RefListener<K> | null, options?: EventListenerOptions | boolean) {\r\n super.removeListener(callback, options);\r\n const index = this.listeners.findIndex(\r\n (l) => l.callback === callback && l.options === options\r\n );\r\n if (index > -1) {\r\n this.listeners.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Removes all listeners that were added through this specific instance of ManagedEventRef.\r\n */\r\n removeAll() {\r\n for (const {callback, options} of this.listeners) {\r\n super.removeListener(callback, options);\r\n }\r\n this.listeners = [];\r\n }\r\n\r\n}\r\n\r\nexport function event(\r\n options?: EventInit,\r\n eventName?: string\r\n): PropertyDecorator {\r\n return (protoOrDescriptor: any, propertyKey: string | symbol) => {\r\n eventName = eventName || propertyKey.toString().toLowerCase();\r\n if (eventName.endsWith(\"event\")) {\r\n eventName = eventName.replace(\"event\", '');\r\n }\r\n const privateKey = Symbol(`__${String(propertyKey)}_eventRef`);\r\n Object.defineProperty(protoOrDescriptor, propertyKey, {\r\n get(this: LitElement) {\r\n if (!(this as any)[privateKey]) {\r\n (this as any)[privateKey] = new EventRefImpl(\r\n this,\r\n eventName,\r\n options\r\n );\r\n }\r\n return (this as any)[privateKey];\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n };\r\n}\r\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {Disconnectable, Part} from './lit-html.js';\n\nexport {\n AttributePart,\n BooleanAttributePart,\n ChildPart,\n ElementPart,\n EventPart,\n Part,\n PropertyPart,\n} from './lit-html.js';\n\nexport interface DirectiveClass {\n new (part: PartInfo): Directive;\n}\n\n/**\n * This utility type extracts the signature of a directive class's render()\n * method so we can use it for the type of the generated directive function.\n */\nexport type DirectiveParameters<C extends Directive> = Parameters<C['render']>;\n\n/**\n * A generated directive function doesn't evaluate the directive, but just\n * returns a DirectiveResult object that captures the arguments.\n */\nexport interface DirectiveResult<C extends DirectiveClass = DirectiveClass> {\n /**\n * This property needs to remain unminified.\n * @internal\n */\n ['_$litDirective$']: C;\n /** @internal */\n values: DirectiveParameters<InstanceType<C>>;\n}\n\nexport const PartType = {\n ATTRIBUTE: 1,\n CHILD: 2,\n PROPERTY: 3,\n BOOLEAN_ATTRIBUTE: 4,\n EVENT: 5,\n ELEMENT: 6,\n} as const;\n\nexport type PartType = (typeof PartType)[keyof typeof PartType];\n\nexport interface ChildPartInfo {\n readonly type: typeof PartType.CHILD;\n}\n\nexport interface AttributePartInfo {\n readonly type:\n | typeof PartType.ATTRIBUTE\n | typeof PartType.PROPERTY\n | typeof PartType.BOOLEAN_ATTRIBUTE\n | typeof PartType.EVENT;\n readonly strings?: ReadonlyArray<string>;\n readonly name: string;\n readonly tagName: string;\n}\n\nexport interface ElementPartInfo {\n readonly type: typeof PartType.ELEMENT;\n}\n\n/**\n * Information about the part a directive is bound to.\n *\n * This is useful for checking that a directive is attached to a valid part,\n * such as with directive that can only be used on attribute bindings.\n */\nexport type PartInfo = ChildPartInfo | AttributePartInfo | ElementPartInfo;\n\n/**\n * Creates a user-facing directive function from a Directive class. This\n * function has the same parameters as the directive's render() method.\n */\nexport const directive =\n <C extends DirectiveClass>(c: C) =>\n (...values: DirectiveParameters<InstanceType<C>>): DirectiveResult<C> => ({\n // This property needs to remain unminified.\n ['_$litDirective$']: c,\n values,\n });\n\n/**\n * Base class for creating custom directives. Users should extend this class,\n * implement `render` and/or `update`, and then pass their subclass to\n * `directive`.\n */\nexport abstract class Directive implements Disconnectable {\n //@internal\n __part!: Part;\n //@internal\n __attributeIndex: number | undefined;\n //@internal\n __directive?: Directive;\n\n //@internal\n _$parent!: Disconnectable;\n\n // These will only exist on the AsyncDirective subclass\n //@internal\n _$disconnectableChildren?: Set<Disconnectable>;\n // This property needs to remain unminified.\n //@internal\n ['_$notifyDirectiveConnectionChanged']?(isConnected: boolean): void;\n\n constructor(_partInfo: PartInfo) {}\n\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n\n /** @internal */\n _$initialize(\n part: Part,\n parent: Disconnectable,\n attributeIndex: number | undefined\n ) {\n this.__part = part;\n this._$parent = parent;\n this.__attributeIndex = attributeIndex;\n }\n /** @internal */\n _$resolve(part: Part, props: Array<unknown>): unknown {\n return this.update(part, props);\n }\n\n abstract render(...props: Array<unknown>): unknown;\n\n update(_part: Part, props: Array<unknown>): unknown {\n return this.render(...props);\n }\n}\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange} from '../lit-html.js';\nimport {\n directive,\n Directive,\n DirectiveParameters,\n PartInfo,\n PartType,\n} from '../directive.js';\n\n/**\n * A key-value set of class names to truthy values.\n */\nexport interface ClassInfo {\n readonly [name: string]: string | boolean | number;\n}\n\nclass ClassMapDirective extends Directive {\n /**\n * Stores the ClassInfo object applied to a given AttributePart.\n * Used to unset existing values when a new ClassInfo object is applied.\n */\n private _previousClasses?: Set<string>;\n private _staticClasses?: Set<string>;\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n if (\n partInfo.type !== PartType.ATTRIBUTE ||\n partInfo.name !== 'class' ||\n (partInfo.strings?.length as number) > 2\n ) {\n throw new Error(\n '`classMap()` can only be used in the `class` attribute ' +\n 'and must be the only part in the attribute.'\n );\n }\n }\n\n render(classInfo: ClassInfo) {\n // Add spaces to ensure separation from static classes\n return (\n ' ' +\n Object.keys(classInfo)\n .filter((key) => classInfo[key])\n .join(' ') +\n ' '\n );\n }\n\n override update(part: AttributePart, [classInfo]: DirectiveParameters<this>) {\n // Remember dynamic classes on the first render\n if (this._previousClasses === undefined) {\n this._previousClasses = new Set();\n if (part.strings !== undefined) {\n this._staticClasses = new Set(\n part.strings\n .join(' ')\n .split(/\\s/)\n .filter((s) => s !== '')\n );\n }\n for (const name in classInfo) {\n if (classInfo[name] && !this._staticClasses?.has(name)) {\n this._previousClasses.add(name);\n }\n }\n return this.render(classInfo);\n }\n\n const classList = part.element.classList;\n\n // Remove old classes that no longer apply\n for (const name of this._previousClasses) {\n if (!(name in classInfo)) {\n classList.remove(name);\n this._previousClasses!.delete(name);\n }\n }\n\n // Add or remove classes based on their classMap value\n for (const name in classInfo) {\n // We explicitly want a loose truthy check of `value` because it seems\n // more convenient that '' and 0 are skipped.\n const value = !!classInfo[name];\n if (\n value !== this._previousClasses.has(name) &&\n !this._staticClasses?.has(name)\n ) {\n if (value) {\n classList.add(name);\n this._previousClasses.add(name);\n } else {\n classList.remove(name);\n this._previousClasses.delete(name);\n }\n }\n }\n return noChange;\n }\n}\n\n/**\n * A directive that applies dynamic CSS classes.\n *\n * This must be used in the `class` attribute and must be the only part used in\n * the attribute. It takes each property in the `classInfo` argument and adds\n * the property name to the element's `classList` if the property value is\n * truthy; if the property value is falsy, the property name is removed from\n * the element's `class`.\n *\n * For example `{foo: bar}` applies the class `foo` if the value of `bar` is\n * truthy.\n *\n * @param classInfo\n */\nexport const classMap = directive(ClassMapDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {ClassMapDirective};\n","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {\n _$LH,\n Part,\n DirectiveParent,\n CompiledTemplateResult,\n MaybeCompiledTemplateResult,\n UncompiledTemplateResult,\n} from './lit-html.js';\nimport {\n DirectiveResult,\n DirectiveClass,\n PartInfo,\n AttributePartInfo,\n} from './directive.js';\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\n\nconst {_ChildPart: ChildPart} = _$LH;\n\ntype ChildPart = InstanceType<typeof ChildPart>;\n\nconst ENABLE_SHADYDOM_NOPATCH = true;\n\nconst wrap =\n ENABLE_SHADYDOM_NOPATCH &&\n window.ShadyDOM?.inUse &&\n window.ShadyDOM?.noPatch === true\n ? window.ShadyDOM!.wrap\n : (node: Node) => node;\n\n/**\n * Tests if a value is a primitive value.\n *\n * See https://tc39.github.io/ecma262/#sec-typeof-operator\n */\nexport const isPrimitive = (value: unknown): value is Primitive =>\n value === null || (typeof value != 'object' && typeof value != 'function');\n\nexport const TemplateResultType = {\n HTML: 1,\n SVG: 2,\n MATHML: 3,\n} as const;\n\nexport type TemplateResultType =\n (typeof TemplateResultType)[keyof typeof TemplateResultType];\n\ntype IsTemplateResult = {\n (val: unknown): val is MaybeCompiledTemplateResult;\n <T extends TemplateResultType>(\n val: unknown,\n type: T\n ): val is UncompiledTemplateResult<T>;\n};\n\n/**\n * Tests if a value is a TemplateResult or a CompiledTemplateResult.\n */\nexport const isTemplateResult: IsTemplateResult = (\n value: unknown,\n type?: TemplateResultType\n): value is UncompiledTemplateResult =>\n type === undefined\n ? // This property needs to remain unminified.\n (value as UncompiledTemplateResult)?.['_$litType$'] !== undefined\n : (value as UncompiledTemplateResult)?.['_$litType$'] === type;\n\n/**\n * Tests if a value is a CompiledTemplateResult.\n */\nexport const isCompiledTemplateResult = (\n value: unknown\n): value is CompiledTemplateResult => {\n return (value as CompiledTemplateResult)?.['_$litType$']?.h != null;\n};\n\n/**\n * Tests if a value is a DirectiveResult.\n */\nexport const isDirectiveResult = (value: unknown): value is DirectiveResult =>\n // This property needs to remain unminified.\n (value as DirectiveResult)?.['_$litDirective$'] !== undefined;\n\n/**\n * Retrieves the Directive class for a DirectiveResult\n */\nexport const getDirectiveClass = (value: unknown): DirectiveClass | undefined =>\n // This property needs to remain unminified.\n (value as DirectiveResult)?.['_$litDirective$'];\n\n/**\n * Tests whether a part has only a single-expression with no strings to\n * interpolate between.\n *\n * Only AttributePart and PropertyPart can have multiple expressions.\n * Multi-expression parts have a `strings` property and single-expression\n * parts do not.\n */\nexport const isSingleExpression = (part: PartInfo) =>\n (part as AttributePartInfo).strings === undefined;\n\nconst createMarker = () => document.createComment('');\n\n/**\n * Inserts a ChildPart into the given container ChildPart's DOM, either at the\n * end of the container ChildPart, or before the optional `refPart`.\n *\n * This does not add the part to the containerPart's committed value. That must\n * be done by callers.\n *\n * @param containerPart Part within which to add the new ChildPart\n * @param refPart Part before which to add the new ChildPart; when omitted the\n * part added to the end of the `containerPart`\n * @param part Part to insert, or undefined to create a new part\n */\nexport const insertPart = (\n containerPart: ChildPart,\n refPart?: ChildPart,\n part?: ChildPart\n): ChildPart => {\n const container = wrap(containerPart._$startNode).parentNode!;\n\n const refNode =\n refPart === undefined ? containerPart._$endNode : refPart._$startNode;\n\n if (part === undefined) {\n const startNode = wrap(container).insertBefore(createMarker(), refNode);\n const endNode = wrap(container).insertBefore(createMarker(), refNode);\n part = new ChildPart(\n startNode,\n endNode,\n containerPart,\n containerPart.options\n );\n } else {\n const endNode = wrap(part._$endNode!).nextSibling;\n const oldParent = part._$parent;\n const parentChanged = oldParent !== containerPart;\n if (parentChanged) {\n part._$reparentDisconnectables?.(containerPart);\n // Note that although `_$reparentDisconnectables` updates the part's\n // `_$parent` reference after unlinking from its current parent, that\n // method only exists if Disconnectables are present, so we need to\n // unconditionally set it here\n part._$parent = containerPart;\n // Since the _$isConnected getter is somewhat costly, only\n // read it once we know the subtree has directives that need\n // to be notified\n let newConnectionState;\n if (\n part._$notifyConnectionChanged !== undefined &&\n (newConnectionState = containerPart._$isConnected) !==\n oldParent!._$isConnected\n ) {\n part._$notifyConnectionChanged(newConnectionState);\n }\n }\n if (endNode !== refNode || parentChanged) {\n let start: Node | null = part._$startNode;\n while (start !== endNode) {\n const n: Node | null = wrap(start!).nextSibling;\n wrap(container).insertBefore(start!, refNode);\n start = n;\n }\n }\n }\n\n return part;\n};\n\n/**\n * Sets the value of a Part.\n *\n * Note that this should only be used to set/update the value of user-created\n * parts (i.e. those created using `insertPart`); it should not be used\n * by directives to set the value of the directive's container part. Directives\n * should return a value from `update`/`render` to update their part state.\n *\n * For directives that require setting their part value asynchronously, they\n * should extend `AsyncDirective` and call `this.setValue()`.\n *\n * @param part Part to set\n * @param value Value to set\n * @param index For `AttributePart`s, the index to set\n * @param directiveParent Used internally; should not be set by user\n */\nexport const setChildPartValue = <T extends ChildPart>(\n part: T,\n value: unknown,\n directiveParent: DirectiveParent = part\n): T => {\n part._$setValue(value, directiveParent);\n return part;\n};\n\n// A sentinel value that can never appear as a part value except when set by\n// live(). Used to force a dirty-check to fail and cause a re-render.\nconst RESET_VALUE = {};\n\n/**\n * Sets the committed value of a ChildPart directly without triggering the\n * commit stage of the part.\n *\n * This is useful in cases where a directive needs to update the part such\n * that the next update detects a value change or not. When value is omitted,\n * the next update will be guaranteed to be detected as a change.\n *\n * @param part\n * @param value\n */\nexport const setCommittedValue = (part: Part, value: unknown = RESET_VALUE) =>\n (part._$committedValue = value);\n\n/**\n * Returns the committed value of a ChildPart.\n *\n * The committed value is used for change detection and efficient updates of\n * the part. It can differ from the value set by the template or directive in\n * cases where the template value is transformed before being committed.\n *\n * - `TemplateResult`s are committed as a `TemplateInstance`\n * - Iterables are committed as `Array<ChildPart>`\n * - All other types are committed as the template value or value returned or\n * set by a directive.\n *\n * @param part\n */\nexport const getCommittedValue = (part: ChildPart) => part._$committedValue;\n\n/**\n * Removes a ChildPart from the DOM, including any of its content.\n *\n * @param part The Part to remove\n */\nexport const removePart = (part: ChildPart) => {\n part._$notifyConnectionChanged?.(false, true);\n let start: ChildNode | null = part._$startNode;\n const end: ChildNode | null = wrap(part._$endNode!).nextSibling;\n while (start !== end) {\n const n: ChildNode | null = wrap(start!).nextSibling;\n (wrap(start!) as ChildNode).remove();\n start = n;\n }\n};\n\nexport const clearPart = (part: ChildPart) => {\n part._$clear();\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {ChildPart, noChange} from '../lit-html.js';\nimport {directive, Directive, PartInfo, PartType} from '../directive.js';\nimport {\n insertPart,\n getCommittedValue,\n removePart,\n setCommittedValue,\n setChildPartValue,\n} from '../directive-helpers.js';\n\nexport type KeyFn<T> = (item: T, index: number) => unknown;\nexport type ItemTemplate<T> = (item: T, index: number) => unknown;\n\n// Helper for generating a map of array item to its index over a subset\n// of an array (used to lazily generate `newKeyToIndexMap` and\n// `oldKeyToIndexMap`)\nconst generateMap = (list: unknown[], start: number, end: number) => {\n const map = new Map<unknown, number>();\n for (let i = start; i <= end; i++) {\n map.set(list[i], i);\n }\n return map;\n};\n\nclass RepeatDirective extends Directive {\n private _itemKeys?: unknown[];\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n if (partInfo.type !== PartType.CHILD) {\n throw new Error('repeat() can only be used in text expressions');\n }\n }\n\n private _getValuesAndKeys<T>(\n items: Iterable<T>,\n keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n template?: ItemTemplate<T>\n ) {\n let keyFn: KeyFn<T> | undefined;\n if (template === undefined) {\n template = keyFnOrTemplate;\n } else if (keyFnOrTemplate !== undefined) {\n keyFn = keyFnOrTemplate as KeyFn<T>;\n }\n const keys = [];\n const values = [];\n let index = 0;\n for (const item of items) {\n keys[index] = keyFn ? keyFn(item, index) : index;\n values[index] = template!(item, index);\n index++;\n }\n return {\n values,\n keys,\n };\n }\n\n render<T>(items: Iterable<T>, template: ItemTemplate<T>): Array<unknown>;\n render<T>(\n items: Iterable<T>,\n keyFn: KeyFn<T> | ItemTemplate<T>,\n template: ItemTemplate<T>\n ): Array<unknown>;\n render<T>(\n items: Iterable<T>,\n keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n template?: ItemTemplate<T>\n ) {\n return this._getValuesAndKeys(items, keyFnOrTemplate, template).values;\n }\n\n override update<T>(\n containerPart: ChildPart,\n [items, keyFnOrTemplate, template]: [\n Iterable<T>,\n KeyFn<T> | ItemTemplate<T>,\n ItemTemplate<T>,\n ]\n ) {\n // Old part & key lists are retrieved from the last update (which may\n // be primed by hydration)\n const oldParts = getCommittedValue(\n containerPart\n ) as Array<ChildPart | null>;\n const {values: newValues, keys: newKeys} = this._getValuesAndKeys(\n items,\n keyFnOrTemplate,\n template\n );\n\n // We check that oldParts, the committed value, is an Array as an\n // indicator that the previous value came from a repeat() call. If\n // oldParts is not an Array then this is the first render and we return\n // an array for lit-html's array handling to render, and remember the\n // keys.\n if (!Array.isArray(oldParts)) {\n this._itemKeys = newKeys;\n return newValues;\n }\n\n // In SSR hydration it's possible for oldParts to be an array but for us\n // to not have item keys because the update() hasn't run yet. We set the\n // keys to an empty array. This will cause all oldKey/newKey comparisons\n // to fail and execution to fall to the last nested brach below which\n // reuses the oldPart.\n const oldKeys = (this._itemKeys ??= []);\n\n // New part list will be built up as we go (either reused from\n // old parts or created for new keys in this update). This is\n // saved in the above cache at the end of the update.\n const newParts: ChildPart[] = [];\n\n // Maps from key to index for current and previous update; these\n // are generated lazily only when needed as a performance\n // optimization, since they are only required for multiple\n // non-contiguous changes in the list, which are less common.\n let newKeyToIndexMap!: Map<unknown, number>;\n let oldKeyToIndexMap!: Map<unknown, number>;\n\n // Head and tail pointers to old parts and new values\n let oldHead = 0;\n let oldTail = oldParts.length - 1;\n let newHead = 0;\n let newTail = newValues.length - 1;\n\n // Overview of O(n) reconciliation algorithm (general approach\n // based on ideas found in ivi, vue, snabbdom, etc.):\n //\n // * We start with the list of old parts and new values (and\n // arrays of their respective keys), head/tail pointers into\n // each, and we build up the new list of parts by updating\n // (and when needed, moving) old parts or creating new ones.\n // The initial scenario might look like this (for brevity of\n // the diagrams, the numbers in the array reflect keys\n // associated with the old parts or new values, although keys\n // and parts/values are actually stored in parallel arrays\n // indexed using the same head/tail pointers):\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [ , , , , , , ]\n // newKeys: [0, 2, 1, 4, 3, 7, 6] <- reflects the user's new\n // item order\n // newHead ^ ^ newTail\n //\n // * Iterate old & new lists from both sides, updating,\n // swapping, or removing parts at the head/tail locations\n // until neither head nor tail can move.\n //\n // * Example below: keys at head pointers match, so update old\n // part 0 in-place (no need to move it) and record part 0 in\n // the `newParts` list. The last thing we do is advance the\n // `oldHead` and `newHead` pointers (will be reflected in the\n // next diagram).\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [0, , , , , , ] <- heads matched: update 0\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance both oldHead\n // & newHead\n // newHead ^ ^ newTail\n //\n // * Example below: head pointers don't match, but tail\n // pointers do, so update part 6 in place (no need to move\n // it), and record part 6 in the `newParts` list. Last,\n // advance the `oldTail` and `oldHead` pointers.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [0, , , , , , 6] <- tails matched: update 6\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance both oldTail\n // & newTail\n // newHead ^ ^ newTail\n //\n // * If neither head nor tail match; next check if one of the\n // old head/tail items was removed. We first need to generate\n // the reverse map of new keys to index (`newKeyToIndexMap`),\n // which is done once lazily as a performance optimization,\n // since we only hit this case if multiple non-contiguous\n // changes were made. Note that for contiguous removal\n // anywhere in the list, the head and tails would advance\n // from either end and pass each other before we get to this\n // case and removals would be handled in the final while loop\n // without needing to generate the map.\n //\n // * Example below: The key at `oldTail` was removed (no longer\n // in the `newKeyToIndexMap`), so remove that part from the\n // DOM and advance just the `oldTail` pointer.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, 2, 3, 4, 5, 6]\n // newParts: [0, , , , , , 6] <- 5 not in new map: remove\n // newKeys: [0, 2, 1, 4, 3, 7, 6] 5 and advance oldTail\n // newHead ^ ^ newTail\n //\n // * Once head and tail cannot move, any mismatches are due to\n // either new or moved items; if a new key is in the previous\n // \"old key to old index\" map, move the old part to the new\n // location, otherwise create and insert a new part. Note\n // that when moving an old part we null its position in the\n // oldParts array if it lies between the head and tail so we\n // know to skip it when the pointers get there.\n //\n // * Example below: neither head nor tail match, and neither\n // were removed; so find the `newHead` key in the\n // `oldKeyToIndexMap`, and move that old part's DOM into the\n // next head position (before `oldParts[oldHead]`). Last,\n // null the part in the `oldPart` array since it was\n // somewhere in the remaining oldParts still to be scanned\n // (between the head and tail pointers) so that we know to\n // skip that old part on future iterations.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, , , , , 6] <- stuck: update & move 2\n // newKeys: [0, 2, 1, 4, 3, 7, 6] into place and advance\n // newHead\n // newHead ^ ^ newTail\n //\n // * Note that for moves/insertions like the one above, a part\n // inserted at the head pointer is inserted before the\n // current `oldParts[oldHead]`, and a part inserted at the\n // tail pointer is inserted before `newParts[newTail+1]`. The\n // seeming asymmetry lies in the fact that new parts are\n // moved into place outside in, so to the right of the head\n // pointer are old parts, and to the right of the tail\n // pointer are new parts.\n //\n // * We always restart back from the top of the algorithm,\n // allowing matching and simple updates in place to\n // continue...\n //\n // * Example below: the head pointers once again match, so\n // simply update part 1 and record it in the `newParts`\n // array. Last, advance both head pointers.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, , , , 6] <- heads matched: update 1\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance both oldHead\n // & newHead\n // newHead ^ ^ newTail\n //\n // * As mentioned above, items that were moved as a result of\n // being stuck (the final else clause in the code below) are\n // marked with null, so we always advance old pointers over\n // these so we're comparing the next actual old value on\n // either end.\n //\n // * Example below: `oldHead` is null (already placed in\n // newParts), so advance `oldHead`.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6] <- old head already used:\n // newParts: [0, 2, 1, , , , 6] advance oldHead\n // newKeys: [0, 2, 1, 4, 3, 7, 6]\n // newHead ^ ^ newTail\n //\n // * Note it's not critical to mark old parts as null when they\n // are moved from head to tail or tail to head, since they\n // will be outside the pointer range and never visited again.\n //\n // * Example below: Here the old tail key matches the new head\n // key, so the part at the `oldTail` position and move its\n // DOM to the new head position (before `oldParts[oldHead]`).\n // Last, advance `oldTail` and `newHead` pointers.\n //\n // oldHead v v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, 4, , , 6] <- old tail matches new\n // newKeys: [0, 2, 1, 4, 3, 7, 6] head: update & move 4,\n // advance oldTail & newHead\n // newHead ^ ^ newTail\n //\n // * Example below: Old and new head keys match, so update the\n // old head part in place, and advance the `oldHead` and\n // `newHead` pointers.\n //\n // oldHead v oldTail\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, 4, 3, ,6] <- heads match: update 3\n // newKeys: [0, 2, 1, 4, 3, 7, 6] and advance oldHead &\n // newHead\n // newHead ^ ^ newTail\n //\n // * Once the new or old pointers move past each other then all\n // we have left is additions (if old list exhausted) or\n // removals (if new list exhausted). Those are handled in the\n // final while loops at the end.\n //\n // * Example below: `oldHead` exceeded `oldTail`, so we're done\n // with the main loop. Create the remaining part and insert\n // it at the new head position, and the update is complete.\n //\n // (oldHead > oldTail)\n // oldKeys: [0, 1, -, 3, 4, 5, 6]\n // newParts: [0, 2, 1, 4, 3, 7 ,6] <- create and insert 7\n // newKeys: [0, 2, 1, 4, 3, 7, 6]\n // newHead ^ newTail\n //\n // * Note that the order of the if/else clauses is not\n // important to the algorithm, as long as the null checks\n // come first (to ensure we're always working on valid old\n // parts) and that the final else clause comes last (since\n // that's where the expensive moves occur). The order of\n // remaining clauses is just a simple guess at which cases\n // will be most common.\n //\n // * Note, we could calculate the longest\n // increasing subsequence (LIS) of old items in new position,\n // and only move those not in the LIS set. However that costs\n // O(nlogn) time and adds a bit more code, and only helps\n // make rare types of mutations require fewer moves. The\n // above handles removes, adds, reversal, swaps, and single\n // moves of contiguous items in linear time, in the minimum\n // number of moves. As the number of multiple moves where LIS\n // might help approaches a random shuffle, the LIS\n // optimization becomes less helpful, so it seems not worth\n // the code at this point. Could reconsider if a compelling\n // case arises.\n\n while (oldHead <= oldTail && newHead <= newTail) {\n if (oldParts[oldHead] === null) {\n // `null` means old part at head has already been used\n // below; skip\n oldHead++;\n } else if (oldParts[oldTail] === null) {\n // `null` means old part at tail has already been used\n // below; skip\n oldTail--;\n } else if (oldKeys[oldHead] === newKeys[newHead]) {\n // Old head matches new head; update in place\n newParts[newHead] = setChildPartValue(\n oldParts[oldHead]!,\n newValues[newHead]\n );\n oldHead++;\n newHead++;\n } else if (oldKeys[oldTail] === newKeys[newTail]) {\n // Old tail matches new tail; update in place\n newParts[newTail] = setChildPartValue(\n oldParts[oldTail]!,\n newValues[newTail]\n );\n oldTail--;\n newTail--;\n } else if (oldKeys[oldHead] === newKeys[newTail]) {\n // Old head matches new tail; update and move to new tail\n newParts[newTail] = setChildPartValue(\n oldParts[oldHead]!,\n newValues[newTail]\n );\n insertPart(containerPart, newParts[newTail + 1], oldParts[oldHead]!);\n oldHead++;\n newTail--;\n } else if (oldKeys[oldTail] === newKeys[newHead]) {\n // Old tail matches new head; update and move to new head\n newParts[newHead] = setChildPartValue(\n oldParts[oldTail]!,\n newValues[newHead]\n );\n insertPart(containerPart, oldParts[oldHead]!, oldParts[oldTail]!);\n oldTail--;\n newHead++;\n } else {\n if (newKeyToIndexMap === undefined) {\n // Lazily generate key-to-index maps, used for removals &\n // moves below\n newKeyToIndexMap = generateMap(newKeys, newHead, newTail);\n oldKeyToIndexMap = generateMap(oldKeys, oldHead, oldTail);\n }\n if (!newKeyToIndexMap.has(oldKeys[oldHead])) {\n // Old head is no longer in new list; remove\n removePart(oldParts[oldHead]!);\n oldHead++;\n } else if (!newKeyToIndexMap.has(oldKeys[oldTail])) {\n // Old tail is no longer in new list; remove\n removePart(oldParts[oldTail]!);\n oldTail--;\n } else {\n // Any mismatches at this point are due to additions or\n // moves; see if we have an old part we can reuse and move\n // into place\n const oldIndex = oldKeyToIndexMap.get(newKeys[newHead]);\n const oldPart = oldIndex !== undefined ? oldParts[oldIndex] : null;\n if (oldPart === null) {\n // No old part for this value; create a new one and\n // insert it\n const newPart = insertPart(containerPart, oldParts[oldHead]!);\n setChildPartValue(newPart, newValues[newHead]);\n newParts[newHead] = newPart;\n } else {\n // Reuse old part\n newParts[newHead] = setChildPartValue(oldPart, newValues[newHead]);\n insertPart(containerPart, oldParts[oldHead]!, oldPart);\n // This marks the old part as having been used, so that\n // it will be skipped in the first two checks above\n oldParts[oldIndex as number] = null;\n }\n newHead++;\n }\n }\n }\n // Add parts for any remaining new values\n while (newHead <= newTail) {\n // For all remaining additions, we insert before last new\n // tail, since old pointers are no longer valid\n const newPart = insertPart(containerPart, newParts[newTail + 1]);\n setChildPartValue(newPart, newValues[newHead]);\n newParts[newHead++] = newPart;\n }\n // Remove any remaining unused old parts\n while (oldHead <= oldTail) {\n const oldPart = oldParts[oldHead++];\n if (oldPart !== null) {\n removePart(oldPart);\n }\n }\n\n // Save order of new parts for next round\n this._itemKeys = newKeys;\n // Directly set part value, bypassing it's dirty-checking\n setCommittedValue(containerPart, newParts);\n return noChange;\n }\n}\n\nexport interface RepeatDirectiveFn {\n <T>(\n items: Iterable<T>,\n keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n template?: ItemTemplate<T>\n ): unknown;\n <T>(items: Iterable<T>, template: ItemTemplate<T>): unknown;\n <T>(\n items: Iterable<T>,\n keyFn: KeyFn<T> | ItemTemplate<T>,\n template: ItemTemplate<T>\n ): unknown;\n}\n\n/**\n * A directive that repeats a series of values (usually `TemplateResults`)\n * generated from an iterable, and updates those items efficiently when the\n * iterable changes based on user-provided `keys` associated with each item.\n *\n * Note that if a `keyFn` is provided, strict key-to-DOM mapping is maintained,\n * meaning previous DOM for a given key is moved into the new position if\n * needed, and DOM will never be reused with values for different keys (new DOM\n * will always be created for new keys). This is generally the most efficient\n * way to use `repeat` since it performs minimum unnecessary work for insertions\n * and removals.\n *\n * The `keyFn` takes two parameters, the item and its index, and returns a unique key value.\n *\n * ```js\n * html`\n * <ol>\n * ${repeat(this.items, (item) => item.id, (item, index) => {\n * return html`<li>${index}: ${item.name}</li>`;\n * })}\n * </ol>\n * `\n * ```\n *\n * **Important**: If providing a `keyFn`, keys *must* be unique for all items in a\n * given call to `repeat`. The behavior when two or more items have the same key\n * is undefined.\n *\n * If no `keyFn` is provided, this directive will perform similar to mapping\n * items to values, and DOM will be reused against potentially different items.\n */\nexport const repeat = directive(RepeatDirective) as RepeatDirectiveFn;\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RepeatDirective};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange} from '../lit-html.js';\nimport {\n directive,\n Directive,\n DirectiveParameters,\n PartInfo,\n PartType,\n} from '../directive.js';\n\n/**\n * A key-value set of CSS properties and values.\n *\n * The key should be either a valid CSS property name string, like\n * `'background-color'`, or a valid JavaScript camel case property name\n * for CSSStyleDeclaration like `backgroundColor`.\n */\nexport interface StyleInfo {\n [name: string]: string | number | undefined | null;\n}\n\nconst important = 'important';\n// The leading space is important\nconst importantFlag = ' !' + important;\n// How many characters to remove from a value, as a negative number\nconst flagTrim = 0 - importantFlag.length;\n\nclass StyleMapDirective extends Directive {\n private _previousStyleProperties?: Set<string>;\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n if (\n partInfo.type !== PartType.ATTRIBUTE ||\n partInfo.name !== 'style' ||\n (partInfo.strings?.length as number) > 2\n ) {\n throw new Error(\n 'The `styleMap` directive must be used in the `style` attribute ' +\n 'and must be the only part in the attribute.'\n );\n }\n }\n\n render(styleInfo: Readonly<StyleInfo>) {\n return Object.keys(styleInfo).reduce((style, prop) => {\n const value = styleInfo[prop];\n if (value == null) {\n return style;\n }\n // Convert property names from camel-case to dash-case, i.e.:\n // `backgroundColor` -> `background-color`\n // Vendor-prefixed names need an extra `-` appended to front:\n // `webkitAppearance` -> `-webkit-appearance`\n // Exception is any property name containing a dash, including\n // custom properties; we assume these are already dash-cased i.e.:\n // `--my-button-color` --> `--my-button-color`\n prop = prop.includes('-')\n ? prop\n : prop\n .replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, '-$&')\n .toLowerCase();\n return style + `${prop}:${value};`;\n }, '');\n }\n\n override update(part: AttributePart, [styleInfo]: DirectiveParameters<this>) {\n const {style} = part.element as HTMLElement;\n\n if (this._previousStyleProperties === undefined) {\n this._previousStyleProperties = new Set(Object.keys(styleInfo));\n return this.render(styleInfo);\n }\n\n // Remove old properties that no longer exist in styleInfo\n for (const name of this._previousStyleProperties) {\n // If the name isn't in styleInfo or it's null/undefined\n if (styleInfo[name] == null) {\n this._previousStyleProperties!.delete(name);\n if (name.includes('-')) {\n style.removeProperty(name);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (style as any)[name] = null;\n }\n }\n }\n\n // Add or update properties\n for (const name in styleInfo) {\n const value = styleInfo[name];\n if (value != null) {\n this._previousStyleProperties.add(name);\n const isImportant =\n typeof value === 'string' && value.endsWith(importantFlag);\n if (name.includes('-') || isImportant) {\n style.setProperty(\n name,\n isImportant\n ? (value as string).slice(0, flagTrim)\n : (value as string),\n isImportant ? important : ''\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (style as any)[name] = value;\n }\n }\n }\n return noChange;\n }\n}\n\n/**\n * A directive that applies CSS properties to an element.\n *\n * `styleMap` can only be used in the `style` attribute and must be the only\n * expression in the attribute. It takes the property names in the\n * {@link StyleInfo styleInfo} object and adds the properties to the inline\n * style of the element.\n *\n * Property names with dashes (`-`) are assumed to be valid CSS\n * property names and set on the element's style object using `setProperty()`.\n * Names without dashes are assumed to be camelCased JavaScript property names\n * and set on the element's style object using property assignment, allowing the\n * style object to translate JavaScript-style names to CSS property names.\n *\n * For example `styleMap({backgroundColor: 'red', 'border-top': '5px', '--size':\n * '0'})` sets the `background-color`, `border-top` and `--size` properties.\n *\n * @param styleInfo\n * @see {@link https://lit.dev/docs/templates/directives/#stylemap styleMap code samples on Lit.dev}\n */\nexport const styleMap = directive(StyleMapDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {StyleMapDirective};\n","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// Any new exports need to be added to the export statement in\n// `packages/lit/src/index.all.ts`.\n\nimport {\n html as coreHtml,\n svg as coreSvg,\n mathml as coreMathml,\n TemplateResult,\n} from './lit-html.js';\n\nexport interface StaticValue {\n /** The value to interpolate as-is into the template. */\n _$litStatic$: string;\n\n /**\n * A value that can't be decoded from ordinary JSON, make it harder for\n * an attacker-controlled data that goes through JSON.parse to produce a valid\n * StaticValue.\n */\n r: typeof brand;\n}\n\n/**\n * Prevents JSON injection attacks.\n *\n * The goals of this brand:\n * 1) fast to check\n * 2) code is small on the wire\n * 3) multiple versions of Lit in a single page will all produce mutually\n * interoperable StaticValues\n * 4) normal JSON.parse (without an unusual reviver) can not produce a\n * StaticValue\n *\n * Symbols satisfy (1), (2), and (4). We use Symbol.for to satisfy (3), but\n * we don't care about the key, so we break ties via (2) and use the empty\n * string.\n */\nconst brand = Symbol.for('');\n\n/** Safely extracts the string part of a StaticValue. */\nconst unwrapStaticValue = (value: unknown): string | undefined => {\n if ((value as Partial<StaticValue>)?.r !== brand) {\n return undefined;\n }\n return (value as Partial<StaticValue>)?.['_$litStatic$'];\n};\n\n/**\n * Wraps a string so that it behaves like part of the static template\n * strings instead of a dynamic value.\n *\n * Users must take care to ensure that adding the static string to the template\n * results in well-formed HTML, or else templates may break unexpectedly.\n *\n * Note that this function is unsafe to use on untrusted content, as it will be\n * directly parsed into HTML. Do not pass user input to this function\n * without sanitizing it.\n *\n * Static values can be changed, but they will cause a complete re-render\n * since they effectively create a new template.\n */\nexport const unsafeStatic = (value: string): StaticValue => ({\n ['_$litStatic$']: value,\n r: brand,\n});\n\nconst textFromStatic = (value: StaticValue) => {\n if (value['_$litStatic$'] !== undefined) {\n return value['_$litStatic$'];\n } else {\n throw new Error(\n `Value passed to 'literal' function must be a 'literal' result: ${value}. Use 'unsafeStatic' to pass non-literal values, but\n take care to ensure page security.`\n );\n }\n};\n\n/**\n * Tags a string literal so that it behaves like part of the static template\n * strings instead of a dynamic value.\n *\n * The only values that may be used in template expressions are other tagged\n * `literal` results or `unsafeStatic` values (note that untrusted content\n * should never be passed to `unsafeStatic`).\n *\n * Users must take care to ensure that adding the static string to the template\n * results in well-formed HTML, or else templates may break unexpectedly.\n *\n * Static values can be changed, but they will cause a complete re-render since\n * they effectively create a new template.\n */\nexport const literal = (\n strings: TemplateStringsArray,\n ...values: unknown[]\n): StaticValue => ({\n ['_$litStatic$']: values.reduce(\n (acc, v, idx) => acc + textFromStatic(v as StaticValue) + strings[idx + 1],\n strings[0]\n ) as string,\n r: brand,\n});\n\nconst stringsCache = new Map<string, TemplateStringsArray>();\n\n/**\n * Wraps a lit-html template tag (`html` or `svg`) to add static value support.\n */\nexport const withStatic =\n (coreTag: typeof coreHtml | typeof coreSvg | typeof coreMathml) =>\n (strings: TemplateStringsArray, ...values: unknown[]): TemplateResult => {\n const l = values.length;\n let staticValue: string | undefined;\n let dynamicValue: unknown;\n const staticStrings: Array<string> = [];\n const dynamicValues: Array<unknown> = [];\n let i = 0;\n let hasStatics = false;\n let s: string;\n\n while (i < l) {\n s = strings[i];\n // Collect any unsafeStatic values, and their following template strings\n // so that we treat a run of template strings and unsafe static values as\n // a single template string.\n while (\n i < l &&\n ((dynamicValue = values[i]),\n (staticValue = unwrapStaticValue(dynamicValue))) !== undefined\n ) {\n s += staticValue + strings[++i];\n hasStatics = true;\n }\n // If the last value is static, we don't need to push it.\n if (i !== l) {\n dynamicValues.push(dynamicValue);\n }\n staticStrings.push(s);\n i++;\n }\n // If the last value isn't static (which would have consumed the last\n // string), then we need to add the last string.\n if (i === l) {\n staticStrings.push(strings[l]);\n }\n\n if (hasStatics) {\n const key = staticStrings.join('$$lit$$');\n strings = stringsCache.get(key)!;\n if (strings === undefined) {\n // Beware: in general this pattern is unsafe, and doing so may bypass\n // lit's security checks and allow an attacker to execute arbitrary\n // code and inject arbitrary content.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (staticStrings as any).raw = staticStrings;\n stringsCache.set(\n key,\n (strings = staticStrings as unknown as TemplateStringsArray)\n );\n }\n values = dynamicValues;\n }\n return coreTag(strings, ...values);\n };\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n *\n * Includes static value support from `lit-html/static.js`.\n */\nexport const html = withStatic(coreHtml);\n\n/**\n * Interprets a template literal as an SVG template that can efficiently\n * render to and update a container.\n *\n * Includes static value support from `lit-html/static.js`.\n */\nexport const svg = withStatic(coreSvg);\n\n/**\n * Interprets a template literal as MathML fragment that can efficiently render\n * to and update a container.\n *\n * Includes static value support from `lit-html/static.js`.\n */\nexport const mathml = withStatic(coreMathml);\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\n\n/**\n * For AttributeParts, sets the attribute if the value is defined and removes\n * the attribute if the value is undefined.\n *\n * For other part types, this directive is a no-op.\n */\nexport const ifDefined = <T>(value: T) => value ?? nothing;\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Returns an iterable containing the result of calling `f(value)` on each\n * value in `items`.\n *\n * @example\n *\n * ```ts\n * render() {\n * return html`\n * <ul>\n * ${map(items, (i) => html`<li>${i}</li>`)}\n * </ul>\n * `;\n * }\n * ```\n */\nexport function* map<T>(\n items: Iterable<T> | undefined,\n f: (value: T, index: number) => unknown\n) {\n if (items !== undefined) {\n let i = 0;\n for (const value of items) {\n yield f(value, i++);\n }\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Returns an iterable of integers from `start` to `end` (exclusive)\n * incrementing by `step`.\n *\n * If `start` is omitted, the range starts at `0`. `step` defaults to `1`.\n *\n * @example\n *\n * ```ts\n * render() {\n * return html`\n * ${map(range(8), () => html`<div class=\"cell\"></div>`)}\n * `;\n * }\n * ```\n */\nexport function range(end: number): Iterable<number>;\nexport function range(\n start: number,\n end: number,\n step?: number\n): Iterable<number>;\nexport function* range(startOrEnd: number, end?: number, step = 1) {\n const start = end === undefined ? 0 : startOrEnd;\n end ??= startOrEnd;\n for (let i = start; step > 0 ? i < end : end < i; i += step) {\n yield i;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nexport const supportsAdoptingStyleSheets: boolean =\n global.ShadowRoot &&\n (global.ShadyCSS === undefined || global.ShadyCSS.nativeShadow) &&\n 'adoptedStyleSheets' in Document.prototype &&\n 'replace' in CSSStyleSheet.prototype;\n\n/**\n * A CSSResult or native CSSStyleSheet.\n *\n * In browsers that support constructible CSS style sheets, CSSStyleSheet\n * object can be used for styling along side CSSResult from the `css`\n * template tag.\n */\nexport type CSSResultOrNative = CSSResult | CSSStyleSheet;\n\nexport type CSSResultArray = Array<CSSResultOrNative | CSSResultArray>;\n\n/**\n * A single CSSResult, CSSStyleSheet, or an array or nested arrays of those.\n */\nexport type CSSResultGroup = CSSResultOrNative | CSSResultArray;\n\nconst constructionToken = Symbol();\n\nconst cssTagCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * A container for a string of CSS text, that may be used to create a CSSStyleSheet.\n *\n * CSSResult is the return value of `css`-tagged template literals and\n * `unsafeCSS()`. In order to ensure that CSSResults are only created via the\n * `css` tag and `unsafeCSS()`, CSSResult cannot be constructed directly.\n */\nexport class CSSResult {\n // This property needs to remain unminified.\n ['_$cssResult$'] = true;\n readonly cssText: string;\n private _styleSheet?: CSSStyleSheet;\n private _strings: TemplateStringsArray | undefined;\n\n private constructor(\n cssText: string,\n strings: TemplateStringsArray | undefined,\n safeToken: symbol\n ) {\n if (safeToken !== constructionToken) {\n throw new Error(\n 'CSSResult is not constructable. Use `unsafeCSS` or `css` instead.'\n );\n }\n this.cssText = cssText;\n this._strings = strings;\n }\n\n // This is a getter so that it's lazy. In practice, this means stylesheets\n // are not created until the first element instance is made.\n get styleSheet(): CSSStyleSheet | undefined {\n // If `supportsAdoptingStyleSheets` is true then we assume CSSStyleSheet is\n // constructable.\n let styleSheet = this._styleSheet;\n const strings = this._strings;\n if (supportsAdoptingStyleSheets && styleSheet === undefined) {\n const cacheable = strings !== undefined && strings.length === 1;\n if (cacheable) {\n styleSheet = cssTagCache.get(strings);\n }\n if (styleSheet === undefined) {\n (this._styleSheet = styleSheet = new CSSStyleSheet()).replaceSync(\n this.cssText\n );\n if (cacheable) {\n cssTagCache.set(strings, styleSheet);\n }\n }\n }\n return styleSheet;\n }\n\n toString(): string {\n return this.cssText;\n }\n}\n\ntype ConstructableCSSResult = CSSResult & {\n new (\n cssText: string,\n strings: TemplateStringsArray | undefined,\n safeToken: symbol\n ): CSSResult;\n};\n\nconst textFromCSSResult = (value: CSSResultGroup | number) => {\n // This property needs to remain unminified.\n if ((value as CSSResult)['_$cssResult$'] === true) {\n return (value as CSSResult).cssText;\n } else if (typeof value === 'number') {\n return value;\n } else {\n throw new Error(\n `Value passed to 'css' function must be a 'css' function result: ` +\n `${value}. Use 'unsafeCSS' to pass non-literal values, but take care ` +\n `to ensure page security.`\n );\n }\n};\n\n/**\n * Wrap a value for interpolation in a {@linkcode css} tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nexport const unsafeCSS = (value: unknown) =>\n new (CSSResult as ConstructableCSSResult)(\n typeof value === 'string' ? value : String(value),\n undefined,\n constructionToken\n );\n\n/**\n * A template literal tag which can be used with LitElement's\n * {@linkcode LitElement.styles} property to set element styles.\n *\n * For security reasons, only literal string values and number may be used in\n * embedded expressions. To incorporate non-literal values {@linkcode unsafeCSS}\n * may be used inside an expression.\n */\nexport const css = (\n strings: TemplateStringsArray,\n ...values: (CSSResultGroup | number)[]\n): CSSResult => {\n const cssText =\n strings.length === 1\n ? strings[0]\n : values.reduce(\n (acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1],\n strings[0]\n );\n return new (CSSResult as ConstructableCSSResult)(\n cssText,\n strings,\n constructionToken\n );\n};\n\n/**\n * Applies the given styles to a `shadowRoot`. When Shadow DOM is\n * available but `adoptedStyleSheets` is not, styles are appended to the\n * `shadowRoot` to [mimic the native feature](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/adoptedStyleSheets).\n * Note, when shimming is used, any styles that are subsequently placed into\n * the shadowRoot should be placed *before* any shimmed adopted styles. This\n * will match spec behavior that gives adopted sheets precedence over styles in\n * shadowRoot.\n */\nexport const adoptStyles = (\n renderRoot: ShadowRoot,\n styles: Array<CSSResultOrNative>\n) => {\n if (supportsAdoptingStyleSheets) {\n (renderRoot as ShadowRoot).adoptedStyleSheets = styles.map((s) =>\n s instanceof CSSStyleSheet ? s : s.styleSheet!\n );\n } else {\n for (const s of styles) {\n const style = document.createElement('style');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nonce = (global as any)['litNonce'];\n if (nonce !== undefined) {\n style.setAttribute('nonce', nonce);\n }\n style.textContent = (s as CSSResult).cssText;\n renderRoot.appendChild(style);\n }\n }\n};\n\nconst cssResultFromStyleSheet = (sheet: CSSStyleSheet) => {\n let cssText = '';\n for (const rule of sheet.cssRules) {\n cssText += rule.cssText;\n }\n return unsafeCSS(cssText);\n};\n\nexport const getCompatibleStyle =\n supportsAdoptingStyleSheets ||\n (NODE_MODE && global.CSSStyleSheet === undefined)\n ? (s: CSSResultOrNative) => s\n : (s: CSSResultOrNative) =>\n s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Use this module if you want to create your own base class extending\n * {@link ReactiveElement}.\n * @packageDocumentation\n */\n\nimport {\n getCompatibleStyle,\n adoptStyles,\n CSSResultGroup,\n CSSResultOrNative,\n} from './css-tag.js';\nimport type {\n ReactiveController,\n ReactiveControllerHost,\n} from './reactive-controller.js';\n\n// In the Node build, this import will be injected by Rollup:\n// import {HTMLElement, customElements} from '@lit-labs/ssr-dom-shim';\n\nexport * from './css-tag.js';\nexport type {\n ReactiveController,\n ReactiveControllerHost,\n} from './reactive-controller.js';\n\n/**\n * Removes the `readonly` modifier from properties in the union K.\n *\n * This is a safer way to cast a value to a type with a mutable version of a\n * readonly field, than casting to an interface with the field re-declared\n * because it preserves the type of all the fields and warns on typos.\n */\ntype Mutable<T, K extends keyof T> = Omit<T, K> & {\n -readonly [P in keyof Pick<T, K>]: P extends K ? T[P] : never;\n};\n\n// TODO (justinfagnani): Add `hasOwn` here when we ship ES2022\nconst {\n is,\n defineProperty,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n getPrototypeOf,\n} = Object;\n\nconst NODE_MODE = false;\n\n// Lets a minifier replace globalThis references with a minified name\nconst global = globalThis;\n\nif (NODE_MODE) {\n global.customElements ??= customElements;\n}\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nconst trustedTypes = (global as unknown as {trustedTypes?: {emptyScript: ''}})\n .trustedTypes;\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n ? (trustedTypes.emptyScript as unknown as '')\n : '';\n\nconst polyfillSupport = DEV_MODE\n ? global.reactiveElementPolyfillSupportDevMode\n : global.reactiveElementPolyfillSupport;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n global.litIssuedWarnings ??= new Set();\n\n /**\n * Issue a warning if we haven't already, based either on `code` or `warning`.\n * Warnings are disabled automatically only by `warning`; disabling via `code`\n * can be done by users.\n */\n issueWarning = (code: string, warning: string) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (\n !global.litIssuedWarnings!.has(warning) &&\n !global.litIssuedWarnings!.has(code)\n ) {\n console.warn(warning);\n global.litIssuedWarnings!.add(warning);\n }\n };\n\n queueMicrotask(() => {\n issueWarning(\n 'dev-mode',\n `Lit is in dev mode. Not recommended for production!`\n );\n\n // Issue polyfill support warning.\n if (global.ShadyDOM?.inUse && polyfillSupport === undefined) {\n issueWarning(\n 'polyfill-support-missing',\n `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n `the \\`polyfill-support\\` module has not been loaded.`\n );\n }\n });\n}\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ReactiveUnstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry = Update;\n export interface Update {\n kind: 'update';\n }\n }\n}\n\ninterface DebugLoggingWindow {\n // Even in dev mode, we generally don't want to emit these events, as that's\n // another level of cost, so only emit them when DEV_MODE is true _and_ when\n // window.emitLitDebugEvents is true.\n emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n ? (event: ReactiveUnstable.DebugLog.Entry) => {\n const shouldEmit = (global as unknown as DebugLoggingWindow)\n .emitLitDebugLogEvents;\n if (!shouldEmit) {\n return;\n }\n global.dispatchEvent(\n new CustomEvent<ReactiveUnstable.DebugLog.Entry>('lit-debug', {\n detail: event,\n })\n );\n }\n : undefined;\n\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n prop: P,\n _obj: unknown\n): P => prop;\n\n/**\n * Converts property values to and from attribute values.\n */\nexport interface ComplexAttributeConverter<Type = unknown, TypeHint = unknown> {\n /**\n * Called to convert an attribute value to a property\n * value.\n */\n fromAttribute?(value: string | null, type?: TypeHint): Type;\n\n /**\n * Called to convert a property value to an attribute\n * value.\n *\n * It returns unknown instead of string, to be compatible with\n * https://github.com/WICG/trusted-types (and similar efforts).\n */\n toAttribute?(value: Type, type?: TypeHint): unknown;\n}\n\ntype AttributeConverter<Type = unknown, TypeHint = unknown> =\n | ComplexAttributeConverter<Type>\n | ((value: string | null, type?: TypeHint) => Type);\n\n/**\n * Defines options for a property accessor.\n */\nexport interface PropertyDeclaration<Type = unknown, TypeHint = unknown> {\n /**\n * When set to `true`, indicates the property is internal private state. The\n * property should not be set by users. When using TypeScript, this property\n * should be marked as `private` or `protected`, and it is also a common\n * practice to use a leading `_` in the name. The property is not added to\n * `observedAttributes`.\n */\n readonly state?: boolean;\n\n /**\n * Indicates how and whether the property becomes an observed attribute.\n * If the value is `false`, the property is not added to `observedAttributes`.\n * If true or absent, the lowercased property name is observed (e.g. `fooBar`\n * becomes `foobar`). If a string, the string value is observed (e.g\n * `attribute: 'foo-bar'`).\n */\n readonly attribute?: boolean | string;\n\n /**\n * Indicates the type of the property. This is used only as a hint for the\n * `converter` to determine how to convert the attribute\n * to/from a property.\n */\n readonly type?: TypeHint;\n\n /**\n * Indicates how to convert the attribute to/from a property. If this value\n * is a function, it is used to convert the attribute value a the property\n * value. If it's an object, it can have keys for `fromAttribute` and\n * `toAttribute`. If no `toAttribute` function is provided and\n * `reflect` is set to `true`, the property value is set directly to the\n * attribute. A default `converter` is used if none is provided; it supports\n * `Boolean`, `String`, `Number`, `Object`, and `Array`. Note,\n * when a property changes and the converter is used to update the attribute,\n * the property is never updated again as a result of the attribute changing,\n * and vice versa.\n */\n readonly converter?: AttributeConverter<Type, TypeHint>;\n\n /**\n * Indicates if the property should reflect to an attribute.\n * If `true`, when the property is set, the attribute is set using the\n * attribute name determined according to the rules for the `attribute`\n * property option and the value of the property converted using the rules\n * from the `converter` property option.\n */\n readonly reflect?: boolean;\n\n /**\n * A function that indicates if a property should be considered changed when\n * it is set. The function should take the `newValue` and `oldValue` and\n * return `true` if an update should be requested.\n */\n hasChanged?(value: Type, oldValue: Type): boolean;\n\n /**\n * Indicates whether an accessor will be created for this property. By\n * default, an accessor will be generated for this property that requests an\n * update when set. If this flag is `true`, no accessor will be created, and\n * it will be the user's responsibility to call\n * `this.requestUpdate(propertyName, oldValue)` to request an update when\n * the property changes.\n */\n readonly noAccessor?: boolean;\n\n /**\n * Whether this property is wrapping accessors. This is set by `@property`\n * to control the initial value change and reflection logic.\n *\n * @internal\n */\n wrapped?: boolean;\n\n /**\n * When `true`, uses the initial value of the property as the default value,\n * which changes how attributes are handled:\n * - The initial value does *not* reflect, even if the `reflect` option is `true`.\n * Subsequent changes to the property will reflect, even if they are equal to the\n * default value.\n * - When the attribute is removed, the property is set to the default value\n * - The initial value will not trigger an old value in the `changedProperties` map\n * argument to update lifecycle methods.\n *\n * When set, properties must be initialized, either with a field initializer, or an\n * assignment in the constructor. Not initializing the property may lead to\n * improper handling of subsequent property assignments.\n *\n * While this behavior is opt-in, most properties that reflect to attributes should\n * use `useDefault: true` so that their initial values do not reflect.\n */\n useDefault?: boolean;\n}\n\n/**\n * Map of properties to PropertyDeclaration options. For each property an\n * accessor is made, and the property is processed according to the\n * PropertyDeclaration options.\n */\nexport interface PropertyDeclarations {\n readonly [key: string]: PropertyDeclaration;\n}\n\ntype PropertyDeclarationMap = Map<PropertyKey, PropertyDeclaration>;\n\ntype AttributeMap = Map<string, PropertyKey>;\n\n/**\n * A Map of property keys to values.\n *\n * Takes an optional type parameter T, which when specified as a non-any,\n * non-unknown type, will make the Map more strongly-typed, associating the map\n * keys with their corresponding value type on T.\n *\n * Use `PropertyValues<this>` when overriding ReactiveElement.update() and\n * other lifecycle methods in order to get stronger type-checking on keys\n * and values.\n */\n// This type is conditional so that if the parameter T is not specified, or\n// is `any`, the type will include `Map<PropertyKey, unknown>`. Since T is not\n// given in the uses of PropertyValues in this file, all uses here fallback to\n// meaning `Map<PropertyKey, unknown>`, but if a developer uses\n// `PropertyValues<this>` (or any other value for T) they will get a\n// strongly-typed Map type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PropertyValues<T = any> = T extends object\n ? PropertyValueMap<T>\n : Map<PropertyKey, unknown>;\n\n/**\n * Do not use, instead prefer {@linkcode PropertyValues}.\n */\n// This type must be exported such that JavaScript generated by the Google\n// Closure Compiler can import a type reference.\nexport interface PropertyValueMap<T> extends Map<PropertyKey, unknown> {\n get<K extends keyof T>(k: K): T[K] | undefined;\n set<K extends keyof T>(key: K, value: T[K]): this;\n has<K extends keyof T>(k: K): boolean;\n delete<K extends keyof T>(k: K): boolean;\n}\n\nexport const defaultConverter: ComplexAttributeConverter = {\n toAttribute(value: unknown, type?: unknown): unknown {\n switch (type) {\n case Boolean:\n value = value ? emptyStringForBooleanAttribute : null;\n break;\n case Object:\n case Array:\n // if the value is `null` or `undefined` pass this through\n // to allow removing/no change behavior.\n value = value == null ? value : JSON.stringify(value);\n break;\n }\n return value;\n },\n\n fromAttribute(value: string | null, type?: unknown) {\n let fromValue: unknown = value;\n switch (type) {\n case Boolean:\n fromValue = value !== null;\n break;\n case Number:\n fromValue = value === null ? null : Number(value);\n break;\n case Object:\n case Array:\n // Do *not* generate exception when invalid JSON is set as elements\n // don't normally complain on being mis-configured.\n // TODO(sorvell): Do generate exception in *dev mode*.\n try {\n // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n fromValue = JSON.parse(value!) as unknown;\n } catch (e) {\n fromValue = null;\n }\n break;\n }\n return fromValue;\n },\n};\n\nexport interface HasChanged {\n (value: unknown, old: unknown): boolean;\n}\n\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nexport const notEqual: HasChanged = (value: unknown, old: unknown): boolean =>\n !is(value, old);\n\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n attribute: true,\n type: String,\n converter: defaultConverter,\n reflect: false,\n useDefault: false,\n hasChanged: notEqual,\n};\n\n/**\n * A string representing one of the supported dev mode warning categories.\n */\nexport type WarningKind =\n | 'change-in-update'\n | 'migration'\n | 'async-perform-update';\n\nexport type Initializer = (element: ReactiveElement) => void;\n\n// Temporary, until google3 is on TypeScript 5.2\ndeclare global {\n interface SymbolConstructor {\n readonly metadata: unique symbol;\n }\n}\n\n// Ensure metadata is enabled. TypeScript does not polyfill\n// Symbol.metadata, so we must ensure that it exists.\n(Symbol as {metadata: symbol}).metadata ??= Symbol('metadata');\n\ndeclare global {\n // This is public global API, do not change!\n // eslint-disable-next-line no-var\n var litPropertyMetadata: WeakMap<\n object,\n Map<PropertyKey, PropertyDeclaration>\n >;\n}\n\n// Map from a class's metadata object to property options\n// Note that we must use nullish-coalescing assignment so that we only use one\n// map even if we load multiple version of this module.\nglobal.litPropertyMetadata ??= new WeakMap<\n object,\n Map<PropertyKey, PropertyDeclaration>\n>();\n\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclasses to render updates as desired.\n * @noInheritDoc\n */\nexport abstract class ReactiveElement\n // In the Node build, this `extends` clause will be substituted with\n // `(globalThis.HTMLElement ?? HTMLElement)`.\n //\n // This way, we will first prefer any global `HTMLElement` polyfill that the\n // user has assigned, and then fall back to the `HTMLElement` shim which has\n // been imported (see note at the top of this file about how this import is\n // generated by Rollup). Note that the `HTMLElement` variable has been\n // shadowed by this import, so it no longer refers to the global.\n extends HTMLElement\n implements ReactiveControllerHost\n{\n // Note: these are patched in only in DEV_MODE.\n /**\n * Read or set all the enabled warning categories for this class.\n *\n * This property is only used in development builds.\n *\n * @nocollapse\n * @category dev-mode\n */\n static enabledWarnings?: WarningKind[];\n\n /**\n * Enable the given warning category for this class.\n *\n * This method only exists in development builds, so it should be accessed\n * with a guard like:\n *\n * ```ts\n * // Enable for all ReactiveElement subclasses\n * ReactiveElement.enableWarning?.('migration');\n *\n * // Enable for only MyElement and subclasses\n * MyElement.enableWarning?.('migration');\n * ```\n *\n * @nocollapse\n * @category dev-mode\n */\n static enableWarning?: (warningKind: WarningKind) => void;\n\n /**\n * Disable the given warning category for this class.\n *\n * This method only exists in development builds, so it should be accessed\n * with a guard like:\n *\n * ```ts\n * // Disable for all ReactiveElement subclasses\n * ReactiveElement.disableWarning?.('migration');\n *\n * // Disable for only MyElement and subclasses\n * MyElement.disableWarning?.('migration');\n * ```\n *\n * @nocollapse\n * @category dev-mode\n */\n static disableWarning?: (warningKind: WarningKind) => void;\n\n /**\n * Adds an initializer function to the class that is called during instance\n * construction.\n *\n * This is useful for code that runs against a `ReactiveElement`\n * subclass, such as a decorator, that needs to do work for each\n * instance, such as setting up a `ReactiveController`.\n *\n * ```ts\n * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n * target.addInitializer((instance: ReactiveElement) => {\n * // This is run during construction of the element\n * new MyController(instance);\n * });\n * }\n * ```\n *\n * Decorating a field will then cause each instance to run an initializer\n * that adds a controller:\n *\n * ```ts\n * class MyElement extends LitElement {\n * @myDecorator foo;\n * }\n * ```\n *\n * Initializers are stored per-constructor. Adding an initializer to a\n * subclass does not add it to a superclass. Since initializers are run in\n * constructors, initializers will run in order of the class hierarchy,\n * starting with superclasses and progressing to the instance's class.\n *\n * @nocollapse\n */\n static addInitializer(initializer: Initializer) {\n this.__prepare();\n (this._initializers ??= []).push(initializer);\n }\n\n static _initializers?: Initializer[];\n\n /*\n * Due to closure compiler ES6 compilation bugs, @nocollapse is required on\n * all static methods and properties with initializers. Reference:\n * - https://github.com/google/closure-compiler/issues/1776\n */\n\n /**\n * Maps attribute names to properties; for example `foobar` attribute to\n * `fooBar` property. Created lazily on user subclasses when finalizing the\n * class.\n * @nocollapse\n */\n private static __attributeToPropertyMap: AttributeMap;\n\n /**\n * Marks class as having been finalized, which includes creating properties\n * from `static properties`, but does *not* include all properties created\n * from decorators.\n * @nocollapse\n */\n protected static finalized: true | undefined;\n\n /**\n * Memoized list of all element properties, including any superclass\n * properties. Created lazily on user subclasses when finalizing the class.\n *\n * @nocollapse\n * @category properties\n */\n static elementProperties: PropertyDeclarationMap;\n\n /**\n * User-supplied object that maps property names to `PropertyDeclaration`\n * objects containing options for configuring reactive properties. When\n * a reactive property is set the element will update and render.\n *\n * By default properties are public fields, and as such, they should be\n * considered as primarily settable by element users, either via attribute or\n * the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the `state: true` option. Properties\n * marked as `state` do not reflect from the corresponding attribute\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating\n * public properties should typically not be done for non-primitive (object or\n * array) properties. In other cases when an element needs to manage state, a\n * private property set with the `state: true` option should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n * @nocollapse\n * @category properties\n */\n static properties: PropertyDeclarations;\n\n /**\n * Memoized list of all element styles.\n * Created lazily on user subclasses when finalizing the class.\n * @nocollapse\n * @category styles\n */\n static elementStyles: Array<CSSResultOrNative> = [];\n\n /**\n * Array of styles to apply to the element. The styles should be defined\n * using the {@linkcode css} tag function, via constructible stylesheets, or\n * imported from native CSS module scripts.\n *\n * Note on Content Security Policy:\n *\n * Element styles are implemented with `<style>` tags when the browser doesn't\n * support adopted StyleSheets. To use such `<style>` tags with the style-src\n * CSP directive, the style-src value must either include 'unsafe-inline' or\n * `nonce-<base64-value>` with `<base64-value>` replaced be a server-generated\n * nonce.\n *\n * To provide a nonce to use on generated `<style>` elements, set\n * `window.litNonce` to a server-generated nonce in your page's HTML, before\n * loading application code:\n *\n * ```html\n * <script>\n * // Generated and unique per request:\n * window.litNonce = 'a1b2c3d4';\n * </script>\n * ```\n * @nocollapse\n * @category styles\n */\n static styles?: CSSResultGroup;\n\n /**\n * Returns a list of attributes corresponding to the registered properties.\n * @nocollapse\n * @category attributes\n */\n static get observedAttributes() {\n // Ensure we've created all properties\n this.finalize();\n // this.__attributeToPropertyMap is only undefined after finalize() in\n // ReactiveElement itself. ReactiveElement.observedAttributes is only\n // accessed with ReactiveElement as the receiver when a subclass or mixin\n // calls super.observedAttributes\n return (\n this.__attributeToPropertyMap && [...this.__attributeToPropertyMap.keys()]\n );\n }\n\n private __instanceProperties?: PropertyValues = undefined;\n\n /**\n * Creates a property accessor on the element prototype if one does not exist\n * and stores a {@linkcode PropertyDeclaration} for the property with the\n * given options. The property setter calls the property's `hasChanged`\n * property option or uses a strict identity check to determine whether or not\n * to request an update.\n *\n * This method may be overridden to customize properties; however,\n * when doing so, it's important to call `super.createProperty` to ensure\n * the property is setup correctly. This method calls\n * `getPropertyDescriptor` internally to get a descriptor to install.\n * To customize what properties do when they are get or set, override\n * `getPropertyDescriptor`. To customize the options for a property,\n * implement `createProperty` like this:\n *\n * ```ts\n * static createProperty(name, options) {\n * options = Object.assign(options, {myOption: true});\n * super.createProperty(name, options);\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n static createProperty(\n name: PropertyKey,\n options: PropertyDeclaration = defaultPropertyDeclaration\n ) {\n // If this is a state property, force the attribute to false.\n if (options.state) {\n (options as Mutable<PropertyDeclaration, 'attribute'>).attribute = false;\n }\n this.__prepare();\n // Whether this property is wrapping accessors.\n // Helps control the initial value change and reflection logic.\n if (this.prototype.hasOwnProperty(name)) {\n options = Object.create(options);\n options.wrapped = true;\n }\n this.elementProperties.set(name, options);\n if (!options.noAccessor) {\n const key = DEV_MODE\n ? // Use Symbol.for in dev mode to make it easier to maintain state\n // when doing HMR.\n Symbol.for(`${String(name)} (@property() cache)`)\n : Symbol();\n const descriptor = this.getPropertyDescriptor(name, key, options);\n if (descriptor !== undefined) {\n defineProperty(this.prototype, name, descriptor);\n }\n }\n }\n\n /**\n * Returns a property descriptor to be defined on the given named property.\n * If no descriptor is returned, the property will not become an accessor.\n * For example,\n *\n * ```ts\n * class MyElement extends LitElement {\n * static getPropertyDescriptor(name, key, options) {\n * const defaultDescriptor =\n * super.getPropertyDescriptor(name, key, options);\n * const setter = defaultDescriptor.set;\n * return {\n * get: defaultDescriptor.get,\n * set(value) {\n * setter.call(this, value);\n * // custom action.\n * },\n * configurable: true,\n * enumerable: true\n * }\n * }\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n protected static getPropertyDescriptor(\n name: PropertyKey,\n key: string | symbol,\n options: PropertyDeclaration\n ): PropertyDescriptor | undefined {\n const {get, set} = getOwnPropertyDescriptor(this.prototype, name) ?? {\n get(this: ReactiveElement) {\n return this[key as keyof typeof this];\n },\n set(this: ReactiveElement, v: unknown) {\n (this as unknown as Record<string | symbol, unknown>)[key] = v;\n },\n };\n if (DEV_MODE && get == null) {\n if ('value' in (getOwnPropertyDescriptor(this.prototype, name) ?? {})) {\n throw new Error(\n `Field ${JSON.stringify(String(name))} on ` +\n `${this.name} was declared as a reactive property ` +\n `but it's actually declared as a value on the prototype. ` +\n `Usually this is due to using @property or @state on a method.`\n );\n }\n issueWarning(\n 'reactive-property-without-getter',\n `Field ${JSON.stringify(String(name))} on ` +\n `${this.name} was declared as a reactive property ` +\n `but it does not have a getter. This will be an error in a ` +\n `future version of Lit.`\n );\n }\n return {\n get,\n set(this: ReactiveElement, value: unknown) {\n const oldValue = get?.call(this);\n set?.call(this, value);\n this.requestUpdate(name, oldValue, options);\n },\n configurable: true,\n enumerable: true,\n };\n }\n\n /**\n * Returns the property options associated with the given property.\n * These options are defined with a `PropertyDeclaration` via the `properties`\n * object or the `@property` decorator and are registered in\n * `createProperty(...)`.\n *\n * Note, this method should be considered \"final\" and not overridden. To\n * customize the options for a given property, override\n * {@linkcode createProperty}.\n *\n * @nocollapse\n * @final\n * @category properties\n */\n static getPropertyOptions(name: PropertyKey) {\n return this.elementProperties.get(name) ?? defaultPropertyDeclaration;\n }\n\n // Temporary, until google3 is on TypeScript 5.2\n declare static [Symbol.metadata]: object & Record<PropertyKey, unknown>;\n\n /**\n * Initializes static own properties of the class used in bookkeeping\n * for element properties, initializers, etc.\n *\n * Can be called multiple times by code that needs to ensure these\n * properties exist before using them.\n *\n * This method ensures the superclass is finalized so that inherited\n * property metadata can be copied down.\n * @nocollapse\n */\n private static __prepare() {\n if (\n this.hasOwnProperty(JSCompiler_renameProperty('elementProperties', this))\n ) {\n // Already prepared\n return;\n }\n // Finalize any superclasses\n const superCtor = getPrototypeOf(this) as typeof ReactiveElement;\n superCtor.finalize();\n\n // Create own set of initializers for this class if any exist on the\n // superclass and copy them down. Note, for a small perf boost, avoid\n // creating initializers unless needed.\n if (superCtor._initializers !== undefined) {\n this._initializers = [...superCtor._initializers];\n }\n // Initialize elementProperties from the superclass\n this.elementProperties = new Map(superCtor.elementProperties);\n }\n\n /**\n * Finishes setting up the class so that it's ready to be registered\n * as a custom element and instantiated.\n *\n * This method is called by the ReactiveElement.observedAttributes getter.\n * If you override the observedAttributes getter, you must either call\n * super.observedAttributes to trigger finalization, or call finalize()\n * yourself.\n *\n * @nocollapse\n */\n protected static finalize() {\n if (this.hasOwnProperty(JSCompiler_renameProperty('finalized', this))) {\n return;\n }\n this.finalized = true;\n this.__prepare();\n\n // Create properties from the static properties block:\n if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n const props = this.properties;\n const propKeys = [\n ...getOwnPropertyNames(props),\n ...getOwnPropertySymbols(props),\n ] as Array<keyof typeof props>;\n for (const p of propKeys) {\n this.createProperty(p, props[p]);\n }\n }\n\n // Create properties from standard decorator metadata:\n const metadata = this[Symbol.metadata];\n if (metadata !== null) {\n const properties = litPropertyMetadata.get(metadata);\n if (properties !== undefined) {\n for (const [p, options] of properties) {\n this.elementProperties.set(p, options);\n }\n }\n }\n\n // Create the attribute-to-property map\n this.__attributeToPropertyMap = new Map();\n for (const [p, options] of this.elementProperties) {\n const attr = this.__attributeNameForProperty(p, options);\n if (attr !== undefined) {\n this.__attributeToPropertyMap.set(attr, p);\n }\n }\n\n this.elementStyles = this.finalizeStyles(this.styles);\n\n if (DEV_MODE) {\n if (this.hasOwnProperty('createProperty')) {\n issueWarning(\n 'no-override-create-property',\n 'Overriding ReactiveElement.createProperty() is deprecated. ' +\n 'The override will not be called with standard decorators'\n );\n }\n if (this.hasOwnProperty('getPropertyDescriptor')) {\n issueWarning(\n 'no-override-get-property-descriptor',\n 'Overriding ReactiveElement.getPropertyDescriptor() is deprecated. ' +\n 'The override will not be called with standard decorators'\n );\n }\n }\n }\n\n /**\n * Options used when calling `attachShadow`. Set this property to customize\n * the options for the shadowRoot; for example, to create a closed\n * shadowRoot: `{mode: 'closed'}`.\n *\n * Note, these options are used in `createRenderRoot`. If this method\n * is customized, options should be respected if possible.\n * @nocollapse\n * @category rendering\n */\n static shadowRootOptions: ShadowRootInit = {mode: 'open'};\n\n /**\n * Takes the styles the user supplied via the `static styles` property and\n * returns the array of styles to apply to the element.\n * Override this method to integrate into a style management system.\n *\n * Styles are deduplicated preserving the _last_ instance in the list. This\n * is a performance optimization to avoid duplicated styles that can occur\n * especially when composing via subclassing. The last item is kept to try\n * to preserve the cascade order with the assumption that it's most important\n * that last added styles override previous styles.\n *\n * @nocollapse\n * @category styles\n */\n protected static finalizeStyles(\n styles?: CSSResultGroup\n ): Array<CSSResultOrNative> {\n const elementStyles = [];\n if (Array.isArray(styles)) {\n // Dedupe the flattened array in reverse order to preserve the last items.\n // Casting to Array<unknown> works around TS error that\n // appears to come from trying to flatten a type CSSResultArray.\n const set = new Set((styles as Array<unknown>).flat(Infinity).reverse());\n // Then preserve original order by adding the set items in reverse order.\n for (const s of set) {\n elementStyles.unshift(getCompatibleStyle(s as CSSResultOrNative));\n }\n } else if (styles !== undefined) {\n elementStyles.push(getCompatibleStyle(styles));\n }\n return elementStyles;\n }\n\n /**\n * Node or ShadowRoot into which element DOM should be rendered. Defaults\n * to an open shadowRoot.\n * @category rendering\n */\n readonly renderRoot!: HTMLElement | DocumentFragment;\n\n /**\n * Returns the property name for the given attribute `name`.\n * @nocollapse\n */\n private static __attributeNameForProperty(\n name: PropertyKey,\n options: PropertyDeclaration\n ) {\n const attribute = options.attribute;\n return attribute === false\n ? undefined\n : typeof attribute === 'string'\n ? attribute\n : typeof name === 'string'\n ? name.toLowerCase()\n : undefined;\n }\n\n // Initialize to an unresolved Promise so we can make sure the element has\n // connected before first update.\n private __updatePromise!: Promise<boolean>;\n\n /**\n * True if there is a pending update as a result of calling `requestUpdate()`.\n * Should only be read.\n * @category updates\n */\n isUpdatePending = false;\n\n /**\n * Is set to `true` after the first update. The element code cannot assume\n * that `renderRoot` exists before the element `hasUpdated`.\n * @category updates\n */\n hasUpdated = false;\n\n /**\n * Map with keys for any properties that have changed since the last\n * update cycle with previous values.\n *\n * @internal\n */\n _$changedProperties!: PropertyValues;\n\n /**\n * Records property default values when the\n * `useDefault` option is used.\n */\n private __defaultValues?: Map<PropertyKey, unknown>;\n\n /**\n * Properties that should be reflected when updated.\n */\n private __reflectingProperties?: Set<PropertyKey>;\n\n /**\n * Name of currently reflecting property\n */\n private __reflectingProperty: PropertyKey | null = null;\n\n /**\n * Set of controllers.\n */\n private __controllers?: Set<ReactiveController>;\n\n constructor() {\n super();\n this.__initialize();\n }\n\n /**\n * Internal only override point for customizing work done when elements\n * are constructed.\n */\n private __initialize() {\n this.__updatePromise = new Promise<boolean>(\n (res) => (this.enableUpdating = res)\n );\n this._$changedProperties = new Map();\n // This enqueues a microtask that must run before the first update, so it\n // must be called before requestUpdate()\n this.__saveInstanceProperties();\n // ensures first update will be caught by an early access of\n // `updateComplete`\n this.requestUpdate();\n (this.constructor as typeof ReactiveElement)._initializers?.forEach((i) =>\n i(this)\n );\n }\n\n /**\n * Registers a `ReactiveController` to participate in the element's reactive\n * update cycle. The element automatically calls into any registered\n * controllers during its lifecycle callbacks.\n *\n * If the element is connected when `addController()` is called, the\n * controller's `hostConnected()` callback will be immediately called.\n * @category controllers\n */\n addController(controller: ReactiveController) {\n (this.__controllers ??= new Set()).add(controller);\n // If a controller is added after the element has been connected,\n // call hostConnected. Note, re-using existence of `renderRoot` here\n // (which is set in connectedCallback) to avoid the need to track a\n // first connected state.\n if (this.renderRoot !== undefined && this.isConnected) {\n controller.hostConnected?.();\n }\n }\n\n /**\n * Removes a `ReactiveController` from the element.\n * @category controllers\n */\n removeController(controller: ReactiveController) {\n this.__controllers?.delete(controller);\n }\n\n /**\n * Fixes any properties set on the instance before upgrade time.\n * Otherwise these would shadow the accessor and break these properties.\n * The properties are stored in a Map which is played back after the\n * constructor runs.\n */\n private __saveInstanceProperties() {\n const instanceProperties = new Map<PropertyKey, unknown>();\n const elementProperties = (this.constructor as typeof ReactiveElement)\n .elementProperties;\n for (const p of elementProperties.keys() as IterableIterator<keyof this>) {\n if (this.hasOwnProperty(p)) {\n instanceProperties.set(p, this[p]);\n delete this[p];\n }\n }\n if (instanceProperties.size > 0) {\n this.__instanceProperties = instanceProperties;\n }\n }\n\n /**\n * Returns the node into which the element should render and by default\n * creates and returns an open shadowRoot. Implement to customize where the\n * element's DOM is rendered. For example, to render into the element's\n * childNodes, return `this`.\n *\n * @return Returns a node into which to render.\n * @category rendering\n */\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n const renderRoot =\n this.shadowRoot ??\n this.attachShadow(\n (this.constructor as typeof ReactiveElement).shadowRootOptions\n );\n adoptStyles(\n renderRoot,\n (this.constructor as typeof ReactiveElement).elementStyles\n );\n return renderRoot;\n }\n\n /**\n * On first connection, creates the element's renderRoot, sets up\n * element styling, and enables updating.\n * @category lifecycle\n */\n connectedCallback() {\n // Create renderRoot before controllers `hostConnected`\n (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n this.createRenderRoot();\n this.enableUpdating(true);\n this.__controllers?.forEach((c) => c.hostConnected?.());\n }\n\n /**\n * Note, this method should be considered final and not overridden. It is\n * overridden on the element instance with a function that triggers the first\n * update.\n * @category updates\n */\n protected enableUpdating(_requestedUpdate: boolean) {}\n\n /**\n * Allows for `super.disconnectedCallback()` in extensions while\n * reserving the possibility of making non-breaking feature additions\n * when disconnecting at some point in the future.\n * @category lifecycle\n */\n disconnectedCallback() {\n this.__controllers?.forEach((c) => c.hostDisconnected?.());\n }\n\n /**\n * Synchronizes property values when attributes change.\n *\n * Specifically, when an attribute is set, the corresponding property is set.\n * You should rarely need to implement this callback. If this method is\n * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n * called.\n *\n * See [responding to attribute changes](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#responding_to_attribute_changes)\n * on MDN for more information about the `attributeChangedCallback`.\n * @category attributes\n */\n attributeChangedCallback(\n name: string,\n _old: string | null,\n value: string | null\n ) {\n this._$attributeToProperty(name, value);\n }\n\n private __propertyToAttribute(name: PropertyKey, value: unknown) {\n const elemProperties: PropertyDeclarationMap = (\n this.constructor as typeof ReactiveElement\n ).elementProperties;\n const options = elemProperties.get(name)!;\n const attr = (\n this.constructor as typeof ReactiveElement\n ).__attributeNameForProperty(name, options);\n if (attr !== undefined && options.reflect === true) {\n const converter =\n (options.converter as ComplexAttributeConverter)?.toAttribute !==\n undefined\n ? (options.converter as ComplexAttributeConverter)\n : defaultConverter;\n const attrValue = converter.toAttribute!(value, options.type);\n if (\n DEV_MODE &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n 'migration'\n ) &&\n attrValue === undefined\n ) {\n issueWarning(\n 'undefined-attribute-value',\n `The attribute value for the ${name as string} property is ` +\n `undefined on element ${this.localName}. The attribute will be ` +\n `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n `the attribute would not have changed.`\n );\n }\n // Track if the property is being reflected to avoid\n // setting the property again via `attributeChangedCallback`. Note:\n // 1. this takes advantage of the fact that the callback is synchronous.\n // 2. will behave incorrectly if multiple attributes are in the reaction\n // stack at time of calling. However, since we process attributes\n // in `update` this should not be possible (or an extreme corner case\n // that we'd like to discover).\n // mark state reflecting\n this.__reflectingProperty = name;\n if (attrValue == null) {\n this.removeAttribute(attr);\n } else {\n this.setAttribute(attr, attrValue as string);\n }\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n\n /** @internal */\n _$attributeToProperty(name: string, value: string | null) {\n const ctor = this.constructor as typeof ReactiveElement;\n // Note, hint this as an `AttributeMap` so closure clearly understands\n // the type; it has issues with tracking types through statics\n const propName = (ctor.__attributeToPropertyMap as AttributeMap).get(name);\n // Use tracking info to avoid reflecting a property value to an attribute\n // if it was just set because the attribute changed.\n if (propName !== undefined && this.__reflectingProperty !== propName) {\n const options = ctor.getPropertyOptions(propName);\n const converter =\n typeof options.converter === 'function'\n ? {fromAttribute: options.converter}\n : options.converter?.fromAttribute !== undefined\n ? options.converter\n : defaultConverter;\n // mark state reflecting\n this.__reflectingProperty = propName;\n const convertedValue = converter.fromAttribute!(value, options.type);\n this[propName as keyof this] =\n convertedValue ??\n this.__defaultValues?.get(propName) ??\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (convertedValue as any);\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n\n /**\n * Requests an update which is processed asynchronously. This should be called\n * when an element should update based on some state not triggered by setting\n * a reactive property. In this case, pass no arguments. It should also be\n * called when manually implementing a property setter. In this case, pass the\n * property `name` and `oldValue` to ensure that any configured property\n * options are honored.\n *\n * @param name name of requesting property\n * @param oldValue old value of requesting property\n * @param options property options to use instead of the previously\n * configured options\n * @param useNewValue if true, the newValue argument is used instead of\n * reading the property value. This is important to use if the reactive\n * property is a standard private accessor, as opposed to a plain\n * property, since private members can't be dynamically read by name.\n * @param newValue the new value of the property. This is only used if\n * `useNewValue` is true.\n * @category updates\n */\n requestUpdate(\n name?: PropertyKey,\n oldValue?: unknown,\n options?: PropertyDeclaration,\n useNewValue = false,\n newValue?: unknown\n ): void {\n // If we have a property key, perform property update steps.\n if (name !== undefined) {\n if (DEV_MODE && (name as unknown) instanceof Event) {\n issueWarning(\n ``,\n `The requestUpdate() method was called with an Event as the property name. This is probably a mistake caused by binding this.requestUpdate as an event listener. Instead bind a function that will call it with no arguments: () => this.requestUpdate()`\n );\n }\n const ctor = this.constructor as typeof ReactiveElement;\n if (useNewValue === false) {\n newValue = this[name as keyof this];\n }\n options ??= ctor.getPropertyOptions(name);\n const changed =\n (options.hasChanged ?? notEqual)(newValue, oldValue) ||\n // When there is no change, check a corner case that can occur when\n // 1. there's a initial value which was not reflected\n // 2. the property is subsequently set to this value.\n // For example, `prop: {useDefault: true, reflect: true}`\n // and el.prop = 'foo'. This should be considered a change if the\n // attribute is not set because we will now reflect the property to the attribute.\n (options.useDefault &&\n options.reflect &&\n newValue === this.__defaultValues?.get(name) &&\n !this.hasAttribute(ctor.__attributeNameForProperty(name, options)!));\n if (changed) {\n this._$changeProperty(name, oldValue, options);\n } else {\n // Abort the request if the property should not be considered changed.\n return;\n }\n }\n if (this.isUpdatePending === false) {\n this.__updatePromise = this.__enqueueUpdate();\n }\n }\n\n /**\n * @internal\n */\n _$changeProperty(\n name: PropertyKey,\n oldValue: unknown,\n {useDefault, reflect, wrapped}: PropertyDeclaration,\n initializeValue?: unknown\n ) {\n // Record default value when useDefault is used. This allows us to\n // restore this value when the attribute is removed.\n if (useDefault && !(this.__defaultValues ??= new Map()).has(name)) {\n this.__defaultValues.set(\n name,\n initializeValue ?? oldValue ?? this[name as keyof this]\n );\n // if this is not wrapping an accessor, it must be an initial setting\n // and in this case we do not want to record the change or reflect.\n if (wrapped !== true || initializeValue !== undefined) {\n return;\n }\n }\n // TODO (justinfagnani): Create a benchmark of Map.has() + Map.set(\n // vs just Map.set()\n if (!this._$changedProperties.has(name)) {\n // On the initial change, the old value should be `undefined`, except\n // with `useDefault`\n if (!this.hasUpdated && !useDefault) {\n oldValue = undefined;\n }\n this._$changedProperties.set(name, oldValue);\n }\n // Add to reflecting properties set.\n // Note, it's important that every change has a chance to add the\n // property to `__reflectingProperties`. This ensures setting\n // attribute + property reflects correctly.\n if (reflect === true && this.__reflectingProperty !== name) {\n (this.__reflectingProperties ??= new Set<PropertyKey>()).add(name);\n }\n }\n\n /**\n * Sets up the element to asynchronously update.\n */\n private async __enqueueUpdate() {\n this.isUpdatePending = true;\n try {\n // Ensure any previous update has resolved before updating.\n // This `await` also ensures that property changes are batched.\n await this.__updatePromise;\n } catch (e) {\n // Refire any previous errors async so they do not disrupt the update\n // cycle. Errors are refired so developers have a chance to observe\n // them, and this can be done by implementing\n // `window.onunhandledrejection`.\n Promise.reject(e);\n }\n const result = this.scheduleUpdate();\n // If `scheduleUpdate` returns a Promise, we await it. This is done to\n // enable coordinating updates with a scheduler. Note, the result is\n // checked to avoid delaying an additional microtask unless we need to.\n if (result != null) {\n await result;\n }\n return !this.isUpdatePending;\n }\n\n /**\n * Schedules an element update. You can override this method to change the\n * timing of updates by returning a Promise. The update will await the\n * returned Promise, and you should resolve the Promise to allow the update\n * to proceed. If this method is overridden, `super.scheduleUpdate()`\n * must be called.\n *\n * For instance, to schedule updates to occur just before the next frame:\n *\n * ```ts\n * override protected async scheduleUpdate(): Promise<unknown> {\n * await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n * super.scheduleUpdate();\n * }\n * ```\n * @category updates\n */\n protected scheduleUpdate(): void | Promise<unknown> {\n const result = this.performUpdate();\n if (\n DEV_MODE &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n 'async-perform-update'\n ) &&\n typeof (result as unknown as Promise<unknown> | undefined)?.then ===\n 'function'\n ) {\n issueWarning(\n 'async-perform-update',\n `Element ${this.localName} returned a Promise from performUpdate(). ` +\n `This behavior is deprecated and will be removed in a future ` +\n `version of ReactiveElement.`\n );\n }\n return result;\n }\n\n /**\n * Performs an element update. Note, if an exception is thrown during the\n * update, `firstUpdated` and `updated` will not be called.\n *\n * Call `performUpdate()` to immediately process a pending update. This should\n * generally not be needed, but it can be done in rare cases when you need to\n * update synchronously.\n *\n * @category updates\n */\n protected performUpdate(): void {\n // Abort any update if one is not pending when this is called.\n // This can happen if `performUpdate` is called early to \"flush\"\n // the update.\n if (!this.isUpdatePending) {\n return;\n }\n debugLogEvent?.({kind: 'update'});\n if (!this.hasUpdated) {\n // Create renderRoot before first update. This occurs in `connectedCallback`\n // but is done here to support out of tree calls to `enableUpdating`/`performUpdate`.\n (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n this.createRenderRoot();\n if (DEV_MODE) {\n // Produce warning if any reactive properties on the prototype are\n // shadowed by class fields. Instance fields set before upgrade are\n // deleted by this point, so any own property is caused by class field\n // initialization in the constructor.\n const ctor = this.constructor as typeof ReactiveElement;\n const shadowedProperties = [...ctor.elementProperties.keys()].filter(\n (p) => this.hasOwnProperty(p) && p in getPrototypeOf(this)\n );\n if (shadowedProperties.length) {\n throw new Error(\n `The following properties on element ${this.localName} will not ` +\n `trigger updates as expected because they are set using class ` +\n `fields: ${shadowedProperties.join(', ')}. ` +\n `Native class fields and some compiled output will overwrite ` +\n `accessors used for detecting changes. See ` +\n `https://lit.dev/msg/class-field-shadowing ` +\n `for more information.`\n );\n }\n }\n // Mixin instance properties once, if they exist.\n if (this.__instanceProperties) {\n // TODO (justinfagnani): should we use the stored value? Could a new value\n // have been set since we stored the own property value?\n for (const [p, value] of this.__instanceProperties) {\n this[p as keyof this] = value as this[keyof this];\n }\n this.__instanceProperties = undefined;\n }\n // Trigger initial value reflection and populate the initial\n // `changedProperties` map, but only for the case of properties created\n // via `createProperty` on accessors, which will not have already\n // populated the `changedProperties` map since they are not set.\n // We can't know if these accessors had initializers, so we just set\n // them anyway - a difference from experimental decorators on fields and\n // standard decorators on auto-accessors.\n // For context see:\n // https://github.com/lit/lit/pull/4183#issuecomment-1711959635\n const elementProperties = (this.constructor as typeof ReactiveElement)\n .elementProperties;\n if (elementProperties.size > 0) {\n for (const [p, options] of elementProperties) {\n const {wrapped} = options;\n const value = this[p as keyof this];\n if (\n wrapped === true &&\n !this._$changedProperties.has(p) &&\n value !== undefined\n ) {\n this._$changeProperty(p, undefined, options, value);\n }\n }\n }\n }\n let shouldUpdate = false;\n const changedProperties = this._$changedProperties;\n try {\n shouldUpdate = this.shouldUpdate(changedProperties);\n if (shouldUpdate) {\n this.willUpdate(changedProperties);\n this.__controllers?.forEach((c) => c.hostUpdate?.());\n this.update(changedProperties);\n } else {\n this.__markUpdated();\n }\n } catch (e) {\n // Prevent `firstUpdated` and `updated` from running when there's an\n // update exception.\n shouldUpdate = false;\n // Ensure element can accept additional updates after an exception.\n this.__markUpdated();\n throw e;\n }\n // The update is no longer considered pending and further updates are now allowed.\n if (shouldUpdate) {\n this._$didUpdate(changedProperties);\n }\n }\n\n /**\n * Invoked before `update()` to compute values needed during the update.\n *\n * Implement `willUpdate` to compute property values that depend on other\n * properties and are used in the rest of the update process.\n *\n * ```ts\n * willUpdate(changedProperties) {\n * // only need to check changed properties for an expensive computation.\n * if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n * this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n * }\n * }\n *\n * render() {\n * return html`SHA: ${this.sha}`;\n * }\n * ```\n *\n * @category updates\n */\n protected willUpdate(_changedProperties: PropertyValues): void {}\n\n // Note, this is an override point for polyfill-support.\n // @internal\n _$didUpdate(changedProperties: PropertyValues) {\n this.__controllers?.forEach((c) => c.hostUpdated?.());\n if (!this.hasUpdated) {\n this.hasUpdated = true;\n this.firstUpdated(changedProperties);\n }\n this.updated(changedProperties);\n if (\n DEV_MODE &&\n this.isUpdatePending &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n 'change-in-update'\n )\n ) {\n issueWarning(\n 'change-in-update',\n `Element ${this.localName} scheduled an update ` +\n `(generally because a property was set) ` +\n `after an update completed, causing a new update to be scheduled. ` +\n `This is inefficient and should be avoided unless the next update ` +\n `can only be scheduled as a side effect of the previous update.`\n );\n }\n }\n\n private __markUpdated() {\n this._$changedProperties = new Map();\n this.isUpdatePending = false;\n }\n\n /**\n * Returns a Promise that resolves when the element has completed updating.\n * The Promise value is a boolean that is `true` if the element completed the\n * update without triggering another update. The Promise result is `false` if\n * a property was set inside `updated()`. If the Promise is rejected, an\n * exception was thrown during the update.\n *\n * To await additional asynchronous work, override the `getUpdateComplete`\n * method. For example, it is sometimes useful to await a rendered element\n * before fulfilling this Promise. To do this, first await\n * `super.getUpdateComplete()`, then any subsequent state.\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n get updateComplete(): Promise<boolean> {\n return this.getUpdateComplete();\n }\n\n /**\n * Override point for the `updateComplete` promise.\n *\n * It is not safe to override the `updateComplete` getter directly due to a\n * limitation in TypeScript which means it is not possible to call a\n * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n * This method should be overridden instead. For example:\n *\n * ```ts\n * class MyElement extends LitElement {\n * override async getUpdateComplete() {\n * const result = await super.getUpdateComplete();\n * await this._myChild.updateComplete;\n * return result;\n * }\n * }\n * ```\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n protected getUpdateComplete(): Promise<boolean> {\n return this.__updatePromise;\n }\n\n /**\n * Controls whether or not `update()` should be called when the element requests\n * an update. By default, this method always returns `true`, but this can be\n * customized to control when to update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n return true;\n }\n\n /**\n * Updates the element. This method reflects property values to attributes.\n * It can be overridden to render and keep updated element DOM.\n * Setting properties inside this method will *not* trigger\n * another update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected update(_changedProperties: PropertyValues) {\n // The forEach() expression will only run when __reflectingProperties is\n // defined, and it returns undefined, setting __reflectingProperties to\n // undefined\n this.__reflectingProperties &&= this.__reflectingProperties.forEach((p) =>\n this.__propertyToAttribute(p, this[p as keyof this])\n ) as undefined;\n this.__markUpdated();\n }\n\n /**\n * Invoked whenever the element is updated. Implement to perform\n * post-updating tasks via DOM APIs, for example, focusing an element.\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected updated(_changedProperties: PropertyValues) {}\n\n /**\n * Invoked when the element is first updated. Implement to perform one time\n * work on the element after update.\n *\n * ```ts\n * firstUpdated() {\n * this.renderRoot.getElementById('my-text-area').focus();\n * }\n * ```\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected firstUpdated(_changedProperties: PropertyValues) {}\n}\n// Assigned here to work around a jscompiler bug with static fields\n// when compiling to ES5.\n// https://github.com/google/closure-compiler/issues/3177\n(ReactiveElement as unknown as Record<string, unknown>)[\n JSCompiler_renameProperty('elementProperties', ReactiveElement)\n] = new Map();\n(ReactiveElement as unknown as Record<string, unknown>)[\n JSCompiler_renameProperty('finalized', ReactiveElement)\n] = new Map();\n\n// Apply polyfills if available\npolyfillSupport?.({ReactiveElement});\n\n// Dev mode warnings...\nif (DEV_MODE) {\n // Default warning set.\n ReactiveElement.enabledWarnings = [\n 'change-in-update',\n 'async-perform-update',\n ];\n const ensureOwnWarnings = function (ctor: typeof ReactiveElement) {\n if (\n !ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))\n ) {\n ctor.enabledWarnings = ctor.enabledWarnings!.slice();\n }\n };\n ReactiveElement.enableWarning = function (\n this: typeof ReactiveElement,\n warning: WarningKind\n ) {\n ensureOwnWarnings(this);\n if (!this.enabledWarnings!.includes(warning)) {\n this.enabledWarnings!.push(warning);\n }\n };\n ReactiveElement.disableWarning = function (\n this: typeof ReactiveElement,\n warning: WarningKind\n ) {\n ensureOwnWarnings(this);\n const i = this.enabledWarnings!.indexOf(warning);\n if (i >= 0) {\n this.enabledWarnings!.splice(i, 1);\n }\n };\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n(global.reactiveElementVersions ??= []).push('2.1.2');\nif (DEV_MODE && global.reactiveElementVersions.length > 1) {\n queueMicrotask(() => {\n issueWarning!(\n 'multiple-versions',\n `Multiple versions of Lit loaded. Loading multiple versions ` +\n `is not recommended.`\n );\n });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport {notEqual} from '@lit/reactive-element';\nimport {ReactiveControllerHost} from '@lit/reactive-element/reactive-controller.js';\n\nexport interface TaskFunctionOptions {\n signal: AbortSignal;\n}\n\nexport type TaskFunction<D extends ReadonlyArray<unknown>, R = unknown> = (\n args: D,\n options: TaskFunctionOptions\n) => R | typeof initialState | Promise<R | typeof initialState>;\nexport type ArgsFunction<D extends ReadonlyArray<unknown>> = () => D;\n\n// `DepsFunction` is being maintained for BC with its previous name.\nexport {ArgsFunction as DepsFunction};\n\n/**\n * States for task status\n */\nexport const TaskStatus = {\n INITIAL: 0,\n PENDING: 1,\n COMPLETE: 2,\n ERROR: 3,\n} as const;\n\n/**\n * A special value that can be returned from task functions to reset the task\n * status to INITIAL.\n */\nexport const initialState = Symbol();\n\nexport type TaskStatus = (typeof TaskStatus)[keyof typeof TaskStatus];\n\nexport type StatusRenderer<R> = {\n initial?: () => unknown;\n pending?: () => unknown;\n complete?: (value: R) => unknown;\n error?: (error: unknown) => unknown;\n};\n\nexport interface TaskConfig<T extends ReadonlyArray<unknown>, R> {\n task: TaskFunction<T, R>;\n args?: ArgsFunction<T>;\n\n /**\n * Determines if the task is run automatically when arguments change after a\n * host update. Default to `true`.\n *\n * If `true`, the task checks arguments during the host update (after\n * `willUpdate()` and before `update()` in Lit) and runs if they change. For\n * a task to see argument changes they must be done in `willUpdate()` or\n * earlier. The host element can see task status changes caused by its own\n * current update.\n *\n * If `'afterUpdate'`, the task checks arguments and runs _after_ the host\n * update. This means that the task can see host changes done in update, such\n * as rendered DOM. The host element can not see task status changes caused\n * by its own update, so the task must trigger a second host update to make\n * those changes renderable.\n *\n * Note: `'afterUpdate'` is unlikely to be SSR compatible in the future.\n *\n * If `false`, the task is not run automatically, and must be run with the\n * {@linkcode run} method.\n */\n autoRun?: boolean | 'afterUpdate';\n\n /**\n * A function that determines if the current arg and previous args arrays are\n * equal. If the argsEqual function returns true, the task will not auto-run.\n *\n * The default is {@linkcode shallowArrayEquals}. {@linkcode deepArrayEquals}\n * is also available.\n */\n argsEqual?: (oldArgs: T, newArgs: T) => boolean;\n\n /**\n * If initialValue is provided, the task is initialized to the COMPLETE\n * status and the value is set to initialData.\n *\n * Initial args should be coherent with the initialValue, since they are\n * assumed to be the args that would produce that value. When autoRun is\n * `true` the task will not auto-run again until the args change.\n */\n initialValue?: R;\n onComplete?: (value: R) => unknown;\n onError?: (error: unknown) => unknown;\n}\n\n// TODO(sorvell / justinfagnani): Some issues:\n// 1. With the task triggered in `update`, there is no ReactiveElement\n// change-in-update warning in the common case that the update itself does not change\n// the deps; however, Task's `requestUpdate` call to render pending state will not\n// trigger another update since the element is updating. This `requestUpdate`\n// could be triggered in updated, but that results a change-in-update warning.\n// 2. There is no good signal for when the task has resolved and rendered other\n// than requestAnimationFrame. The user would need to store a promise for the\n// task and then wait for that and the element to update. (Update just justinfagnani:\n// Why isn't waiting taskComplete and updateComplete sufficient? This comment is\n// from before taskComplete existed!)\n\n/**\n * A controller that performs an asynchronous task (like a fetch) when its\n * host element updates.\n *\n * Task requests an update on the host element when the task starts and\n * completes so that the host can render the task status, value, and error as\n * the task runs.\n *\n * The task function must be supplied and can take a list of arguments. The\n * arguments are given to the Task as a function that returns a list of values,\n * which is run and checked for changes on every host update.\n *\n * The `value` property reports the completed value, and the `error` property\n * an error state if one occurs. The `status` property can be checked for\n * status and is of type `TaskStatus` which has states for initial, pending,\n * complete, and error.\n *\n * The `render` method accepts an object with optional methods corresponding\n * to the task statuses to easily render different templates for each task\n * status.\n *\n * The task is run automatically when its arguments change; however, this can\n * be customized by setting `autoRun` to false and calling `run` explicitly\n * to run the task.\n *\n * For a task to see state changes in the current update pass of the host\n * element, those changes must be made in `willUpdate()`. State changes in\n * `update()` or `updated()` will not be visible to the task until the next\n * update pass.\n *\n * @example\n *\n * ```ts\n * class MyElement extends LitElement {\n * url = 'example.com/api';\n * id = 0;\n *\n * task = new Task(\n * this,\n * {\n * task: async ([url, id]) => {\n * const response = await fetch(`${this.url}?id=${this.id}`);\n * if (!response.ok) {\n * throw new Error(response.statusText);\n * }\n * return response.json();\n * },\n * args: () => [this.id, this.url],\n * }\n * );\n *\n * render() {\n * return this.task.render({\n * pending: () => html`<p>Loading...</p>`,\n * complete: (value) => html`<p>Result: ${value}</p>`\n * });\n * }\n * }\n * ```\n */\nexport class Task<\n const T extends ReadonlyArray<unknown> = ReadonlyArray<unknown>,\n const R = unknown,\n> {\n private _previousArgs?: T;\n private _task: TaskFunction<T, R>;\n private _argsFn?: ArgsFunction<T>;\n private _argsEqual: (oldArgs: T, newArgs: T) => boolean;\n private _callId = 0;\n private _host: ReactiveControllerHost;\n private _value?: R;\n private _error?: unknown;\n private _abortController?: AbortController;\n private _onComplete?: (result: R) => unknown;\n private _onError?: (error: unknown) => unknown;\n private _status: TaskStatus = TaskStatus.INITIAL;\n\n /**\n * Determines if the task is run automatically when arguments change after a\n * host update. Default to `true`.\n *\n * @see {@link TaskConfig.autoRun} for more information.\n */\n autoRun: boolean | 'afterUpdate';\n\n /**\n * A Promise that resolve when the current task run is complete.\n *\n * If a new task run is started while a previous run is pending, the Promise\n * is kept and only resolved when the new run is completed.\n */\n get taskComplete(): Promise<R> {\n // If a task run exists, return the cached promise. This is true in the case\n // where the user has called taskComplete in pending or completed state\n // before and has not started a new task run since.\n if (this._taskComplete) {\n return this._taskComplete;\n }\n\n // Generate an in-progress promise if the status is pending and has been\n // cleared by .run().\n if (this._status === TaskStatus.PENDING) {\n this._taskComplete = new Promise((res, rej) => {\n this._resolveTaskComplete = res;\n this._rejectTaskComplete = rej;\n });\n // If the status is error, return a rejected promise.\n } else if (this._status === TaskStatus.ERROR) {\n this._taskComplete = Promise.reject(this._error);\n // Otherwise we are at a task run's completion or this is the first\n // request and we are not in the middle of a task (i.e. INITIAL).\n } else {\n this._taskComplete = Promise.resolve(this._value!);\n }\n\n return this._taskComplete;\n }\n\n private _resolveTaskComplete?: (value: R) => void;\n private _rejectTaskComplete?: (e: unknown) => void;\n private _taskComplete?: Promise<R>;\n\n constructor(host: ReactiveControllerHost, task: TaskConfig<T, R>);\n constructor(\n host: ReactiveControllerHost,\n task: TaskFunction<T, R>,\n args?: ArgsFunction<T>\n );\n constructor(\n host: ReactiveControllerHost,\n task: TaskFunction<T, R> | TaskConfig<T, R>,\n args?: ArgsFunction<T>\n ) {\n (this._host = host).addController(this);\n const taskConfig =\n typeof task === 'object' ? task : ({task, args} as TaskConfig<T, R>);\n this._task = taskConfig.task;\n this._argsFn = taskConfig.args;\n this._argsEqual = taskConfig.argsEqual ?? shallowArrayEquals;\n this._onComplete = taskConfig.onComplete;\n this._onError = taskConfig.onError;\n this.autoRun = taskConfig.autoRun ?? true;\n // Providing initialValue puts the task in COMPLETE state and stores the\n // args immediately so it only runs when they change again.\n if ('initialValue' in taskConfig) {\n this._value = taskConfig.initialValue;\n this._status = TaskStatus.COMPLETE;\n this._previousArgs = this._getArgs?.();\n }\n }\n\n hostUpdate() {\n if (this.autoRun === true) {\n this._performTask();\n }\n }\n\n hostUpdated() {\n if (this.autoRun === 'afterUpdate') {\n this._performTask();\n }\n }\n\n private _getArgs() {\n if (this._argsFn === undefined) {\n return undefined;\n }\n const args = this._argsFn();\n if (!Array.isArray(args)) {\n throw new Error('The args function must return an array');\n }\n return args;\n }\n\n /**\n * Determines if the task should run when it's triggered because of a\n * host update, and runs the task if it should.\n *\n * A task should run when its arguments change from the previous run, based on\n * the args equality function.\n *\n * This method is side-effectful: it stores the new args as the previous args.\n */\n private async _performTask() {\n const args = this._getArgs();\n const prev = this._previousArgs;\n this._previousArgs = args;\n if (\n args !== prev &&\n args !== undefined &&\n (prev === undefined || !this._argsEqual(prev, args))\n ) {\n await this.run(args);\n }\n }\n\n /**\n * Runs a task manually.\n *\n * This can be useful for running tasks in response to events as opposed to\n * automatically running when host element state changes.\n *\n * @param args an optional set of arguments to use for this task run. If args\n * is not given, the args function is called to get the arguments for\n * this run.\n */\n async run(args?: T) {\n args ??= this._getArgs();\n\n // Remember the args for potential future automatic runs.\n // TODO (justinfagnani): add test\n this._previousArgs = args;\n\n if (this._status === TaskStatus.PENDING) {\n this._abortController?.abort();\n } else {\n // Clear the last complete task run in INITIAL because it may be a resolved\n // promise. Also clear if COMPLETE or ERROR because the value returned by\n // awaiting taskComplete may have changed since last run.\n this._taskComplete = undefined;\n this._resolveTaskComplete = undefined;\n this._rejectTaskComplete = undefined;\n }\n\n this._status = TaskStatus.PENDING;\n let result!: R | typeof initialState;\n let error: unknown;\n\n // Request an update to report pending state.\n if (this.autoRun === 'afterUpdate') {\n // Avoids a change-in-update warning\n queueMicrotask(() => this._host.requestUpdate());\n } else {\n this._host.requestUpdate();\n }\n\n const key = ++this._callId;\n this._abortController = new AbortController();\n let errored = false;\n try {\n result = await this._task(args!, {signal: this._abortController.signal});\n } catch (e) {\n errored = true;\n error = e;\n }\n // If this is the most recent task call, process this value.\n if (this._callId === key) {\n if (result === initialState) {\n this._status = TaskStatus.INITIAL;\n } else {\n if (errored === false) {\n try {\n this._onComplete?.(result as R);\n } catch {\n // Ignore user errors from onComplete.\n }\n this._status = TaskStatus.COMPLETE;\n this._resolveTaskComplete?.(result as R);\n } else {\n try {\n this._onError?.(error);\n } catch {\n // Ignore user errors from onError.\n }\n this._status = TaskStatus.ERROR;\n this._rejectTaskComplete?.(error);\n }\n this._value = result as R;\n this._error = error;\n }\n // Request an update with the final value.\n this._host.requestUpdate();\n }\n }\n\n /**\n * Aborts the currently pending task run by aborting the AbortSignal\n * passed to the task function.\n *\n * Aborting a task does nothing if the task is not running: ie, in the\n * complete, error, or initial states.\n *\n * Aborting a task does not automatically cancel the task function. The task\n * function must be written to accept the AbortSignal and either forward it\n * to other APIs like `fetch()`, or handle cancellation manually by using\n * [`signal.throwIfAborted()`]{@link https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/throwIfAborted}\n * or the\n * [`abort`]{@link https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/abort_event}\n * event.\n *\n * @param reason The reason for aborting. Passed to\n * `AbortController.abort()`.\n */\n abort(reason?: unknown) {\n if (this._status === TaskStatus.PENDING) {\n this._abortController?.abort(reason);\n }\n }\n\n /**\n * The result of the previous task run, if it resolved.\n *\n * Is `undefined` if the task has not run yet, or if the previous run errored.\n */\n get value() {\n return this._value;\n }\n\n /**\n * The error from the previous task run, if it rejected.\n *\n * Is `undefined` if the task has not run yet, or if the previous run\n * completed successfully.\n */\n get error() {\n return this._error;\n }\n\n get status() {\n return this._status;\n }\n\n render<T extends StatusRenderer<R>>(renderer: T) {\n switch (this._status) {\n case TaskStatus.INITIAL:\n return renderer.initial?.() as MaybeReturnType<T['initial']>;\n case TaskStatus.PENDING:\n return renderer.pending?.() as MaybeReturnType<T['pending']>;\n case TaskStatus.COMPLETE:\n return renderer.complete?.(this.value!) as MaybeReturnType<\n T['complete']\n >;\n case TaskStatus.ERROR:\n return renderer.error?.(this.error) as MaybeReturnType<T['error']>;\n default:\n throw new Error(`Unexpected status: ${this._status}`);\n }\n }\n}\n\ntype MaybeReturnType<F> = F extends (...args: never[]) => infer R\n ? R\n : undefined;\n\nexport const shallowArrayEquals = <T extends ReadonlyArray<unknown>>(\n oldArgs: T,\n newArgs: T\n) =>\n oldArgs === newArgs ||\n (oldArgs.length === newArgs.length &&\n oldArgs.every((v, i) => !notEqual(v, newArgs[i])));\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Overview:\n *\n * This module is designed to add support for an async `setValue` API and\n * `disconnected` callback to directives with the least impact on the core\n * runtime or payload when that feature is not used.\n *\n * The strategy is to introduce a `AsyncDirective` subclass of\n * `Directive` that climbs the \"parent\" tree in its constructor to note which\n * branches of lit-html's \"logical tree\" of data structures contain such\n * directives and thus need to be crawled when a subtree is being cleared (or\n * manually disconnected) in order to run the `disconnected` callback.\n *\n * The \"nodes\" of the logical tree include Parts, TemplateInstances (for when a\n * TemplateResult is committed to a value of a ChildPart), and Directives; these\n * all implement a common interface called `DisconnectableChild`. Each has a\n * `_$parent` reference which is set during construction in the core code, and a\n * `_$disconnectableChildren` field which is initially undefined.\n *\n * The sparse tree created by means of the `AsyncDirective` constructor\n * crawling up the `_$parent` tree and placing a `_$disconnectableChildren` Set\n * on each parent that includes each child that contains a\n * `AsyncDirective` directly or transitively via its children. In order to\n * notify connection state changes and disconnect (or reconnect) a tree, the\n * `_$notifyConnectionChanged` API is patched onto ChildParts as a directive\n * climbs the parent tree, which is called by the core when clearing a part if\n * it exists. When called, that method iterates over the sparse tree of\n * Set<DisconnectableChildren> built up by AsyncDirectives, and calls\n * `_$notifyDirectiveConnectionChanged` on any directives that are encountered\n * in that tree, running the required callbacks.\n *\n * A given \"logical tree\" of lit-html data-structures might look like this:\n *\n * ChildPart(N1) _$dC=[D2,T3]\n * ._directive\n * AsyncDirective(D2)\n * ._value // user value was TemplateResult\n * TemplateInstance(T3) _$dC=[A4,A6,N10,N12]\n * ._$parts[]\n * AttributePart(A4) _$dC=[D5]\n * ._directives[]\n * AsyncDirective(D5)\n * AttributePart(A6) _$dC=[D7,D8]\n * ._directives[]\n * AsyncDirective(D7)\n * Directive(D8) _$dC=[D9]\n * ._directive\n * AsyncDirective(D9)\n * ChildPart(N10) _$dC=[D11]\n * ._directive\n * AsyncDirective(D11)\n * ._value\n * string\n * ChildPart(N12) _$dC=[D13,N14,N16]\n * ._directive\n * AsyncDirective(D13)\n * ._value // user value was iterable\n * Array<ChildPart>\n * ChildPart(N14) _$dC=[D15]\n * ._value\n * string\n * ChildPart(N16) _$dC=[D17,T18]\n * ._directive\n * AsyncDirective(D17)\n * ._value // user value was TemplateResult\n * TemplateInstance(T18) _$dC=[A19,A21,N25]\n * ._$parts[]\n * AttributePart(A19) _$dC=[D20]\n * ._directives[]\n * AsyncDirective(D20)\n * AttributePart(A21) _$dC=[22,23]\n * ._directives[]\n * AsyncDirective(D22)\n * Directive(D23) _$dC=[D24]\n * ._directive\n * AsyncDirective(D24)\n * ChildPart(N25) _$dC=[D26]\n * ._directive\n * AsyncDirective(D26)\n * ._value\n * string\n *\n * Example 1: The directive in ChildPart(N12) updates and returns `nothing`. The\n * ChildPart will _clear() itself, and so we need to disconnect the \"value\" of\n * the ChildPart (but not its directive). In this case, when `_clear()` calls\n * `_$notifyConnectionChanged()`, we don't iterate all of the\n * _$disconnectableChildren, rather we do a value-specific disconnection: i.e.\n * since the _value was an Array<ChildPart> (because an iterable had been\n * committed), we iterate the array of ChildParts (N14, N16) and run\n * `setConnected` on them (which does recurse down the full tree of\n * `_$disconnectableChildren` below it, and also removes N14 and N16 from N12's\n * `_$disconnectableChildren`). Once the values have been disconnected, we then\n * check whether the ChildPart(N12)'s list of `_$disconnectableChildren` is empty\n * (and would remove it from its parent TemplateInstance(T3) if so), but since\n * it would still contain its directive D13, it stays in the disconnectable\n * tree.\n *\n * Example 2: In the course of Example 1, `setConnected` will reach\n * ChildPart(N16); in this case the entire part is being disconnected, so we\n * simply iterate all of N16's `_$disconnectableChildren` (D17,T18) and\n * recursively run `setConnected` on them. Note that we only remove children\n * from `_$disconnectableChildren` for the top-level values being disconnected\n * on a clear; doing this bookkeeping lower in the tree is wasteful since it's\n * all being thrown away.\n *\n * Example 3: If the LitElement containing the entire tree above becomes\n * disconnected, it will run `childPart.setConnected()` (which calls\n * `childPart._$notifyConnectionChanged()` if it exists); in this case, we\n * recursively run `setConnected()` over the entire tree, without removing any\n * children from `_$disconnectableChildren`, since this tree is required to\n * re-connect the tree, which does the same operation, simply passing\n * `isConnected: true` down the tree, signaling which callback to run.\n */\n\nimport {AttributePart, ChildPart, Disconnectable, Part} from './lit-html.js';\nimport {isSingleExpression} from './directive-helpers.js';\nimport {Directive, PartInfo, PartType} from './directive.js';\nexport * from './directive.js';\n\nconst DEV_MODE = true;\n\n/**\n * Recursively walks down the tree of Parts/TemplateInstances/Directives to set\n * the connected state of directives and run `disconnected`/ `reconnected`\n * callbacks.\n *\n * @return True if there were children to disconnect; false otherwise\n */\nconst notifyChildrenConnectedChanged = (\n parent: Disconnectable,\n isConnected: boolean\n): boolean => {\n const children = parent._$disconnectableChildren;\n if (children === undefined) {\n return false;\n }\n for (const obj of children) {\n // The existence of `_$notifyDirectiveConnectionChanged` is used as a \"brand\" to\n // disambiguate AsyncDirectives from other DisconnectableChildren\n // (as opposed to using an instanceof check to know when to call it); the\n // redundancy of \"Directive\" in the API name is to avoid conflicting with\n // `_$notifyConnectionChanged`, which exists `ChildParts` which are also in\n // this list\n // Disconnect Directive (and any nested directives contained within)\n // This property needs to remain unminified.\n (obj as AsyncDirective)['_$notifyDirectiveConnectionChanged']?.(\n isConnected,\n false\n );\n // Disconnect Part/TemplateInstance\n notifyChildrenConnectedChanged(obj, isConnected);\n }\n return true;\n};\n\n/**\n * Removes the given child from its parent list of disconnectable children, and\n * if the parent list becomes empty as a result, removes the parent from its\n * parent, and so forth up the tree when that causes subsequent parent lists to\n * become empty.\n */\nconst removeDisconnectableFromParent = (obj: Disconnectable) => {\n let parent, children;\n do {\n if ((parent = obj._$parent) === undefined) {\n break;\n }\n children = parent._$disconnectableChildren!;\n children.delete(obj);\n obj = parent;\n } while (children?.size === 0);\n};\n\nconst addDisconnectableToParent = (obj: Disconnectable) => {\n // Climb the parent tree, creating a sparse tree of children needing\n // disconnection\n for (let parent; (parent = obj._$parent); obj = parent) {\n let children = parent._$disconnectableChildren;\n if (children === undefined) {\n parent._$disconnectableChildren = children = new Set();\n } else if (children.has(obj)) {\n // Once we've reached a parent that already contains this child, we\n // can short-circuit\n break;\n }\n children.add(obj);\n installDisconnectAPI(parent);\n }\n};\n\n/**\n * Changes the parent reference of the ChildPart, and updates the sparse tree of\n * Disconnectable children accordingly.\n *\n * Note, this method will be patched onto ChildPart instances and called from\n * the core code when parts are moved between different parents.\n */\nfunction reparentDisconnectables(this: ChildPart, newParent: Disconnectable) {\n if (this._$disconnectableChildren !== undefined) {\n removeDisconnectableFromParent(this);\n this._$parent = newParent;\n addDisconnectableToParent(this);\n } else {\n this._$parent = newParent;\n }\n}\n\n/**\n * Sets the connected state on any directives contained within the committed\n * value of this part (i.e. within a TemplateInstance or iterable of\n * ChildParts) and runs their `disconnected`/`reconnected`s, as well as within\n * any directives stored on the ChildPart (when `valueOnly` is false).\n *\n * `isClearingValue` should be passed as `true` on a top-level part that is\n * clearing itself, and not as a result of recursively disconnecting directives\n * as part of a `clear` operation higher up the tree. This both ensures that any\n * directive on this ChildPart that produced a value that caused the clear\n * operation is not disconnected, and also serves as a performance optimization\n * to avoid needless bookkeeping when a subtree is going away; when clearing a\n * subtree, only the top-most part need to remove itself from the parent.\n *\n * `fromPartIndex` is passed only in the case of a partial `_clear` running as a\n * result of truncating an iterable.\n *\n * Note, this method will be patched onto ChildPart instances and called from the\n * core code when parts are cleared or the connection state is changed by the\n * user.\n */\nfunction notifyChildPartConnectedChanged(\n this: ChildPart,\n isConnected: boolean,\n isClearingValue = false,\n fromPartIndex = 0\n) {\n const value = this._$committedValue;\n const children = this._$disconnectableChildren;\n if (children === undefined || children.size === 0) {\n return;\n }\n if (isClearingValue) {\n if (Array.isArray(value)) {\n // Iterable case: Any ChildParts created by the iterable should be\n // disconnected and removed from this ChildPart's disconnectable\n // children (starting at `fromPartIndex` in the case of truncation)\n for (let i = fromPartIndex; i < value.length; i++) {\n notifyChildrenConnectedChanged(value[i], false);\n removeDisconnectableFromParent(value[i]);\n }\n } else if (value != null) {\n // TemplateInstance case: If the value has disconnectable children (will\n // only be in the case that it is a TemplateInstance), we disconnect it\n // and remove it from this ChildPart's disconnectable children\n notifyChildrenConnectedChanged(value as Disconnectable, false);\n removeDisconnectableFromParent(value as Disconnectable);\n }\n } else {\n notifyChildrenConnectedChanged(this, isConnected);\n }\n}\n\n/**\n * Patches disconnection API onto ChildParts.\n */\nconst installDisconnectAPI = (obj: Disconnectable) => {\n if ((obj as ChildPart).type == PartType.CHILD) {\n (obj as ChildPart)._$notifyConnectionChanged ??=\n notifyChildPartConnectedChanged;\n (obj as ChildPart)._$reparentDisconnectables ??= reparentDisconnectables;\n }\n};\n\n/**\n * An abstract `Directive` base class whose `disconnected` method will be\n * called when the part containing the directive is cleared as a result of\n * re-rendering, or when the user calls `part.setConnected(false)` on\n * a part that was previously rendered containing the directive (as happens\n * when e.g. a LitElement disconnects from the DOM).\n *\n * If `part.setConnected(true)` is subsequently called on a\n * containing part, the directive's `reconnected` method will be called prior\n * to its next `update`/`render` callbacks. When implementing `disconnected`,\n * `reconnected` should also be implemented to be compatible with reconnection.\n *\n * Note that updates may occur while the directive is disconnected. As such,\n * directives should generally check the `this.isConnected` flag during\n * render/update to determine whether it is safe to subscribe to resources\n * that may prevent garbage collection.\n */\nexport abstract class AsyncDirective extends Directive {\n // As opposed to other Disconnectables, AsyncDirectives always get notified\n // when the RootPart connection changes, so the public `isConnected`\n // is a locally stored variable initialized via its part's getter and synced\n // via `_$notifyDirectiveConnectionChanged`. This is cheaper than using\n // the _$isConnected getter, which has to look back up the tree each time.\n /**\n * The connection state for this Directive.\n */\n isConnected!: boolean;\n\n // @internal\n override _$disconnectableChildren?: Set<Disconnectable> = undefined;\n /**\n * Initialize the part with internal fields\n * @param part\n * @param parent\n * @param attributeIndex\n */\n override _$initialize(\n part: Part,\n parent: Disconnectable,\n attributeIndex: number | undefined\n ) {\n super._$initialize(part, parent, attributeIndex);\n addDisconnectableToParent(this);\n this.isConnected = part._$isConnected;\n }\n // This property needs to remain unminified.\n /**\n * Called from the core code when a directive is going away from a part (in\n * which case `shouldRemoveFromParent` should be true), and from the\n * `setChildrenConnected` helper function when recursively changing the\n * connection state of a tree (in which case `shouldRemoveFromParent` should\n * be false).\n *\n * @param isConnected\n * @param isClearingDirective - True when the directive itself is being\n * removed; false when the tree is being disconnected\n * @internal\n */\n override ['_$notifyDirectiveConnectionChanged'](\n isConnected: boolean,\n isClearingDirective = true\n ) {\n if (isConnected !== this.isConnected) {\n this.isConnected = isConnected;\n if (isConnected) {\n this.reconnected?.();\n } else {\n this.disconnected?.();\n }\n }\n if (isClearingDirective) {\n notifyChildrenConnectedChanged(this, isConnected);\n removeDisconnectableFromParent(this);\n }\n }\n\n /**\n * Sets the value of the directive's Part outside the normal `update`/`render`\n * lifecycle of a directive.\n *\n * This method should not be called synchronously from a directive's `update`\n * or `render`.\n *\n * @param directive The directive to update\n * @param value The value to set\n */\n setValue(value: unknown) {\n if (isSingleExpression(this.__part as unknown as PartInfo)) {\n this.__part._$setValue(value, this);\n } else {\n // this.__attributeIndex will be defined in this case, but\n // assert it in dev mode\n if (DEV_MODE && this.__attributeIndex === undefined) {\n throw new Error(`Expected this.__attributeIndex to be a number`);\n }\n const newValues = [...(this.__part._$committedValue as Array<unknown>)];\n newValues[this.__attributeIndex!] = value;\n (this.__part as AttributePart)._$setValue(newValues, this, 0);\n }\n }\n\n /**\n * User callbacks for implementing logic to release any resources/subscriptions\n * that may have been retained by this directive. Since directives may also be\n * re-connected, `reconnected` should also be implemented to restore the\n * working state of the directive prior to the next render.\n */\n protected disconnected() {}\n protected reconnected() {}\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport {nothing, ElementPart} from '../lit-html.js';\nimport {directive, AsyncDirective} from '../async-directive.js';\n\n/**\n * Creates a new Ref object, which is container for a reference to an element.\n */\nexport const createRef = <T = Element>() => new Ref<T>();\n\n/**\n * An object that holds a ref value.\n */\nclass Ref<T = Element> {\n /**\n * The current Element value of the ref, or else `undefined` if the ref is no\n * longer rendered.\n */\n readonly value?: T;\n}\n\nexport type {Ref};\n\ninterface RefInternal {\n value: Element | undefined;\n}\n\n// When callbacks are used for refs, this map tracks the last value the callback\n// was called with, for ensuring a directive doesn't clear the ref if the ref\n// has already been rendered to a new spot. It is double-keyed on both the\n// context (`options.host`) and the callback, since we auto-bind class methods\n// to `options.host`.\nconst lastElementForContextAndCallback = new WeakMap<\n object,\n WeakMap<Function, Element | undefined>\n>();\n\nexport type RefOrCallback<T = Element> = Ref<T> | ((el: T | undefined) => void);\n\nclass RefDirective extends AsyncDirective {\n private _element?: Element;\n private _ref?: RefOrCallback;\n private _context?: object;\n\n render(_ref?: RefOrCallback) {\n return nothing;\n }\n\n override update(part: ElementPart, [ref]: Parameters<this['render']>) {\n const refChanged = ref !== this._ref;\n if (refChanged && this._ref !== undefined) {\n // The ref passed to the directive has changed;\n // unset the previous ref's value\n this._updateRefValue(undefined);\n }\n if (refChanged || this._lastElementForRef !== this._element) {\n // We either got a new ref or this is the first render;\n // store the ref/element & update the ref value\n this._ref = ref;\n this._context = part.options?.host;\n this._updateRefValue((this._element = part.element));\n }\n return nothing;\n }\n\n private _updateRefValue(element: Element | undefined) {\n if (!this.isConnected) {\n element = undefined;\n }\n if (typeof this._ref === 'function') {\n // If the current ref was called with a previous value, call with\n // `undefined`; We do this to ensure callbacks are called in a consistent\n // way regardless of whether a ref might be moving up in the tree (in\n // which case it would otherwise be called with the new value before the\n // previous one unsets it) and down in the tree (where it would be unset\n // before being set). Note that element lookup is keyed by\n // both the context and the callback, since we allow passing unbound\n // functions that are called on options.host, and we want to treat\n // these as unique \"instances\" of a function.\n const context = this._context ?? globalThis;\n let lastElementForCallback =\n lastElementForContextAndCallback.get(context);\n if (lastElementForCallback === undefined) {\n lastElementForCallback = new WeakMap();\n lastElementForContextAndCallback.set(context, lastElementForCallback);\n }\n if (lastElementForCallback.get(this._ref) !== undefined) {\n this._ref.call(this._context, undefined);\n }\n lastElementForCallback.set(this._ref, element);\n // Call the ref with the new element value\n if (element !== undefined) {\n this._ref.call(this._context, element);\n }\n } else {\n (this._ref as RefInternal)!.value = element;\n }\n }\n\n private get _lastElementForRef() {\n return typeof this._ref === 'function'\n ? lastElementForContextAndCallback\n .get(this._context ?? globalThis)\n ?.get(this._ref)\n : this._ref?.value;\n }\n\n override disconnected() {\n // Only clear the box if our element is still the one in it (i.e. another\n // directive instance hasn't rendered its element to it before us); that\n // only happens in the event of the directive being cleared (not via manual\n // disconnection)\n if (this._lastElementForRef === this._element) {\n this._updateRefValue(undefined);\n }\n }\n\n override reconnected() {\n // If we were manually disconnected, we can safely put our element back in\n // the box, since no rendering could have occurred to change its state\n this._updateRefValue(this._element);\n }\n}\n\n/**\n * Sets the value of a Ref object or calls a ref callback with the element it's\n * bound to.\n *\n * A Ref object acts as a container for a reference to an element. A ref\n * callback is a function that takes an element as its only argument.\n *\n * The ref directive sets the value of the Ref object or calls the ref callback\n * during rendering, if the referenced element changed.\n *\n * Note: If a ref callback is rendered to a different element position or is\n * removed in a subsequent render, it will first be called with `undefined`,\n * followed by another call with the new element it was rendered to (if any).\n *\n * ```js\n * // Using Ref object\n * const inputRef = createRef();\n * render(html`<input ${ref(inputRef)}>`, container);\n * inputRef.value.focus();\n *\n * // Using callback\n * const callback = (inputElement) => inputElement.focus();\n * render(html`<input ${ref(callback)}>`, container);\n * ```\n */\nexport const ref = directive(RefDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RefDirective};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"mappings":"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"}
\ No newline at end of file
diff --git a/client/vendor/wui.chunk.js b/client/vendor/wui.chunk.js
index f81e539..d4b6094 100644
--- a/client/vendor/wui.chunk.js
+++ b/client/vendor/wui.chunk.js
@@ -8,5 +8,4 @@
<!-- End Google Tag Manager -->
`,I=new class{constructor(){document.addEventListener(`DOMContentLoaded`,async()=>{await this.add()})}async add(){let e=await y.Configuration;if(await x.IsAppReady,e.gtm_setup&&e.gtm_setup.isActive){let t=e.gtm_setup.key,n=document.createElement(`script`);n.innerHTML=F.replace(`{{key}}`,t),document.head.prepend(n)}}async push(e){let t=await y.Configuration;t.gtm_setup&&t.gtm_setup.isActive&&(window.dataLayer=window.dataLayer||[],window.dataLayer.push(e))}},L=new class{isCreated=_();validated=_();currentElement;needValidation=!0;instance=-1;get IsCreated(){return this.isCreated}get Validating(){return this.validated}get needsValidation(){return this.needValidation}constructor(){window.onReCaptchaLoaded=()=>{this.IsCreated.resolve()},window.onReCaptchaSolved=async e=>{await this.checkReCaptcha(e)}}async checkReCaptchaRequest(e){try{let t=await v.post(v.setQuery(`/re-captcha/check`),JSON.stringify({token:e}));return t.ok?(await t.json()).ok:(console.error(`Unable to check Re Captcha`),!1)}catch(e){return console.error(`Unable to check Re Captcha`),console.error(e),!1}}async checkReCaptcha(e){await this.checkReCaptchaRequest(e)&&(this.validated.resolve([!0]),this.needValidation=!1)}createCaptcha(e){if(!window.g_reCaptcha){this.validated.resolve([!0]),this.needValidation=!1;return}if(e){this.currentElement=document.createElement(`div`),this.currentElement.classList.add(`g-recaptcha`),this.currentElement.setAttribute(`data-sitekey`,window.g_reCaptcha),this.currentElement.setAttribute(`data-callback`,`onReCaptchaSolved`);let t=document.createElement(`script`);t.setAttribute(`src`,`https://www.google.com/recaptcha/api.js?onload=onReCaptchaLoaded&render=explicit`),t.setAttribute(`async`,``),t.setAttribute(`defer`,``),e.appendChild(this.currentElement),e.appendChild(t)}}async validate(){await this.isCreated,this.currentElement&&requestAnimationFrame(()=>{this.instance>-1?window.grecaptcha.reset(this.instance):this.instance=window.grecaptcha.render(this.currentElement,{sitekey:window.g_reCaptcha})})}},R=class{_mutationObserver=new MutationObserver(e=>{this.observation(e)});_observees=[];_callbacks=new Map;_attributes=[];constructor(e){this._attributes=e}addNode(e){(e.nodeType==Node.DOCUMENT_NODE||e.nodeType==Node.DOCUMENT_FRAGMENT_NODE)&&this._register(e);let t=e.shadowRoot;t&&this._register(t)}unregisterCallback(e){return this._callbacks.delete(e)}runCallback(e,t){let n=this._callbacks.get(e);n&&n(...t)}checkLocalesAttribute(e){for(let t of this.Attributes)if(e.includes(t))return t;return``}observation(e){let t=[];e.forEach(e=>{t.includes(e)||t.push(e)});for(let e of t){if(e.attributeName){let t=this.checkLocalesAttribute(e.attributeName);t.length>0&&this.runCallback(`NodeObserved`,[e.target,t,e.attributeName])}e.addedNodes&&e.addedNodes.forEach(e=>{this.runCallback(`NodeAdded`,[e])})}this.CleanUpNodes()}_register(e){this.Observees.includes(e)||(this.Observees.push(e),this.Observer.observe(e,this.ObserverInit),this.runCallback(`NodeRegistered`,[e]))}removeNode(e){let t=this.Observees.indexOf(e);t>-1&&this.Observees.splice(t,1)}CleanUpNodes(){let e=[];for(let t of this.Observees)t.isConnected||e.push(t);if(e.length>0){for(let t of e)this.removeNode(t);this.Observer.disconnect();for(let e of this.Observees)this.Observer.observe(e,this.ObserverInit)}}registerCallback(e,t){this._callbacks.set(e,t)}get Attributes(){return this._attributes}get Observees(){return this._observees}get ObserverInit(){return{attributes:!0,childList:!0,subtree:!0}}get Observer(){return this._mutationObserver}},z=class{constructor(e,t=`de`){this.storageKey=e,this.defaultLangCode=t,this.activeLangCode=this._loadLanguage()}activeLangCode;defaultLangCode;_loadLanguage(){try{let e=new URL(window.location.href).searchParams.get(`lang`);if(e)return this._saveLanguage(e),e}catch{}let e=localStorage.getItem(this.storageKey);if(e)return e;if(navigator.language){let e=navigator.language.split(`-`)[0];return this._saveLanguage(e),e}return this._saveLanguage(this.defaultLangCode),this.defaultLangCode}_saveLanguage(e){localStorage.setItem(this.storageKey,e)}getLanguage(){return this.activeLangCode}setLanguage(e){return this.activeLangCode=e,this._saveLanguage(e),this.activeLangCode}},B=class{constructor(e,t=!1,n=``){this.path=e,this.activeLangCode=n,this.isRead=!1,this._mobile=t}_readDefer;_loadingDefer=_();_isRead=!1;_mobile=!1;_keys=[];_file={};_external={};_override={};_requestService;_utilityService;setServices(e,t){this._requestService=e,this._utilityService=t}set isRead(e){e?this._readDefer&&(this._readDefer.resolve([!0]),this._loadingDefer.resolve([!0])):this._readDefer=_(),this._isRead=e}get isRead(){return this._isRead}async IsFileRead(){return await this._readDefer,this.isRead}async ReadFile(){this.isRead=!1,this.read(this.language)}get mobile(){return this._mobile}get language(){return this.activeLangCode.length>0?this.activeLangCode:new URL(window.location.href).searchParams.get(`lang`)||`de`}get file(){return this._file}get keys(){return this._keys}async AddOverrides(e){await this._loadingDefer;let t=Object.keys(this._external);Object.entries(e).forEach(([e,n])=>{typeof n==`string`?t.forEach(t=>{let r=this._override[t]||{};r[e]=n,this._override[t]=r}):Object.entries(n).forEach(([t,n])=>{let r=this._override[e]||{};r[t]=n,this._override[e]=r})}),this.applyExternalsAndOverrides()}async AddLocales(e){if(Object.entries(e).forEach(([e,t])=>{let n=this._external[e]||{};Object.entries(t).forEach(([e,t])=>{n[e]=t}),this._external[e]=n}),await this._loadingDefer,await this.IsFileRead()){this.applyExternalsAndOverrides();return}console.error(`LocalesModel: Tried to Add Locales from Json, but failed, since file could not be read...`)}applyExternalsAndOverrides(){let e=this.language,t=this._external;if(t&&t[e]){let n=Object.keys(t[e]);for(let r of n)this._file[r]=t[e][r]}let n=this._override;if(n&&n[e]){let t=Object.keys(n[e]);for(let r of t)if(this._file[r]){let t=n[e][r];this._file[t]&&(this._file[r]=this._file[t])}}this._keys=Object.keys(this._file)}async read(e=this.language){let t=this.activeLangCode!=e||!this.isRead;return t&&(this._file=await this.getLocaleJson(this.path,e),this.applyExternalsAndOverrides(),this.isRead=!0,this._mobile=this._utilityService.isMobileDevice()),this.activeLangCode=e,{langCode:this.activeLangCode,changed:t}}async getLocaleJson(e,t){let n=e+t+`.json`,r=await this._requestService.buildRequestURL(n);return this._requestService.fetchJSON(r)}},V=new class{_observer;_initialised=!1;_storage;_reader;constructor(){this._observer=new R([`i18n`]),this._storage=new z(this.LocaleStorageKey),this._reader=new B(`locales/`),this._reader.setServices(v,k),this.init()}get LocaleStorageKey(){let e=window.location.href,t=new URLSearchParams(e);return`${t.get(`token`)}_${t.get(`a`)}_${t.get(`b`)}`}updateUrlLangParameter(e){try{let t=new URL(window.location.href);t.searchParams.has(`lang`)&&(t.searchParams.set(`lang`,e),window.history.replaceState({},``,t.toString()))}catch(e){console.error(e)}}async setLanguage(e){this._storage.setLanguage(e);let t=await this._reader.read(e);t.changed&&(this._observer.Observees.forEach(e=>{this.translateAddedElement(e)}),this.updateUrlLangParameter(t.langCode))}getLanguage(){return this.language}async init(){this._initialised||=(this._observer.registerCallback(`NodeObserved`,(e,t,n)=>{this._translateNode(e,t,n)}),this._observer.registerCallback(`NodeAdded`,this.translateAddedElement.bind(this)),this._observer.registerCallback(`NodeRegistered`,this.translateAddedElement.bind(this)),await this.setLanguage(this.language),document.addEventListener(`register-to-locales-observer`,(e=>{this._observer.addNode(e.target)})),this.Register(document),!0)}async _translateNode(e,t,n){await this.IsFileRead();let r=e.getAttribute(`locales-model-no-translation`)||e.textContent,i=e.getAttribute(n)||``;if(n.includes(t+`-`)){let a=n.replace(t+`-`,``);e.setAttribute(a,this.translate(i,r||``));return}n.includes(`mobile-`)==0&&e.hasAttribute(`mobile-`+n)&&this._reader.mobile||(e.textContent=this.translate(i,r||``))}translateAddedElement(e){if(e.getAttributeNames){let t=e.getAttributeNames();for(let n of t)for(let t of this._observer.Attributes)n.includes(t)&&this._translateNode(e,t,n)}e.querySelectorAll&&e.querySelectorAll(`*`).forEach(e=>{let t=e.getAttributeNames();for(let n of t)for(let t of this._observer.Attributes)n.includes(t)&&this._translateNode(e,t,n)})}observation(e){return function(t,n,r){e._translateNode(t,n,r)}}nodeAdded(e){return function(t){e.translateAddedElement(t)}}register(e){return function(t){e.translateAddedElement(t)}}get language(){return this._storage.getLanguage()}async get(e){return await this.IsFileRead(),e&&this.exists(e)?this._reader.file[e]:``}IsFileRead(){return this._reader.IsFileRead()}exists(e){return this._reader.keys.includes(e)}translate(e,t=``){let n=``;return e&&this.exists(e)&&(n=this._reader.file[e]),t&&!n&&(n=this.exists(t)?this._reader.file[t]:t),typeof n!=`string`&&(n=e),n&&=n.replace(`~`,`
`),n}async Register(e){await this.IsFileRead()&&this._observer.addNode(e)}async AddSource(e){return await this._reader.AddLocales(e)}async AddOverrides(e){return await this._reader.AddOverrides(e)}},H=new class{_modal;constructor(){u(`shared:mail-sent`,async e=>{await this.sendConfiguredMail(e)})}validateValue(e,t){switch(e||=``,t){case a.CLOUD_ID:return/^[a-z0-9]{8}$/.test(e);case a.E_MAIL:return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}}setLabel(e){let t=document.createElement(`label`);e?t.textContent=`E-Mail wurde erfolgreich versendet.`:t.textContent=`E-Mail konnte nicht versendet werden.`,this._modal.innerHTML=``,this._modal.appendChild(t),setTimeout(()=>{this._modal.hide()},2e3)}async validateGoogleCaptcha(){L.createCaptcha(this._modal),L.needsValidation&&L.validate(),await L.Validating}async shareByMail(e,t,n){if(this.validateValue(e,a.E_MAIL)&&this.validateValue(n,a.CLOUD_ID)){this._modal.show();try{await this.validateGoogleCaptcha();let r=await A.getShortUrl(window.location.href,n);await v.post(v.setQuery(`/webviewer/share-by-mail`),JSON.stringify({to:e,message:t,url:r})),this.setLabel(!0)}catch{this.setLabel(!1)}}}async sendRequestMail(e){if(this.validateValue(e.email,a.E_MAIL)&&this.validateValue(e.number,a.CLOUD_ID)){this._modal.show();try{await this.validateGoogleCaptcha(),await v.post(v.setQuery(`/webui/sendRequestMail`),JSON.stringify({message:e.message||``,name:e.name||``,surname:e.surname||``,email:e.email||``,phone:e.phone||``,postcode:e.postcode||``,number:e.number||``})),this.setLabel(!0)}catch{this.setLabel(!1)}}}async sendConfiguredMail(e){return await fetch(v.setQuery(`/mail/send-configurated-mail`),{method:`POST`,credentials:`include`,body:JSON.stringify(e)})}sendConfiguredMailByBeacon(e){let t=new Blob([JSON.stringify(e)],{type:`application/json; charset=UTF-8`});navigator.sendBeacon(v.setQuery(`/mail/send-configurated-mail`),t)}};new class{isInitialized;_resetMask;constructor(){u(`shared:configuration-fetched`,e=>{if(window.g_configuration.sessionResetSettings&&window.g_configuration.sessionResetSettings.enabled&&(this._resetMask=document.querySelector(`fv-reset-mask`)||Object.assign(document.createElement(`fv-reset-mask`)),this._resetMask)){let e=document.querySelector(`fv-modal.global-main-modal`)||Object.assign(document.createElement(`fv-modal`),{className:`global-main-modal`});e.append(this._resetMask),document.body.append(e)}})}async startTimer(){this.isInitialized?(await this.isInitialized,this._resetMask?this._resetMask.startTimer():console.warn(`Is not found`)):console.warn(`Is not initialized`)}async stopTimer(){this.isInitialized?(await this.isInitialized,this._resetMask?this._resetMask.stopTimer():console.warn(`Is not found`)):console.warn(`Is not initialized`)}};var U=class{static generateCSSVariables(e){return`:root { ${Object.entries(e.colors).map(([e,t])=>`${e}: ${t.value??t.default};`).join(`
-`)} }`}static applyTemplateConfig(e,t,n=!1){let r=()=>{e.dispatchEvent(new CustomEvent(`template-loader-template-config-applied`,{bubbles:!0,detail:{"template-config":t,inverted:n}}))},i=t.value??t.default,a=n?!i:i;switch(t.type){case`string`:e.textContent=String(i);break;case`boolean`:a||e.remove();break;case`option`:case`dynamic-option`:t.attribute&&e.setAttribute(t.attribute,String(i));break;case`attribute`:this.handleAttributeType(e,t,n);break}r()}static handleAttributeType(e,t,n){if(!t.attribute)return;let r=t.value??t.default,i=t[`config-id`],a=t[`!config-id`];i&&typeof window.g_configuration?.[i]==`boolean`?r=window.g_configuration[i]:a&&typeof window.g_configuration?.[a]==`boolean`&&(r=!window.g_configuration[a]);let o=n?!r:r;t.varType===`boolean`?o?e.setAttribute(t.attribute,``):e.removeAttribute(t.attribute):e.setAttribute(t.attribute,String(r))}},W=new class{_loadingScreen;_theme;_initialized=_();_isFinished=_();_themeStyle=document.createElement(`style`);constructor(){this.setupLoadingScreen(),u(`construction:initialize`,()=>this.initialize())}setupLoadingScreen(){this._loadingScreen=document.createElement(`fv-loading`),this._loadingScreen&&(document.body.appendChild(this._loadingScreen),this._loadingScreen.show?.())}get IsInitialized(){return this._initialized}get IsFinished(){return Promise.all([this._initialized,this._isFinished])}async initialize(){try{let e=await v.buildRequestURL(`themeConfig`);this._theme=await v.fetchJSON(e),this._theme&&(this._themeStyle.innerHTML=U.generateCSSVariables(this._theme),document.head.appendChild(this._themeStyle),this._initialized.resolve()),await this.applyThemeToHierarchy(document,!this._theme)}finally{this._loadingScreen?.remove(),this._isFinished.resolve()}}async applyThemeToHierarchy(e,t=!1){let n=e.querySelectorAll(`*`);for(let e of Array.from(n))await this.processElement(e,t),e.shadowRoot&&await this.applyThemeToHierarchy(e.shadowRoot,t)}async processElement(e,t){let n=e.getAttribute(`template-id`),r=e.getAttribute(`config-id`);if(n&&!t&&this._theme){let t=n.startsWith(`!`),r=t?n.substring(1):n,i=this._theme.template[r];i&&(Array.isArray(i)?i:[i]).forEach(n=>U.applyTemplateConfig(e,n,t))}if(r){let t=r.startsWith(`!`),n=t?r.substring(1):r,i=window.g_configuration?.[n];typeof i==`boolean`&&(t?i:!i)&&e.remove()}}},G=new class{constructor(){}async PerformWebCabCommand(e){return(await A.PerformWebCabCommand(e))[0]}async ArrangeEqually(e){let t={webCabCommand:`ArrangeEqually`,webCabParams:{}};return t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleGroup(e){let t={webCabCommand:`ModifySingleGroup`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleSpace(e){let t={webCabCommand:`ModifySingleSpace`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams.InGroupID=e.InGroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUI(e){let t={webCabCommand:`getUI`,webCabParams:{}};return t.webCabParams[`itemManager.preventRun`]=e.preventRuns?`1`:`0`,t.webCabParams[`itemManager.targetIsLastInserted`]=e.lastInserted?`1`:`0`,t.webCabParams[`itemManager.runAllNoOptimizationNoCache`]=e.runAllNotOptimized?`1`:`0`,t.webCabParams[`itemManager.runAllWebCabElements`]=e.runAllWebCabs?`1`:`0`,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUiFromPoConfig(e){let t={webCabCommand:`getUiFromPoConfig`,webCabParams:{}};return t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.UIFromConfig_ForceCorner`]=+!!e.forceCorner,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,await this.PerformWebCabCommand(t)}async ModifyValues(e){let t={webCabCommand:`ModifyValues`,webCabParams:{Modified:{}}};return t.webCabParams.Modified||(t.webCabParams.Modified={}),t.webCabParams.Modified[e.modificationTarget]=e.value,e.preventRuns&&(t.webCabParams[`itemManager.preventRun`]=`1`),t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uiType,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.template&&(t.webCabParams[`itemManager.template`]=e.template),e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}};window.WebCabCommunicationService=G;var K=new class{constructor(){}async GetUIs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUI`,r,!1)}async GetUiFromPoConfig(e,t,n,r,i,a){let o={Manufacturer:e,Program:t,Article:n,ConfigSuffix:r,CustomerType:i,ForceCorner:+!!a};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUiFromPoConfig`,o,!1)}async ArrangeEqually(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,GroupIDs:t,ConfigSuffix:n||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ArrangeEqually`,i,!0)}async ModifyValues(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyValues`,i,!0)}async BulkModifyValues(e,t,n){let r={CustomerType:e,ConfigSuffix:n||``,BulkModifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_BulkModifyValues`,r,!0)}async ModifyGroups(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyGroups`,i,!0)}async ModifySpaces(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifySpaces`,i,!0)}async ModifyZSplitting(e,t,n,r){var i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyZSplitting`,i,!0)}async EnableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_EnableWebCabs`,r,!0)}async DisableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_DisableWebCabs`,r,!0)}async SetDisableDimensionVisuals(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,Value:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_SetDisableDimensionVisuals`,i,!0)}async GetDisableDimensionVisuals(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``},i=await A.executeWebCabApiMessage(`APIMessage_WebCab_GetDisableDimensionVisuals`,r,!1);if(i[`disabled-in-scene`])return!0;if(i.webcabs){for(let e=0;e<i.webcabs.length;++e)if(i.webcabs[e])return!0}return!1}async GetPlanned(e){let t=[],n=await A.getPlannedArticles();for(let r of n)if(r.keys.includes(10017)||r.keys.includes(10019)){if(e!=null){e.includes(r.typeInfo)&&t.push(r);continue}t.push(r)}return t}},q=function(e){let t=e.split(`,`).map(e=>+e),n=t[0]/255,r=t[1]/255,i=t[2]/255,a=Math.max(n,r,i),o=a-Math.min(n,r,i),s,c;return s=o===0?0:a===n?60*((r-i)/o%6):a===r?60*((i-n)/o+2):60*((n-r)/o+4),s<0&&(s+=360),c=a===0?0:o/a,[s,c,a]};new class{sortColor(e){let t=e.map(function(e){let t=q(e.code);return[t[0],t[1],t[2],e]}),n=[];for(let e=0;e<=360;e++){n.push([]);for(let t=0;t<=100;t++){n[e].push([]);for(let r=0;r<=100;r++)n[e][t].push([])}}t.forEach(e=>{let t=Math.round(e[0]),r=Math.round(e[1]*100),i=Math.round(e[2]*100);n[t][r][i].push(e[3])});let r=[];for(let e=0;e<=360;e++)for(let t=0;t<=100;t++)for(let i=0;i<=100;i++)r.push(n[e][t][i]);return r}async getRal(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ral`})).then(e=>e)}async getNCS(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ncs`})).then(e=>e)}async getSikkens(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`sikkens`})).then(e=>e)}};var J=new class{async get(e){return A.getPropTransfer(e)}async getDeletable(){return A?.getDeletablePropTransfer()}async traverse(e,t={}){let n=await this.get(t);t.grouped?t.manufacturer?t.manufacturer&&!t.program?await this.programCallback(e,n,t):t.manufacturer&&t.program&&await this.groupCallback(e,n,t):await this.manufacturerCallback(e,n,t):await this.itemCallback(e,n)}async manufacturerCallback(e,t,n){let r=t,i=r?Object.keys(r):[];for(let t of i)e.manufacturerCallback&&await e.manufacturerCallback(t,r[t]),await this.programCallback(e,r[t],Object.assign(n,{manufacturer:t}))}async programCallback(e,t,n){if(n.manufacturer){let r=t,i=Object.keys(r);for(let t of i)e.programCallback&&n.manufacturer&&await e.programCallback(n.manufacturer,t,r[t]),await this.groupCallback(e,r[t],Object.assign(n,{program:t}))}}async groupCallback(e,t,n){if(n.manufacturer&&n.program){let r=t,i=Object.keys(r);for(let t of i)e.groupCallback&&n.manufacturer&&n.program&&await e.groupCallback(n.manufacturer,n.program,t,r[t]),await this.itemCallback(e,r[t])}}async itemCallback(e,t){for(let n of t)e.itemsCallback&&await e.itemsCallback(n)}},Y=class{_cachedManufacturerList;_cachedGroupInformation={};_cachedFinishParams={};async getGroupInformation(e,t){return A?.getMerkmalGroupInformation({manufacturer:e,program:t})}async getFinishParams(e,t,n,r=!1){return r||!this._cachedFinishParams[e]||!this._cachedFinishParams[e][t]||!this._cachedFinishParams[e][t][n||`unknown`]?A?.getFinishParams({manufacturer:e,program:t,association:n}).then(r=>(this._cachedFinishParams[e]||(this._cachedFinishParams[e]={}),this._cachedFinishParams[e][t]||(this._cachedFinishParams[e][t]={}),n&&!this._cachedFinishParams[e][t][n]?this._cachedFinishParams[e][t][n]={}:!n&&!this._cachedFinishParams[e][t].unknown&&(this._cachedFinishParams[e][t].unknown={}),this._cachedFinishParams[e][t][n||`unknown`]=r,this._cachedFinishParams[e][t][n||`unknown`])):Promise.resolve(this._cachedFinishParams[e][t][n||`unknown`])}async _traverse(e,t,n=!1,r){let i=Object.values(t.children);for(let t=0;t<i.length;t++){let a=i[t];e.manufacturerCallback?.(a);let o=Object.values(a.children);for(let t=0;t<o.length;t++){let i=o[t],s=await this.getFinishParams(a.manufacturerName,i.programName);e.programCallback?.(a,i);let c=await this._getGroupInformation(e,a,i,n);c=this.mergeGroupInformation(c);let l=i.propertyKeyOrder||Object.keys(i.children);for(let t=0;t<l.length;t++){let n=l[t],o=i.children[n],s=Object.values(o.children),u=[],d=r?.propertyFilters?.[o.id];if(d){let e=d.filter.itemGroups;if(!(e.length===1&&e[0].filter.length===0)){for(let t of e)for(let e of t.items){let t=s.find(t=>t.key===e);t&&u.push(t)}s=u}}let f;if((s.length>1||s.length===1&&s[0].key.toLowerCase().startsWith(`[dh_ausf`))&&(f=s.find(e=>e.propertyKey===o.currentValue)),e.propertyCallback?.(a,i,o,s,f),c&&e.propertyGroupedCallback){let e=!1;for(let t=0;t<c.length;t++){for(let n of c[t].keys)if(n.key===+o.id){n.progPropertyModel=o,n.progPropertyValueList=s,n.currentValue=f,e=!0;break}if(e)break}}}if(c&&e.propertyGroupedCallback)for(let t=0;t<c.length;t++){let n=c[t];for(let e of l)n.keys.sort((t,n)=>e.endsWith(t.key.toString())?1:e.endsWith(n.key.toString())?-1:0);if(!n?.title){for(let t of n.keys){let r={keys:[t],title:t.progPropertyModel?.name||``,img:n.img,id:n.id};if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:r,finishParams:s}).then(()=>!0).catch(e=>!1))return!1}continue}if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:c[t],finishParams:s}).then(()=>!0).catch(e=>!1))return!1}}}return!0}async _getGroupInformation(e,t,n,r=!1){let i=e.propertyGroupedCallback?this._cachedGroupInformation&&r&&this._cachedGroupInformation[t.manufacturerName]&&this._cachedGroupInformation[t.manufacturerName][n.programName]?this._cachedGroupInformation[t.manufacturerName][n.programName]:await this.getGroupInformation(t.manufacturerName,n.programName):void 0;return i&&(i=await this._fetchImages(i,t,n),this._cachedGroupInformation[t.manufacturerName]||(this._cachedGroupInformation[t.manufacturerName]={}),r&&(this._cachedGroupInformation[t.manufacturerName][n.programName]=i)),i}async _fetchImages(e,t,n){return await Promise.all(e.map(async e=>Object.assign(e,{imgSrc:e.img?await A.getMediaUrl(t.manufacturerName,``,`groups`,e.img,!0,!1):void 0})))}mergeGroupInformation(e){if(!e)return;let t={};return e.forEach(e=>{let n=Object.keys(t).find(t=>e.id.startsWith(t))||e.id;t[n]||(t[n]=Object.assign(e,{id:n,title:e.title,img:e.img})),t[n].keys=Array.from(new Map([...t[n].keys||[],...e.keys||[]].map(e=>[e.key,e])).values())}),Object.values(t)}},X=new class extends Y{async get(e){return A.getProgProperties(e)}async findMany(e,t,n,r=!1){let i={};return await this.traverse({propertyCallback:(r,a,o,s,c)=>{n?.indexOf(o.key)!==-1&&r.manufacturerName===e&&a.programName===t&&(i[o.key]=Object.assign(r,a,o,{currentValue:c}))}}),i}async findOne(e,t,n,r=!1){let i;return await this.traverse({propertyCallback:(r,a,o)=>{o.key===n&&r.manufacturerName===e&&a.programName===t&&(i=Object.assign(r,a,o))}}),i}async find(e,t,n,r,i,a){return A?.getProgProperties({manufacturer:e,program:t,useSelection:n,useRelevant:r,fullHierarchy:i,instanceIdents:a})}async findAll(e,t,n){return await this.find(void 0,void 0,e,t,!0,n)}async traverse(e,t){t||={useSelection:!0,useRelevant:!0,fullHierarchy:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n,t)}},Z=new class extends Y{async initialize(e){return A.initializePropertyContext(e)}async get(e){return A.getPropertyContext(e)}async dispose(e){return A.disposePropertyContext(e)}async findMany(e,t,n,r){let i={};return await this.traverse({propertyCallback:(e,a,o,s,c)=>{r?.indexOf(o.key)!==-1&&e.manufacturerName===t&&a.programName===n&&(i[o.key]=Object.assign(e,a,o,{currentValue:c}))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),i}async findOne(e,t,n){let r;return await this.traverse({propertyCallback:(i,a,o)=>{o.key===n&&i.manufacturerName===e&&a.programName===t&&(r=Object.assign(i,a,o))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),r}async findAll(e,t,n,r){return await this.get({manufacturer:void 0,program:void 0,useSelection:e,useRelevant:t,instanceIdents:n,filterStrategy:r})}async traverse(e,t){t||={useRelevant:!0,useSelection:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n)}},Q=new class{_configuration;isInitialized;preventLeaveConfirmation=!1;constructor(){document.addEventListener(`readystatechange`,async()=>{await y.Initialized;let e=await v.fetchJSON(await v.buildRequestURL(`config/layout.json`)),t=await v.fetchJSON(await v.buildRequestURL(`config/styles.json`));await this.initialize(e,t)}),window.addEventListener(`beforeunload`,e=>{!this.preventLeaveConfirmation&&window.g_configuration?.request_leave_confirmation&&(e.preventDefault(),e.returnValue=``)})}get IsInitialized(){return this.isInitialized}get PreventLeaveConfirmation(){return this.preventLeaveConfirmation}set PreventLeaveConfirmation(e){this.preventLeaveConfirmation=e}get CustomMailService(){return this._configuration?.customMailService}async getLocales(){if(await this.IsInitialized,this._configuration)return this._configuration.locales}async TranslatePageTitle(e){if(e.locales){await V.AddSource(e.locales);let t=V.translate(`furnview-app-title`,document.title);document.title=t,document.querySelector(`title`)?.addEventListener(`template-loader-template-config-applied`,e=>{e.detail[`template-config`].value.length<1&&(document.title=V.translate(`furnview-app-title`,t))})}e[`locale-overrides`]&&await V.AddOverrides(e[`locale-overrides`])}SetDocumentLanguageCode(){let e=V.getLanguage();document&&document.documentElement&&(document.documentElement.lang=e)}loadChildren(e,t){if(e.children){let n=[];for(let r of e.children){let i=this.loadComponent(r);t[e.prepend?`prepend`:`append`](i),n.push(i)}t.dispatchEvent(new CustomEvent(`construction-service-children-loaded`,{detail:{children:n}}))}}async loadStylesheets(e,t){if(!e.customCSS)return;let n=Array.isArray(e.customCSS)?e.customCSS:[e.customCSS],r=Promise.resolve();!t.shadowRoot&&(r=t.getUpdateComplete)!==void 0&&await r;let i=t.shadowRoot;if(i)try{let e=n.map(e=>{let t=new CSSStyleSheet;return t.replaceSync(e),t});i.adoptedStyleSheets=[...i.adoptedStyleSheets,...e]}catch{n.forEach(e=>{let t=document.createElement(`style`);t.textContent=e,i.appendChild(t)})}else n.forEach((n,r)=>{let i=`${e.tag||e?.query||t.tagName.toLowerCase()}-${r}`;if(t.querySelector(`style[data-css-module="${i}"]`))return;let a=document.createElement(`style`);a.setAttribute(`data-css-module`,i),a.textContent=n,t===document.body?document.head.appendChild(a):t.prepend(a)})}loadStyleVars(e,t){e.styleVars&&(Object.keys(e.styleVars).forEach(n=>{n.startsWith(`--`)&&t.style.setProperty(n,e.styleVars?.[n])}),t.requestUpdate&&t.requestUpdate())}loadEvents(e,t){e.events&&Array.isArray(e.events)&&e.events.forEach(e=>{e.id&&t.addEventListener(e.defaultEvent||`click`,async t=>{let n=e.data;t instanceof CustomEvent&&(n=JSON.stringify(n).replace(`!$value`,t.detail.value),n=JSON.parse(n)),await g.emitAsync(e.id,{data:n||{},target:e.target||void 0})})})}loadSceneEvents(e){let t=e[`scene-events`];if(t)for(let e of Object.keys(t)){let n=t[e],r=n.events,i=n[`execute-async`]==null?!1:n[`execute-async`],a=n[`throttling-timeout`],o=P[e];if(!o||typeof o.register!=`function`){console.warn(`scene-events: unbekanntes EventFactoryService-Event "${e}"`);continue}let s=async()=>{for(let e of r)i?g.emitAsync(e.id,{data:e.data||{},target:void 0}):await g.emitAsync(e.id,{data:e.data||{},target:void 0})},c=a===void 0?s:f(s,p(a.baseline,a.min,a.max,a.modifier));o.register(c)}}loadProperties(e,t){let n=e=>{typeof e.value==`boolean`&&e.attribute&&e.value?t.setAttribute(e.key,``):typeof e.value==`boolean`&&e.attribute&&!e.value?t.removeAttribute(e.key,``):typeof e.value==`object`&&e.attribute?t.setAttribute(e.key,JSON.stringify(e.value)):e.attribute?t.setAttribute(e.key,e.value):t[e.key]=e.value};if(e.properties&&t)for(let t of e.properties){let e=t.readyValue;e&&x.IsAppReady.then(()=>{n(Object.assign(t,{value:e.value}))}),n(t)}}loadClasses(e,t){e.classes&&t&&t.classList.add(...e.classes)}loadComponent(e){let t=document.createElement(e.tag);return this.loadClasses(e,t),this.loadProperties(e,t),this.loadStyleVars(e,t),this.loadStylesheets(e,t),this.loadEvents(e,t),t}async loadModule(e,t){let n=this.loadComponent(e);if(t[e.prepend?`prepend`:`append`](n),e.execute&&n&&Object.values(e.execute).forEach(e=>{n[e.name].apply(e.arguments?e.arguments:[])}),n==null||n.getUpdateComplete==null){console.error(`component: [`+e.tag+`] could not be loaded!`);return}if(await n.getUpdateComplete(),e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadChildren(e,n)}async loadArea(e,t){let n=null;e.queryAll?(n=t.querySelectorAll(e.query),(!n||n.length===0)&&t.shadowRoot&&(n=t?.shadowRoot?.querySelectorAll(e.query))):e.query?(n=t.querySelector(e.query),!n&&t.shadowRoot&&(n=t?.shadowRoot?.querySelector(e.query))):n=t,n||console.warn(`loadArea failed to find target!`);let r=async(e,t,n)=>{if(n){if(e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadProperties(e,n),this.loadStyleVars(e,n),this.loadStylesheets(e,n),this.loadEvents(e,n),this.loadClasses(e,n)}};if(n&&n instanceof NodeList&&n.length)for(let i=0;i<n.length;i++)await r(e,t,n[i]);else await r(e,t,n);n&&n.dispatchEvent&&n.dispatchEvent(new CustomEvent(`area-updated`,{detail:{}}))}async initialize(e,t){if(!document.body.classList.contains(`construction-container`))return;document.body.classList.contains(`initialHide`)&&(document.body.classList.remove(`initialHide`),document.body.classList.add(`hidden`));let n=e;if(n?.mergeErrors)for(let e of n.mergeErrors)console.error(e[`pre-text`],e[`overwriting-object`],e[`post-text`]);console.log(`layout json:`,n);let r=JSON.stringify(n);if(r=r.replace(/webui\//g,`webui-content/${new URL(window.location.href).searchParams.get(`token`)}/`),r=r.replace(/:token\//g,`${new URL(window.location.href).searchParams.get(`token`)}/`),n=JSON.parse(r),this._configuration=n,n&&this.loadSceneEvents(n),t)for(let e of t?.styles||[]){let t=document.createElement(`style`);t.appendChild(document.createTextNode(e)),document.head.appendChild(t)}n&&t&&(await this.TranslatePageTitle(n),await this.loadArea(n,document),x.FurnviewWebViewer||x.initialize(void 0),this.SetDocumentLanguageCode(),document.body.classList.remove(`hidden`),l.emit(`construction:initialize`))}};export{k as _,N as a,g as c,H as d,Z as f,W as g,v as h,j as i,I as l,J as m,A as n,P as o,X as p,y as r,h as s,Q as t,V as u,K as v,x as y};
-//# sourceMappingURL=wui.chunk.js.map
\ No newline at end of file
+`)} }`}static applyTemplateConfig(e,t,n=!1){let r=()=>{e.dispatchEvent(new CustomEvent(`template-loader-template-config-applied`,{bubbles:!0,detail:{"template-config":t,inverted:n}}))},i=t.value??t.default,a=n?!i:i;switch(t.type){case`string`:e.textContent=String(i);break;case`boolean`:a||e.remove();break;case`option`:case`dynamic-option`:t.attribute&&e.setAttribute(t.attribute,String(i));break;case`attribute`:this.handleAttributeType(e,t,n);break}r()}static handleAttributeType(e,t,n){if(!t.attribute)return;let r=t.value??t.default,i=t[`config-id`],a=t[`!config-id`];i&&typeof window.g_configuration?.[i]==`boolean`?r=window.g_configuration[i]:a&&typeof window.g_configuration?.[a]==`boolean`&&(r=!window.g_configuration[a]);let o=n?!r:r;t.varType===`boolean`?o?e.setAttribute(t.attribute,``):e.removeAttribute(t.attribute):e.setAttribute(t.attribute,String(r))}},W=new class{_loadingScreen;_theme;_initialized=_();_isFinished=_();_themeStyle=document.createElement(`style`);constructor(){this.setupLoadingScreen(),u(`construction:initialize`,()=>this.initialize())}setupLoadingScreen(){this._loadingScreen=document.createElement(`fv-loading`),this._loadingScreen&&(document.body.appendChild(this._loadingScreen),this._loadingScreen.show?.())}get IsInitialized(){return this._initialized}get IsFinished(){return Promise.all([this._initialized,this._isFinished])}async initialize(){try{let e=await v.buildRequestURL(`themeConfig`);this._theme=await v.fetchJSON(e),this._theme&&(this._themeStyle.innerHTML=U.generateCSSVariables(this._theme),document.head.appendChild(this._themeStyle),this._initialized.resolve()),await this.applyThemeToHierarchy(document,!this._theme)}finally{this._loadingScreen?.remove(),this._isFinished.resolve()}}async applyThemeToHierarchy(e,t=!1){let n=e.querySelectorAll(`*`);for(let e of Array.from(n))await this.processElement(e,t),e.shadowRoot&&await this.applyThemeToHierarchy(e.shadowRoot,t)}async processElement(e,t){let n=e.getAttribute(`template-id`),r=e.getAttribute(`config-id`);if(n&&!t&&this._theme){let t=n.startsWith(`!`),r=t?n.substring(1):n,i=this._theme.template[r];i&&(Array.isArray(i)?i:[i]).forEach(n=>U.applyTemplateConfig(e,n,t))}if(r){let t=r.startsWith(`!`),n=t?r.substring(1):r,i=window.g_configuration?.[n];typeof i==`boolean`&&(t?i:!i)&&e.remove()}}},G=new class{constructor(){}async PerformWebCabCommand(e){return(await A.PerformWebCabCommand(e))[0]}async ArrangeEqually(e){let t={webCabCommand:`ArrangeEqually`,webCabParams:{}};return t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleGroup(e){let t={webCabCommand:`ModifySingleGroup`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleSpace(e){let t={webCabCommand:`ModifySingleSpace`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams.InGroupID=e.InGroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUI(e){let t={webCabCommand:`getUI`,webCabParams:{}};return t.webCabParams[`itemManager.preventRun`]=e.preventRuns?`1`:`0`,t.webCabParams[`itemManager.targetIsLastInserted`]=e.lastInserted?`1`:`0`,t.webCabParams[`itemManager.runAllNoOptimizationNoCache`]=e.runAllNotOptimized?`1`:`0`,t.webCabParams[`itemManager.runAllWebCabElements`]=e.runAllWebCabs?`1`:`0`,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUiFromPoConfig(e){let t={webCabCommand:`getUiFromPoConfig`,webCabParams:{}};return t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.UIFromConfig_ForceCorner`]=+!!e.forceCorner,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,await this.PerformWebCabCommand(t)}async ModifyValues(e){let t={webCabCommand:`ModifyValues`,webCabParams:{Modified:{}}};return t.webCabParams.Modified||(t.webCabParams.Modified={}),t.webCabParams.Modified[e.modificationTarget]=e.value,e.preventRuns&&(t.webCabParams[`itemManager.preventRun`]=`1`),t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uiType,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.template&&(t.webCabParams[`itemManager.template`]=e.template),e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}};window.WebCabCommunicationService=G;var K=new class{constructor(){}async GetUIs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUI`,r,!1)}async GetUiFromPoConfig(e,t,n,r,i,a){let o={Manufacturer:e,Program:t,Article:n,ConfigSuffix:r,CustomerType:i,ForceCorner:+!!a};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUiFromPoConfig`,o,!1)}async ArrangeEqually(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,GroupIDs:t,ConfigSuffix:n||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ArrangeEqually`,i,!0)}async ModifyValues(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyValues`,i,!0)}async BulkModifyValues(e,t,n){let r={CustomerType:e,ConfigSuffix:n||``,BulkModifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_BulkModifyValues`,r,!0)}async ModifyGroups(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyGroups`,i,!0)}async ModifySpaces(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifySpaces`,i,!0)}async ModifyZSplitting(e,t,n,r){var i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyZSplitting`,i,!0)}async EnableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_EnableWebCabs`,r,!0)}async DisableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_DisableWebCabs`,r,!0)}async SetDisableDimensionVisuals(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,Value:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_SetDisableDimensionVisuals`,i,!0)}async GetDisableDimensionVisuals(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``},i=await A.executeWebCabApiMessage(`APIMessage_WebCab_GetDisableDimensionVisuals`,r,!1);if(i[`disabled-in-scene`])return!0;if(i.webcabs){for(let e=0;e<i.webcabs.length;++e)if(i.webcabs[e])return!0}return!1}async GetPlanned(e){let t=[],n=await A.getPlannedArticles();for(let r of n)if(r.keys.includes(10017)||r.keys.includes(10019)){if(e!=null){e.includes(r.typeInfo)&&t.push(r);continue}t.push(r)}return t}},q=function(e){let t=e.split(`,`).map(e=>+e),n=t[0]/255,r=t[1]/255,i=t[2]/255,a=Math.max(n,r,i),o=a-Math.min(n,r,i),s,c;return s=o===0?0:a===n?60*((r-i)/o%6):a===r?60*((i-n)/o+2):60*((n-r)/o+4),s<0&&(s+=360),c=a===0?0:o/a,[s,c,a]};new class{sortColor(e){let t=e.map(function(e){let t=q(e.code);return[t[0],t[1],t[2],e]}),n=[];for(let e=0;e<=360;e++){n.push([]);for(let t=0;t<=100;t++){n[e].push([]);for(let r=0;r<=100;r++)n[e][t].push([])}}t.forEach(e=>{let t=Math.round(e[0]),r=Math.round(e[1]*100),i=Math.round(e[2]*100);n[t][r][i].push(e[3])});let r=[];for(let e=0;e<=360;e++)for(let t=0;t<=100;t++)for(let i=0;i<=100;i++)r.push(n[e][t][i]);return r}async getRal(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ral`})).then(e=>e)}async getNCS(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ncs`})).then(e=>e)}async getSikkens(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`sikkens`})).then(e=>e)}};var J=new class{async get(e){return A.getPropTransfer(e)}async getDeletable(){return A?.getDeletablePropTransfer()}async traverse(e,t={}){let n=await this.get(t);t.grouped?t.manufacturer?t.manufacturer&&!t.program?await this.programCallback(e,n,t):t.manufacturer&&t.program&&await this.groupCallback(e,n,t):await this.manufacturerCallback(e,n,t):await this.itemCallback(e,n)}async manufacturerCallback(e,t,n){let r=t,i=r?Object.keys(r):[];for(let t of i)e.manufacturerCallback&&await e.manufacturerCallback(t,r[t]),await this.programCallback(e,r[t],Object.assign(n,{manufacturer:t}))}async programCallback(e,t,n){if(n.manufacturer){let r=t,i=Object.keys(r);for(let t of i)e.programCallback&&n.manufacturer&&await e.programCallback(n.manufacturer,t,r[t]),await this.groupCallback(e,r[t],Object.assign(n,{program:t}))}}async groupCallback(e,t,n){if(n.manufacturer&&n.program){let r=t,i=Object.keys(r);for(let t of i)e.groupCallback&&n.manufacturer&&n.program&&await e.groupCallback(n.manufacturer,n.program,t,r[t]),await this.itemCallback(e,r[t])}}async itemCallback(e,t){for(let n of t)e.itemsCallback&&await e.itemsCallback(n)}},Y=class{_cachedManufacturerList;_cachedGroupInformation={};_cachedFinishParams={};async getGroupInformation(e,t){return A?.getMerkmalGroupInformation({manufacturer:e,program:t})}async getFinishParams(e,t,n,r=!1){return r||!this._cachedFinishParams[e]||!this._cachedFinishParams[e][t]||!this._cachedFinishParams[e][t][n||`unknown`]?A?.getFinishParams({manufacturer:e,program:t,association:n}).then(r=>(this._cachedFinishParams[e]||(this._cachedFinishParams[e]={}),this._cachedFinishParams[e][t]||(this._cachedFinishParams[e][t]={}),n&&!this._cachedFinishParams[e][t][n]?this._cachedFinishParams[e][t][n]={}:!n&&!this._cachedFinishParams[e][t].unknown&&(this._cachedFinishParams[e][t].unknown={}),this._cachedFinishParams[e][t][n||`unknown`]=r,this._cachedFinishParams[e][t][n||`unknown`])):Promise.resolve(this._cachedFinishParams[e][t][n||`unknown`])}async _traverse(e,t,n=!1,r){let i=Object.values(t.children);for(let t=0;t<i.length;t++){let a=i[t];e.manufacturerCallback?.(a);let o=Object.values(a.children);for(let t=0;t<o.length;t++){let i=o[t],s=await this.getFinishParams(a.manufacturerName,i.programName);e.programCallback?.(a,i);let c=await this._getGroupInformation(e,a,i,n);c=this.mergeGroupInformation(c);let l=i.propertyKeyOrder||Object.keys(i.children);for(let t=0;t<l.length;t++){let n=l[t],o=i.children[n],s=Object.values(o.children),u=[],d=r?.propertyFilters?.[o.id];if(d){let e=d.filter.itemGroups;if(!(e.length===1&&e[0].filter.length===0)){for(let t of e)for(let e of t.items){let t=s.find(t=>t.key===e);t&&u.push(t)}s=u}}let f;if((s.length>1||s.length===1&&s[0].key.toLowerCase().startsWith(`[dh_ausf`))&&(f=s.find(e=>e.propertyKey===o.currentValue)),e.propertyCallback?.(a,i,o,s,f),c&&e.propertyGroupedCallback){let e=!1;for(let t=0;t<c.length;t++){for(let n of c[t].keys)if(n.key===+o.id){n.progPropertyModel=o,n.progPropertyValueList=s,n.currentValue=f,e=!0;break}if(e)break}}}if(c&&e.propertyGroupedCallback)for(let t=0;t<c.length;t++){let n=c[t];for(let e of l)n.keys.sort((t,n)=>e.endsWith(t.key.toString())?1:e.endsWith(n.key.toString())?-1:0);if(!n?.title){for(let t of n.keys){let r={keys:[t],title:t.progPropertyModel?.name||``,img:n.img,id:n.id};if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:r,finishParams:s}).then(()=>!0).catch(e=>!1))return!1}continue}if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:c[t],finishParams:s}).then(()=>!0).catch(e=>!1))return!1}}}return!0}async _getGroupInformation(e,t,n,r=!1){let i=e.propertyGroupedCallback?this._cachedGroupInformation&&r&&this._cachedGroupInformation[t.manufacturerName]&&this._cachedGroupInformation[t.manufacturerName][n.programName]?this._cachedGroupInformation[t.manufacturerName][n.programName]:await this.getGroupInformation(t.manufacturerName,n.programName):void 0;return i&&(i=await this._fetchImages(i,t,n),this._cachedGroupInformation[t.manufacturerName]||(this._cachedGroupInformation[t.manufacturerName]={}),r&&(this._cachedGroupInformation[t.manufacturerName][n.programName]=i)),i}async _fetchImages(e,t,n){return await Promise.all(e.map(async e=>Object.assign(e,{imgSrc:e.img?await A.getMediaUrl(t.manufacturerName,``,`groups`,e.img,!0,!1):void 0})))}mergeGroupInformation(e){if(!e)return;let t={};return e.forEach(e=>{let n=Object.keys(t).find(t=>e.id.startsWith(t))||e.id;t[n]||(t[n]=Object.assign(e,{id:n,title:e.title,img:e.img})),t[n].keys=Array.from(new Map([...t[n].keys||[],...e.keys||[]].map(e=>[e.key,e])).values())}),Object.values(t)}},X=new class extends Y{async get(e){return A.getProgProperties(e)}async findMany(e,t,n,r=!1){let i={};return await this.traverse({propertyCallback:(r,a,o,s,c)=>{n?.indexOf(o.key)!==-1&&r.manufacturerName===e&&a.programName===t&&(i[o.key]=Object.assign(r,a,o,{currentValue:c}))}}),i}async findOne(e,t,n,r=!1){let i;return await this.traverse({propertyCallback:(r,a,o)=>{o.key===n&&r.manufacturerName===e&&a.programName===t&&(i=Object.assign(r,a,o))}}),i}async find(e,t,n,r,i,a){return A?.getProgProperties({manufacturer:e,program:t,useSelection:n,useRelevant:r,fullHierarchy:i,instanceIdents:a})}async findAll(e,t,n){return await this.find(void 0,void 0,e,t,!0,n)}async traverse(e,t){t||={useSelection:!0,useRelevant:!0,fullHierarchy:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n,t)}},Z=new class extends Y{async initialize(e){return A.initializePropertyContext(e)}async get(e){return A.getPropertyContext(e)}async dispose(e){return A.disposePropertyContext(e)}async findMany(e,t,n,r){let i={};return await this.traverse({propertyCallback:(e,a,o,s,c)=>{r?.indexOf(o.key)!==-1&&e.manufacturerName===t&&a.programName===n&&(i[o.key]=Object.assign(e,a,o,{currentValue:c}))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),i}async findOne(e,t,n){let r;return await this.traverse({propertyCallback:(i,a,o)=>{o.key===n&&i.manufacturerName===e&&a.programName===t&&(r=Object.assign(i,a,o))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),r}async findAll(e,t,n,r){return await this.get({manufacturer:void 0,program:void 0,useSelection:e,useRelevant:t,instanceIdents:n,filterStrategy:r})}async traverse(e,t){t||={useRelevant:!0,useSelection:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n)}},Q=new class{_configuration;isInitialized;preventLeaveConfirmation=!1;constructor(){document.addEventListener(`readystatechange`,async()=>{await y.Initialized;let e=await v.fetchJSON(await v.buildRequestURL(`config/layout.json`));console.log(`configuration to construct:`,e);let t=await v.fetchJSON(await v.buildRequestURL(`config/styles.json`));await this.initialize(e,t)}),window.addEventListener(`beforeunload`,e=>{!this.preventLeaveConfirmation&&window.g_configuration?.request_leave_confirmation&&(e.preventDefault(),e.returnValue=``)})}get IsInitialized(){return this.isInitialized}get PreventLeaveConfirmation(){return this.preventLeaveConfirmation}set PreventLeaveConfirmation(e){this.preventLeaveConfirmation=e}get CustomMailService(){return this._configuration?.customMailService}async getLocales(){if(await this.IsInitialized,this._configuration)return this._configuration.locales}async TranslatePageTitle(e){if(e.locales){await V.AddSource(e.locales);let t=V.translate(`furnview-app-title`,document.title);document.title=t,document.querySelector(`title`)?.addEventListener(`template-loader-template-config-applied`,e=>{e.detail[`template-config`].value.length<1&&(document.title=V.translate(`furnview-app-title`,t))})}e[`locale-overrides`]&&await V.AddOverrides(e[`locale-overrides`])}SetDocumentLanguageCode(){let e=V.getLanguage();document&&document.documentElement&&(document.documentElement.lang=e)}loadChildren(e,t){if(e.children){let n=[];for(let r of e.children){let i=this.loadComponent(r);t[e.prepend?`prepend`:`append`](i),n.push(i)}t.dispatchEvent(new CustomEvent(`construction-service-children-loaded`,{detail:{children:n}}))}}async loadStylesheets(e,t){if(!e.customCSS)return;let n=Array.isArray(e.customCSS)?e.customCSS:[e.customCSS],r=Promise.resolve();!t.shadowRoot&&(r=t.getUpdateComplete)!==void 0&&await r;let i=t.shadowRoot;if(i)try{let e=n.map(e=>{let t=new CSSStyleSheet;return t.replaceSync(e),t});i.adoptedStyleSheets=[...i.adoptedStyleSheets,...e]}catch{n.forEach(e=>{let t=document.createElement(`style`);t.textContent=e,i.appendChild(t)})}else n.forEach((n,r)=>{let i=`${e.tag||e?.query||t.tagName.toLowerCase()}-${r}`;if(t.querySelector(`style[data-css-module="${i}"]`))return;let a=document.createElement(`style`);a.setAttribute(`data-css-module`,i),a.textContent=n,t===document.body?document.head.appendChild(a):t.prepend(a)})}loadStyleVars(e,t){e.styleVars&&(Object.keys(e.styleVars).forEach(n=>{n.startsWith(`--`)&&t.style.setProperty(n,e.styleVars?.[n])}),t.requestUpdate&&t.requestUpdate())}loadEvents(e,t){e.events&&Array.isArray(e.events)&&e.events.forEach(e=>{e.id&&t.addEventListener(e.defaultEvent||`click`,async t=>{let n=e.data;t instanceof CustomEvent&&(n=JSON.stringify(n).replace(`!$value`,t.detail.value),n=JSON.parse(n)),await g.emitAsync(e.id,{data:n||{},target:e.target||void 0})})})}loadSceneEvents(e){let t=e[`scene-events`];if(t)for(let e of Object.keys(t)){let n=t[e],r=n.events,i=n[`execute-async`]==null?!1:n[`execute-async`],a=n[`throttling-timeout`],o=P[e];if(!o||typeof o.register!=`function`){console.warn(`scene-events: unbekanntes EventFactoryService-Event "${e}"`);continue}let s=async()=>{for(let e of r)i?g.emitAsync(e.id,{data:e.data||{},target:void 0}):await g.emitAsync(e.id,{data:e.data||{},target:void 0})},c=a===void 0?s:f(s,p(a.baseline,a.min,a.max,a.modifier));o.register(c)}}loadProperties(e,t){let n=e=>{typeof e.value==`boolean`&&e.attribute&&e.value?t.setAttribute(e.key,``):typeof e.value==`boolean`&&e.attribute&&!e.value?t.removeAttribute(e.key,``):typeof e.value==`object`&&e.attribute?t.setAttribute(e.key,JSON.stringify(e.value)):e.attribute?t.setAttribute(e.key,e.value):t[e.key]=e.value};if(e.properties&&t)for(let t of e.properties){let e=t.readyValue;e&&x.IsAppReady.then(()=>{n(Object.assign(t,{value:e.value}))}),n(t)}}loadClasses(e,t){e.classes&&t&&t.classList.add(...e.classes)}loadComponent(e){let t=document.createElement(e.tag);return this.loadClasses(e,t),this.loadProperties(e,t),this.loadStyleVars(e,t),this.loadStylesheets(e,t),this.loadEvents(e,t),t}async loadModule(e,t){let n=this.loadComponent(e);if(t[e.prepend?`prepend`:`append`](n),e.execute&&n&&Object.values(e.execute).forEach(e=>{n[e.name].apply(e.arguments?e.arguments:[])}),n==null||n.getUpdateComplete==null){console.error(`component: [`+e.tag+`] could not be loaded!`);return}if(await n.getUpdateComplete(),e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadChildren(e,n)}async loadArea(e,t){let n=null;e.queryAll?(n=t.querySelectorAll(e.query),(!n||n.length===0)&&t.shadowRoot&&(n=t?.shadowRoot?.querySelectorAll(e.query))):e.query?(n=t.querySelector(e.query),!n&&t.shadowRoot&&(n=t?.shadowRoot?.querySelector(e.query))):n=t;let r=async(e,t,n)=>{if(n){if(e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadProperties(e,n),this.loadStyleVars(e,n),this.loadStylesheets(e,n),this.loadEvents(e,n),this.loadClasses(e,n)}};if(n&&n instanceof NodeList&&n.length)for(let i=0;i<n.length;i++)await r(e,t,n[i]);else await r(e,t,n);n&&n.dispatchEvent&&n.dispatchEvent(new CustomEvent(`area-updated`,{detail:{}}))}async initialize(e,t){if(!document.body.classList.contains(`construction-container`))return;document.body.classList.contains(`initialHide`)&&(document.body.classList.remove(`initialHide`),document.body.classList.add(`hidden`));let n=e;if(n?.mergeErrors)for(let e of n.mergeErrors)console.error(e[`pre-text`],e[`overwriting-object`],e[`post-text`]);let r=JSON.stringify(n);if(r=r.replace(/webui\//g,`webui-content/${new URL(window.location.href).searchParams.get(`token`)}/`),r=r.replace(/:token\//g,`${new URL(window.location.href).searchParams.get(`token`)}/`),n=JSON.parse(r),this._configuration=n,this.loadSceneEvents(n),t)for(let e of t?.styles||[]){let t=document.createElement(`style`);t.appendChild(document.createTextNode(e)),document.head.appendChild(t)}n&&t&&(await this.TranslatePageTitle(n),await this.loadArea(n,document),x.FurnviewWebViewer||x.initialize(void 0),this.SetDocumentLanguageCode(),document.body.classList.remove(`hidden`),l.emit(`construction:initialize`))}};export{k as _,N as a,g as c,H as d,Z as f,W as g,v as h,j as i,I as l,J as m,A as n,P as o,X as p,y as r,h as s,Q as t,V as u,K as v,x as y};
\ No newline at end of file
diff --git a/client/vendor/wui.chunk.js.map b/client/vendor/wui.chunk.js.map
deleted file mode 100644
index cdc32d0..0000000
--- a/client/vendor/wui.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"wui.chunk.js","names":["all","Map","on","type","handler","handlers","get","push","set","off","splice","indexOf","emit","evt","slice","map","EventPriority","CommunicatorIds","uuid_v4","s","response","area","parentElement","element"],"sources":["../../../../node_modules/.pnpm/@dh-software+webui-types@1.2.0/node_modules/@dh-software/webui-types/dist/webui-types.mjs","../../../../../../webui-core/webui/node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/src/index.ts","../../../../../../webui-core/webui/packages/api/src/event/async-emitter.ts","../../../../../../webui-core/webui/packages/api/src/event/emitter.ts","../../../../../../webui-core/webui/packages/api/src/event/throttle.ts","../../../../../../webui-core/webui/packages/api/src/service/event.service.ts","../../../../../../webui-core/webui/packages/api/src/classes/defer.class.ts","../../../../../../webui-core/webui/packages/api/src/service/request.service.ts","../../../../../../webui-core/webui/packages/api/src/service/configuration.service.ts","../../../../../../webui-core/webui/packages/api/src/service/web-viewer.service.ts","../../../../../../webui-core/webui/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js","../../../../../../webui-core/webui/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js","../../../../../../webui-core/webui/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js","../../../../../../webui-core/webui/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js","../../../../../../webui-core/webui/packages/api/src/service/utility.service.ts","../../../../../../webui-core/webui/packages/api/src/service/communication-message.service.ts","../../../../../../webui-core/webui/packages/api/src/service/configurator-api.service.ts","../../../../../../webui-core/webui/packages/api/src/service/drag-drop.service.ts","../../../../../../webui-core/webui/packages/api/src/service/event-factory.service.ts","../../../../../../webui-core/webui/packages/api/src/service/google-analytics.service.ts","../../../../../../webui-core/webui/packages/api/src/service/google-recapcha.service.ts","../../../../../../webui-core/webui/packages/api/src/classes/observer.class.ts","../../../../../../webui-core/webui/packages/api/src/classes/locale-storage.class.ts","../../../../../../webui-core/webui/packages/api/src/classes/locale-reader.class.ts","../../../../../../webui-core/webui/packages/api/src/service/locale.service.ts","../../../../../../webui-core/webui/packages/api/src/service/mailer.service.ts","../../../../../../webui-core/webui/packages/api/src/service/reset-window.service.ts","../../../../../../webui-core/webui/packages/api/src/classes/theme-applier.class.ts","../../../../../../webui-core/webui/packages/api/src/service/template.service.ts","../../../../../../webui-core/webui/packages/api/src/service/webcab.service.ts","../../../../../../webui-core/webui/packages/api/src/service/colorpicker.service.ts","../../../../../../webui-core/webui/packages/api/src/model/properties/prop-transfer.model.ts","../../../../../../webui-core/webui/packages/api/src/model/properties/property-model.base.ts","../../../../../../webui-core/webui/packages/api/src/model/properties/prog-property.model.ts","../../../../../../webui-core/webui/packages/api/src/model/properties/prog-context.model.ts","../../../../../../webui-core/webui/packages/configuration-parser/src/service/construction.service.ts"],"sourcesContent":["var eCatalogFilterState = /* @__PURE__ */ ((eCatalogFilterState2) => {\n eCatalogFilterState2[eCatalogFilterState2[\"DISABLED\"] = 0] = \"DISABLED\";\n eCatalogFilterState2[eCatalogFilterState2[\"SELECTED\"] = 1] = \"SELECTED\";\n eCatalogFilterState2[eCatalogFilterState2[\"IMPLICIT\"] = 2] = \"IMPLICIT\";\n eCatalogFilterState2[eCatalogFilterState2[\"EXPLICIT\"] = 3] = \"EXPLICIT\";\n return eCatalogFilterState2;\n})(eCatalogFilterState || {});\n\nvar DragDirection = /* @__PURE__ */ ((DragDirection2) => {\n DragDirection2[DragDirection2[\"NONE\"] = 0] = \"NONE\";\n DragDirection2[DragDirection2[\"Horizontal\"] = 1] = \"Horizontal\";\n DragDirection2[DragDirection2[\"Vertical\"] = 2] = \"Vertical\";\n return DragDirection2;\n})(DragDirection || {});\nvar DragType = /* @__PURE__ */ ((DragType2) => {\n DragType2[DragType2[\"ARTICLE\"] = 0] = \"ARTICLE\";\n DragType2[DragType2[\"PROPTRANSFER\"] = 1] = \"PROPTRANSFER\";\n DragType2[DragType2[\"BY_MODE\"] = 2] = \"BY_MODE\";\n DragType2[DragType2[\"FITTING\"] = 3] = \"FITTING\";\n DragType2[DragType2[\"WALL_FITTING\"] = 4] = \"WALL_FITTING\";\n DragType2[DragType2[\"PROGPROPERTY\"] = 5] = \"PROGPROPERTY\";\n return DragType2;\n})(DragType || {});\n\nvar ValidationType = /* @__PURE__ */ ((ValidationType2) => {\n ValidationType2[ValidationType2[\"CLOUD_ID\"] = 0] = \"CLOUD_ID\";\n ValidationType2[ValidationType2[\"E_MAIL\"] = 1] = \"E_MAIL\";\n return ValidationType2;\n})(ValidationType || {});\n\nconst VIH_PLANTYPE_ZUSATZINFO_0 = \"10580\";\nconst VIH_PLANTYPE_ZUSATZINFO_1 = \"10581\";\nconst VIH_PLANTYPE_ZUSATZINFO_2 = \"10582\";\nconst VIH_PLANTYPE_ZUSATZINFO_3 = \"10583\";\nconst VIH_PLANTYPE_ZUSATZINFO_4 = \"10584\";\nconst VIH_PLANTYPE_DX = \"10514\";\nconst VIH_PLANTYPE_DY = \"10515\";\nconst VIH_PLANTYPE_DZ = \"10516\";\nconst VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L = \"11205\";\nvar OverrideMode = /* @__PURE__ */ ((OverrideMode2) => {\n OverrideMode2[OverrideMode2[\"NONE\"] = 0] = \"NONE\";\n OverrideMode2[OverrideMode2[\"RESET\"] = 1] = \"RESET\";\n OverrideMode2[OverrideMode2[\"RESET_MANUFACTURER\"] = 2] = \"RESET_MANUFACTURER\";\n OverrideMode2[OverrideMode2[\"RESET_ALL\"] = 3] = \"RESET_ALL\";\n return OverrideMode2;\n})(OverrideMode || {});\n\nvar DeviceType = /* @__PURE__ */ ((DeviceType2) => {\n DeviceType2[DeviceType2[\"MOBILE\"] = 0] = \"MOBILE\";\n DeviceType2[DeviceType2[\"DESKTOP\"] = 1] = \"DESKTOP\";\n return DeviceType2;\n})(DeviceType || {});\n\nvar ContextFilterStrategy = /* @__PURE__ */ ((ContextFilterStrategy2) => {\n ContextFilterStrategy2[ContextFilterStrategy2[\"ALL\"] = 0] = \"ALL\";\n ContextFilterStrategy2[ContextFilterStrategy2[\"GLOBAL\"] = 1] = \"GLOBAL\";\n ContextFilterStrategy2[ContextFilterStrategy2[\"LOCAL\"] = 2] = \"LOCAL\";\n return ContextFilterStrategy2;\n})(ContextFilterStrategy || {});\n\nvar ZoomType = /* @__PURE__ */ ((ZoomType2) => {\n ZoomType2[ZoomType2[\"ZOOMAUTO_EXTENDEDAPOINT\"] = 0] = \"ZOOMAUTO_EXTENDEDAPOINT\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_EXTENDEDDIR\"] = 1] = \"ZOOMAUTO_EXTENDEDDIR\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_FRONTCLIP\"] = 2] = \"ZOOMAUTO_FRONTCLIP\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_ROTATE2PI\"] = 3] = \"ZOOMAUTO_ROTATE2PI\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_ORTHOCLIP\"] = 4] = \"ZOOMAUTO_ORTHOCLIP\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_ZOOMFACTOR\"] = 5] = \"ZOOMAUTO_ZOOMFACTOR\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_ORTHOFRONT\"] = 6] = \"ZOOMAUTO_ORTHOFRONT\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_PANUPDOWN\"] = 7] = \"ZOOMAUTO_PANUPDOWN\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_EXTENDEDCURDIR\"] = 8] = \"ZOOMAUTO_EXTENDEDCURDIR\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEMPV\"] = 9] = \"ZOOMAUTO_CAM_ROTATEMPV\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEMPH\"] = 10] = \"ZOOMAUTO_CAM_ROTATEMPH\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEABOUTMARKED\"] = 11] = \"ZOOMAUTO_CAM_ROTATEABOUTMARKED\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT\"] = 12] = \"ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEEYEUPDOWN\"] = 13] = \"ZOOMAUTO_CAM_ROTATEEYEUPDOWN\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATELEFTRIGHT\"] = 14] = \"ZOOMAUTO_CAM_ROTATELEFTRIGHT\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_MOVELEFTRIGHT\"] = 15] = \"ZOOMAUTO_CAM_MOVELEFTRIGHT\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_MOVEAXIS3D\"] = 16] = \"ZOOMAUTO_CAM_MOVEAXIS3D\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_MOVEUPDOWN\"] = 17] = \"ZOOMAUTO_CAM_MOVEUPDOWN\";\n ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_SETVIEWPOINTMODE\"] = 18] = \"ZOOMAUTO_CAM_SETVIEWPOINTMODE\";\n return ZoomType2;\n})(ZoomType || {});\nvar Perspectives = /* @__PURE__ */ ((Perspectives2) => {\n Perspectives2[Perspectives2[\"TopLeftFront\"] = -1000109] = \"TopLeftFront\";\n Perspectives2[Perspectives2[\"TopRightFront\"] = -1000110] = \"TopRightFront\";\n Perspectives2[Perspectives2[\"TopLeftBack\"] = -1000108] = \"TopLeftBack\";\n Perspectives2[Perspectives2[\"TopRightBack\"] = -1000107] = \"TopRightBack\";\n Perspectives2[Perspectives2[\"Left\"] = -1000102] = \"Left\";\n Perspectives2[Perspectives2[\"Right\"] = -1000101] = \"Right\";\n Perspectives2[Perspectives2[\"Front\"] = -1000106] = \"Front\";\n Perspectives2[Perspectives2[\"Back\"] = -1000105] = \"Back\";\n Perspectives2[Perspectives2[\"Top\"] = -1000103] = \"Top\";\n return Perspectives2;\n})(Perspectives || {});\n\nexport { ContextFilterStrategy, DeviceType, DragDirection, DragType, OverrideMode, Perspectives, VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L, VIH_PLANTYPE_DX, VIH_PLANTYPE_DY, VIH_PLANTYPE_DZ, VIH_PLANTYPE_ZUSATZINFO_0, VIH_PLANTYPE_ZUSATZINFO_1, VIH_PLANTYPE_ZUSATZINFO_2, VIH_PLANTYPE_ZUSATZINFO_3, VIH_PLANTYPE_ZUSATZINFO_4, ValidationType, ZoomType, eCatalogFilterState };\n","export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n\ttype: keyof T,\n\tevent: T[keyof T]\n) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList<T = unknown> = Array<Handler<T>>;\nexport type WildCardEventHandlerList<T = Record<string, unknown>> = Array<\n\tWildcardHandler<T>\n>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n\tkeyof Events | '*',\n\tEventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>\n>;\n\nexport interface Emitter<Events extends Record<EventType, unknown>> {\n\tall: EventHandlerMap<Events>;\n\n\ton<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;\n\ton(type: '*', handler: WildcardHandler<Events>): void;\n\n\toff<Key extends keyof Events>(\n\t\ttype: Key,\n\t\thandler?: Handler<Events[Key]>\n\t): void;\n\toff(type: '*', handler: WildcardHandler<Events>): void;\n\n\temit<Key extends keyof Events>(type: Key, event: Events[Key]): void;\n\temit<Key extends keyof Events>(\n\t\ttype: undefined extends Events[Key] ? Key : never\n\t): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt<Events extends Record<EventType, unknown>>(\n\tall?: EventHandlerMap<Events>\n): Emitter<Events> {\n\ttype GenericEventHandler =\n\t\t| Handler<Events[keyof Events]>\n\t\t| WildcardHandler<Events>;\n\tall = all || new Map();\n\n\treturn {\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `'*'` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<Key extends keyof Events>(type: Key, handler: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.push(handler);\n\t\t\t} else {\n\t\t\t\tall!.set(type, [handler] as EventHandlerList<Events[keyof Events]>);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * If `handler` is omitted, all handlers of the given type are removed.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)\n\t\t * @param {Function} [handler] Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<Key extends keyof Events>(type: Key, handler?: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\tif (handler) {\n\t\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t\t} else {\n\t\t\t\t\tall!.set(type, []);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `'*'` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing '*' handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<Key extends keyof Events>(type: Key, evt?: Events[Key]) {\n\t\t\tlet handlers = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as EventHandlerList<Events[keyof Events]>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(evt!);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\thandlers = all!.get('*');\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as WildCardEventHandlerList<Events>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(type, evt!);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n}\n","import mitt, {Emitter, EventType, Handler, WildcardHandler} from 'mitt';\n\nexport interface AsyncEmitter<T extends Record<EventType, unknown>> extends Emitter<T> {\n emitAsync<Key extends keyof T>(\n type: Key,\n event: T[Key]\n ): Promise<PromiseSettledResult<any>[]>;\n\n has<Key extends keyof T>(type: Key): boolean;\n}\n\ntype AsyncEventHandler = void | Promise<void>;\n\nexport function createAsyncEmitter<T extends Record<EventType, unknown>>(emitter: Emitter<T> = mitt<T>()): AsyncEmitter<T> {\n const has = <Key extends keyof T>(type: Key) => {\n return (emitter.all.get(type) || []).length !== 0\n };\n (emitter as AsyncEmitter<T>).has = has;\n\n const emitAsync = async <Key extends keyof T>(\n type: Key,\n event: T[Key]\n ): Promise<PromiseSettledResult<any>[]> => {\n const specificHandlers = emitter.all.get(type) || [];\n const wildcardHandlers = emitter.all.get('*') || [];\n\n const promises: Promise<any>[] = [];\n\n for (const handler of specificHandlers) {\n try {\n const result = (handler as Handler<T[Key]>)(event) as AsyncEventHandler;\n if (result && typeof result.then === 'function') {\n promises.push(result);\n }\n } catch (error) {\n console.error(`[emitAsync] Synchronous error in specific handler for event '${String(type)}':`, error);\n promises.push(Promise.reject(error));\n }\n }\n\n for (const handler of wildcardHandlers) {\n try {\n const result = (handler as WildcardHandler<T>)(type, event) as AsyncEventHandler;\n if (result && typeof result.then === 'function') {\n promises.push(result);\n }\n } catch (error) {\n console.error(`[emitAsync] Synchronous error in wildcard handler for event '${String(type)}':`, error);\n promises.push(Promise.reject(error));\n }\n }\n return Promise.allSettled(promises);\n };\n (emitter as AsyncEmitter<T>).emitAsync = emitAsync;\n return emitter as AsyncEmitter<T>;\n}\n","import {Events} from \"./events\";\nimport {createAsyncEmitter} from \"./async-emitter\";\n\ninterface SubscriptionOptions {\n once: boolean\n}\n\nexport interface Subscription {\n unsubscribe: () => void;\n}\n\nexport const globalEventBus = createAsyncEmitter<Events>();\n(globalEventBus as any)._instanceId = Math.random().toString(36).substring(2);\n// console.log('EventBus instance created:', (globalEventBus as any)._instanceId);\n\nexport function subscribe<K extends keyof Events>(\n eventName: K,\n handler: (payload: Events[K]) => void,\n options?: SubscriptionOptions\n): Subscription {\n const func = (payload: Events[K]) => {\n handler(payload)\n if(options?.once) {\n subscription.unsubscribe();\n }\n }\n const subscription = {\n unsubscribe: () => {\n globalEventBus.off(eventName, func);\n }\n }\n globalEventBus.on(eventName, func);\n return subscription;\n}\n\nexport function subscribeOnce<K extends keyof Events>(eventName: K, handler: (payload: Events[K]) => void): Subscription {\n return subscribe(eventName, handler, {once: true});\n}\n","export function throttle<TArgs extends Array<unknown>>(\n\tfn: (...args: TArgs) => void | Promise<unknown>,\n\ttimeout: number,\n): (...args: TArgs) => void {\n\tlet lastInvoked = 0;\n\treturn (...args: TArgs) => {\n\t\tconst now = Date.now();\n\t\tif (now - lastInvoked >= timeout) {\n\t\t\tlastInvoked = now;\n\t\t\tvoid fn(...args);\n\t\t}\n\t};\n}\n\n// Compute a throttle window adapted to the current device, starting from\n// `baseline` (ms) and clamped to [min, max].\n// - low core count -> larger window; high core count -> tighter window\n// - low device RAM -> larger window\n// - mobile-sized screen -> larger window (aggressive thread throttling)\nexport function getAdaptiveTimeout(\n\tbaseline = 150,\n\tmin = 100,\n\tmax = 600,\n\tmodifier = 100\n): number {\n\tlet timeout = baseline;\n\n\t// CPU cores: lower cores = slower event processing\n\tconst cores = navigator.hardwareConcurrency || 4;\n\tif (cores <= 2) timeout += modifier*1.5;\n\telse if (cores >= 8) timeout -= modifier*0.5;\n\n\t// Device RAM (Chromium-only; not in standard lib.dom typings)\n\tconst ram = (navigator as Navigator & { deviceMemory?: number }).deviceMemory;\n\tif (ram && ram <= 2) timeout += modifier;\n\n\t// Mobile screens often have aggressive background-thread throttling\n\tconst isMobile = window.matchMedia(\"(max-width: 768px)\").matches;\n\tif (isMobile) timeout += modifier;\n\n\treturn Math.max(min, Math.min(timeout, max));\n}\n","import {Events, globalEventBus} from \"../event\";\n\ninterface DecoratedMethodMetadata<Events, K extends keyof Events> {\n eventName: K;\n priority: EventPriority;\n methodName: string;\n}\n\nexport enum EventPriority {\n\n LOWEST,\n LOW,\n DEFAULT = 2,\n HIGH,\n HIGHEST,\n\n}\n\nclass EventServiceClass {\n\n private emitter = globalEventBus;\n private instanceEventHandlers: Map<object, Array<{ eventName: keyof Events; handler: (payload: any) => void | Promise<void> }>> = new Map();\n\n public register(instance: object): void {\n const instanceIdentifier = instance.constructor.name;\n\n let handlersForThisInstance = this.instanceEventHandlers.get(instance);\n if (!handlersForThisInstance) {\n handlersForThisInstance = [];\n this.instanceEventHandlers.set(instance, handlersForThisInstance);\n }\n\n let constructor = instance.constructor;\n const boundEventMethodKeys: Set<string> = new Set();\n\n while (constructor && constructor !== Object.prototype) {\n if (constructor.hasOwnProperty('_eventHandlers')) {\n const classSpecificMetadata: DecoratedMethodMetadata<Events, keyof Events>[] =\n (constructor as any)._eventHandlers || [];\n\n classSpecificMetadata.sort((x, y) => y.priority - x.priority).forEach(meta => {\n const eventMethodKey = `${String(meta.eventName)}:${meta.methodName}`;\n\n if (boundEventMethodKeys.has(eventMethodKey)) {\n return;\n }\n\n const methodToCall = (instance as any)[meta.methodName] as\n | ((payload: Events[typeof meta.eventName]) => void)\n | undefined;\n\n if (typeof methodToCall === 'function') {\n const handler = (payload: Events[typeof meta.eventName]) => {\n return methodToCall.apply(instance, [payload]);\n };\n this.emitter.on(meta.eventName, handler);\n handlersForThisInstance!.push({ eventName: meta.eventName, handler });\n boundEventMethodKeys.add(eventMethodKey);\n } else {\n console.warn(\n `[EventService] Method '${meta.methodName}' for event '${String(meta.eventName)}' ` +\n `(from class ${constructor.name}) not found on instance of ${instanceIdentifier}.`\n );\n }\n });\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n }\n\n public unregister(instance: object): void {\n const handlersToRemove = this.instanceEventHandlers.get(instance);\n if (handlersToRemove) {\n handlersToRemove.forEach(({ eventName, handler }) => {\n this.emitter.off(eventName, handler);\n });\n this.instanceEventHandlers.delete(instance);\n }\n }\n\n public async emitAsync<K extends keyof Events>(eventName: K, params?: Events[K]): Promise<void> {\n if (!this.has(eventName)) {\n console.warn(\"[emitAsync] event does not exist:\", eventName);\n }\n await this.emitter.emitAsync(eventName, params);\n await this.emitter.emitAsync(\"shared:event-fired\", { id: eventName.toString(), data: params as any })\n }\n\n public emit<K extends keyof Events>(eventName: K, params?: Events[K]): void {\n if (!this.has(eventName)) {\n console.warn(\"[emit] event does not exist:\", eventName);\n }\n this.emitter.emit(eventName, params);\n this.emitter.emit(\"shared:event-fired\", { id: eventName.toString(), data: params as any })\n }\n\n public on<K extends keyof Events>(eventName: K, handler: (params: Events[K]) => void): void {\n this.emitter.on(eventName, handler);\n }\n\n public off<K extends keyof Events>(eventName: K, handler: (params: Events[K]) => void): void {\n this.emitter.off(eventName, handler);\n }\n\n public has<K extends keyof Events>(eventName: K): boolean {\n return this.emitter.has(eventName);\n }\n\n}\n\nexport function EventHandler<K extends keyof Events>(eventName: K, priority: EventPriority = EventPriority.DEFAULT) {\n return function (\n target: any, // Prototype of the class for an instance method\n propertyKey: string, // Name of the method being decorated\n descriptor: PropertyDescriptor\n ) {\n const constructor = target.constructor;\n\n if (!constructor.hasOwnProperty('_eventHandlers')) {\n Object.defineProperty(constructor, '_eventHandlers', {\n value: [],\n writable: true, // Must be writable to allow multiple decorators in the same class\n configurable: true, // Allows redefinition if necessary (e.g., for testing)\n enumerable: false, // Keep it hidden from `for...in` loops on the constructor\n });\n } else if (!Array.isArray(constructor._eventHandlers)) {\n console.error(`[EventHandler] '_eventHandlers' on ${constructor.name} is not an array. This might indicate a conflict. Overwriting.`);\n constructor._eventHandlers = [];\n }\n (constructor._eventHandlers as DecoratedMethodMetadata<Events, K>[]).push({\n eventName,\n priority: priority,\n methodName: propertyKey,\n });\n };\n}\nexport const EventService = new EventServiceClass();\n","export interface IDeferHelperClass extends Promise<any> {\n resolve: Function\n reject: Function\n}\n\nexport function DeferHelperClass(): IDeferHelperClass {\n let resolveExternally: (value?: any) => void;\n let rejectExternally: (value?: any) => void;\n\n const promise: any = new Promise((resolve, reject) => {\n resolveExternally = resolve;\n rejectExternally = reject;\n });\n\n promise.resolve = function (parameters: any) {\n resolveExternally.apply(this, parameters);\n return promise;\n }\n\n promise.reject = function (error: any) {\n rejectExternally.apply(this, error);\n return promise;\n }\n\n return promise;\n}\n","import {IRequestFetchOptions, IRequestService} from \"@dh-software/webui-types\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {subscribe} from \"../event\";\n\nclass RequestServiceClass implements IRequestService {\n\n private readonly _initialized: IDeferHelperClass\n\n constructor() {\n this._initialized = DeferHelperClass();\n subscribe(\"shared:configuration-fetched\", () => {\n this._initialized.resolve();\n }, {once: true});\n }\n\n public get Initialized(): Promise<any> {\n return this._initialized;\n }\n\n public async fetch(url_: string, options_?: IRequestFetchOptions, withoutWait_?: boolean): Promise<Response> {\n if (!withoutWait_) {\n await this._initialized;\n }\n options_ = options_ || {};\n\n let requestObj: any = {\n method: options_.method || 'GET',\n //mode : options_.cors ? 'no-cors' : 'same-origin',\n cache: options_.cache ? 'default' : 'no-cache',\n credentials: 'same-origin',\n redirect: 'follow'\n }\n if (options_.contentType) requestObj.headers = new Headers({'Content-Type': options_.contentType});\n if (options_.body) {\n if (options_.body && typeof options_.body !== \"string\") options_.body = JSON.stringify(options_.body);\n requestObj.body = options_.body;\n }\n return await fetch(new Request(url_, requestObj));\n }\n\n public async fetchJSON<T extends any = any>(url_: string, withoutWait_?: boolean): Promise<T> {\n if (!withoutWait_) {\n await this._initialized;\n }\n return this.fetch(url_, {\n method: 'GET',\n cache: false,\n cors: true,\n contentType: \"application/json\"\n }, withoutWait_)\n .then(async (data: Response) => {\n if (data.ok) {\n return await data.json();\n } else {\n return null;\n }\n })\n .catch((e) => {\n return null;\n });\n }\n\n public buildGetURL(url_: string): string {\n const url = new URL((!url_.startsWith(\"http\") ? window.location.origin + (url_.startsWith(\"/\") ? \"\" : \"/\") : \"\") + url_);\n const windowUrl = new URL(window.location.href);\n windowUrl.searchParams.forEach((value, key) => {\n url.searchParams.set(key, value);\n })\n let sessionId = window.g_sessionId;\n if (sessionId) {\n url.searchParams.set(\"session\", sessionId);\n }\n return url.href;\n }\n\n public async get(url_: string): Promise<Response> {\n await this._initialized;\n return this.fetch(url_, {method: 'GET', cache: false, cors: true})\n }\n\n public async post(url_: string, body_?: string | any) {\n await this._initialized;\n return this.fetch(url_, {method: 'POST', cache: false, cors: true, body: body_})\n }\n\n public setQuery(url_: string): string {\n return this.buildGetURL(url_.indexOf(\"?\") === -1 ? url_ + window.location.search : url_ + window.location.search.replace(\"?\", \"&\"));\n }\n\n public async buildRequestURL(url_: string): Promise<string> {\n await this._initialized;\n return this.setQuery(`/webui${(window.g_configuration.webui_theme_mode ? \"/t\" : \"\")}/${(window.g_configuration.webuiProject ? window.g_configuration.webuiProject + \"/\" : \"\")}${url_}`);\n }\n\n public async GetFurncloudShortUrl(url: string, cloudId: string) {\n const response = await this.post(\"/furncloud-short-urls\", JSON.stringify({\n url: url,\n cloudId: cloudId\n }));\n const json = await response.json();\n return json.url;\n }\n}\n\nexport const RequestService = new RequestServiceClass();\n","import {RequestService} from \"./request.service\";\nimport {globalEventBus} from \"../event\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\n\ndeclare global {\n interface Window {\n g_configuration: any;\n g_sessionId: any;\n g_dataInterface: any;\n g_article: {\n manu: string;\n prog: string;\n artno: string;\n entityType: string;\n level1: string;\n level2: string;\n };\n selectedProgram: {[key: string]: any};\n g_article_categories: string[];\n }\n}\n\nclass ConfigurationServiceClass {\n\n private _configurationDefer?: IDeferHelperClass;\n\n public get Initialized(): Promise<boolean> {\n if(!this._configurationDefer){\n this._configurationDefer = DeferHelperClass();\n this.fetchConfiguration();\n }\n return this._configurationDefer\n }\n\n public get Configuration(): Promise<any> {\n return this.Initialized.then(x => {\n return window.g_configuration;\n })\n }\n\n private async fetchConfiguration() {\n const data = await RequestService.fetchJSON(\"/webui/fetchConfiguration\" + window.location.search, true);\n if (data.g_sessionId && data.g_configuration) {\n window.g_sessionId = data.g_sessionId;\n window.g_configuration = data.g_configuration;\n window.g_article = data.g_article;\n window.g_reCaptcha = data.g_reCaptcha;\n window.g_article_categories = data.g_article_categories;\n }\n this._configurationDefer!.resolve([data]);\n globalEventBus.emit(\"shared:configuration-fetched\", data)\n }\n\n}\n\nexport const ConfigurationService = new ConfigurationServiceClass();\n","import {IExternalWindow} from \"@dh-software/webui-types\";\n\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {globalEventBus} from \"../event\";\nimport {RequestService} from \"./request.service\";\n\nimport {\n CDhMessageCommunicator,\n CDhMessageService,\n CDhPostMessageConnector,\n DhMessage,\n EventEmitter\n} from \"@dh-software/message-communicator-browser\"\n\nexport enum CommunicatorIds {\n\tFurnview = \"fv\",\n\tFurnplan = \"fp\",\n\tNode = \"node\",\n\tWebUi = \"wui\"\n}\nexport const communicator = new CDhMessageCommunicator(CommunicatorIds.WebUi);\n// communicator.setVerbosity(1|2|4);\n\ntype Listener = (...args: any[]) => any;\n\nclass WebViewerServiceClass extends CDhMessageService {\n\n private readonly connector!: CDhPostMessageConnector;\n private readonly events = new EventEmitter();\n\n private readonly _isAppReady: IDeferHelperClass = DeferHelperClass();\n private _furnviewWebViewer?: HTMLIFrameElement;\n private _moveWebview?: IDeferHelperClass;\n\n private _responseEventListeners: any = {};\n private _eventListeners: any = {};\n\n get IsAppReady(): IDeferHelperClass {\n return this._isAppReady;\n }\n\n get IsWebViewMoved(): IDeferHelperClass | undefined {\n return this._moveWebview;\n }\n\n get FurnviewWebViewer(): HTMLIFrameElement {\n return this._furnviewWebViewer!;\n }\n\n constructor() {\n super();\n this.connector = new CDhPostMessageConnector(this._furnviewWebViewer?.contentWindow as Window, \"*\");\n this.setCommunicator(communicator);\n }\n\n initialize(iframe: HTMLIFrameElement | undefined) {\n this._furnviewWebViewer = iframe || document.querySelector(\"#furnviewWebViewer\") || undefined;\n this.injectFrameDirectives(this._furnviewWebViewer);\n globalEventBus.emit(\"shared:scene-init\", this._furnviewWebViewer);\n this.on(\"appready\", async () => {\n this._isAppReady.resolve();\n globalEventBus.emit(\"shared:scene-ready\", this._furnviewWebViewer);\n await this.verifyResponsibility();\n })\n\n // this.connector.setVerbosity(4);\n this.connector.setCommunicator(communicator, [CommunicatorIds.Furnview, CommunicatorIds.Furnplan]);\n // this.connector.init();\n\n this.reloadWebViewer();\n }\n\n private injectFrameDirectives(iframe: HTMLIFrameElement | undefined): void {\n if (!iframe) return;\n const directives = [\n \"xr-spatial-tracking\", \"camera\", \"gyroscope\", \"accelerometer\", \"magnetometer\", \"fullscreen\"\n ];\n const current = (iframe.getAttribute(\"allow\") || \"\")\n .split(\";\").map(d => d.trim()).filter(Boolean);\n const present = new Set(current.map(d => d.split(/\\s+/)[0]));\n for (const directive of directives) {\n const feature = directive.split(/\\s+/)[0];\n if (!present.has(feature)) current.push(directive);\n }\n iframe.setAttribute(\"allow\", current.join(\"; \"));\n }\n\n private async verifyResponsibility() {\n const external = await this.getExternalFunctionContainer();\n if (external) {\n external.EventFactoryService.verifyResponsibility();\n } else {\n await this.postMessage(\"furnview.verify.responsibility\", []);\n }\n }\n\n public reloadWebViewer() {\n // temporary fix for webviewer => webui transition because of HTTP 301 move permanent in short urls (https://furn.cloud/12345)\n if (this._furnviewWebViewer) {\n this._furnviewWebViewer.src = RequestService.buildGetURL(window.location.href.replace(\"webui\", \"webviewer\") + \"&is-webui-embedded=1\");\n this.connector.resetTargetWindow(this._furnviewWebViewer.contentWindow as Window);\n }\n }\n\n public on(event_: string, callback: Listener /* | Promise<any> */) {\n this.events.on(event_, callback); // TODO: callback = Promise?!\n // if (!this._eventListeners[event_]) {\n // this._eventListeners[event_] = [];\n // }\n // this._eventListeners[event_].push(callback);\n }\n\n public moveWebViewerTo(element: HTMLElement): HTMLIFrameElement | undefined {\n if (this._moveWebview) {\n this._moveWebview.reject();\n }\n this._moveWebview = DeferHelperClass();\n if (!this._furnviewWebViewer) {\n this._moveWebview.reject();\n return undefined;\n }\n const load = () => {\n this._moveWebview?.resolve();\n this._furnviewWebViewer?.removeEventListener('load', load);\n };\n this._furnviewWebViewer?.addEventListener('load', load);\n this.connector.resetTargetWindow(this._furnviewWebViewer.contentWindow as Window);\n // this.connector._temp = this._furnviewWebViewer; // #DEBUG JM\n return element.appendChild(this._furnviewWebViewer!);\n }\n\n public off(event_: string, callback_?: Listener /* | Promise<any> */) {\n this.events.off(event_, <any>callback_);\n // if (!this._eventListeners[event_]) return f-alse;\n // if (callback_) {\n // const index = this._eventListeners[event_].indexOf(callback_);\n // if (index !== -1) {\n // this._eventListeners[event_].splice(index, 1);\n // }\n // } else {\n // delete this._eventListeners[event_];\n // }\n // return true;\n }\n\n public dispatch(event_: string, parameters_?: any/* , __responsable?: IPostMessageResponsable */) {\n this.events.emit(event_, ...parameters_);\n }\n\n // public async dispatch(event_: string, parameters_?: any, _responsible?: IPostMessageResponsible) {\n // if (!this._eventListeners[event_]) return false;\n // for (const ev of this._eventListeners[event_]) {\n // await ev.apply(this, parameters_);\n // if (_responsible) {\n // await this.postMessage(_responsible.command, [], true);\n // }\n // }\n // }\n\n public async postMessage(command_: string, parameters_?: any, withoutResponse_?: boolean) {\n if (withoutResponse_) {\n super.request(CommunicatorIds.Furnview, command_, parameters_);\n return;\n }\n const params = await super.request<[any]>(CommunicatorIds.Furnview, command_, parameters_);\n const [value] = params || [];\n return value;\n // parameters_ = parameters_ || [];\n // const uuid = UtilityService.generateUUID();\n // const uuidCommand = command_ + \"_\" + uuid;\n // this._furnviewWebViewer?.contentWindow?.postMessage({\n // command: command_,\n // parameters: parameters_,\n // uuid: uuid\n // }, window.location.origin);\n // if (!withoutResponse_) {\n // this._responseEventListeners[uuidCommand] = DeferHelperClass();\n // return this._responseEventListeners[uuidCommand];\n // }\n // return Promise.resolve();\n }\n\n // private async onMessage(event_: MessageEvent) {\n // const eventJSON = event_.data;\n // if (eventJSON) {\n // const command: string = event_.data.command;\n // if (command && command.length > 0) {\n // const parameter: Array<any> = event_.data.parameters;\n // const _responsible: IPostMessageResponsible = event_.data.__responsable;\n // await this.execEvent(command, parameter, _responsible);\n // }\n // }\n // }\n\n // private async execEvent(command_: string, parameters: Array<any>, _responsible?: IPostMessageResponsible) {\n // if (this._eventListeners[command_]) {\n // await this.dispatch(command_, parameters, _responsible);\n // } else if (this._responseEventListeners[command_]) {\n // this._responseEventListeners[command_].resolve(parameters);\n // delete this._responseEventListeners[command_];\n // } else if (_responsible) {\n // await this.postMessage(_responsible.command, [], true);\n // } else {\n // // console.error(`execEvent: Event \"${command_}\" not found!`); //Aktivieren wenn Probleme mit Events auftreten\n // }\n // }\n\n public override processMessage(message: DhMessage): boolean {\n const { command } = message.header;\n // console.log(`WEBUI - >>> MESSAGE`, command);\n if (command === \"appready\") {\n this._isAppReady.resolve();\n this.verifyResponsibility();\n return true;\n }\n if (this.events.has(command)) {\n this.events.emit(command, ...message.data);\n return true;\n }\n return false;\n }\n\n public override processRequest(message: DhMessage): Promise<any> | undefined {\n const { command } = message.header;\n // console.log(`WEBUI - >>> MESSAGE`, command)\n if (this.events.has(command)) {\n this.events.emit(command, ...message.data);\n return Promise.resolve();\n }\n return undefined;\n }\n\n public async getExternalFunctionContainer(): Promise<IExternalWindow> {\n await this.IsAppReady;\n return this.FurnviewWebViewer.contentWindow as IExternalWindow;\n }\n\n}\n\ndeclare global {\n interface Window {\n WebViewerService: WebViewerServiceClass\n CommunicationInterfaceService: WebViewerServiceClass\n }\n}\n\nexport const WebViewerService = new WebViewerServiceClass();\nwindow.CommunicationInterfaceService = WebViewerService;\nwindow.WebViewerService = WebViewerService;\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import {v4 as uuid_v4} from \"uuid\";\nimport {IUtilityService} from \"@dh-software/webui-types\";\n\nclass UtilityServiceClass implements IUtilityService {\n\n generateUUID() {\n return uuid_v4();\n }\n\n public stripQueryParameters(url: string): string {\n const urlParser = new URL(url);\n urlParser.searchParams.delete(\"session\");\n urlParser.searchParams.delete(\"cloudId\");\n return urlParser.href;\n }\n\n public imagePathURLEncodedWithoutOrigin(path: string) {\n const split = path.split(\"/\")\n let url = \"\";\n split.forEach((segment) => {\n url += encodeURIComponent(segment) + \"/\";\n })\n return url.substr(0, url.length - 1);\n }\n\n public SaveToDisk(fileURL: string, fileName: string) {\n // for non-IE\n //@ts-ignore\n if (!window.ActiveXObject) {\n if (!!window.fetch) {\n fetch(fileURL)\n .then(response => response.blob())\n .then(blob => {\n const link = document.createElement(\"a\");\n link.href = URL.createObjectURL(blob);\n link.download = fileName;\n link.click();\n })\n .catch(console.error);\n } else {\n var save: HTMLAnchorElement = document.createElement('a');\n save.href = fileURL;\n save.download = fileName || 'unknown';\n save.style.display = 'none';\n save.style.opacity = '0';\n save.style.color = 'transparent';\n\n (document.body || document.documentElement).appendChild(save);\n\n if (typeof save.click === 'function') {\n save.click();\n } else {\n save.target = '_blank';\n var event = document.createEvent('Event');\n event.initEvent('click', true, true);\n save.dispatchEvent(event);\n }\n\n (window.URL || window.webkitURL).revokeObjectURL(save.href);\n }\n }\n\n // for IE\n //@ts-ignore\n else if (!!window.ActiveXObject && document.execCommand) {\n var _window = window.open(fileURL, '_blank');\n _window?.document.close();\n _window?.document.execCommand('SaveAs', true, fileName || fileURL)\n _window?.close();\n }\n }\n\n private fallbackCopyTextToClipboard(text: string, resolve: () => void, reject: (err: Error) => void) {\n let textArea = document.createElement(\"textarea\");\n textArea.value = text;\n\n // Avoid scrolling to bottom\n textArea.style.top = \"0\";\n textArea.style.left = \"0\";\n textArea.style.position = \"fixed\";\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n let successful = document.execCommand('copy');\n document.body.removeChild(textArea);\n if (successful) {\n return resolve();\n } else {\n return reject(new Error(\"Can't copy text...\"));\n }\n } catch (err) {\n document.body.removeChild(textArea);\n return reject(err as Error);\n }\n }\n\n public async copyTextToClipboard(text: string) {\n return new Promise(((resolve, reject) => {\n if (!navigator.clipboard) {\n this.fallbackCopyTextToClipboard(text, () => resolve(\"\"), reject);\n return;\n }\n return navigator.clipboard.writeText(text).then(function () {\n resolve(text);\n }, function (err) {\n reject(err);\n });\n }));\n }\n\n public isMobileDevice() {\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\n || (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1)) {\n return true;\n }\n return false;\n }\n\n public ncrToUTF8(ncr: string): string {\n if (ncr && ncr.length > 0) {\n return ncr.replace(/&#([0-9]+);/g, function (b) {\n return String.fromCodePoint(parseInt(b.slice(2, -1)));\n });\n }\n return ncr;\n }\n\n}\n\nexport const UtilityService = new UtilityServiceClass();\n","import {\n AdditionalPositionsResult,\n AddNeutralAdditionalPositionParams,\n DeleteAdditionalPositonsParams,\n IARExportData,\n IArticleData,\n IArtPropData,\n ICameraFitParameters,\n ICreatePlacerGroupRequest,\n ICreateStdCatalogFilterCtxRequest,\n ICreateStdCatalogFilterCtxResponse,\n IDimensionInfo,\n IDisposeCatalogFilterCtxRequest,\n IDisposeCatalogFilterCtxResponse,\n IDisposeContextParameters,\n IExternalPlacerParameter,\n IExternalWindow,\n IFurnrayImage,\n IGetArtPropParameters,\n IGetCurrentProgPropertiesParams,\n IGetErpFiles,\n IGetProgContextParameters,\n IGetProgPropertiesParams,\n IGetProgPropertyFinishParams,\n IGetProgPropertyGroupInfoParameters,\n IGetPropTransferParams,\n IGetTextParams,\n IGetWidgetPositionParams,\n IImageResponse,\n IInitProgContextParameters,\n ILoadArticleParams,\n IManufacturerReferenceData,\n IMaterialCatalog,\n IModifyProperty,\n IModifyPropertyOptions,\n IPanCameraParameters,\n IPlacerReplaceData,\n IPlaceWallElementNextCenterParams,\n IPlannedArticle,\n IPossiblePlacerGroupResponse,\n IPriceData,\n IProgramLevelTree,\n IPropTransferGroup,\n IPropTransferItem,\n IPropTransferManufacturer,\n IPropTransferProgram,\n IRawCatConfig,\n IRunStdCatalogFilterCtxRequest,\n IRunStdCatalogFilterCtxResponse,\n ISceneLO,\n ISetPropTransferParameters,\n IStartKataPageFilterOptions,\n IStoreTree,\n ISwitchTransferLevelOptions,\n IWidgetPosition,\n IZoomParameters,\n LanguageInfo,\n OverrideMode,\n Vector3Like\n} from \"@dh-software/webui-types\";\nimport {IChainElement, ICommunicationMessageService} from \"@dh-software/webui-communication\";\nimport {WebViewerService} from \"./web-viewer.service\";\nimport {subscribeOnce} from \"../event\";\nimport {UtilityService} from \"./utility.service\";\n\ndeclare global {\n interface Window {\n g_node_url_prefix: string;\n CommunicationMessageService: ICommunicationMessageService\n }\n}\n\nclass CommunicationMessageServiceClass implements ICommunicationMessageService {\n\n constructor() {\n subscribeOnce(\"shared:configuration-fetched\", async () => {\n window.g_node_url_prefix = await this.getNodePrefix();\n })\n }\n\n private async send(command_: string, ...args: Array<unknown>) {\n await WebViewerService.IsAppReady;\n return WebViewerService.postMessage(command_, args);\n }\n\n //region General Actions\n\n dhTodo(data: any): Promise<any> {\n return this.send(\"external.dhtodo\", data);\n }\n\n doActionSimpleCL(index: number): Promise<any> {\n return this.send(\"external.doactionsimplecl\", index);\n }\n\n executeManufacturerFunction(manufacturer: string, functionName: string, functionId: number, param1?: string): Promise<any> {\n return this.send(\"external.executeManufacturerFunction\", manufacturer, functionName, functionId, param1);\n }\n\n showAdditionalPositionsWindow(): Promise<void> {\n return this.send(\"external.additionalPositionsWindow.show\");\n }\n\n hideAdditionalPositionsWindow(): Promise<void> {\n return this.send(\"external.additionalPositionsWindow.hide\");\n }\n\n showDeletables(mode: number): Promise<any> {\n return this.send(\"external.showDeletables\", mode);\n }\n\n getWidgetPosition(instanceIdents: number[], position?: IGetWidgetPositionParams, rect?: DOMRect): Promise<Array<IWidgetPosition>> {\n return this.send(\"external.getWidgetPosition\", instanceIdents, position, rect);\n }\n\n getPricePreview(manufacturer: string, program: string, properties: Array<any>): Promise<any> {\n return this.send('external.getPricePreview', manufacturer, program, properties);\n }\n\n getPriceList(manufacturer: string, program: string): Promise<any> {\n return this.send('external.getPriceList', manufacturer, program);\n }\n\n startIwoFurnService(): Promise<any> {\n return this.send(\"external.iwoFurnService\");\n }\n\n getSceneFullyLoaded(): Promise<any> {\n return this.send(\"external.sceneFullyLoaded\");\n }\n\n //endregion General Actions\n\n //region Requests\n\n getNodePrefix(): Promise<string> {\n return this.send(\"external.getNodeURL\");\n }\n\n getMediaUrl(manufacturer: string, program: string, type: string, name: string, hasExtension: boolean, returnPlaceholder?: boolean): Promise<string> {\n return this.send(\"external.getMediaUrl\", manufacturer, program, type, name, hasExtension, returnPlaceholder);\n }\n\n chainRequest(chain: Array<IChainElement>): Promise<any> {\n return this.send(\"external.chainRequest\", chain);\n }\n\n // endregion\n\n //region Scene\n\n getManufacturerReferenceData(manufacturer: string, program: string): Promise<IManufacturerReferenceData> {\n return this.send(\"external.getManufacturerReferenceData\", manufacturer, program);\n }\n\n getAvailableLanguages(useCache?: boolean): Promise<Array<LanguageInfo>> {\n return this.send(\"external.getAvailableLanguages\", useCache);\n }\n\n setLanguage(langCode: string): Promise<void> {\n return this.send(\"external.setLanguage\", langCode);\n }\n\n getElementCountByCategories(manufacturer: string, program: string, categories: string[]): Promise<any> {\n return this.send(\"external.getElementCountByCategories\", {\n manufacturer,\n program,\n categories\n });\n }\n\n getElementCount(): Promise<any> {\n return this.send(\"external.getElementCount\");\n }\n\n calculateScreenPosition(position: Vector3Like): Promise<any> {\n return this.send(\"external.calculateScreenPosition\", position);\n }\n\n getAnyPlannedPOFromScene(): Promise<any> {\n return this.send(\"external.getAnyPlannedPOFromScene\");\n }\n\n SearchKeysFromLOs(data: { keys: Array<number>; }): Promise<any> {\n return this.send(\"external.SearchKeysFromLOs\", data);\n }\n\n getLOsFromScene(instanceIdents: number[]): Promise<ISceneLO[]> {\n return this.send(\"external.getLOsFromScene\", instanceIdents);\n }\n\n getPlannedArticles(instanceIdents?: number[]): Promise<IPlannedArticle[]> {\n return this.send(\"external.getPlannedArticles\", instanceIdents);\n }\n\n /**\n * @deprecated Use {@link setLoDimensionExt} instead.\n */\n setLODimension(width: number, height: number, depth: number, guids: string[], fixation?: number, ignoreLoConnection?: boolean, moveOther?: boolean): Promise<any> {\n return this.send(\"external.setLODimension\", width, height, depth, guids, fixation, ignoreLoConnection, moveOther);\n }\n\n setLoDimensionExt(width: number, height: number, depth: number, guids: string[], fixation_x: number = 0, fixation_y: number = 1, move_other: boolean = true, ignore_lo_connection: boolean = false): Promise<any> {\n return this.send(\"external.setLoDimensionExt\", width, height, depth, guids, fixation_x, fixation_y, move_other, ignore_lo_connection);\n }\n\n loadPlanningFile(planningID: string): Promise<any> {\n return this.send(\"external.loadPlanning\", planningID);\n }\n\n loadPlanningUrl(url: string): Promise<any> {\n return this.send(\"external.loadPlanningUrl\", url);\n }\n\n setManuProg(manufacturer: string, calcManufacturer: string, program: string): Promise<any> {\n return this.send(\"external.setManuProg\", manufacturer, calcManufacturer, program);\n }\n\n getProgramsInScene(): Promise<any> {\n return this.send(\"external.getProgramsInScene\");\n }\n\n clearScene(): Promise<any> {\n return this.send(\"external.clearScene\");\n }\n\n resetSceneAction(): Promise<any> {\n return this.send(\"external.resetSceneAction\");\n }\n\n newPlanning(): Promise<any> {\n return this.send(\"external.newPlanning\");\n }\n\n buildWall(data: object): Promise<any> {\n return this.send('external.BuildWallFromConfiguration', data);\n }\n\n removeWall(): Promise<any> {\n return this.send('external.RemoveWall');\n }\n\n addWallChildElement(parameters: any): Promise<any> {\n return this.send('external.wall.addChildElement', parameters);\n }\n\n getFurnplanWallsDoorsWindowsAndUtilities(utilities: boolean, onlyPrimaryWalls: boolean): Promise<any> {\n return this.send('external.wall.getFurnplanWallsDoorsWindowsAndUtilities', utilities, onlyPrimaryWalls);\n }\n\n getWallElements(): Promise<any> {\n return this.send('external.getWallElements');\n }\n\n placeWallElementNextCenter(params: IPlaceWallElementNextCenterParams): Promise<void> {\n return this.send(\"external.placeWallElementNextCenter\", params);\n }\n\n setRoomConfigurationState(state: boolean): Promise<any> {\n return this.send(\"external.setRoomConfigurationState\", state);\n }\n\n getPlanningObjectByGuid(guid: string[]): Promise<any> {\n return this.send('external.getPlanningObjectByGuid', guid);\n }\n\n selectObjectInScene(ii: number): Promise<void> {\n return this.send(\"external.selectObjectInScene\", ii);\n }\n\n deselectObjectInScene(ii: number): Promise<void> {\n return this.send(\"external.deselectObjectInScene\", ii);\n }\n\n addHighlightBox(ii: number): Promise<void> {\n return this.send(\"external.addHighlightBox\", ii);\n }\n\n removeMarker(ii: number): Promise<void> {\n return this.send(\"external.removeMarker\", ii);\n }\n\n executeCustomEvent(command: string, ii: number, parameters: any): Promise<void> {\n return this.send(\"external.executeCustomEvent\", command, ii, parameters);\n }\n\n saveUndo(parameters: { name: string }): Promise<any> {\n return this.send(\"external.dhp.saveUndo\", parameters);\n }\n\n getHRThemes() {\n return this.send(\"external.getHRThemes\");\n }\n\n setHRThemes(hash: string) {\n return this.send(\"external.setHRThemes\", hash);\n }\n\n setDisable3DText(state: boolean): Promise<void> {\n return this.send(\"external.setDisable3DText\", state);\n }\n\n //endregion\n\n //region Toolbar\n\n frontState(mode?: boolean): Promise<any> {\n return this.send(\"external.setFrontState\", mode);\n }\n\n toggleMeasurement(): Promise<any> {\n return this.send(\"external.toggleMeasurement\");\n }\n\n setAnimationMode(mode: boolean, force: boolean): Promise<any> {\n return this.send(\"external.setAnimationMode\", mode, force);\n }\n\n getAnimationStatus(): Promise<{ running: boolean; mode: boolean; }> {\n return this.send(\"external.getAnimationStatus\");\n }\n\n triggerAnimation(): Promise<any> {\n return this.send(\"external.triggerAnimation\");\n }\n\n cameraZoom(direction: number): Promise<any> {\n return this.send(\"external.cameraZoom\", direction);\n }\n\n cameraControlSetForceDeactivate(value: boolean): Promise<any> {\n return this.send(\"external.CameraControlSetForceDeactive\", value);\n }\n\n resetCameraView(animate?: boolean): Promise<any> {\n return this.send(\"external.resetCameraView\", animate);\n }\n\n setCameraZoom(parameters: IZoomParameters): Promise<any> {\n return this.send(\"external.camera.setZoom\", parameters);\n }\n\n fitCamera(parameters: ICameraFitParameters): Promise<any> {\n return this.send(\"external.camera.fitCamera\", parameters);\n }\n\n panCamera(parameters: IPanCameraParameters): Promise<any> {\n return this.send(\"external.camera.pan\", parameters);\n }\n\n setAccessories(mode: boolean): Promise<any> {\n return this.send(\"external.setAccessories\", mode);\n }\n\n undo(parameters?: { name?: string; }): Promise<any> {\n return this.send(\"external.undoDHP\", parameters);\n }\n\n redo(parameters?: { name?: string; }): Promise<any> {\n return this.send(\"external.redoDHP\", parameters);\n }\n\n //endregion\n\n //region Catalog\n\n getArticleByCategories(manufacturerOrHash: string, programOrHash: string, categories: Array<string>, limit?: number, offset?: number, width?: number, height?: number, depth?: number): Promise<IArticleData[]> {\n return this.send(\"external.getArticleByCategories\", manufacturerOrHash, programOrHash, categories, limit, offset, width, height, depth)\n .then((articleData) => {\n return articleData ? articleData[0] : [];\n });\n }\n\n getCategoriesMerged(manufacturer: string, prefix: string, startPrio: number, endPrio: number, program: string): Promise<{ category: Array<Array<string>> }> {\n // NOTE: response is the {category:[...]} object directly (not array-wrapped) — do NOT take r[0]\n return this.send(\"external.getCategoriesMerged\", manufacturer, prefix, startPrio, endPrio, program)\n .then((r) => r ?? { category: [] });\n }\n\n getEquipmentByCategories(manufacturerOrHash: string, programOrHash: string, categories: Array<string>, limit?: number, offset?: number): Promise<IArticleData | undefined> {\n return this.send(\"external.getEquipmentByCategories\", manufacturerOrHash, programOrHash, categories, limit, offset)\n .then((articleData) => {\n return articleData ? articleData[0] : undefined;\n });\n }\n\n getPossibleArticleDimensions(manufacturerOrHash: string, programOrHash: string, categories: Array<string>): Promise<IDimensionInfo> {\n return this.send(\"external.getPossibleArticleDimensions\", manufacturerOrHash, programOrHash, categories)\n .then((possibleDimensions) => {\n return possibleDimensions ? possibleDimensions[0] : {\n dimensions: {\n width: [],\n height: [],\n depth: []\n }\n };\n });\n }\n\n getText(parameters?: IGetTextParams): Promise<any> {\n return this.send(\"external.getText\", parameters);\n }\n\n getKataTreeJson(parameters?: { manufacturer: string; program: string; mergeCategories?: boolean; }): Promise<any> {\n return this.send(\"external.generic.katatree.get\", parameters);\n }\n\n getRangeInDimensions(parameters?: { manufacturer: string }): Promise<any> {\n return this.send(\"external.GetRangeInDimensions\", parameters);\n }\n\n getKataPage(pageId: string, level?: string, manufacturer?: string, program?: string, filterOptions?: IStartKataPageFilterOptions): Promise<any> {\n return this.send(\"external.StartKataPage\", pageId, level, manufacturer, program, filterOptions);\n }\n\n getKataPageHostListByCrossArticle(clientProgram: string, clientManufacturer: string, clientArticle: string, filterVzElements: boolean = true): Promise<any> {\n return this.send(\"external.GetKataPageHostListByCrossArticle\", clientProgram, clientManufacturer, clientArticle, filterVzElements);\n }\n\n openFurnplanKataPage(manufacturer: string, level1: string, level2: string): Promise<any> {\n return this.send(\"external.openFurnplanKataPage\", manufacturer, level1, level2);\n }\n\n getCatalogEnvironment(manufacturer: string, level1?: string, level2?: string): Promise<any> {\n return this.send(\"external.getCatalogEnvironment\", manufacturer, level1, level2);\n }\n\n getCatConfig(manufacturer: string, program: string): Promise<IRawCatConfig> {\n return this.send(\"external.getCatConfig\", manufacturer, program);\n }\n\n getProgramLevelTree(manufacturer: string, checkAccessibility?: boolean): Promise<IProgramLevelTree> {\n return this.send(\"external.getProgramLevelTree\", manufacturer, checkAccessibility);\n }\n\n getGenericArticleCount(parameters: { group: string; }): Promise<any> {\n return this.send(\"external.generic.articleCount\", parameters);\n }\n\n getArticlesByPropTransferId(manufacturer: string, program: string, propTransferId: string): Promise<any> {\n const parameters = {\n manufacturer: manufacturer,\n program: program,\n propTransferId: propTransferId\n }\n return this.send(\"external.getArticlesByPropTransferId\", parameters);\n }\n\n getKataPageModulesData(manu: string): Promise<any> {\n return this.send(\"external.getKataPageModulesData\", manu);\n }\n\n getProgList(manufacturer: string, withAccessList: boolean): Promise<any> {\n return this.send(\"external.getProgList\", manufacturer, withAccessList);\n }\n\n getDistinctArticleCategoryList(manufacturer: string, program: string, programGroup: string): Promise<any> {\n return this.send(\"external.getDistinctArticleCategoryList\", {\n manufacturer: manufacturer,\n program: program,\n programGroup: programGroup\n });\n }\n\n getProgImages(manufacturer: string, programs: Array<string>, kataIds: Array<string>): Promise<any> {\n return this.send(\"external.getProgImages\", manufacturer, programs, kataIds);\n }\n\n getPrintLogoPath(manufacturer: string, program: string, kataManu: string): Promise<IImageResponse> {\n return this.send(\"external.getPrintLogoPath\", manufacturer, program, kataManu);\n }\n\n loadLevel1KataInfo(manufacturer: string, program: string, levels: string[], checkActive?: boolean): Promise<any> {\n return this.send(\"external.loadLevel1KataInfo\", manufacturer, program, levels, checkActive);\n }\n\n getCategoriesByInstanceIdents(manufacturerOrHash: string, programOrHash: string, instanceIdents: Array<number>): Promise<{\n [article: string]: Array<string>;\n }> {\n return this.send(\"external.getCategoriesByInstanceIdents\", manufacturerOrHash, programOrHash, instanceIdents);\n }\n\n loadArticle(manufacturer: string, program: string, articleNo: string): Promise<any> {\n return this.send(\"external.loadArticle\", manufacturer, program, articleNo);\n }\n\n loadVZPlanning(manufacturer: string, program: string, article: string): Promise<any> {\n return this.send(\"external.loadVZPlanning\", manufacturer, program, article);\n }\n\n loadArticleWithParams(manufacturer: string, program: string, params: ILoadArticleParams, crossArticleClients?: { article: string, manu: string, prog: string }[]): Promise<any> {\n return this.send(\"external.loadArticleWithParams\", manufacturer, program, params, crossArticleClients);\n }\n\n getArtPropById(parameters: IGetArtPropParameters): Promise<IArtPropData[]> {\n return this.send(\"external.getArtPropById\", parameters);\n }\n\n getArtPropByArticle(parameters: IGetArtPropParameters): Promise<IArtPropData[]> {\n return this.send(\"external.getArtPropByArt\", parameters);\n }\n\n createStdCatalogFilterCtx(parameters: ICreateStdCatalogFilterCtxRequest): Promise<ICreateStdCatalogFilterCtxResponse> {\n return this.send(\"external.createStdCatalogFilterCtx\", parameters);\n }\n disposeCatalogFilterCtx(parameters: IDisposeCatalogFilterCtxRequest): Promise<IDisposeCatalogFilterCtxResponse> {\n return this.send(\"external.disposeCatalogFilterCtx\", parameters);\n }\n runCatalogFilterCtx(parameters: IRunStdCatalogFilterCtxRequest): Promise<IRunStdCatalogFilterCtxResponse> {\n return this.send(\"external.runCatalogFilterCtx\", parameters);\n }\n\n getMaterialCatalog(): Promise<IMaterialCatalog> {\n return this.send(\"external.getMaterialCatalog\");\n }\n\n // endregion\n\n // region Properties\n\n modifyProperty(requestJson: IModifyProperty | string | Array<IModifyProperty>, options?: IModifyPropertyOptions): Promise<any> {\n return this.send(\"external.modifyProperty\", requestJson, options);\n }\n\n switchTransferLevel(parameters: ISwitchTransferLevelOptions): Promise<any> {\n return this.send(\"external.switchTransferLevel\", parameters);\n }\n\n getRelevantPropertyKeys(returnAll?: boolean, instanceIdents?: Array<number>): Promise<any> {\n return this.send(\"external.getRelevantPropertyKeys\", returnAll, instanceIdents);\n }\n\n getRelevantProperties(manufacturer?: string, program?: string, context?: string | string[]): Promise<any> {\n return this.send(\"external.getRelevantProperties\", manufacturer, program, context);\n }\n\n getColorPickerInfo(parameters?: { manufacturer?: string; type: string; }): Promise<any> {\n return this.send(\"external.colorPicker.get\", parameters);\n }\n\n getCurrentProgProperties(parameters: IGetCurrentProgPropertiesParams): Promise<any> {\n return this.send(\"external.progProperties.getCurrentValues\", parameters);\n }\n\n async getCurrentProgPropertiesFromPlannedArticles(): Promise<any[]> {\n const obj = await this.getPlannedArticles()\n const manuProgList = (obj.map((lo) => {\n return {manu: lo.manu, prog: lo.prog, manuName: lo.manuName, progName: lo.progName}\n })\n );\n let uniqueManuProg = manuProgList.filter((element, index) => {\n return manuProgList.findIndex((e) => e.prog == element.prog) === index;\n });\n return await Promise.all(uniqueManuProg.map(async (manuProg) => {\n const progProperty = await this.getCurrentProgProperties({\n manufacturer: manuProg.manu,\n program: manuProg.prog,\n useRelevant: true,\n fullHierarchy: false,\n ignoreAccess: false\n });\n const manuProgKey = `${manuProg.manu.toLowerCase()}_${manuProg.prog.toUpperCase()}`;\n if (progProperty[manuProgKey]) {\n const extProgProperty = {\n manu: manuProg.manu,\n prog: manuProg.prog,\n manuName: manuProg.manuName,\n progName: manuProg.progName,\n properties: Array<unknown>\n };\n for (let propertyI = progProperty[manuProgKey].length - 1; propertyI >= 0; propertyI--) {\n if (progProperty[manuProgKey][propertyI].keys.length === 0) {\n progProperty[manuProgKey].splice(propertyI, 1);\n }\n }\n extProgProperty.properties = progProperty[manuProgKey].slice();\n progProperty[manuProgKey] = extProgProperty;\n }\n return progProperty;\n }));\n }\n\n getProgProperties(parameters: IGetProgPropertiesParams): Promise<any> {\n return this.send(\"external.progProperties.get\", parameters);\n }\n\n getMerkmalGroupInformation(parameters: IGetProgPropertyGroupInfoParameters): Promise<any> {\n return this.send(\"external.progProperties.getGroupInfo\", parameters);\n }\n\n getFinishParams(parameters: IGetProgPropertyFinishParams): Promise<any> {\n return this.send(\"external.progProperties.getFinishParams\", parameters);\n }\n\n showToolTipData(parameters: { type: string; data: string; manufacturer: string; }): Promise<any> {\n return this.send(\"external.progProperties.showToolTipData\", parameters);\n }\n\n getPropTransfer(parameters: IGetPropTransferParams): Promise<IPropTransferManufacturer | IPropTransferProgram | IPropTransferGroup | IPropTransferItem[]> {\n return this.send(\"external.propTransfer.get\", parameters);\n }\n\n setPropTransfer(parameters: ISetPropTransferParameters): Promise<unknown> {\n return this.send(\"external.propTransfer.set\", parameters);\n }\n\n deletePropTransfer(propTransferIDOrParameters: string | ISetPropTransferParameters, manufacturer?: string, program?: string): Promise<any> {\n if (typeof propTransferIDOrParameters === \"string\" && manufacturer && program) {\n return this.send(\"external.deletePropTransfer\", propTransferIDOrParameters, manufacturer, program);\n } else if (typeof propTransferIDOrParameters === \"object\" && !manufacturer && !program) {\n return this.send(\"external.propTransfer.delete\", propTransferIDOrParameters);\n }\n return Promise.resolve();\n }\n\n startPropTransfer(propTransferID: string): Promise<any> {\n return this.send(\"external.startPropTransfer\", propTransferID);\n }\n\n assignPropertySpecific(index: string, pickCode: string, values: Array<any>): Promise<any> {\n return this.send(\"external.assignPropertySpecific\", index, pickCode, values);\n }\n\n getDeletablePropTransfer(): Promise<unknown> {\n return this.send(\"external.propTransfer.getDeletable\");\n }\n\n initializePropertyContext(parameters: IInitProgContextParameters): Promise<any> {\n return this.send(\"external.progContext.initialize\", parameters);\n }\n\n getPropertyContext(parameters: IGetProgContextParameters): Promise<any> {\n return this.send(\"external.progContext.get\", parameters);\n }\n\n disposePropertyContext(parameters: IDisposeContextParameters): Promise<any> {\n return this.send(\"external.progContext.dispose\", parameters);\n }\n\n preloadProgram(manufacturer: string, program: string): Promise<any> {\n return this.send(\"external.preloadProgram\", manufacturer, program);\n }\n\n preloadActiveProgram(): Promise<any> {\n return this.send(\"external.preloadActiveProgram\", []);\n }\n\n getActiveStringValuesInScene(index: number, instanceIdents?: Array<number>): Promise<any> {\n return this.send(\"external.getActiveStringValuesInScene\", index, instanceIdents);\n }\n\n changeGenModule(module: string): Promise<any> {\n return this.send('external.changeGenModule', module);\n }\n\n changeToInternalProgProperty(): Promise<any> {\n return this.changeGenModule(\"__fv_internal_progproperty\");\n }\n\n useInternalProgProperties(): Promise<any> {\n return this.send('external.useInternalProgProperties');\n }\n\n getDisplayNameManuProg(manufacturer: string, program: string): Promise<any> {\n return this.send('external.getDisplayNameManuProg', manufacturer, program);\n }\n\n getManufacturerLogoNameFromPriceReference(manufacturer: string, program: string): Promise<any> {\n return this.send('external.getManufacturerLogoNameFromPriceReference', manufacturer, program);\n }\n\n getUserinterfaceManuProg(): Promise<any> {\n return this.send('external.getUserinterfaceManuProg');\n }\n\n resetCurrentUserinterfaceManuProg(): Promise<void> {\n return this.send('external.resetCurrentUserinterfaceManuProg');\n }\n\n //endregion\n\n //region Selection\n\n setSelectable(type?: string, manufacturer?: string, program?: string): Promise<any> {\n return this.send(\"external.setSelectables\", type, manufacturer, program);\n }\n\n setSelectableMultiTypes(types?: string[], manufacturer?: string, program?: string): Promise<any> {\n return this.send(\"external.setSelectablesMultiTypes\", types, manufacturer, program);\n }\n\n setSelectableMultiProg(type?: string, manufacturer?: string, program?: string[]): Promise<any> {\n return this.send(\"external.setSelectablesMultiProg\", type, manufacturer, program);\n }\n\n setSelectionActionGroup(actionGroup?: string): Promise<any> {\n return this.send(\"external.setSelectionActionGroup\", actionGroup);\n }\n\n clearSelectionHandler(): Promise<void> {\n return this.send(\"external.clearSelectionHandler\");\n }\n\n // endregion\n\n //region Sharing\n\n getShortUrl(url: string, cloudId: string): Promise<string | undefined> {\n const strippedURL = new URL(url).origin\n return this.send(\"external.getShortUrl\", UtilityService.stripQueryParameters(url), cloudId)\n .then((articleData) => {\n return articleData ? articleData[0] : undefined;\n });\n }\n\n printPDF(useLastCloudID?: boolean): Promise<any> {\n return this.send(\"external.printPDF\", useLastCloudID);\n }\n\n createCloudID(): Promise<string> {\n return this.send(\"external.createCloudID\");\n }\n\n loadInitialStateDHP(): Promise<any> {\n return this.send(\"external.loadInitialStateDHP\");\n }\n\n loadDhpByCloudID(id: string): Promise<any> {\n return this.send('external.loadDhpByCloudID', id);\n }\n\n generateExport(type: string): Promise<any> {\n return this.send(\"external.generateExport\", type);\n }\n\n downloadPDF(custom?: boolean): Promise<any> {\n return this.send(\"external.downloadPDF\", custom);\n }\n\n openCloudId(cloudId: string): Promise<any> {\n return this.send(\"external.openCloudId\", cloudId);\n }\n\n downloadScreenshot(logo?: { image: string; offset: { x: number; y: number; }; }): Promise<any> {\n return this.send(\"external.downloadScreenshot\", logo);\n }\n\n printCustomPDF(): Promise<any> {\n return this.send(\"external.printCustomPDF\");\n }\n\n sendMail(receiver: string, pdfVariant?: \"default\" | \"custom\", values?: Array<{\n key: string;\n value: string;\n }>, pdfInfo?: any): Promise<any> {\n return this.send(\"external.sendMail\", receiver, pdfVariant, values, pdfInfo);\n }\n\n shareUrl(mail: string, message: string, cloudid: string): Promise<any> {\n return this.send(\"external.shareUrl\", mail, message, cloudid, window.location.href);\n }\n\n showShareComponent(): Promise<any> {\n return this.send(\"external.showShareComponent\");\n }\n\n addToCart(externalParameters?: Array<{ parameter: string; value: string; }>): Promise<any> {\n return this.send(\"external.addToCart\", externalParameters);\n }\n\n getFurnrayImage(email?: string, parameters?: {\n ambientLight?: string;\n skyColor?: { r: string; g: string; b: string; };\n }): Promise<IFurnrayImage> {\n return this.send(\"external.renderFurnrayImage\", email, parameters);\n }\n\n\n public async takeSnap(width = 1920, height = 1080, mimeType = \"image/jpeg\", quality = 0.92, asBase64 = false, logo?: string, beforeSnap?: () => Promise<void>, afterSnap?: () => Promise<void>) {\n const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n return externalFunction.snap.takeSnap(width, height, mimeType, quality, asBase64, logo, beforeSnap, afterSnap);\n }\n\n public async takeCenteredSnap(frontState = true, zoomOffset = 0, width: number | undefined = undefined, height: number | undefined = undefined, type = \"image/jpeg\", quality = 0.92, asBase64 = false) {\n return await this.send(\"external.takeCenteredSnap\", frontState, zoomOffset, width, height, type, quality, asBase64);\n }\n\n async getARExport(): Promise<IARExportData> {\n const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n return externalFunction.WebARService.showARViewer();\n }\n\n async isARCapable(): Promise<boolean> {\n const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n return externalFunction.WebARService.isARCapable();\n }\n\n async preloadARModel(): Promise<void> {\n const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n return externalFunction.WebARService.preloadARModel();\n }\n\n async startAR(preload?: boolean): Promise<boolean> {\n const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n if(preload) await this.preloadARModel();\n return externalFunction.WebARService.startAR();\n }\n\n getErpFiles(cloudId_: string, type_: number, password_: string, returnAsFile_: boolean = true, wawiManufacturer_: string = \"\"): Promise<IGetErpFiles> {\n return this.send(\"external.getErpFiles\", cloudId_, type_, password_, returnAsFile_, wawiManufacturer_);\n }\n\n getStoreTree(): Promise<IStoreTree> {\n return this.send(\"external.getStoreTree\");\n }\n\n getWebshopLink(): Promise<string | undefined> {\n return this.send(\"external.getWebshopLink\");\n }\n\n //endregion\n\n //region Placer\n\n fittingReset(): Promise<any> {\n return this.send(\"external.fitting.reset\");\n }\n\n fittingRemove(): Promise<any> {\n return this.send(\"external.fitting.remove\");\n }\n\n fittingMove(): Promise<any> {\n return this.send(\"external.fitting.move\");\n }\n\n loadFitting(manufacturer: string, program: string, articleNo: string): Promise<any> {\n return this.send(\"external.loadArticle\", manufacturer, program, articleNo);\n }\n\n GetAvailableFittingElementsFromScene(): Promise<any> {\n return this.send(\"external.GetAvailableFittingElementsFromScene\");\n }\n\n placePO(parameters: IExternalPlacerParameter): Promise<any> {\n return this.send(\"external.placePO\", parameters);\n }\n\n setPlacerGroup(manufacturer: string, program: string, placerGroupID: string, mode: boolean, overrideMode?: OverrideMode): Promise<any> {\n return this.send('external.setPlacerGroup', manufacturer, program, placerGroupID, mode, overrideMode);\n }\n\n setPlacerGroupSwitch(GroupID: string, switchID: string, value: string): Promise<any> {\n return this.send('external.setPlacerGroupSwitch', GroupID, switchID, value);\n }\n\n getPlacerGroupSwitch(GroupID: string, switchID: string): Promise<any> {\n return this.send('external.getPlacerGroupSwitch', GroupID, switchID);\n }\n\n rearrangeAllPlacerGroups(): Promise<any> {\n return this.send('external.rearrangeAllPlacerGroups');\n }\n\n replaceArticlesByCategories(articleData: {\n article: string;\n manufacturer: string;\n program: string;\n }, replaceData: IPlacerReplaceData): Promise<any> {\n return this.send('external.replaceArticlesByCategories', articleData, replaceData);\n }\n\n setPlacerMode(placer: boolean, vPlacer: boolean): Promise<any> {\n return this.send('external.setPlacerMode', placer, vPlacer);\n }\n\n setVPlacerContextInfoData(json: any): Promise<any> {\n return this.send(\"external.setVPlacerContextInfoData\", json);\n }\n\n getPossiblePlacerGroups(): Promise<IPossiblePlacerGroupResponse> {\n return this.send(\"external.getPossiblePlacerGroups\", []);\n }\n\n createPlacerGroup(requestData: ICreatePlacerGroupRequest): Promise<any> {\n return this.send(\"external.createPlacerGroup\", requestData);\n }\n\n // endregion\n\n //region WebCab\n\n PerformWebCabCommand(json: any): Promise<any> {\n return this.send(\"external.PerformWebCabCommand\", json);\n }\n\n executeHTMLMessage(container: string, command: string, payload: object, ignorePriceChange?: boolean, ignoreSceneUpdate?: boolean): Promise<any> {\n return this.send(\"external.executeHTMLMessage\", container, command, payload, ignorePriceChange, ignoreSceneUpdate);\n }\n\n executeWebCabApiMessage(command: string, payload: object, callSceneUpdate: boolean): Promise<any> {\n return this.send(\"external.executeWebCabApiMessage\", command, payload, callSceneUpdate);\n }\n\n getHTMLComponent(url: string, parentNode: HTMLElement, append?: boolean): Promise<void> {\n // await this.nodeDefer;\n // //@ts-ignore\n // return RequestHelperService.get(window.g_node_url_prefix + url_)\n // .then(async (html) => {\n // if (append_) {\n // let div = document.createElement(\"div\")\n // parentNode_.appendChild(div);\n // div.innerHTML = await html.text();\n // this.exec_body_scripts(div);\n // } else {\n // parentNode_.innerHTML = await html.text();\n // this.exec_body_scripts(parentNode_);\n // }\n // });\n throw new Error(\"not implemented!\") // Probably unused\n }\n\n //endregion\n\n //region SceneConfig\n\n showRegister(register: string): Promise<any> {\n return this.send(\"external.showRegister\", register);\n }\n\n getCurrency(): Promise<any> {\n return this.send(\"external.getCurrency\", []);\n }\n\n getDimensionScale(): Promise<any> {\n return this.send(\"external.getDimensionScale\", []);\n }\n\n getDimensionDigits(): Promise<any> {\n return this.send(\"external.getDimensionDigits\", []);\n }\n\n getPlanningContactInfo(): Promise<any> {\n return this.send(\"external.getPlanningContactInfo\", []);\n }\n\n getAppConnectionData(): Promise<IPriceData> {\n return this.send(\"external.getAppConnectionData\", []);\n }\n\n getDeviceType(): Promise<any> {\n return this.send(\"external.getDeviceType\");\n }\n\n getCountryInfo(): Promise<any> {\n return this.send(\"external.getCountryInfo\");\n }\n\n //endregion\n\n //region AdditionalPositions\n\n AddNeutralArticle(article: AddNeutralAdditionalPositionParams): Promise<AdditionalPositionsResult> {\n return this.send(\"external.addNeutralArticle\", article);\n }\n DeleteArticle(params: DeleteAdditionalPositonsParams): Promise<AdditionalPositionsResult> {\n return this.send(\"external.deleteAdditionalPositons\", params);\n }\n GetArticleList(): Promise<AdditionalPositionsResult> {\n return this.send(\"external.getArticleList\", []);\n }\n\n //endregion\n\n}\n\nexport const CommunicationMessageService = new CommunicationMessageServiceClass()\nwindow.CommunicationMessageService = CommunicationMessageService;\n","import {IConfiguratorApiData, IConfiguratorApiSetParams} from \"@dh-software/webui-types\";\r\n\r\nimport { CommunicationMessageService } from \"./communication-message.service\";\r\nimport { EventService } from \"./event.service\";\r\n\r\nclass ConfiguratorApiServiceClass {\r\n private async ExcecuteApiCommand(command_: string, payload_: object, ignorePriceChange_: boolean, ignoreSceneUpdate_: boolean): Promise<IConfiguratorApiData> {\r\n const result = await CommunicationMessageService.executeHTMLMessage(\"ConfiguratorApi\", command_, payload_, ignorePriceChange_, ignoreSceneUpdate_);\r\n return Object.fromEntries(result.entries);\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n public async GetApiData(preventRefresh = false, preventRegenAll = false): Promise<IConfiguratorApiData> {\r\n return await this.ExcecuteApiCommand(\"ConfiguratorApiMessage_GetApiData\", {\r\n \"prevent-refresh\": preventRefresh,\r\n \"prevent-regen-all\": preventRegenAll\r\n }, preventRefresh, preventRefresh);\r\n }\r\n\r\n public async SetApiData(setParams: IConfiguratorApiSetParams, ignorePriceChange = false): Promise<IConfiguratorApiData> {\r\n const promise = this.ExcecuteApiCommand(\"ConfiguratorApiMessage_SetApiData\", setParams, ignorePriceChange, false);\r\n\r\n let isSettled = false;\r\n\r\n const timerId = setTimeout(() => {\r\n if (!isSettled) {\r\n EventService.emit(\"configurator-api-fetch\", { promise });\r\n }\r\n }, 400);\r\n\r\n try {\r\n const data = await promise;\r\n return data;\r\n } finally {\r\n isSettled = true;\r\n clearTimeout(timerId);\r\n }\r\n }\r\n}\r\n\r\nexport const ConfiguratorApiService = new ConfiguratorApiServiceClass();\r\n","import {DragDirection, IDragOptions} from \"@dh-software/webui-types\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {WebViewerService} from \"./web-viewer.service\";\nimport { ConfigurationService } from \"./configuration.service\";\n\nclass DragDropElement {\n constructor(private _element: HTMLElement, private _dragInfo: IDragOptions, private _scrollableParent?: HTMLElement) {\n }\n\n get Element(): Element {\n return this._element;\n }\n\n get DragInfo(): IDragOptions {\n return this._dragInfo;\n }\n\n get ScrollableParent(): Element | undefined {\n return this._scrollableParent;\n }\n}\n\nclass DragDropServiceClass {\n private _elements: Array<DragDropElement> = [];\n private _isDragging: boolean = false;\n private _startPosition: { x: number, y: number, orgX: number, orgY: number } = {x: 0, y: 0, orgX: 0, orgY: 0};\n private _currentPosition: { x: number, y: number, orgX: number, orgY: number } = {x: 0, y: 0, orgX: 0, orgY: 0};\n private MOVE_TOLERANCE: number = 30;\n // Half-angle (in degrees) of the cone around the drag axis that still counts as a drag rather\n // than a scroll on touch. 40° means any finger gesture within 40° of the drag axis (the axis\n // perpendicular to the scrollable one) starts a drag; only gestures leaning further than that\n // toward the scroll axis scroll the list. Raised from the old implicit 30° because near-diagonal\n // drags were too often swallowed as barely-visible scrolls.\n private DRAG_PLAY_ANGLE: number = 40;\n private isTouch: boolean = false;\n private _dragImage?: HTMLImageElement;\n private _configDefer: IDeferHelperClass;\n private _cancelDirection: DragDirection = DragDirection.Vertical;\n private _currentDragDropElement?: DragDropElement;\n\n constructor() {\n this._configDefer = DeferHelperClass();\n ConfigurationService.Configuration.then((configuration) => {\n if (configuration?.dragdrop_canceldirection !== undefined) {\n this._cancelDirection = +configuration.dragdrop_canceldirection;\n }\n this._configDefer.resolve();\n });\n }\n\n get DragImage(): HTMLImageElement {\n if (!this._dragImage) {\n this._dragImage = document.createElement(\"img\");\n this._dragImage.id = \"iframe-drag-image\";\n this._dragImage.classList.add(\"hidden\");\n }\n if (!this._dragImage.parentNode) {\n document.body.appendChild(this._dragImage);\n }\n return this._dragImage;\n }\n\n private disabledScrollingOnMoveEvent = (e: any) => {\n e.preventDefault();\n return false;\n }\n\n private downEvent = (e: MouseEvent | TouchEvent) => {\n const currentElement = e.currentTarget as Element;\n const dragElement = this._elements.find(((element: DragDropElement) => {\n return element.Element === currentElement;\n }));\n if (dragElement) {\n this._currentDragDropElement = dragElement;\n }\n if (this._currentDragDropElement) {\n this.isTouch = (e as TouchEvent).touches && (e as TouchEvent).touches.length > 0;\n this._startPosition = this.getPosition(e);\n this._currentPosition = this._startPosition;\n\n if (!this._isDragging) {\n document.addEventListener(\"mouseup\", this.upEvent);\n document.addEventListener(\"touchend\", this.upEvent);\n document.addEventListener(\"mousemove\", this.moveEvent);\n document.addEventListener(\"touchmove\", this.moveEvent, {\n passive: false\n });\n }\n }\n }\n\n private upEvent = (e: any) => {\n document.removeEventListener(\"mouseup\", this.upEvent);\n document.removeEventListener(\"touchend\", this.upEvent);\n document.removeEventListener(\"mousemove\", this.moveEvent);\n document.removeEventListener(\"touchmove\", this.moveEvent);\n if (this._isDragging && this._currentDragDropElement) {\n if (this._currentDragDropElement.ScrollableParent && this.isTouch) {\n this._currentDragDropElement.ScrollableParent.removeEventListener(\"touchmove\", this.disabledScrollingOnMoveEvent);\n }\n this._isDragging = false;\n this.endDrag({position: this.getPosition(e)})\n }\n this._currentDragDropElement = undefined;\n };\n\n private getCancelDirection(): DragDirection {\n if (this._currentDragDropElement && this._currentDragDropElement.ScrollableParent) {\n const scrollable = this._currentDragDropElement.ScrollableParent;\n const styles = window.getComputedStyle(scrollable);\n\n // An axis only actually scrolls when its overflow is \"auto\"/\"scroll\" AND the content\n // is larger than the box. fv-scroll-aware-container sets \"auto\" on BOTH axes, so the\n // old `overflowY !== \"hidden\"` test wrongly reported \"both directions\" and fell back\n // to the AUC setting even when the list only scrolls vertically.\n const canScrollVertically = (styles.overflowY === \"auto\" || styles.overflowY === \"scroll\")\n && scrollable.scrollHeight > scrollable.clientHeight;\n const canScrollHorizontally = (styles.overflowX === \"auto\" || styles.overflowX === \"scroll\")\n && scrollable.scrollWidth > scrollable.clientWidth;\n\n if (canScrollVertically && canScrollHorizontally) {\n console.warn(\"DragDropHelper: Scrollable parent can be scrolled in both directions! No Cancel in either direction... Falling back to setting from AUC.\");\n return this._cancelDirection;\n }\n if (canScrollVertically) {\n return DragDirection.Vertical;\n }\n if (canScrollHorizontally) {\n return DragDirection.Horizontal;\n }\n }\n return this._cancelDirection;\n }\n\n private moveEvent = (e: any) => {\n e.cancelBubble = true;\n e.stopPropagation();\n e.preventDefault();\n this._currentPosition = this.getPosition(e);\n if (!this._isDragging && this.getLength() > this.MOVE_TOLERANCE) {\n // Direction-based cancel only makes sense for touch: a finger drag along the scroll axis\n // should scroll the list, not start a drag. On desktop the user scrolls with the\n // wheel/scrollbar, so there is no drag-vs-scroll conflict — any drag past the tolerance\n // should start a drag regardless of direction.\n if (this.isTouch && this.isScrollGesture()) {\n return this.upEvent(e);\n }\n\n if (!this._currentDragDropElement) {\n return;\n }\n\n if (this._currentDragDropElement.ScrollableParent && this.isTouch) {\n this._currentDragDropElement.ScrollableParent.addEventListener(\"touchmove\", this.disabledScrollingOnMoveEvent);\n }\n\n let data: IDragOptions = {\n id: this._currentDragDropElement.DragInfo.id,\n mode: this._currentDragDropElement.DragInfo.mode,\n type: this._currentDragDropElement.DragInfo.type,\n extData: this._currentDragDropElement.DragInfo.extData,\n options: this._currentDragDropElement.DragInfo.options\n };\n if (this._currentDragDropElement.DragInfo.dragType) {\n data.size = this._currentDragDropElement.DragInfo.size;\n data.pickLevel = this._currentDragDropElement.DragInfo.pickLevel;\n }\n\n this.startDrag({\n element: this._currentDragDropElement.Element,\n image: this._currentDragDropElement.Element.getAttribute(\"drag-image\") || \"\",\n data: data,\n mode: data.dragType ? data.dragType : data.type,\n position: this._startPosition,\n });\n this._isDragging = true;\n } else if (this._isDragging) {\n this.sendDrag({position: this._currentPosition});\n }\n return false;\n }\n\n private getPosition = (e: any) => {\n let x = e.pageX;\n let y = e.pageY;\n\n if (e.touches && e.touches.length > 0) {\n x = e.touches[0].pageX\n y = e.touches[0].pageY\n }\n if (e.changedTouches && e.changedTouches.length > 0) {\n x = e.changedTouches[0].pageX\n y = e.changedTouches[0].pageY\n }\n const rect = WebViewerService.FurnviewWebViewer.getBoundingClientRect();\n return {x: x - rect.left, y: y - rect.top, orgX: x, orgY: y};\n }\n\n private setImagePos(x: number, y: number) {\n this.DragImage.style.left = (x + 3) + \"px\";\n this.DragImage.style.top = (y + 3) + \"px\";\n }\n\n private showImage() {\n this.DragImage.classList.remove(\"hidden\");\n }\n\n private hideImage() {\n this.DragImage.classList.add(\"hidden\");\n this.DragImage.remove();\n }\n\n public setImageSrc(src_: string) {\n this.hideImage();\n let img = new Image();\n img.src = src_ || \"\";\n img.onload = () => {\n if (img.width < img.height) {\n this.DragImage.classList.add(\"high\");\n this.DragImage.classList.remove(\"wide\");\n } else {\n this.DragImage.classList.add(\"wide\");\n this.DragImage.classList.remove(\"high\");\n }\n this.DragImage.src = src_;\n if (this._isDragging) {\n this.showImage();\n }\n };\n img.onerror = () => {\n this.DragImage.src = \"\";\n this.hideImage();\n }\n }\n\n private startDrag(parameters_: {\n element: Element,\n mode: number | string,\n image?: string,\n data: IDragOptions,\n position: { x: number, y: number, orgX: number, orgY: number }\n }) {\n WebViewerService.FurnviewWebViewer.classList.add(\"noneAction\");\n if (parameters_.image) {\n this.setImageSrc(parameters_.image);\n }\n this.setImagePos(parameters_.position.orgX, parameters_.position.orgY);\n if (parameters_.data.size && parameters_.data.size instanceof Function) parameters_.data.size = parameters_.data.size();\n // this.showImage();\n WebViewerService.postMessage(\"furnplan.dragStart\", [parameters_.mode, parameters_.data, parameters_.position, \"\"]);\n WebViewerService.dispatch(\"webui.scene-interaction-started\", []);\n WebViewerService.dispatch(\"webui.start-drag\", [parameters_]);\n }\n\n private sendDrag(parameters_: { position: { x: number, y: number, orgX: number, orgY: number } }) {\n this.setImagePos(parameters_.position.orgX, parameters_.position.orgY);\n WebViewerService.postMessage(\"furnplan.dragMove\", [parameters_.position])\n WebViewerService.dispatch(\"webui.move-drag\", [parameters_.position]);\n }\n\n private endDrag(parameters_: { position: { x: number, y: number, orgX: number, orgY: number } }) {\n this.setImagePos(parameters_.position.orgX, parameters_.position.orgY);\n this.hideImage();\n WebViewerService.postMessage(\"furnplan.dragEnd\", [parameters_.position])\n WebViewerService.FurnviewWebViewer.classList.remove(\"noneAction\");\n WebViewerService.dispatch(\"webui.end-drag\", [parameters_.position]);\n }\n\n private getLength(): number {\n return Math.sqrt((this._currentPosition.x - this._startPosition.x) * (this._currentPosition.x - this._startPosition.x)\n + (this._currentPosition.y - this._startPosition.y) * (this._currentPosition.y - this._startPosition.y));\n }\n\n private isScrollGesture(): boolean {\n const length = this.getLength();\n if (length === 0) {\n return false;\n }\n\n const cancelDirection = this.getCancelDirection();\n if (cancelDirection !== DragDirection.Vertical && cancelDirection !== DragDirection.Horizontal) {\n return false; // no definite scroll axis — never cancel a drag by direction\n }\n\n // How much of the gesture runs along the scrollable axis, normalised to [0, 1]\n // (0 = perpendicular to the scroll axis = a clean drag, 1 = straight along it = a clean scroll).\n const movementAlongScrollAxis = cancelDirection === DragDirection.Vertical\n ? Math.abs(this._startPosition.orgY - this._currentPosition.orgY) / length\n : Math.abs(this._startPosition.orgX - this._currentPosition.orgX) / length;\n\n // sin(playAngle) is the along-scroll-axis component at exactly the play boundary. Below it the\n // gesture sits inside the drag cone (drag); at or above it the gesture leans far enough toward\n // the scroll axis to count as a scroll. e.g. 40° → 0.643, so an angle-from-drag-axis < 40° drags.\n const playBoundary = Math.sin(this.DRAG_PLAY_ANGLE * Math.PI / 180);\n return movementAlongScrollAxis >= playBoundary;\n }\n\n private fixChildImages(element_: Element) {\n const images = element_.querySelectorAll(\"img\");\n for (let imgI = 0; imgI < images.length; imgI++) {\n images[imgI].style.userSelect = \"none\";\n images[imgI].style.webkitUserSelect = \"none\";\n // @ts-ignore\n images[imgI].style.mozUserSelect = \"none\";\n images[imgI].addEventListener(\"dragstart\", (e) => {\n e.preventDefault();\n })\n }\n }\n\n public cleanUp() {\n this._elements = this._elements.filter((element: DragDropElement) => {\n if (!element.Element) {\n return false;\n }\n let parentNode: Node | null = element.Element.parentNode;\n while (parentNode) {\n parentNode = parentNode.parentNode;\n if (parentNode instanceof DocumentFragment || parentNode instanceof Document) {\n return true;\n }\n }\n return false;\n });\n }\n\n public removeElement(element_: HTMLElement) {\n const index = this._elements.findIndex((element) => {\n if (element_ === element.Element) {\n return true;\n }\n });\n if (index !== -1) {\n this._elements.splice(index, 1);\n element_.removeEventListener(\"mousedown\", this.downEvent);\n element_.removeEventListener(\"touchstart\", this.downEvent)\n }\n }\n\n public async addElement(element_: HTMLElement, data_: IDragOptions, scrollableParent_?: HTMLElement, cleanup_ = true) {\n await this._configDefer;\n if (cleanup_) this.cleanUp();\n requestAnimationFrame(() => {\n setTimeout(() => {\n this.fixChildImages(element_);\n }, 50);\n });\n element_.addEventListener(\"mousedown\", this.downEvent);\n element_.addEventListener(\"touchstart\", this.downEvent);\n const element = new DragDropElement(element_, data_, scrollableParent_);\n this._elements.push(element);\n }\n}\nexport const DragDropService = new DragDropServiceClass();\n","import {WebViewerService} from \"./web-viewer.service\";\n\ninterface IListener {\n register: (callback: (...args: Array<unknown>) => void | Promise<any>) => void;\n unregister: (callback: (...args: Array<unknown>) => void | Promise<any>) => void;\n}\n\nclass EventFactoryServiceClass {\n public readonly LastPOLoaded!: IListener;\n public readonly VPlacerCancel!: IListener;\n public readonly RefreshPropertyPanel!: IListener;\n public readonly ChangePrice!: IListener;\n public readonly DeleteLO_before!: IListener;\n public readonly DeleteLO_after!: IListener;\n public readonly CameraOnDirty!: IListener;\n public readonly CameraOnStart!: IListener;\n public readonly CameraOnEnd!: IListener;\n public readonly SendEvent!: IListener;\n public readonly SelectionChanged!: IListener;\n public readonly ModalWindowShown!: IListener;\n public readonly ModalWindowHidden!: IListener;\n public readonly CustomIcon_ExecuteCustomEvent!: IListener;\n public readonly ToolbarButtonStateToggled!: IListener;\n //PropTransfer\n public readonly PropTransfer_afterDelete!: IListener;\n public readonly PropTransfer_afterSet!: IListener;\n public readonly PropTransfer_beforeDelete!: IListener;\n public readonly PropTransfer_beforeSet!: IListener;\n public readonly PropTransfer_afterStart!: IListener;\n public readonly PossibleDestinationValues_afterSet!: IListener;\n //WallFitting\n public readonly WallFitting_begin!: IListener;\n public readonly WallFitting_end!: IListener;\n public readonly WallFitting_cancel!: IListener;\n\n private _events = [\n //PropTransfer\n {eventName: \"PropTransfer_afterDelete\", event: \"furnview.proptransfer_afterDelete\"},\n {eventName: \"PropTransfer_afterSet\", event: \"furnview.proptransfer_afterSet\"},\n {eventName: \"PropTransfer_beforeDelete\", event: \"furnview.PropTransfer_beforeDelete\"},\n {eventName: \"PropTransfer_beforeSet\", event: \"furnview.PropTransfer_beforeSet\"},\n {eventName: \"PropTransfer_afterStart\", event: \"furnview.PropTransfer_afterStart\"},\n {eventName: \"PossibleDestinationValues_afterSet\", event: \"furnview.PossibleDestinationValues_afterSet\"},\n\n //WallFitting\n {eventName: \"WallFitting_begin\", event: \"furnview.wallfitting_begin\"},\n {eventName: \"WallFitting_end\", event: \"furnview.wallfitting_end\"},\n {eventName: \"WallFitting_cancel\", event: \"furnview.wallfitting_cancel\"},\n\n {eventName: \"LastPOLoaded\", event: \"furnview.onLastPOLoaded\"},\n {eventName: \"VPlacerCancel\", event: \"furnview.onVPlacerCancel\"},\n {eventName: \"RefreshPropertyPanel\", event: \"furnview.refreshPropertyPanel\"},\n {eventName: \"ChangePrice\", event: \"furnview.changePrice\"},\n {eventName: \"DeleteLO_before\", event: \"furnview.deleteLO.before\"},\n {eventName: \"DeleteLO_after\", event: \"furnview.deleteLO.after\"},\n {eventName: \"CameraOnDirty\", event: \"furnview.cameraOnDirty\"},\n {eventName: \"CameraOnStart\", event: \"furnview.cameraOnStart\"},\n {eventName: \"CameraOnEnd\", event: \"furnview.cameraOnEnd\"},\n {eventName: \"SendEvent\", event: \"furnplan.sendEvent\"},\n {eventName: \"SelectionChanged\", event: \"furnview.onSelectionChanged\"},\n {eventName: \"ModalWindowShown\", event: \"furnview.modalWindowShown\"},\n {eventName: \"ModalWindowHidden\", event: \"furnview.modalWindowHidden\"},\n {eventName: \"CustomIcon_ExecuteCustomEvent\", event: \"furnview.CustomIcon_ExecuteCustomEvent\"},\n {eventName: \"ToolbarButtonStateToggled\", event: \"furnview.toolbarButtonStateToggled\"}\n ];\n\n constructor() {\n this.initializeEvents();\n }\n\n private initializeEvents() {\n this._events.forEach((value: { event: string, eventName: string }) => {\n // @ts-ignore\n this[value.eventName] = {\n register: (callback: () => void | Promise<any>) => {\n WebViewerService.on(value.event, callback);\n },\n unregister: (callback: () => void | Promise<any>) => {\n WebViewerService.off(value.event, callback);\n }\n }\n });\n }\n}\nexport const EventFactoryService = new EventFactoryServiceClass();\n","import {ConfigurationService} from \"./configuration.service\";\nimport {WebViewerService} from \"./web-viewer.service\";\n\ndeclare global {\n interface Window {\n dataLayer: any[];\n }\n}\n\nconst gtmScript = `\n<!-- Google Tag Manager -->\n(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n})(window,document,'script','dataLayer','{{key}}');\n<!-- End Google Tag Manager -->\n`\n\nclass GoogleAnalyticsServiceClass {\n\n constructor(){\n document.addEventListener(\"DOMContentLoaded\", async () => {\n await this.add();\n })\n }\n\n private async add() {\n const config: {[p:string]: any} = await ConfigurationService.Configuration\n await WebViewerService.IsAppReady;\n if (config.gtm_setup && config.gtm_setup.isActive) {\n const key: string = config.gtm_setup.key;\n const script = document.createElement(\"script\");\n script.innerHTML = gtmScript.replace(\"{{key}}\", key);\n document.head.prepend(script);\n }\n }\n\n public async push(data: {event: string, [key:string]: unknown}) {\n const config: {[p:string]: any} = await ConfigurationService.Configuration\n if (config.gtm_setup && config.gtm_setup.isActive) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(data);\n }\n }\n}\nexport const GoogleAnalyticsService = new GoogleAnalyticsServiceClass();\n","import {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {RequestService} from \"./request.service\";\n\ninterface GRecaptcha {\n render(element: HTMLElement, options?: any): number;\n reset(instance: number): void;\n}\n\ndeclare global {\n interface Window {\n onReCaptchaSolved: (token: string) => Promise<void>;\n onReCaptchaLoaded: () => void;\n g_reCaptcha: string;\n grecaptcha: GRecaptcha;\n }\n}\n\nclass GoogleCapchaServiceClass {\n private isCreated: IDeferHelperClass = DeferHelperClass();\n private validated: IDeferHelperClass = DeferHelperClass();\n private currentElement: any;\n private needValidation = true;\n private instance = -1;\n\n get IsCreated(): IDeferHelperClass {\n return this.isCreated;\n }\n\n public get Validating(): Promise<void> {\n return this.validated;\n }\n\n public get needsValidation(): boolean {\n return this.needValidation;\n }\n\n constructor() {\n window.onReCaptchaLoaded = () => {\n this.IsCreated.resolve();\n };\n window.onReCaptchaSolved = async (token: string) => {\n await this.checkReCaptcha(token);\n }\n }\n\n private async checkReCaptchaRequest(token: string) {\n try {\n const response = (await RequestService.post(RequestService.setQuery(\"/re-captcha/check\"), JSON.stringify({token})));\n\n if (response.ok) {\n const json = await response.json();\n\n return json.ok;\n } else {\n console.error(\"Unable to check Re Captcha\");\n\n return false;\n }\n } catch (e) {\n console.error(\"Unable to check Re Captcha\");\n console.error(e);\n\n return false;\n }\n }\n\n private async checkReCaptcha(token: string) {\n const isOk = await this.checkReCaptchaRequest(token);\n\n if (isOk) {\n //@ts-ignore\n this.validated.resolve([true]);\n this.needValidation = false;\n }\n }\n\n public createCaptcha(parentNode: Element) {\n if (!window.g_reCaptcha) {\n // if no Re Captcha Key was specified, simply pass the test\n this.validated.resolve([true]);\n this.needValidation = false;\n\n return;\n }\n\n if (parentNode) {\n this.currentElement = document.createElement(\"div\");\n\n this.currentElement.classList.add(\"g-recaptcha\");\n //@ts-ignore\n this.currentElement.setAttribute(\"data-sitekey\", window.g_reCaptcha);\n this.currentElement.setAttribute(\"data-callback\", \"onReCaptchaSolved\");\n\n const scriptElement = document.createElement(\"script\");\n\n scriptElement.setAttribute(\"src\", \"https://www.google.com/recaptcha/api.js?onload=onReCaptchaLoaded&render=explicit\");\n scriptElement.setAttribute(\"async\", \"\");\n scriptElement.setAttribute(\"defer\", \"\");\n\n\n parentNode.appendChild(this.currentElement);\n parentNode.appendChild(scriptElement);\n }\n }\n\n public async validate() {\n await this.isCreated;\n if (this.currentElement) {\n requestAnimationFrame(() => {\n if (this.instance > -1) {\n window.grecaptcha.reset(this.instance);\n } else {\n this.instance = window.grecaptcha.render(this.currentElement, {sitekey: window.g_reCaptcha});\n }\n });\n }\n }\n}\n\nexport const GoogleCapchaService = new GoogleCapchaServiceClass();\n","interface ObserverCallbacks {\n \"NodeObserved\": (node: Node, attribute: string, recordAttribute: string) => void;\n \"NodeAdded\": (node: Node) => void;\n \"NodeRegistered\": (node: Node) => void;\n}\n\nexport class Observer {\n\n private _mutationObserver = new MutationObserver((records: MutationRecord[]) => {\n this.observation(records);\n });\n private _observees: Array<Node> = [];\n private _callbacks = new Map<keyof ObserverCallbacks, ObserverCallbacks[keyof ObserverCallbacks]>();\n private _attributes = new Array<string>()\n\n constructor(attributes_: Array<string>) {\n this._attributes = attributes_;\n }\n\n public addNode(node_: Node) {\n if (node_.nodeType == Node.DOCUMENT_NODE || node_.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {\n this._register(node_);\n }\n const shadowRoot = (node_ as HTMLElement).shadowRoot;\n if (shadowRoot) {\n this._register(shadowRoot);\n }\n }\n\n public unregisterCallback(name: keyof ObserverCallbacks): boolean {\n return this._callbacks.delete(name);\n }\n\n private runCallback<K extends keyof ObserverCallbacks>(name: K, parameters: Parameters<ObserverCallbacks[K]>): void {\n const callback = this._callbacks.get(name)\n if (callback) {\n // @ts-ignore\n callback(...parameters);\n }\n }\n\n private checkLocalesAttribute(attribute_: string): string {\n for (const sourceAttribute of this.Attributes) {\n if (attribute_.includes(sourceAttribute)) return sourceAttribute;\n }\n return \"\";\n }\n\n private observation(mutationRecords_: Array<MutationRecord>) {\n const filteredRecords = new Array<MutationRecord>();\n mutationRecords_.forEach((record: MutationRecord) => {\n if (!filteredRecords.includes(record)) {\n filteredRecords.push(record);\n }\n });\n\n for (const record of filteredRecords) {\n if (record.attributeName) {\n const localesAttributeName = this.checkLocalesAttribute(record.attributeName);\n if (localesAttributeName.length > 0) {\n this.runCallback(\"NodeObserved\", [record.target, localesAttributeName, record.attributeName]);\n }\n }\n\n if (record.addedNodes) {\n record.addedNodes.forEach((node_) => {\n this.runCallback(\"NodeAdded\", [node_]);\n });\n }\n }\n this.CleanUpNodes();\n }\n\n\n private _register(node: Node) {\n if (!this.Observees.includes(node)) {\n this.Observees.push(node);\n this.Observer.observe(node, this.ObserverInit);\n this.runCallback(\"NodeRegistered\", [node]);\n }\n }\n\n private removeNode(node_: Node) {\n const index = this.Observees.indexOf(node_);\n if (index > -1) {\n this.Observees.splice(index, 1);\n }\n }\n\n private CleanUpNodes() {\n const disconnectedElements = new Array<Node>();\n for (const observee of this.Observees) {\n if (!observee.isConnected) {\n disconnectedElements.push(observee);\n }\n }\n\n if (disconnectedElements.length > 0) {\n for (const disconnectedElement of disconnectedElements) {\n this.removeNode(disconnectedElement);\n }\n this.Observer.disconnect();\n for (const observee of this.Observees) {\n this.Observer.observe(observee, this.ObserverInit);\n }\n }\n }\n\n public registerCallback<K extends keyof ObserverCallbacks>(name: K, callback: ObserverCallbacks[K]): void {\n this._callbacks.set(name, callback);\n }\n\n public get Attributes(): Array<string> {\n return this._attributes;\n }\n\n public get Observees(): Array<Node> {\n return this._observees;\n }\n\n protected get ObserverInit() {\n return {attributes: true, childList: true, subtree: true};\n }\n\n public get Observer(): MutationObserver {\n return this._mutationObserver\n }\n\n}\n","export class LocaleStorage {\n private activeLangCode: string;\n private readonly defaultLangCode: string;\n\n constructor(private readonly storageKey: string, defaultLang: string = \"de\") {\n this.defaultLangCode = defaultLang;\n this.activeLangCode = this._loadLanguage();\n }\n\n private _loadLanguage(): string {\n try {\n const urlLang = new URL(window.location.href).searchParams.get(\"lang\");\n if (urlLang) {\n this._saveLanguage(urlLang);\n return urlLang;\n }\n } catch (e) { }\n const storedLang = localStorage.getItem(this.storageKey);\n if (storedLang) {\n return storedLang;\n }\n\n if (navigator.language) {\n const browserLang = navigator.language.split('-')[0];\n this._saveLanguage(browserLang);\n return browserLang;\n }\n this._saveLanguage(this.defaultLangCode);\n return this.defaultLangCode;\n }\n\n private _saveLanguage(langCode: string): void {\n localStorage.setItem(this.storageKey, langCode);\n }\n\n public getLanguage(): string {\n return this.activeLangCode;\n }\n\n public setLanguage(langCode: string): string {\n this.activeLangCode = langCode;\n this._saveLanguage(langCode);\n return this.activeLangCode;\n }\n}\n","import {DeferHelperClass, IDeferHelperClass} from \"./defer.class\";\nimport {\n IRequestService,\n IUtilityService,\n LanguageStatus,\n LocaleFile,\n LocaleList,\n LocaleOverride\n} from \"@dh-software/webui-types\";\n\nexport class LocaleReader {\n\n private _readDefer?: IDeferHelperClass;\n private _loadingDefer = DeferHelperClass();\n private _isRead = false;\n\n private _mobile = false;\n private _keys: string[] = [];\n private _file: LocaleFile = {};\n private _external: LocaleList = {};\n private _override: LocaleList = {};\n\n private _requestService!: IRequestService;\n private _utilityService!: IUtilityService;\n\n setServices(requestService: IRequestService, utilityService: IUtilityService) {\n this._requestService = requestService;\n this._utilityService = utilityService;\n }\n\n constructor(private path: string, mobile: boolean = false, private activeLangCode: string = \"\") {\n this.isRead = false;\n this._mobile = mobile;\n }\n\n private set isRead(value_: boolean) {\n if (!value_) {\n this._readDefer = DeferHelperClass();\n } else if (this._readDefer) {\n this._readDefer.resolve([true]);\n this._loadingDefer.resolve([true]);\n }\n this._isRead = value_;\n }\n\n private get isRead() {\n return this._isRead;\n }\n\n public async IsFileRead(): Promise<boolean> {\n await this._readDefer;\n return this.isRead;\n }\n\n public async ReadFile(): Promise<void> {\n this.isRead = false;\n this.read(this.language);\n }\n\n public get mobile() {\n return this._mobile;\n }\n\n public get language(): string {\n if (this.activeLangCode.length > 0) return this.activeLangCode;\n return (new URL(window.location.href)).searchParams.get(\"lang\") || \"de\";\n }\n\n public get file(): LocaleFile {\n return this._file;\n }\n\n public get keys(): Array<string> {\n return this._keys;\n }\n\n public async AddOverrides(override: LocaleOverride): Promise<void> {\n await this._loadingDefer;\n const availableLanguageKeys = Object.keys(this._external)\n Object.entries(override).forEach(([overrideKey, object]) => {\n if (typeof object === \"string\") { // Single string\n availableLanguageKeys.forEach((langCode) => {\n const languageOverride = (this._override[langCode] || {}) as LocaleFile;\n languageOverride[overrideKey] = object;\n this._override[langCode] = languageOverride;\n })\n } else { // Language Map\n Object.entries(object as LocaleFile).forEach(([key, value]) => {\n const languageOverride = (this._override[overrideKey] || {}) as LocaleFile;\n languageOverride[key] = value;\n this._override[overrideKey] = languageOverride;\n })\n }\n })\n this.applyExternalsAndOverrides()\n }\n\n public async AddLocales(source: LocaleList) {\n Object.entries(source).forEach(([langCode, file]) => {\n const obj = this._external[langCode] || {};\n Object.entries(file as LocaleFile).forEach(([key, translation]) => {\n obj[key] = translation;\n })\n this._external[langCode] = obj;\n })\n await this._loadingDefer\n if (await this.IsFileRead()) {\n this.applyExternalsAndOverrides()\n return;\n }\n console.error(\"LocalesModel: Tried to Add Locales from Json, but failed, since file could not be read...\");\n }\n\n applyExternalsAndOverrides() {\n const lang = this.language;\n const source = this._external;\n if (source && source[lang]) {\n const keys = Object.keys(source[lang]);\n for (const key of keys) {\n this._file[key] = source[lang][key];\n }\n }\n const overrides = this._override;\n if (overrides && overrides[lang]) {\n const keys = Object.keys(overrides[lang]);\n for (const key of keys) {\n if (this._file[key]) {\n const replacementKey = overrides[lang][key];\n if (this._file[replacementKey]) {\n this._file[key] = this._file[replacementKey];\n }\n }\n }\n }\n this._keys = Object.keys(this._file);\n }\n\n async read(langCode: string = this.language): Promise<LanguageStatus> {\n const changed = this.activeLangCode != langCode || !this.isRead;\n if (changed) {\n this._file = await this.getLocaleJson(this.path, langCode);\n this.applyExternalsAndOverrides();\n this.isRead = true;\n this._mobile = this._utilityService.isMobileDevice();\n }\n this.activeLangCode = langCode;\n return {\n langCode: this.activeLangCode,\n changed\n };\n }\n\n private async getLocaleJson(path_: string, langCode_: string): Promise<LocaleFile> {\n const url = path_ + langCode_ + \".json\";\n const requestUrl: string = await this._requestService.buildRequestURL(url);\n return this._requestService.fetchJSON<LocaleFile>(requestUrl);\n }\n\n}\n","import {LocaleList, LocaleOverride} from \"@dh-software/webui-types\";\nimport {Observer} from \"../classes/observer.class\";\nimport {LocaleStorage} from \"../classes/locale-storage.class\";\nimport {LocaleReader} from \"../classes/locale-reader.class\";\nimport {RequestService} from \"./request.service\";\nimport {UtilityService} from \"./utility.service\";\n\nclass LocaleServiceClass {\n\n private readonly _observer: Observer;\n private _initialised = false\n private readonly _storage:LocaleStorage;\n private readonly _reader: LocaleReader;\n\n constructor() {\n this._observer = new Observer([\"i18n\"])\n this._storage = new LocaleStorage(this.LocaleStorageKey)\n this._reader = new LocaleReader(\"locales/\");\n this._reader.setServices(RequestService, UtilityService);\n this.init();\n }\n\n private get LocaleStorageKey() {\n const url = window.location.href;\n const params = new URLSearchParams(url);\n return `${params.get(\"token\")}_${params.get(\"a\")}_${params.get(\"b\")}`;\n }\n\n private updateUrlLangParameter(langCode: string): void {\n try {\n const currentUrl = new URL(window.location.href);\n if (currentUrl.searchParams.has(\"lang\")) {\n currentUrl.searchParams.set('lang', langCode);\n window.history.replaceState({}, '', currentUrl.toString());\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n async setLanguage(langCode: string) {\n this._storage.setLanguage(langCode);\n const info = await this._reader.read(langCode);\n if (info.changed) {\n this._observer.Observees.forEach(x => {\n this.translateAddedElement(x);\n })\n this.updateUrlLangParameter(info.langCode);\n }\n }\n\n getLanguage(): string {\n return this.language;\n }\n\n private async init(): Promise<void> {\n if (!this._initialised) {\n this._observer.registerCallback(\"NodeObserved\", (node, localesAttribute, attribute) => {\n this._translateNode(node as Element, localesAttribute, attribute);\n });\n this._observer.registerCallback(\"NodeAdded\", this.translateAddedElement.bind(this))\n this._observer.registerCallback(\"NodeRegistered\", this.translateAddedElement.bind(this));\n\n await this.setLanguage(this.language);\n document.addEventListener(\"register-to-locales-observer\", ((event_: CustomEvent) => {\n this._observer.addNode(event_.target as Node);\n }) as EventListener);\n this.Register(document);\n this._initialised = true;\n }\n }\n\n private async _translateNode(element_: Element, localesAttribute_: string, sourceAttribute_: string) {\n await this.IsFileRead();\n const fallback = element_.getAttribute(\"locales-model-no-translation\") || element_.textContent;\n const txtid = element_.getAttribute(sourceAttribute_) || \"\";\n\n if (sourceAttribute_.includes(localesAttribute_ + \"-\")) {\n const targetAttribute = sourceAttribute_.replace(localesAttribute_ + \"-\", \"\");\n element_.setAttribute(targetAttribute, this.translate(txtid, fallback ? fallback : \"\"));\n return;\n }\n\n if (sourceAttribute_.includes(\"mobile-\") == false) {\n if (element_.hasAttribute(\"mobile-\" + sourceAttribute_)) {\n if (this._reader.mobile) {\n return;// do not translate, as there is a mobile-text that should be used instead\n }\n }\n }\n element_.textContent = this.translate(txtid, fallback ? fallback : \"\");\n }\n\n\n private translateAddedElement(node_: Node) {\n if ((node_ as Element).getAttributeNames) {\n const attributes = (node_ as Element).getAttributeNames();\n for (const attribute of attributes) {\n for (const localesAttribute of this._observer.Attributes) {\n if (attribute.includes(localesAttribute)) {\n this._translateNode((node_ as Element), localesAttribute, attribute);\n }\n }\n }\n }\n\n if ((node_ as Element).querySelectorAll) {\n const elements = (node_ as Element).querySelectorAll(\"*\");\n elements.forEach((element_) => {\n const attributes = element_.getAttributeNames();\n for (const attribute of attributes) {\n for (const localesAttribute of this._observer.Attributes) {\n if (attribute.includes(localesAttribute)) {\n this._translateNode(element_, localesAttribute, attribute);\n }\n }\n }\n });\n }\n }\n\n private observation(model_: LocaleServiceClass): CallableFunction {\n return function (node_: Node, localesAttribute_: string, sourceAttribute_: string) {\n model_._translateNode(node_ as Element, localesAttribute_, sourceAttribute_);\n };\n }\n\n private nodeAdded(model_: LocaleServiceClass): CallableFunction {\n return function (node_: Node) {\n model_.translateAddedElement(node_);\n }\n }\n\n private register(model_: LocaleServiceClass): CallableFunction {\n return function (node_: Node) {\n model_.translateAddedElement(node_);\n };\n }\n\n public get language() {\n return this._storage.getLanguage();\n }\n\n public async get(txtid_: string) {\n await this.IsFileRead();\n if (txtid_ && this.exists(txtid_)) {\n return this._reader.file[txtid_];\n }\n return \"\";\n }\n\n public IsFileRead(): Promise<boolean> {\n return this._reader.IsFileRead();\n }\n\n public exists(txtid_: string) {\n return this._reader.keys.includes(txtid_);\n }\n\n public translate(txtid_: string, fallback_: string = \"\"): string {\n let returnBuffer = \"\";\n if (txtid_ && this.exists(txtid_)) {\n returnBuffer = this._reader.file[txtid_];\n }\n if (fallback_ && !returnBuffer) {\n if (this.exists(fallback_)) {\n returnBuffer = this._reader.file[fallback_];\n } else {\n returnBuffer = fallback_;\n }\n }\n if (typeof returnBuffer !== \"string\") {\n returnBuffer = txtid_;\n }\n if (returnBuffer) {\n returnBuffer = returnBuffer.replace(\"~\", \"\\n\");\n }\n return returnBuffer;\n }\n\n public async Register(target_: Node) {\n if (await this.IsFileRead()) {\n this._observer.addNode(target_);\n }\n }\n\n public async AddSource(source: LocaleList) {\n return await this._reader.AddLocales(source);\n }\n\n public async AddOverrides(overrides: LocaleOverride) {\n return await this._reader.AddOverrides(overrides);\n }\n}\nexport const LocaleService = new LocaleServiceClass();\n","import {IConfiguredMailParams, IModalElement, IRequestData, ValidationType} from \"@dh-software/webui-types\";\n\nimport {GoogleCapchaService} from './google-recapcha.service'\nimport {CommunicationMessageService} from \"./communication-message.service\";\nimport {RequestService} from \"./request.service\";\nimport {subscribe} from \"../event\";\n\nclass MailerServiceClass {\n private readonly _modal!: IModalElement;\n\n constructor() {\n //TODO: ...........................................................\n // this._modal = document.createElement(\"fv-modal\") as IModalElement;\n // document.body.appendChild(this._modal);\n subscribe(\"shared:mail-sent\", async (params: IConfiguredMailParams) => {\n await this.sendConfiguredMail(params);\n });\n }\n\n private validateValue(value: string | undefined, validationType: ValidationType): boolean {\n value = value || \"\";\n switch (validationType) {\n case ValidationType.CLOUD_ID:\n return /^[a-z0-9]{8}$/.test(value);\n case ValidationType.E_MAIL:\n return /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(value);\n }\n }\n\n private setLabel(mode_: boolean) {\n const finishLabel = document.createElement(\"label\");\n if (mode_) {\n finishLabel.textContent = \"E-Mail wurde erfolgreich versendet.\";\n } else {\n finishLabel.textContent = \"E-Mail konnte nicht versendet werden.\";\n }\n this._modal.innerHTML = \"\";\n this._modal.appendChild(finishLabel);\n setTimeout(() => {\n this._modal.hide();\n }, 2000);\n }\n\n private async validateGoogleCaptcha() {\n GoogleCapchaService.createCaptcha(this._modal);\n if (GoogleCapchaService.needsValidation) {\n GoogleCapchaService.validate();\n }\n await GoogleCapchaService.Validating;\n }\n\n public async shareByMail(to: string, message: string, cloudId: string) {\n if (this.validateValue(to, ValidationType.E_MAIL) &&\n this.validateValue(cloudId, ValidationType.CLOUD_ID)) {\n this._modal.show();\n\n try {\n await this.validateGoogleCaptcha();\n\n const url = await CommunicationMessageService.getShortUrl(window.location.href, cloudId);\n\n await RequestService.post(RequestService.setQuery(\"/webviewer/share-by-mail\"), JSON.stringify({\n to,\n message,\n url\n }));\n this.setLabel(true);\n } catch (e) {\n this.setLabel(false);\n }\n }\n }\n\n async sendRequestMail(requestData: IRequestData) {\n if (this.validateValue(requestData.email, ValidationType.E_MAIL) &&\n this.validateValue(requestData.number, ValidationType.CLOUD_ID)) {\n this._modal.show();\n try {\n await this.validateGoogleCaptcha();\n\n await RequestService.post(RequestService.setQuery(\"/webui/sendRequestMail\"), JSON.stringify({\n message: requestData.message || \"\",\n name: requestData.name || \"\",\n surname: requestData.surname || \"\",\n email: requestData.email || \"\",\n phone: requestData.phone || \"\",\n postcode: requestData.postcode || \"\",\n number: requestData.number || \"\"\n })\n );\n this.setLabel(true);\n }\n catch(e) {\n this.setLabel(false);\n }\n }\n }\n\n async sendConfiguredMail(params: IConfiguredMailParams) {\n return await fetch(RequestService.setQuery(\"/mail/send-configurated-mail\"), {\n method: \"POST\",\n credentials: \"include\",\n body: JSON.stringify(params)\n });\n }\n\n sendConfiguredMailByBeacon(params: IConfiguredMailParams) {\n const data = new Blob(\n [JSON.stringify(params)],\n {type: 'application/json; charset=UTF-8'}\n );\n navigator.sendBeacon(RequestService.setQuery(\"/mail/send-configurated-mail\"), data);\n }\n}\n\nexport const MailerService = new MailerServiceClass();\n","import {ConfigurationService} from \"./configuration.service\";\nimport {subscribe, subscribeOnce} from \"../event\";\n\ninterface IResetMask extends HTMLElement {\n startTimer: () => void;\n stopTimer: () => void;\n}\n\nclass ResetWindowServiceClass {\n private isInitialized?: Promise<boolean>;\n private _resetMask?: IResetMask;\n constructor() {\n subscribe(\"shared:configuration-fetched\", (data) => {\n if (window.g_configuration[\"sessionResetSettings\"] && window.g_configuration[\"sessionResetSettings\"].enabled) {\n this._resetMask = document.querySelector(\"fv-reset-mask\") || Object.assign(document.createElement(\"fv-reset-mask\"));\n if(this._resetMask) {\n const fvModalGeneral = document.querySelector(\"fv-modal.global-main-modal\") || Object.assign(document.createElement(\"fv-modal\"), { className: \"global-main-modal\"})\n fvModalGeneral.append(this._resetMask);\n document.body.append(fvModalGeneral);\n }\n }\n })\n }\n\n async startTimer() {\n if(this.isInitialized) {\n await this.isInitialized;\n if (this._resetMask) {\n this._resetMask.startTimer();\n }\n else {\n console.warn(\"Is not found\");\n }\n }\n else {\n console.warn(\"Is not initialized\");\n }\n }\n\n async stopTimer() {\n if(this.isInitialized) {\n await this.isInitialized;\n if (this._resetMask) {\n this._resetMask.stopTimer();\n }\n else {\n console.warn(\"Is not found\");\n }\n }\n else {\n console.warn(\"Is not initialized\");\n }\n }\n}\nexport const ResetWindowService = new ResetWindowServiceClass();\n","import {ITemplateConfig, IThemeConfig} from \"@dh-software/webui-types\";\n\nexport class ThemeApplier {\n\n /**\n * Generates CSS variables from theme config\n */\n static generateCSSVariables(theme: IThemeConfig): string {\n const lines = Object.entries(theme.colors).map(([name, data]) => {\n const val = data.value ?? data.default;\n return `${name}: ${val};`;\n });\n return `:root { ${lines.join(\"\\n\")} }`;\n }\n\n /**\n * Handles specific template configuration logic for a single element\n */\n static applyTemplateConfig(element: Element, config: ITemplateConfig, invert: boolean = false) {\n const dispatch = () => {\n element.dispatchEvent(new CustomEvent(\"template-loader-template-config-applied\", {\n bubbles: true,\n detail: { \"template-config\": config, \"inverted\": invert }\n }));\n };\n\n const rawValue = config.value ?? config.default;\n const effectiveValue = invert ? !rawValue : rawValue;\n\n switch (config.type) {\n case \"string\":\n element.textContent = String(rawValue);\n break;\n case \"boolean\":\n if (!effectiveValue) element.remove();\n break;\n case \"option\":\n case \"dynamic-option\":\n if (config.attribute) element.setAttribute(config.attribute, String(rawValue));\n break;\n case \"attribute\":\n this.handleAttributeType(element, config, invert);\n break;\n }\n dispatch();\n }\n\n private static handleAttributeType(element: Element, config: ITemplateConfig, invert: boolean) {\n if (!config.attribute) return;\n\n let val = config.value ?? config.default;\n\n const configId = config[\"config-id\"];\n const notConfigId = config[\"!config-id\"];\n\n if (configId && typeof (window as any).g_configuration?.[configId] === \"boolean\") {\n val = (window as any).g_configuration[configId];\n } else if (notConfigId && typeof (window as any).g_configuration?.[notConfigId] === \"boolean\") {\n val = !(window as any).g_configuration[notConfigId];\n }\n\n const finalValue = invert ? !val : val;\n if (config.varType === \"boolean\") {\n finalValue ? element.setAttribute(config.attribute, \"\") : element.removeAttribute(config.attribute);\n } else {\n element.setAttribute(config.attribute, String(val));\n }\n }\n}\n","import {ILoadingElement, IThemeConfig} from \"@dh-software/webui-types\";\nimport {RequestService} from \"./request.service\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {subscribe} from \"../event\";\nimport {ThemeApplier} from \"../classes/theme-applier.class\";\n\nclass TemplateLoaderServiceClass {\n private _loadingScreen!: ILoadingElement;\n private _theme!: IThemeConfig;\n private _initialized: IDeferHelperClass = DeferHelperClass();\n private _isFinished: IDeferHelperClass = DeferHelperClass();\n private _themeStyle: HTMLStyleElement = document.createElement(\"style\");\n\n constructor() {\n this.setupLoadingScreen();\n subscribe(\"construction:initialize\", () => this.initialize());\n }\n\n private setupLoadingScreen() {\n this._loadingScreen = document.createElement(\"fv-loading\") as ILoadingElement;\n if (this._loadingScreen) {\n document.body.appendChild(this._loadingScreen);\n this._loadingScreen.show?.();\n }\n }\n\n public get IsInitialized(): Promise<void> { return this._initialized; }\n public get IsFinished(): Promise<any> { return Promise.all([this._initialized, this._isFinished]); }\n\n async initialize() {\n try {\n const url = await RequestService.buildRequestURL(\"themeConfig\");\n this._theme = (await RequestService.fetchJSON(url)) as IThemeConfig;\n\n if (this._theme) {\n this._themeStyle.innerHTML = ThemeApplier.generateCSSVariables(this._theme);\n document.head.appendChild(this._themeStyle);\n this._initialized.resolve();\n }\n await this.applyThemeToHierarchy(document, !this._theme);\n } finally {\n this._loadingScreen?.remove();\n this._isFinished.resolve();\n }\n }\n\n public async applyThemeToHierarchy(root: ParentNode | ShadowRoot, onlyConfigIds = false) {\n const elements = root.querySelectorAll(\"*\");\n\n for (const el of Array.from(elements)) {\n await this.processElement(el, onlyConfigIds);\n if (el.shadowRoot) {\n await this.applyThemeToHierarchy(el.shadowRoot, onlyConfigIds);\n }\n }\n }\n\n private async processElement(el: Element, onlyConfigIds: boolean) {\n const rawTemplateId = el.getAttribute(\"template-id\");\n const rawConfigId = el.getAttribute(\"config-id\");\n\n if (rawTemplateId && !onlyConfigIds && this._theme) {\n const isInverted = rawTemplateId.startsWith(\"!\");\n const actualId = isInverted ? rawTemplateId.substring(1) : rawTemplateId;\n\n const config = this._theme.template[actualId];\n if (config) {\n const configs = Array.isArray(config) ? config : [config];\n configs.forEach(c => ThemeApplier.applyTemplateConfig(el, c, isInverted));\n }\n }\n\n if (rawConfigId) {\n const isInverted = rawConfigId.startsWith(\"!\");\n const actualConfigKey = isInverted ? rawConfigId.substring(1) : rawConfigId;\n const globalVal = (window as any).g_configuration?.[actualConfigKey];\n\n if (typeof globalVal === \"boolean\") {\n const shouldRemove = isInverted ? globalVal : !globalVal;\n if (shouldRemove) {\n el.remove();\n }\n }\n }\n }\n}\nexport const TemplateLoaderService = new TemplateLoaderServiceClass();\n","import {\n IArrangeEquallyParams,\n IBulkValueModification,\n IGetUIFromPoConfigParams,\n IGetUIParams,\n IGroupModification,\n IModifySingleGroupParams,\n IModifySingleSpaceParams,\n IModifyValuesParams,\n ISpaceModification,\n IValueModification,\n IWebCabApiArticleResult,\n IWebCabApiUiComponentsData,\n IWebCabApiUiData,\n IWebCabCommandData,\n IWebCabMouseClickEvent,\n IWebCabMouseOverEvent,\n IWebCabUIData,\n IZSplittingModification\n} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"./communication-message.service\"\n\nclass WebCabCommunicationServiceClass {\n constructor() {\n }\n\n private async PerformWebCabCommand(json_: IWebCabCommandData): Promise<IWebCabUIData> {\n return (await CommunicationMessageService.PerformWebCabCommand(json_))[0];\n }\n\n public async ArrangeEqually(params_: IArrangeEquallyParams): Promise<IWebCabUIData> {\n const json: IWebCabCommandData = {\n \"webCabCommand\": \"ArrangeEqually\",\n \"webCabParams\": {}\n };\n json.webCabParams.GroupID = params_.GroupID;\n json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n json.webCabParams[\"itemManager.program\"] = params_.program;\n if (params_.template) {\n json.webCabParams[\"itemManager.template\"] = params_.template;\n }\n json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n\n if (params_.targetInstanceIdent) {\n json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n }\n return await this.PerformWebCabCommand(json);\n }\n\n public async ModifySingleGroup(params_: IModifySingleGroupParams): Promise<IWebCabUIData> {\n const json: IWebCabCommandData = {\n \"webCabCommand\": \"ModifySingleGroup\",\n \"webCabParams\": {}\n };\n json.webCabParams[params_.modificationTarget] = params_.value;\n json.webCabParams.GroupID = params_.GroupID;\n json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n json.webCabParams[\"itemManager.program\"] = params_.program;\n if (params_.template) {\n json.webCabParams[\"itemManager.template\"] = params_.template;\n }\n json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n if (params_.targetInstanceIdent) {\n json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n }\n return await this.PerformWebCabCommand(json);\n }\n\n public async ModifySingleSpace(params_: IModifySingleSpaceParams): Promise<IWebCabUIData> {\n const json: IWebCabCommandData = {\n \"webCabCommand\": \"ModifySingleSpace\",\n \"webCabParams\": {}\n };\n json.webCabParams[params_.modificationTarget] = params_.value;\n json.webCabParams.GroupID = params_.GroupID;\n json.webCabParams.InGroupID = params_.InGroupID;\n json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n json.webCabParams[\"itemManager.program\"] = params_.program;\n if (params_.template) {\n json.webCabParams[\"itemManager.template\"] = params_.template;\n }\n json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n if (params_.targetInstanceIdent) {\n json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n }\n return await this.PerformWebCabCommand(json);\n }\n\n public async getUI(params_: IGetUIParams): Promise<IWebCabUIData> {\n const json: IWebCabCommandData = {\"webCabCommand\": \"getUI\", \"webCabParams\": {}};\n json.webCabParams[\"itemManager.preventRun\"] = params_.preventRuns ? \"1\" : \"0\";\n json.webCabParams[\"itemManager.targetIsLastInserted\"] = params_.lastInserted ? \"1\" : \"0\";\n json.webCabParams[\"itemManager.runAllNoOptimizationNoCache\"] = params_.runAllNotOptimized ? \"1\" : \"0\";\n json.webCabParams[\"itemManager.runAllWebCabElements\"] = params_.runAllWebCabs ? \"1\" : \"0\";\n json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n json.webCabParams[\"itemManager.program\"] = params_.program;\n json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n if (params_.template) {\n json.webCabParams[\"itemManager.template\"] = params_.template;\n }\n json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n if (params_.targetInstanceIdent) {\n json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n }\n return await this.PerformWebCabCommand(json);\n }\n\n public async getUiFromPoConfig(params_: IGetUIFromPoConfigParams): Promise<IWebCabUIData> {\n const json: IWebCabCommandData = {\"webCabCommand\": \"getUiFromPoConfig\", \"webCabParams\": {}};\n json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n json.webCabParams[\"itemManager.program\"] = params_.program;\n json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n if (params_.template) {\n json.webCabParams[\"itemManager.template\"] = params_.template;\n }\n json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n json.webCabParams[\"itemManager.UIFromConfig_ForceCorner\"] = params_.forceCorner ? 1 : 0;\n json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n return await this.PerformWebCabCommand(json);\n }\n\n public async ModifyValues(params_: IModifyValuesParams): Promise<IWebCabUIData> {\n const json: IWebCabCommandData = {\n \"webCabCommand\": \"ModifyValues\",\n \"webCabParams\": {\n \"Modified\": {}\n }\n };\n if (!json.webCabParams.Modified) {\n json.webCabParams.Modified = {};\n }\n json.webCabParams.Modified[params_.modificationTarget] = params_.value;\n\n if (params_.preventRuns) {\n json.webCabParams[\"itemManager.preventRun\"] = \"1\";\n }\n json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n json.webCabParams[\"itemManager.program\"] = params_.program;\n json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n json.webCabParams[\"itemManager.uiType\"] = params_.uiType;\n json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n if (params_.template) {\n json.webCabParams[\"itemManager.template\"] = params_.template;\n }\n if (params_.targetInstanceIdent) {\n json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n }\n return await this.PerformWebCabCommand(json);\n }\n}\n\nexport const WebCabCommunicationService = new WebCabCommunicationServiceClass();\n/*@ts-ignore*/\nwindow.WebCabCommunicationService = WebCabCommunicationService;\n\nexport interface IWebCabComponentData {\n attributes?: {\n disabled: number,\n max: number,\n min: number,\n value: number\n },\n change?: {\n GroupID?: string,\n InGroupID?: string,\n TargetType: string,\n modificationTarget: string,\n value: string,\n webCabCommand: string\n },\n \"data-attributes\"?: {\n step: number,\n type: string\n },\n click?: IWebCabMouseClickEvent,\n \"mouseenter\"?: IWebCabMouseOverEvent,\n \"mouseleave\"?: IWebCabMouseOverEvent,\n \"component-identifier\"?: string,\n components?: Array<IWebCabComponentData>,\n name?: string\n}\n\nclass WebCabApiServiceClass {\n constructor() {\n }\n\n public async GetUIs(customerType_: string, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n const params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_GetUI\", params, false);\n }\n\n public async GetUiFromPoConfig(manufacturer_: string, program_: string, article_: string, configSuffix_: string, customerType_: string, forceCorner_: boolean): Promise<IWebCabApiUiComponentsData> {\n const params = {\n Manufacturer: manufacturer_,\n Program: program_,\n Article: article_,\n ConfigSuffix: configSuffix_,\n CustomerType: customerType_,\n ForceCorner: forceCorner_ ? 1 : 0\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_GetUiFromPoConfig\", params, false);\n }\n\n public async ArrangeEqually(customerType_: string, groupIDs_: Array<string>, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n const params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n GroupIDs: groupIDs_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ArrangeEqually\", params, true);\n }\n\n public async ModifyValues(customerType_: string, modifications: Array<IValueModification>, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n const params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n modifications: modifications\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ModifyValues\", params, true);\n }\n\n public async BulkModifyValues(customerType_: string, bulkModifications_: Array<IBulkValueModification>, configSuffix_?: string | undefined) {\n const params = {\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n BulkModifications: bulkModifications_\n }\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_BulkModifyValues\", params, true);\n }\n\n public async ModifyGroups(customerType_: string, modifications: Array<IGroupModification>, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined) {\n const params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n modifications: modifications\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ModifyGroups\", params, true);\n }\n\n public async ModifySpaces(customerType_: string, modifications: Array<ISpaceModification>, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined) {\n const params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n modifications: modifications\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ModifySpaces\", params, true);\n }\n\n public async ModifyZSplitting(customerType_: string, modifications_: Array<IZSplittingModification>, configSuffix_?: string, instanceIdentFilter_?: Array<number> | undefined) {\n var params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n modifications: modifications_\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ModifyZSplitting\", params, true);\n }\n\n public async EnableWebCabs(customerType_: string, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n const params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_EnableWebCabs\", params, true);\n }\n\n public async DisableWebCabs(customerType_: string, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n const params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_DisableWebCabs\", params, true);\n }\n\n public async SetDisableDimensionVisuals(customerType_: string, value_: number, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined) {\n const params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n Value: value_\n };\n return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_SetDisableDimensionVisuals\", params, true);\n }\n\n public async GetDisableDimensionVisuals(customerType_: string, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<boolean> {\n const params = {\n InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n CustomerType: customerType_,\n ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n };\n const result = await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_GetDisableDimensionVisuals\", params, false);\n if (result[\"disabled-in-scene\"]) {\n return true;\n }\n if (result.webcabs) {\n for (let index = 0; index < result.webcabs.length; ++index) {\n const state = result.webcabs[index];\n if (state) {\n return true;\n }\n }\n }\n return false;\n }\n\n\n public async GetPlanned(typeInfoFilter?: Array<number> | undefined): Promise<Array<IWebCabApiArticleResult>> {\n const relevant = new Array<IWebCabApiArticleResult>();\n const articles = await CommunicationMessageService.getPlannedArticles();\n for (const article of articles) {\n if (article.keys.includes(10017) || article.keys.includes(10019)) {\n if (typeInfoFilter != undefined) {\n if (typeInfoFilter.includes(article.typeInfo)) {\n relevant.push(article);\n }\n continue;\n }\n relevant.push(article);\n }\n }\n return relevant;\n };\n\n}\n\nexport const WebCabApiService = new WebCabApiServiceClass();\n","import {INcsPickerData, IRalPickerData, ISikkensPickerData} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"./communication-message.service\";\n\nconst rgbToHsv = function (rgb_str: string) {\n const rgb = rgb_str.split(\",\").map((s)=>+s);\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n\n let h, s;\n\n if (delta === 0) {\n h = 0;\n }\n else if (max === r) {\n h = 60 * (((g - b) / delta) % 6);\n }\n else if (max === g) {\n h = 60 * (((b - r) / delta) + 2);\n }\n else {\n h = 60 * (((r - g) / delta) + 4);\n }\n\n if (h < 0) {\n h += 360;\n }\n\n if (max === 0) {\n s = 0;\n }\n else {\n s = delta / max;\n }\n\n const v = max;\n\n return [h, s, v];\n};\n\nclass ColorPickerServiceClass {\n\n private sortColor(colors: Array<{code: string, key: string}>) {\n const hsvlColors = colors.map(function(color: {code: string, key: string}): Array<{code: string, key: string} | number> {\n const hsv = rgbToHsv(color.code);\n return [hsv[0], hsv[1], hsv[2], color];\n });\n const count: Array<Array<Array<Array<{code: string, key: string}>>>> = [];\n for (let h = 0; h <= 360; h++) {\n count.push([]);\n for (let s = 0; s <= 100; s++) {\n count[h].push([]);\n for (let v = 0; v <= 100; v++) {\n count[h][s].push([]);\n }\n }\n }\n\n // Zähle das Vorkommen jeder Kombination von Hue-, Saturation- und Luminanzwerten im Eingabearray\n hsvlColors.forEach((color: Array<number | {code: string, key: string}>) => {\n const h = Math.round(color[0] as number);\n const s = Math.round(color[1] as number * 100);\n const v = Math.round(color[2] as number * 100);\n count[h][s][v].push(color[3] as {code: string, key: string});\n });\n\n // Erstelle ein neues Array, um die sortierten Farben zu speichern\n const sortedColors = [];\n\n // Füge jede Farbe in sortierter Reihenfolge zum neuen Array hinzu\n for (let h = 0; h <= 360; h++) {\n for (let s = 0; s <= 100; s++) {\n for (let v = 0; v <= 100; v++) {\n sortedColors.push(count[h][s][v]);\n }\n }\n }\n\n return sortedColors;\n\n }\n\n public async getRal(options?: {manufacturer?: string}): Promise<IRalPickerData> {\n options = options || {};\n return await (CommunicationMessageService?.getColorPickerInfo({\n manufacturer: options.manufacturer,\n type: \"ral\"\n }) as Promise<IRalPickerData>).then((data)=> {\n return data;\n }) as IRalPickerData;\n\n }\n\n public async getNCS(options?: {manufacturer?: string}): Promise<INcsPickerData> {\n options = options || {};\n return await (CommunicationMessageService?.getColorPickerInfo({\n manufacturer: options.manufacturer,\n type: \"ncs\"\n }) as Promise<INcsPickerData>).then((data)=> {\n return data;\n }) as INcsPickerData;\n }\n\n public async getSikkens(options?: {manufacturer?: string}): Promise<ISikkensPickerData> {\n options = options || {};\n return await (CommunicationMessageService?.getColorPickerInfo({\n manufacturer: options.manufacturer,\n type: \"sikkens\"\n }) as Promise<ISikkensPickerData>).then((data) => {\n //SORT\n return data;\n }) as ISikkensPickerData;\n }\n}\n\nexport const ColorPickerService = new ColorPickerServiceClass();\n","import {\n IGetPropTransferParams,\n IPropTransferCallbacks,\n IPropTransferGroup,\n IPropTransferItem,\n IPropTransferManufacturer,\n IPropTransferProgram\n} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"../../service\";\n\nclass PropTransferModelClass {\n\n public async get(options: IGetPropTransferParams): Promise<IPropTransferManufacturer | IPropTransferProgram | IPropTransferGroup | IPropTransferItem[]> {\n return CommunicationMessageService.getPropTransfer(options);\n }\n\n public async getDeletable(): Promise<unknown> {\n return CommunicationMessageService?.getDeletablePropTransfer();\n }\n\n public async traverse(callbacks: IPropTransferCallbacks, options: IGetPropTransferParams = {}) {\n const transferObject = await this.get(options);\n if (options.grouped) {\n if (!options.manufacturer) {\n await this.manufacturerCallback(callbacks, transferObject as IPropTransferManufacturer, options);\n } else if (options.manufacturer && !options.program) {\n await this.programCallback(callbacks, transferObject as IPropTransferProgram, options);\n } else if (options.manufacturer && options.program) {\n await this.groupCallback(callbacks, transferObject as IPropTransferGroup, options);\n }\n } else {\n await this.itemCallback(callbacks, transferObject as Array<IPropTransferItem>);\n }\n }\n\n private async manufacturerCallback(callbacks: IPropTransferCallbacks, transferObject_: IPropTransferManufacturer, options: IGetPropTransferParams) {\n const transferObject = transferObject_;\n const keys = transferObject ? Object.keys(transferObject) : [];\n for (const manufacturer of keys) {\n if (callbacks.manufacturerCallback) await callbacks.manufacturerCallback(manufacturer, transferObject[manufacturer]);\n await this.programCallback(callbacks, transferObject[manufacturer], Object.assign(options, {manufacturer: manufacturer}));\n }\n }\n\n private async programCallback(callbacks: IPropTransferCallbacks, transferObject_: IPropTransferProgram, options: IGetPropTransferParams) {\n if (options.manufacturer) {\n const transferObject = transferObject_;\n const keys = Object.keys(transferObject);\n for (const program of keys) {\n if (callbacks.programCallback && options.manufacturer) await callbacks.programCallback(options.manufacturer, program, transferObject[program]);\n await this.groupCallback(callbacks, transferObject[program], Object.assign(options, {program: program}));\n }\n }\n }\n\n private async groupCallback(callbacks: IPropTransferCallbacks, transferObject_: IPropTransferGroup, options: IGetPropTransferParams) {\n if (options.manufacturer && options.program) {\n const transferObject = transferObject_;\n const keys = Object.keys(transferObject);\n for (const group of keys) {\n if (callbacks.groupCallback && options.manufacturer && options.program) await callbacks.groupCallback(options.manufacturer, options.program, group, transferObject[group]);\n await this.itemCallback(callbacks, transferObject[group]);\n }\n }\n }\n\n private async itemCallback(callbacks: IPropTransferCallbacks, transferObject: Array<IPropTransferItem>) {\n for (const item of transferObject) {\n if (callbacks.itemsCallback) await callbacks.itemsCallback(item);\n }\n }\n\n}\n\nexport const PropTransferModel = new PropTransferModelClass();\n","import {\n IGetProgPropertiesParams,\n IProgProperty,\n IProgPropertyCallback,\n IProgPropertyFinishParamsCache,\n IProgPropertyGroupInformation,\n IProgPropertyGroupInformationExt,\n IProgPropertyManufacturer,\n IProgPropertyProgram,\n IProgPropertyProgramFinishParams,\n IProgPropertyRootList,\n IProgPropertyValue\n} from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"../../service\";\n\nexport abstract class PropertyModelBase<T extends IProgPropertyManufacturer, Params> {\n\n protected _cachedManufacturerList: IProgPropertyRootList<T> | undefined;\n private _cachedGroupInformation: { [key: string]: { [key: string]: Array<IProgPropertyGroupInformationExt> } } = {};\n private _cachedFinishParams: IProgPropertyFinishParamsCache = {};\n\n abstract traverse(callbacks: IProgPropertyCallback<T>, params?: Params): Promise<boolean>;\n\n public async getGroupInformation(manufacturer: string, program: string): Promise<IProgPropertyGroupInformationExt[]> {\n return CommunicationMessageService?.getMerkmalGroupInformation({\n manufacturer: manufacturer,\n program: program\n })\n }\n\n public async getFinishParams(manufacturer: string, program: string, association?: string, noCache = false): Promise<IProgPropertyProgramFinishParams> {\n if (noCache || !this._cachedFinishParams[manufacturer] || !this._cachedFinishParams[manufacturer][program] || !this._cachedFinishParams[manufacturer][program][association ? association : \"unknown\"]) {\n return CommunicationMessageService?.getFinishParams({\n manufacturer, program, association\n })\n .then((data) => {\n if (!this._cachedFinishParams[manufacturer]) this._cachedFinishParams[manufacturer] = {};\n if (!this._cachedFinishParams[manufacturer][program]) this._cachedFinishParams[manufacturer][program] = {};\n if (association && !this._cachedFinishParams[manufacturer][program][association]) this._cachedFinishParams[manufacturer][program][association] = {};\n else if (!association && !this._cachedFinishParams[manufacturer][program][\"unknown\"]) this._cachedFinishParams[manufacturer][program][\"unknown\"] = {};\n this._cachedFinishParams[manufacturer][program][association ? association : \"unknown\"] = data;\n return this._cachedFinishParams[manufacturer][program][association ? association : \"unknown\"];\n });\n }\n return Promise.resolve(this._cachedFinishParams[manufacturer][program][association ? association : \"unknown\"]);\n }\n\n protected async _traverse(callbacks: IProgPropertyCallback<T>, rootList: IProgPropertyRootList<T>, useCache_ = false, parameters?: IGetProgPropertiesParams) {\n const manufacturerList: Array<T> = Object.values(rootList.children);\n for (let mI = 0; mI < manufacturerList.length; mI++) {\n const manufacturerModel: T = manufacturerList[mI];\n callbacks.manufacturerCallback?.(manufacturerModel);\n\n const programList: Array<IProgPropertyProgram> = Object.values(manufacturerModel.children);\n for (let pI = 0; pI < programList.length; pI++) {\n const programModel: IProgPropertyProgram = programList[pI];\n const finishParams = await this.getFinishParams(manufacturerModel.manufacturerName, programModel.programName);\n callbacks.programCallback?.(manufacturerModel, programModel);\n\n let ppGroupInformation = await this._getGroupInformation(callbacks, manufacturerModel, programModel, useCache_);\n ppGroupInformation = this.mergeGroupInformation(ppGroupInformation);\n\n const progPropertyKeys: Array<string> = programModel.propertyKeyOrder || Object.keys(programModel.children);\n for (let ppI = 0; ppI < progPropertyKeys.length; ppI++) {\n const progPropertyKey = progPropertyKeys[ppI];\n const progPropertyModel: IProgProperty = programModel.children[progPropertyKey];\n\n let progPropertyValueList: Array<IProgPropertyValue> = Object.values(progPropertyModel.children);\n const progPropertyFilteredValueList: Array<IProgPropertyValue> = [];\n\n const propertyFilter = parameters?.propertyFilters?.[progPropertyModel.id];\n if (propertyFilter) {\n const itemGroups = propertyFilter.filter.itemGroups;\n const isActive = !(itemGroups.length === 1 && itemGroups[0].filter.length === 0);\n\n if (isActive) {\n for (const group of itemGroups) {\n for (const itemKey of group.items) {\n const propertyValue = progPropertyValueList.find(item => item.key === itemKey);\n if (propertyValue) {\n progPropertyFilteredValueList.push(propertyValue);\n }\n }\n }\n progPropertyValueList = progPropertyFilteredValueList;\n }\n }\n\n let currentValue: IProgPropertyValue | undefined;\n if (progPropertyValueList.length > 1 || (progPropertyValueList.length === 1 && progPropertyValueList[0].key.toLowerCase().startsWith(\"[dh_ausf\"))) {\n currentValue = progPropertyValueList.find((ppValue) => {\n return ppValue.propertyKey === progPropertyModel.currentValue;\n });\n }\n callbacks.propertyCallback?.(manufacturerModel, programModel, progPropertyModel, progPropertyValueList, currentValue);\n\n if (ppGroupInformation && callbacks.propertyGroupedCallback) {\n let found = false;\n for (let ppGI = 0; ppGI < ppGroupInformation.length; ppGI++) {\n for (const key of ppGroupInformation[ppGI].keys) {\n if (key.key === +progPropertyModel.id) {\n key.progPropertyModel = progPropertyModel;\n key.progPropertyValueList = progPropertyValueList;\n key.currentValue = currentValue;\n found = true;\n break;\n }\n }\n if (found) break;\n }\n }\n }\n if (ppGroupInformation && callbacks.propertyGroupedCallback) {\n for (let ppGI = 0; ppGI < ppGroupInformation.length; ppGI++) {\n const groupInformation = ppGroupInformation[ppGI];\n for (const propertyKey of progPropertyKeys) {\n groupInformation.keys.sort((a, b) => {\n return propertyKey.endsWith(a.key.toString()) ? 1 : propertyKey.endsWith(b.key.toString()) ? -1 : 0;\n });\n }\n if (!groupInformation?.title) {\n for (const groupElement of groupInformation.keys) {\n const groupDummy = {\n keys: [groupElement],\n title: groupElement.progPropertyModel?.name || \"\",\n img: groupInformation.img,\n id: groupInformation.id\n };\n const response = await callbacks.propertyGroupedCallback({\n manufacturerModel: manufacturerModel,\n programModel: programModel,\n propertyGroup: groupDummy,\n finishParams: finishParams\n })\n .then(() => {\n return true;\n })\n .catch((e) => {\n return false;\n });\n if (!response) return false;\n }\n continue;\n }\n const response = await callbacks.propertyGroupedCallback({\n manufacturerModel: manufacturerModel,\n programModel: programModel,\n propertyGroup: ppGroupInformation[ppGI],\n finishParams: finishParams\n })\n .then(() => {\n return true;\n })\n .catch((e) => {\n return false;\n });\n if (!response) return false;\n }\n }\n }\n }\n return true;\n }\n\n public async _getGroupInformation(callbacks: IProgPropertyCallback<T>, manufacturerModel: IProgPropertyManufacturer, programModel: IProgPropertyProgram, useCache_ = false): Promise<IProgPropertyGroupInformationExt[] | undefined> {\n let ppGroupInformation: IProgPropertyGroupInformationExt[] | undefined =\n callbacks.propertyGroupedCallback ? this._cachedGroupInformation && useCache_ && this._cachedGroupInformation[manufacturerModel.manufacturerName] && this._cachedGroupInformation[manufacturerModel.manufacturerName][programModel.programName] ?\n this._cachedGroupInformation[manufacturerModel.manufacturerName][programModel.programName] :\n await this.getGroupInformation(manufacturerModel.manufacturerName, programModel.programName) :\n undefined;\n if (ppGroupInformation) {\n ppGroupInformation = await this._fetchImages(ppGroupInformation, manufacturerModel, programModel);\n if (!this._cachedGroupInformation[manufacturerModel.manufacturerName]) this._cachedGroupInformation[manufacturerModel.manufacturerName] = {};\n if (useCache_) {\n this._cachedGroupInformation[manufacturerModel.manufacturerName][programModel.programName] = ppGroupInformation;\n }\n }\n return ppGroupInformation;\n }\n\n private async _fetchImages(ppGroupInformation: IProgPropertyGroupInformation[], manufacturerModel: IProgPropertyManufacturer, programModel: IProgPropertyProgram): Promise<IProgPropertyGroupInformationExt[]> {\n return await Promise.all(ppGroupInformation.map(async group => {\n return Object.assign(group, {\n imgSrc: group.img ? await CommunicationMessageService.getMediaUrl(manufacturerModel.manufacturerName, \"\", \"groups\", group.img, true, false) : undefined,\n });\n }));\n }\n\n public mergeGroupInformation(groups?: IProgPropertyGroupInformation[]) {\n if (!groups) return undefined;\n const merged: { [key: string]: IProgPropertyGroupInformation } = {};\n groups.forEach(item => {\n const id = Object.keys(merged).find(prefix => item.id.startsWith(prefix)) || item.id;\n if (!merged[id]) {\n merged[id] = Object.assign(item, {\n id: id,\n title: item.title,\n img: item.img,\n });\n }\n merged[id].keys = Array.from(\n new Map(\n [...(merged[id].keys || []), ...(item.keys || [])].map(k => [k.key, k])\n ).values()\n );\n //merged[id].keys = merged[id].keys.concat(item.keys);\n });\n return Object.values(merged);\n }\n\n}\n","import {\n IGetProgPropertiesParams,\n IProgProperty,\n IProgPropertyCallback,\n IProgPropertyExt,\n IProgPropertyManufacturer,\n IProgPropertyProgram,\n IProgPropertyRootList,\n IProgPropertyValue\n} from \"@dh-software/webui-types\";\nimport {PropertyModelBase} from \"./property-model.base\";\nimport {CommunicationMessageService} from \"../../service\";\n\nclass ProgPropertyModelClass extends PropertyModelBase<IProgPropertyManufacturer, IGetProgPropertiesParams> {\n\n public async get(params: IGetProgPropertiesParams) {\n return CommunicationMessageService.getProgProperties(params);\n }\n\n public async findMany(manufacturer_?: string, program_?: string, propertyKey_?: Array<string>, useCache_ = false): Promise<{\n [key: string]: IProgPropertyExt\n }> {\n const propertyItems: { [key: string]: IProgPropertyExt } = {};\n await this.traverse({\n propertyCallback: (manufacturer: IProgPropertyManufacturer, program: IProgPropertyProgram, property: IProgProperty, values: IProgPropertyValue[], current?: IProgPropertyValue) => {\n if (propertyKey_?.indexOf(property.key) !== -1 && manufacturer.manufacturerName === manufacturer_ && program.programName === program_) {\n propertyItems[property.key] = Object.assign(manufacturer, program, property, {currentValue: current});\n }\n }\n });\n return propertyItems;\n }\n\n public async findOne(manufacturer_?: string, program_?: string, propertyKey_?: string, useCache_ = false): Promise<IProgPropertyExt | undefined> {\n let propertyItem: IProgPropertyExt | undefined;\n await this.traverse({\n propertyCallback: (manufacturer: IProgPropertyManufacturer, program: IProgPropertyProgram, property: IProgProperty) => {\n if (property.key === propertyKey_ && manufacturer.manufacturerName === manufacturer_ && program.programName === program_) {\n propertyItem = Object.assign(manufacturer, program, property);\n }\n }\n });\n return propertyItem;\n }\n\n public async find(manufacturer?: string, program?: string, useSelection_?: boolean, useRelevant_?: boolean, fullHierarchy_?: boolean, instanceIdents_?: Array<number>): Promise<IProgPropertyRootList<IProgPropertyManufacturer> | IProgPropertyManufacturer | IProgPropertyProgram> {\n return CommunicationMessageService?.getProgProperties({\n manufacturer: manufacturer,\n program: program,\n useSelection: useSelection_,\n useRelevant: useRelevant_,\n fullHierarchy: fullHierarchy_,\n instanceIdents: instanceIdents_\n });\n }\n\n public async findAll(useSelection_?: boolean, useRelevant_?: boolean, instanceIdents_?: Array<number>): Promise<IProgPropertyRootList<IProgPropertyManufacturer>> {\n return await this.find(undefined, undefined, useSelection_, useRelevant_, true, instanceIdents_) as IProgPropertyRootList<IProgPropertyManufacturer>;\n }\n\n public async traverse(callbacks: IProgPropertyCallback<IProgPropertyManufacturer>, parameters?: IGetProgPropertiesParams): Promise<boolean> {\n if(!parameters) {\n parameters = {\n useSelection: true,\n useRelevant: true,\n fullHierarchy: true\n };\n }\n const useCache_ = (!!this._cachedManufacturerList)\n const cachedValue = this._cachedManufacturerList || await this.get(parameters);\n const ppManufacturerList: IProgPropertyRootList<IProgPropertyManufacturer> = useCache_ ? cachedValue : await this.get(parameters);\n this._cachedManufacturerList = useCache_ ? ppManufacturerList : undefined;\n if (!ppManufacturerList || !ppManufacturerList.children) {\n return false;\n }\n return this._traverse(callbacks, ppManufacturerList, useCache_, parameters);\n }\n\n}\nexport const ProgPropertyModel = new ProgPropertyModelClass();\n","import {PropertyModelBase} from \"./property-model.base\";\nimport {\n ContextFilterStrategy,\n IDisposeContextParameters,\n IGetProgContextParameters,\n IInitProgContextParameters,\n IProgPropertyCallback,\n IProgPropertyContext,\n IProgPropertyExt,\n IProgPropertyRootList\n} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"../../service\";\n\nclass ProgContextModelClass extends PropertyModelBase<IProgPropertyContext, IGetProgContextParameters> {\n\n public async initialize(parameters: IInitProgContextParameters){\n return CommunicationMessageService.initializePropertyContext(parameters);\n }\n\n public async get(parameters: IGetProgContextParameters) {\n return CommunicationMessageService.getPropertyContext(parameters);\n }\n\n public async dispose(parameters: IDisposeContextParameters) {\n return CommunicationMessageService.disposePropertyContext(parameters);\n }\n\n public async findMany(context_?: string, manufacturer_?: string, program_?: string, propertyKey_?: Array<string>): Promise<{\n [key: string]: IProgPropertyExt\n }> {\n const propertyItems: { [key: string]: IProgPropertyExt } = {};\n await this.traverse({\n propertyCallback: (manufacturer, program, property, values, current) => {\n if (propertyKey_?.indexOf(property.key) !== -1 && manufacturer.manufacturerName === manufacturer_ && program.programName === program_) {\n propertyItems[property.key] = Object.assign(manufacturer, program, property, {currentValue: current});\n }\n }\n }, {useRelevant: true, useSelection: true, filterStrategy: ContextFilterStrategy.LOCAL});\n return propertyItems;\n }\n\n public async findOne(manufacturer_?: string, program_?: string, propertyKey_?: string): Promise<IProgPropertyExt | undefined> {\n let propertyItem: IProgPropertyExt | undefined;\n await this.traverse({\n propertyCallback: (manufacturer, program, property) => {\n if (property.key === propertyKey_ && manufacturer.manufacturerName === manufacturer_ && program.programName === program_) {\n propertyItem = Object.assign(manufacturer, program, property);\n }\n }\n }, {useRelevant: true, useSelection: true, filterStrategy: ContextFilterStrategy.LOCAL});\n return propertyItem;\n }\n\n public async findAll(useSelection_?: boolean, useRelevant_?: boolean, instanceIdents_?: Array<number>, filterStrategy?: ContextFilterStrategy): Promise<IProgPropertyRootList<IProgPropertyContext>> {\n return await this.get({\n manufacturer: undefined,\n program: undefined,\n useSelection: useSelection_,\n useRelevant: useRelevant_,\n instanceIdents: instanceIdents_,\n filterStrategy: filterStrategy\n }) as IProgPropertyRootList<IProgPropertyContext>;\n }\n\n public async traverse(callbacks: IProgPropertyCallback<IProgPropertyContext>, parameters?: IGetProgContextParameters): Promise<boolean> {\n if(!parameters) {\n parameters = {\n useRelevant: true,\n useSelection: true\n };\n }\n const useCache_ = (!!this._cachedManufacturerList)\n const cachedValue = this._cachedManufacturerList || await this.get(parameters);\n const ppManufacturerList: IProgPropertyRootList<IProgPropertyContext> = useCache_ ? cachedValue : await this.get(parameters);\n this._cachedManufacturerList = useCache_ ? ppManufacturerList : undefined;\n if (!ppManufacturerList || !ppManufacturerList.children) {\n return false;\n }\n return this._traverse(callbacks, ppManufacturerList, useCache_);\n }\n\n}\nexport const ProgContextModel = new ProgContextModelClass()\n","import {\n ConfigurationService,\n EventFactoryService,\n EventService,\n globalEventBus,\n LocaleService,\n RequestService,\n WebViewerService,\n throttle,\n getAdaptiveTimeout\n} from \"@dh-software/webui-api\";\nimport {IEvent, ILayoutElement, IModuleElement, IProperty, IRootLayoutElement, IRootStylesElement} from \"../types\";\nimport {LocaleList} from \"@dh-software/webui-types\";\n\nclass ConstructionServiceClass {\n\n private _configuration?: IRootLayoutElement;\n private isInitialized?: Promise<void>;\n private preventLeaveConfirmation = false;\n\n constructor() {\n document.addEventListener('readystatechange', async () => {\n await ConfigurationService.Initialized;\n const configuration = await RequestService.fetchJSON(await RequestService.buildRequestURL(\"config/layout.json\"));\n const styles = await RequestService.fetchJSON(await RequestService.buildRequestURL(\"config/styles.json\"));\n\n await this.initialize(configuration, styles);\n });\n window.addEventListener(\"beforeunload\", (event: BeforeUnloadEvent) => {\n if (!this.preventLeaveConfirmation && window.g_configuration?.request_leave_confirmation) {\n event.preventDefault();\n event.returnValue = \"\";\n }\n });\n }\n\n get IsInitialized() {\n return this.isInitialized;\n }\n\n get PreventLeaveConfirmation() {\n return this.preventLeaveConfirmation;\n }\n\n set PreventLeaveConfirmation(value_: boolean) {\n this.preventLeaveConfirmation = value_;\n }\n\n public get CustomMailService() {\n return this._configuration?.customMailService;\n }\n\n public async getLocales(): Promise<LocaleList | undefined> {\n await this.IsInitialized;\n if (this._configuration) {\n return this._configuration.locales;\n }\n return undefined;\n }\n\n private async TranslatePageTitle(configuration: IRootLayoutElement) {\n if (configuration.locales) {\n await LocaleService.AddSource(configuration.locales);\n const translation = LocaleService.translate(\"furnview-app-title\", document.title);\n document.title = translation;\n const element = document.querySelector(\"title\");\n element?.addEventListener(\"template-loader-template-config-applied\", (event: CustomEventInit) => {\n if (event.detail[\"template-config\"].value.length < 1) {\n document.title = LocaleService.translate(\"furnview-app-title\", translation);\n }\n });\n }\n if (configuration[\"locale-overrides\"]) {\n await LocaleService.AddOverrides(configuration[\"locale-overrides\"]);\n }\n }\n\n private SetDocumentLanguageCode() {\n const langCode = LocaleService.getLanguage();\n if (document && document.documentElement) {\n document.documentElement.lang = langCode;\n }\n }\n\n private loadChildren(module: IModuleElement, component: HTMLElement) {\n if (module.children) {\n const children = new Array<HTMLElement>();\n for (let child of module.children) {\n const childElement = this.loadComponent(child);\n component[module.prepend ? \"prepend\" : \"append\"](childElement);\n children.push(childElement);\n }\n component.dispatchEvent(new CustomEvent(\"construction-service-children-loaded\", {detail: {\"children\": children}}));\n }\n }\n\n async loadStylesheets(currentModule: IModuleElement | ILayoutElement, element: Element) {\n if (!currentModule.customCSS) return;\n\n const rawCSS = Array.isArray(currentModule.customCSS) ? currentModule.customCSS : [currentModule.customCSS];\n let promise: Promise<any> = Promise.resolve()\n // @ts-ignore\n if(!element.shadowRoot && (promise = element.getUpdateComplete) !== undefined) {\n await promise\n }\n const shadowRoot = element.shadowRoot;\n\n if (shadowRoot) {\n try {\n const stylesheets = rawCSS.map(css => {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(css);\n return sheet;\n });\n shadowRoot.adoptedStyleSheets = [...shadowRoot.adoptedStyleSheets, ...stylesheets];\n } catch (ex) {\n rawCSS.forEach(css => {\n const style = document.createElement('style');\n style.textContent = css;\n shadowRoot.appendChild(style);\n });\n }\n } else {\n rawCSS.forEach((css, index) => {\n const tag = currentModule.tag || (<any>currentModule)?.[\"query\"] || element.tagName.toLowerCase();\n const cacheKey = `${tag}-${index}`;\n\n if (element.querySelector(`style[data-css-module=\"${cacheKey}\"]`)) return;\n const style = document.createElement('style');\n style.setAttribute('data-css-module', cacheKey);\n style.textContent = css;\n if(element === document.body) {\n document.head.appendChild(style);\n } else {\n element.prepend(style);\n }\n });\n }\n }\n\n private loadStyleVars(module: IModuleElement, component: HTMLElement | Element | any) {\n if (module.styleVars) {\n Object.keys(module.styleVars)\n .forEach((key) => {\n if (key.startsWith(\"--\")) { //For Security\n component.style.setProperty(key, module.styleVars?.[key]);\n }\n });\n if (component.requestUpdate) component.requestUpdate();\n }\n }\n\n private loadEvents(module: IModuleElement, component: HTMLElement | Element) {\n if (module.events && Array.isArray(module.events)) {\n module.events\n .forEach((event: IEvent) => {\n if (event.id) {\n component.addEventListener(event.defaultEvent || \"click\", async (ev: Event | CustomEvent) => {\n let eventData = event.data;\n if (ev instanceof CustomEvent) {\n eventData = JSON.stringify(eventData).replace(\"!$value\", ev.detail.value);\n eventData = JSON.parse(eventData);\n }\n await EventService.emitAsync(event.id, { data: eventData || {}, target: event.target || undefined });\n });\n }\n });\n }\n }\n\n private loadSceneEvents(configuration: IRootLayoutElement) {\n const sceneEvents = configuration[\"scene-events\"];\n if (!sceneEvents) return;\n\n for (const eventName of Object.keys(sceneEvents)) {\n const eventData = sceneEvents[eventName];\n const handlers = eventData.events;\n const executeAsynchronously = eventData[\"execute-async\"] != undefined ? eventData[\"execute-async\"] : false;\n const throttlingTimeout = eventData[\"throttling-timeout\"] as { min: number, max: number, baseline: number, modifier: number } | undefined;\n\n // EventFactoryService-Listener anhand des JSON-Keys auflösen (Keys = Property-Namen)\n const listener = (EventFactoryService as any)[eventName];\n if (!listener || typeof listener.register !== \"function\") {\n console.warn(`scene-events: unbekanntes EventFactoryService-Event \"${eventName}\"`);\n continue;\n }\n\n const baseHandler = async () => {\n for (const handler of handlers) {\n if (executeAsynchronously) {\n EventService.emitAsync(handler.id, { data: handler.data || {}, target: undefined });\n } else {\n await EventService.emitAsync(handler.id, { data: handler.data || {}, target: undefined });\n }\n }\n };\n\n const registeredHandler =\n throttlingTimeout === undefined\n ? baseHandler\n : throttle(baseHandler, getAdaptiveTimeout(throttlingTimeout.baseline, throttlingTimeout.min, throttlingTimeout.max, throttlingTimeout.modifier));\n\n listener.register(registeredHandler);\n }\n }\n\n private loadProperties(currentModule: IModuleElement, element: any) {\n const setProperty = (property: IProperty) => {\n if (typeof property.value === \"boolean\" && property.attribute && property.value) element.setAttribute(property.key, \"\");\n else if (typeof property.value === \"boolean\" && property.attribute && !property.value) element.removeAttribute(property.key, \"\");\n else if (typeof property.value === \"object\" && property.attribute) element.setAttribute(property.key, JSON.stringify(property.value));\n else {\n if (!property.attribute) {\n element[property.key] = property.value;\n } else {\n element.setAttribute(property.key, property.value);\n }\n }\n }\n if (currentModule.properties && element) {\n for (let property of currentModule.properties) {\n const readyValue = property.readyValue;\n if (readyValue) {\n WebViewerService.IsAppReady.then(() => {\n setProperty(Object.assign(property, {value: readyValue.value}));\n });\n }\n setProperty(property);\n }\n }\n }\n\n private loadClasses(currentModule: IModuleElement, element: Element) {\n if (currentModule.classes && element) {\n element.classList.add(...currentModule.classes);\n }\n }\n\n private loadComponent(module: IModuleElement) {\n const component: any = document.createElement(module.tag);\n this.loadClasses(module, component);\n this.loadProperties(module, component);\n this.loadStyleVars(module, component);\n this.loadStylesheets(module, component);\n this.loadEvents(module, component);\n return component;\n }\n\n async loadModule(currentModule: IModuleElement, element: Element) {\n const component = this.loadComponent(currentModule);\n element[currentModule.prepend ? \"prepend\" : \"append\"](component);\n if (currentModule.execute && component) {\n Object.values(currentModule.execute)\n .forEach((execFunc: any) => {\n component[execFunc.name].apply(execFunc.arguments ? execFunc.arguments : []);\n });\n }\n\n if (component == undefined || component.getUpdateComplete == undefined) {\n console.error(\"component: [\" + currentModule.tag + \"] could not be loaded!\");\n return;\n }\n\n await component.getUpdateComplete();\n if (currentModule.modules) {\n for (let module of currentModule.modules) {\n await this.loadModule(module, component);\n }\n }\n if (currentModule.areas) {\n for (let cArea of currentModule.areas) {\n await this.loadArea(cArea, component);\n }\n }\n this.loadChildren(currentModule, component);\n }\n\n async loadArea(area: ILayoutElement, parentElement: Element | Document) {\n let element = null;\n if (area.queryAll) {\n element = parentElement.querySelectorAll(area.query);\n if ((!element || element.length === 0) && (parentElement as HTMLElement).shadowRoot) {\n element = (parentElement as HTMLElement)?.shadowRoot?.querySelectorAll(area.query);\n }\n } else if (area.query) {\n element = parentElement.querySelector(area.query);\n if (!element && (parentElement as HTMLElement).shadowRoot) {\n element = (parentElement as HTMLElement)?.shadowRoot?.querySelector(area.query);\n }\n } else {\n element = parentElement;\n }\n\n if (!element) {\n console.warn(\"loadArea failed to find target!\");\n }\n\n\n const eventFunc = async (area: ILayoutElement, parentElement: Element | Document, element: Element) => {\n\n if (element) {\n if (area.modules) {\n for (let module of area.modules) {\n await this.loadModule(module, element);\n }\n }\n if (area.areas) {\n for (let cArea of area.areas) {\n await this.loadArea(cArea, element);\n }\n }\n this.loadProperties(area, element);\n this.loadStyleVars(area, element);\n this.loadStylesheets(area, element);\n this.loadEvents(area, element);\n this.loadClasses(area, element);\n }\n }\n\n if (element && element instanceof NodeList && element.length) {\n for (let i = 0; i < element.length; i++) {\n await eventFunc(area, parentElement, element[i]);\n }\n } else {\n await eventFunc(area, parentElement, element as Element);\n }\n\n if (element && (element as Element).dispatchEvent) {\n (element as Element).dispatchEvent(new CustomEvent(\"area-updated\", {detail: {}}));\n }\n }\n\n async initialize(configuration: IRootLayoutElement, styles?: IRootStylesElement) {\n if (!document.body.classList.contains(\"construction-container\")) {\n return;\n }\n // console.log(\"Construction> Building Layout\", configuration, styles);\n if (document.body.classList.contains(\"initialHide\")) {\n document.body.classList.remove(\"initialHide\");\n document.body.classList.add(\"hidden\");\n }\n let layout = configuration\n if (layout?.mergeErrors) {\n for (const mergeError of layout.mergeErrors) {\n console.error(mergeError[\"pre-text\"], mergeError[\"overwriting-object\"], mergeError[\"post-text\"]);\n }\n }\n console.log(\"layout json:\", layout);\n\n let configurationJson = JSON.stringify(layout);\n configurationJson = configurationJson.replace(/webui\\//g, `webui-content/${new URL(window.location.href).searchParams.get(\"token\")}/`);\n configurationJson = configurationJson.replace(/:token\\//g, `${new URL(window.location.href).searchParams.get(\"token\")}/`);\n layout = JSON.parse(configurationJson);\n this._configuration = layout;\n if (layout) {\n this.loadSceneEvents(layout);\n }\n\n if (styles) {\n for (const style of styles?.styles || []) {\n const styleElement = document.createElement(\"style\");\n styleElement.appendChild(document.createTextNode(style));\n document.head.appendChild(styleElement);\n }\n }\n if (layout && styles) {\n await this.TranslatePageTitle(layout);\n await this.loadArea(layout, document);\n if (!WebViewerService.FurnviewWebViewer) {\n WebViewerService.initialize(undefined);\n }\n this.SetDocumentLanguageCode();\n document.body.classList.remove(\"hidden\");\n globalEventBus.emit(\"construction:initialize\");\n }\n }\n\n}\n\nexport const ConstructionService = new ConstructionServiceClass();\n"],"x_google_ignoreList":[0,1,10,11,12,13],"mappings":"2DAQA,IAAI,GAAkC,IACpC,EAAe,EAAe,KAAU,GAAK,OAC7C,EAAe,EAAe,WAAgB,GAAK,aACnD,EAAe,EAAe,SAAc,GAAK,WAC1C,GACT,CAAG,GAAiB,CAAC,CAAC,EAWlB,GAAmC,IACrC,EAAgB,EAAgB,SAAc,GAAK,WACnD,EAAgB,EAAgB,OAAY,GAAK,SAC1C,GACT,CAAG,GAAkB,CAAC,CAAC,EAyBnB,GAA0C,IAC5C,EAAuB,EAAuB,IAAS,GAAK,MAC5D,EAAuB,EAAuB,OAAY,GAAK,SAC/D,EAAuB,EAAuB,MAAW,GAAK,QACvD,GACT,CAAG,GAAyB,CAAC,CAAC,ECZ7BA,SAAAA,EAAAA,EAAAA,CAOA,MAAO,CAINA,IANDA,IAAa,IAAIC,IAchBC,GAAAA,SAA6BC,EAAWC,EAAAA,CACvC,IAAMC,EAAmDL,EAAKM,IAAIH,CAAAA,EAC9DE,EACHA,EAASE,KAAKH,CAAAA,EAEdJ,EAAKQ,IAAIL,EAAM,CAACC,CAAAA,CAAAA,CAAAA,EAWlBK,IAAAA,SAA8BN,EAAWC,EAAAA,CACxC,IAAMC,EAAmDL,EAAKM,IAAIH,CAAAA,EAC9DE,IACCD,EACHC,EAASK,OAAOL,EAASM,QAAQP,CAAAA,IAAa,EAAG,CAAA,EAEjDJ,EAAKQ,IAAIL,EAAM,CAAA,CAAA,EAAA,EAelBS,KAAAA,SAA+BT,EAAWU,EAAAA,CACzC,IAAIR,EAAWL,EAAKM,IAAIH,CAAAA,EACpBE,GACFA,EACCS,MAAAA,CAAAA,CACAC,IAAI,SAACX,EAAAA,CACLA,EAAQS,CAAAA,CAAAA,CAAAA,GAIXR,EAAWL,EAAKM,IAAI,GAAA,IAElBD,EACCS,MAAAA,CAAAA,CACAC,IAAI,SAACX,EAAAA,CACLA,EAAQD,EAAMU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CCxGb,SAAS,EAAyD,EAAsB,EAAA,EAA4B,CAyCvH,MArCC,GAA4B,IAHK,IACtB,EAAQ,IAAI,IAAI,CAAI,GAAK,CAAA,EAAA,CAAI,SAAW,EAsCnD,EAA4B,UAAY,MAjCrC,EACA,IACuC,CACvC,IAAM,EAAmB,EAAQ,IAAI,IAAI,CAAI,GAAK,CAAA,EAC5C,EAAmB,EAAQ,IAAI,IAAI,GAAG,GAAK,CAAA,EAE3C,EAA2B,CAAA,EAEjC,IAAA,IAAW,KAAW,EAClB,GAAI,CACA,IAAM,EAAU,EAA4B,CAAK,EAC7C,GAAU,OAAO,EAAO,MAAS,YACjC,EAAS,KAAK,CAAM,CAE5B,OAAS,EAAO,CACZ,QAAQ,MAAM,gEAAgE,OAAO,CAAI,EAAC,IAAM,CAAK,EACrG,EAAS,KAAK,QAAQ,OAAO,CAAK,CAAC,CACvC,CAGJ,IAAA,IAAW,KAAW,EAClB,GAAI,CACA,IAAM,EAAU,EAA+B,EAAM,CAAK,EACtD,GAAU,OAAO,EAAO,MAAS,YACjC,EAAS,KAAK,CAAM,CAE5B,OAAS,EAAO,CACZ,QAAQ,MAAM,gEAAgE,OAAO,CAAI,EAAC,IAAM,CAAK,EACrG,EAAS,KAAK,QAAQ,OAAO,CAAK,CAAC,CACvC,CAEJ,OAAO,QAAQ,WAAW,CAAQ,CACtC,EAEO,CACX,CC5CO,IAAM,EAAiB,EAAA,EAC7B,EAAuB,YAAc,KAAK,OAAA,CAAO,CAAE,SAAS,EAAE,CAAA,CAAE,UAAU,CAAC,EAGrE,SAAS,EACZ,EACA,EACA,EACY,CACZ,IAAM,EAAQ,GAAuB,CACjC,EAAQ,CAAO,EACZ,GAAS,MACR,EAAa,YAAA,CAErB,EACM,EAAe,CACjB,gBAAmB,CACf,EAAe,IAAI,EAAW,CAAI,CACtC,CAAA,EAGJ,OADA,EAAe,GAAG,EAAW,CAAI,EAC1B,CACX,CAEO,SAAS,EAAsC,EAAc,EAAqD,CACrH,OAAO,EAAU,EAAW,EAAS,CAAC,KAAM,EAAA,CAAK,CACrD,CCrCO,SAAS,EACf,EACA,EAC2B,CAC3B,IAAI,EAAc,EAClB,OAAO,GAAI,IAAgB,CAC1B,IAAM,EAAM,KAAK,IAAA,EACb,EAAM,GAAe,IACxB,EAAc,EACd,EAAQ,GAAG,CAAI,EAEjB,CACD,CAOO,SAAS,EACf,EAAW,IACX,EAAM,IACN,EAAM,IACN,EAAW,IACF,CACT,IAAI,EAAU,EAGR,EAAQ,UAAU,qBAAuB,EAC3C,GAAS,EAAG,GAAW,EAAS,IAC3B,GAAS,IAAG,GAAW,EAAS,IAGzC,IAAM,EAAO,UAAoD,aAOjE,OANI,GAAO,GAAO,IAAG,GAAW,GAGf,OAAO,WAAW,oBAAoB,CAAA,CAAE,UAC3C,GAAW,GAElB,KAAK,IAAI,EAAK,KAAK,IAAI,EAAS,CAAG,CAAC,CAC5C,CCvBA,IAAM,EAAN,KAAwB,CAEZ,QAAU,EACV,sBAAA,IAA8H,IAE/H,SAAS,EAAwB,CACpC,IAAM,EAAqB,EAAS,YAAY,KAE5C,EAA0B,KAAK,sBAAsB,IAAI,CAAQ,EAChE,IACD,EAA0B,CAAA,EAC1B,KAAK,sBAAsB,IAAI,EAAU,CAAuB,GAGpE,IAAI,EAAc,EAAS,YACrB,EAAA,IAAwC,IAE9C,KAAO,GAAe,IAAgB,OAAO,WACrC,EAAY,eAAe,gBAAgB,IAEtC,EAAoB,gBAAkB,CAAA,EAAA,CAErB,MAAM,EAAG,IAAM,EAAE,SAAW,EAAE,QAAQ,CAAA,CAAE,QAAQ,GAAQ,CAC1E,IAAM,EAAiB,GAAG,OAAO,EAAK,SAAS,EAAC,GAAI,EAAK,aAEzD,GAAI,EAAqB,IAAI,CAAc,EACvC,OAGJ,IAAM,EAAgB,EAAiB,EAAK,YAI5C,GAAI,OAAO,GAAiB,WAAY,CACpC,IAAM,EAAW,GACN,EAAa,MAAM,EAAU,CAAC,CAAO,CAAC,EAEjD,KAAK,QAAQ,GAAG,EAAK,UAAW,CAAO,EACvC,EAAyB,KAAK,CAAE,UAAW,EAAK,UAAW,SAAA,CAAS,EACpE,EAAqB,IAAI,CAAc,CAC3C,MACI,QAAQ,KACJ,0BAA0B,EAAK,WAAU,eAAgB,OAAO,EAAK,SAAS,EAAC,gBAChE,EAAY,KAAI,6BAA8B,EAAkB,EAAA,CAG3F,CAAC,EAEL,EAAc,OAAO,eAAe,CAAW,CAEvD,CAEO,WAAW,EAAwB,CACtC,IAAM,EAAmB,KAAK,sBAAsB,IAAI,CAAQ,EAC5D,IACA,EAAiB,SAAS,CAAE,YAAW,aAAc,CACjD,KAAK,QAAQ,IAAI,EAAW,CAAO,CACvC,CAAC,EACD,KAAK,sBAAsB,OAAO,CAAQ,EAElD,CAEA,MAAa,UAAkC,EAAc,EAAmC,CACvF,KAAK,IAAI,CAAS,GACnB,QAAQ,KAAK,oCAAqC,CAAS,EAE/D,MAAM,KAAK,QAAQ,UAAU,EAAW,CAAM,EAC9C,MAAM,KAAK,QAAQ,UAAU,qBAAsB,CAAE,GAAI,EAAU,SAAA,EAAY,KAAM,CAAA,CAAe,CACxG,CAEO,KAA6B,EAAc,EAA0B,CACnE,KAAK,IAAI,CAAS,GACnB,QAAQ,KAAK,+BAAgC,CAAS,EAE1D,KAAK,QAAQ,KAAK,EAAW,CAAM,EACnC,KAAK,QAAQ,KAAK,qBAAsB,CAAE,GAAI,EAAU,SAAA,EAAY,KAAM,CAAA,CAAe,CAC7F,CAEO,GAA2B,EAAc,EAA4C,CACxF,KAAK,QAAQ,GAAG,EAAW,CAAO,CACtC,CAEO,IAA4B,EAAc,EAA4C,CACzF,KAAK,QAAQ,IAAI,EAAW,CAAO,CACvC,CAEO,IAA4B,EAAuB,CACtD,OAAO,KAAK,QAAQ,IAAI,CAAS,CACrC,CAEJ,EAEO,SAAS,EAAqC,EAAc,EAA0B,EAAuB,CAChH,OAAO,SACH,EACA,EACA,EACF,CACE,IAAM,EAAc,EAAO,YAEtB,EAAY,eAAe,gBAAgB,EAOpC,MAAM,QAAQ,EAAY,cAAc,IAChD,QAAQ,MAAM,sCAAsC,EAAY,KAAI,+DAAgE,EACpI,EAAY,eAAiB,CAAA,GAR7B,OAAO,eAAe,EAAa,iBAAkB,CACjD,MAAO,CAAA,EACP,SAAU,GACV,aAAc,GACd,WAAY,EAAA,CACf,EAKJ,EAAY,eAAwD,KAAK,CACtE,YACA,WACA,WAAY,CAAA,CACf,CACL,CACJ,CACO,IAAM,EAAe,IAAI,ECnIzB,SAAS,GAAsC,CAClD,IAAI,EACA,EAEE,EAAe,IAAI,SAAS,EAAS,IAAW,CAClD,EAAoB,EACpB,EAAoB,CACxB,CAAC,EAYD,MAVA,GAAQ,QAAU,SAAU,EAAiB,CAEzC,OADA,EAAkB,MAAM,KAAM,CAAU,EACjC,CACX,EAEA,EAAQ,OAAS,SAAU,EAAY,CAEnC,OADA,EAAiB,MAAM,KAAM,CAAK,EAC3B,CACX,EAEO,CACX,CC+EO,IAAM,EAAiB,IAAI,KApGmB,CAEhC,aAEjB,aAAc,CACV,KAAK,aAAe,EAAA,EACpB,EAAU,mCAAsC,CAC5C,KAAK,aAAa,QAAA,CACtB,EAAG,CAAC,KAAM,EAAA,CAAK,CACnB,CAEA,IAAW,aAA4B,CACnC,OAAO,KAAK,YAChB,CAEA,MAAa,MAAM,EAAc,EAAiC,EAA2C,CACpG,GACD,MAAM,KAAK,aAEf,IAAuB,CAAA,EAEvB,IAAI,EAAkB,CAClB,OAAQ,EAAS,QAAU,MAE3B,MAAO,EAAS,MAAQ,UAAY,WACpC,YAAa,cACb,SAAU,QAAA,EAOd,OALI,EAAS,cAAa,EAAW,QAAU,IAAI,QAAQ,CAAC,eAAgB,EAAS,WAAA,CAAY,GAC7F,EAAS,OACL,EAAS,MAAQ,OAAO,EAAS,MAAS,WAAU,EAAS,KAAO,KAAK,UAAU,EAAS,IAAI,GACpG,EAAW,KAAO,EAAS,MAExB,MAAM,MAAM,IAAI,QAAQ,EAAM,CAAU,CAAC,CACpD,CAEA,MAAa,UAA+B,EAAc,EAAoC,CAI1F,OAHK,GACD,MAAM,KAAK,aAER,KAAK,MAAM,EAAM,CACpB,OAAQ,MACR,MAAO,GACP,KAAM,GACN,YAAa,kBAAA,EACd,CAAY,CAAA,CACV,KAAK,KAAO,IACL,EAAK,GACE,MAAM,EAAK,KAAA,EAEX,IAEd,CAAA,CACA,MAAO,GACG,IACV,CACT,CAEO,YAAY,EAAsB,CACrC,IAAM,EAAM,IAAI,KAAM,EAAK,WAAW,MAAM,EAAiE,GAA7D,OAAO,SAAS,QAAU,EAAK,WAAW,GAAG,EAAI,GAAK,MAAa,CAAI,EAEvH,IADsB,IAAI,OAAO,SAAS,IAC1C,CAAA,CAAU,aAAa,SAAS,EAAO,IAAQ,CAC3C,EAAI,aAAa,IAAI,EAAK,CAAK,CACnC,CAAC,EACD,IAAI,EAAY,OAAO,YAIvB,OAHI,GACA,EAAI,aAAa,IAAI,UAAW,CAAS,EAEtC,EAAI,IACf,CAEA,MAAa,IAAI,EAAiC,CAE9C,OADA,MAAM,KAAK,aACJ,KAAK,MAAM,EAAM,CAAC,OAAQ,MAAO,MAAO,GAAO,KAAM,EAAA,CAAK,CACrE,CAEA,MAAa,KAAK,EAAc,EAAsB,CAElD,OADA,MAAM,KAAK,aACJ,KAAK,MAAM,EAAM,CAAC,OAAQ,OAAQ,MAAO,GAAO,KAAM,GAAM,KAAM,CAAA,CAAM,CACnF,CAEO,SAAS,EAAsB,CAClC,OAAO,KAAK,YAAY,EAAK,QAAQ,GAAG,IAAM,GAAK,EAAO,OAAO,SAAS,OAAS,EAAO,OAAO,SAAS,OAAO,QAAQ,IAAK,GAAG,CAAC,CACtI,CAEA,MAAa,gBAAgB,EAA+B,CAExD,OADA,MAAM,KAAK,aACJ,KAAK,SAAS,SAAU,OAAO,gBAAgB,iBAAmB,KAAO,GAAG,GAAK,OAAO,gBAAgB,aAAe,OAAO,gBAAgB,aAAe,IAAM,KAAM,GAAM,CAC1L,CAEA,MAAa,qBAAqB,EAAa,EAAiB,CAM5D,OAAO,MADY,MAJI,KAAK,KAAK,wBAAyB,KAAK,UAAU,CACrE,MACA,SAAA,CACH,CAAC,EAAA,CAC0B,KAAA,EAAA,CAChB,GAChB,CACJ,EC/Ca,EAAuB,IAAI,KAjCR,CAEpB,oBAER,IAAW,aAAgC,CAKvC,OAJI,KAAK,sBACL,KAAK,oBAAsB,EAAA,EAC3B,KAAK,mBAAA,GAEF,KAAK,mBAChB,CAEA,IAAW,eAA8B,CACrC,OAAO,KAAK,YAAY,KAAK,GAClB,OAAO,eACjB,CACL,CAEA,MAAc,oBAAqB,CAC/B,IAAM,EAAO,MAAM,EAAe,UAAU,4BAA8B,OAAO,SAAS,OAAQ,EAAI,EAClG,EAAK,aAAe,EAAK,kBACzB,OAAO,YAAc,EAAK,YAC1B,OAAO,gBAAkB,EAAK,gBAC9B,OAAO,UAAY,EAAK,UACxB,OAAO,YAAc,EAAK,YAC1B,OAAO,qBAAuB,EAAK,sBAEvC,KAAK,oBAAqB,QAAQ,CAAC,CAAI,CAAC,EACxC,EAAe,KAAK,+BAAgC,CAAI,CAC5D,CAEJ,ECjCa,EAAe,IAAI,EAAuB,KAAA,EAkO1C,EAAmB,IAAI,cA7NA,CAAkB,CAEjC,UACA,OAAS,IAAI,EAEb,YAAiC,EAAA,EAC1C,mBACA,aAEA,wBAA+B,CAAA,EAC/B,gBAAuB,CAAA,EAE/B,IAAI,YAAgC,CAChC,OAAO,KAAK,WAChB,CAEA,IAAI,gBAAgD,CAChD,OAAO,KAAK,YAChB,CAEA,IAAI,mBAAuC,CACvC,OAAO,KAAK,kBAChB,CAEA,aAAc,CACV,MAAA,EACA,KAAK,UAAY,IAAI,EAAwB,KAAK,oBAAoB,cAAyB,GAAG,EAClG,KAAK,gBAAgB,CAAY,CACrC,CAEA,WAAW,EAAuC,CAC9C,KAAK,mBAAqB,GAAU,SAAS,cAAc,oBAAoB,GAAK,IAAA,GACpF,KAAK,sBAAsB,KAAK,kBAAkB,EAClD,EAAe,KAAK,oBAAqB,KAAK,kBAAkB,EAChE,KAAK,GAAG,WAAY,SAAY,CAC5B,KAAK,YAAY,QAAA,EACjB,EAAe,KAAK,qBAAsB,KAAK,kBAAkB,EACjE,MAAM,KAAK,qBAAA,CACf,CAAC,EAGD,KAAK,UAAU,gBAAgB,EAAc,CAAC,KAA0B,IAAA,CAAyB,EAGjG,KAAK,gBAAA,CACT,CAEQ,sBAAsB,EAA6C,CACvE,GAAI,CAAC,EAAQ,OACb,IAAM,EAAa,CACf,sBAAuB,SAAU,YAAa,gBAAiB,eAAgB,YAAA,EAE7E,GAAW,EAAO,aAAa,OAAO,GAAK,GAAA,CAC5C,MAAM,GAAG,CAAA,CAAE,IAAI,GAAK,EAAE,KAAA,CAAM,CAAA,CAAE,OAAO,OAAO,EAC3C,EAAU,IAAI,IAAI,EAAQ,IAAI,GAAK,EAAE,MAAM,KAAK,CAAA,CAAE,EAAE,CAAC,EAC3D,IAAA,IAAW,KAAa,EAAY,CAChC,IAAM,EAAU,EAAU,MAAM,KAAK,CAAA,CAAE,GAClC,EAAQ,IAAI,CAAO,GAAG,EAAQ,KAAK,CAAS,CACrD,CACA,EAAO,aAAa,QAAS,EAAQ,KAAK,IAAI,CAAC,CACnD,CAEA,MAAc,sBAAuB,CACjC,IAAM,EAAW,MAAM,KAAK,6BAAA,EACxB,EACA,EAAS,oBAAoB,qBAAA,EAE7B,MAAM,KAAK,YAAY,iCAAkC,CAAA,CAAE,CAEnE,CAEO,iBAAkB,CAEjB,KAAK,qBACL,KAAK,mBAAmB,IAAM,EAAe,YAAY,OAAO,SAAS,KAAK,QAAQ,QAAS,WAAW,EAAI,sBAAsB,EACpI,KAAK,UAAU,kBAAkB,KAAK,mBAAmB,aAAuB,EAExF,CAEO,GAAG,EAAgB,EAAyC,CAC/D,KAAK,OAAO,GAAG,EAAQ,CAAQ,CAKnC,CAEO,gBAAgB,EAAqD,CAKxE,GAJI,KAAK,cACL,KAAK,aAAa,OAAA,EAEtB,KAAK,aAAe,EAAA,EAChB,CAAC,KAAK,mBAAoB,CAC1B,KAAK,aAAa,OAAA,EAClB,MACJ,CACA,IAAM,MAAa,CACf,KAAK,cAAc,QAAA,EACnB,KAAK,oBAAoB,oBAAoB,OAAQ,CAAI,CAC7D,EAIA,OAHA,KAAK,oBAAoB,iBAAiB,OAAQ,CAAI,EACtD,KAAK,UAAU,kBAAkB,KAAK,mBAAmB,aAAuB,EAEzE,EAAQ,YAAY,KAAK,kBAAmB,CACvD,CAEO,IAAI,EAAgB,EAA2C,CAClE,KAAK,OAAO,IAAI,EAAa,CAAS,CAW1C,CAEO,SAAS,EAAgB,EAAkE,CAC9F,KAAK,OAAO,KAAK,EAAQ,GAAG,CAAW,CAC3C,CAYA,MAAa,YAAY,EAAkB,EAAmB,EAA4B,CACtF,GAAI,EAAkB,CAClB,MAAM,QAAQ,KAA0B,EAAU,CAAW,EAC7D,MACJ,CAEA,GAAM,CAAC,GAAS,MADK,MAAM,QAAe,KAA0B,EAAU,CAAW,GAC/D,CAAA,EAC1B,OAAO,CAcX,CA2BgB,eAAe,EAA6B,CACxD,GAAM,CAAE,WAAY,EAAQ,OAW5B,OATI,IAAY,YACZ,KAAK,YAAY,QAAA,EACjB,KAAK,qBAAA,EACE,IAEP,KAAK,OAAO,IAAI,CAAO,GACvB,KAAK,OAAO,KAAK,EAAS,GAAG,EAAQ,IAAI,EAClC,IAEJ,EACX,CAEgB,eAAe,EAA8C,CACzE,GAAM,CAAE,WAAY,EAAQ,OAE5B,GAAI,KAAK,OAAO,IAAI,CAAO,EAEvB,OADA,KAAK,OAAO,KAAK,EAAS,GAAG,EAAQ,IAAI,EAClC,QAAQ,QAAA,CAGvB,CAEA,MAAa,8BAAyD,CAElE,OADA,MAAM,KAAK,WACJ,KAAK,kBAAkB,aAClC,CAEJ,EAUA,OAAO,8BAAgC,EACvC,OAAO,iBAAmB,ECvP1B,IAAM,EAAY,CAAA,EAClB,IAAK,IAAI,EAAI,EAAG,EAAI,IAAK,EAAE,EACvB,EAAU,MAAM,EAAI,IAAA,CAAO,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAE7C,SAAS,EAAgB,EAAK,EAAS,EAAG,CAC7C,OAAQ,EAAU,EAAI,EAAS,IAC3B,EAAU,EAAI,EAAS,IACvB,EAAU,EAAI,EAAS,IACvB,EAAU,EAAI,EAAS,IACvB,IACA,EAAU,EAAI,EAAS,IACvB,EAAU,EAAI,EAAS,IACvB,IACA,EAAU,EAAI,EAAS,IACvB,EAAU,EAAI,EAAS,IACvB,IACA,EAAU,EAAI,EAAS,IACvB,EAAU,EAAI,EAAS,IACvB,IACA,EAAU,EAAI,EAAS,KACvB,EAAU,EAAI,EAAS,KACvB,EAAU,EAAI,EAAS,KACvB,EAAU,EAAI,EAAS,KACvB,EAAU,EAAI,EAAS,KACvB,EAAU,EAAI,EAAS,KAAA,CAAM,YAAW,CAChD,CC1BA,IAAI,EACE,EAAQ,IAAI,WAAW,EAAE,EAChB,SAAS,GAAM,CAC1B,GAAI,CAAC,EAAiB,CAClB,GAAI,OAAO,OAAW,KAAe,CAAC,OAAO,gBACzC,MAAU,MAAM,0GAA0G,EAE9H,EAAkB,OAAO,gBAAgB,KAAK,MAAM,CACxD,CACA,OAAO,EAAgB,CAAK,CAChC,CCTA,IAAA,EAAe,CAAE,WADE,OAAO,OAAW,KAAe,OAAO,YAAc,OAAO,WAAW,KAAK,MAAM,CAC3E,ECE3B,SAAS,EAAG,EAAS,EAAK,EAAQ,CAC9B,GAAI,EAAO,YAAsB,CAAC,EAC9B,OAAO,EAAO,WAAU,EAE5B,IAAqB,CAAA,EACrB,IAAM,EAAO,EAAQ,QAAU,EAAQ,MAAG,GAAQ,EAAG,EACrD,GAAI,EAAK,OAAS,GACd,MAAU,MAAM,mCAAmC,EAcvD,MAZA,GAAK,GAAM,EAAK,GAAK,GAAQ,GAC7B,EAAK,GAAM,EAAK,GAAK,GAAQ,IAWtB,EAAgB,CAAI,CAC/B,CC2GO,IAAM,EAAiB,IAAI,KAjImB,CAEjD,cAAe,CACX,OAAOK,EAAA,CACX,CAEO,qBAAqB,EAAqB,CAC7C,IAAM,EAAY,IAAI,IAAI,CAAG,EAG7B,OAFA,EAAU,aAAa,OAAO,SAAS,EACvC,EAAU,aAAa,OAAO,SAAS,EAChC,EAAU,IACrB,CAEO,iCAAiC,EAAc,CAClD,IAAM,EAAQ,EAAK,MAAM,GAAG,EACxB,EAAM,GAIV,OAHA,EAAM,QAAS,GAAY,CACvB,GAAO,mBAAmB,CAAO,EAAI,GACzC,CAAC,EACM,EAAI,OAAO,EAAG,EAAI,OAAS,CAAC,CACvC,CAEO,WAAW,EAAiB,EAAkB,CAGjD,GAAI,CAAC,OAAO,cACR,GAAM,OAAO,MACT,MAAM,CAAO,CAAA,CACR,KAAK,GAAY,EAAS,KAAA,CAAM,CAAA,CAChC,KAAK,GAAQ,CACV,IAAM,EAAO,SAAS,cAAc,GAAG,EACvC,EAAK,KAAO,IAAI,gBAAgB,CAAI,EACpC,EAAK,SAAW,EAChB,EAAK,MAAA,CACT,CAAC,CAAA,CACA,MAAM,QAAQ,KAAK,MACrB,CACH,IAAI,EAA0B,SAAS,cAAc,GAAG,EASxD,GARA,EAAK,KAAO,EACZ,EAAK,SAAW,GAAY,UAC5B,EAAK,MAAM,QAAU,OACrB,EAAK,MAAM,QAAU,IACrB,EAAK,MAAM,MAAQ,eAElB,SAAS,MAAQ,SAAS,gBAAA,CAAiB,YAAY,CAAI,EAExD,OAAO,EAAK,OAAU,WACtB,EAAK,MAAA,MACF,CACH,EAAK,OAAS,SACd,IAAI,EAAQ,SAAS,YAAY,OAAO,EACxC,EAAM,UAAU,QAAS,GAAM,EAAI,EACnC,EAAK,cAAc,CAAK,CAC5B,EAEC,OAAO,KAAO,OAAO,UAAA,CAAW,gBAAgB,EAAK,IAAI,CAC9D,MACJ,GAIW,OAAO,eAAiB,SAAS,YAAa,CACrD,IAAI,EAAU,OAAO,KAAK,EAAS,QAAQ,EAC3C,GAAS,SAAS,MAAA,EAClB,GAAS,SAAS,YAAY,SAAU,GAAM,GAAY,CAAO,EACjE,GAAS,MAAA,CACb,CACJ,CAEQ,4BAA4B,EAAc,EAAqB,EAA8B,CACjG,IAAI,EAAW,SAAS,cAAc,UAAU,EAChD,EAAS,MAAQ,EAGjB,EAAS,MAAM,IAAM,IACrB,EAAS,MAAM,KAAO,IACtB,EAAS,MAAM,SAAW,QAE1B,SAAS,KAAK,YAAY,CAAQ,EAClC,EAAS,MAAA,EACT,EAAS,OAAA,EAET,GAAI,CACA,IAAI,EAAa,SAAS,YAAY,MAAM,EAKxC,OAJJ,SAAS,KAAK,YAAY,CAAQ,EAC9B,EACO,EAAA,EAEA,EAAW,MAAM,oBAAoB,CAAC,CAErD,OAAS,EAAK,CAEV,OADA,SAAS,KAAK,YAAY,CAAQ,EAC3B,EAAO,CAAY,CAC9B,CACJ,CAEA,MAAa,oBAAoB,EAAc,CAC3C,OAAO,IAAI,UAAU,EAAS,IAAW,CACrC,GAAI,CAAC,UAAU,UAAW,CACtB,KAAK,4BAA4B,MAAY,EAAQ,EAAE,EAAG,CAAM,EAChE,MACJ,CACA,OAAO,UAAU,UAAU,UAAU,CAAI,CAAA,CAAE,KAAK,UAAY,CACxD,EAAQ,CAAI,CAChB,EAAG,SAAU,EAAK,CACd,EAAO,CAAG,CACd,CAAC,CACL,EAAA,CACJ,CAEO,gBAAiB,CAKpB,MAJA,GAAI,iEAAiE,KAAK,UAAU,SAAS,GACrF,UAAU,WAAa,YAAc,UAAU,eAAiB,EAI5E,CAEO,UAAU,EAAqB,CAMlC,OALI,GAAO,EAAI,OAAS,EACb,EAAI,QAAQ,eAAgB,SAAU,EAAG,CAC5C,OAAO,OAAO,cAAc,SAAS,EAAE,MAAM,EAAG,EAAE,CAAC,CAAC,CACxD,CAAC,EAEE,CACX,CAEJ,EC80Ba,EAA8B,IAAI,KAx4BgC,CAE3E,aAAc,CACV,EAAc,+BAAgC,SAAY,CACtD,OAAO,kBAAoB,MAAM,KAAK,cAAA,CAC1C,CAAC,CACL,CAEA,MAAc,KAAK,EAAA,GAAqB,EAAsB,CAE1D,OADA,MAAM,EAAiB,WAChB,EAAiB,YAAY,EAAU,CAAI,CACtD,CAIA,OAAO,EAAyB,CAC5B,OAAO,KAAK,KAAK,kBAAmB,CAAI,CAC5C,CAEA,iBAAiB,EAA6B,CAC1C,OAAO,KAAK,KAAK,4BAA6B,CAAK,CACvD,CAEA,4BAA4B,EAAsB,EAAsB,EAAoB,EAA+B,CACvH,OAAO,KAAK,KAAK,uCAAwC,EAAc,EAAc,EAAY,CAAM,CAC3G,CAEA,+BAA+C,CAC3C,OAAO,KAAK,KAAK,yCAAyC,CAC9D,CAEA,+BAA+C,CAC3C,OAAO,KAAK,KAAK,yCAAyC,CAC9D,CAEA,eAAe,EAA4B,CACvC,OAAO,KAAK,KAAK,0BAA2B,CAAI,CACpD,CAEA,kBAAkB,EAA0B,EAAqC,EAAiD,CAC9H,OAAO,KAAK,KAAK,6BAA8B,EAAgB,EAAU,CAAI,CACjF,CAEA,gBAAgB,EAAsB,EAAiB,EAAsC,CACzF,OAAO,KAAK,KAAK,2BAA4B,EAAc,EAAS,CAAU,CAClF,CAEA,aAAa,EAAsB,EAA+B,CAC9D,OAAO,KAAK,KAAK,wBAAyB,EAAc,CAAO,CACnE,CAEA,qBAAoC,CAChC,OAAO,KAAK,KAAK,yBAAyB,CAC9C,CAEA,qBAAoC,CAChC,OAAO,KAAK,KAAK,2BAA2B,CAChD,CAMA,eAAiC,CAC7B,OAAO,KAAK,KAAK,qBAAqB,CAC1C,CAEA,YAAY,EAAsB,EAAiB,EAAc,EAAc,EAAuB,EAA8C,CAChJ,OAAO,KAAK,KAAK,uBAAwB,EAAc,EAAS,EAAM,EAAM,EAAc,CAAiB,CAC/G,CAEA,aAAa,EAA2C,CACpD,OAAO,KAAK,KAAK,wBAAyB,CAAK,CACnD,CAMA,6BAA6B,EAAsB,EAAsD,CACrG,OAAO,KAAK,KAAK,wCAAyC,EAAc,CAAO,CACnF,CAEA,sBAAsB,EAAkD,CACpE,OAAO,KAAK,KAAK,iCAAkC,CAAQ,CAC/D,CAEA,YAAY,EAAiC,CACzC,OAAO,KAAK,KAAK,uBAAwB,CAAQ,CACrD,CAEA,4BAA4B,EAAsB,EAAiB,EAAoC,CACnG,OAAO,KAAK,KAAK,uCAAwC,CACrD,eACA,UACA,YAAA,CACH,CACL,CAEA,iBAAgC,CAC5B,OAAO,KAAK,KAAK,0BAA0B,CAC/C,CAEA,wBAAwB,EAAqC,CACzD,OAAO,KAAK,KAAK,mCAAoC,CAAQ,CACjE,CAEA,0BAAyC,CACrC,OAAO,KAAK,KAAK,mCAAmC,CACxD,CAEA,kBAAkB,EAA8C,CAC5D,OAAO,KAAK,KAAK,6BAA8B,CAAI,CACvD,CAEA,gBAAgB,EAA+C,CAC3D,OAAO,KAAK,KAAK,2BAA4B,CAAc,CAC/D,CAEA,mBAAmB,EAAuD,CACtE,OAAO,KAAK,KAAK,8BAA+B,CAAc,CAClE,CAKA,eAAe,EAAe,EAAgB,EAAe,EAAiB,EAAmB,EAA8B,EAAmC,CAC9J,OAAO,KAAK,KAAK,0BAA2B,EAAO,EAAQ,EAAO,EAAO,EAAU,EAAoB,CAAS,CACpH,CAEA,kBAAkB,EAAe,EAAgB,EAAe,EAAiB,EAAqB,EAAG,EAAqB,EAAG,EAAsB,GAAM,EAAgC,GAAqB,CAC9M,OAAO,KAAK,KAAK,6BAA8B,EAAO,EAAQ,EAAO,EAAO,EAAY,EAAY,EAAY,CAAoB,CACxI,CAEA,iBAAiB,EAAkC,CAC/C,OAAO,KAAK,KAAK,wBAAyB,CAAU,CACxD,CAEA,gBAAgB,EAA2B,CACvC,OAAO,KAAK,KAAK,2BAA4B,CAAG,CACpD,CAEA,YAAY,EAAsB,EAA0B,EAA+B,CACvF,OAAO,KAAK,KAAK,uBAAwB,EAAc,EAAkB,CAAO,CACpF,CAEA,oBAAmC,CAC/B,OAAO,KAAK,KAAK,6BAA6B,CAClD,CAEA,YAA2B,CACvB,OAAO,KAAK,KAAK,qBAAqB,CAC1C,CAEA,kBAAiC,CAC7B,OAAO,KAAK,KAAK,2BAA2B,CAChD,CAEA,aAA4B,CACxB,OAAO,KAAK,KAAK,sBAAsB,CAC3C,CAEA,UAAU,EAA4B,CAClC,OAAO,KAAK,KAAK,sCAAuC,CAAI,CAChE,CAEA,YAA2B,CACvB,OAAO,KAAK,KAAK,qBAAqB,CAC1C,CAEA,oBAAoB,EAA+B,CAC/C,OAAO,KAAK,KAAK,gCAAiC,CAAU,CAChE,CAEA,yCAAyC,EAAoB,EAAyC,CAClG,OAAO,KAAK,KAAK,yDAA0D,EAAW,CAAgB,CAC1G,CAEA,iBAAgC,CAC5B,OAAO,KAAK,KAAK,0BAA0B,CAC/C,CAEA,2BAA2B,EAA0D,CACjF,OAAO,KAAK,KAAK,sCAAuC,CAAM,CAClE,CAEA,0BAA0B,EAA8B,CACpD,OAAO,KAAK,KAAK,qCAAsC,CAAK,CAChE,CAEA,wBAAwB,EAA8B,CAClD,OAAO,KAAK,KAAK,mCAAoC,CAAI,CAC7D,CAEA,oBAAoB,EAA2B,CAC3C,OAAO,KAAK,KAAK,+BAAgC,CAAE,CACvD,CAEA,sBAAsB,EAA2B,CAC7C,OAAO,KAAK,KAAK,iCAAkC,CAAE,CACzD,CAEA,gBAAgB,EAA2B,CACvC,OAAO,KAAK,KAAK,2BAA4B,CAAE,CACnD,CAEA,aAAa,EAA2B,CACpC,OAAO,KAAK,KAAK,wBAAyB,CAAE,CAChD,CAEA,mBAAmB,EAAiB,EAAY,EAAgC,CAC5E,OAAO,KAAK,KAAK,8BAA+B,EAAS,EAAI,CAAU,CAC3E,CAEA,SAAS,EAA4C,CACjD,OAAO,KAAK,KAAK,wBAAyB,CAAU,CACxD,CAEA,aAAc,CACV,OAAO,KAAK,KAAK,sBAAsB,CAC3C,CAEA,YAAY,EAAc,CACtB,OAAO,KAAK,KAAK,uBAAwB,CAAI,CACjD,CAEA,iBAAiB,EAA+B,CAC5C,OAAO,KAAK,KAAK,4BAA6B,CAAK,CACvD,CAMA,WAAW,EAA8B,CACrC,OAAO,KAAK,KAAK,yBAA0B,CAAI,CACnD,CAEA,mBAAkC,CAC9B,OAAO,KAAK,KAAK,4BAA4B,CACjD,CAEA,iBAAiB,EAAe,EAA8B,CAC1D,OAAO,KAAK,KAAK,4BAA6B,EAAM,CAAK,CAC7D,CAEA,oBAAoE,CAChE,OAAO,KAAK,KAAK,6BAA6B,CAClD,CAEA,kBAAiC,CAC7B,OAAO,KAAK,KAAK,2BAA2B,CAChD,CAEA,WAAW,EAAiC,CACxC,OAAO,KAAK,KAAK,sBAAuB,CAAS,CACrD,CAEA,gCAAgC,EAA8B,CAC1D,OAAO,KAAK,KAAK,yCAA0C,CAAK,CACpE,CAEA,gBAAgB,EAAiC,CAC7C,OAAO,KAAK,KAAK,2BAA4B,CAAO,CACxD,CAEA,cAAc,EAA2C,CACrD,OAAO,KAAK,KAAK,0BAA2B,CAAU,CAC1D,CAEA,UAAU,EAAgD,CACtD,OAAO,KAAK,KAAK,4BAA6B,CAAU,CAC5D,CAEA,UAAU,EAAgD,CACtD,OAAO,KAAK,KAAK,sBAAuB,CAAU,CACtD,CAEA,eAAe,EAA6B,CACxC,OAAO,KAAK,KAAK,0BAA2B,CAAI,CACpD,CAEA,KAAK,EAA+C,CAChD,OAAO,KAAK,KAAK,mBAAoB,CAAU,CACnD,CAEA,KAAK,EAA+C,CAChD,OAAO,KAAK,KAAK,mBAAoB,CAAU,CACnD,CAMA,uBAAuB,EAA4B,EAAuB,EAA2B,EAAgB,EAAiB,EAAgB,EAAiB,EAAyC,CAC5M,OAAO,KAAK,KAAK,kCAAmC,EAAoB,EAAe,EAAY,EAAO,EAAQ,EAAO,EAAQ,CAAK,CAAA,CACjI,KAAM,GACI,EAAc,EAAY,GAAK,CAAA,CACzC,CACT,CAEA,oBAAoB,EAAsB,EAAgB,EAAmB,EAAiB,EAA8D,CAExJ,OAAO,KAAK,KAAK,+BAAgC,EAAc,EAAQ,EAAW,EAAS,CAAO,CAAA,CAC7F,KAAM,GAAM,GAAK,CAAE,SAAU,CAAA,CAAA,CAAI,CAC1C,CAEA,yBAAyB,EAA4B,EAAuB,EAA2B,EAAgB,EAAoD,CACvK,OAAO,KAAK,KAAK,oCAAqC,EAAoB,EAAe,EAAY,EAAO,CAAM,CAAA,CAC7G,KAAM,GACI,EAAc,EAAY,GAAK,IAAA,EACzC,CACT,CAEA,6BAA6B,EAA4B,EAAuB,EAAoD,CAChI,OAAO,KAAK,KAAK,wCAAyC,EAAoB,EAAe,CAAU,CAAA,CAClG,KAAM,GACI,EAAqB,EAAmB,GAAK,CAChD,WAAY,CACR,MAAO,CAAA,EACP,OAAQ,CAAA,EACR,MAAO,CAAA,CAAC,CACZ,CAEP,CACT,CAEA,QAAQ,EAA2C,CAC/C,OAAO,KAAK,KAAK,mBAAoB,CAAU,CACnD,CAEA,gBAAgB,EAAkG,CAC9G,OAAO,KAAK,KAAK,gCAAiC,CAAU,CAChE,CAEA,qBAAqB,EAAqD,CACtE,OAAO,KAAK,KAAK,gCAAiC,CAAU,CAChE,CAEA,YAAY,EAAgB,EAAgB,EAAuB,EAAkB,EAA2D,CAC5I,OAAO,KAAK,KAAK,yBAA0B,EAAQ,EAAO,EAAc,EAAS,CAAa,CAClG,CAEA,kCAAkC,EAAuB,EAA4B,EAAuB,EAA4B,GAAoB,CACxJ,OAAO,KAAK,KAAK,6CAA8C,EAAe,EAAoB,EAAe,CAAgB,CACrI,CAEA,qBAAqB,EAAsB,EAAgB,EAA8B,CACrF,OAAO,KAAK,KAAK,gCAAiC,EAAc,EAAQ,CAAM,CAClF,CAEA,sBAAsB,EAAsB,EAAiB,EAA+B,CACxF,OAAO,KAAK,KAAK,iCAAkC,EAAc,EAAQ,CAAM,CACnF,CAEA,aAAa,EAAsB,EAAyC,CACxE,OAAO,KAAK,KAAK,wBAAyB,EAAc,CAAO,CACnE,CAEA,oBAAoB,EAAsB,EAA0D,CAChG,OAAO,KAAK,KAAK,+BAAgC,EAAc,CAAkB,CACrF,CAEA,uBAAuB,EAA8C,CACjE,OAAO,KAAK,KAAK,gCAAiC,CAAU,CAChE,CAEA,4BAA4B,EAAsB,EAAiB,EAAsC,CACrG,IAAM,EAAa,CACf,eACA,UACA,gBAAA,EAEJ,OAAO,KAAK,KAAK,uCAAwC,CAAU,CACvE,CAEA,uBAAuB,EAA4B,CAC/C,OAAO,KAAK,KAAK,kCAAmC,CAAI,CAC5D,CAEA,YAAY,EAAsB,EAAuC,CACrE,OAAO,KAAK,KAAK,uBAAwB,EAAc,CAAc,CACzE,CAEA,+BAA+B,EAAsB,EAAiB,EAAoC,CACtG,OAAO,KAAK,KAAK,0CAA2C,CACxD,eACA,UACA,cAAA,CACH,CACL,CAEA,cAAc,EAAsB,EAAyB,EAAsC,CAC/F,OAAO,KAAK,KAAK,yBAA0B,EAAc,EAAU,CAAO,CAC9E,CAEA,iBAAiB,EAAsB,EAAiB,EAA2C,CAC/F,OAAO,KAAK,KAAK,4BAA6B,EAAc,EAAS,CAAQ,CACjF,CAEA,mBAAmB,EAAsB,EAAiB,EAAkB,EAAqC,CAC7G,OAAO,KAAK,KAAK,8BAA+B,EAAc,EAAS,EAAQ,CAAW,CAC9F,CAEA,8BAA8B,EAA4B,EAAuB,EAE9E,CACC,OAAO,KAAK,KAAK,yCAA0C,EAAoB,EAAe,CAAc,CAChH,CAEA,YAAY,EAAsB,EAAiB,EAAiC,CAChF,OAAO,KAAK,KAAK,uBAAwB,EAAc,EAAS,CAAS,CAC7E,CAEA,eAAe,EAAsB,EAAiB,EAA+B,CACjF,OAAO,KAAK,KAAK,0BAA2B,EAAc,EAAS,CAAO,CAC9E,CAEA,sBAAsB,EAAsB,EAAiB,EAA4B,EAAuF,CAC5K,OAAO,KAAK,KAAK,iCAAkC,EAAc,EAAS,EAAQ,CAAmB,CACzG,CAEA,eAAe,EAA4D,CACvE,OAAO,KAAK,KAAK,0BAA2B,CAAU,CAC1D,CAEA,oBAAoB,EAA4D,CAC5E,OAAO,KAAK,KAAK,2BAA4B,CAAU,CAC3D,CAEA,0BAA0B,EAA4F,CAClH,OAAO,KAAK,KAAK,qCAAsC,CAAU,CACrE,CACA,wBAAwB,EAAwF,CAC5G,OAAO,KAAK,KAAK,mCAAoC,CAAU,CACnE,CACA,oBAAoB,EAAsF,CACtG,OAAO,KAAK,KAAK,+BAAgC,CAAU,CAC/D,CAEA,oBAAgD,CAC5C,OAAO,KAAK,KAAK,6BAA6B,CAClD,CAMA,eAAe,EAAgE,EAAgD,CAC3H,OAAO,KAAK,KAAK,0BAA2B,EAAa,CAAO,CACpE,CAEA,oBAAoB,EAAuD,CACvE,OAAO,KAAK,KAAK,+BAAgC,CAAU,CAC/D,CAEA,wBAAwB,EAAqB,EAA8C,CACvF,OAAO,KAAK,KAAK,mCAAoC,EAAW,CAAc,CAClF,CAEA,sBAAsB,EAAuB,EAAkB,EAA2C,CACtG,OAAO,KAAK,KAAK,iCAAkC,EAAc,EAAS,CAAO,CACrF,CAEA,mBAAmB,EAAqE,CACpF,OAAO,KAAK,KAAK,2BAA4B,CAAU,CAC3D,CAEA,yBAAyB,EAA2D,CAChF,OAAO,KAAK,KAAK,2CAA4C,CAAU,CAC3E,CAEA,MAAM,6CAA8D,CAEhE,IAAM,GAAgB,MADJ,KAAK,mBAAA,EAAA,CACG,IAAK,IAChB,CAAC,KAAM,EAAG,KAAM,KAAM,EAAG,KAAM,SAAU,EAAG,SAAU,SAAU,EAAG,QAAA,EAC7E,EAED,EAAiB,EAAa,QAAQ,EAAS,IACxC,EAAa,UAAW,GAAM,EAAE,MAAQ,EAAQ,IAAI,IAAM,CACpE,EACD,OAAO,MAAM,QAAQ,IAAI,EAAe,IAAI,KAAO,IAAa,CAC5D,IAAM,EAAe,MAAM,KAAK,yBAAyB,CACrD,aAAc,EAAS,KACvB,QAAS,EAAS,KAClB,YAAa,GACb,cAAe,GACf,aAAc,EAAA,CACjB,EACK,EAAc,GAAG,EAAS,KAAK,YAAA,EAAa,GAAI,EAAS,KAAK,YAAA,IACpE,GAAI,EAAa,GAAc,CAC3B,IAAM,EAAkB,CACpB,KAAM,EAAS,KACf,KAAM,EAAS,KACf,SAAU,EAAS,SACnB,SAAU,EAAS,SACnB,WAAY,KAAA,EAEhB,IAAA,IAAS,EAAY,EAAa,EAAW,CAAE,OAAS,EAAG,GAAa,EAAG,IACnE,EAAa,EAAW,CAAE,EAAS,CAAE,KAAK,SAAW,GACrD,EAAa,EAAW,CAAE,OAAO,EAAW,CAAC,EAGrD,EAAgB,WAAa,EAAa,EAAW,CAAE,MAAA,EACvD,EAAa,GAAe,CAChC,CACA,OAAO,CACX,CAAC,CAAC,CACN,CAEA,kBAAkB,EAAoD,CAClE,OAAO,KAAK,KAAK,8BAA+B,CAAU,CAC9D,CAEA,2BAA2B,EAA+D,CACtF,OAAO,KAAK,KAAK,uCAAwC,CAAU,CACvE,CAEA,gBAAgB,EAAwD,CACpE,OAAO,KAAK,KAAK,0CAA2C,CAAU,CAC1E,CAEA,gBAAgB,EAAiF,CAC7F,OAAO,KAAK,KAAK,0CAA2C,CAAU,CAC1E,CAEA,gBAAgB,EAA0I,CACtJ,OAAO,KAAK,KAAK,4BAA6B,CAAU,CAC5D,CAEA,gBAAgB,EAA0D,CACtE,OAAO,KAAK,KAAK,4BAA6B,CAAU,CAC5D,CAEA,mBAAmB,EAAiE,EAAuB,EAAgC,CAMvI,OALI,OAAO,GAA+B,UAAY,GAAgB,EAC3D,KAAK,KAAK,8BAA+B,EAA4B,EAAc,CAAO,EAC1F,OAAO,GAA+B,UAAY,CAAC,GAAgB,CAAC,EACpE,KAAK,KAAK,+BAAgC,CAA0B,EAExE,QAAQ,QAAA,CACnB,CAEA,kBAAkB,EAAsC,CACpD,OAAO,KAAK,KAAK,6BAA8B,CAAc,CACjE,CAEA,uBAAuB,EAAe,EAAkB,EAAkC,CACtF,OAAO,KAAK,KAAK,kCAAmC,EAAO,EAAU,CAAM,CAC/E,CAEA,0BAA6C,CACzC,OAAO,KAAK,KAAK,oCAAoC,CACzD,CAEA,0BAA0B,EAAsD,CAC5E,OAAO,KAAK,KAAK,kCAAmC,CAAU,CAClE,CAEA,mBAAmB,EAAqD,CACpE,OAAO,KAAK,KAAK,2BAA4B,CAAU,CAC3D,CAEA,uBAAuB,EAAqD,CACxE,OAAO,KAAK,KAAK,+BAAgC,CAAU,CAC/D,CAEA,eAAe,EAAsB,EAA+B,CAChE,OAAO,KAAK,KAAK,0BAA2B,EAAc,CAAO,CACrE,CAEA,sBAAqC,CACjC,OAAO,KAAK,KAAK,gCAAiC,CAAA,CAAE,CACxD,CAEA,6BAA6B,EAAe,EAA8C,CACtF,OAAO,KAAK,KAAK,wCAAyC,EAAO,CAAc,CACnF,CAEA,gBAAgB,EAA8B,CAC1C,OAAO,KAAK,KAAK,2BAA4B,CAAM,CACvD,CAEA,8BAA6C,CACzC,OAAO,KAAK,gBAAgB,4BAA4B,CAC5D,CAEA,2BAA0C,CACtC,OAAO,KAAK,KAAK,oCAAoC,CACzD,CAEA,uBAAuB,EAAsB,EAA+B,CACxE,OAAO,KAAK,KAAK,kCAAmC,EAAc,CAAO,CAC7E,CAEA,0CAA0C,EAAsB,EAA+B,CAC3F,OAAO,KAAK,KAAK,qDAAsD,EAAc,CAAO,CAChG,CAEA,0BAAyC,CACrC,OAAO,KAAK,KAAK,mCAAmC,CACxD,CAEA,mCAAmD,CAC/C,OAAO,KAAK,KAAK,4CAA4C,CACjE,CAMA,cAAc,EAAe,EAAuB,EAAgC,CAChF,OAAO,KAAK,KAAK,0BAA2B,EAAM,EAAc,CAAO,CAC3E,CAEA,wBAAwB,EAAkB,EAAuB,EAAgC,CAC7F,OAAO,KAAK,KAAK,oCAAqC,EAAO,EAAc,CAAO,CACtF,CAEA,uBAAuB,EAAe,EAAuB,EAAkC,CAC3F,OAAO,KAAK,KAAK,mCAAoC,EAAM,EAAc,CAAO,CACpF,CAEA,wBAAwB,EAAoC,CACxD,OAAO,KAAK,KAAK,mCAAoC,CAAW,CACpE,CAEA,uBAAuC,CACnC,OAAO,KAAK,KAAK,gCAAgC,CACrD,CAMA,YAAY,EAAa,EAA8C,CAEnE,OADoB,IAAI,IAAI,CAAG,CAAA,CAAE,OAC1B,KAAK,KAAK,uBAAwB,EAAe,qBAAqB,CAAG,EAAG,CAAO,CAAA,CACrF,KAAM,GACI,EAAc,EAAY,GAAK,IAAA,EACzC,CACT,CAEA,SAAS,EAAwC,CAC7C,OAAO,KAAK,KAAK,oBAAqB,CAAc,CACxD,CAEA,eAAiC,CAC7B,OAAO,KAAK,KAAK,wBAAwB,CAC7C,CAEA,qBAAoC,CAChC,OAAO,KAAK,KAAK,8BAA8B,CACnD,CAEA,iBAAiB,EAA0B,CACvC,OAAO,KAAK,KAAK,4BAA6B,CAAE,CACpD,CAEA,eAAe,EAA4B,CACvC,OAAO,KAAK,KAAK,0BAA2B,CAAI,CACpD,CAEA,YAAY,EAAgC,CACxC,OAAO,KAAK,KAAK,uBAAwB,CAAM,CACnD,CAEA,YAAY,EAA+B,CACvC,OAAO,KAAK,KAAK,uBAAwB,CAAO,CACpD,CAEA,mBAAmB,EAA4E,CAC3F,OAAO,KAAK,KAAK,8BAA+B,CAAI,CACxD,CAEA,gBAA+B,CAC3B,OAAO,KAAK,KAAK,yBAAyB,CAC9C,CAEA,SAAS,EAAkB,EAAmC,EAG1D,EAA6B,CAC7B,OAAO,KAAK,KAAK,oBAAqB,EAAU,EAAY,EAAQ,CAAO,CAC/E,CAEA,SAAS,EAAc,EAAiB,EAA+B,CACnE,OAAO,KAAK,KAAK,oBAAqB,EAAM,EAAS,EAAS,OAAO,SAAS,IAAI,CACtF,CAEA,oBAAmC,CAC/B,OAAO,KAAK,KAAK,6BAA6B,CAClD,CAEA,UAAU,EAAiF,CACvF,OAAO,KAAK,KAAK,qBAAsB,CAAkB,CAC7D,CAEA,gBAAgB,EAAgB,EAGL,CACvB,OAAO,KAAK,KAAK,8BAA+B,EAAO,CAAU,CACrE,CAGA,MAAa,SAAS,EAAQ,KAAM,EAAS,KAAM,EAAW,aAAc,EAAU,IAAM,EAAW,GAAO,EAAe,EAAkC,EAAiC,CAE5L,OAAO,MADyC,EAAiB,6BAAA,EAAA,CACzC,KAAK,SAAS,EAAO,EAAQ,EAAU,EAAS,EAAU,EAAM,EAAY,CAAS,CACjH,CAEA,MAAa,iBAAiB,EAAa,GAAM,EAAa,EAAG,EAA4B,IAAA,GAAW,EAA6B,IAAA,GAAW,EAAO,aAAc,EAAU,IAAM,EAAW,GAAO,CACnM,OAAO,MAAM,KAAK,KAAK,4BAA6B,EAAY,EAAY,EAAO,EAAQ,EAAM,EAAS,CAAQ,CACtH,CAEA,MAAM,aAAsC,CAExC,OAAO,MADyC,EAAiB,6BAAA,EAAA,CACzC,aAAa,aAAA,CACzC,CAEA,MAAM,aAAgC,CAElC,OAAO,MADyC,EAAiB,6BAAA,EAAA,CACzC,aAAa,YAAA,CACzC,CAEA,MAAM,gBAAgC,CAElC,OAAO,MADyC,EAAiB,6BAAA,EAAA,CACzC,aAAa,eAAA,CACzC,CAEA,MAAM,QAAQ,EAAqC,CAC/C,IAAM,EAAoC,MAAM,EAAiB,6BAAA,EAEjE,OADG,GAAS,MAAM,KAAK,eAAA,EAChB,EAAiB,aAAa,QAAA,CACzC,CAEA,YAAY,EAAkB,EAAe,EAAmB,EAAyB,GAAM,EAA4B,GAA2B,CAClJ,OAAO,KAAK,KAAK,uBAAwB,EAAU,EAAO,EAAW,EAAe,CAAiB,CACzG,CAEA,cAAoC,CAChC,OAAO,KAAK,KAAK,uBAAuB,CAC5C,CAEA,gBAA8C,CAC1C,OAAO,KAAK,KAAK,yBAAyB,CAC9C,CAMA,cAA6B,CACzB,OAAO,KAAK,KAAK,wBAAwB,CAC7C,CAEA,eAA8B,CAC1B,OAAO,KAAK,KAAK,yBAAyB,CAC9C,CAEA,aAA4B,CACxB,OAAO,KAAK,KAAK,uBAAuB,CAC5C,CAEA,YAAY,EAAsB,EAAiB,EAAiC,CAChF,OAAO,KAAK,KAAK,uBAAwB,EAAc,EAAS,CAAS,CAC7E,CAEA,sCAAqD,CACjD,OAAO,KAAK,KAAK,+CAA+C,CACpE,CAEA,QAAQ,EAAoD,CACxD,OAAO,KAAK,KAAK,mBAAoB,CAAU,CACnD,CAEA,eAAe,EAAsB,EAAiB,EAAuB,EAAe,EAA2C,CACnI,OAAO,KAAK,KAAK,0BAA2B,EAAc,EAAS,EAAe,EAAM,CAAY,CACxG,CAEA,qBAAqB,EAAiB,EAAkB,EAA6B,CACjF,OAAO,KAAK,KAAK,gCAAiC,EAAS,EAAU,CAAK,CAC9E,CAEA,qBAAqB,EAAiB,EAAgC,CAClE,OAAO,KAAK,KAAK,gCAAiC,EAAS,CAAQ,CACvE,CAEA,0BAAyC,CACrC,OAAO,KAAK,KAAK,mCAAmC,CACxD,CAEA,4BAA4B,EAIzB,EAA+C,CAC9C,OAAO,KAAK,KAAK,uCAAwC,EAAa,CAAW,CACrF,CAEA,cAAc,EAAiB,EAAgC,CAC3D,OAAO,KAAK,KAAK,yBAA0B,EAAQ,CAAO,CAC9D,CAEA,0BAA0B,EAAyB,CAC/C,OAAO,KAAK,KAAK,qCAAsC,CAAI,CAC/D,CAEA,yBAAiE,CAC7D,OAAO,KAAK,KAAK,mCAAoC,CAAA,CAAE,CAC3D,CAEA,kBAAkB,EAAsD,CACpE,OAAO,KAAK,KAAK,6BAA8B,CAAW,CAC9D,CAMA,qBAAqB,EAAyB,CAC1C,OAAO,KAAK,KAAK,gCAAiC,CAAI,CAC1D,CAEA,mBAAmB,EAAmB,EAAiB,EAAiB,EAA6B,EAA2C,CAC5I,OAAO,KAAK,KAAK,8BAA+B,EAAW,EAAS,EAAS,EAAmB,CAAiB,CACrH,CAEA,wBAAwB,EAAiB,EAAiB,EAAwC,CAC9F,OAAO,KAAK,KAAK,mCAAoC,EAAS,EAAS,CAAe,CAC1F,CAEA,iBAAiB,EAAa,EAAyB,EAAiC,CAepF,MAAU,MAAM,kBAAkB,CACtC,CAMA,aAAa,EAAgC,CACzC,OAAO,KAAK,KAAK,wBAAyB,CAAQ,CACtD,CAEA,aAA4B,CACxB,OAAO,KAAK,KAAK,uBAAwB,CAAA,CAAE,CAC/C,CAEA,mBAAkC,CAC9B,OAAO,KAAK,KAAK,6BAA8B,CAAA,CAAE,CACrD,CAEA,oBAAmC,CAC/B,OAAO,KAAK,KAAK,8BAA+B,CAAA,CAAE,CACtD,CAEA,wBAAuC,CACnC,OAAO,KAAK,KAAK,kCAAmC,CAAA,CAAE,CAC1D,CAEA,sBAA4C,CACxC,OAAO,KAAK,KAAK,gCAAiC,CAAA,CAAE,CACxD,CAEA,eAA8B,CAC1B,OAAO,KAAK,KAAK,wBAAwB,CAC7C,CAEA,gBAA+B,CAC3B,OAAO,KAAK,KAAK,yBAAyB,CAC9C,CAMA,kBAAkB,EAAiF,CAC/F,OAAO,KAAK,KAAK,6BAA8B,CAAO,CAC1D,CACA,cAAc,EAA4E,CACtF,OAAO,KAAK,KAAK,oCAAqC,CAAM,CAChE,CACA,gBAAqD,CACjD,OAAO,KAAK,KAAK,0BAA2B,CAAA,CAAE,CAClD,CAIJ,EAGA,OAAO,4BAA8B,ECv6B9B,IAAM,EAAyB,IAAI,KArCR,CAC9B,MAAc,mBAAmB,EAAkB,EAAkB,EAA6B,EAA4D,CAC1J,IAAM,EAAS,MAAM,EAA4B,mBAAmB,kBAAmB,EAAU,EAAU,EAAoB,CAAkB,EACjJ,OAAO,OAAO,YAAY,EAAO,OAAO,CAC5C,CAEA,aAAc,CACd,CAEA,MAAa,WAAW,EAAiB,GAAO,EAAkB,GAAsC,CACpG,OAAO,MAAM,KAAK,mBAAmB,oCAAqC,CACtE,kBAAmB,EACnB,oBAAqB,CAAA,EACtB,EAAgB,CAAc,CACrC,CAEA,MAAa,WAAW,EAAsC,EAAoB,GAAsC,CACpH,IAAM,EAAU,KAAK,mBAAmB,oCAAqC,EAAW,EAAmB,EAAK,EAE5G,EAAY,GAEV,EAAU,eAAiB,CACxB,GACD,EAAa,KAAK,yBAA0B,CAAE,SAAA,CAAS,CAE/D,EAAG,GAAG,EAEN,GAAI,CAEA,OAAO,MADY,CAEvB,QAAE,CACE,EAAY,GACZ,aAAa,CAAO,CACxB,CACJ,CACJ,ECnCM,EAAN,KAAsB,CAClB,YAAoB,EAA+B,EAAiC,EAAiC,CAAjG,KAAA,SAAA,EAA+B,KAAA,UAAA,EAAiC,KAAA,kBAAA,CACpF,CAEA,IAAI,SAAmB,CACnB,OAAO,KAAK,QAChB,CAEA,IAAI,UAAyB,CACzB,OAAO,KAAK,SAChB,CAEA,IAAI,kBAAwC,CACxC,OAAO,KAAK,iBAChB,CACJ,EA6Ua,EAAkB,IAAI,KA3UR,CACf,UAAoC,CAAA,EACpC,YAAuB,GACvB,eAAuE,CAAC,EAAG,EAAG,EAAG,EAAG,KAAM,EAAG,KAAM,CAAA,EACnG,iBAAyE,CAAC,EAAG,EAAG,EAAG,EAAG,KAAM,EAAG,KAAM,CAAA,EACrG,eAAyB,GAMzB,gBAA0B,GAC1B,QAAmB,GACnB,WACA,aACA,iBAAkC,EAAc,SAChD,wBAER,aAAc,CACV,KAAK,aAAe,EAAA,EACpB,EAAqB,cAAc,KAAM,GAAkB,CACnD,GAAe,2BAA6B,IAAA,KAC5C,KAAK,iBAAmB,CAAC,EAAc,0BAE3C,KAAK,aAAa,QAAA,CACtB,CAAC,CACL,CAEA,IAAI,WAA8B,CAS9B,OARK,KAAK,aACN,KAAK,WAAa,SAAS,cAAc,KAAK,EAC9C,KAAK,WAAW,GAAK,oBACrB,KAAK,WAAW,UAAU,IAAI,QAAQ,GAErC,KAAK,WAAW,YACjB,SAAS,KAAK,YAAY,KAAK,UAAU,EAEtC,KAAK,UAChB,CAEQ,6BAAgC,IACpC,EAAE,eAAA,EACK,IAGH,UAAa,GAA+B,CAChD,IAAM,EAAiB,EAAE,cACnB,EAAc,KAAK,UAAU,MAAO,GAC/B,EAAQ,UAAY,EAC/B,EACI,IACA,KAAK,wBAA0B,GAE/B,KAAK,0BACL,KAAK,QAAW,EAAiB,SAAY,EAAiB,QAAQ,OAAS,EAC/E,KAAK,eAAiB,KAAK,YAAY,CAAC,EACxC,KAAK,iBAAmB,KAAK,eAExB,KAAK,cACN,SAAS,iBAAiB,UAAW,KAAK,OAAO,EACjD,SAAS,iBAAiB,WAAY,KAAK,OAAO,EAClD,SAAS,iBAAiB,YAAa,KAAK,SAAS,EACrD,SAAS,iBAAiB,YAAa,KAAK,UAAW,CACnD,QAAS,EAAA,CACZ,GAGb,EAEQ,QAAW,GAAW,CAC1B,SAAS,oBAAoB,UAAW,KAAK,OAAO,EACpD,SAAS,oBAAoB,WAAY,KAAK,OAAO,EACrD,SAAS,oBAAoB,YAAa,KAAK,SAAS,EACxD,SAAS,oBAAoB,YAAa,KAAK,SAAS,EACpD,KAAK,aAAe,KAAK,0BACrB,KAAK,wBAAwB,kBAAoB,KAAK,SACtD,KAAK,wBAAwB,iBAAiB,oBAAoB,YAAa,KAAK,4BAA4B,EAEpH,KAAK,YAAc,GACnB,KAAK,QAAQ,CAAC,SAAU,KAAK,YAAY,CAAC,CAAA,CAAE,GAEhD,KAAK,wBAA0B,IAAA,EACnC,EAEQ,oBAAoC,CACxC,GAAI,KAAK,yBAA2B,KAAK,wBAAwB,iBAAkB,CAC/E,IAAM,EAAa,KAAK,wBAAwB,iBAC1C,EAAS,OAAO,iBAAiB,CAAU,EAM3C,GAAuB,EAAO,YAAc,QAAU,EAAO,YAAc,WAC1E,EAAW,aAAe,EAAW,aACtC,GAAyB,EAAO,YAAc,QAAU,EAAO,YAAc,WAC5E,EAAW,YAAc,EAAW,YAE3C,GAAI,GAAuB,EAEvB,OADA,QAAQ,KAAK,0IAA0I,EAChJ,KAAK,iBAEhB,GAAI,EACA,OAAO,EAAc,SAEzB,GAAI,EACA,OAAO,EAAc,UAE7B,CACA,OAAO,KAAK,gBAChB,CAEQ,UAAa,GAAW,CAK5B,GAJA,EAAE,aAAe,GACjB,EAAE,gBAAA,EACF,EAAE,eAAA,EACF,KAAK,iBAAmB,KAAK,YAAY,CAAC,EACtC,CAAC,KAAK,aAAe,KAAK,UAAA,EAAc,KAAK,eAAgB,CAK7D,GAAI,KAAK,SAAW,KAAK,gBAAA,EACrB,OAAO,KAAK,QAAQ,CAAC,EAGzB,GAAI,CAAC,KAAK,wBACN,OAGA,KAAK,wBAAwB,kBAAoB,KAAK,SACtD,KAAK,wBAAwB,iBAAiB,iBAAiB,YAAa,KAAK,4BAA4B,EAGjH,IAAI,EAAqB,CACrB,GAAI,KAAK,wBAAwB,SAAS,GAC1C,KAAM,KAAK,wBAAwB,SAAS,KAC5C,KAAM,KAAK,wBAAwB,SAAS,KAC5C,QAAS,KAAK,wBAAwB,SAAS,QAC/C,QAAS,KAAK,wBAAwB,SAAS,OAAA,EAE/C,KAAK,wBAAwB,SAAS,WACtC,EAAK,KAAO,KAAK,wBAAwB,SAAS,KAClD,EAAK,UAAY,KAAK,wBAAwB,SAAS,WAG3D,KAAK,UAAU,CACX,QAAS,KAAK,wBAAwB,QACtC,MAAO,KAAK,wBAAwB,QAAQ,aAAa,YAAY,GAAK,GAC1E,OACA,KAAM,EAAK,SAAW,EAAK,SAAW,EAAK,KAC3C,SAAU,KAAK,cAAA,CAClB,EACD,KAAK,YAAc,EACvB,MAAW,KAAK,aACZ,KAAK,SAAS,CAAC,SAAU,KAAK,gBAAA,CAAiB,EAEnD,MAAO,EACX,EAEQ,YAAe,GAAW,CAC9B,IAAI,EAAI,EAAE,MACN,EAAI,EAAE,MAEN,EAAE,SAAW,EAAE,QAAQ,OAAS,IAChC,EAAI,EAAE,QAAQ,EAAC,CAAE,MACjB,EAAI,EAAE,QAAQ,EAAC,CAAE,OAEjB,EAAE,gBAAkB,EAAE,eAAe,OAAS,IAC9C,EAAI,EAAE,eAAe,EAAC,CAAE,MACxB,EAAI,EAAE,eAAe,EAAC,CAAE,OAE5B,IAAM,EAAO,EAAiB,kBAAkB,sBAAA,EAChD,MAAO,CAAC,EAAG,EAAI,EAAK,KAAM,EAAG,EAAI,EAAK,IAAK,KAAM,EAAG,KAAM,CAAA,CAC9D,EAEQ,YAAY,EAAW,EAAW,CACtC,KAAK,UAAU,MAAM,KAAQ,EAAI,EAAK,KACtC,KAAK,UAAU,MAAM,IAAO,EAAI,EAAK,IACzC,CAEQ,WAAY,CAChB,KAAK,UAAU,UAAU,OAAO,QAAQ,CAC5C,CAEQ,WAAY,CAChB,KAAK,UAAU,UAAU,IAAI,QAAQ,EACrC,KAAK,UAAU,OAAA,CACnB,CAEO,YAAY,EAAc,CAC7B,KAAK,UAAA,EACL,IAAI,EAAM,IAAI,MACd,EAAI,IAAM,GAAQ,GAClB,EAAI,WAAe,CACX,EAAI,MAAQ,EAAI,QAChB,KAAK,UAAU,UAAU,IAAI,MAAM,EACnC,KAAK,UAAU,UAAU,OAAO,MAAM,IAEtC,KAAK,UAAU,UAAU,IAAI,MAAM,EACnC,KAAK,UAAU,UAAU,OAAO,MAAM,GAE1C,KAAK,UAAU,IAAM,EACjB,KAAK,aACL,KAAK,UAAA,CAEb,EACA,EAAI,YAAgB,CAChB,KAAK,UAAU,IAAM,GACrB,KAAK,UAAA,CACT,CACJ,CAEQ,UAAU,EAMf,CACC,EAAiB,kBAAkB,UAAU,IAAI,YAAY,EACzD,EAAY,OACZ,KAAK,YAAY,EAAY,KAAK,EAEtC,KAAK,YAAY,EAAY,SAAS,KAAM,EAAY,SAAS,IAAI,EACjE,EAAY,KAAK,MAAQ,EAAY,KAAK,gBAAgB,WAAU,EAAY,KAAK,KAAO,EAAY,KAAK,KAAA,GAEjH,EAAiB,YAAY,qBAAsB,CAAC,EAAY,KAAM,EAAY,KAAM,EAAY,SAAU,EAAE,CAAC,EACjH,EAAiB,SAAS,kCAAmC,CAAA,CAAE,EAC/D,EAAiB,SAAS,mBAAoB,CAAC,CAAW,CAAC,CAC/D,CAEQ,SAAS,EAAiF,CAC9F,KAAK,YAAY,EAAY,SAAS,KAAM,EAAY,SAAS,IAAI,EACrE,EAAiB,YAAY,oBAAqB,CAAC,EAAY,QAAQ,CAAC,EACxE,EAAiB,SAAS,kBAAmB,CAAC,EAAY,QAAQ,CAAC,CACvE,CAEQ,QAAQ,EAAiF,CAC7F,KAAK,YAAY,EAAY,SAAS,KAAM,EAAY,SAAS,IAAI,EACrE,KAAK,UAAA,EACL,EAAiB,YAAY,mBAAoB,CAAC,EAAY,QAAQ,CAAC,EACvE,EAAiB,kBAAkB,UAAU,OAAO,YAAY,EAChE,EAAiB,SAAS,iBAAkB,CAAC,EAAY,QAAQ,CAAC,CACtE,CAEQ,WAAoB,CACxB,OAAO,KAAK,MAAM,KAAK,iBAAiB,EAAI,KAAK,eAAe,IAAM,KAAK,iBAAiB,EAAI,KAAK,eAAe,IAC7G,KAAK,iBAAiB,EAAI,KAAK,eAAe,IAAM,KAAK,iBAAiB,EAAI,KAAK,eAAe,EAAE,CAC/G,CAEQ,iBAA2B,CAC/B,IAAM,EAAS,KAAK,UAAA,EACpB,GAAI,IAAW,EACX,MAAO,GAGX,IAAM,EAAkB,KAAK,mBAAA,EAe7B,OAdI,IAAoB,EAAc,UAAY,IAAoB,EAAc,WACzE,IAKqB,IAAoB,EAAc,SAC5D,KAAK,IAAI,KAAK,eAAe,KAAO,KAAK,iBAAiB,IAAI,EAAI,EAClE,KAAK,IAAI,KAAK,eAAe,KAAO,KAAK,iBAAiB,IAAI,EAAI,IAKnD,KAAK,IAAI,KAAK,gBAAkB,KAAK,GAAK,GAC7B,CACtC,CAEQ,eAAe,EAAmB,CACtC,IAAM,EAAS,EAAS,iBAAiB,KAAK,EAC9C,IAAA,IAAS,EAAO,EAAG,EAAO,EAAO,OAAQ,IACrC,EAAO,EAAI,CAAE,MAAM,WAAa,OAChC,EAAO,EAAI,CAAE,MAAM,iBAAmB,OAEtC,EAAO,EAAI,CAAE,MAAM,cAAgB,OACnC,EAAO,EAAI,CAAE,iBAAiB,YAAc,GAAM,CAC9C,EAAE,eAAA,CACN,CAAC,CAET,CAEO,SAAU,CACb,KAAK,UAAY,KAAK,UAAU,OAAQ,GAA6B,CACjE,GAAI,CAAC,EAAQ,QACT,MAAO,GAEX,IAAI,EAA0B,EAAQ,QAAQ,WAC9C,KAAO,GAEH,GADA,EAAa,EAAW,WACpB,aAAsB,kBAAoB,aAAsB,SAChE,MAAO,GAGf,MAAO,EACX,CAAC,CACL,CAEO,cAAc,EAAuB,CACxC,IAAM,EAAQ,KAAK,UAAU,UAAW,GAAY,CAChD,GAAI,IAAa,EAAQ,QACrB,MAAO,EAEf,CAAC,EACG,IAAU,KACV,KAAK,UAAU,OAAO,EAAO,CAAC,EAC9B,EAAS,oBAAoB,YAAa,KAAK,SAAS,EACxD,EAAS,oBAAoB,aAAc,KAAK,SAAS,EAEjE,CAEA,MAAa,WAAW,EAAuB,EAAqB,EAAiC,EAAW,GAAM,CAClH,MAAM,KAAK,aACP,GAAA,KAAe,QAAA,EACnB,0BAA4B,CACxB,eAAiB,CACb,KAAK,eAAe,CAAQ,CAChC,EAAG,EAAE,CACT,CAAC,EACD,EAAS,iBAAiB,YAAa,KAAK,SAAS,EACrD,EAAS,iBAAiB,aAAc,KAAK,SAAS,EACtD,IAAM,EAAU,IAAI,EAAgB,EAAU,EAAO,CAAiB,EACtE,KAAK,UAAU,KAAK,CAAO,CAC/B,CACJ,EC5Qa,EAAsB,IAAI,KA7ER,CACX,aACA,cACA,qBACA,YACA,gBACA,eACA,cACA,cACA,YACA,UACA,iBACA,iBACA,kBACA,8BACA,0BAEA,yBACA,sBACA,0BACA,uBACA,wBACA,mCAEA,kBACA,gBACA,mBAER,QAAU,CAEd,CAAC,UAAW,2BAA4B,MAAO,mCAAA,EAC/C,CAAC,UAAW,wBAAyB,MAAO,gCAAA,EAC5C,CAAC,UAAW,4BAA6B,MAAO,oCAAA,EAChD,CAAC,UAAW,yBAA0B,MAAO,iCAAA,EAC7C,CAAC,UAAW,0BAA2B,MAAO,kCAAA,EAC9C,CAAC,UAAW,qCAAsC,MAAO,6CAAA,EAGzD,CAAC,UAAW,oBAAqB,MAAO,4BAAA,EACxC,CAAC,UAAW,kBAAmB,MAAO,0BAAA,EACtC,CAAC,UAAW,qBAAsB,MAAO,6BAAA,EAEzC,CAAC,UAAW,eAAgB,MAAO,yBAAA,EACnC,CAAC,UAAW,gBAAiB,MAAO,0BAAA,EACpC,CAAC,UAAW,uBAAwB,MAAO,+BAAA,EAC3C,CAAC,UAAW,cAAe,MAAO,sBAAA,EAClC,CAAC,UAAW,kBAAmB,MAAO,0BAAA,EACtC,CAAC,UAAW,iBAAkB,MAAO,yBAAA,EACrC,CAAC,UAAW,gBAAiB,MAAO,wBAAA,EACpC,CAAC,UAAW,gBAAiB,MAAO,wBAAA,EACpC,CAAC,UAAW,cAAe,MAAO,sBAAA,EAClC,CAAC,UAAW,YAAa,MAAO,oBAAA,EAChC,CAAC,UAAW,mBAAoB,MAAO,6BAAA,EACvC,CAAC,UAAW,mBAAoB,MAAO,2BAAA,EACvC,CAAC,UAAW,oBAAqB,MAAO,4BAAA,EACxC,CAAC,UAAW,gCAAiC,MAAO,wCAAA,EACpD,CAAC,UAAW,4BAA6B,MAAO,oCAAA,CAAoC,EAGxF,aAAc,CACV,KAAK,iBAAA,CACT,CAEQ,kBAAmB,CACvB,KAAK,QAAQ,QAAS,GAAgD,CAElE,KAAK,EAAM,WAAa,CACpB,SAAW,GAAwC,CAC/C,EAAiB,GAAG,EAAM,MAAO,CAAQ,CAC7C,EACA,WAAa,GAAwC,CACjD,EAAiB,IAAI,EAAM,MAAO,CAAQ,CAC9C,CAAA,CAER,CAAC,CACL,CACJ,EC1EM,EAAY;;;;;;;;EAqCL,EAAyB,IAAI,KA3BR,CAE9B,aAAa,CACT,SAAS,iBAAiB,mBAAoB,SAAY,CACtD,MAAM,KAAK,IAAA,CACf,CAAC,CACL,CAEA,MAAc,KAAM,CAChB,IAAM,EAA4B,MAAM,EAAqB,cAE7D,GADA,MAAM,EAAiB,WACnB,EAAO,WAAa,EAAO,UAAU,SAAU,CAC/C,IAAM,EAAc,EAAO,UAAU,IAC/B,EAAS,SAAS,cAAc,QAAQ,EAC9C,EAAO,UAAY,EAAU,QAAQ,UAAW,CAAG,EACnD,SAAS,KAAK,QAAQ,CAAM,CAChC,CACJ,CAEA,MAAa,KAAK,EAA8C,CAC5D,IAAM,EAA4B,MAAM,EAAqB,cACzD,EAAO,WAAa,EAAO,UAAU,WACrC,OAAO,UAAY,OAAO,WAAa,CAAA,EACvC,OAAO,UAAU,KAAK,CAAI,EAElC,CACJ,EC0Ea,EAAsB,IAAI,KAtGR,CACnB,UAA+B,EAAA,EAC/B,UAA+B,EAAA,EAC/B,eACA,eAAiB,GACjB,SAAW,GAEnB,IAAI,WAA+B,CAC/B,OAAO,KAAK,SAChB,CAEA,IAAW,YAA4B,CACnC,OAAO,KAAK,SAChB,CAEA,IAAW,iBAA2B,CAClC,OAAO,KAAK,cAChB,CAEA,aAAc,CACV,OAAO,sBAA0B,CAC7B,KAAK,UAAU,QAAA,CACnB,EACA,OAAO,kBAAoB,KAAO,IAAkB,CAChD,MAAM,KAAK,eAAe,CAAK,CACnC,CACJ,CAEA,MAAc,sBAAsB,EAAe,CAC/C,GAAI,CACA,IAAM,EAAY,MAAM,EAAe,KAAK,EAAe,SAAS,mBAAmB,EAAG,KAAK,UAAU,CAAC,OAAA,CAAM,CAAC,EAS7G,OAPA,EAAS,IAGF,MAFY,EAAS,KAAA,EAAA,CAEhB,IAEZ,QAAQ,MAAM,4BAA4B,EAEnC,GAEf,OAAS,EAAG,CAIR,OAHA,QAAQ,MAAM,4BAA4B,EAC1C,QAAQ,MAAM,CAAC,EAER,EACX,CACJ,CAEA,MAAc,eAAe,EAAe,CAGpC,MAFe,KAAK,sBAAsB,CAAK,IAI/C,KAAK,UAAU,QAAQ,CAAC,EAAI,CAAC,EAC7B,KAAK,eAAiB,GAE9B,CAEO,cAAc,EAAqB,CACtC,GAAI,CAAC,OAAO,YAAa,CAErB,KAAK,UAAU,QAAQ,CAAC,EAAI,CAAC,EAC7B,KAAK,eAAiB,GAEtB,MACJ,CAEA,GAAI,EAAY,CACZ,KAAK,eAAiB,SAAS,cAAc,KAAK,EAElD,KAAK,eAAe,UAAU,IAAI,aAAa,EAE/C,KAAK,eAAe,aAAa,eAAgB,OAAO,WAAW,EACnE,KAAK,eAAe,aAAa,gBAAiB,mBAAmB,EAErE,IAAM,EAAgB,SAAS,cAAc,QAAQ,EAErD,EAAc,aAAa,MAAO,kFAAkF,EACpH,EAAc,aAAa,QAAS,EAAE,EACtC,EAAc,aAAa,QAAS,EAAE,EAGtC,EAAW,YAAY,KAAK,cAAc,EAC1C,EAAW,YAAY,CAAa,CACxC,CACJ,CAEA,MAAa,UAAW,CACpB,MAAM,KAAK,UACP,KAAK,gBACL,0BAA4B,CACpB,KAAK,SAAW,GAChB,OAAO,WAAW,MAAM,KAAK,QAAQ,EAErC,KAAK,SAAW,OAAO,WAAW,OAAO,KAAK,eAAgB,CAAC,QAAS,OAAO,WAAA,CAAY,CAEnG,CAAC,CAET,CACJ,EC/Ga,EAAN,KAAe,CAEV,kBAAoB,IAAI,iBAAkB,GAA8B,CAC5E,KAAK,YAAY,CAAO,CAC5B,CAAC,EACO,WAA0B,CAAA,EAC1B,WAAA,IAAiB,IACjB,YAAc,CAAI,EAE1B,YAAY,EAA4B,CACpC,KAAK,YAAc,CACvB,CAEO,QAAQ,EAAa,EACpB,EAAM,UAAY,KAAK,eAAiB,EAAM,UAAY,KAAK,yBAC/D,KAAK,UAAU,CAAK,EAExB,IAAM,EAAc,EAAsB,WACtC,GACA,KAAK,UAAU,CAAU,CAEjC,CAEO,mBAAmB,EAAwC,CAC9D,OAAO,KAAK,WAAW,OAAO,CAAI,CACtC,CAEQ,YAA+C,EAAS,EAAoD,CAChH,IAAM,EAAW,KAAK,WAAW,IAAI,CAAI,EACrC,GAEA,EAAS,GAAG,CAAU,CAE9B,CAEQ,sBAAsB,EAA4B,CACtD,IAAA,IAAW,KAAmB,KAAK,WAC/B,GAAI,EAAW,SAAS,CAAe,EAAG,OAAO,EAErD,MAAO,EACX,CAEQ,YAAY,EAAyC,CACzD,IAAM,EAAkB,CAAI,EAC5B,EAAiB,QAAS,GAA2B,CAC5C,EAAgB,SAAS,CAAM,GAChC,EAAgB,KAAK,CAAM,CAEnC,CAAC,EAED,IAAA,IAAW,KAAU,EAAiB,CAClC,GAAI,EAAO,cAAe,CACtB,IAAM,EAAuB,KAAK,sBAAsB,EAAO,aAAa,EACxE,EAAqB,OAAS,GAC9B,KAAK,YAAY,eAAgB,CAAC,EAAO,OAAQ,EAAsB,EAAO,aAAa,CAAC,CAEpG,CAEI,EAAO,YACP,EAAO,WAAW,QAAS,GAAU,CACjC,KAAK,YAAY,YAAa,CAAC,CAAK,CAAC,CACzC,CAAC,CAET,CACA,KAAK,aAAA,CACT,CAGQ,UAAU,EAAY,CACrB,KAAK,UAAU,SAAS,CAAI,IAC7B,KAAK,UAAU,KAAK,CAAI,EACxB,KAAK,SAAS,QAAQ,EAAM,KAAK,YAAY,EAC7C,KAAK,YAAY,iBAAkB,CAAC,CAAI,CAAC,EAEjD,CAEQ,WAAW,EAAa,CAC5B,IAAM,EAAQ,KAAK,UAAU,QAAQ,CAAK,EACtC,EAAQ,IACR,KAAK,UAAU,OAAO,EAAO,CAAC,CAEtC,CAEQ,cAAe,CACnB,IAAM,EAAuB,CAAI,EACjC,IAAA,IAAW,KAAY,KAAK,UACnB,EAAS,aACV,EAAqB,KAAK,CAAQ,EAI1C,GAAI,EAAqB,OAAS,EAAG,CACjC,IAAA,IAAW,KAAuB,EAC9B,KAAK,WAAW,CAAmB,EAEvC,KAAK,SAAS,WAAA,EACd,IAAA,IAAW,KAAY,KAAK,UACxB,KAAK,SAAS,QAAQ,EAAU,KAAK,YAAY,CAEzD,CACJ,CAEO,iBAAoD,EAAS,EAAsC,CACtG,KAAK,WAAW,IAAI,EAAM,CAAQ,CACtC,CAEA,IAAW,YAA4B,CACnC,OAAO,KAAK,WAChB,CAEA,IAAW,WAAyB,CAChC,OAAO,KAAK,UAChB,CAEA,IAAc,cAAe,CACzB,MAAO,CAAC,WAAY,GAAM,UAAW,GAAM,QAAS,EAAA,CACxD,CAEA,IAAW,UAA6B,CACpC,OAAO,KAAK,iBAChB,CAEJ,EChIa,EAAN,KAAoB,CAIvB,YAA6B,EAAoB,EAAsB,KAAM,CAAhD,KAAA,WAAA,EACzB,KAAK,gBAAkB,EACvB,KAAK,eAAiB,KAAK,cAAA,CAC/B,CANQ,eACS,gBAOT,eAAwB,CAC5B,GAAI,CACA,IAAM,EAAU,IAAI,IAAI,OAAO,SAAS,IAAI,CAAA,CAAE,aAAa,IAAI,MAAM,EACrE,GAAI,EAEA,OADA,KAAK,cAAc,CAAO,EACnB,CAEf,MAAY,CAAE,CACd,IAAM,EAAa,aAAa,QAAQ,KAAK,UAAU,EACvD,GAAI,EACA,OAAO,EAGX,GAAI,UAAU,SAAU,CACpB,IAAM,EAAc,UAAU,SAAS,MAAM,GAAG,CAAA,CAAE,GAElD,OADA,KAAK,cAAc,CAAW,EACvB,CACX,CAEA,OADA,KAAK,cAAc,KAAK,eAAe,EAChC,KAAK,eAChB,CAEQ,cAAc,EAAwB,CAC1C,aAAa,QAAQ,KAAK,WAAY,CAAQ,CAClD,CAEO,aAAsB,CACzB,OAAO,KAAK,cAChB,CAEO,YAAY,EAA0B,CAGzC,MAFA,MAAK,eAAiB,EACtB,KAAK,cAAc,CAAQ,EACpB,KAAK,cAChB,CACJ,EClCa,EAAN,KAAmB,CAoBtB,YAAoB,EAAc,EAAkB,GAAe,EAAyB,GAAI,CAA5E,KAAA,KAAA,EAA+C,KAAA,eAAA,EAC/D,KAAK,OAAS,GACd,KAAK,QAAU,CACnB,CArBQ,WACA,cAAgB,EAAA,EAChB,QAAU,GAEV,QAAU,GACV,MAAkB,CAAA,EAClB,MAAoB,CAAA,EACpB,UAAwB,CAAA,EACxB,UAAwB,CAAA,EAExB,gBACA,gBAER,YAAY,EAAiC,EAAiC,CAC1E,KAAK,gBAAkB,EACvB,KAAK,gBAAkB,CAC3B,CAOA,IAAY,OAAO,EAAiB,CAC3B,EAEM,KAAK,aACZ,KAAK,WAAW,QAAQ,CAAC,EAAI,CAAC,EAC9B,KAAK,cAAc,QAAQ,CAAC,EAAI,CAAC,GAHjC,KAAK,WAAa,EAAA,EAKtB,KAAK,QAAU,CACnB,CAEA,IAAY,QAAS,CACjB,OAAO,KAAK,OAChB,CAEA,MAAa,YAA+B,CAExC,OADA,MAAM,KAAK,WACJ,KAAK,MAChB,CAEA,MAAa,UAA0B,CACnC,KAAK,OAAS,GACd,KAAK,KAAK,KAAK,QAAQ,CAC3B,CAEA,IAAW,QAAS,CAChB,OAAO,KAAK,OAChB,CAEA,IAAW,UAAmB,CAE1B,OADI,KAAK,eAAe,OAAS,EAAU,KAAK,eACxC,IAAI,IAAI,OAAO,SAAS,IAAI,CAAA,CAAG,aAAa,IAAI,MAAM,GAAK,IACvE,CAEA,IAAW,MAAmB,CAC1B,OAAO,KAAK,KAChB,CAEA,IAAW,MAAsB,CAC7B,OAAO,KAAK,KAChB,CAEA,MAAa,aAAa,EAAyC,CAC/D,MAAM,KAAK,cACX,IAAM,EAAwB,OAAO,KAAK,KAAK,SAAS,EACxD,OAAO,QAAQ,CAAQ,CAAA,CAAE,SAAS,CAAC,EAAa,KAAY,CACpD,OAAO,GAAW,SAClB,EAAsB,QAAS,GAAa,CACxC,IAAM,EAAoB,KAAK,UAAU,IAAa,CAAA,EACtD,EAAiB,GAAe,EAChC,KAAK,UAAU,GAAY,CAC/B,CAAC,EAED,OAAO,QAAQ,CAAoB,CAAA,CAAE,SAAS,CAAC,EAAK,KAAW,CAC3D,IAAM,EAAoB,KAAK,UAAU,IAAgB,CAAA,EACzD,EAAiB,GAAO,EACxB,KAAK,UAAU,GAAe,CAClC,CAAC,CAET,CAAC,EACD,KAAK,2BAAA,CACT,CAEA,MAAa,WAAW,EAAoB,CASxC,GARA,OAAO,QAAQ,CAAM,CAAA,CAAE,SAAS,CAAC,EAAU,KAAU,CACjD,IAAM,EAAM,KAAK,UAAU,IAAa,CAAA,EACxC,OAAO,QAAQ,CAAkB,CAAA,CAAE,SAAS,CAAC,EAAK,KAAiB,CAC/D,EAAI,GAAO,CACf,CAAC,EACD,KAAK,UAAU,GAAY,CAC/B,CAAC,EACD,MAAM,KAAK,cACP,MAAM,KAAK,WAAA,EAAc,CACzB,KAAK,2BAAA,EACL,MACJ,CACA,QAAQ,MAAM,2FAA2F,CAC7G,CAEA,4BAA6B,CACzB,IAAM,EAAO,KAAK,SACZ,EAAS,KAAK,UACpB,GAAI,GAAU,EAAO,GAAO,CACxB,IAAM,EAAO,OAAO,KAAK,EAAO,EAAK,EACrC,IAAA,IAAW,KAAO,EACd,KAAK,MAAM,GAAO,EAAO,EAAI,CAAE,EAEvC,CACA,IAAM,EAAY,KAAK,UACvB,GAAI,GAAa,EAAU,GAAO,CAC9B,IAAM,EAAO,OAAO,KAAK,EAAU,EAAK,EACxC,IAAA,IAAW,KAAO,EACd,GAAI,KAAK,MAAM,GAAM,CACjB,IAAM,EAAiB,EAAU,EAAI,CAAE,GACnC,KAAK,MAAM,KACX,KAAK,MAAM,GAAO,KAAK,MAAM,GAErC,CAER,CACA,KAAK,MAAQ,OAAO,KAAK,KAAK,KAAK,CACvC,CAEA,MAAM,KAAK,EAAmB,KAAK,SAAmC,CAClE,IAAM,EAAU,KAAK,gBAAkB,GAAY,CAAC,KAAK,OAQzD,OAPI,IACA,KAAK,MAAQ,MAAM,KAAK,cAAc,KAAK,KAAM,CAAQ,EACzD,KAAK,2BAAA,EACL,KAAK,OAAS,GACd,KAAK,QAAU,KAAK,gBAAgB,eAAA,GAExC,KAAK,eAAiB,EACf,CACH,SAAU,KAAK,eACf,SAAA,CAER,CAEA,MAAc,cAAc,EAAe,EAAwC,CAC/E,IAAM,EAAM,EAAQ,EAAY,QAC1B,EAAqB,MAAM,KAAK,gBAAgB,gBAAgB,CAAG,EACzE,OAAO,KAAK,gBAAgB,UAAsB,CAAU,CAChE,CAEJ,ECoCa,EAAgB,IAAI,KA3LR,CAEJ,UACT,aAAe,GACN,SACA,QAEjB,aAAc,CACV,KAAK,UAAY,IAAI,EAAS,CAAC,MAAM,CAAC,EACtC,KAAK,SAAW,IAAI,EAAc,KAAK,gBAAgB,EACvD,KAAK,QAAU,IAAI,EAAa,UAAU,EAC1C,KAAK,QAAQ,YAAY,EAAgB,CAAc,EACvD,KAAK,KAAA,CACT,CAEA,IAAY,kBAAmB,CAC3B,IAAM,EAAM,OAAO,SAAS,KACtB,EAAS,IAAI,gBAAgB,CAAG,EACtC,MAAO,GAAG,EAAO,IAAI,OAAO,EAAC,GAAI,EAAO,IAAI,GAAG,EAAC,GAAI,EAAO,IAAI,GAAG,GACtE,CAEQ,uBAAuB,EAAwB,CACnD,GAAI,CACA,IAAM,EAAa,IAAI,IAAI,OAAO,SAAS,IAAI,EAC3C,EAAW,aAAa,IAAI,MAAM,IAClC,EAAW,aAAa,IAAI,OAAQ,CAAQ,EAC5C,OAAO,QAAQ,aAAa,CAAA,EAAI,GAAI,EAAW,SAAA,CAAU,EAEjE,OAAS,EAAO,CACZ,QAAQ,MAAM,CAAK,CACvB,CACJ,CAEA,MAAM,YAAY,EAAkB,CAChC,KAAK,SAAS,YAAY,CAAQ,EAClC,IAAM,EAAO,MAAM,KAAK,QAAQ,KAAK,CAAQ,EACzC,EAAK,UACL,KAAK,UAAU,UAAU,QAAQ,GAAK,CAClC,KAAK,sBAAsB,CAAC,CAChC,CAAC,EACD,KAAK,uBAAuB,EAAK,QAAQ,EAEjD,CAEA,aAAsB,CAClB,OAAO,KAAK,QAChB,CAEA,MAAc,MAAsB,CAChC,AAYI,KAAK,gBAXL,KAAK,UAAU,iBAAiB,gBAAiB,EAAM,EAAkB,IAAc,CACnF,KAAK,eAAe,EAAiB,EAAkB,CAAS,CACpE,CAAC,EACD,KAAK,UAAU,iBAAiB,YAAa,KAAK,sBAAsB,KAAK,IAAI,CAAC,EAClF,KAAK,UAAU,iBAAiB,iBAAkB,KAAK,sBAAsB,KAAK,IAAI,CAAC,EAEvF,MAAM,KAAK,YAAY,KAAK,QAAQ,EACpC,SAAS,iBAAiB,gCAAkC,GAAwB,CAChF,KAAK,UAAU,QAAQ,EAAO,MAAc,CAChD,EAAA,EACA,KAAK,SAAS,QAAQ,EACF,GAE5B,CAEA,MAAc,eAAe,EAAmB,EAA2B,EAA0B,CACjG,MAAM,KAAK,WAAA,EACX,IAAM,EAAW,EAAS,aAAa,8BAA8B,GAAK,EAAS,YAC7E,EAAQ,EAAS,aAAa,CAAgB,GAAK,GAEzD,GAAI,EAAiB,SAAS,EAAoB,GAAG,EAAG,CACpD,IAAM,EAAkB,EAAiB,QAAQ,EAAoB,IAAK,EAAE,EAC5E,EAAS,aAAa,EAAiB,KAAK,UAAU,EAAO,GAAsB,EAAE,CAAC,EACtF,MACJ,CAEI,EAAiB,SAAS,SAAS,GAAK,GACpC,EAAS,aAAa,UAAY,CAAgB,GAC9C,KAAK,QAAQ,SAKzB,EAAS,YAAc,KAAK,UAAU,EAAO,GAAsB,EAAE,EACzE,CAGQ,sBAAsB,EAAa,CACvC,GAAK,EAAkB,kBAAmB,CACtC,IAAM,EAAc,EAAkB,kBAAA,EACtC,IAAA,IAAW,KAAa,EACpB,IAAA,IAAW,KAAoB,KAAK,UAAU,WACtC,EAAU,SAAS,CAAgB,GACnC,KAAK,eAAgB,EAAmB,EAAkB,CAAS,CAInF,CAEK,EAAkB,kBAEnB,EADoC,iBAAiB,GACrD,CAAA,CAAS,QAAS,GAAa,CAC3B,IAAM,EAAa,EAAS,kBAAA,EAC5B,IAAA,IAAW,KAAa,EACpB,IAAA,IAAW,KAAoB,KAAK,UAAU,WACtC,EAAU,SAAS,CAAgB,GACnC,KAAK,eAAe,EAAU,EAAkB,CAAS,CAIzE,CAAC,CAET,CAEQ,YAAY,EAA8C,CAC9D,OAAO,SAAU,EAAa,EAA2B,EAA0B,CAC/E,EAAO,eAAe,EAAkB,EAAmB,CAAgB,CAC/E,CACJ,CAEQ,UAAU,EAA8C,CAC5D,OAAO,SAAU,EAAa,CAC1B,EAAO,sBAAsB,CAAK,CACtC,CACJ,CAEQ,SAAS,EAA8C,CAC3D,OAAO,SAAU,EAAa,CAC1B,EAAO,sBAAsB,CAAK,CACtC,CACJ,CAEA,IAAW,UAAW,CAClB,OAAO,KAAK,SAAS,YAAA,CACzB,CAEA,MAAa,IAAI,EAAgB,CAK7B,OAJA,MAAM,KAAK,WAAA,EACP,GAAU,KAAK,OAAO,CAAM,EACrB,KAAK,QAAQ,KAAK,GAEtB,EACX,CAEO,YAA+B,CAClC,OAAO,KAAK,QAAQ,WAAA,CACxB,CAEO,OAAO,EAAgB,CAC1B,OAAO,KAAK,QAAQ,KAAK,SAAS,CAAM,CAC5C,CAEO,UAAU,EAAgB,EAAoB,GAAY,CAC7D,IAAI,EAAe,GAiBnB,OAhBI,GAAU,KAAK,OAAO,CAAM,IAC5B,EAAe,KAAK,QAAQ,KAAK,IAEjC,GAAa,CAAC,IACd,AAGI,EAHA,KAAK,OAAO,CAAS,EACN,KAAK,QAAQ,KAAK,GAElB,GAGnB,OAAO,GAAiB,WACxB,EAAe,GAEnB,AACI,IAAe,EAAa,QAAQ,IAAK;CAAI,EAE1C,CACX,CAEA,MAAa,SAAS,EAAe,CAC7B,MAAM,KAAK,WAAA,GACX,KAAK,UAAU,QAAQ,CAAO,CAEtC,CAEA,MAAa,UAAU,EAAoB,CACvC,OAAO,MAAM,KAAK,QAAQ,WAAW,CAAM,CAC/C,CAEA,MAAa,aAAa,EAA2B,CACjD,OAAO,MAAM,KAAK,QAAQ,aAAa,CAAS,CACpD,CACJ,EC9Ea,EAAgB,IAAI,KA5GR,CACJ,OAEjB,aAAc,CAIV,EAAU,mBAAoB,KAAO,IAAkC,CACnE,MAAM,KAAK,mBAAmB,CAAM,CACxC,CAAC,CACL,CAEQ,cAAc,EAA2B,EAAyC,CAEtF,OADA,IAAiB,GACT,EAAR,CACI,KAAK,EAAe,SAChB,MAAO,gBAAgB,KAAK,CAAK,EACrC,KAAK,EAAe,OAChB,MAAO,yJAAyJ,KAAK,CAAK,CAAA,CAEtL,CAEQ,SAAS,EAAgB,CAC7B,IAAM,EAAc,SAAS,cAAc,OAAO,EAC9C,EACA,EAAY,YAAc,sCAE1B,EAAY,YAAc,wCAE9B,KAAK,OAAO,UAAY,GACxB,KAAK,OAAO,YAAY,CAAW,EACnC,eAAiB,CACb,KAAK,OAAO,KAAA,CAChB,EAAG,GAAI,CACX,CAEA,MAAc,uBAAwB,CAClC,EAAoB,cAAc,KAAK,MAAM,EACzC,EAAoB,iBACpB,EAAoB,SAAA,EAExB,MAAM,EAAoB,UAC9B,CAEA,MAAa,YAAY,EAAY,EAAiB,EAAiB,CACnE,GAAI,KAAK,cAAc,EAAI,EAAe,MAAM,GAC5C,KAAK,cAAc,EAAS,EAAe,QAAQ,EAAG,CACtD,KAAK,OAAO,KAAA,EAEZ,GAAI,CACA,MAAM,KAAK,sBAAA,EAEX,IAAM,EAAM,MAAM,EAA4B,YAAY,OAAO,SAAS,KAAM,CAAO,EAEvF,MAAM,EAAe,KAAK,EAAe,SAAS,0BAA0B,EAAG,KAAK,UAAU,CAC1F,KACA,UACA,KAAA,CACH,CAAC,EACF,KAAK,SAAS,EAAI,CACtB,MAAY,CACR,KAAK,SAAS,EAAK,CACvB,CACJ,CACJ,CAEA,MAAM,gBAAgB,EAA2B,CAC7C,GAAI,KAAK,cAAc,EAAY,MAAO,EAAe,MAAM,GAC3D,KAAK,cAAc,EAAY,OAAQ,EAAe,QAAQ,EAAG,CACjE,KAAK,OAAO,KAAA,EACZ,GAAI,CACA,MAAM,KAAK,sBAAA,EAEX,MAAM,EAAe,KAAK,EAAe,SAAS,wBAAwB,EAAG,KAAK,UAAU,CACpF,QAAS,EAAY,SAAW,GAChC,KAAM,EAAY,MAAQ,GAC1B,QAAS,EAAY,SAAW,GAChC,MAAO,EAAY,OAAS,GAC5B,MAAO,EAAY,OAAS,GAC5B,SAAU,EAAY,UAAY,GAClC,OAAQ,EAAY,QAAU,EAAA,CACjC,CAAA,EAEL,KAAK,SAAS,EAAI,CACtB,MACS,CACL,KAAK,SAAS,EAAK,CACvB,CACJ,CACJ,CAEA,MAAM,mBAAmB,EAA+B,CACpD,OAAO,MAAM,MAAM,EAAe,SAAS,8BAA8B,EAAG,CACxE,OAAQ,OACR,YAAa,UACb,KAAM,KAAK,UAAU,CAAM,CAAA,CAC9B,CACL,CAEA,2BAA2B,EAA+B,CACtD,IAAM,EAAO,IAAI,KACb,CAAC,KAAK,UAAU,CAAM,CAAC,EACvB,CAAC,KAAM,iCAAA,CAAiC,EAE5C,UAAU,WAAW,EAAe,SAAS,8BAA8B,EAAG,CAAI,CACtF,CACJ,EC3DkC,IAAI,KA9CR,CAClB,cACA,WACR,aAAc,CACV,EAAU,+BAAiC,GAAS,CAChD,GAAI,OAAO,gBAAgB,sBAA2B,OAAO,gBAAgB,qBAAwB,UACjG,KAAK,WAAa,SAAS,cAAc,eAAe,GAAK,OAAO,OAAO,SAAS,cAAc,eAAe,CAAC,EAC/G,KAAK,YAAY,CAChB,IAAM,EAAiB,SAAS,cAAc,4BAA4B,GAAK,OAAO,OAAO,SAAS,cAAc,UAAU,EAAG,CAAE,UAAW,mBAAA,CAAoB,EAClK,EAAe,OAAO,KAAK,UAAU,EACrC,SAAS,KAAK,OAAO,CAAc,CACvC,CAER,CAAC,CACL,CAEA,MAAM,YAAa,CACZ,KAAK,eACJ,MAAM,KAAK,cACP,KAAK,WACL,KAAK,WAAW,WAAA,EAGhB,QAAQ,KAAK,cAAc,GAI/B,QAAQ,KAAK,oBAAoB,CAEzC,CAEA,MAAM,WAAY,CACX,KAAK,eACJ,MAAM,KAAK,cACP,KAAK,WACL,KAAK,WAAW,UAAA,EAGhB,QAAQ,KAAK,cAAc,GAI/B,QAAQ,KAAK,oBAAoB,CAEzC,CACJ,ECnDO,IAAM,EAAN,KAAmB,CAKtB,OAAO,qBAAqB,EAA6B,CAKrD,MAAO,WAJO,OAAO,QAAQ,EAAM,MAAM,CAAA,CAAE,KAAK,CAAC,EAAM,KAE5C,GAAG,EAAI,IADF,EAAK,OAAS,EAAK,QACT,EAER,CAAA,CAAM,KAAK;CAAI,EAAC,GACtC,CAKA,OAAO,oBAAoB,EAAkB,EAAyB,EAAkB,GAAO,CAC3F,IAAM,MAAiB,CACnB,EAAQ,cAAc,IAAI,YAAY,0CAA2C,CAC7E,QAAS,GACT,OAAQ,CAAE,kBAAmB,EAAQ,SAAY,CAAA,CAAO,CAC3D,CAAC,CACN,EAEM,EAAW,EAAO,OAAS,EAAO,QAClC,EAAiB,EAAS,CAAC,EAAW,EAE5C,OAAQ,EAAO,KAAf,CACI,IAAK,SACD,EAAQ,YAAc,OAAO,CAAQ,EACrC,MACJ,IAAK,UACI,GAAgB,EAAQ,OAAA,EAC7B,MACJ,IAAK,SACL,IAAK,iBACG,EAAO,WAAW,EAAQ,aAAa,EAAO,UAAW,OAAO,CAAQ,CAAC,EAC7E,MACJ,IAAK,YACD,KAAK,oBAAoB,EAAS,EAAQ,CAAM,EAChD,KAAA,CAER,EAAA,CACJ,CAEA,OAAe,oBAAoB,EAAkB,EAAyB,EAAiB,CAC3F,GAAI,CAAC,EAAO,UAAW,OAEvB,IAAI,EAAM,EAAO,OAAS,EAAO,QAE3B,EAAW,EAAO,aAClB,EAAc,EAAO,cAEvB,GAAY,OAAQ,OAAe,kBAAkB,IAAc,UACnE,EAAO,OAAe,gBAAgB,GAC/B,GAAe,OAAQ,OAAe,kBAAkB,IAAiB,YAChF,EAAM,CAAE,OAAe,gBAAgB,IAG3C,IAAM,EAAa,EAAS,CAAC,EAAM,EAC/B,EAAO,UAAY,UACnB,EAAa,EAAQ,aAAa,EAAO,UAAW,EAAE,EAAI,EAAQ,gBAAgB,EAAO,SAAS,EAElG,EAAQ,aAAa,EAAO,UAAW,OAAO,CAAG,CAAC,CAE1D,CACJ,ECkBa,EAAwB,IAAI,KAhFR,CACrB,eACA,OACA,aAAkC,EAAA,EAClC,YAAiC,EAAA,EACjC,YAAgC,SAAS,cAAc,OAAO,EAEtE,aAAc,CACV,KAAK,mBAAA,EACL,EAAU,8BAAiC,KAAK,WAAA,CAAY,CAChE,CAEQ,oBAAqB,CACzB,KAAK,eAAiB,SAAS,cAAc,YAAY,EACrD,KAAK,iBACL,SAAS,KAAK,YAAY,KAAK,cAAc,EAC7C,KAAK,eAAe,OAAA,EAE5B,CAEA,IAAW,eAA+B,CAAE,OAAO,KAAK,YAAc,CACtE,IAAW,YAA2B,CAAE,OAAO,QAAQ,IAAI,CAAC,KAAK,aAAc,KAAK,WAAW,CAAC,CAAG,CAEnG,MAAM,YAAa,CACf,GAAI,CACA,IAAM,EAAM,MAAM,EAAe,gBAAgB,aAAa,EAC9D,KAAK,OAAU,MAAM,EAAe,UAAU,CAAG,EAE7C,KAAK,SACL,KAAK,YAAY,UAAY,EAAa,qBAAqB,KAAK,MAAM,EAC1E,SAAS,KAAK,YAAY,KAAK,WAAW,EAC1C,KAAK,aAAa,QAAA,GAEtB,MAAM,KAAK,sBAAsB,SAAU,CAAC,KAAK,MAAM,CAC3D,QAAE,CACE,KAAK,gBAAgB,OAAA,EACrB,KAAK,YAAY,QAAA,CACrB,CACJ,CAEA,MAAa,sBAAsB,EAA+B,EAAgB,GAAO,CACrF,IAAM,EAAW,EAAK,iBAAiB,GAAG,EAE1C,IAAA,IAAW,KAAM,MAAM,KAAK,CAAQ,EAChC,MAAM,KAAK,eAAe,EAAI,CAAa,EACvC,EAAG,YACH,MAAM,KAAK,sBAAsB,EAAG,WAAY,CAAa,CAGzE,CAEA,MAAc,eAAe,EAAa,EAAwB,CAC9D,IAAM,EAAgB,EAAG,aAAa,aAAa,EAC7C,EAAc,EAAG,aAAa,WAAW,EAE/C,GAAI,GAAiB,CAAC,GAAiB,KAAK,OAAQ,CAChD,IAAM,EAAa,EAAc,WAAW,GAAG,EACzC,EAAW,EAAa,EAAc,UAAU,CAAC,EAAI,EAErD,EAAS,KAAK,OAAO,SAAS,GAChC,IACgB,MAAM,QAAQ,CAAM,EAAI,EAAS,CAAC,CAAM,EAAA,CAChD,QAAQ,GAAK,EAAa,oBAAoB,EAAI,EAAG,CAAU,CAAC,CAEhF,CAEA,GAAI,EAAa,CACb,IAAM,EAAa,EAAY,WAAW,GAAG,EACvC,EAAkB,EAAa,EAAY,UAAU,CAAC,EAAI,EAC1D,EAAa,OAAe,kBAAkB,GAEhD,OAAO,GAAc,YACA,EAAa,EAAY,CAAC,IAE3C,EAAG,OAAA,CAGf,CACJ,CACJ,EC+Ea,EAA6B,IAAI,KA9IR,CAClC,aAAc,CACd,CAEA,MAAc,qBAAqB,EAAmD,CAClF,OAAQ,MAAM,EAA4B,qBAAqB,CAAK,EAAA,CAAG,EAC3E,CAEA,MAAa,eAAe,EAAwD,CAChF,IAAM,EAA2B,CAC7B,cAAiB,iBACjB,aAAgB,CAAA,CAAC,EAgBrB,MAdA,GAAK,aAAa,QAAU,EAAQ,QACpC,EAAK,aAAa,0BAA4B,EAAQ,cACtD,EAAK,aAAa,4BAA8B,EAAQ,aAAe,EAAQ,aAAe,GAC9F,EAAK,aAAa,4BAA8B,EAAQ,aACxD,EAAK,aAAa,uBAAyB,EAAQ,QAC/C,EAAQ,WACR,EAAK,aAAa,wBAA0B,EAAQ,UAExD,EAAK,aAAa,sBAAwB,EAAQ,OAClD,EAAK,aAAa,4BAA8B,EAAQ,aAEpD,EAAQ,sBACR,EAAK,aAAa,6BAA+B,EAAQ,oBAAoB,QAAQ,CAAC,GAEnF,MAAM,KAAK,qBAAqB,CAAI,CAC/C,CAEA,MAAa,kBAAkB,EAA2D,CACtF,IAAM,EAA2B,CAC7B,cAAiB,oBACjB,aAAgB,CAAA,CAAC,EAgBrB,MAdA,GAAK,aAAa,EAAQ,oBAAsB,EAAQ,MACxD,EAAK,aAAa,QAAU,EAAQ,QACpC,EAAK,aAAa,0BAA4B,EAAQ,cACtD,EAAK,aAAa,4BAA8B,EAAQ,aAAe,EAAQ,aAAe,GAC9F,EAAK,aAAa,4BAA8B,EAAQ,aACxD,EAAK,aAAa,uBAAyB,EAAQ,QAC/C,EAAQ,WACR,EAAK,aAAa,wBAA0B,EAAQ,UAExD,EAAK,aAAa,sBAAwB,EAAQ,OAClD,EAAK,aAAa,4BAA8B,EAAQ,aACpD,EAAQ,sBACR,EAAK,aAAa,6BAA+B,EAAQ,oBAAoB,QAAQ,CAAC,GAEnF,MAAM,KAAK,qBAAqB,CAAI,CAC/C,CAEA,MAAa,kBAAkB,EAA2D,CACtF,IAAM,EAA2B,CAC7B,cAAiB,oBACjB,aAAgB,CAAA,CAAC,EAiBrB,MAfA,GAAK,aAAa,EAAQ,oBAAsB,EAAQ,MACxD,EAAK,aAAa,QAAU,EAAQ,QACpC,EAAK,aAAa,UAAY,EAAQ,UACtC,EAAK,aAAa,0BAA4B,EAAQ,cACtD,EAAK,aAAa,4BAA8B,EAAQ,aAAe,EAAQ,aAAe,GAC9F,EAAK,aAAa,4BAA8B,EAAQ,aACxD,EAAK,aAAa,uBAAyB,EAAQ,QAC/C,EAAQ,WACR,EAAK,aAAa,wBAA0B,EAAQ,UAExD,EAAK,aAAa,sBAAwB,EAAQ,OAClD,EAAK,aAAa,4BAA8B,EAAQ,aACpD,EAAQ,sBACR,EAAK,aAAa,6BAA+B,EAAQ,oBAAoB,QAAQ,CAAC,GAEnF,MAAM,KAAK,qBAAqB,CAAI,CAC/C,CAEA,MAAa,MAAM,EAA+C,CAC9D,IAAM,EAA2B,CAAC,cAAiB,QAAS,aAAgB,CAAA,CAAC,EAiB7E,MAhBA,GAAK,aAAa,0BAA4B,EAAQ,YAAc,IAAM,IAC1E,EAAK,aAAa,oCAAsC,EAAQ,aAAe,IAAM,IACrF,EAAK,aAAa,2CAA6C,EAAQ,mBAAqB,IAAM,IAClG,EAAK,aAAa,oCAAsC,EAAQ,cAAgB,IAAM,IACtF,EAAK,aAAa,0BAA4B,EAAQ,cACtD,EAAK,aAAa,4BAA8B,EAAQ,aACxD,EAAK,aAAa,uBAAyB,EAAQ,QACnD,EAAK,aAAa,4BAA8B,EAAQ,aAAe,EAAQ,aAAe,GAC9F,EAAK,aAAa,sBAAwB,EAAQ,OAC9C,EAAQ,WACR,EAAK,aAAa,wBAA0B,EAAQ,UAExD,EAAK,aAAa,4BAA8B,EAAQ,aACpD,EAAQ,sBACR,EAAK,aAAa,6BAA+B,EAAQ,oBAAoB,QAAQ,CAAC,GAEnF,MAAM,KAAK,qBAAqB,CAAI,CAC/C,CAEA,MAAa,kBAAkB,EAA2D,CACtF,IAAM,EAA2B,CAAC,cAAiB,oBAAqB,aAAgB,CAAA,CAAC,EAWzF,MAVA,GAAK,aAAa,0BAA4B,EAAQ,cACtD,EAAK,aAAa,4BAA8B,EAAQ,aACxD,EAAK,aAAa,uBAAyB,EAAQ,QACnD,EAAK,aAAa,sBAAwB,EAAQ,OAC9C,EAAQ,WACR,EAAK,aAAa,wBAA0B,EAAQ,UAExD,EAAK,aAAa,4BAA8B,EAAQ,aAAe,EAAQ,aAAe,GAC9F,EAAK,aAAa,wCAA0C,KAAQ,YACpE,EAAK,aAAa,4BAA8B,EAAQ,aACjD,MAAM,KAAK,qBAAqB,CAAI,CAC/C,CAEA,MAAa,aAAa,EAAsD,CAC5E,IAAM,EAA2B,CAC7B,cAAiB,eACjB,aAAgB,CACZ,SAAY,CAAA,CAAC,CACjB,EAsBJ,OApBK,EAAK,aAAa,WACnB,EAAK,aAAa,SAAW,CAAA,GAEjC,EAAK,aAAa,SAAS,EAAQ,oBAAsB,EAAQ,MAE7D,EAAQ,cACR,EAAK,aAAa,0BAA4B,KAElD,EAAK,aAAa,0BAA4B,EAAQ,cACtD,EAAK,aAAa,4BAA8B,EAAQ,aACxD,EAAK,aAAa,uBAAyB,EAAQ,QACnD,EAAK,aAAa,4BAA8B,EAAQ,aAAe,EAAQ,aAAe,GAC9F,EAAK,aAAa,sBAAwB,EAAQ,OAClD,EAAK,aAAa,4BAA8B,EAAQ,aACpD,EAAQ,WACR,EAAK,aAAa,wBAA0B,EAAQ,UAEpD,EAAQ,sBACR,EAAK,aAAa,6BAA+B,EAAQ,oBAAoB,QAAQ,CAAC,GAEnF,MAAM,KAAK,qBAAqB,CAAI,CAC/C,CACJ,EAIA,OAAO,2BAA6B,EAsL7B,IAAM,EAAmB,IAAI,KAzJR,CACxB,aAAc,CACd,CAEA,MAAa,OAAO,EAAuB,EAAoC,EAA6E,CACxJ,IAAM,EAAS,CACX,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,aAAc,GAAgC,EAAA,EAElD,OAAO,MAAM,EAA4B,wBAAwB,0BAA2B,EAAQ,EAAK,CAC7G,CAEA,MAAa,kBAAkB,EAAuB,EAAkB,EAAkB,EAAuB,EAAuB,EAA4D,CAChM,IAAM,EAAS,CACX,aAAc,EACd,QAAS,EACT,QAAS,EACT,aAAc,EACd,aAAc,EACd,YAAa,IAAmB,EAEpC,OAAO,MAAM,EAA4B,wBAAwB,sCAAuC,EAAQ,EAAK,CACzH,CAEA,MAAa,eAAe,EAAuB,EAA0B,EAAoC,EAA6E,CAC1L,IAAM,EAAS,CACX,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,SAAU,EACV,aAAc,GAAgC,EAAA,EAElD,OAAO,MAAM,EAA4B,wBAAwB,mCAAoC,EAAQ,EAAI,CACrH,CAEA,MAAa,aAAa,EAAuB,EAA0C,EAAoC,EAA6E,CACxM,IAAM,EAAS,CACX,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,aAAc,GAAgC,GAC9C,eAAA,EAEJ,OAAO,MAAM,EAA4B,wBAAwB,iCAAkC,EAAQ,EAAI,CACnH,CAEA,MAAa,iBAAiB,EAAuB,EAAmD,EAAoC,CACxI,IAAM,EAAS,CACX,aAAc,EACd,aAAc,GAAgC,GAC9C,kBAAmB,CAAA,EAEvB,OAAO,MAAM,EAA4B,wBAAwB,qCAAsC,EAAQ,EAAI,CACvH,CAEA,MAAa,aAAa,EAAuB,EAA0C,EAAoC,EAAkD,CAC7K,IAAM,EAAS,CACX,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,aAAc,GAAgC,GAC9C,eAAA,EAEJ,OAAO,MAAM,EAA4B,wBAAwB,iCAAkC,EAAQ,EAAI,CACnH,CAEA,MAAa,aAAa,EAAuB,EAA0C,EAAoC,EAAkD,CAC7K,IAAM,EAAS,CACX,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,aAAc,GAAgC,GAC9C,eAAA,EAEJ,OAAO,MAAM,EAA4B,wBAAwB,iCAAkC,EAAQ,EAAI,CACnH,CAEA,MAAa,iBAAiB,EAAuB,EAAgD,EAAwB,EAAkD,CAC3K,IAAI,EAAS,CACT,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,aAAc,GAAgC,GAC9C,cAAe,CAAA,EAEnB,OAAO,MAAM,EAA4B,wBAAwB,qCAAsC,EAAQ,EAAI,CACvH,CAEA,MAAa,cAAc,EAAuB,EAAoC,EAA6E,CAC/J,IAAM,EAAS,CACX,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,aAAc,GAAgC,EAAA,EAElD,OAAO,MAAM,EAA4B,wBAAwB,kCAAmC,EAAQ,EAAI,CACpH,CAEA,MAAa,eAAe,EAAuB,EAAoC,EAA6E,CAChK,IAAM,EAAS,CACX,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,aAAc,GAAgC,EAAA,EAElD,OAAO,MAAM,EAA4B,wBAAwB,mCAAoC,EAAQ,EAAI,CACrH,CAEA,MAAa,2BAA2B,EAAuB,EAAgB,EAAoC,EAAkD,CACjK,IAAM,EAAS,CACX,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,aAAc,GAAgC,GAC9C,MAAO,CAAA,EAEX,OAAO,MAAM,EAA4B,wBAAwB,+CAAgD,EAAQ,EAAI,CACjI,CAEA,MAAa,2BAA2B,EAAuB,EAAoC,EAAoE,CACnK,IAAM,EAAS,CACX,oBAAqB,GAA8C,CAAA,EACnE,aAAc,EACd,aAAc,GAAgC,EAAA,EAE5C,EAAS,MAAM,EAA4B,wBAAwB,+CAAgD,EAAQ,EAAK,EACtI,GAAI,EAAO,qBACP,MAAO,GAEX,GAAI,EAAO,aACP,IAAS,EAAQ,EAAG,EAAQ,EAAO,QAAQ,OAAQ,EAAE,EAEjD,GADc,EAAO,QAAQ,GAEzB,MAAO,EAAA,CAInB,MAAO,EACX,CAGA,MAAa,WAAW,EAAqF,CACzG,IAAM,EAAW,CAAI,EACf,EAAW,MAAM,EAA4B,mBAAA,EACnD,IAAA,IAAW,KAAW,EAClB,GAAI,EAAQ,KAAK,SAAS,KAAK,GAAK,EAAQ,KAAK,SAAS,KAAK,EAAG,CAC9D,GAAI,GAAkB,KAAW,CACzB,EAAe,SAAS,EAAQ,QAAQ,GACxC,EAAS,KAAK,CAAO,EAEzB,QACJ,CACA,EAAS,KAAK,CAAO,CACzB,CAEJ,OAAO,CACX,CAEJ,ECvVM,EAAW,SAAU,EAAiB,CACxC,IAAM,EAAM,EAAQ,MAAM,GAAG,CAAA,CAAE,IAAKC,GAAI,CAACA,CAAC,EACpC,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAM,KAAK,IAAI,EAAG,EAAG,CAAC,EAEtB,EAAQ,EADF,KAAK,IAAI,EAAG,EAAG,CACP,EAEhB,EAAG,EA4BP,MA1BA,CAUI,EAVA,IAAU,EACN,EAEC,IAAQ,EACT,KAAQ,EAAI,GAAK,EAAS,GAEzB,IAAQ,EACT,KAAQ,EAAI,GAAK,EAAS,GAG1B,KAAQ,EAAI,GAAK,EAAS,GAG9B,EAAI,IACJ,GAAK,KAGT,AAII,EAJA,IAAQ,EACJ,EAGA,EAAQ,EAKT,CAAC,EAAG,EAAG,CAAC,CACnB,EA6EkC,IAAI,KA3ER,CAElB,UAAU,EAA4C,CAC1D,IAAM,EAAa,EAAO,IAAI,SAAS,EAAiF,CACpH,IAAM,EAAM,EAAS,EAAM,IAAI,EAC/B,MAAO,CAAC,EAAI,GAAI,EAAI,GAAI,EAAI,GAAI,CAAK,CACzC,CAAC,EACK,EAAiE,CAAA,EACvE,IAAA,IAAS,EAAI,EAAG,GAAK,IAAK,IAAK,CAC3B,EAAM,KAAK,CAAA,CAAE,EACb,IAAA,IAAS,EAAI,EAAG,GAAK,IAAK,IAAK,CAC3B,EAAM,EAAC,CAAE,KAAK,CAAA,CAAE,EAChB,IAAA,IAAS,EAAI,EAAG,GAAK,IAAK,IACtB,EAAM,EAAC,CAAE,EAAC,CAAE,KAAK,CAAA,CAAE,CAE3B,CACJ,CAGA,EAAW,QAAS,GAAuD,CACvE,IAAM,EAAI,KAAK,MAAM,EAAM,EAAY,EACjC,EAAI,KAAK,MAAM,EAAM,GAAe,GAAG,EACvC,EAAI,KAAK,MAAM,EAAM,GAAe,GAAG,EAC7C,EAAM,EAAC,CAAE,EAAC,CAAE,EAAC,CAAE,KAAK,EAAM,EAAiC,CAC/D,CAAC,EAGD,IAAM,EAAe,CAAA,EAGrB,IAAA,IAAS,EAAI,EAAG,GAAK,IAAK,IACtB,IAAA,IAAS,EAAI,EAAG,GAAK,IAAK,IACtB,IAAA,IAAS,EAAI,EAAG,GAAK,IAAK,IACtB,EAAa,KAAK,EAAM,EAAC,CAAE,EAAC,CAAE,EAAE,EAK5C,OAAO,CAEX,CAEA,MAAa,OAAO,EAA4D,CAE5E,MADA,KAAqB,CAAA,EACd,MAAO,GAA6B,mBAAmB,CAC1D,aAAc,EAAQ,aACtB,KAAM,KAAA,CACT,EAAA,CAA8B,KAAM,GAC1B,CACV,CAEL,CAEA,MAAa,OAAO,EAA4D,CAE5E,MADA,KAAqB,CAAA,EACd,MAAO,GAA6B,mBAAmB,CAC1D,aAAc,EAAQ,aACtB,KAAM,KAAA,CACT,EAAA,CAA8B,KAAM,GAC1B,CACV,CACL,CAEA,MAAa,WAAW,EAAgE,CAEpF,MADA,KAAqB,CAAA,EACd,MAAO,GAA6B,mBAAmB,CAC1D,aAAc,EAAQ,aACtB,KAAM,SAAA,CACT,EAAA,CAAkC,KAAM,GAE9B,CACV,CACL,CACJ,EC3CO,IAAM,EAAoB,IAAI,KAhER,CAEzB,MAAa,IAAI,EAAuI,CACpJ,OAAO,EAA4B,gBAAgB,CAAO,CAC9D,CAEA,MAAa,cAAiC,CAC1C,OAAO,GAA6B,yBAAA,CACxC,CAEA,MAAa,SAAS,EAAmC,EAAkC,CAAA,EAAI,CAC3F,IAAM,EAAiB,MAAM,KAAK,IAAI,CAAO,EACzC,EAAQ,QACH,EAAQ,aAEF,EAAQ,cAAgB,CAAC,EAAQ,QACxC,MAAM,KAAK,gBAAgB,EAAW,EAAwC,CAAO,EAC9E,EAAQ,cAAgB,EAAQ,SACvC,MAAM,KAAK,cAAc,EAAW,EAAsC,CAAO,EAJjF,MAAM,KAAK,qBAAqB,EAAW,EAA6C,CAAO,EAOnG,MAAM,KAAK,aAAa,EAAW,CAA0C,CAErF,CAEA,MAAc,qBAAqB,EAAmC,EAA4C,EAAiC,CAC/I,IAAM,EAAiB,EACjB,EAAO,EAAiB,OAAO,KAAK,CAAc,EAAI,CAAA,EAC5D,IAAA,IAAW,KAAgB,EACnB,EAAU,sBAAsB,MAAM,EAAU,qBAAqB,EAAc,EAAe,EAAa,EACnH,MAAM,KAAK,gBAAgB,EAAW,EAAe,GAAe,OAAO,OAAO,EAAS,CAAC,cAAA,CAA2B,CAAC,CAEhI,CAEA,MAAc,gBAAgB,EAAmC,EAAuC,EAAiC,CACrI,GAAI,EAAQ,aAAc,CACtB,IAAM,EAAiB,EACjB,EAAO,OAAO,KAAK,CAAc,EACvC,IAAA,IAAW,KAAW,EACd,EAAU,iBAAmB,EAAQ,cAAc,MAAM,EAAU,gBAAgB,EAAQ,aAAc,EAAS,EAAe,EAAQ,EAC7I,MAAM,KAAK,cAAc,EAAW,EAAe,GAAU,OAAO,OAAO,EAAS,CAAC,SAAA,CAAiB,CAAC,CAE/G,CACJ,CAEA,MAAc,cAAc,EAAmC,EAAqC,EAAiC,CACjI,GAAI,EAAQ,cAAgB,EAAQ,QAAS,CACzC,IAAM,EAAiB,EACjB,EAAO,OAAO,KAAK,CAAc,EACvC,IAAA,IAAW,KAAS,EACZ,EAAU,eAAiB,EAAQ,cAAgB,EAAQ,SAAS,MAAM,EAAU,cAAc,EAAQ,aAAc,EAAQ,QAAS,EAAO,EAAe,EAAM,EACzK,MAAM,KAAK,aAAa,EAAW,EAAe,EAAM,CAEhE,CACJ,CAEA,MAAc,aAAa,EAAmC,EAA0C,CACpG,IAAA,IAAW,KAAQ,EACX,EAAU,eAAe,MAAM,EAAU,cAAc,CAAI,CAEvE,CAEJ,ECzDsB,EAAf,KAA8E,CAEvE,wBACF,wBAAyG,CAAA,EACzG,oBAAsD,CAAA,EAI9D,MAAa,oBAAoB,EAAsB,EAA8D,CACjH,OAAO,GAA6B,2BAA2B,CAC3D,eACA,SAAA,CACH,CACL,CAEA,MAAa,gBAAgB,EAAsB,EAAiB,EAAsB,EAAU,GAAkD,CAclJ,OAbI,GAAW,CAAC,KAAK,oBAAoB,IAAiB,CAAC,KAAK,oBAAoB,EAAY,CAAE,IAAY,CAAC,KAAK,oBAAoB,EAAY,CAAE,EAAO,CAAE,GAA4B,WAChL,GAA6B,gBAAgB,CAChD,eAAc,UAAS,aAAA,CAC1B,CAAA,CACI,KAAM,IACE,KAAK,oBAAoB,KAAe,KAAK,oBAAoB,GAAgB,CAAA,GACjF,KAAK,oBAAoB,EAAY,CAAE,KAAU,KAAK,oBAAoB,EAAY,CAAE,GAAW,CAAA,GACpG,GAAe,CAAC,KAAK,oBAAoB,EAAY,CAAE,EAAO,CAAE,GAAc,KAAK,oBAAoB,EAAY,CAAE,EAAO,CAAE,GAAe,CAAA,EACxI,CAAC,GAAe,CAAC,KAAK,oBAAoB,EAAY,CAAE,EAAO,CAAE,UAAY,KAAK,oBAAoB,EAAY,CAAE,EAAO,CAAE,QAAa,CAAA,GACnJ,KAAK,oBAAoB,EAAY,CAAE,EAAO,CAAE,GAA4B,WAAa,EAClF,KAAK,oBAAoB,EAAY,CAAE,EAAO,CAAE,GAA4B,WACtF,EAEF,QAAQ,QAAQ,KAAK,oBAAoB,EAAY,CAAE,EAAO,CAAE,GAA4B,UAAU,CACjH,CAEA,MAAgB,UAAU,EAAqC,EAAoC,EAAY,GAAO,EAAuC,CACzJ,IAAM,EAA6B,OAAO,OAAO,EAAS,QAAQ,EAClE,IAAA,IAAS,EAAK,EAAG,EAAK,EAAiB,OAAQ,IAAM,CACjD,IAAM,EAAuB,EAAiB,GAC9C,EAAU,uBAAuB,CAAiB,EAElD,IAAM,EAA2C,OAAO,OAAO,EAAkB,QAAQ,EACzF,IAAA,IAAS,EAAK,EAAG,EAAK,EAAY,OAAQ,IAAM,CAC5C,IAAM,EAAqC,EAAY,GACjD,EAAe,MAAM,KAAK,gBAAgB,EAAkB,iBAAkB,EAAa,WAAW,EAC5G,EAAU,kBAAkB,EAAmB,CAAY,EAE3D,IAAI,EAAqB,MAAM,KAAK,qBAAqB,EAAW,EAAmB,EAAc,CAAS,EAC9G,EAAqB,KAAK,sBAAsB,CAAkB,EAElE,IAAM,EAAkC,EAAa,kBAAoB,OAAO,KAAK,EAAa,QAAQ,EAC1G,IAAA,IAAS,EAAM,EAAG,EAAM,EAAiB,OAAQ,IAAO,CACpD,IAAM,EAAkB,EAAiB,GACnC,EAAmC,EAAa,SAAS,GAE3D,EAAmD,OAAO,OAAO,EAAkB,QAAQ,EACzF,EAA2D,CAAA,EAE3D,EAAiB,GAAY,kBAAkB,EAAkB,IACvE,GAAI,EAAgB,CAChB,IAAM,EAAa,EAAe,OAAO,WAGzC,GAAI,EAFe,EAAW,SAAW,GAAK,EAAW,EAAC,CAAE,OAAO,SAAW,GAEhE,CACV,IAAA,IAAW,KAAS,EAChB,IAAA,IAAW,KAAW,EAAM,MAAO,CAC/B,IAAM,EAAgB,EAAsB,KAAK,GAAQ,EAAK,MAAQ,CAAO,EACzE,GACA,EAA8B,KAAK,CAAa,CAExD,CAEJ,EAAwB,CAC5B,CACJ,CAEA,IAAI,EAQJ,IAPI,EAAsB,OAAS,GAAM,EAAsB,SAAW,GAAK,EAAsB,EAAC,CAAE,IAAI,YAAA,CAAY,CAAE,WAAW,UAAU,KAC3I,EAAe,EAAsB,KAAM,GAChC,EAAQ,cAAgB,EAAkB,YACpD,GAEL,EAAU,mBAAmB,EAAmB,EAAc,EAAmB,EAAuB,CAAY,EAEhH,GAAsB,EAAU,wBAAyB,CACzD,IAAI,EAAQ,GACZ,IAAA,IAAS,EAAO,EAAG,EAAO,EAAmB,OAAQ,IAAQ,CACzD,IAAA,IAAW,KAAO,EAAmB,EAAI,CAAE,KACvC,GAAI,EAAI,MAAQ,CAAC,EAAkB,GAAI,CACnC,EAAI,kBAAoB,EACxB,EAAI,sBAAwB,EAC5B,EAAI,aAAe,EACnB,EAAQ,GACR,KACJ,CAEJ,GAAI,EAAO,KACf,CACJ,CACJ,CACA,GAAI,GAAsB,EAAU,wBAChC,IAAA,IAAS,EAAO,EAAG,EAAO,EAAmB,OAAQ,IAAQ,CACzD,IAAM,EAAmB,EAAmB,GAC5C,IAAA,IAAW,KAAe,EACtB,EAAiB,KAAK,MAAM,EAAG,IACpB,EAAY,SAAS,EAAE,IAAI,SAAA,CAAU,EAAI,EAAI,EAAY,SAAS,EAAE,IAAI,SAAA,CAAU,EAAI,GAAK,CACrG,EAEL,GAAI,CAAC,GAAkB,MAAO,CAC1B,IAAA,IAAW,KAAgB,EAAiB,KAAM,CAC9C,IAAM,EAAa,CACf,KAAM,CAAC,CAAY,EACnB,MAAO,EAAa,mBAAmB,MAAQ,GAC/C,IAAK,EAAiB,IACtB,GAAI,EAAiB,EAAA,EAczB,GAAI,CAACC,MAZkB,EAAU,wBAAwB,CACrD,oBACA,eACA,cAAe,EACf,cAAA,CACH,CAAA,CACI,SACU,EACV,CAAA,CACA,MAAO,GACG,EACV,EACU,MAAO,EAC1B,CACA,QACJ,CAaA,GAAI,CAAC,MAZkB,EAAU,wBAAwB,CACrD,oBACA,eACA,cAAe,EAAmB,GAClC,cAAA,CACH,CAAA,CACI,SACU,EACV,CAAA,CACA,MAAO,GACG,EACV,EACU,MAAO,EAC1B,CAER,CACJ,CACA,MAAO,EACX,CAEA,MAAa,qBAAqB,EAAqC,EAA8C,EAAoC,EAAY,GAAgE,CACjO,IAAI,EACA,EAAU,wBAA0B,KAAK,yBAA2B,GAAa,KAAK,wBAAwB,EAAkB,mBAAqB,KAAK,wBAAwB,EAAkB,iBAAgB,CAAE,EAAa,aAC3N,KAAK,wBAAwB,EAAkB,iBAAgB,CAAE,EAAa,aAC9E,MAAM,KAAK,oBAAoB,EAAkB,iBAAkB,EAAa,WAAW,EAC/F,IAAA,GAQR,OAPI,IACA,EAAqB,MAAM,KAAK,aAAa,EAAoB,EAAmB,CAAY,EAC3F,KAAK,wBAAwB,EAAkB,oBAAmB,KAAK,wBAAwB,EAAkB,kBAAoB,CAAA,GACtI,IACA,KAAK,wBAAwB,EAAkB,iBAAgB,CAAE,EAAa,aAAe,IAG9F,CACX,CAEA,MAAc,aAAa,EAAqD,EAA8C,EAAiF,CAC3M,OAAO,MAAM,QAAQ,IAAI,EAAmB,IAAI,KAAM,IAC3C,OAAO,OAAO,EAAO,CACxB,OAAQ,EAAM,IAAM,MAAM,EAA4B,YAAY,EAAkB,iBAAkB,GAAI,SAAU,EAAM,IAAK,GAAM,EAAK,EAAI,IAAA,EAAA,CACjJ,CACJ,CAAC,CACN,CAEO,sBAAsB,EAA0C,CACnE,GAAI,CAAC,EAAQ,OACb,IAAM,EAA2D,CAAA,EAiBjE,OAhBA,EAAO,QAAQ,GAAQ,CACnB,IAAM,EAAK,OAAO,KAAK,CAAM,CAAA,CAAE,KAAK,GAAU,EAAK,GAAG,WAAW,CAAM,CAAC,GAAK,EAAK,GAC7E,EAAO,KACR,EAAO,GAAM,OAAO,OAAO,EAAM,CAC7B,KACA,MAAO,EAAK,MACZ,IAAK,EAAK,GAAA,CACb,GAEL,EAAO,EAAE,CAAE,KAAO,MAAM,KACpB,IAAI,IACA,CAAC,GAAI,EAAO,EAAE,CAAE,MAAQ,CAAA,EAAK,GAAI,EAAK,MAAQ,CAAA,CAAG,CAAA,CAAE,IAAI,GAAK,CAAC,EAAE,IAAK,CAAC,CAAC,CAAA,CAAA,CACxE,OAAA,CAAO,CAGjB,CAAC,EACM,OAAO,OAAO,CAAM,CAC/B,CAEJ,ECnIa,EAAoB,IAAI,cAlEA,CAAuE,CAExG,MAAa,IAAI,EAAkC,CAC/C,OAAO,EAA4B,kBAAkB,CAAM,CAC/D,CAEA,MAAa,SAAS,EAAwB,EAAmB,EAA8B,EAAY,GAExG,CACC,IAAM,EAAqD,CAAA,EAQ3D,OAPA,MAAM,KAAK,SAAS,CAChB,kBAAmB,EAAyC,EAA+B,EAAyB,EAA8B,IAAiC,CAC3K,GAAc,QAAQ,EAAS,GAAG,IAAM,IAAM,EAAa,mBAAqB,GAAiB,EAAQ,cAAgB,IACzH,EAAc,EAAS,KAAO,OAAO,OAAO,EAAc,EAAS,EAAU,CAAC,aAAc,CAAA,CAAQ,EAE5G,CAAA,CACH,EACM,CACX,CAEA,MAAa,QAAQ,EAAwB,EAAmB,EAAuB,EAAY,GAA8C,CAC7I,IAAI,EAQJ,OAPA,MAAM,KAAK,SAAS,CAChB,kBAAmB,EAAyC,EAA+B,IAA4B,CAC/G,EAAS,MAAQ,GAAgB,EAAa,mBAAqB,GAAiB,EAAQ,cAAgB,IAC5G,EAAe,OAAO,OAAO,EAAc,EAAS,CAAQ,EAEpE,CAAA,CACH,EACM,CACX,CAEA,MAAa,KAAK,EAAuB,EAAkB,EAAyB,EAAwB,EAA0B,EAA+I,CACjR,OAAO,GAA6B,kBAAkB,CAClD,eACA,UACA,aAAc,EACd,YAAa,EACb,cAAe,EACf,eAAgB,CAAA,CACnB,CACL,CAEA,MAAa,QAAQ,EAAyB,EAAwB,EAA4F,CAC9J,OAAO,MAAM,KAAK,KAAK,IAAA,GAAW,IAAA,GAAW,EAAe,EAAc,GAAM,CAAe,CACnG,CAEA,MAAa,SAAS,EAA6D,EAAyD,CACxI,AACI,IAAa,CACT,aAAc,GACd,YAAa,GACb,cAAe,EAAA,EAGvB,IAAM,EAAa,CAAC,CAAC,KAAK,wBACpB,EAAc,KAAK,yBAA2B,MAAM,KAAK,IAAI,CAAU,EACvE,EAAuE,EAAY,EAAc,MAAM,KAAK,IAAI,CAAU,EAKhI,MAJA,MAAK,wBAA0B,EAAY,EAAqB,IAAA,GAC5D,CAAC,GAAsB,CAAC,EAAmB,SACpC,GAEJ,KAAK,UAAU,EAAW,EAAoB,EAAW,CAAU,CAC9E,CAEJ,ECIa,EAAmB,IAAI,cArEA,CAAmE,CAEnG,MAAa,WAAW,EAAuC,CAC3D,OAAO,EAA4B,0BAA0B,CAAU,CAC3E,CAEA,MAAa,IAAI,EAAuC,CACpD,OAAO,EAA4B,mBAAmB,CAAU,CACpE,CAEA,MAAa,QAAQ,EAAuC,CACxD,OAAO,EAA4B,uBAAuB,CAAU,CACxE,CAEA,MAAa,SAAS,EAAmB,EAAwB,EAAmB,EAEjF,CACC,IAAM,EAAqD,CAAA,EAQ3D,OAPA,MAAM,KAAK,SAAS,CAChB,kBAAmB,EAAc,EAAS,EAAU,EAAQ,IAAY,CAChE,GAAc,QAAQ,EAAS,GAAG,IAAM,IAAM,EAAa,mBAAqB,GAAiB,EAAQ,cAAgB,IACzH,EAAc,EAAS,KAAO,OAAO,OAAO,EAAc,EAAS,EAAU,CAAC,aAAc,CAAA,CAAQ,EAE5G,CAAA,EACD,CAAC,YAAa,GAAM,aAAc,GAAM,eAAgB,EAAsB,KAAA,CAAM,EAChF,CACX,CAEA,MAAa,QAAQ,EAAwB,EAAmB,EAA8D,CAC1H,IAAI,EAQJ,OAPA,MAAM,KAAK,SAAS,CAChB,kBAAmB,EAAc,EAAS,IAAa,CAC/C,EAAS,MAAQ,GAAgB,EAAa,mBAAqB,GAAiB,EAAQ,cAAgB,IAC5G,EAAe,OAAO,OAAO,EAAc,EAAS,CAAQ,EAEpE,CAAA,EACD,CAAC,YAAa,GAAM,aAAc,GAAM,eAAgB,EAAsB,KAAA,CAAM,EAChF,CACX,CAEA,MAAa,QAAQ,EAAyB,EAAwB,EAAiC,EAA8F,CACjM,OAAO,MAAM,KAAK,IAAI,CAClB,aAAc,IAAA,GACd,QAAS,IAAA,GACT,aAAc,EACd,YAAa,EACb,eAAgB,EAChB,gBAAA,CACH,CACL,CAEA,MAAa,SAAS,EAAwD,EAA0D,CACpI,AACI,IAAa,CACT,YAAa,GACb,aAAc,EAAA,EAGtB,IAAM,EAAa,CAAC,CAAC,KAAK,wBACpB,EAAc,KAAK,yBAA2B,MAAM,KAAK,IAAI,CAAU,EACvE,EAAkE,EAAY,EAAc,MAAM,KAAK,IAAI,CAAU,EAK3H,MAJA,MAAK,wBAA0B,EAAY,EAAqB,IAAA,GAC5D,CAAC,GAAsB,CAAC,EAAmB,SACpC,GAEJ,KAAK,UAAU,EAAW,EAAoB,CAAS,CAClE,CAEJ,EC0Sa,EAAsB,IAAI,KA7WR,CAEnB,eACA,cACA,yBAA2B,GAEnC,aAAc,CACV,SAAS,iBAAiB,mBAAoB,SAAY,CACtD,MAAM,EAAqB,YAC3B,IAAM,EAAgB,MAAM,EAAe,UAAU,MAAM,EAAe,gBAAgB,oBAAoB,CAAC,EACzG,EAAS,MAAM,EAAe,UAAU,MAAM,EAAe,gBAAgB,oBAAoB,CAAC,EAExG,MAAM,KAAK,WAAW,EAAe,CAAM,CAC/C,CAAC,EACD,OAAO,iBAAiB,eAAiB,GAA6B,CAC9D,CAAC,KAAK,0BAA4B,OAAO,iBAAiB,6BAC1D,EAAM,eAAA,EACN,EAAM,YAAc,GAE5B,CAAC,CACL,CAEA,IAAI,eAAgB,CAChB,OAAO,KAAK,aAChB,CAEA,IAAI,0BAA2B,CAC3B,OAAO,KAAK,wBAChB,CAEA,IAAI,yBAAyB,EAAiB,CAC1C,KAAK,yBAA2B,CACpC,CAEA,IAAW,mBAAoB,CAC3B,OAAO,KAAK,gBAAgB,iBAChC,CAEA,MAAa,YAA8C,CAEvD,GADA,MAAM,KAAK,cACP,KAAK,eACL,OAAO,KAAK,eAAe,OAGnC,CAEA,MAAc,mBAAmB,EAAmC,CAChE,GAAI,EAAc,QAAS,CACvB,MAAM,EAAc,UAAU,EAAc,OAAO,EACnD,IAAM,EAAc,EAAc,UAAU,qBAAsB,SAAS,KAAK,EAChF,SAAS,MAAQ,EAEjB,SADyB,cAAc,OACvC,CAAA,EAAS,iBAAiB,0CAA4C,GAA2B,CACzF,EAAM,OAAO,kBAAiB,CAAE,MAAM,OAAS,IAC/C,SAAS,MAAQ,EAAc,UAAU,qBAAsB,CAAW,EAElF,CAAC,CACL,CACI,EAAc,qBACd,MAAM,EAAc,aAAa,EAAc,mBAAmB,CAE1E,CAEQ,yBAA0B,CAC9B,IAAM,EAAW,EAAc,YAAA,EAC3B,UAAY,SAAS,kBACrB,SAAS,gBAAgB,KAAO,EAExC,CAEQ,aAAa,EAAwB,EAAwB,CACjE,GAAI,EAAO,SAAU,CACjB,IAAM,EAAW,CAAI,EACrB,IAAA,IAAS,KAAS,EAAO,SAAU,CAC/B,IAAM,EAAe,KAAK,cAAc,CAAK,EAC7C,EAAU,EAAO,QAAU,UAAY,SAAQ,CAAE,CAAY,EAC7D,EAAS,KAAK,CAAY,CAC9B,CACA,EAAU,cAAc,IAAI,YAAY,uCAAwC,CAAC,OAAQ,CAAC,SAAY,CAAA,CAAQ,CAAE,CAAC,CACrH,CACJ,CAEA,MAAM,gBAAgB,EAAgD,EAAkB,CACpF,GAAI,CAAC,EAAc,UAAW,OAE9B,IAAM,EAAS,MAAM,QAAQ,EAAc,SAAS,EAAI,EAAc,UAAY,CAAC,EAAc,SAAS,EACtG,EAAwB,QAAQ,QAAA,EAEjC,CAAC,EAAQ,aAAe,EAAU,EAAQ,qBAAuB,IAAA,IAChE,MAAM,EAEV,IAAM,EAAa,EAAQ,WAE3B,GAAI,EACA,GAAI,CACA,IAAM,EAAc,EAAO,IAAI,GAAO,CAClC,IAAM,EAAQ,IAAI,cAElB,OADA,EAAM,YAAY,CAAG,EACd,CACX,CAAC,EACD,EAAW,mBAAqB,CAAC,GAAG,EAAW,mBAAoB,GAAG,CAAW,CACrF,MAAa,CACT,EAAO,QAAQ,GAAO,CAClB,IAAM,EAAQ,SAAS,cAAc,OAAO,EAC5C,EAAM,YAAc,EACpB,EAAW,YAAY,CAAK,CAChC,CAAC,CACL,MAEA,EAAO,SAAS,EAAK,IAAU,CAE3B,IAAM,EAAW,GADL,EAAc,KAAa,GAAiB,OAAY,EAAQ,QAAQ,YAAA,EAC7D,GAAI,IAE3B,GAAI,EAAQ,cAAc,0BAA0B,EAAQ,GAAI,EAAG,OACnE,IAAM,EAAQ,SAAS,cAAc,OAAO,EAC5C,EAAM,aAAa,kBAAmB,CAAQ,EAC9C,EAAM,YAAc,EACjB,IAAY,SAAS,KACpB,SAAS,KAAK,YAAY,CAAK,EAE/B,EAAQ,QAAQ,CAAK,CAE7B,CAAC,CAET,CAEQ,cAAc,EAAwB,EAAwC,CAC9E,EAAO,YACP,OAAO,KAAK,EAAO,SAAS,CAAA,CACvB,QAAS,GAAQ,CACV,EAAI,WAAW,IAAI,GACnB,EAAU,MAAM,YAAY,EAAK,EAAO,YAAY,EAAI,CAEhE,CAAC,EACD,EAAU,eAAe,EAAU,cAAA,EAE/C,CAEQ,WAAW,EAAwB,EAAkC,CACrE,EAAO,QAAU,MAAM,QAAQ,EAAO,MAAM,GAC5C,EAAO,OACF,QAAS,GAAkB,CACpB,EAAM,IACN,EAAU,iBAAiB,EAAM,cAAgB,QAAS,KAAO,IAA4B,CACzF,IAAI,EAAY,EAAM,KAClB,aAAc,cACd,EAAY,KAAK,UAAU,CAAS,CAAA,CAAE,QAAQ,UAAW,EAAG,OAAO,KAAK,EACxE,EAAY,KAAK,MAAM,CAAS,GAEpC,MAAM,EAAa,UAAU,EAAM,GAAI,CAAE,KAAM,GAAa,CAAA,EAAI,OAAQ,EAAM,QAAU,IAAA,EAAA,CAAW,CACvG,CAAC,CAET,CAAC,CAEb,CAEQ,gBAAgB,EAAmC,CACvD,IAAM,EAAc,EAAc,gBAC7B,KAEL,IAAA,IAAW,KAAa,OAAO,KAAK,CAAW,EAAG,CAC9C,IAAM,EAAY,EAAY,GACxB,EAAW,EAAU,OACrB,EAAwB,EAAU,kBAAoB,KAAyC,GAA7B,EAAU,iBAC5E,EAAoB,EAAU,sBAG9B,EAAY,EAA4B,GAC9C,GAAI,CAAC,GAAY,OAAO,EAAS,UAAa,WAAY,CACtD,QAAQ,KAAK,wDAAwD,EAAS,EAAG,EACjF,QACJ,CAEA,IAAM,EAAc,SAAY,CAC5B,IAAA,IAAW,KAAW,EACd,EACA,EAAa,UAAU,EAAQ,GAAI,CAAE,KAAM,EAAQ,MAAQ,CAAA,EAAI,OAAQ,IAAA,EAAA,CAAW,EAElF,MAAM,EAAa,UAAU,EAAQ,GAAI,CAAE,KAAM,EAAQ,MAAQ,CAAA,EAAI,OAAQ,IAAA,EAAA,CAAW,CAGpG,EAEM,EACF,IAAsB,IAAA,GAChB,EACA,EAAS,EAAa,EAAmB,EAAkB,SAAU,EAAkB,IAAK,EAAkB,IAAK,EAAkB,QAAQ,CAAC,EAExJ,EAAS,SAAS,CAAiB,CACvC,CACJ,CAEQ,eAAe,EAA+B,EAAc,CAChE,IAAM,EAAe,GAAwB,CACrC,OAAO,EAAS,OAAU,WAAa,EAAS,WAAa,EAAS,MAAO,EAAQ,aAAa,EAAS,IAAK,EAAE,EAC7G,OAAO,EAAS,OAAU,WAAa,EAAS,WAAa,CAAC,EAAS,MAAO,EAAQ,gBAAgB,EAAS,IAAK,EAAE,EACtH,OAAO,EAAS,OAAU,UAAY,EAAS,UAAW,EAAQ,aAAa,EAAS,IAAK,KAAK,UAAU,EAAS,KAAK,CAAC,EAE3H,EAAS,UAGV,EAAQ,aAAa,EAAS,IAAK,EAAS,KAAK,EAFjD,EAAQ,EAAS,KAAO,EAAS,KAK7C,EACA,GAAI,EAAc,YAAc,EAC5B,IAAA,IAAS,KAAY,EAAc,WAAY,CAC3C,IAAM,EAAa,EAAS,WACxB,GACA,EAAiB,WAAW,SAAW,CACnC,EAAY,OAAO,OAAO,EAAU,CAAC,MAAO,EAAW,KAAA,CAAM,CAAC,CAClE,CAAC,EAEL,EAAY,CAAQ,CACxB,CAER,CAEQ,YAAY,EAA+B,EAAkB,CAC7D,EAAc,SAAW,GACzB,EAAQ,UAAU,IAAI,GAAG,EAAc,OAAO,CAEtD,CAEQ,cAAc,EAAwB,CAC1C,IAAM,EAAiB,SAAS,cAAc,EAAO,GAAG,EAMxD,OALA,KAAK,YAAY,EAAQ,CAAS,EAClC,KAAK,eAAe,EAAQ,CAAS,EACrC,KAAK,cAAc,EAAQ,CAAS,EACpC,KAAK,gBAAgB,EAAQ,CAAS,EACtC,KAAK,WAAW,EAAQ,CAAS,EAC1B,CACX,CAEA,MAAM,WAAW,EAA+B,EAAkB,CAC9D,IAAM,EAAY,KAAK,cAAc,CAAa,EASlD,GARA,EAAQ,EAAc,QAAU,UAAY,SAAQ,CAAE,CAAS,EAC3D,EAAc,SAAW,GACzB,OAAO,OAAO,EAAc,OAAO,CAAA,CAC9B,QAAS,GAAkB,CACxB,EAAU,EAAS,KAAI,CAAE,MAAM,EAAS,UAAY,EAAS,UAAY,CAAA,CAAE,CAC/E,CAAC,EAGL,GAAa,MAAa,EAAU,mBAAqB,KAAW,CACpE,QAAQ,MAAM,eAAiB,EAAc,IAAM,wBAAwB,EAC3E,MACJ,CAGA,GADA,MAAM,EAAU,kBAAA,EACZ,EAAc,QACd,IAAA,IAAS,KAAU,EAAc,QAC7B,MAAM,KAAK,WAAW,EAAQ,CAAS,EAG/C,GAAI,EAAc,MACd,IAAA,IAAS,KAAS,EAAc,MAC5B,MAAM,KAAK,SAAS,EAAO,CAAS,EAG5C,KAAK,aAAa,EAAe,CAAS,CAC9C,CAEA,MAAM,SAAS,EAAsB,EAAmC,CACpE,IAAI,EAAU,KACV,EAAK,UACL,EAAU,EAAc,iBAAiB,EAAK,KAAK,GAC9C,CAAC,GAAW,EAAQ,SAAW,IAAO,EAA8B,aACrE,EAAW,GAA+B,YAAY,iBAAiB,EAAK,KAAK,IAE9E,EAAK,OACZ,EAAU,EAAc,cAAc,EAAK,KAAK,EAC5C,CAAC,GAAY,EAA8B,aAC3C,EAAW,GAA+B,YAAY,cAAc,EAAK,KAAK,IAGlF,EAAU,EAGT,GACD,QAAQ,KAAK,iCAAiC,EAIlD,IAAM,EAAY,MAAOC,EAAsBC,EAAmCC,IAAqB,CAEnG,GAAIA,EAAS,CACT,GAAIF,EAAK,QACL,IAAA,IAAS,KAAUA,EAAK,QACpB,MAAM,KAAK,WAAW,EAAQE,CAAO,EAG7C,GAAIF,EAAK,MACL,IAAA,IAAS,KAASA,EAAK,MACnB,MAAM,KAAK,SAAS,EAAOE,CAAO,EAG1C,KAAK,eAAeF,EAAME,CAAO,EACjC,KAAK,cAAcF,EAAME,CAAO,EAChC,KAAK,gBAAgBF,EAAME,CAAO,EAClC,KAAK,WAAWF,EAAME,CAAO,EAC7B,KAAK,YAAYF,EAAME,CAAO,CAClC,CACJ,EAEA,GAAI,GAAW,aAAmB,UAAY,EAAQ,OAClD,IAAA,IAAS,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAChC,MAAM,EAAU,EAAM,EAAe,EAAQ,EAAE,OAGnD,MAAM,EAAU,EAAM,EAAe,CAAkB,EAGvD,GAAY,EAAoB,eAC/B,EAAoB,cAAc,IAAI,YAAY,eAAgB,CAAC,OAAQ,CAAA,CAAC,CAAE,CAAC,CAExF,CAEA,MAAM,WAAW,EAAmC,EAA6B,CAC7E,GAAI,CAAC,SAAS,KAAK,UAAU,SAAS,wBAAwB,EAC1D,OAGA,SAAS,KAAK,UAAU,SAAS,aAAa,IAC9C,SAAS,KAAK,UAAU,OAAO,aAAa,EAC5C,SAAS,KAAK,UAAU,IAAI,QAAQ,GAExC,IAAI,EAAS,EACb,GAAI,GAAQ,YACR,IAAA,IAAW,KAAc,EAAO,YAC5B,QAAQ,MAAM,EAAW,YAAa,EAAW,sBAAuB,EAAW,YAAY,EAGvG,QAAQ,IAAI,eAAgB,CAAM,EAElC,IAAI,EAAoB,KAAK,UAAU,CAAM,EAS7C,GARA,EAAoB,EAAkB,QAAQ,WAAY,iBAAiB,IAAI,IAAI,OAAO,SAAS,IAAI,CAAA,CAAE,aAAa,IAAI,OAAO,EAAC,EAAG,EACrI,EAAoB,EAAkB,QAAQ,YAAa,GAAG,IAAI,IAAI,OAAO,SAAS,IAAI,CAAA,CAAE,aAAa,IAAI,OAAO,EAAC,EAAG,EACxH,EAAS,KAAK,MAAM,CAAiB,EACrC,KAAK,eAAiB,EAClB,GACA,KAAK,gBAAgB,CAAM,EAG3B,EACA,IAAA,IAAW,KAAS,GAAQ,QAAU,CAAA,EAAI,CACtC,IAAM,EAAe,SAAS,cAAc,OAAO,EACnD,EAAa,YAAY,SAAS,eAAe,CAAK,CAAC,EACvD,SAAS,KAAK,YAAY,CAAY,CAC1C,CAEA,GAAU,IACV,MAAM,KAAK,mBAAmB,CAAM,EACpC,MAAM,KAAK,SAAS,EAAQ,QAAQ,EAC/B,EAAiB,mBAClB,EAAiB,WAAW,IAAA,EAAS,EAEzC,KAAK,wBAAA,EACL,SAAS,KAAK,UAAU,OAAO,QAAQ,EACvC,EAAe,KAAK,yBAAyB,EAErD,CAEJ"}
\ No newline at end of file
diff --git a/configurations/14243/public/layout1.json b/configurations/14243/public/layout1.json
index 20c213b..d8c4a1a 100644
--- a/configurations/14243/public/layout1.json
+++ b/configurations/14243/public/layout1.json
@@ -58,5 +58,205 @@
]
}
- ]
+ ],
+ "theme": {
+ "colors": {
+ "--primary-text-color": {
+ "type": "color",
+ "default": "#000000",
+ "name": "Text Primärfarbe",
+ "description": "Dies ist die Primärfarbe der Oberfläche."
+ },
+ "--primary-button-text-color": {
+ "type": "color",
+ "default": "#000000",
+ "name": "Button-Text Primärfarbe",
+ "description": "Dies ist die Primärfarbe der Buttons der Oberfläche."
+ },
+ "--primary-color": {
+ "type": "color",
+ "default": "#e4322b",
+ "name": "Primärfarbe",
+ "description": "Dies ist die Primärfarbe der Oberfläche."
+ },
+ "--primary-background-color": {
+ "type": "color",
+ "default": "#e4322b",
+ "name": "Hintergrund Primärfarbe",
+ "description": "Dies ist die Hintergrund Primärfarbe der Elemente."
+ },
+ "--hover-background-color": {
+ "type": "color",
+ "default": "#e4322b",
+ "name": "Button Variante 1 Hover",
+ "description": "Dies ist die Hoverfarbe 1 der Buttons, falls vorhanden."
+ },
+ "--hover-background-color-secondary": {
+ "type": "color",
+ "default": "#dedede",
+ "name": "Button Variante 2 Hover",
+ "description": "Dies ist die Hoverfarbe 2 der Buttons, falls vorhanden."
+ },
+ "--click-background-color-secondary": {
+ "type": "color",
+ "default": "#f0f0f0",
+ "name": "Button Variante 2 Click",
+ "description": "Dies ist die Clickfarbe 2 der Buttons, falls vorhanden."
+ },
+ "--bordered-color": {
+ "type": "color",
+ "default": "#e4322b",
+ "name": "Kantenlinienfarbe",
+ "description": "Dies ist die Kantenlinienfarbe der Elemente."
+ }
+ },
+ "template": {
+ "page-title": {
+ "type": "string",
+ "value": "Furnview",
+ "description": "Title der Seite",
+ "name": "Seitentitle"
+ },
+ "privacy-link": {
+ "type": "attribute",
+ "attribute": "privacylink",
+ "varType": "string",
+ "default": "https://www.dh-software.de/kontakt/datenschutz/",
+ "name": "Datenschutzbestimmungslink",
+ "description": "Link zur Datenschutzbestimmung"
+ },
+ "shopping-cart": {
+ "type": "boolean",
+ "default": false,
+ "name": "Warenkorb",
+ "description": "Warenkorb-Button anzeigen."
+ },
+ "save-pdf": {
+ "type": "boolean",
+ "default": true,
+ "name": "PDF Speichern",
+ "description": "PDF-Speichern Button anzeigen."
+ },
+ "save-obj": {
+ "type": "boolean",
+ "default": false,
+ "name": "OBJ Speichern",
+ "description": "OBJ-Speichern Button anzeigen.",
+ "manufactureronly": true
+ },
+ "save-skp": {
+ "type": "boolean",
+ "default": false,
+ "name": "SKP Speichern",
+ "description": "SKP-Speichern Button anzeigen.",
+ "manufactureronly": true
+ },
+ "save-dxf": {
+ "type": "boolean",
+ "default": false,
+ "name": "DXF Speichern",
+ "description": "DXF-Speichern Button anzeigen.",
+ "manufactureronly": true
+ },
+ "save-xml": {
+ "type": "boolean",
+ "default": false,
+ "name": "XML Speichern",
+ "description": "XML-Speichern Button anzeigen.",
+ "manufactureronly": true
+ },
+ "save-xls": {
+ "type": "boolean",
+ "default": false,
+ "name": "XLS Speichern",
+ "description": "XLS-Speichern Button anzeigen."
+ },
+ "send-inquiry": {
+ "type": "boolean",
+ "default": false,
+ "name": "Anfrage senden",
+ "description": "Anfrage senden Button anzeigen."
+ },
+ "properties-container": [
+ {
+ "type": "attribute",
+ "attribute": "disableNotSettable",
+ "varType": "boolean",
+ "default": false,
+ "name": "Nicht änderbare Ausführungen deaktivieren",
+ "description": ""
+ },
+ {
+ "type": "attribute",
+ "attribute": "mode-selection",
+ "varType": "boolean",
+ "default": true,
+ "name": "Pick-Level Dropdown anzeigen",
+ "description": ""
+ }
+ ],
+ "enable-programselection": {
+ "type": "boolean",
+ "default": false,
+ "name": "Modellauswahl aktivieren",
+ "description": "Modellauswahl vor der Konfiguration anzeigen."
+ },
+ "language_picker": {
+ "type": "boolean",
+ "default": false,
+ "name": "Sprachauswahl aktivieren",
+ "description": "Sprachauswahl während der Konfiguration möglich"
+ },
+ "program-selection": [
+ {
+ "type": "attribute",
+ "attribute": "override-initial-article",
+ "varType": "boolean",
+ "default": false,
+ "name": "Konfigurator-Artikel automatisch platzieren",
+ "description": "Wenn kein Intial-Artikel angegeben, ersten Konfigurator-Artikel laden"
+ },
+ {
+ "type": "attribute",
+ "attribute": "prevent-confirmation-modal",
+ "varType": "boolean",
+ "default": false,
+ "name": "Es dürfen mehrere Modelle kombiniert werden",
+ "description": "Zeigt eine bestätigung beim wechseln des Programs an"
+ }
+ ],
+ "card_container_dimension_filter": {
+ "type": "boolean",
+ "default": true,
+ "name": "Dimensionsfilter anzeigen",
+ "description": "Dimensionsfilter für die Artikelübersicht ein/ausschalten"
+ },
+ "filter-popup": {
+ "type": "boolean",
+ "default": true,
+ "name": "Filter popup",
+ "description": "Filter als Popup oder inline der Artikelliste anzeigen"
+ },
+ "enable-article-list": {
+ "type": "boolean",
+ "default": true,
+ "name": "Artikelauflistung anzeigen",
+ "description": "Step Artikelauflistung anzeigen."
+ },
+ "enable-equipment-list": {
+ "type": "boolean",
+ "default": true,
+ "name": "Zubehör anzeigen",
+ "description": "Step Zubehör anzeigen."
+ }
+ },
+ "mail": {
+ "to": {
+ "type": "string",
+ "default": "",
+ "name": "Auftrags E-Mail Adresse",
+ "description": "Standard Auftrags E-Mail Empfänger."
+ }
+ }
+ }
}
diff --git a/configurations/14243/public/layout2.json b/configurations/14243/public/layout2.json
index a59b806..569b4cc 100644
--- a/configurations/14243/public/layout2.json
+++ b/configurations/14243/public/layout2.json
@@ -68,5 +68,13 @@
],
"areas": []
}
- ]
+ ],
+ "theme": {
+ "colors": {
+ },
+ "template": {
+ },
+ "mail": {
+ }
+ }
}
--
Gitblit v1.9.3