From 909c961586eb46e4b37da05b255b6b783d2e6340 Mon Sep 17 00:00:00 2001 From: Elwin Date: Mon, 11 Dec 2023 18:46:41 +0100 Subject: [PATCH] Feature/20 icon color based on altitude litelement (#24) * #20 - Color of icon based on altitude * #20 - Updated readme * #20 - Updated readme --- dist/fr24_card.js | 2 +- readme.md | 72 +++++++++++++++++++++-------- readme/images/color/11E276.png | Bin 0 -> 410 bytes readme/images/color/13BBDE.png | Bin 0 -> 388 bytes readme/images/color/241FEC.png | Bin 0 -> 402 bytes readme/images/color/40EC44.png | Bin 0 -> 415 bytes readme/images/color/BEDF13.png | Bin 0 -> 385 bytes readme/images/color/EB13EC.png | Bin 0 -> 403 bytes readme/images/color/EC5B13.png | Bin 0 -> 407 bytes readme/images/color/EC7C13.png | Bin 0 -> 410 bytes readme/images/color/ECC813.png | Bin 0 -> 384 bytes readme/images/icons.png | Bin 0 -> 93141 bytes src/javascript/helpers/aircraft.js | 68 +++++++++++++++++++++++++-- src/javascript/helpers/popup.js | 8 ++-- 14 files changed, 123 insertions(+), 27 deletions(-) create mode 100644 readme/images/color/11E276.png create mode 100644 readme/images/color/13BBDE.png create mode 100644 readme/images/color/241FEC.png create mode 100644 readme/images/color/40EC44.png create mode 100644 readme/images/color/BEDF13.png create mode 100644 readme/images/color/EB13EC.png create mode 100644 readme/images/color/EC5B13.png create mode 100644 readme/images/color/EC7C13.png create mode 100644 readme/images/color/ECC813.png create mode 100644 readme/images/icons.png diff --git a/dist/fr24_card.js b/dist/fr24_card.js index 665ec55..efd2c0a 100644 --- a/dist/fr24_card.js +++ b/dist/fr24_card.js @@ -1 +1 @@ -"use strict";const t=window,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,s=Symbol(),n=new WeakMap;let i=class{constructor(t,e,n){if(this._$cssResult$=!0,n!==s)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=n.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&n.set(s,t))}return t}toString(){return this.cssText}};const r=(t,...e)=>{const n=1===t.length?t[0]:e.reduce(((e,s,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[n+1]),t[0]);return new i(n,t,s)},o=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return(t=>new i("string"==typeof t?t:t+"",void 0,s))(e)})(t):t;var a;const l=window,c=l.trustedTypes,h=c?c.emptyScript:"",u=l.reactiveElementPolyfillSupport,d={toAttribute(t,e){switch(e){case Boolean:t=t?h:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let s=t;switch(e){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},_=(t,e)=>e!==t&&(e==e||t==t),p={attribute:!0,type:String,converter:d,reflect:!1,hasChanged:_};let g=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var e;this.finalize(),(null!==(e=this.h)&&void 0!==e?e:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,s)=>{const n=this._$Ep(s,e);void 0!==n&&(this._$Ev.set(n,s),t.push(n))})),t}static createProperty(t,e=p){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const s="symbol"==typeof t?Symbol():"__"+t,n=this.getPropertyDescriptor(t,s,e);void 0!==n&&Object.defineProperty(this.prototype,t,n)}}static getPropertyDescriptor(t,e,s){return{get(){return this[e]},set(n){const i=this[t];this[e]=n,this.requestUpdate(t,i,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||p}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of e)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const t of s)e.unshift(o(t))}else void 0!==t&&e.push(o(t));return e}static _$Ep(t,e){const s=e.attribute;return!1===s?void 0:"string"==typeof s?s:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,s;(null!==(e=this._$ES)&&void 0!==e?e:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var e;null===(e=this._$ES)||void 0===e||e.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Ei.set(e,this[e]),delete this[e])}))}createRenderRoot(){var s;const n=null!==(s=this.shadowRoot)&&void 0!==s?s:this.attachShadow(this.constructor.shadowRootOptions);return((s,n)=>{e?s.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((e=>{const n=document.createElement("style"),i=t.litNonce;void 0!==i&&n.setAttribute("nonce",i),n.textContent=e.cssText,s.appendChild(n)}))})(n,this.constructor.elementStyles),n}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EO(t,e,s=p){var n;const i=this.constructor._$Ep(t,s);if(void 0!==i&&!0===s.reflect){const r=(void 0!==(null===(n=s.converter)||void 0===n?void 0:n.toAttribute)?s.converter:d).toAttribute(e,s.type);this._$El=t,null==r?this.removeAttribute(i):this.setAttribute(i,r),this._$El=null}}_$AK(t,e){var s;const n=this.constructor,i=n._$Ev.get(t);if(void 0!==i&&this._$El!==i){const t=n.getPropertyOptions(i),r="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(s=t.converter)||void 0===s?void 0:s.fromAttribute)?t.converter:d;this._$El=i,this[i]=r.fromAttribute(e,t.type),this._$El=null}}requestUpdate(t,e,s){let n=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||_)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===s.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,s))):n=!1),!this.isUpdatePending&&n&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,e)=>this[e]=t)),this._$Ei=void 0);let e=!1;const s=this._$AL;try{e=this.shouldUpdate(s),e?(this.willUpdate(s),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(s)):this._$Ek()}catch(t){throw e=!1,this._$Ek(),t}e&&this._$AE(s)}willUpdate(t){}_$AE(t){var e;null===(e=this._$ES)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,e)=>this._$EO(e,this[e],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}};var f;g.finalized=!0,g.elementProperties=new Map,g.elementStyles=[],g.shadowRootOptions={mode:"open"},null==u||u({ReactiveElement:g}),(null!==(a=l.reactiveElementVersions)&&void 0!==a?a:l.reactiveElementVersions=[]).push("1.5.0");const y=window,b=y.trustedTypes,v=b?b.createPolicy("lit-html",{createHTML:t=>t}):void 0,m=`lit$${(Math.random()+"").slice(9)}$`,w="?"+m,$=`<${w}>`,A=document,S=(t="")=>A.createComment(t),x=t=>null===t||"object"!=typeof t&&"function"!=typeof t,E=Array.isArray,N=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,k=/-->/g,C=/>/g,M=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),O=/'/g,P=/"/g,R=/^(?:script|style|textarea|title)$/i,T=(t=>(e,...s)=>({_$litType$:t,strings:e,values:s}))(1),U=Symbol.for("lit-noChange"),W=Symbol.for("lit-nothing"),L=new WeakMap,z=A.createTreeWalker(A,129,null,!1),I=(t,e)=>{const s=t.length-1,n=[];let i,r=2===e?"":"",o=N;for(let e=0;e"===l[0]?(o=null!=i?i:N,c=-1):void 0===l[1]?c=-2:(c=o.lastIndex-l[2].length,a=l[1],o=void 0===l[3]?M:'"'===l[3]?P:O):o===P||o===O?o=M:o===k||o===C?o=N:(o=M,i=void 0);const u=o===M&&t[e+1].startsWith("/>")?" ":"";r+=o===N?s+$:c>=0?(n.push(a),s.slice(0,c)+"$lit$"+s.slice(c)+m+u):s+m+(-2===c?(n.push(void 0),e):u)}const a=r+(t[s]||"")+(2===e?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==v?v.createHTML(a):a,n]};class H{constructor({strings:t,_$litType$:e},s){let n;this.parts=[];let i=0,r=0;const o=t.length-1,a=this.parts,[l,c]=I(t,e);if(this.el=H.createElement(l,s),z.currentNode=this.el.content,2===e){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(n=z.nextNode())&&a.length0){n.textContent=b?b.emptyScript:"";for(let s=0;sE(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this.g(t)}O(t,e=this._$AB){return this._$AA.parentNode.insertBefore(t,e)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==W&&x(this._$AH)?this._$AA.nextSibling.data=t:this.T(A.createTextNode(t)),this._$AH=t}$(t){var e;const{values:s,_$litType$:n}=t,i="number"==typeof n?this._$AC(t):(void 0===n.el&&(n.el=H.createElement(n.h,this.options)),n);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===i)this._$AH.p(s);else{const t=new class{constructor(t,e){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var e;const{el:{content:s},parts:n}=this._$AD,i=(null!==(e=null==t?void 0:t.creationScope)&&void 0!==e?e:A).importNode(s,!0);z.currentNode=i;let r=z.nextNode(),o=0,a=0,l=n[0];for(;void 0!==l;){if(o===l.index){let e;2===l.type?e=new Z(r,r.nextSibling,this,t):1===l.type?e=new l.ctor(r,l.name,l.strings,this,t):6===l.type&&(e=new F(r,this,t)),this.u.push(e),l=n[++a]}o!==(null==l?void 0:l.index)&&(r=z.nextNode(),o++)}return i}p(t){let e=0;for(const s of this.u)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,e),e+=s.strings.length-2):s._$AI(t[e])),e++}}(i,this),e=t.v(this.options);t.p(s),this.T(e),this._$AH=t}}_$AC(t){let e=L.get(t.strings);return void 0===e&&L.set(t.strings,e=new H(t)),e}k(t){E(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let s,n=0;for(const i of t)n===e.length?e.push(s=new Z(this.O(S()),this.O(S()),this,this.options)):s=e[n],s._$AI(i),n++;n2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=W}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,s,n){const i=this.strings;let r=!1;if(void 0===i)t=j(this,t,e,0),r=!x(t)||t!==this._$AH&&t!==U,r&&(this._$AH=t);else{const n=t;let o,a;for(t=i[0],o=0;o{var n,i;const r=null!==(n=null==s?void 0:s.renderBefore)&&void 0!==n?n:e;let o=r._$litPart$;if(void 0===o){const t=null!==(i=null==s?void 0:s.renderBefore)&&void 0!==i?i:null;r._$litPart$=o=new Z(e.insertBefore(S(),t),t,void 0,null!=s?s:{})}return o._$AI(t),o})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return U}}Q.finalized=!0,Q._$litElement$=!0,null===(q=globalThis.litElementHydrateSupport)||void 0===q||q.call(globalThis,{LitElement:Q});const X=globalThis.litElementPolyfillSupport;null==X||X({LitElement:Q}),(null!==(Y=globalThis.litElementVersions)&&void 0!==Y?Y:globalThis.litElementVersions=[]).push("3.2.2");class tt{constructor(){this.path=this.getPath()}getPath=function(){const t=document.querySelector('script[src*="fr24_card.js"]').getAttribute("src");return t.substring(0,t.lastIndexOf("/")+1)}}class et{constructor(){this.setRanges()}setRanges=function(){this.ranges=[{start:7340032,end:7344127,country:"Afghanistan",iso_3166_1:"AF"},{start:5246976,end:5247999,country:"Albania",iso_3166_1:"AL"},{start:655360,end:688127,country:"Algeria",iso_3166_1:"DZ"},{start:589824,end:593919,country:"Angola",iso_3166_1:"AO"},{start:827392,end:828415,country:"Antigua and Barbuda",iso_3166_1:"AG"},{start:14680064,end:14942207,country:"Argentina",iso_3166_1:"AR"},{start:6291456,end:6292479,country:"Armenia",iso_3166_1:"AM"},{start:8126464,end:8388607,country:"Australia",iso_3166_1:"AU"},{start:4456448,end:4489215,country:"Austria",iso_3166_1:"AT"},{start:6293504,end:6294527,country:"Azerbaijan",iso_3166_1:"AZ"},{start:688128,end:692223,country:"Bahamas",iso_3166_1:"BS"},{start:8994816,end:8998911,country:"Bahrain",iso_3166_1:"BH"},{start:7348224,end:7352319,country:"Bangladesh",iso_3166_1:"BD"},{start:696320,end:697343,country:"Barbados",iso_3166_1:"BB"},{start:5308416,end:5309439,country:"Belarus",iso_3166_1:"BY"},{start:4489216,end:4521983,country:"Belgium",iso_3166_1:"BE"},{start:700416,end:701439,country:"Belize",iso_3166_1:"BZ"},{start:606208,end:607231,country:"Benin",iso_3166_1:"BJ"},{start:6815744,end:6816767,country:"Bhutan",iso_3166_1:"BT"},{start:15286272,end:15290367,country:"Bolivia",iso_3166_1:"BO"},{start:5320704,end:5321727,country:"Bosnia and Herzegovina",iso_3166_1:"BA"},{start:196608,end:197631,country:"Botswana",iso_3166_1:"BW"},{start:14942208,end:15204351,country:"Brazil",iso_3166_1:"BR"},{start:8998912,end:8999935,country:"Brunei Darussalam",iso_3166_1:"BN"},{start:4521984,end:4554751,country:"Bulgaria",iso_3166_1:"BG"},{start:638976,end:643071,country:"Burkina Faso",iso_3166_1:"BF"},{start:204800,end:208895,country:"Burundi",iso_3166_1:"BI"},{start:7397376,end:7401471,country:"Cambodia",iso_3166_1:"KH"},{start:212992,end:217087,country:"Cameroon",iso_3166_1:"CM"},{start:12582912,end:12845055,country:"Canada",iso_3166_1:"CA"},{start:614400,end:615423,country:"Cape Verde",iso_3166_1:"CV"},{start:442368,end:446463,country:"Central African Republic",iso_3166_1:"CF"},{start:540672,end:544767,country:"Chad",iso_3166_1:"TD"},{start:15204352,end:15208447,country:"Chile",iso_3166_1:"CL"},{start:7864320,end:8126463,country:"China",iso_3166_1:"CN"},{start:704512,end:708607,country:"Colombia",iso_3166_1:"CO"},{start:217088,end:218111,country:"Comoros",iso_3166_1:"KM"},{start:221184,end:225279,country:"Congo",iso_3166_1:"CG"},{start:9441280,end:9442303,country:"Cook Islands",iso_3166_1:"CK"},{start:712704,end:716799,country:"Costa Rica",iso_3166_1:"CR"},{start:229376,end:233471,country:"Cote d'Ivoire",iso_3166_1:"CI"},{start:5250048,end:5251071,country:"Croatia",iso_3166_1:"HR"},{start:720896,end:724991,country:"Cuba",iso_3166_1:"CU"},{start:5013504,end:5014527,country:"Cyprus",iso_3166_1:"CY"},{start:4816896,end:4849663,country:"Czech Republic",iso_3166_1:"CZ"},{start:7471104,end:7503871,country:"Democratic People's Republic of Korea",iso_3166_1:"KP"},{start:573440,end:577535,country:"Democratic Republic of the Congo",iso_3166_1:"CD"},{start:4554752,end:4587519,country:"Denmark",iso_3166_1:"DK"},{start:622592,end:623615,country:"Djibouti",iso_3166_1:"DJ"},{start:802816,end:806911,country:"Dominican Republic",iso_3166_1:"DO"},{start:15220736,end:15224831,country:"Ecuador",iso_3166_1:"EC"},{start:65536,end:98303,country:"Egypt",iso_3166_1:"EG"},{start:729088,end:733183,country:"El Salvador",iso_3166_1:"SV"},{start:270336,end:274431,country:"Equatorial Guinea",iso_3166_1:"GQ"},{start:2105344,end:2106367,country:"Eritrea",iso_3166_1:"ER"},{start:5312512,end:5313535,country:"Estonia",iso_3166_1:"EE"},{start:262144,end:266239,country:"Ethiopia",iso_3166_1:"ET"},{start:13139968,end:13144063,country:"Fiji",iso_3166_1:"FJ"},{start:4587520,end:4620287,country:"Finland",iso_3166_1:"FI"},{start:3670016,end:3932159,country:"France",iso_3166_1:"FR"},{start:253952,end:258047,country:"Gabon",iso_3166_1:"GA"},{start:630784,end:634879,country:"Gambia",iso_3166_1:"GM"},{start:5324800,end:5325823,country:"Georgia",iso_3166_1:"GE"},{start:3932160,end:4194303,country:"Germany",iso_3166_1:"DE"},{start:278528,end:282623,country:"Ghana",iso_3166_1:"GH"},{start:4620288,end:4653055,country:"Greece",iso_3166_1:"GR"},{start:835584,end:836607,country:"Grenada",iso_3166_1:"GD"},{start:737280,end:741375,country:"Guatemala",iso_3166_1:"GT"},{start:286720,end:290815,country:"Guinea",iso_3166_1:"GN"},{start:294912,end:295935,country:"Guinea-Bissau",iso_3166_1:"GW"},{start:745472,end:749567,country:"Guyana",iso_3166_1:"GY"},{start:753664,end:757759,country:"Haiti",iso_3166_1:"HT"},{start:761856,end:765951,country:"Honduras",iso_3166_1:"HN"},{start:4653056,end:4685823,country:"Hungary",iso_3166_1:"HU"},{start:5029888,end:5033983,country:"Iceland",iso_3166_1:"IS"},{start:8388608,end:8650751,country:"India",iso_3166_1:"IN"},{start:9043968,end:9076735,country:"Indonesia",iso_3166_1:"ID"},{start:7536640,end:7569407,country:"Iran, Islamic Republic of",iso_3166_1:"IR"},{start:7503872,end:7536639,country:"Iraq",iso_3166_1:"IQ"},{start:5021696,end:5025791,country:"Ireland",iso_3166_1:"IE"},{start:7569408,end:7602175,country:"Israel",iso_3166_1:"IL"},{start:3145728,end:3407871,country:"Italy",iso_3166_1:"IT"},{start:778240,end:782335,country:"Jamaica",iso_3166_1:"JM"},{start:8650752,end:8912895,country:"Japan",iso_3166_1:"JP"},{start:7602176,end:7634943,country:"Jordan",iso_3166_1:"JO"},{start:6828032,end:6829055,country:"Kazakhstan",iso_3166_1:"KZ"},{start:311296,end:315391,country:"Kenya",iso_3166_1:"KE"},{start:13164544,end:13165567,country:"Kiribati",iso_3166_1:"KI"},{start:7364608,end:7368703,country:"Kuwait",iso_3166_1:"KW"},{start:6295552,end:6296575,country:"Kyrgyzstan",iso_3166_1:"KG"},{start:7372800,end:7376895,country:"Lao People's Democratic Republic",iso_3166_1:"LA"},{start:5254144,end:5255167,country:"Latvia",iso_3166_1:"LV"},{start:7634944,end:7667711,country:"Lebanon",iso_3166_1:"LB"},{start:303104,end:304127,country:"Lesotho",iso_3166_1:"LS"},{start:327680,end:331775,country:"Liberia",iso_3166_1:"LR"},{start:98304,end:131071,country:"Libyan Arab Jamahiriya",iso_3166_1:"LY"},{start:5258240,end:5259263,country:"Lithuania",iso_3166_1:"LT"},{start:5046272,end:5047295,country:"Luxembourg",iso_3166_1:"LU"},{start:344064,end:348159,country:"Madagascar",iso_3166_1:"MG"},{start:360448,end:364543,country:"Malawi",iso_3166_1:"MW"},{start:7667712,end:7700479,country:"Malaysia",iso_3166_1:"MY"},{start:368640,end:369663,country:"Maldives",iso_3166_1:"MV"},{start:376832,end:380927,country:"Mali",iso_3166_1:"ML"},{start:5054464,end:5055487,country:"Malta",iso_3166_1:"MT"},{start:9437184,end:9438207,country:"Marshall Islands",iso_3166_1:"MH"},{start:385024,end:386047,country:"Mauritania",iso_3166_1:"MR"},{start:393216,end:394239,country:"Mauritius",iso_3166_1:"MU"},{start:851968,end:884735,country:"Mexico",iso_3166_1:"MX"},{start:6819840,end:6820863,country:"Micronesia, Federated States of",iso_3166_1:"FM"},{start:5062656,end:5063679,country:"Monaco",iso_3166_1:"MC"},{start:6823936,end:6824959,country:"Mongolia",iso_3166_1:"MN"},{start:5332992,end:5334015,country:"Montenegro",iso_3166_1:"ME"},{start:131072,end:163839,country:"Morocco",iso_3166_1:"MA"},{start:24576,end:28671,country:"Mozambique",iso_3166_1:"MZ"},{start:7356416,end:7360511,country:"Myanmar",iso_3166_1:"MM"},{start:2101248,end:2102271,country:"Namibia",iso_3166_1:"NA"},{start:13148160,end:13149183,country:"Nauru",iso_3166_1:"NR"},{start:7380992,end:7385087,country:"Nepal",iso_3166_1:"NP"},{start:4718592,end:4751359,country:"Netherlands, Kingdom of the",iso_3166_1:"NL"},{start:13107200,end:13139967,country:"New Zealand",iso_3166_1:"NZ"},{start:786432,end:790527,country:"Nicaragua",iso_3166_1:"NI"},{start:401408,end:405503,country:"Niger",iso_3166_1:"NE"},{start:409600,end:413695,country:"Nigeria",iso_3166_1:"NG"},{start:4685824,end:4718591,country:"Norway",iso_3166_1:"NO"},{start:7389184,end:7390207,country:"Oman",iso_3166_1:"OM"},{start:7733248,end:7766015,country:"Pakistan",iso_3166_1:"PK"},{start:6832128,end:6833151,country:"Palau",iso_3166_1:"PW"},{start:794624,end:798719,country:"Panama",iso_3166_1:"PA"},{start:9011200,end:9015295,country:"Papua New Guinea",iso_3166_1:"PG"},{start:15237120,end:15241215,country:"Paraguay",iso_3166_1:"PY"},{start:15253504,end:15257599,country:"Peru",iso_3166_1:"PE"},{start:7700480,end:7733247,country:"Philippines",iso_3166_1:"PH"},{start:4751360,end:4784127,country:"Poland",iso_3166_1:"PL"},{start:4784128,end:4816895,country:"Portugal",iso_3166_1:"PT"},{start:434176,end:435199,country:"Qatar",iso_3166_1:"QA"},{start:7438336,end:7471103,country:"Republic of Korea",iso_3166_1:"KR"},{start:5262336,end:5263359,country:"Republic of Moldova",iso_3166_1:"MD"},{start:4849664,end:4882431,country:"Romania",iso_3166_1:"RO"},{start:1048576,end:2097151,country:"Russian Federation",iso_3166_1:"RU"},{start:450560,end:454655,country:"Rwanda",iso_3166_1:"RW"},{start:13156352,end:13157375,country:"Saint Lucia",iso_3166_1:"LC"},{start:770048,end:771071,country:"Saint Vincent and the Grenadines",iso_3166_1:"VC"},{start:9445376,end:9446399,country:"Samoa",iso_3166_1:"WS"},{start:5242880,end:5243903,country:"San Marino",iso_3166_1:"SM"},{start:647168,end:648191,country:"Sao Tome and Principe",iso_3166_1:"ST"},{start:7405568,end:7438335,country:"Saudi Arabia",iso_3166_1:"SA"},{start:458752,end:462847,country:"Senegal",iso_3166_1:"SN"},{start:4980736,end:5013503,country:"Serbia",iso_3166_1:"RS"},{start:475136,end:476159,country:"Seychelles",iso_3166_1:"SC"},{start:483328,end:484351,country:"Sierra Leone",iso_3166_1:"SL"},{start:7766016,end:7798783,country:"Singapore",iso_3166_1:"SG"},{start:5266432,end:5267455,country:"Slovakia",iso_3166_1:"SK"},{start:5270528,end:5271551,country:"Slovenia",iso_3166_1:"SI"},{start:9007104,end:9008127,country:"Solomon Islands",iso_3166_1:"SB"},{start:491520,end:495615,country:"Somalia",iso_3166_1:"SO"},{start:32768,end:65535,country:"South Africa",iso_3166_1:"ZA"},{start:3407872,end:3670015,country:"Spain",iso_3166_1:"ES"},{start:7798784,end:7831551,country:"Sri Lanka",iso_3166_1:"LK"},{start:507904,end:511999,country:"Sudan",iso_3166_1:"SD"},{start:819200,end:823295,country:"Suriname",iso_3166_1:"SR"},{start:499712,end:500735,country:"Swaziland",iso_3166_1:"SZ"},{start:4882432,end:4915199,country:"Sweden",iso_3166_1:"SE"},{start:4915200,end:4947967,country:"Switzerland",iso_3166_1:"CH"},{start:7831552,end:7864319,country:"Syrian Arab Republic",iso_3166_1:"SY"},{start:5328896,end:5329919,country:"Tajikistan",iso_3166_1:"TJ"},{start:8912896,end:8945663,country:"Thailand",iso_3166_1:"TH"},{start:5316608,end:5317631,country:"North Macedonia",iso_3166_1:"MK"},{start:557056,end:561151,country:"Togo",iso_3166_1:"TG"},{start:13160448,end:13161471,country:"Tonga",iso_3166_1:"TO"},{start:811008,end:815103,country:"Trinidad and Tobago",iso_3166_1:"TT"},{start:163840,end:196607,country:"Tunisia",iso_3166_1:"TN"},{start:4947968,end:4980735,country:"Turkey",iso_3166_1:"TR"},{start:6297600,end:6298623,country:"Turkmenistan",iso_3166_1:"TM"},{start:425984,end:430079,country:"Uganda",iso_3166_1:"UG"},{start:5275648,end:5308415,country:"Ukraine",iso_3166_1:"UA"},{start:9003008,end:9007103,country:"United Arab Emirates",iso_3166_1:"AE"},{start:4194304,end:4456447,country:"United Kingdom",iso_3166_1:"GB"},{start:524288,end:528383,country:"United Republic of Tanzania",iso_3166_1:"TZ"},{start:10485760,end:11534335,country:"United States",iso_3166_1:"US"},{start:15269888,end:15273983,country:"Uruguay",iso_3166_1:"UY"},{start:5274624,end:5275647,country:"Uzbekistan",iso_3166_1:"UZ"},{start:13172736,end:13173759,country:"Vanuatu",iso_3166_1:"VU"},{start:884736,end:917503,country:"Venezuela",iso_3166_1:"VE"},{start:8945664,end:8978431,country:"Viet Nam",iso_3166_1:"VN"},{start:8978432,end:8982527,country:"Yemen",iso_3166_1:"YE"},{start:565248,end:569343,country:"Zambia",iso_3166_1:"ZM"},{start:16384,end:17407,country:"Zimbabwe",iso_3166_1:"ZW"},{start:15728640,end:15761407,country:"ICAO (temporary assignments)",iso_3166_1:null},{start:9015296,end:9016319,country:"ICAO (special use)",iso_3166_1:null},{start:15765504,end:15766527,country:"ICAO (special use)",iso_3166_1:null},{start:2097152,end:2621439,country:"Unassigned (AFI region)",iso_3166_1:null},{start:2621440,end:2686975,country:"Unassigned (SAM region)",iso_3166_1:null},{start:5242880,end:6291455,country:"Unassigned (EUR / NAT regions)",iso_3166_1:null},{start:6291456,end:6815743,country:"Unassigned (MID region)",iso_3166_1:null},{start:6815744,end:7340031,country:"Unassigned (ASIA region)",iso_3166_1:null},{start:9437184,end:10485759,country:"Unassigned (NAM / PAC regions)",iso_3166_1:null},{start:11534336,end:12582911,country:"Unassigned (reserved for future use)",iso_3166_1:null},{start:15466496,end:15728639,country:"Unassigned (CAR region)",iso_3166_1:null},{start:13631488,end:14680063,country:"Unassigned (reserved for future use)",iso_3166_1:null},{start:15728640,end:16777215,country:"Unassigned (reserved for future use)",iso_3166_1:null}]};find=function(t){let e=+("0x"+t);for(let t=0;t=this.ranges[t].start&&e<=this.ranges[t].end)return this.ranges[t];return null}}class st{constructor(){this.limitedAlphabet="ABCDEFGHJKLMNPQRSTUVWXYZ",this.fullAlphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.strideMappings=[{start:32785,s1:676,s2:26,prefix:"ZS-"},{start:3735552,s1:1024,s2:32,prefix:"F-G"},{start:3768320,s1:1024,s2:32,prefix:"F-H"},{start:3949601,s1:1024,s2:32,prefix:"D-A",first:"AAA",last:"OZZ"},{start:3932161,s1:676,s2:26,prefix:"D-A",first:"PAA",last:"ZZZ"},{start:3965985,s1:1024,s2:32,prefix:"D-B",first:"AAA",last:"OZZ"},{start:3940353,s1:676,s2:26,prefix:"D-B",first:"PAA",last:"ZZZ"},{start:3981312,s1:676,s2:26,prefix:"D-C"},{start:3998888,s1:676,s2:26,prefix:"D-E"},{start:4016464,s1:676,s2:26,prefix:"D-F"},{start:4034040,s1:676,s2:26,prefix:"D-G"},{start:4051616,s1:676,s2:26,prefix:"D-H"},{start:4069192,s1:676,s2:26,prefix:"D-I"},{start:4490273,s1:1024,s2:32,prefix:"OO-"},{start:4555809,s1:1024,s2:32,prefix:"OY-"},{start:4587520,s1:676,s2:26,prefix:"OH-"},{start:4621345,s1:1024,s2:32,prefix:"SX-"},{start:4785185,s1:1024,s2:32,prefix:"CS-"},{start:4850721,s1:1024,s2:32,prefix:"YR-"},{start:4949025,s1:1024,s2:32,prefix:"TC-"},{start:7603233,s1:1024,s2:32,prefix:"JY-"},{start:7734305,s1:1024,s2:32,prefix:"AP-"},{start:7767073,s1:1024,s2:32,prefix:"9V-"},{start:7832609,s1:1024,s2:32,prefix:"YK-"},{start:8126464,s1:1296,s2:36,prefix:"VH-"},{start:12582913,s1:676,s2:26,prefix:"C-F"},{start:12600489,s1:676,s2:26,prefix:"C-G"},{start:14684225,s1:4096,s2:64,prefix:"LV-"}],this.numericMappings=[{start:1310720,first:0,count:1e5,template:"RA-00000"},{start:721896,first:1e3,count:1e3,template:"CU-T0000"}];for(let t=0;ts.end)continue;let n=t-s.start+s.offset,i=Math.floor(n/s.s1);n%=s.s1;let r=Math.floor(n/s.s2);n%=s.s2;let o=n;if(!(i<0||i>=s.alphabet.length||r<0||r>=s.alphabet.length||o<0||o>=s.alphabet.length))return s.prefix+s.alphabet.charAt(i)+s.alphabet.charAt(r)+s.alphabet.charAt(o)}return null};numericReg=function(t){let e;for(e=0;es.end)continue;let n=t-s.start+s.first+"";return s.template.substring(0,s.template.length-n.length)+n}};nLetters=function(t){return 0==t?"":(--t,this.limitedAlphabet.charAt(Math.floor(t/25))+this.nLetter(t%25))};nLetter=function(t){return 0==t?"":(--t,this.limitedAlphabet.charAt(t))};nReg=function(t){let e=t-10485761;if(e<0||e>=915399)return null;let s="N"+(Math.floor(e/101711)+1);return e%=101711,e<=600?s+this.nLetters(e):(e-=601,s+=Math.floor(e/10111),e%=10111,e<=600?s+this.nLetters(e):(e-=601,s+=Math.floor(e/951),e%=951,e<=600?s+this.nLetters(e):(e-=601,s+=Math.floor(e/35).toFixed(0),e%=35,e<=24?s+this.nLetter(e):(e-=25,s+e.toFixed(0)))))};hlReg=function(t){return t>=7453184&&t<=7454617?"HL"+(t-7453184+29184).toString(16):t>=7454720&&t<=7454873?"HL"+(t-7454720+32768).toString(16):t>=7455232&&t<=7455385?"HL"+(t-7455232+33280).toString(16):null};jaReg=function(t){let e=t-8650752;if(e<0||e>=229840)return null;let s="JA",n=Math.floor(e/22984);if(n<0||n>9)return null;s+=n,e%=22984;let i=Math.floor(e/916);if(i<0||i>9)return null;if(s+=i,e%=916,e<340){return s+=Math.floor(e/34),e%=34,e<10?s+e:(e-=10,s+this.limitedAlphabet.charAt(e))}e-=340;let r=Math.floor(e/24);return s+this.limitedAlphabet.charAt(r)+this.limitedAlphabet.charAt(e%24)}}class nt{constructor(){this.country=new et,this.registration=new st}}var it,rt;function ot(){return(ot=Object.assign||function(t){for(var e=1;e-1?t.split(".")[1].length:0;s.minimumFractionDigits=n,s.maximumFractionDigits=n}return s},ct=["closed","locked","off"],ht=function(t,e,s,n){n=n||{},s=null==s?{}:s;var i=new Event(e,{bubbles:void 0===n.bubbles||n.bubbles,cancelable:Boolean(n.cancelable),composed:void 0===n.composed||n.composed});return i.detail=s,t.dispatchEvent(i),i},ut=function(t){ht(window,"haptic",t)},dt=function(t,e,s,n,i){var r;if(i&&s.double_tap_action?r=s.double_tap_action:n&&s.hold_action?r=s.hold_action:!n&&s.tap_action&&(r=s.tap_action),r||(r={action:"more-info"}),!r.confirmation||r.confirmation.exemptions&&r.confirmation.exemptions.some((function(t){return t.user===e.user.id}))||confirm(r.confirmation.text||"Are you sure you want to "+r.action+"?"))switch(r.action){case"more-info":(r.entity||s.entity||s.camera_image)&&(ht(t,"hass-more-info",{entityId:r.entity?r.entity:s.entity?s.entity:s.camera_image}),r.haptic&&ut(r.haptic));break;case"navigate":r.navigation_path&&(function(t,e,s){void 0===s&&(s=!1),s?history.replaceState(null,"",e):history.pushState(null,"",e),ht(window,"location-changed",{replace:s})}(0,r.navigation_path),r.haptic&&ut(r.haptic));break;case"url":r.url_path&&window.open(r.url_path),r.haptic&&ut(r.haptic);break;case"toggle":s.entity&&(function(t,e){(function(t,e,s){void 0===s&&(s=!0);var n,i=function(t){return t.substr(0,t.indexOf("."))}(e),r="group"===i?"homeassistant":i;switch(i){case"lock":n=s?"unlock":"lock";break;case"cover":n=s?"open_cover":"close_cover";break;default:n=s?"turn_on":"turn_off"}t.callService(r,n,{entity_id:e})})(t,e,ct.includes(t.states[e].state))}(e,s.entity),r.haptic&&ut(r.haptic));break;case"call-service":if(!r.service)return;var o=r.service.split(".",2),a=o[0],l=o[1],c=ot({},r.service_data);"entity"===c.entity_id&&(c.entity_id=s.entity),e.callService(a,l,c,r.target),r.haptic&&ut(r.haptic);break;case"fire-dom-event":ht(t,"ll-custom",r),r.haptic&&ut(r.haptic)}};class _t{constructor(t,e,s,n){this.config=e,this.lang=n;const i=new tt;this._path=i.getPath(),this.hex=t.hex.toUpperCase(),this.icon="mdi:airplane",this.flight=t.flight??null,this.squawk=t.squawk??null,this.altitude=t.altitude??t.alt_baro??null,this.speed=t.speed??t.gs??null,this.track=t.track??null,this.vert_rate=t.vert_rate??t.baro_rate??null,this.lat=t.lat??null,this.lon=t.lon??null,this.seen=t.seen??100,this.aircraft_type=t.t??null;const r=new nt,o=r.country.find(this.hex);this.flag=null!==o&&null!==o.iso_3166_1?`${this._path}images/flags/${o.iso_3166_1.toLowerCase()}.svg`:null,this.country=null!==o?o.country:null;if(void 0!==t.r&&""!==t.r)this.registration=t.r;else{const t=r.registration.lookup(this.hex);this.registration=t}this.distance=s.isSetUp()?s.calculate(this.lat,this.lon):null,this.setIcon(),this.setUnits()}setIcon=function(){this.vert_rate<0?this.icon="mdi:airplane-landing":this.vert_rate>0&&(this.icon="mdi:airplane-takeoff")};setUnits=function(){if("metric"===this.config.units)!0===this.config.larger_units?this.units={altitude:"km",distance:"km",speed:"km/h"}:this.units={altitude:"m",distance:"m",speed:"m/s"},this.units.age="s",!0!==this.config.track_in_text&&(this.units.track="°");else this.units={altitude:"ft",distance:"NM",speed:"kt",track:"°",age:"s"},!0!==this.config.track_in_text&&(this.units.track="°")};value=function(t,e){let s=this,n=this.units[t]??null;switch(t){case"icon":return e?``:``;case"flag":return null!==s.flag?`${s.country}`:"";case"icao":return s.hex;case"age":let i=s.seen??"";return""!==i&&e&&(i+=" "+n),i;case"speed":let r=s.speed??"";if(""!==r){if("metric"===this.config.units)r=this.config.larger_units?at(Math.round(1.852*r)):at(Math.round(.514444444*r));r=at(r),e&&(r+=" "+n)}return r;case"altitude":let o=s.altitude??"";if(""!==o){if("metric"===this.config.units)o=this.config.larger_units?Math.round(.3048*o/1e3*10)/10:Math.round(.3048*o);o=at(o),e&&(o+=" "+n)}return o;case"track":let a=s.track??"";return""!==a&&(!0===this.config.track_in_text?a=this.trackAsText(a,e):e&&(a+=""+n)),a;case"registration":return null===s.registration?this.lang.content.table.data.not_available:s.registration;default:let l=s[t]??"";return""!==l&&"number"==typeof l&&(l=at(l)),e&&""!==l&&null!==n&&(l+=" "+n),l}};trackAsText=function(t,e){let s="n";return t>=11.25&&t<=33.75?s="nne":t>=33.75&&t<=56.25?s="ne":t>=56.25&&t<=78.75?s="ene":t>=78.75&&t<=101.25?s="e":t>=101.25&&t<=123.75?s="ese":t>=123.75&&t<=146.25?s="se":t>=146.25&&t<=168.75?s="sse":t>=168.75&&t<=191.25?s="s":t>=191.25&&t<=213.75?s="ssw":t>=213.75&&t<=236.25?s="sw":t>=236.25&&t<=258.75?s="wsw":t>=258.75&&t<=281.25?s="w":t>=281.25&&t<=303.75?s="wnw":t>=303.75&&t<=326.25?s="nw":t>=326.25&&t<=348.75&&(s="nnw"),e?this.lang.content.track.long[s]:this.lang.content.track.short[s]}}var pt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},gt={},ft=pt&&pt.__spreadArrays||function(){for(var t=0,e=0,s=arguments.length;e{if(!this.merged.availableColumns.hasOwnProperty(e))throw new Error("Column '"+e+"' does not exist");t+=this.merged.availableColumns[e].weight})),t>15&&(this.error="Too many columns defined")}else this.error="Order '"+this.merged.order+"' is not supported";else this.error="Unit '"+this.merged.units+"' is not supported";else this.error="You need to define and entity";return""===this.error}}class wt{constructor(t,e){this.config=t,this.zone=t.zone,this.units=t.units,this.hass=e,null!==this.zone&&this.getCoordinatesOfZone()}isSetUp=function(){return this.hasOwnProperty("lat")&&this.hasOwnProperty("lon")};getCoordinatesOfZone=function(){let t=this.hass.states[this.zone];void 0!==t&&(this.lat=t.attributes.latitude,this.lon=t.attributes.longitude,this.config.distance=!0)};calculate=function(t,e){if(null===t||null===e)return"";if(t===this.lat&&e===this.lon)return 0;let s=this.lat*(Math.PI/180),n=t*(Math.PI/180),i=n-s,r=(e-this.lon)*(Math.PI/180),o=12742142*Math.asin(Math.sqrt(Math.sin(i/2)*Math.sin(i/2)+Math.cos(s)*Math.cos(n)*Math.sin(r/2)*Math.sin(r/2)));switch(o=Math.round(o),this.units){case"metric":this.config.larger_units&&(o=Math.round(o/1e3*10)/10);break;case"default":o=Math.round(.000539956803*o*10)/10}return o}}var $t={table:{head:{icao:"ICAO Code",country:"Land",registration:"Registration",flight:"Flug",squawk:"Squawk",altitude:"Höhe",speed:"Geschwindigkeit",distance:"Entfernung",track:"Richtung",age:"Letzte Nachricht",aircraft_type:"Typ"},data:{not_available:"N/V",none:"Keine Flugzeuge erkannt!",undefined:"Die konfigurierte Entität enthält keine Daten!"}},popup:{table:{head:{property:"Eigenschaft",value:"Wert"}}},track:{short:{n:"N",nne:"NNO",ne:"NO",ene:"ONO",e:"O",ese:"OSO",se:"SO",sse:"SSO",s:"S",ssw:"SSW",sw:"SW",wsw:"WSW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"Nord",nne:"Nord-Nord-Ost",ne:"Nord-Ost",ene:"Ost-Nord-Ost",e:"Ost",ese:"Ost-Süd-Ost",se:"Süd-Ost",sse:"Süd-Süd-Ost",s:"Süd",ssw:"Süd-Süd-West",sw:"Süd-West",wsw:"West-Süd-West",w:"West",wnw:"West-Nord-West",nw:"Nord-West",nnw:"Nord-Nord-West"}}},At={table:{head:{icao:"ICAO Code",country:"Country",registration:"Registration",flight:"Flight",squawk:"Squawk",altitude:"Altitude",speed:"Speed",distance:"Distance",track:"Track",age:"Last message",aircraft_type:"Type"},data:{not_available:"N/A",none:"No aircrafts detected!",undefined:"The configurated entity doesn't contain data!"}},popup:{table:{head:{property:"Property",value:"Value"}}},track:{short:{n:"N",nne:"NNE",ne:"NE",ene:"ENE",e:"E",ese:"ESE",se:"SE",sse:"SSE",s:"S",ssw:"SSW",sw:"SW",wsw:"WSW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"North",nne:"North-northeast",ne:"Northeast",ene:"East-northeast",e:"East",ese:"East-southeast",se:"Southeast",sse:"South-southeast",s:"South",ssw:"South-southwest",sw:"Southwest",wsw:"West-southwest",w:"West",wnw:"West-northwest",nw:"Northwest",nnw:"North-northwest"}}},St={table:{head:{icao:"ICAO-tunnus",country:"Maa",registration:"Rekisteröinti",flight:"Lento",squawk:"Tunniste",altitude:"Korkeus",speed:"Nopeus",distance:"Etäisyys",track:"Lentorata",age:"Viimeisin viesti",aircraft_type:"Tyyppi"},data:{not_available:"Ei saatavilla",none:"Ei havaittuja lentoaluksia!",undefined:"Määritys ei sisällä dataa!"}},popup:{table:{head:{property:"Kenttä",value:"Arvo"}}},track:{short:{n:"N",nne:"NNE",ne:"NE",ene:"ENE",e:"E",ese:"ESE",se:"SE",sse:"SSE",s:"S",ssw:"SSW",sw:"SW",wsw:"WSW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"Pohjoinen",nne:"Pohjoiskoillinen",ne:"Koillinen",ene:"Itäkoillinen",e:"Itä",ese:"Itäkaakko",se:"Kaakko",sse:"Eteläkaakko",s:"Etelä",ssw:"Etelälounas",sw:"Lounas",wsw:"Länsilounas",w:"Länsi",wnw:"Länsiluode",nw:"Luode",nnw:"Pohjoisluode"}}},xt={table:{head:{icao:"ICAO code",country:"Land",registration:"Registratie",flight:"Vlucht",squawk:"Squawk",altitude:"Hoogte",speed:"Snelheid",distance:"Afstand",track:"Richting",age:"Laatste bericht",aircraft_type:"Type"},data:{not_available:"Nb",none:"Geen vliegtuigen gedetecteerd!",undefined:"De ingestelde entiteit bevat geen data!"}},popup:{table:{head:{property:"Eigenschap",value:"Waarde"}}},track:{short:{n:"N",nne:"NNO",ne:"NO",ene:"ONO",e:"O",ese:"OZO",se:"ZO",sse:"ZZO",s:"Z",ssw:"ZZW",sw:"ZW",wsw:"WZW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"Noord",nne:"Noordnoordoost",ne:"Noordoost",ene:"Oostnoordoost",e:"Oost",ese:"Oostzuidoost",se:"Zuidoost",sse:"Zuidzuidoost",s:"Zuid",ssw:"Zuidzuidwest",sw:"Zuidwest",wsw:"Westzuidwest",w:"West",wnw:"Westnoordwest",nw:"Noordwest",nnw:"Noordnoordwest"}}},Et={table:{head:{icao:"Kod ICAO",country:"Kraj",registration:"Rejestracja",flight:"Lot",squawk:"Squawk",altitude:"Wysokość",speed:"Prędkość",distance:"Dystans",track:"Kierunek",age:"Ostatnia wiadomość",aircraft_type:"Typ"},data:{not_available:"N/D",none:"Brak wykrytych statków powietrznych!",undefined:"Skonfigurowany obiekt nie zawiera danych!"}},popup:{table:{head:{property:"Właściwość",value:"Wartość"}}},track:{short:{n:"N",nne:"NNE",ne:"NE",ene:"ENE",e:"E",ese:"ESE",se:"SE",sse:"SSE",s:"S",ssw:"SSW",sw:"SW",wsw:"WSW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"Północ",nne:"Północ-północny wschód",ne:"Północny wschód",ene:"Wschód-północny wschód",e:"Wschód",ese:"Wschód-południowy wschód",se:"Południowy wschód",sse:"Południowy-południowy wschód",s:"Południe",ssw:"Południowy-południowy zachód",sw:"Południowy zachód",wsw:"Zachód-południowy zachód",w:"Zachód",wnw:"Zachód-północny zachód",nw:"Północny zachód",nnw:"Północ-północny zachód"}}},Nt={table:{head:{icao:"ICAO naslov",country:"Država",registration:"Registracija",flight:"Št. leta",squawk:"Squawk",altitude:"Višina",speed:"Hitrost",distance:"Razdalja",track:"Smer",age:"Zaznano pred",aircraft_type:"Vrsta"},data:{not_available:"N/A",none:"Ni zaznanih letal!",undefined:"Konfigurirana entiteta ne vsebuje podatkov!"}},popup:{table:{head:{property:"Karakteristika",value:"Vrednost"}}},track:{short:{n:"S",nne:"SSV",ne:"SV",ene:"VSV",e:"V",ese:"VJV",se:"JV",sse:"JJV",s:"J",ssw:"JJZ",sw:"JZ",wsw:"ZJZ",w:"Z",wnw:"ZSZ",nw:"SZ",nnw:"SSZ"},long:{n:"sever",nne:"sever-severovzhod",ne:"severovzhod",ene:"vzhod-severovzhod",e:"vzhod",ese:"vzhod-jugovzhod",se:"jugovzhod",sse:"jug-jugovzhod",s:"jug",ssw:"jug-jugozahod",sw:"jugozahod",wsw:"zahod-jugozahod",w:"zahod",wnw:"zahod-severozahod",nw:"severozahod",nnw:"sever-severozahod"}}};class kt{constructor(t,e){this.config=t,this.hass=e,this.content=At,this.setLang()}setLang=function(){if(null===this.config.lang&&(this.config.lang=this.hass.language),"en"!==this.config.lang)switch(this.config.lang){case"de":this.content=$t;break;case"fi":this.content=St;break;case"nl":this.content=xt;break;case"pl":this.content=Et;break;case"sl":this.content=Nt}}}function*Ct(t,e){if(void 0!==t){let s=0;for(const n of t)yield e(n,s++)}}const Mt=2;class Ot{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,s){this._$Ct=t,this._$AM=e,this._$Ci=s}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}class Pt extends Ot{constructor(t){if(super(t),this.it=W,t.type!==Mt)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===W||null==t)return this._t=void 0,this.it=t;if(t===U)return t;if("string"!=typeof t)throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;const e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}}Pt.directiveName="unsafeHTML",Pt.resultType=1;const Rt=(t=>(...e)=>({_$litDirective$:t,values:e}))(Pt);class Tt{constructor(t,e,s,n,i){this.hass=t,this.config=e,this.lang=s,this.row=n,this.aircraft=i,this.show()}show=function(){const t=this;fetch("https://api.planespotters.net/pub/photos/hex/"+this.aircraft.hex,{cache:"no-store",headers:{"Content-Type":"text/json"}}).then((t=>t.text())).then((function(e){let s,n=JSON.parse(e),i="",r=t.aircraft.registration||t.aircraft.flight||t.aircraft.hex;if(s=t.aircraft.registration&&t.aircraft.flight||t.aircraft.hex,n.photos.length>0){let t=n.photos[0].thumbnail_large.src,e=n.photos[0].link,s=n.photos[0].photographer;i+=`![${r} - © ${s}](${t} "${r} - © ${s}")\n`,i+=`© [${s}](${e})\n\n`}i+="## ",t.aircraft.flag&&(i+=``),i+=`${s}${t.aircraft.value("icon",!0)}\n`,i+=`|${t.lang.popup.table.head.property}|${t.lang.popup.table.head.value}|\n|:-|-:|\n`,Object.keys(vt).forEach((e=>{let s=vt[e],n=t.aircraft.value(e,!0);s.popup&&""!==n&&(i+=`|${t.lang.table.head[e]}|${n}|\n`)}));const o=t.config.colors.popup_bg??"var(--card-background-color)",a=t.config.colors.popup_text??t.config.colors.table_text??"var(--primary-color)",l=t.config.colors.popup_text??t.config.colors.table_text??"var(--primary-color)",c=t.config.colors.popup_table_head_bg??t.config.colors.table_head_bg??"var(--primary-color)",h=t.config.colors.popup_table_head_text??t.config.colors.table_head_text??"var(--app-header-text-color, white)",u=t.config.colors.popup_text??t.config.colors.table_text??"var(--primary-text-color)",d=t.config.colors.popup_table_even_row_bg??t.config.colors.table_even_row_bg??"var(--primary-background-color)",_=t.config.colors.popup_table_even_row_text??t.config.colors.table_even_row_text??"var(--primary-text-color)";dt(t.row,t.hass,{tap_action:{action:"fire-dom-event",browser_mod:{service:"browser_mod.popup",data:{hide_header:!0,style:`--mdc-theme-surface:${o};`,title:r,content:{type:"markdown",content:i,card_mod:{style:{".":`ha-card.type-markdown{border:none;}ha-markdown{background:${o};}ha-markdown.no-header{padding-top:0 !important;}`,"ha-markdown$":`font {color: ${a};}font a{color:${l};}img{width:100%}h2{display:flex;justify-content:space-between;color:${a};}h2 img{width:auto;height:.8em;margin:0 10px 0 0;display:inline-block;vertical-align:baseline;}table{width:100%;border-spacing:0;border-collapse:collapse;}table tr th, table tr td{padding:4px;}table tr th{background-color:${c};color:${h};}table tr{color:${u};}table tr:nth-child(even){background-color:${d};color:${_};}`}}}}}}})}))}}customElements.define("fr24-table",class extends Q{static get properties(){return{hass:{type:Object},config:{type:Object},aircrafts:{type:Array},lang:{type:Object}}}constructor(){super()}render(){let t=[];this.config.columns.forEach((e=>{let s=vt[e];if(!1===s.show)return;let n=this.lang.table.head[e]??"";t.push({value:n,styles:s.styles??[]})}));let e=[];if(!0===this.config.units_in_table){let t=this.aircrafts[0];this.config.columns.forEach((s=>{let n=vt[s];if(!1===n.show)return;let i=t.units[s]??"";e.push({value:i,styles:n.styles??[]})}))}let s=[],n=0;for(let t of this.aircrafts){let e=[];this.config.columns.forEach((s=>{let n=vt[s];!1!==n.show&&e.push({value:t.value(s),html:n.html??!1,styles:n.styles??[]})}));let i={};if(this.config.popup&&(i.hex=t.hex),s.push({cells:e,attrs:i}),n++,Number.isInteger(this.config.limit)&&this.config.limit===n)break}return T`${Ct(t,(t=>T``))}${e.length>0?T`${Ct(e,(t=>T``))}`:""}${Ct(s,(t=>T`${Ct(t.cells,(t=>T``))}`))}
${t.value}
${t.value}
${t.html?T`${Rt(t.value)}`:T`${t.value}`}
`}_handleClick(t){if(this.config.popup){let e=t.target.closest("tr");if(e){let t=e.getAttribute("data-hex"),s=null;for(let e=0;e:host{--fr24-warning-bg:${null!==this.config.colors.table_even_row_bg?this.config.colors.table_even_row_bg:"var(--primary-background-color)"}--fr24-warning-text:${null!==this.config.colors.table_even_row_text?this.config.colors.table_even_row_text:"var(--primary-text-color)"}}
${this.message}
`}static get styles(){return r`div{padding:4px;background-color:var(--fr24-warning-bg);color:var(--fr24-warning-text);text-align:center}`}}),window.customCards=window.customCards||[],window.customCards.push({type:"fr24-card",name:"Flight Radar card",description:"Card that shows the tracked flights",preview:!1}),window.fr24db=[];customElements.define("fr24-card",class extends Q{static get properties(){return{hass:{},config:{}}}render(){if(this._isStateUndefined=!1,this._distance=new wt(this.config,this.hass),this._lang=new kt(this.config,this.hass),this.config.entity){this._parseAircrafts();let t=null;return this._isStateUndefined?t=this._lang.content.table.data.undefined:this._aircrafts.length<1&&(t=this._lang.content.table.data.none),null!==t?T`
`:T`
`}return T`Entity not set`}setConfig(t){const e=new tt;if(this._path=e.getPath(),0===window.fr24db.length){const t=document.createElement("script");t.setAttribute("async",""),t.setAttribute("type","text/javascript"),t.setAttribute("src",this._path+"fr24_database.js"),document.head.appendChild(t)}let s=new mt(t);if(!s.validate())throw new Error(s.error);this.config=s.get()}getCardSize(){return Number.isInteger(this.config.limit)?this.config.limit+5:100}static getStubConfig(){return{entity:"sensor.fr24_aircraft"}}_parseAircrafts(){const t=this;if(this._aircrafts=[],void 0===this.hass.states[this.config.entity])return void(this._isStateUndefined=!0);const e=this.hass.states[this.config.entity].attributes[this.config.attribute];this.config.availableColumns.distance.show=!1,!0===this.config.distance&&(this.config.availableColumns.distance.show=!0),e.forEach((t=>{let e=new _t(t,this.config,this._distance,this._lang),s=!0;if(!1!==this.config.hide.old_messages&&e.seen>30)s=!1;else if(this.config.hide.empty.length>0)for(let t=0;t1&&(this._aircrafts.sort((function(e,s){let n=t.config.sort||"altitude",i=e[n],r=s[n];return i===r?0:null===i||""===i?1:null===r||""===r||i{const n=1===t.length?t[0]:e.reduce(((e,s,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[n+1]),t[0]);return new i(n,t,s)},o=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return(t=>new i("string"==typeof t?t:t+"",void 0,s))(e)})(t):t;var a;const l=window,c=l.trustedTypes,h=c?c.emptyScript:"",u=l.reactiveElementPolyfillSupport,d={toAttribute(t,e){switch(e){case Boolean:t=t?h:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let s=t;switch(e){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},_=(t,e)=>e!==t&&(e==e||t==t),p={attribute:!0,type:String,converter:d,reflect:!1,hasChanged:_};let g=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var e;this.finalize(),(null!==(e=this.h)&&void 0!==e?e:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,s)=>{const n=this._$Ep(s,e);void 0!==n&&(this._$Ev.set(n,s),t.push(n))})),t}static createProperty(t,e=p){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const s="symbol"==typeof t?Symbol():"__"+t,n=this.getPropertyDescriptor(t,s,e);void 0!==n&&Object.defineProperty(this.prototype,t,n)}}static getPropertyDescriptor(t,e,s){return{get(){return this[e]},set(n){const i=this[t];this[e]=n,this.requestUpdate(t,i,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||p}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of e)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const t of s)e.unshift(o(t))}else void 0!==t&&e.push(o(t));return e}static _$Ep(t,e){const s=e.attribute;return!1===s?void 0:"string"==typeof s?s:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,s;(null!==(e=this._$ES)&&void 0!==e?e:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var e;null===(e=this._$ES)||void 0===e||e.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Ei.set(e,this[e]),delete this[e])}))}createRenderRoot(){var s;const n=null!==(s=this.shadowRoot)&&void 0!==s?s:this.attachShadow(this.constructor.shadowRootOptions);return((s,n)=>{e?s.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((e=>{const n=document.createElement("style"),i=t.litNonce;void 0!==i&&n.setAttribute("nonce",i),n.textContent=e.cssText,s.appendChild(n)}))})(n,this.constructor.elementStyles),n}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EO(t,e,s=p){var n;const i=this.constructor._$Ep(t,s);if(void 0!==i&&!0===s.reflect){const r=(void 0!==(null===(n=s.converter)||void 0===n?void 0:n.toAttribute)?s.converter:d).toAttribute(e,s.type);this._$El=t,null==r?this.removeAttribute(i):this.setAttribute(i,r),this._$El=null}}_$AK(t,e){var s;const n=this.constructor,i=n._$Ev.get(t);if(void 0!==i&&this._$El!==i){const t=n.getPropertyOptions(i),r="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(s=t.converter)||void 0===s?void 0:s.fromAttribute)?t.converter:d;this._$El=i,this[i]=r.fromAttribute(e,t.type),this._$El=null}}requestUpdate(t,e,s){let n=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||_)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===s.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,s))):n=!1),!this.isUpdatePending&&n&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,e)=>this[e]=t)),this._$Ei=void 0);let e=!1;const s=this._$AL;try{e=this.shouldUpdate(s),e?(this.willUpdate(s),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(s)):this._$Ek()}catch(t){throw e=!1,this._$Ek(),t}e&&this._$AE(s)}willUpdate(t){}_$AE(t){var e;null===(e=this._$ES)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,e)=>this._$EO(e,this[e],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}};var f;g.finalized=!0,g.elementProperties=new Map,g.elementStyles=[],g.shadowRootOptions={mode:"open"},null==u||u({ReactiveElement:g}),(null!==(a=l.reactiveElementVersions)&&void 0!==a?a:l.reactiveElementVersions=[]).push("1.5.0");const y=window,b=y.trustedTypes,v=b?b.createPolicy("lit-html",{createHTML:t=>t}):void 0,m=`lit$${(Math.random()+"").slice(9)}$`,w="?"+m,$=`<${w}>`,A=document,S=(t="")=>A.createComment(t),E=t=>null===t||"object"!=typeof t&&"function"!=typeof t,x=Array.isArray,C=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,N=/-->/g,k=/>/g,M=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),O=/'/g,P=/"/g,R=/^(?:script|style|textarea|title)$/i,T=(t=>(e,...s)=>({_$litType$:t,strings:e,values:s}))(1),U=Symbol.for("lit-noChange"),W=Symbol.for("lit-nothing"),L=new WeakMap,z=A.createTreeWalker(A,129,null,!1),B=(t,e)=>{const s=t.length-1,n=[];let i,r=2===e?"":"",o=C;for(let e=0;e"===l[0]?(o=null!=i?i:C,c=-1):void 0===l[1]?c=-2:(c=o.lastIndex-l[2].length,a=l[1],o=void 0===l[3]?M:'"'===l[3]?P:O):o===P||o===O?o=M:o===N||o===k?o=C:(o=M,i=void 0);const u=o===M&&t[e+1].startsWith("/>")?" ":"";r+=o===C?s+$:c>=0?(n.push(a),s.slice(0,c)+"$lit$"+s.slice(c)+m+u):s+m+(-2===c?(n.push(void 0),e):u)}const a=r+(t[s]||"")+(2===e?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==v?v.createHTML(a):a,n]};class I{constructor({strings:t,_$litType$:e},s){let n;this.parts=[];let i=0,r=0;const o=t.length-1,a=this.parts,[l,c]=B(t,e);if(this.el=I.createElement(l,s),z.currentNode=this.el.content,2===e){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(n=z.nextNode())&&a.length0){n.textContent=b?b.emptyScript:"";for(let s=0;sx(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this.g(t)}O(t,e=this._$AB){return this._$AA.parentNode.insertBefore(t,e)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==W&&E(this._$AH)?this._$AA.nextSibling.data=t:this.T(A.createTextNode(t)),this._$AH=t}$(t){var e;const{values:s,_$litType$:n}=t,i="number"==typeof n?this._$AC(t):(void 0===n.el&&(n.el=I.createElement(n.h,this.options)),n);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===i)this._$AH.p(s);else{const t=new class{constructor(t,e){this.u=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(t){var e;const{el:{content:s},parts:n}=this._$AD,i=(null!==(e=null==t?void 0:t.creationScope)&&void 0!==e?e:A).importNode(s,!0);z.currentNode=i;let r=z.nextNode(),o=0,a=0,l=n[0];for(;void 0!==l;){if(o===l.index){let e;2===l.type?e=new D(r,r.nextSibling,this,t):1===l.type?e=new l.ctor(r,l.name,l.strings,this,t):6===l.type&&(e=new F(r,this,t)),this.u.push(e),l=n[++a]}o!==(null==l?void 0:l.index)&&(r=z.nextNode(),o++)}return i}p(t){let e=0;for(const s of this.u)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,e),e+=s.strings.length-2):s._$AI(t[e])),e++}}(i,this),e=t.v(this.options);t.p(s),this.T(e),this._$AH=t}}_$AC(t){let e=L.get(t.strings);return void 0===e&&L.set(t.strings,e=new I(t)),e}k(t){x(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let s,n=0;for(const i of t)n===e.length?e.push(s=new D(this.O(S()),this.O(S()),this,this.options)):s=e[n],s._$AI(i),n++;n2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=W}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,s,n){const i=this.strings;let r=!1;if(void 0===i)t=H(this,t,e,0),r=!E(t)||t!==this._$AH&&t!==U,r&&(this._$AH=t);else{const n=t;let o,a;for(t=i[0],o=0;o{var n,i;const r=null!==(n=null==s?void 0:s.renderBefore)&&void 0!==n?n:e;let o=r._$litPart$;if(void 0===o){const t=null!==(i=null==s?void 0:s.renderBefore)&&void 0!==i?i:null;r._$litPart$=o=new D(e.insertBefore(S(),t),t,void 0,null!=s?s:{})}return o._$AI(t),o})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return U}}Q.finalized=!0,Q._$litElement$=!0,null===(q=globalThis.litElementHydrateSupport)||void 0===q||q.call(globalThis,{LitElement:Q});const X=globalThis.litElementPolyfillSupport;null==X||X({LitElement:Q}),(null!==(Y=globalThis.litElementVersions)&&void 0!==Y?Y:globalThis.litElementVersions=[]).push("3.2.2");class tt{constructor(){this.path=this.getPath()}getPath=function(){const t=document.querySelector('script[src*="fr24_card.js"]').getAttribute("src");return t.substring(0,t.lastIndexOf("/")+1)}}class et{constructor(){this.setRanges()}setRanges=function(){this.ranges=[{start:7340032,end:7344127,country:"Afghanistan",iso_3166_1:"AF"},{start:5246976,end:5247999,country:"Albania",iso_3166_1:"AL"},{start:655360,end:688127,country:"Algeria",iso_3166_1:"DZ"},{start:589824,end:593919,country:"Angola",iso_3166_1:"AO"},{start:827392,end:828415,country:"Antigua and Barbuda",iso_3166_1:"AG"},{start:14680064,end:14942207,country:"Argentina",iso_3166_1:"AR"},{start:6291456,end:6292479,country:"Armenia",iso_3166_1:"AM"},{start:8126464,end:8388607,country:"Australia",iso_3166_1:"AU"},{start:4456448,end:4489215,country:"Austria",iso_3166_1:"AT"},{start:6293504,end:6294527,country:"Azerbaijan",iso_3166_1:"AZ"},{start:688128,end:692223,country:"Bahamas",iso_3166_1:"BS"},{start:8994816,end:8998911,country:"Bahrain",iso_3166_1:"BH"},{start:7348224,end:7352319,country:"Bangladesh",iso_3166_1:"BD"},{start:696320,end:697343,country:"Barbados",iso_3166_1:"BB"},{start:5308416,end:5309439,country:"Belarus",iso_3166_1:"BY"},{start:4489216,end:4521983,country:"Belgium",iso_3166_1:"BE"},{start:700416,end:701439,country:"Belize",iso_3166_1:"BZ"},{start:606208,end:607231,country:"Benin",iso_3166_1:"BJ"},{start:6815744,end:6816767,country:"Bhutan",iso_3166_1:"BT"},{start:15286272,end:15290367,country:"Bolivia",iso_3166_1:"BO"},{start:5320704,end:5321727,country:"Bosnia and Herzegovina",iso_3166_1:"BA"},{start:196608,end:197631,country:"Botswana",iso_3166_1:"BW"},{start:14942208,end:15204351,country:"Brazil",iso_3166_1:"BR"},{start:8998912,end:8999935,country:"Brunei Darussalam",iso_3166_1:"BN"},{start:4521984,end:4554751,country:"Bulgaria",iso_3166_1:"BG"},{start:638976,end:643071,country:"Burkina Faso",iso_3166_1:"BF"},{start:204800,end:208895,country:"Burundi",iso_3166_1:"BI"},{start:7397376,end:7401471,country:"Cambodia",iso_3166_1:"KH"},{start:212992,end:217087,country:"Cameroon",iso_3166_1:"CM"},{start:12582912,end:12845055,country:"Canada",iso_3166_1:"CA"},{start:614400,end:615423,country:"Cape Verde",iso_3166_1:"CV"},{start:442368,end:446463,country:"Central African Republic",iso_3166_1:"CF"},{start:540672,end:544767,country:"Chad",iso_3166_1:"TD"},{start:15204352,end:15208447,country:"Chile",iso_3166_1:"CL"},{start:7864320,end:8126463,country:"China",iso_3166_1:"CN"},{start:704512,end:708607,country:"Colombia",iso_3166_1:"CO"},{start:217088,end:218111,country:"Comoros",iso_3166_1:"KM"},{start:221184,end:225279,country:"Congo",iso_3166_1:"CG"},{start:9441280,end:9442303,country:"Cook Islands",iso_3166_1:"CK"},{start:712704,end:716799,country:"Costa Rica",iso_3166_1:"CR"},{start:229376,end:233471,country:"Cote d'Ivoire",iso_3166_1:"CI"},{start:5250048,end:5251071,country:"Croatia",iso_3166_1:"HR"},{start:720896,end:724991,country:"Cuba",iso_3166_1:"CU"},{start:5013504,end:5014527,country:"Cyprus",iso_3166_1:"CY"},{start:4816896,end:4849663,country:"Czech Republic",iso_3166_1:"CZ"},{start:7471104,end:7503871,country:"Democratic People's Republic of Korea",iso_3166_1:"KP"},{start:573440,end:577535,country:"Democratic Republic of the Congo",iso_3166_1:"CD"},{start:4554752,end:4587519,country:"Denmark",iso_3166_1:"DK"},{start:622592,end:623615,country:"Djibouti",iso_3166_1:"DJ"},{start:802816,end:806911,country:"Dominican Republic",iso_3166_1:"DO"},{start:15220736,end:15224831,country:"Ecuador",iso_3166_1:"EC"},{start:65536,end:98303,country:"Egypt",iso_3166_1:"EG"},{start:729088,end:733183,country:"El Salvador",iso_3166_1:"SV"},{start:270336,end:274431,country:"Equatorial Guinea",iso_3166_1:"GQ"},{start:2105344,end:2106367,country:"Eritrea",iso_3166_1:"ER"},{start:5312512,end:5313535,country:"Estonia",iso_3166_1:"EE"},{start:262144,end:266239,country:"Ethiopia",iso_3166_1:"ET"},{start:13139968,end:13144063,country:"Fiji",iso_3166_1:"FJ"},{start:4587520,end:4620287,country:"Finland",iso_3166_1:"FI"},{start:3670016,end:3932159,country:"France",iso_3166_1:"FR"},{start:253952,end:258047,country:"Gabon",iso_3166_1:"GA"},{start:630784,end:634879,country:"Gambia",iso_3166_1:"GM"},{start:5324800,end:5325823,country:"Georgia",iso_3166_1:"GE"},{start:3932160,end:4194303,country:"Germany",iso_3166_1:"DE"},{start:278528,end:282623,country:"Ghana",iso_3166_1:"GH"},{start:4620288,end:4653055,country:"Greece",iso_3166_1:"GR"},{start:835584,end:836607,country:"Grenada",iso_3166_1:"GD"},{start:737280,end:741375,country:"Guatemala",iso_3166_1:"GT"},{start:286720,end:290815,country:"Guinea",iso_3166_1:"GN"},{start:294912,end:295935,country:"Guinea-Bissau",iso_3166_1:"GW"},{start:745472,end:749567,country:"Guyana",iso_3166_1:"GY"},{start:753664,end:757759,country:"Haiti",iso_3166_1:"HT"},{start:761856,end:765951,country:"Honduras",iso_3166_1:"HN"},{start:4653056,end:4685823,country:"Hungary",iso_3166_1:"HU"},{start:5029888,end:5033983,country:"Iceland",iso_3166_1:"IS"},{start:8388608,end:8650751,country:"India",iso_3166_1:"IN"},{start:9043968,end:9076735,country:"Indonesia",iso_3166_1:"ID"},{start:7536640,end:7569407,country:"Iran, Islamic Republic of",iso_3166_1:"IR"},{start:7503872,end:7536639,country:"Iraq",iso_3166_1:"IQ"},{start:5021696,end:5025791,country:"Ireland",iso_3166_1:"IE"},{start:7569408,end:7602175,country:"Israel",iso_3166_1:"IL"},{start:3145728,end:3407871,country:"Italy",iso_3166_1:"IT"},{start:778240,end:782335,country:"Jamaica",iso_3166_1:"JM"},{start:8650752,end:8912895,country:"Japan",iso_3166_1:"JP"},{start:7602176,end:7634943,country:"Jordan",iso_3166_1:"JO"},{start:6828032,end:6829055,country:"Kazakhstan",iso_3166_1:"KZ"},{start:311296,end:315391,country:"Kenya",iso_3166_1:"KE"},{start:13164544,end:13165567,country:"Kiribati",iso_3166_1:"KI"},{start:7364608,end:7368703,country:"Kuwait",iso_3166_1:"KW"},{start:6295552,end:6296575,country:"Kyrgyzstan",iso_3166_1:"KG"},{start:7372800,end:7376895,country:"Lao People's Democratic Republic",iso_3166_1:"LA"},{start:5254144,end:5255167,country:"Latvia",iso_3166_1:"LV"},{start:7634944,end:7667711,country:"Lebanon",iso_3166_1:"LB"},{start:303104,end:304127,country:"Lesotho",iso_3166_1:"LS"},{start:327680,end:331775,country:"Liberia",iso_3166_1:"LR"},{start:98304,end:131071,country:"Libyan Arab Jamahiriya",iso_3166_1:"LY"},{start:5258240,end:5259263,country:"Lithuania",iso_3166_1:"LT"},{start:5046272,end:5047295,country:"Luxembourg",iso_3166_1:"LU"},{start:344064,end:348159,country:"Madagascar",iso_3166_1:"MG"},{start:360448,end:364543,country:"Malawi",iso_3166_1:"MW"},{start:7667712,end:7700479,country:"Malaysia",iso_3166_1:"MY"},{start:368640,end:369663,country:"Maldives",iso_3166_1:"MV"},{start:376832,end:380927,country:"Mali",iso_3166_1:"ML"},{start:5054464,end:5055487,country:"Malta",iso_3166_1:"MT"},{start:9437184,end:9438207,country:"Marshall Islands",iso_3166_1:"MH"},{start:385024,end:386047,country:"Mauritania",iso_3166_1:"MR"},{start:393216,end:394239,country:"Mauritius",iso_3166_1:"MU"},{start:851968,end:884735,country:"Mexico",iso_3166_1:"MX"},{start:6819840,end:6820863,country:"Micronesia, Federated States of",iso_3166_1:"FM"},{start:5062656,end:5063679,country:"Monaco",iso_3166_1:"MC"},{start:6823936,end:6824959,country:"Mongolia",iso_3166_1:"MN"},{start:5332992,end:5334015,country:"Montenegro",iso_3166_1:"ME"},{start:131072,end:163839,country:"Morocco",iso_3166_1:"MA"},{start:24576,end:28671,country:"Mozambique",iso_3166_1:"MZ"},{start:7356416,end:7360511,country:"Myanmar",iso_3166_1:"MM"},{start:2101248,end:2102271,country:"Namibia",iso_3166_1:"NA"},{start:13148160,end:13149183,country:"Nauru",iso_3166_1:"NR"},{start:7380992,end:7385087,country:"Nepal",iso_3166_1:"NP"},{start:4718592,end:4751359,country:"Netherlands, Kingdom of the",iso_3166_1:"NL"},{start:13107200,end:13139967,country:"New Zealand",iso_3166_1:"NZ"},{start:786432,end:790527,country:"Nicaragua",iso_3166_1:"NI"},{start:401408,end:405503,country:"Niger",iso_3166_1:"NE"},{start:409600,end:413695,country:"Nigeria",iso_3166_1:"NG"},{start:4685824,end:4718591,country:"Norway",iso_3166_1:"NO"},{start:7389184,end:7390207,country:"Oman",iso_3166_1:"OM"},{start:7733248,end:7766015,country:"Pakistan",iso_3166_1:"PK"},{start:6832128,end:6833151,country:"Palau",iso_3166_1:"PW"},{start:794624,end:798719,country:"Panama",iso_3166_1:"PA"},{start:9011200,end:9015295,country:"Papua New Guinea",iso_3166_1:"PG"},{start:15237120,end:15241215,country:"Paraguay",iso_3166_1:"PY"},{start:15253504,end:15257599,country:"Peru",iso_3166_1:"PE"},{start:7700480,end:7733247,country:"Philippines",iso_3166_1:"PH"},{start:4751360,end:4784127,country:"Poland",iso_3166_1:"PL"},{start:4784128,end:4816895,country:"Portugal",iso_3166_1:"PT"},{start:434176,end:435199,country:"Qatar",iso_3166_1:"QA"},{start:7438336,end:7471103,country:"Republic of Korea",iso_3166_1:"KR"},{start:5262336,end:5263359,country:"Republic of Moldova",iso_3166_1:"MD"},{start:4849664,end:4882431,country:"Romania",iso_3166_1:"RO"},{start:1048576,end:2097151,country:"Russian Federation",iso_3166_1:"RU"},{start:450560,end:454655,country:"Rwanda",iso_3166_1:"RW"},{start:13156352,end:13157375,country:"Saint Lucia",iso_3166_1:"LC"},{start:770048,end:771071,country:"Saint Vincent and the Grenadines",iso_3166_1:"VC"},{start:9445376,end:9446399,country:"Samoa",iso_3166_1:"WS"},{start:5242880,end:5243903,country:"San Marino",iso_3166_1:"SM"},{start:647168,end:648191,country:"Sao Tome and Principe",iso_3166_1:"ST"},{start:7405568,end:7438335,country:"Saudi Arabia",iso_3166_1:"SA"},{start:458752,end:462847,country:"Senegal",iso_3166_1:"SN"},{start:4980736,end:5013503,country:"Serbia",iso_3166_1:"RS"},{start:475136,end:476159,country:"Seychelles",iso_3166_1:"SC"},{start:483328,end:484351,country:"Sierra Leone",iso_3166_1:"SL"},{start:7766016,end:7798783,country:"Singapore",iso_3166_1:"SG"},{start:5266432,end:5267455,country:"Slovakia",iso_3166_1:"SK"},{start:5270528,end:5271551,country:"Slovenia",iso_3166_1:"SI"},{start:9007104,end:9008127,country:"Solomon Islands",iso_3166_1:"SB"},{start:491520,end:495615,country:"Somalia",iso_3166_1:"SO"},{start:32768,end:65535,country:"South Africa",iso_3166_1:"ZA"},{start:3407872,end:3670015,country:"Spain",iso_3166_1:"ES"},{start:7798784,end:7831551,country:"Sri Lanka",iso_3166_1:"LK"},{start:507904,end:511999,country:"Sudan",iso_3166_1:"SD"},{start:819200,end:823295,country:"Suriname",iso_3166_1:"SR"},{start:499712,end:500735,country:"Swaziland",iso_3166_1:"SZ"},{start:4882432,end:4915199,country:"Sweden",iso_3166_1:"SE"},{start:4915200,end:4947967,country:"Switzerland",iso_3166_1:"CH"},{start:7831552,end:7864319,country:"Syrian Arab Republic",iso_3166_1:"SY"},{start:5328896,end:5329919,country:"Tajikistan",iso_3166_1:"TJ"},{start:8912896,end:8945663,country:"Thailand",iso_3166_1:"TH"},{start:5316608,end:5317631,country:"North Macedonia",iso_3166_1:"MK"},{start:557056,end:561151,country:"Togo",iso_3166_1:"TG"},{start:13160448,end:13161471,country:"Tonga",iso_3166_1:"TO"},{start:811008,end:815103,country:"Trinidad and Tobago",iso_3166_1:"TT"},{start:163840,end:196607,country:"Tunisia",iso_3166_1:"TN"},{start:4947968,end:4980735,country:"Turkey",iso_3166_1:"TR"},{start:6297600,end:6298623,country:"Turkmenistan",iso_3166_1:"TM"},{start:425984,end:430079,country:"Uganda",iso_3166_1:"UG"},{start:5275648,end:5308415,country:"Ukraine",iso_3166_1:"UA"},{start:9003008,end:9007103,country:"United Arab Emirates",iso_3166_1:"AE"},{start:4194304,end:4456447,country:"United Kingdom",iso_3166_1:"GB"},{start:524288,end:528383,country:"United Republic of Tanzania",iso_3166_1:"TZ"},{start:10485760,end:11534335,country:"United States",iso_3166_1:"US"},{start:15269888,end:15273983,country:"Uruguay",iso_3166_1:"UY"},{start:5274624,end:5275647,country:"Uzbekistan",iso_3166_1:"UZ"},{start:13172736,end:13173759,country:"Vanuatu",iso_3166_1:"VU"},{start:884736,end:917503,country:"Venezuela",iso_3166_1:"VE"},{start:8945664,end:8978431,country:"Viet Nam",iso_3166_1:"VN"},{start:8978432,end:8982527,country:"Yemen",iso_3166_1:"YE"},{start:565248,end:569343,country:"Zambia",iso_3166_1:"ZM"},{start:16384,end:17407,country:"Zimbabwe",iso_3166_1:"ZW"},{start:15728640,end:15761407,country:"ICAO (temporary assignments)",iso_3166_1:null},{start:9015296,end:9016319,country:"ICAO (special use)",iso_3166_1:null},{start:15765504,end:15766527,country:"ICAO (special use)",iso_3166_1:null},{start:2097152,end:2621439,country:"Unassigned (AFI region)",iso_3166_1:null},{start:2621440,end:2686975,country:"Unassigned (SAM region)",iso_3166_1:null},{start:5242880,end:6291455,country:"Unassigned (EUR / NAT regions)",iso_3166_1:null},{start:6291456,end:6815743,country:"Unassigned (MID region)",iso_3166_1:null},{start:6815744,end:7340031,country:"Unassigned (ASIA region)",iso_3166_1:null},{start:9437184,end:10485759,country:"Unassigned (NAM / PAC regions)",iso_3166_1:null},{start:11534336,end:12582911,country:"Unassigned (reserved for future use)",iso_3166_1:null},{start:15466496,end:15728639,country:"Unassigned (CAR region)",iso_3166_1:null},{start:13631488,end:14680063,country:"Unassigned (reserved for future use)",iso_3166_1:null},{start:15728640,end:16777215,country:"Unassigned (reserved for future use)",iso_3166_1:null}]};find=function(t){let e=+("0x"+t);for(let t=0;t=this.ranges[t].start&&e<=this.ranges[t].end)return this.ranges[t];return null}}class st{constructor(){this.limitedAlphabet="ABCDEFGHJKLMNPQRSTUVWXYZ",this.fullAlphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.strideMappings=[{start:32785,s1:676,s2:26,prefix:"ZS-"},{start:3735552,s1:1024,s2:32,prefix:"F-G"},{start:3768320,s1:1024,s2:32,prefix:"F-H"},{start:3949601,s1:1024,s2:32,prefix:"D-A",first:"AAA",last:"OZZ"},{start:3932161,s1:676,s2:26,prefix:"D-A",first:"PAA",last:"ZZZ"},{start:3965985,s1:1024,s2:32,prefix:"D-B",first:"AAA",last:"OZZ"},{start:3940353,s1:676,s2:26,prefix:"D-B",first:"PAA",last:"ZZZ"},{start:3981312,s1:676,s2:26,prefix:"D-C"},{start:3998888,s1:676,s2:26,prefix:"D-E"},{start:4016464,s1:676,s2:26,prefix:"D-F"},{start:4034040,s1:676,s2:26,prefix:"D-G"},{start:4051616,s1:676,s2:26,prefix:"D-H"},{start:4069192,s1:676,s2:26,prefix:"D-I"},{start:4490273,s1:1024,s2:32,prefix:"OO-"},{start:4555809,s1:1024,s2:32,prefix:"OY-"},{start:4587520,s1:676,s2:26,prefix:"OH-"},{start:4621345,s1:1024,s2:32,prefix:"SX-"},{start:4785185,s1:1024,s2:32,prefix:"CS-"},{start:4850721,s1:1024,s2:32,prefix:"YR-"},{start:4949025,s1:1024,s2:32,prefix:"TC-"},{start:7603233,s1:1024,s2:32,prefix:"JY-"},{start:7734305,s1:1024,s2:32,prefix:"AP-"},{start:7767073,s1:1024,s2:32,prefix:"9V-"},{start:7832609,s1:1024,s2:32,prefix:"YK-"},{start:8126464,s1:1296,s2:36,prefix:"VH-"},{start:12582913,s1:676,s2:26,prefix:"C-F"},{start:12600489,s1:676,s2:26,prefix:"C-G"},{start:14684225,s1:4096,s2:64,prefix:"LV-"}],this.numericMappings=[{start:1310720,first:0,count:1e5,template:"RA-00000"},{start:721896,first:1e3,count:1e3,template:"CU-T0000"}];for(let t=0;ts.end)continue;let n=t-s.start+s.offset,i=Math.floor(n/s.s1);n%=s.s1;let r=Math.floor(n/s.s2);n%=s.s2;let o=n;if(!(i<0||i>=s.alphabet.length||r<0||r>=s.alphabet.length||o<0||o>=s.alphabet.length))return s.prefix+s.alphabet.charAt(i)+s.alphabet.charAt(r)+s.alphabet.charAt(o)}return null};numericReg=function(t){let e;for(e=0;es.end)continue;let n=t-s.start+s.first+"";return s.template.substring(0,s.template.length-n.length)+n}};nLetters=function(t){return 0==t?"":(--t,this.limitedAlphabet.charAt(Math.floor(t/25))+this.nLetter(t%25))};nLetter=function(t){return 0==t?"":(--t,this.limitedAlphabet.charAt(t))};nReg=function(t){let e=t-10485761;if(e<0||e>=915399)return null;let s="N"+(Math.floor(e/101711)+1);return e%=101711,e<=600?s+this.nLetters(e):(e-=601,s+=Math.floor(e/10111),e%=10111,e<=600?s+this.nLetters(e):(e-=601,s+=Math.floor(e/951),e%=951,e<=600?s+this.nLetters(e):(e-=601,s+=Math.floor(e/35).toFixed(0),e%=35,e<=24?s+this.nLetter(e):(e-=25,s+e.toFixed(0)))))};hlReg=function(t){return t>=7453184&&t<=7454617?"HL"+(t-7453184+29184).toString(16):t>=7454720&&t<=7454873?"HL"+(t-7454720+32768).toString(16):t>=7455232&&t<=7455385?"HL"+(t-7455232+33280).toString(16):null};jaReg=function(t){let e=t-8650752;if(e<0||e>=229840)return null;let s="JA",n=Math.floor(e/22984);if(n<0||n>9)return null;s+=n,e%=22984;let i=Math.floor(e/916);if(i<0||i>9)return null;if(s+=i,e%=916,e<340){return s+=Math.floor(e/34),e%=34,e<10?s+e:(e-=10,s+this.limitedAlphabet.charAt(e))}e-=340;let r=Math.floor(e/24);return s+this.limitedAlphabet.charAt(r)+this.limitedAlphabet.charAt(e%24)}}class nt{constructor(){this.country=new et,this.registration=new st}}var it,rt;function ot(){return(ot=Object.assign||function(t){for(var e=1;e-1?t.split(".")[1].length:0;s.minimumFractionDigits=n,s.maximumFractionDigits=n}return s},ct=["closed","locked","off"],ht=function(t,e,s,n){n=n||{},s=null==s?{}:s;var i=new Event(e,{bubbles:void 0===n.bubbles||n.bubbles,cancelable:Boolean(n.cancelable),composed:void 0===n.composed||n.composed});return i.detail=s,t.dispatchEvent(i),i},ut=function(t){ht(window,"haptic",t)},dt=function(t,e,s,n,i){var r;if(i&&s.double_tap_action?r=s.double_tap_action:n&&s.hold_action?r=s.hold_action:!n&&s.tap_action&&(r=s.tap_action),r||(r={action:"more-info"}),!r.confirmation||r.confirmation.exemptions&&r.confirmation.exemptions.some((function(t){return t.user===e.user.id}))||confirm(r.confirmation.text||"Are you sure you want to "+r.action+"?"))switch(r.action){case"more-info":(r.entity||s.entity||s.camera_image)&&(ht(t,"hass-more-info",{entityId:r.entity?r.entity:s.entity?s.entity:s.camera_image}),r.haptic&&ut(r.haptic));break;case"navigate":r.navigation_path&&(function(t,e,s){void 0===s&&(s=!1),s?history.replaceState(null,"",e):history.pushState(null,"",e),ht(window,"location-changed",{replace:s})}(0,r.navigation_path),r.haptic&&ut(r.haptic));break;case"url":r.url_path&&window.open(r.url_path),r.haptic&&ut(r.haptic);break;case"toggle":s.entity&&(function(t,e){(function(t,e,s){void 0===s&&(s=!0);var n,i=function(t){return t.substr(0,t.indexOf("."))}(e),r="group"===i?"homeassistant":i;switch(i){case"lock":n=s?"unlock":"lock";break;case"cover":n=s?"open_cover":"close_cover";break;default:n=s?"turn_on":"turn_off"}t.callService(r,n,{entity_id:e})})(t,e,ct.includes(t.states[e].state))}(e,s.entity),r.haptic&&ut(r.haptic));break;case"call-service":if(!r.service)return;var o=r.service.split(".",2),a=o[0],l=o[1],c=ot({},r.service_data);"entity"===c.entity_id&&(c.entity_id=s.entity),e.callService(a,l,c,r.target),r.haptic&&ut(r.haptic);break;case"fire-dom-event":ht(t,"ll-custom",r),r.haptic&&ut(r.haptic)}};class _t{constructor(t,e,s,n){this.config=e,this.lang=n;const i=new tt;this._path=i.getPath(),this.hex=t.hex.toUpperCase(),this.icon="mdi:airplane",this.flight=t.flight??null,this.squawk=t.squawk??null,this.altitude=t.altitude??t.alt_baro??null,this.speed=t.speed??t.gs??null,this.track=t.track??null,this.vert_rate=t.vert_rate??t.baro_rate??null,this.lat=t.lat??null,this.lon=t.lon??null,this.seen=t.seen??100,this.aircraft_type=t.t??null;const r=new nt,o=r.country.find(this.hex);this.flag=null!==o&&null!==o.iso_3166_1?`${this._path}images/flags/${o.iso_3166_1.toLowerCase()}.svg`:null,this.country=null!==o?o.country:null;if(void 0!==t.r&&""!==t.r)this.registration=t.r;else{const t=r.registration.lookup(this.hex);this.registration=t}this.distance=s.isSetUp()?s.calculate(this.lat,this.lon):null,this.setIcon(),this.setUnits()}setIcon=function(){this.vert_rate<0?this.icon="mdi:airplane-landing":this.vert_rate>0&&(this.icon="mdi:airplane-takeoff")};setUnits=function(){if("metric"===this.config.units)!0===this.config.larger_units?this.units={altitude:"km",distance:"km",speed:"km/h"}:this.units={altitude:"m",distance:"m",speed:"m/s"},this.units.age="s",!0!==this.config.track_in_text&&(this.units.track="°");else this.units={altitude:"ft",distance:"NM",speed:"kt",track:"°",age:"s"},!0!==this.config.track_in_text&&(this.units.track="°")};value=function(t,e){let s=this,n=this.units[t]??null;switch(t){case"icon":return``;case"flag":return null!==s.flag?`${s.country}`:"";case"icao":return s.hex;case"age":let i=s.seen??"";return""!==i&&e&&(i+=" "+n),i;case"speed":let r=s.speed??"";if(""!==r){if("metric"===this.config.units)r=this.config.larger_units?at(Math.round(1.852*r)):at(Math.round(.514444444*r));r=at(r),e&&(r+=" "+n)}return r;case"altitude":let o=s.altitude??"";if(""!==o){if("metric"===this.config.units)o=this.config.larger_units?Math.round(.3048*o/1e3*10)/10:Math.round(.3048*o);o=at(o),e&&(o+=" "+n)}return o;case"track":let a=s.track??"";return""!==a&&(!0===this.config.track_in_text?a=this.trackAsText(a,e):e&&(a+=""+n)),a;case"registration":return null===s.registration?this.lang.content.table.data.not_available:s.registration;default:let l=s[t]??"";return""!==l&&"number"==typeof l&&(l=at(l)),e&&""!==l&&null!==n&&(l+=" "+n),l}};altitudeAsColor=function(t){let e="EC5B13",s="EC5B13",n=.5;if(t>1e3&&t<=2e3?(s="EC7C13",n=.001*(t-1e3)):t>2e3&&t<=4e3?(e="EC7C13",s="ECC813",n=5e-4*(t-2e3)):t>4e3&&t<=6e3?(e="ECC813",s="BEDF13",n=5e-4*(t-4e3)):t>6e3&&t<=8e3?(e="BEDF13",s="40EC44",n=5e-4*(t-6e3)):t>8e3&&t<=1e4?(e="40EC44",s="11E276",n=5e-4*(t-8e3)):t>1e4&&t<=2e4?(e="11E276",s="13BBDE",n=1e-4*(t-1e4)):t>2e4&&t<=3e4?(e="13BBDE",s="241FEC",n=1e-4*(t-2e4)):t>3e4&&t<=4e4?(e="241FEC",s="EB13EC",n=1e-4*(t-3e4)):t>4e4&&(e="EB13EC",s="EB13EC"),e===s)return e;e=e.match(/.{1,2}/g).map((t=>parseInt(t,16)*(1-n))),s=s.match(/.{1,2}/g).map((t=>parseInt(t,16)*n));let i=[0,1,2].map((t=>Math.min(Math.round(e[t]+s[t]),255))),r=i.reduce(((t,e)=>(t<<8)+e),0).toString(16).padStart(6,"0");return"#"+r};trackAsText=function(t,e){let s="n";return t>=11.25&&t<=33.75?s="nne":t>=33.75&&t<=56.25?s="ne":t>=56.25&&t<=78.75?s="ene":t>=78.75&&t<=101.25?s="e":t>=101.25&&t<=123.75?s="ese":t>=123.75&&t<=146.25?s="se":t>=146.25&&t<=168.75?s="sse":t>=168.75&&t<=191.25?s="s":t>=191.25&&t<=213.75?s="ssw":t>=213.75&&t<=236.25?s="sw":t>=236.25&&t<=258.75?s="wsw":t>=258.75&&t<=281.25?s="w":t>=281.25&&t<=303.75?s="wnw":t>=303.75&&t<=326.25?s="nw":t>=326.25&&t<=348.75&&(s="nnw"),e?this.lang.content.track.long[s]:this.lang.content.track.short[s]}}var pt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},gt={},ft=pt&&pt.__spreadArrays||function(){for(var t=0,e=0,s=arguments.length;e{if(!this.merged.availableColumns.hasOwnProperty(e))throw new Error("Column '"+e+"' does not exist");t+=this.merged.availableColumns[e].weight})),t>15&&(this.error="Too many columns defined")}else this.error="Order '"+this.merged.order+"' is not supported";else this.error="Unit '"+this.merged.units+"' is not supported";else this.error="You need to define and entity";return""===this.error}}class wt{constructor(t,e){this.config=t,this.zone=t.zone,this.units=t.units,this.hass=e,null!==this.zone&&this.getCoordinatesOfZone()}isSetUp=function(){return this.hasOwnProperty("lat")&&this.hasOwnProperty("lon")};getCoordinatesOfZone=function(){let t=this.hass.states[this.zone];void 0!==t&&(this.lat=t.attributes.latitude,this.lon=t.attributes.longitude,this.config.distance=!0)};calculate=function(t,e){if(null===t||null===e)return"";if(t===this.lat&&e===this.lon)return 0;let s=this.lat*(Math.PI/180),n=t*(Math.PI/180),i=n-s,r=(e-this.lon)*(Math.PI/180),o=12742142*Math.asin(Math.sqrt(Math.sin(i/2)*Math.sin(i/2)+Math.cos(s)*Math.cos(n)*Math.sin(r/2)*Math.sin(r/2)));switch(o=Math.round(o),this.units){case"metric":this.config.larger_units&&(o=Math.round(o/1e3*10)/10);break;case"default":o=Math.round(.000539956803*o*10)/10}return o}}var $t={table:{head:{icao:"ICAO Code",country:"Land",registration:"Registration",flight:"Flug",squawk:"Squawk",altitude:"Höhe",speed:"Geschwindigkeit",distance:"Entfernung",track:"Richtung",age:"Letzte Nachricht",aircraft_type:"Typ"},data:{not_available:"N/V",none:"Keine Flugzeuge erkannt!",undefined:"Die konfigurierte Entität enthält keine Daten!"}},popup:{table:{head:{property:"Eigenschaft",value:"Wert"}}},track:{short:{n:"N",nne:"NNO",ne:"NO",ene:"ONO",e:"O",ese:"OSO",se:"SO",sse:"SSO",s:"S",ssw:"SSW",sw:"SW",wsw:"WSW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"Nord",nne:"Nord-Nord-Ost",ne:"Nord-Ost",ene:"Ost-Nord-Ost",e:"Ost",ese:"Ost-Süd-Ost",se:"Süd-Ost",sse:"Süd-Süd-Ost",s:"Süd",ssw:"Süd-Süd-West",sw:"Süd-West",wsw:"West-Süd-West",w:"West",wnw:"West-Nord-West",nw:"Nord-West",nnw:"Nord-Nord-West"}}},At={table:{head:{icao:"ICAO Code",country:"Country",registration:"Registration",flight:"Flight",squawk:"Squawk",altitude:"Altitude",speed:"Speed",distance:"Distance",track:"Track",age:"Last message",aircraft_type:"Type"},data:{not_available:"N/A",none:"No aircrafts detected!",undefined:"The configurated entity doesn't contain data!"}},popup:{table:{head:{property:"Property",value:"Value"}}},track:{short:{n:"N",nne:"NNE",ne:"NE",ene:"ENE",e:"E",ese:"ESE",se:"SE",sse:"SSE",s:"S",ssw:"SSW",sw:"SW",wsw:"WSW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"North",nne:"North-northeast",ne:"Northeast",ene:"East-northeast",e:"East",ese:"East-southeast",se:"Southeast",sse:"South-southeast",s:"South",ssw:"South-southwest",sw:"Southwest",wsw:"West-southwest",w:"West",wnw:"West-northwest",nw:"Northwest",nnw:"North-northwest"}}},St={table:{head:{icao:"ICAO-tunnus",country:"Maa",registration:"Rekisteröinti",flight:"Lento",squawk:"Tunniste",altitude:"Korkeus",speed:"Nopeus",distance:"Etäisyys",track:"Lentorata",age:"Viimeisin viesti",aircraft_type:"Tyyppi"},data:{not_available:"Ei saatavilla",none:"Ei havaittuja lentoaluksia!",undefined:"Määritys ei sisällä dataa!"}},popup:{table:{head:{property:"Kenttä",value:"Arvo"}}},track:{short:{n:"N",nne:"NNE",ne:"NE",ene:"ENE",e:"E",ese:"ESE",se:"SE",sse:"SSE",s:"S",ssw:"SSW",sw:"SW",wsw:"WSW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"Pohjoinen",nne:"Pohjoiskoillinen",ne:"Koillinen",ene:"Itäkoillinen",e:"Itä",ese:"Itäkaakko",se:"Kaakko",sse:"Eteläkaakko",s:"Etelä",ssw:"Etelälounas",sw:"Lounas",wsw:"Länsilounas",w:"Länsi",wnw:"Länsiluode",nw:"Luode",nnw:"Pohjoisluode"}}},Et={table:{head:{icao:"ICAO code",country:"Land",registration:"Registratie",flight:"Vlucht",squawk:"Squawk",altitude:"Hoogte",speed:"Snelheid",distance:"Afstand",track:"Richting",age:"Laatste bericht",aircraft_type:"Type"},data:{not_available:"Nb",none:"Geen vliegtuigen gedetecteerd!",undefined:"De ingestelde entiteit bevat geen data!"}},popup:{table:{head:{property:"Eigenschap",value:"Waarde"}}},track:{short:{n:"N",nne:"NNO",ne:"NO",ene:"ONO",e:"O",ese:"OZO",se:"ZO",sse:"ZZO",s:"Z",ssw:"ZZW",sw:"ZW",wsw:"WZW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"Noord",nne:"Noordnoordoost",ne:"Noordoost",ene:"Oostnoordoost",e:"Oost",ese:"Oostzuidoost",se:"Zuidoost",sse:"Zuidzuidoost",s:"Zuid",ssw:"Zuidzuidwest",sw:"Zuidwest",wsw:"Westzuidwest",w:"West",wnw:"Westnoordwest",nw:"Noordwest",nnw:"Noordnoordwest"}}},xt={table:{head:{icao:"Kod ICAO",country:"Kraj",registration:"Rejestracja",flight:"Lot",squawk:"Squawk",altitude:"Wysokość",speed:"Prędkość",distance:"Dystans",track:"Kierunek",age:"Ostatnia wiadomość",aircraft_type:"Typ"},data:{not_available:"N/D",none:"Brak wykrytych statków powietrznych!",undefined:"Skonfigurowany obiekt nie zawiera danych!"}},popup:{table:{head:{property:"Właściwość",value:"Wartość"}}},track:{short:{n:"N",nne:"NNE",ne:"NE",ene:"ENE",e:"E",ese:"ESE",se:"SE",sse:"SSE",s:"S",ssw:"SSW",sw:"SW",wsw:"WSW",w:"W",wnw:"WNW",nw:"NW",nnw:"NNW"},long:{n:"Północ",nne:"Północ-północny wschód",ne:"Północny wschód",ene:"Wschód-północny wschód",e:"Wschód",ese:"Wschód-południowy wschód",se:"Południowy wschód",sse:"Południowy-południowy wschód",s:"Południe",ssw:"Południowy-południowy zachód",sw:"Południowy zachód",wsw:"Zachód-południowy zachód",w:"Zachód",wnw:"Zachód-północny zachód",nw:"Północny zachód",nnw:"Północ-północny zachód"}}},Ct={table:{head:{icao:"ICAO naslov",country:"Država",registration:"Registracija",flight:"Št. leta",squawk:"Squawk",altitude:"Višina",speed:"Hitrost",distance:"Razdalja",track:"Smer",age:"Zaznano pred",aircraft_type:"Vrsta"},data:{not_available:"N/A",none:"Ni zaznanih letal!",undefined:"Konfigurirana entiteta ne vsebuje podatkov!"}},popup:{table:{head:{property:"Karakteristika",value:"Vrednost"}}},track:{short:{n:"S",nne:"SSV",ne:"SV",ene:"VSV",e:"V",ese:"VJV",se:"JV",sse:"JJV",s:"J",ssw:"JJZ",sw:"JZ",wsw:"ZJZ",w:"Z",wnw:"ZSZ",nw:"SZ",nnw:"SSZ"},long:{n:"sever",nne:"sever-severovzhod",ne:"severovzhod",ene:"vzhod-severovzhod",e:"vzhod",ese:"vzhod-jugovzhod",se:"jugovzhod",sse:"jug-jugovzhod",s:"jug",ssw:"jug-jugozahod",sw:"jugozahod",wsw:"zahod-jugozahod",w:"zahod",wnw:"zahod-severozahod",nw:"severozahod",nnw:"sever-severozahod"}}};class Nt{constructor(t,e){this.config=t,this.hass=e,this.content=At,this.setLang()}setLang=function(){if(null===this.config.lang&&(this.config.lang=this.hass.language),"en"!==this.config.lang)switch(this.config.lang){case"de":this.content=$t;break;case"fi":this.content=St;break;case"nl":this.content=Et;break;case"pl":this.content=xt;break;case"sl":this.content=Ct}}}function*kt(t,e){if(void 0!==t){let s=0;for(const n of t)yield e(n,s++)}}const Mt=2;class Ot{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,s){this._$Ct=t,this._$AM=e,this._$Ci=s}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}class Pt extends Ot{constructor(t){if(super(t),this.it=W,t.type!==Mt)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===W||null==t)return this._t=void 0,this.it=t;if(t===U)return t;if("string"!=typeof t)throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;const e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}}Pt.directiveName="unsafeHTML",Pt.resultType=1;const Rt=(t=>(...e)=>({_$litDirective$:t,values:e}))(Pt);class Tt{constructor(t,e,s,n,i){this.hass=t,this.config=e,this.lang=s,this.row=n,this.aircraft=i,this.show()}show=function(){const t=this;fetch("https://api.planespotters.net/pub/photos/hex/"+this.aircraft.hex,{cache:"no-store",headers:{"Content-Type":"text/json"}}).then((t=>t.text())).then((function(e){let s,n=JSON.parse(e),i="",r=t.aircraft.registration||t.aircraft.flight||t.aircraft.hex;if(s=t.aircraft.registration&&t.aircraft.flight||t.aircraft.hex,n.photos.length>0){let t=n.photos[0].thumbnail_large.src,e=n.photos[0].link,s=n.photos[0].photographer;i+=`![${r} - © ${s}](${t} "${r} - © ${s}")`,i+=`© [${s}](${e})\n\n`}i+="## ",t.aircraft.flag&&(i+=``),i+=`${s}${t.aircraft.value("icon",!0)}\n`,i+=`|${t.lang.popup.table.head.property}|${t.lang.popup.table.head.value}|\n|:-|-:|\n`,Object.keys(vt).forEach((e=>{let s=vt[e],n=t.aircraft.value(e,!0);s.popup&&""!==n&&(i+=`|${t.lang.table.head[e]}|${n}|\n`)}));const o=t.config.colors.popup_bg??"var(--card-background-color)",a=t.config.colors.popup_text??t.config.colors.table_text??"var(--primary-color)",l=t.config.colors.popup_text??t.config.colors.table_text??"var(--primary-color)",c=t.config.colors.popup_table_head_bg??t.config.colors.table_head_bg??"var(--primary-color)",h=t.config.colors.popup_table_head_text??t.config.colors.table_head_text??"var(--app-header-text-color, white)",u=t.config.colors.popup_text??t.config.colors.table_text??"var(--primary-text-color)",d=t.config.colors.popup_table_even_row_bg??t.config.colors.table_even_row_bg??"var(--primary-background-color)",_=t.config.colors.popup_table_even_row_text??t.config.colors.table_even_row_text??"var(--primary-text-color)";dt(t.row,t.hass,{tap_action:{action:"fire-dom-event",browser_mod:{service:"browser_mod.popup",data:{hide_header:!0,style:`--mdc-theme-surface:${o};`,title:r,content:{type:"markdown",content:i,card_mod:{style:{".":`ha-card.type-markdown{border:none;}ha-markdown{background:${o};}ha-markdown a{color:${l}};ha-markdown.no-header{padding-top:0 !important;}`,"ha-markdown$":`img{width:100%}img + span{color:${a};font-size:10px;}img + span a{color:${a}}h2{display:flex;justify-content:space-between;color:${a};}h2 img{width:auto;height:.8em;margin:0 10px 0 0;display:inline-block;vertical-align:baseline;}table{width:100%;border-spacing:0;border-collapse:collapse;}table tr th, table tr td{padding:4px;}table tr th{background-color:${c};color:${h};}table tr{color:${u};}table tr:nth-child(even){background-color:${d};color:${_};}`}}}}}}})}))}}customElements.define("fr24-table",class extends Q{static get properties(){return{hass:{type:Object},config:{type:Object},aircrafts:{type:Array},lang:{type:Object}}}constructor(){super()}render(){let t=[];this.config.columns.forEach((e=>{let s=vt[e];if(!1===s.show)return;let n=this.lang.table.head[e]??"";t.push({value:n,styles:s.styles??[]})}));let e=[];if(!0===this.config.units_in_table){let t=this.aircrafts[0];this.config.columns.forEach((s=>{let n=vt[s];if(!1===n.show)return;let i=t.units[s]??"";e.push({value:i,styles:n.styles??[]})}))}let s=[],n=0;for(let t of this.aircrafts){let e=[];this.config.columns.forEach((s=>{let n=vt[s];!1!==n.show&&e.push({value:t.value(s),html:n.html??!1,styles:n.styles??[]})}));let i={};if(this.config.popup&&(i.hex=t.hex),s.push({cells:e,attrs:i}),n++,Number.isInteger(this.config.limit)&&this.config.limit===n)break}return T`${kt(t,(t=>T``))}${e.length>0?T`${kt(e,(t=>T``))}`:""}${kt(s,(t=>T`${kt(t.cells,(t=>T``))}`))}
${t.value}
${t.value}
${t.html?T`${Rt(t.value)}`:T`${t.value}`}
`}_handleClick(t){if(this.config.popup){let e=t.target.closest("tr");if(e){let t=e.getAttribute("data-hex"),s=null;for(let e=0;e:host{--fr24-warning-bg:${null!==this.config.colors.table_even_row_bg?this.config.colors.table_even_row_bg:"var(--primary-background-color)"}--fr24-warning-text:${null!==this.config.colors.table_even_row_text?this.config.colors.table_even_row_text:"var(--primary-text-color)"}}
${this.message}
`}static get styles(){return r`div{padding:4px;background-color:var(--fr24-warning-bg);color:var(--fr24-warning-text);text-align:center}`}}),window.customCards=window.customCards||[],window.customCards.push({type:"fr24-card",name:"Flight Radar card",description:"Card that shows the tracked flights",preview:!1}),window.fr24db=[];customElements.define("fr24-card",class extends Q{static get properties(){return{hass:{},config:{}}}render(){if(this._isStateUndefined=!1,this._distance=new wt(this.config,this.hass),this._lang=new Nt(this.config,this.hass),this.config.entity){this._parseAircrafts();let t=null;return this._isStateUndefined?t=this._lang.content.table.data.undefined:this._aircrafts.length<1&&(t=this._lang.content.table.data.none),null!==t?T`
`:T`
`}return T`Entity not set`}setConfig(t){const e=new tt;if(this._path=e.getPath(),0===window.fr24db.length){const t=document.createElement("script");t.setAttribute("async",""),t.setAttribute("type","text/javascript"),t.setAttribute("src",this._path+"fr24_database.js"),document.head.appendChild(t)}let s=new mt(t);if(!s.validate())throw new Error(s.error);this.config=s.get()}getCardSize(){return Number.isInteger(this.config.limit)?this.config.limit+5:100}static getStubConfig(){return{entity:"sensor.fr24_aircraft"}}_parseAircrafts(){const t=this;if(this._aircrafts=[],void 0===this.hass.states[this.config.entity])return void(this._isStateUndefined=!0);const e=this.hass.states[this.config.entity].attributes[this.config.attribute];this.config.availableColumns.distance.show=!1,!0===this.config.distance&&(this.config.availableColumns.distance.show=!0),e.forEach((t=>{let e=new _t(t,this.config,this._distance,this._lang),s=!0;if(!1!==this.config.hide.old_messages&&e.seen>30)s=!1;else if(this.config.hide.empty.length>0)for(let t=0;t1&&(this._aircrafts.sort((function(e,s){let n=t.config.sort||"altitude",i=e[n],r=s[n];return i===r?0:null===i||""===i?1:null===r||""===r||i
![Example of the popup][img_popup] | -| `sort` | `string` | `altitude` | Any column, see [columns](#columns) | The data in the table is by default sorted on the altitude, with this option you can set a different column, for example `flight`. | -| `title` | `string` | `null` | | Title of the card. | -| `track_in_text` | `boolean` | `false` | `true`, `false` | By default the reported track of the aircraft is displayd in degrees `°`. With this option set to `true` the track is displayed in text. When displayed in text, it's an abbreviation in the table and full text in the popup. | -| `units_in_table` | `boolean` | `false` | `true`, `false` | When this option is set to `true`, the table header will be appended with a second row containing the units.

![Units in the table header][img_units] | -| `units` | `string` | `default` | `default`, `metric` | Sets the units for the values. The `default` units are as they are returned by Dump1090 (`ft` for altitude, `NM` for distance, `kt` for speed). When using `metric` the value and units are converted (`m` for altitude and distance, `m/s` for speed). | -| `zone` | `string` | `null` | Any sensor that is a zone, example `zone.home` | The distance between Home Assistant and the reported position of the aircraft is calculated using the position of a zone. If you don't set a `zone` the data doesn't have the distance. | +| Option | Type | Default | Accepted | Description | +| :--------------- | :-------- | :----------------------------------------------------------------------------- | :------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `attribute` | `string` | `aircraft` | An attribute of the sensor | By default the card will read the aircrafts from the sensors `aircraft` attribute. If your sensor uses a different attribute, change this value to the name of your attribute. | +| `colors` | `object` | | | Used to overwrite the default color scheme of the card. See [Colors](#colors). | +| `columns` | `array` | `["flag", "registration", "flight", "altitude", "speed", "distance", "track"]` | Array with any of the columns, see [Columns](#columns) | Array containing the columns to show in the table. The data of the other columns is available in the popup, if that is enabled. Too many columns will break your Dashboard, so the card will give a warning if too many columns are added. | +| `hide` | `object` | | | Used to configure which data is hidden. See [Hide](#hide). | +| `lang` | `string` | `null` | Any supported language, see the [lang folder](src/javascript/lang/) | Sets the display language of the data. By default the `hass` object of your browser will be used to set the language. If that language is not available, English will be used. The registered country is always in English. | +| `larger_units` | `boolean` | `false` | `true`, `false` | When using `metric` units, and this option set to `true`, the units are converted to `km` for altitude and distance and `km/h` for speed. | +| `limit` | `number` | `null` | A positive integer | Used to limit the number of results in the table. | +| `order` | `string` | `asc` | `asc`, `desc` | Sort order of the data. Ascending (`asc`, smallest value first) or descending (`desc`, largest value first). | +| `popup` | `boolean` | `false` | `true`, `false` | Enables or disables the popup. The popup requires both [browser_mod][browser_mod] and [card-mod][card_mod]. The popup can be opened by clicking on a row and contains more data of the aircraft, including a photo of the aircraft provided by [Planespotters.net][planespotters].

![Example of the popup][img_popup] | +| `sort` | `string` | `altitude` | Any column, see [columns](#columns) | The data in the table is by default sorted on the altitude, with this option you can set a different column, for example `flight`. | +| `title` | `string` | `null` | | Title of the card. | +| `track_in_text` | `boolean` | `false` | `true`, `false` | By default the reported track of the aircraft is displayd in degrees `°`. With this option set to `true` the track is displayed in text. When displayed in text, it's an abbreviation in the table and full text in the popup. | +| `units_in_table` | `boolean` | `false` | `true`, `false` | When this option is set to `true`, the table header will be appended with a second row containing the units.

![Units in the table header][img_units] | +| `units` | `string` | `default` | `default`, `metric` | Sets the units for the values. The `default` units are as they are returned by Dump1090 (`ft` for altitude, `NM` for distance, `kt` for speed). When using `metric` the value and units are converted (`m` for altitude and distance, `m/s` for speed). | +| `zone` | `string` | `null` | Any sensor that is a zone, example `zone.home` | The distance between Home Assistant and the reported position of the aircraft is calculated using the position of a zone. If you don't set a `zone` the data doesn't have the distance. | ## Colors @@ -146,13 +147,35 @@ The card supports the following columns. Because there are many different format | `flag` | Flag of the country of registration | | | `flight` | Flight number | | | `icao` | ICAO code of the aircraft | | -| `icon` | Icon for the aircraft | Unique colored based on the hex (`icao`) of the aircraft. Uses the vertical state of the aircraft for different icons. | +| `icon` | Icon for the aircraft | Icon representing altitude and vertical state of the aircraft. See [Icon](#icon). | | `registration` | Registration code of the aircraft | The registration of the aircraft is calculated based on the reported ICAO code. However, some of the JSON files contain the registration. If the registration is found in the JSON, this data is used. See issue [#15][i15]. | | `speed` | Reported speed | | | `squawk` | Squawk code | | | `track` | Reported track | | -All of the columns, except for `icon` are shown in the popup. +### Icon + +The icon of an aircraft is based on the value of two elements in the aircraft data: + +1. `vert_rate` - + The vertical rate of the aircraft is used for the icon. An aircraft taking off is indicating with an icon where the cockpit rises up, while a landing aircraft has the cockpit pointing down. When an aircraft has no `vertical_rate`, or the value equals `0`, the icon is a top-down view of an aircraft. +2. `altitude` - + The altitude of the aircraft is used for the color of the icon. When an aircraft is within the range the color is calculated as difference between the colors. This way an aircraft flying at 9000 ft has a slightly different color than an aircraft at 9500 ft. + +| Altitude range in ft (min - max) | Color | +| :------------------------------- | :------------------------------------------------------------------------------ | +| < 1000 | `#EC5B13` ![#EC5B13][img_color_EC5B13] | +| 1000 - 2000 | `#EC5B13` ![#EC5B13][img_color_EC5B13] - `#EC7C13` ![#EC7C13][img_color_EC7C13] | +| 2000 - 4000 | `#EC7C13` ![#EC7C13][img_color_EC7C13] - `#ECC813` ![#ECC813][img_color_ECC813] | +| 4000 - 6000 | `#ECC813` ![#ECC813][img_color_ECC813] - `#BEDF13` ![#BEDF13][img_color_BEDF13] | +| 6000 - 8000 | `#BEDF13` ![#BEDF13][img_color_BEDF13] - `#40EC44` ![#40EC44][img_color_40EC44] | +| 8000 - 10000 | `#40EC44` ![#40EC44][img_color_40EC44] - `#11E276` ![#11E276][img_color_11E276] | +| 10000 - 20000 | `#11E276` ![#11E276][img_color_11E276] - `#13BBDE` ![#13BBDE][img_color_13BBDE] | +| 20000 - 30000 | `#13BBDE` ![#13BBDE][img_color_13BBDE] - `#241FEC` ![#241FEC][img_color_241FEC] | +| 30000 - 40000 | `#241FEC` ![#241FEC][img_color_241FEC] - `#EB13EC` ![#EB13EC][img_color_EB13EC] | +| > 40000 | `#EB13EC` ![#EB13EC][img_color_EB13EC] | + +![Example of the icons][img_icons] ## Hide @@ -238,3 +261,14 @@ Honor where credit is due. This card could not have been made without consulting [img_popup]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/popup.png?raw=true "Example of the popup" [img_screenshot]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/fr24card.png?raw=true "Screenshot of FR24 card in action" [img_units]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/units.png?raw=true "Units in the table header" +[img_icons]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/icons.png?raw=true "Different colored icons" +[img_color_EC5B13]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/EC5B13.png?raw=true "Example of color #EC5B13" +[img_color_EC5B13]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/EC5B13.png?raw=true "Example of color #EC5B13" +[img_color_EC7C13]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/EC7C13.png?raw=true "Example of color #EC7C13" +[img_color_ECC813]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/ECC813.png?raw=true "Example of color #ECC813" +[img_color_BEDF13]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/BEDF13.png?raw=true "Example of color #BEDF13" +[img_color_40EC44]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/40EC44.png?raw=true "Example of color #40EC44" +[img_color_11E276]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/11E276.png?raw=true "Example of color #11E276" +[img_color_13BBDE]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/13BBDE.png?raw=true "Example of color #13BBDE" +[img_color_241FEC]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/241FEC.png?raw=true "Example of color #241FEC" +[img_color_EB13EC]: https://raw.githubusercontent.com/fratsloos/fr24_card/master/readme/images/color/EB13EC.png?raw=true "Example of color #EB13EC" diff --git a/readme/images/color/11E276.png b/readme/images/color/11E276.png new file mode 100644 index 0000000000000000000000000000000000000000..ab24b1797cdc728c30bec2cd8c2c9b3fe730497a GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^{2&4b~!1|q8p;J)`{i(+#?OA z9t!dwdUy8C8{Kl@W!s--$DifjzR*EWxYRVzH%X^ZJL19CQ{MCcy6Xw*MfYCbGFRoK zSJ_+{<0B^u=N#N=dArg3=*kau@sqEWHa`$f+GnveNS@b1`s=QVUGeI5W(r+Mt z`ZvX8iTM3Bwda#nUDxfs5b;p!&Z>!<8ZKzsv@bp9;oLqsSvi|=;o*}84i8yn^>j4W zoMCBfdaBaTWj3K)Pd~L}QN3*2M$WM2rz%^01)g4O(Gyj6WRCEAV>eAd<hG>Y+ zoqUk^RaR$MZ-QpJ}9ZlzgLI){|jC^khj$=Prvai0u5!X{$;F22(%Lc(-< z%CrC5ci;Sb`pd^Np{X0s9(S2Fp~&A;+NVbG8nfW?&53(v8H=kPdg@+1z5Jbd?CPxT zZ$j^%sp-kGvEqHiGppUULid~3l~qhvZ!tb!p;ybJ5V30hM{WV;M5Z4H3yUZF-U*t1 zRdUU(zlTEpJc~HDU|nZIc=N2QC37BF=)`-ltN)X6UUiXK{XB!jxe0HY9-H-Co{;w4 zLez!t5Qi8SRRr6_g1m9p3I+?JU=)I6at>EelF{r G5}E*jdWAIr literal 0 HcmV?d00001 diff --git a/readme/images/color/241FEC.png b/readme/images/color/241FEC.png new file mode 100644 index 0000000000000000000000000000000000000000..b1c9f8bf8fb395ae9377913f1a5e121388c5e5c5 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^{21LhG>W` zoxGoq(NW-7dRxn+j(Kfy9pZwHB708Sc6GUw%yUw@zIqDR$K@_JOz)pkixGM4Q&_#( zdjHIm=eGOgi@Am^n;d+7lH`P?YKGHK++sFdJ2S;fLiBmykz>kl>R){={#v+G|4ROk zz53a6PNrMW_D$?IW@k3J{`*vvRz0KLwi%iFJ9DHtS=KH};^@%naJI2n7usi=eD;lU zZG*B-ZQ*obfjK;k>hHoPt1IsFbG~EY)HK=9%5CkMVxQzwnW<6B6AyAunaswfK4H$G zkNuoU1^+d9MCV=!DPoj85;yAsi@byo&+(;VQx^Y<&GNQR+qX9?DoOtNzrcn{rd?}t Uj1_`I4ME}I>FVdQ&MBb@0E^ayxBvhE literal 0 HcmV?d00001 diff --git a/readme/images/color/40EC44.png b/readme/images/color/40EC44.png new file mode 100644 index 0000000000000000000000000000000000000000..56a78727009fc7a5bbea188da3f0290b0661b27c GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^{2}@J}u4lcHBk2Q|UhI^AYm$u~*C;Z- zRIymtXz+R8{FC1I#Ft%L+B50uyTAJ`r6oRWnVFQFk^H?<v6c k!)I8-t{gbHdp^@VdvVJokwY9y{(}O?)78&qol`;+08Y-CkN^Mx literal 0 HcmV?d00001 diff --git a/readme/images/color/BEDF13.png b/readme/images/color/BEDF13.png new file mode 100644 index 0000000000000000000000000000000000000000..b90794ba0a9585ffdc04a6a5cdf3979c87ff1705 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^{2Y+ z4Zh3UWFW9lTY14p(QpGbyH^6oG>k1+oGqBuj>%qe7k8Si|TgYbc@os^^K_<4fi;~2ZuQi@~b@h1rn(ZM8(b^B@X0dB8 zUUg%233pO+aA~nzNbRn4PFo{&-uWB9zgTkH@y8i$hPPhgs}CM*T&lN@d76|yk8ewosPB(^{LGW%Y+ zo$SkX$UvYq-R*AlsvY0B7F7ree&w-s;eRM8a%ApufhFMuno42UvxGkfasOjsJF`gf z{aJI)liHVWZ&*3?^dBR$l(cCp&QD7|{q2m4wPK`;=axrPd|NH{%3MFUwOU^;d()NG zTjtNy%)at!@w1IP+n+xa-%*$T+aLW`6dY)next2DALoK z8TRMl?kf4vj(T+-gGFs8R;p`ke!G~{@54cd<}e}t2{LK7cDS*t?fZFi?ZU(B>$nX3 X-yX_Rkk=J_1qu*PS3j3^P6ZGmN;IA}KU~Z|b;mpddrjbDs$F4b*6>>|RZMO+`Tavu- zj?Wg|;Fa++WxqcVD$csIV&gpH8fF)D-3!i)#{w_+h(5T_*(@38{A7-LMY?sTTFs6PDGM5|&nuZIqr2(a`vnL0Cm)lusQ4Xx a;0selX0DRP{reT5K=E|-b6Mw<&;$UQ)r;x? literal 0 HcmV?d00001 diff --git a/readme/images/color/EC7C13.png b/readme/images/color/EC7C13.png new file mode 100644 index 0000000000000000000000000000000000000000..b659f99b3812ab305ccb6f02c76f0cf935c30c39 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^{2+MaqPiU;$+vKvxgF`L-0~a%MT;jO}0-HXIEIK2)NrY2syWsIn^{*Y0 z_%%K9tA73eb=CK~^ojn3k`twugla^M0gW9SaoGEWz(%v3>!W;SQ?Q4gxg)_eW zTK@i1tPA^8vGW?U)*id;yzB1*@k84mTw>o{_#p1!@_d6N<_{}&2k-k;eSC%EL=$!A zHI)L6!Y zik7AGmKr|qn3KMALs$K84W?Bh|Gj72k8N2YX!)C^@oj@zv0{v=LXnDlLu>vP#wRCc gX21HfdVbSP?gfVv_m_7CE&+v$r>mdKI;Vst06Gqv3;+NC literal 0 HcmV?d00001 diff --git a/readme/images/color/ECC813.png b/readme/images/color/ECC813.png new file mode 100644 index 0000000000000000000000000000000000000000..4617b330b318d3ad452647bce95eb0cfbfdf08cc GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^{2Y+ zoqU(`kb^)=xw)o8;K!R{DhbL;S-fHsmDV^q=BP+qYC5mxAHBz9~P_uC3&F`|IMf12W>Ghps-F*`uz1w%^5S?Urw| zH&1A;%rCQCoSw)XG;hMI6}%=Q&$2xZ@-VYRZ;k)LXn6d`1NP(JFBe2U*_D5$e45Y) zuT%3Mo0#)HIMNZg`C+7c)8h{&*K-~$u{j=fcsWCR?sB_leEpn#o__9!H5-Lp&ZVdp z@5*L7mlLw^?_7fe9a2iq?=_w*lk_c^-`)7=dh}PehiTasdZ&}Gf_(4k>gTe~DWM4f Do4JZy literal 0 HcmV?d00001 diff --git a/readme/images/icons.png b/readme/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..841fedef10ac4dd9c55c7dc14b7bff4a488db00e GIT binary patch literal 93141 zcmb@u1yCMM+qQ|j26qeY7Thg31iNty?iSqLLxMX&gA?2xg1fuByYJ+Ex5z zHdJbcwyXQXyAfzenu^I@_un-ed zk`@yqRdTd5wXik;1EYzv`PwQgYKYnAo0#)iRjCG-48_|J-A75=BoGtDNPd(wUsq} z{~5sa$RzNSJ{PXeVPoDflta+4y=9l$VCDYqBsCL1pppHdc=7tn=cG%x>kN+82^>vh=yG})_L{87Ma$bR z+m1B@4ZJ1=`70MlLX2|Q+atXI^Z4- z3gvkm%FblxXvWOS!^6YO!p6+T#t5WfbaJ1~UJN zVP<7wVgBE;Ia`?iKVOoIMvl9Pq|f13OsG5;gypC<4sI$8kM z4FC90kd>eL{|Ng#JwNjw2mcR;|J9rS2?e@S5P_fh-=QIh@B)dG1qLPzCM_IQzS z3+sg`f#Zut>OU@erj~z)f`9<`QJMA!NdWmR3?0H3<*IBDTBSd9XN=zuQqopBiKgpS zZ9iwx`Lh@56calqMtj#rzSXA}rg}bhKEA80l)2pzN+}tc2oc-;=ZCBKuV00AV(c># z6L$-0KEp!<_>q#r!9fHFtD}X5g=OnBIx2tu{9Zyzs>DihY|oyug{){SohLWw16?;P z))uAcKk5BQ*9o8uFuR3Aa-vW_+vJD_FC#bg7(r(?03NkW3zER539h@DLNn=1kfr|*Ep#hgSGBDZa{fXRoE;~Jw z;H9b}voY%ui`bLF*u{ig_0xX(fmUkAR9e4SAL)J5=)=+y;Yp<0w; z?%({k6krQTcs8|d3Fjd~D{A7}w_Ms<|8d!$R_QFj2}^3<{fQLE+3+?|L^^2w+o9*= zV0g%yWdqJ>LwfZg;%(4>x6glF6pW4c`x0UMDLMLXC#TXR{@)E35vBmcvw3lMG;u$Y zd%*tJBmV1B!a=U*v2is@|8WqI++J8Xs2-Bgk>VfsLJ2{Tw*>k|^=6}e6`{2UjH=8p!l2(5MG69?=IaiDf*rpGcHaEM)GAHl8hwKZOx>_^td z{QuEark_C>60Q^9duMaNc(x2@nh)`gOdhu25*$3iO+y7W23 zn{kQgTV8ehcEN>A(eJL!S(Qx1SK5~$xqGw^UC?w{T+}mk4$349?=k|*x1P)uQk#V; zZG1`<^n%}9Ox!=gnIJ-dVxiOB!oTW$4R#}?;Z;Q8M5U@9AqksvzlmvCF5oK>r}J?U z^8A`@0Q!kTe~_ItOQ~{U$N%PN!ad?*cYj~cH#X6~^l5)>>!W$UyQ zs_u4;U@=Q`$-`$WgqL&u2+O{&eeMU1i^|iXINfV__{O$%AxDYB5;qZ&JsW|S;=`s{*{D$4LzjXUSJk1rk^!1x1 z8b5d~V!l()td}?G1%%D8IYuTrf*{o3Ilg756)hL)(zotCc6Za|9b)@io#=3SFdM&u7k6!y&0Ven=7oW`BAU6!MzHj zVXI$zrVksc#lucD_`as>LUUgDXZ_exp1Ur>mM8?Ya|r|Tp(%T%+l~8*2z(nh&{j_i z&b0ljIuda$zkQG5vr@5}=TCzB$$#!;IardlEYOh%c)8?hLSt*7n?f+YhUKaZz{s0p zWt@I6%h67Rbr9KmR*k}0)6872eE%xwkZJqMp4nHa4SSG{n!26qLkq8(x)OHAF)Y=* z#jLdR%%eG;E_ov-4qZ;OM6i4GGO-Fpf~r zT^W|+6d#^#N7_&!d(IhKP<1V%lGiwnfet6d8xwXHD$8pt_WN-i?A1VmoqU`lon-`` zOh=K%!P0UDE-J)Cp~b;v~naG!TfZ7+ofdco8j>9IL%l zuac%P(+tq!gCsH#KRJ6OdZ=R!76^S2^x@hvYZ}=adx%$TN&C9lvDd6REY^J}Igwb6 zQ}v@jd}YA|b*qGYtl6ClOUV)9Jl!%`L-);rCE<}c>W<#%KxeF?0?vA;7FP~ReOZ~} zo8ISf5nof#irB)t&~@Swxg6{>Z85*P4e8}*YDg*u+!uH~Ox?XcTJUd{oC7v1``udn zP}kl=7&EIY4Meo6e$d`!@6c6`_NuQ*P(KuXXg4d6a8rvKm8N-`xpi_zRE)}C7+xBU z$wgSpDhQOuDbnBh*wq%<%s9W85tL zWMZm?w#?@?)bolhc7&d$V<;joP=L2V_qI*e7aovdKlby)>?kFVp7LMbCYRvn9xEwMKPi`QWBYRBp#V2T2^vhDcF@$nlb zw4-uIpmf8gs}q-^kV_KRmy|k2`|ofk{=f22HD){T#4s#Dv@JUZF8v2}o{zSp zry}FikbC<=w`}W9sW{_2$kvk3S?s3R+m^eYV_xtVB7@&qP;Q>#)@$JUS<>eH-!<+z=Qq;Tu0rn_pJmS11=sV`blaMo++4a7y?jiHUZ)n@iEPq(=} zZ*nx-AYMK)r=Je|IAP#uC1XhyjC^NqF!GTzdHU-U$}qE_!YQ&>dfWi z5%)79K%+xk9G9OA&E`_kl!Tr!l-m9DdUf8dXQ$``$2(v5Gn&U|ghBo~pyngjbX>54 zcO{Q?drsXvi+q~{TiK5?-6~34*WskHfaLGN+&oIwl7X%u>uhkgoUNsN%|ZVlHlNWJ zgEhPAgfTpicH{*8aKEjui|~nZHBpyr8{rEqT4&12g)1W1d>1D!|x2& zAf~;2S{z-riexhMM~eh@TQ3eon<+`mCZXs%u{i0z%WAr=%#T3NO&NU=xiQU|37RU~ zK4sXHZMh4ouX{LQ5NIQfn{BpNY%K29^)0o5o4!Hm^Py*-AehHL>;=7NTaKLn;V21$ zD((3d$sUSlGj!CECx9230}fl_?|6Z8+wpX@FjuOiAe*7-t}qA#LM&N5jMI#j`7RO!J&tu5NJR(LSy5xZ(qpwZH$Hz!JYcN@oTqeI&~9$70# z*0$T}8C3D}mPPG}Mr_uZK4bUhZ?}(QH%!O3ZB4=o__dTNwp+OA=maf%WPz5IOsJKt z;463z0;Eti(5cH84p!Q~zAJWA2cF;#mz6A7fs1ySWdBy4ggPt(cS9Y0D+`bQ5z_J& zX#Tk&P;fb2PQNy)fMij83aSq7>Z0w~uQ+Zx?rssgik>d9?3}5^j5jkd`;wgvO|*QU zYPAr5SnHg6$*GDUGO(WwM!va?E3-|w*6k8?%lkI=&B>Ov-0TF;^AxqRHbP>`KX+7w zTMPP9HMIE^6xcLrg*dz>9d&ec^JDt;nyY2+3sbk6g)d*t3m)P0M4$uV3@-@@?ch%c zYv;y?<6iE*!?(A425TdF)Az$IXnt49l4#$V_6|J}jS)TK19R3tWMx#jY!Zp$UxZ`PB(W|IQhlE-`vlGb0aT>~!-gRmCpM z6h{Wd<2XxPYe-ohM**j1QqYr*P{5j&oE4Ls4M2In9^c72AH*Zx?M=TqlzRhp#_h%+n5lv_9 z{d^hbLeu^o@|*P37+LTYPS1&m0PBq1_rXi7DZ75`#`obP<>gRy!W#pu_vpH(QY-oD z3*7>4%uvc8aW!4(`SQr~iAoIhZ-rl1e(-61wFjZvx?QrJTzVUy-ptbp_q=K1$}TQGT>XX%N!dqVZWpsZj?#fjPfDSbA5D= zIiK!ix;5=E2?!3C-i|saHh(*Xi(4pXQ03o~CmMa+I?d>ePl~1ZwgO$dA;styyP7s6 zv!v|G_CyO=mHcaxi8c)nyp$pkXPZZA!4%s$AvSF5<=Dc130LSHM}-);R#${JS4{jY zR8Dee?d|*fQbtV6qrMfbsxcSBr0$mX>BiXmAl2Ig{lTVcVZzFx<4p`T_aWoA6vX2V z_Wg-R_XEyb{>5sK*TyW)Iv7b@74KbycA-B32n}KFViKX|-_R@!R4N!HZ1}Tv;dXykS#B z1*ezU*CFprV6)6essyIo(p;F{9!;2T+v+w{*tjDrT4`Tiio<<_FLo zG~D+V0EYaF5E)1SPznpV@n3Q!3I>k8O2+bWQv4s-)DhtaXGf3k$oLPp3Ic-=PXR{1+dt0z7KTvotU7A9HA!e}L5gziBkZNI7pIh%!i^X>0O|*nxk^U(^ZLS9wifNd6Pznr2m8k2XQ&gHa*>w{)Sq<vLgy{&H3 z)hORV^_bvQD*CeLS?lyq73#u!V}Dd){^V3nD@jhv>1@ep{D}sKt>Ir%vBYX;M1o!o zDFw_Pcc=0dEte5(ob3~JskN4qRmT0pHA-#gFuw6Wb(`ykY*C1K;~#I1l4yN5x`Gkb z8XCA0T-Q6mn|2bli%dsSi`(v2J(;K2L2eY1QQ2vBZ7Ci%hdW=}trysuj>?;h)XTJ{ z+q^yT*}s&E`4lay;;MfA5s}Yq$k?Gcf~a6v^W{X#V>?c&NUzmnx>$|g=e8{T}^sC0`cjaW~CwnEwg759a75hVPWr z>}W_&F!{7IwyLe7aTmW>qn%jbem$_pc7?Y(e1D0+u0@1VyH54$Vk4BKU?hzz?Ljjo z5~!LQx79*!J8Q+Wf^{n{-e#~Bm;0?)$(drc=#^$y0_}QRPPa|G z;rCJ0SzePDgvx4zhra)g1JO+|pULSM&vyosZPxQs%cuwHO zQAIm`3+_lu!##H(PU6Kd`xtIjRaIXU9(xo}RXm}$=W0!=cqSAtbhBZm>a~qP4l`#* z+iz9I^A=mjhnQvyKC-eOKeB+#2^i969y^;1!B1FB1w3y#n!cPA_c_0WAj8lPGR-kv zvYL|kK38={EgI~A%JMO&6^aDi2K${#-{bl|UxZdU?I~>ezCC4iLM+?8pgQ+5RL-P= zDK6GneD`=6OrXay1u=sl_xap#-I6jA88nS5jjVKBS6n1BcwLax15P9Y9y75pYhN`D z2%hfFxE`+$a(B~guldeej4RO%!7#2#9_I8s%SJ!^V#CqwRK0{`6Za)`B4vLT`8u<1 zcmK6L=*|~962I-)4FV!yqqwBpk*3b|Ot1HvS~2tZt8M#(`L%fJvH6TQB?B`@6cWzU5-rVYUX8_lCnPk_NV^^Fv0JGe7K*>p)S` z->FjWj(a~@4aimM2!pg!7=L9W3A6a~@2ojb$)iMoWBLq->o$M+xhM938ihep zmL;UW1I$Cod=nF<)P&DE9UVo=)ghg$0-lMAr)6Dy*2}x2I+*+hJ+s`M@`o{0Z_n(k zR~n~k4Qrqr*2wDd0$^~{-bJMR#<6R?!L9-f+tdPbVEg3^7Et|x|d9}_q z{GA&09u}22k66HihKvXcOXAp4%~Q+`&QtQ{Xig*UYE}lAyb|{y z_~Ce!V!>9=T>HPKK86` zUiFe<(JMW4i~odyWXazOwG-1=u*4Nvn=k|PCS0cPtGm^&wepPE$~8Tl`-rQZA+t8j z*;*;O80r$8{&FAGI}$p=$~OOD}a908BE zEfRb7N1>N8xT!~A(HC5z zZ$mM3CfC?^7(Kr}oh6+2xs9fA#mdCf<*sS8HA`tRJcgnCbl3UC*xM?kKv#1>> zWf>(EDjkPJg6oei5}_vq8sSTRic5U9z(_eU>&z+bLI^eLEw>EzyxJX6n|gbFvdfPb z2{)O`y^QMM-Moh}(;do_%S8*Sq&ljt=1_ciOi_9?t>?b*DMNVV`+d}fXSmu;0M85= zPZI@QI%)sD)CEeqOE%O_eyPq@MGqfJs%sMlMm8nX+)hk=??*Wfu@Ej|{i;Wa!sSu@ zT9E6F=FZEay&Zk1S^-5mx=Rs!Il6e<+rwU#AmL^mm53UgI&J+)gCRS zY+>gMtl{vJBi$v5?HDk#imVxk(ayq)?VkNbVU7q+*;nUOm1~BQn7LB0F=;>ynRR@_ z2-O=9aXX&WR5V8(b9)EMccZE3DtufbRbj<@rS@{q>XNonnCjoZg7(iOlGZlZOrq-{p;w}+?~W*TKnqP=o?YA zu?#*9q6<-WdrUcB()Xk+;2g^?mAB{qPlONz*gSBHc!yOal>Tb4rdv_K3sj15q;$C& z?L4)T8Ih~?#+#7i2NW`_(}9uUl}-Pe2GLLkU;VEi8?PbnptwluXoV|JE5SC@=bZ0< z8@hZ(8x#3Wv1V!0frWa+mkeKiX~~?2NNvS;r7}urwQ79kXg5>=GXJh zRi$W-_*SD*ey+8^Ce6|DLN%6tHMjRx`oJ_{) z-tEZ}krCD5beR~B)2=GFi3`&qZ)c!E=Uu(c!-1EtS153Lf9rI)Exq$@gF;vaO^kch z=jlYDDzIbQT&C%)?TJv(zQ5}x`f>fo4$T)6=nlv3Siughdtg;$KAtV2a3nzc^cMuR}iq z3qGh;6jE8mX_&1V3l_MpXnT~=)VA+8F6Xdao}VcRplUt#dsZzq!Av-fPqJ*&OD@;e ziO^zTl$a5s5vBCpcA7^-O_g*Ki?~pS4H|$Y@ycc}brY%#aZZPw#lb9|$dxMbHf!*z z;zHR7u)zWKE{aOEdsGGo`F#NKCi9*57_{R%b*6d6^r;iG(A-MJ5at+mhy1+9v_i`( zrU`oGA00%$ZMxYL(<2~FHw)1~kD$-$Qp%L1p|elvehOj~LpyigrBzKKyM?tP$mAK$ z=?X@q??oFVdqfsR!f+GXCEFc)I%};s_s`k2VA^zdvvRS2e<~6-=C=X6MP{&Fk!#d< z`52-o#DKSq9z#}@rtR%EQBv)34CBIGXW~t47PPQ($dQ)?UCs*`P60)leqw5+NhGok zT|Nr8nVduw-`{-F4+)A?k?OLyhLqyA|B`?g?K8YVU`FS_Po+9Q@LXnc4cZ`>4`>nC zi~hx6jf`T;#*HSQ;Vzy^HEf|?I-TMeh2yC`?XH(G#v~bdmp`ouiW(SVZns`%`1SP- zts_oWy%-5)ljB}01_|Ymb)Mb04b9BfAsxx=+yN$u(dFun+KoWAOn|Uzx+g#~I!iCM zwDf@C=7fpl3Q{WgoIw!eIhz}bf)%_!;vWc$r8v3QGJ*VRNOQ9UdoK`KXS0NV9}Ry_ ziT1W1-^nU`xcEpt9TSmrk}RbD`lF%~LwJ3T`$K5;YjP|%Z^+uW@oihCA4q4>C2P3j zJDTX9uEJVHcn9p(W^;{rSmF#bNW(;a3qXWX1%xF(3z2wie{llJMUHe@ATbq?KDa8k+cjX+N$jiq81TrX4 zSanzB@4E!+n;()B8k30{!p}!hrgt&|gt5`*d5&v%=@NVU)3N)7I7F1vzLJ7LWpA&$ z4hM@O`d1==5E=LLYyT0xbmWtfCf?<5P$|MgfJ=ZS{sIkw2kYoj!9j6C7`emVoPXT< zM{DFi3?PKjsPMdhDT7EfKsB<7i7nFq!3yd;d=pAe*fO8tvE&;S_?Bveg{vN9)q@gF zM+7cx#~T{C&Y6=R&5uPPx^-R6tTaGdz`*S$`A^IINu_|3{j=@u&k+$32#)vp?&WCb z96p(sx-$fa2chi>KWr-ce%gv_3`z&5ZRb4KI;zMWeT*nQE{a@&b`@7eDP|X>(kA2f zedXU7+(|vj%gUer-Su_{H)xcM+VY;Ly`R=ZwrCCyJ&6RbG^`7Eb_j}5 z%TFHe1ldA9pty%R3#@XSTpvtb@8`yTdV#t5DG~@XU8qQs%3<-1D>l`H*nJz_V>6t3 z+PmI%rRdAaqJj{xm{v8hZ91UB=lfFn(9(v>*K z?VO%0E{+!}iQsaMStJf~0k6y9IH0~$du*I`x}K0CnP9A676sPYDq~T&tN}<{KN`7B zhjA?@en8Ju=x5osJ(vP}#3Zqdh7^8xwwsfsq(6|xK(&0oq@wM|2b;y@1zcHyRe)#k zI%mfUz0MD#CPwm0OhIdRWg$9@E`)UKiwP^Mh4B?0d0YE+i$#{lx3b6_)a|{SPrTRfI-5|zU-tBe7RO( zukd|)Rj3lxeWhwI+jfr0MI9= zriQgbT0?e3a6Z#-FcC%4u zb02YWC@dx&5bJ4@zK;ACQ+*Y#4a=rjTkqP&Feb`&kQv1no3lKn4Pu9d%&%1)=v$nK% z@7|eTe51T3rZ<#`z|7%0ZRlo5%D~Bg+N1PB@roDr6qL@Z*^Z1DX~clZ;E$7`PAcT( zU~PuxDqVXzZB~rFYH`1Ui#Y2>6_Vq$npM35j}Bh%1IcCZCX8kZlw4jc1K?w89B0{j zu_k=g>q_3k^4#EX6oGBGXG&4149ZtdE~@{Tx$XHIHUmf)SOzhvm8i>KgaMf9TY+L$ z=7Da`w{`ff_P1B*j}K#=ADHX$T`CXg*F#r}^u>%h_rM03~}{ zh8rl^?SB5C{sbX}5-33Y1Q|-?3 zdblcD^=9@9rho_3%G(rvQ`3zK#{=pe1WAI3`SEh2il&SK0;tEJ=U%7y1_~UxvqH## z-}Cl3=WfkczwwsMWfMWs4{Qc>aOSu(NUO?%g7zD&2jkcM+P;I6H?5eQ3D|8y!T6?;D&sJN5prIen+TZq{&e{u6g`Sn* z4Td2Zr`5ojUoq)aKi+_k3I2`{iN@zN-x*BMzgI#TA()FQ4#*)55 z@$h%on~}`L510KUzC}ivmuB`nEhOry33O`Hgv-B7BDI!g?}8?4siXErGfEyk#suz^ zfVDJM+qrG0R=vuFQSa}^g*F=kB7rZeWfGnXO6~fs9<}er#pW>}eNc13GI58c#y^~T zih4nGsvuD0sT3*wVWUPR^5 zuq##G+xOmg>OzB>MPQ7h`wP+X#h*$bGH8k&d1RsoWtZ*<^TnR=>^%u?E@1p>t>z{H zCRzs5q4k=ep;xu4cgcwf31Ln9Q`lmaXN1os&n&o1a=i^zEMY2 z%^o{%_P|eF8ID!2cFQkUODWb@LC;?1I3s7~Lf6`I%?i{Z3eS{iP(M>w0`m_Y3EhqR z%ju#tu-|NEIz5j*Nk!P9r(ymo7D8hCOx2QW>vX&fZ_6(@YVMHVm-3B0Smju8&Y2Bs z_@f^^idKUVoCt?KYo}uiz~0$fAt3r~DTTp;wMpd)VwT=jdV}2+C6K!1j06}&iv_-{ z2ck~DqSx`12AL%>>z6Z-gXVwR&6Q`+dUdWRF>0F%Is)ujh9^lh9PerI>Gnhg8$xGA zX?qgW!B|-g(e=ab>MTx}Bid$fljMZ|**CUUl&8&3(LZ?S?fEJe zpQMylex43|v@)cV)Q~8KSU}5+&#OCMv({2Almp73a|NI~Bx8d_%e|@V8Q_7E){;fv z`J&3apT5W zwUC)FD&b~Viu@)mvYq%LvD?=`TBQcO6xI2c@0L7v-W|#ndsCz3icdQ`yu> zzp()4$~&4F)=%siMeKDhVp5dTKEJ8mU{8j{tfvG0QFLIb#l8CS)F857M(E}G`{lau z1}fBpyc_k~bFSFaP$Gkz8hv8+@_=;wuRXAxGWFn^-j&DSFfx1?g_FpFw^dw>0Vsru zb3cga9GoDz7J*Zxc%=?yOgKBJB*yg)Oej`B1V1wj=4rY*-sEzm+6re|)#O$-W^@K8 z+9gwo(0O0+KHz8~Cb0HxTnk+XDiR-qXks;Nv*sNxO#tFWcw{7ncmw$($;7e!cd_bV zzfhN811hMc{i>d)&ga@R!hjrMe~4?~&8r+sEKpkE;Euderdw*)~+G#zJlK)eLti_P=$ObKnwl2r#eghWk`k{}&4o#5T0xZB4<_J3z zgU>JveYP}GQ@x`s4Z&WnA=Y1l6R@WoNpDX=}RcR!5P|tEtT1oO;Dx!Xb_B~5Gsh@IKrL?-S-?;mb6NS?%ScIae zERJgw-N*mraOh%CgFUm;nQq&)UC zya?<-TVL#s%Nd#|;BW1Je6?@w+YaG_KeZN5>6VE3DDS^lL z7Kk<+1V$;IE{4~k4j)gA#$ia*65`p=X4q@U%Ba~S4lQmNXSp~utN;4^a8ovAC!Q*X zj)>hATfI&LI_`2}iVY-7E>kLt^msVH!ioKCA|+Ir4`pa0P^a;|AH6e#)S9(3xa1Bm zE+qRysYLTvN#a?~x{swn?s93jDTYWxqM{sE=(1MVxoW00KVff5G*!2+T|WJR>WJf zl)8H$F#9XV3wij2dxQ9TglnzHL1Y}i)XGhw668#Z9M5<F5c_l+dpzYakLW}f!=p27J z!tZ)3%W3^Ne@ax7bo5j3K_yl`;1;O_rQ8t=r2wTb)&NoCMT`X_CdEIeV+Ey5ReP&) zS{J&iBRZxtfDdcUzCsIL6hRcuEJoyX)!3U!wSw$(mgi}s+(~o{cARYgCX+x%r4p{Z>5wj%ho4DZRFJ^~&K(Yl#=rnXN=O-C zAeG0yi_nJxp-1o95Q+uUrQ?SPyu)q>v9RSjLp|?FqCgZwCjr_nes85G9ucF~ycMohPi8y}j9fV+a!Nv_;@?go+eK|AjldOpg^Z+&A0X=MfIJ$;^H=nT^#Kmh3ic46 z5tdYnROm-XGm&pNj`feq@ICd3rmDk{0Je=Ft%bB`MZ{v_DY zs&Jg5kJ7nRw6?*u;mw15-CGSONYe+dw5q@l=Lz!lXrIQhu~(PMUfnug$%%(auT)|R z&SuTp-g9`J#OtK%A0yqwD2BRwDDWvvuxFa&=bG8jSFFZ>n3+Z8&iz&*h$nAfXvWpq z1wQ3e%e3(T7C5zvxuQp-eaiuow^wW8HQA&k5hXNptA)r}!#Z5cWce~H^vr@@>Pk~B zI*RUxbL+@xrH^3O-Z+xsDrEoDV7VMOs9IfE>0aA@tJU8lwpuXc(_%h??KS$=zKlHu z33^=)L&F3tA?j55MNLCw`>zmw`7oAH1K3^@&^j-3bDJS$vvv}9sxi)_c}X?L^p=eM z7M|jRyW<`_UuU$BXBVzXDHJ8F9`o~H`d2F`CJp=M@`p*sE_FA3e8S6kQZ!yT^9?V- z)f>%It5t?PUe$))oyH?kSS$+*b#%XPfolSD?IFoCd--0sr1q@uIXzdI?XUpOG9(Pv z#Z#Dup>VHgywJMljkoe$3izO`0~#Pjx?mIo0m3w-25(&1ql@XfZ_>k>+VAB7%HtL2 z*D&H8nET(a@Su?XfTTbzz4!kJaPDFLfTT`k%YU&ELom3h zVlr?s;ES}5>_nV@zaVTA=`fS(Wx6w4^O_?1De(`>g7f_&&`(&mTiB08mh_GCguFN=voG?Api|+=m`Pe`oPkS6wELk-?Ou16a-!G(Q$sr zO8duEA~C}ATC0HC1``VlYx`XGN{4LS;`x(`3N3&a%898JADBpxE~5hV`=)l26iU>0 zE7Bv4Qg?F#TrQR3J}6_V^*ZqUO}yUJs;p0P3LT_nWpmScoIb@6^0Zi*d5QAx#Ezc* z&AP@Lo%Xt76b(+qB_%zgb7arCyQkb5JwG&Gu_Uqd`EO!mx+PXzoTu%yzV3oMn|3-b zw(Zf}__#6bl+KTBuv<+~X@P##J+3ciuAQ~rS&U$GOV4e|_bX-z%A*S2lg^Z?eYcz` zmH_59f%nx2*DAkdqB}q(_N)4dRqg<>#19~r=Y^2lUO2&Gt*tdB)^*js8=1pn7`M6& z*x#0Tb=z~e|2ZYKoGne!WSV9!kV`SzH0VY0?rGq#S&R=sCfFSxk%+|pX|@Y&EGIiZ z3f-?m9xgYs&lD+(30wgpn{Rz6h!=oBfZPD3^sMQKN$c0=a82q=->qn_B9oy+)e1cU zkNb^K3t%g4`U+5{kq_z>db$aoyD4V-!zt{hc#2yV*u#C1MMeih9{_>X;+rwKjmHHC zW7{blW4UkG?5&`Pr%+UGt_p^{22UzN=gRiprfRlfrnSWbz}61pq==QbCjV9xC9F?J zFVx$S2mt6}I$H$NaxxFT^?ozba&_P9=?=g=(k@4{`HQudC6|8?5X~kN353P@dZ%T~ zOsVE~-Y>@=m+EYs+ypW0fJ(}9t-4XXg%2F~*!$r{=dhWdqkB22Q zsZua4|lh8RG)^t9gsO0_=fMu;cEu`D}Drqm=oa z;hd$ET|I1OakbgiuHaW^a>rmuCyZYw#L|4bZ~G=>vRx|w1-xzybX_NcUl&Bn3Z7xx zFSgGuH?!Iido2K6mHdNwJTns7mpRTE&lS9W>vt{DMPfFJhR{vG$I?rpq@M98hAt1sO}5b=%ANHOe_PxieZ zS>>!9A&+B^S5PZLj1r2lS;bY`ME|EjLI6T=W1_E9HH-Y#G{^Z6|VarCxTPh?}_)b6DqWcAFZK z5`D`@LO_c+QLf9!zUBdLXrngx6?T{3unS6USmjloYh^ndS9qd_KfsZ=7%CX&Xe{Ca zV68TPbYBY1&bP;!xsoIJeZNeG*mlIELoV}x`67Lxem-wd*wZ7PZ!VYiVZ@rwb8q_I z(i(6lKb$e*;QM>@-4ObX5n|PR4$WwGn&OUClFwMHF=?L#YtGCRyk?zUiT6B)aG1q; zC`MHd=D%OBXdjC*tNLM^wVd@)sr^**SHM(jB+QrGQ7gX{JGLeH55p?Zd@I)!v;Q8? zxP>c?c$dx`hKE-5m5Nx-Xk^eNfnOvH+)g|N>7Ty^Pyo!aW(KEx)5^XQop|6$!7rc5 zp8}H22fmq4weK()nf<_u!O3cRUJG+>>8QAb-j7kmxyB4xZx zRA2(v2%743dp`oD&~W9Zm^Z`iUJMg`|6YtjFNXz#mFJy1I=LDSAD?*KAn?83S-h@s zkTV{{tnYOZ+@|Jbh+Ls@REMt9_^}y4x@tTP3%ZTYsDSK~wgUJjKd=55|4w%qf<`6P zFv&1Z!|4KF-gmJ>0xL6s2%*?W3LQ=V-1=HzS6QZ1B`RUmt45u&Ht+Zd$Z`%yw~%}W z)%i1od^7Q^4v*4 zefCp6*gNSkO@$bx1j3Hl^F-*2p3RPH{W&_w|AG7C(`iRpRb8q?8&vC2BqLKj$?|st z;f)G3tS-}vBt7-$35SKYDDYh@7lw$VG5-<{S$%)bBUtr?`NuhEdZW{W>qQ66AO_D4 z-{uPr<34yB^w;(0p=iubEH0hfl7{Jt8DaVpEk%i8U zR$^8v3ElOLH0qN|1~poi%fJ-Ixh51n0^fErmT()LFe1QeB%5$499Hx$oz>)(AK;tm z_b&^uszsE)WvLLXbRMsE3fFJn67{9n&Q*!_(}+li;Tx6D`xM>hEuKUv1v-d$87ZMj zY&kQ(%{4Su+!Ta;jj0^|GUa;uLqO3yyGu`B5(w~r8<7Q9U z_R=KGaA2kJN(1T3a>eXhx-*KTfhpqmC%^DIcsZHpvy&Ka4DG9W&W$uVtLZ0ge*hX= zflE@3O*2@en57zBrQPMe&Vaw1VctF)uQOHtd+fqZhsNJU7fSHYuXl7JRVsOs=`G-` zDNLi(ThX|ZL5qq2@4VTBj#VD+29t}N{Ys7_DN=9#^-E7RG=`EvjGVxuu6sC=b8&d< z0bj{qo2|A5sBp=YM&|TMVwIg-~mqlLQ1J7wR51F~`4Emgy8k{ARnk~)+sLEz5 z$zA{?8LP}($6Xfl`<~%#UOmCbko?FSy{Hi5B-oN+qqp6hMF_#ecrPdJa&P0Fmx1ri z^aZ7nxJo>U2NzyfjgW9pnK(`4@(0`k1Lj*#L7t|c3`KfnS`>ho34)=doc2MRl5E?L zB5d^6mn&4~&)8QRVOlM&R#yU{jl}d6UBSIBT1)qqx!jv2bcn&i?%i?47p3u7`F7+} z70Mi}?ka3pR$rceQ1KRzEZuiSp|J3y=%|T7Eq-WIvb5*!e)FSYXrn)dJvY`4ZDr9_ zI>L}vy*NSkGATzmz&|=Zo;&AJqdK!A2g>0~u`iqUY;G_8`dbcv*!&ub zFNdw}@AlcKb6gioMmohi_#))jqUv2?7IKF#hD)sNIa$61md_nz)+E&W{?B(7mwhi| zVQ>lORI5~lQZyaQTtq6JlQ-)y7@TZ>-+g&B_gbAkwd>i9A;DHoe%)XExb9cieiKr6 zlC1LQSDLWZ*ie@FsyXwDykB;Xw3KnQ+Cpw`64xIrIw3PUg-jN?nILZgbPjh0%cGEB zV`Jl_0WC29x>Px;7FFwk>mjyp2D9b#yQaXfiu4z_&=)Ez$teeCjswVPFLbF%D=6mD z(HM|5heRYfjjmt|gG{s|gBHqFc8(^%2R8%XwA|48@5%g?lKi?D|zauPhmE;)+<@xyBaLj0AAT?lrI8~i8}U;CT1X%L+UCI*p-kL4``w$NC?_3|0gHQTuW zHr!c6*b78ixMf3!toU+TZhlAqzwI|Os2p0$26L%WUs$-mDwuS4zpZ1l_t-4K{}LC# zCFB?lF^)BE1QicS_zV0mFh{F%HY?fc66S|$`D;B^TXE^74THPz50Ms0tD15hL#l+n z+5*n4<28Ur1A7P?P0T4q65K32ly_O5zVRGw1RprkTe;)K(2?Hqwq6`;k7OfL__Rznw?qMa@3W-z*RAtX< ztU;siks4R`ulfu1J%}=v7pCKzlZb)H$!*_exv3b+-grcwWQoPu1Ns?mFsWMIM3B!~ zj3ztOzWWXjDy&(RolXq|7Hw{V0=$B6*v&&i z45zEnS0a>uw9GlX_6vC*8!0FGFtBJop-n~_ znUk=nnkjJXal&%=s*hzs2~7W-`UM_47#Ibvp$tJ%ffhFm4pjmqq@F6DpXjv*I`UrQ~ zy%69x`YOb_o?6K082=;jrq`hg>*F~-Ja8MMIX0@O< z2EGIhMle@Z=l*dA8w0D>#;uiP0J=#9L#PN0`)wI&P$|x4(7B5QU(1xX5XX97zIdbX zm;Iw=W!aDi-({j7wC*N!ST=YP$o^xoSkN;XH*&(8PNP#{@F#zcsI-PA?!M_&$~DcR z-`TCkhs~HOnVd*#?N%zLdqP|@FVkh6VSC@2!>2jwAKshnD<}$qyAv}iauLB~o-QT6 zJ@dLq>No3n1MXx$13uF!w>zB^ADMa6H>tou<}-*c&+be`YXq;foc zcbtU)*dU;FXPr1lOoqN-<_{}dlN4r7R^s^*a)71%S634a3Vd1(CiQ+#j?u;9tx2L$OY36_7 zA1;7@La)?I|25ej;{wM&Mr;37iRdI?{NDgzZukrTnQ={ul*aD~N#6e$Z9y*}s7^#= z*yf*GpbWq*i<;81g8$ffB7tbYmLvVT&H2wQf#1O`$Mh5h|64&N0wH{8zb^i5!s^n5 zzdb5WYZsLpQm>`fn|-Q}XwaX%yr?2|q$Ee{ycQt(E0`Yb5%=x!>Z#%AyJ=*>X|RY0 zdcu1`<)&@3V39TSz%~6v>XgaPNPHJIZ|b$Q1S)rOkC(;k0T%2Gs-xQZE_P?hjkvn;yR3eulN9-EVx@M50S% zhGVxYnrFgL)7#0nfUuE2J&4SvbnlxSjUWh3_J>%&cCw}=u$^50?5WV{)X@lnJ6@e<%Z|6hyyVfps zALT@Gi&z+4Y4<6y`CX~#bPpE)d!vmj`FEE)YVz_(U{{f|;<<@@4{|*^AI1zENezz4iV150ZVbvW7?^Dj>vC0{;C2a1n;%Or7tYb5ASinR^GK zdj*ObCVaMYEcZaf8RdBB2fC5iRFP6q7QY8wcVLGR@vWLlRb%(EU-mcNy(O8DH`lsr zN^BG3kGVWUYO%XBGtI@0F#?$H$$}dMaEf%dixGocpKn;_8&=yPvYW8K0El2kR#Aaa zo^(hKu{>b+xvVAwzlw7F59)@&mKPStQVeRu*>_;SM$5&OQn`K=a;ID%i}fDGg^rVx z{fEeXUlhiByz*Tj|L{)7ICY-191>3UoWF`@zrP2HPubO6os}9y9EXt1($?&Y5F(7T z1Q1vF*!A*l-rJJ*!x~__fvN(wo+E`J9`euII2i*1+uNxIg*&5PzIe?do;^El4oons z6*g^8Ro=$cGZ`2>D0uSQ?9I+ZxjMp4j9u>T-SZ>z(>o7ZX_cqBLa1c%yASSF7sNhC ztbG2Dpw#ScSG~qm=6*9?cn?6Ze2|gkK`O6&;U-37;@BvA7V4Wob z0Zk4-PI9en@IfegLn+HMo%>^&Y{K~xZ#)jH+@gWSVQ0P6R9#BqlJ9$W5e=mkZ9Z(a z|Lld3^OA(}SGLj{TE@F?B#%o7A&S}31&PB%u$u0O_MR-Hgb)ocgWG|aNWe3J*#Fk3 zRJ)dH*?E}JT5-w$2N8iypN+>$}g-2UgYYR~RSdfx1W z?Q?^gK{kQiLY>N>*7pb$BGu@}_nLZU*cBS1jiL?a{i5zr-N*%d;KkK2VR1jwsxN#7 zY<5Of=}vSuOMVneSXx^8E6^mc%V6dpKf7HjN(X6GrUX5#q)!2LYAggN{bS-rY7)#aVsPI*t!8Cr zsSTK}%Ssz}hgfwTbO4hlsqk3#@JEQwEyOrA`_fjixFDpJ8ZU4G4`RG&V8XCbbD})B zx6%=hVWMrGy=i1hcR`g7>Qa4@ScpHBu2a8^#`2NVvZnYuqBQd|M-~AtzyR;BoxmZ?A zkEd==1BB3y-h`m~D4}o!rwr! z1s+bpY+YH0NH+nWD-A^9t&A@IGrZ1iPk;TE-LU6j`Z<{6JY}fvLJL85@I%zbP3oU- zULEu`AdO6?UaU-oNFatMwuB|R_H6{y{fp&}A+t}38?%0!7Are^sWP>^vsS&1k5qtR zR0ylb(X@&i>Il?qxkjXG4p|_#!%DfsvOmboUZ%IvQ+uk21%^yNc+&SiqckR)n~Fib z*sMYHV|fB`DLJdPm1&G(wq_G&)dHN$R;-Qxs%M)opdRKea%k6MIanmi@n{^z;74#S zbAdKHR+Bsv%g1T7h=7gVz?+GlbeS#aox#eaoWd%6eKenkDLbMT`;aX55)Q?6jxO{Y zqQIISNGGA1XI9mRHHTC%Dd0MI>f}xb0YodhP&{RJw0hRjefawOSN;}4|IJE$hYRQ( zuJ{t=NOwj-#s15q!YdM#T&^3w7V&ng@*=jmcVPo&l=9+D2Edvw#cgvlz}#jjzHQ0_ zVVUd};7BepI}R_tG;OOOI6ho#{O&yiFek!^xR&cRSF?>=)s7KKEqHTUf5+7ds$vXk zS2(f>UJGvl3ALH}E7ZD8@VtKkhuZuCe2e5IF=qV=f^`Oyl&gxnxF=h!huMB>bMtd! zU`EnmLuKR92a&;C>eGaJvI=$jt+i6v)Xs2T_lJa$CRHm0d&1dfb+zxuuH|+Uip7Sq z_YmIzN<6~g`CWCaK>6(lJ$Hz+2~jew3B-4a%*|1ZAV`i5P|1shuF2mI>n*xX0i8g# z9gGqDR;Ol#5*>R}AUtMuIu@`UI^BW`6+rO=Z9L)@xstv=L zq!3##Z(qxqQdZDCbi;+{!s{<749HFDM0l?g!x;%LWpTbLI|E}3_MCqGh-9?ASE8W^ zae`d*UZo#WB_8SsULjckdziy{OS=AV61zoLCTR<=(BG5!G8|;{aHIm5Amc8~Ao7er zjB+Oa+*4_8Cf$*co&rXwq~G1rvli8VDr-0^Aq6I_qQ$q--Q*%yGok8cX zP*Jbj+9~^{Ts!Mq*{-{aLXv^P=n>#In>)^v6t?_J%#}{ik9opA;?0S}5buy_QCPR< zL#tyw*&IU5l44rh+{+LG*iX9|7ZUu$o1)N(cNqtO~NYWqr`Sc4wi(M!Sx!S7C zEZfa0Fd>9YO3?XUaRU53Ea(psbxz6v`V z7<|E^=Ihw=LNrR)aqU|&sVzETbWJ6^y|Z`*`A_si9DRIvgV>y8w50GSrw9Hjl=?ME zFPayTC0z(F`*L+@L(`zql2X7)LJjQc3BOeeZo}~_qV=S`QOx#(qP}y&AN) zQ1I1UYcFRb-5d`8Xz~J!QIOqtaqCZ2t=xAE(brmMkr%T)nDs`eSU&ZU`eCGQQgdJW z&tJ>GruR~7tZ(ZG7keQIJ<3fO%6;!VrNB)atC%eyqpVmS8WkS~6E|17ZenCgIf;Y# z=Enn?bPAS7T0P@fWwpacp{|QsoqNDl+oMPHnk;i`e?Vu1lUVTb(MEkc1f9ZDIJ(4e z{H*+85P4<6-Mhd4I5LonYt!tktBXIl3CeG&5`+p4wgT$~)7Yz;*12xP>u} zfeaQ*(%5bb@Fp7X!u?gvzdKg&o#+h4c2gI;pDYu@KrI|?qhKUOJ_GsZm~BFS}niVN+oL&5-J?RWvXm%c$hh` zXt1JSLbHb+;sZlk=*OK-ndU3xe%>=MNHvXS7Gda%6*e!veDsb*-wj-K2&`{2T!;2P zp7~AKAYl0Eo%H6U$Y?&j|1P&e4V#N*{51iHPiim_)(x3;6QR(D%D~KlR~dGgQH^7OcEsI8c+3 z;z7!vy9$fA&=C>d9UOy|Ld-PjC+d9t{om1B{ZWC)~@KbrPLM^Gq73*GOLyZIA;>bPx(i51q}%|N3LIdfGW<4`M^5@Y@N#^~j9=h*rq zURzYVpNkBJGYQw$s0$wsoIKqH&U)#T2ad9Z2^m8r{F_75sQdH;Ea%PJm-v{s?+8b} zA{}`(Et*^u8XxPQ723L|LR}8vnLeO;-hR`2E?>ksMoi%|R3Q5a|5}~pO&bM#xfn;y zOg{;OUD$)KTIZB34~|v#7t-nDP!Uc$KTSWj3`Z`3Rs`YfAlC5%1jME~L2ZT9N$#ct zvaQ;MY&kDY7NM6)*lh`wKh-+Qc6)fAoOj+P6%LaTMofz)=aOvrB1o?pwhO~>XKakO zFz1$uKEQvBhb>!sWofv>BZeCrOmN(L&eAj>YW0}dI|e_?4Z}~vWb$`WyIG{L`=A3; zbRQMSPQ8ilw8sb(=Fh&V0KMFJ58YTS2G`pMjP{pb-$Y}sXv4}3AwqXY24auxZtCT1 zckGP*F(i6iX@)dRhoV9o)$bAs^}ZEEhiQ8Uv70s>YU4r;V z;}BZFPE+t!l=KXK?k{q2Ew-uV*NoZ*=?rijpf5Rnd3YuD|1yqn0p)o4s=f`9bNdgM z00af(>He>1P=Jl-os4(f74oab`~zAbe$qD4vk8MB=Knk%JUbvS5%Ynv9{VD1;xa(Rg|XIctLA$S8`O~_?Xw?x((|ix6kL6fW6Z1#X8-a zbyv1d_pUz#6^D7`be}gy$39a+JTV4%LcI*J_ossnGN0tYQ-qg-0q0@OQ=S9N@1JK- zRHk}%_guy3n&~$Gh{`~I$#{4|owTFsSWNH=2mO*-i+1_)_v*L7A5c>h_WV=NNKjf< zwxyi7sIU+~oB5}+63$)At2H&u&cn9F!b~|1%fHiWZdniBgc}$e%Ny%VmmoHrlFw8#}AxB_kr1+4^*f?q~2fs zGdI8|*#~$+^R(7HkT(E)>>-szkVMUp0YppM0_(86Mf=v#w%<6AO_ku|S?@g;O~-gv zhscKj>3l|$ac|r43CeEjgxN|xxvu*Ev#iLalsQi_PSr(noam5yCyMp!Zrh84rOeHH6d`Qh4`G-#a=VjCQ`tu_|kis>s{;j;NH__4+<;_ znI6FpP6IDw=9EdVQTqGLo369&pE*oUiK!dwo@o;cQ}^l~1&`2I2;>N_52 zSZa?nIC^eT{mY(u8oBwU6_{G3)%7ui+#fi7D=bJOY@Tp>FHNbV45QR(1hsBm|&t%l^f)a1nBx~B{ovU{I^IuTOe zE>~=3{qj&(5M-D!2AevDpz|I&X63Je-UAEqfViL?JRH@ILz0!U33*I3j-)K-NlBQ8 zre~w!Ajxq?!e$D8bu_Ow$`1bpG<>|-d9~LS^m4l0 z$Ky%`;jsuf31kethgwz8^RGJ_0=0!{WmUL13;KYd6&-?AhrXzX-4ceNu}?R3UF-S>}|Ab<+dcmMgS?A^l4KzBK>!2EWBvrYm3?lexVS zCAR5o>2!f%j-V)O3aox*dLvLZ5fMiIbUd7>nE|@-4*Uw7r_~~W1R_G#GDG8dpAz-G zwz14Uh0p@vF}O~om0&moX|>un)Ii(uB*r$Rd9$>U_+3bv5`QQ64P#!hZev?gXY?kU zB9D8}nmKciS#S`53?Tmo+K3pyZe89F;sFU5qOB+|omEeQIH)w*9&j2PsLBovsFVsp zq%M8s6UdcLfC{NS@ZT)$%x6nWkk$ppU!X0e%&VwfBrO0un_N(lMc*%bWdnu<+kkzs*;9uRNGQ&nY6Wy$lqR83%lyQOMHC=~#2x`uf~)a;8btZ4fggx<+Yp_;jBJ9Lr>tav{#ws>^4%Wlrf zFFp&Di^*#>jY1NT27Xt`lYL~5VZISB${Do8%w$vDb!e&h8BPH@)X{D^{QbQMtc&$% z4Lx6Yx$`+~gjy+dw@!klH6QfL=aQmqw(m|*WiTeX)y5JLf0SE;UI(h!s^b#*Bm9#W_7eh@yhd_9&V=ImlN`nd))HU zlUQ4=aVn!#XT3JEqx9g>8D7U{gSkZ1@BklV1pPt?XYHTTpZ$IFk**chCdcnr^XzIU z;|cCqwAp;eMbjnQSjKvW1b>RX&$|x?vlRs01+Q@I)zy(}5+|1;6_~qtJ%MQ)k*qRcV zg`L1&lO?r5#iw9EXFfdb6yHz>1!xJI=M~d~GL<+aVj?fnQm>4GyD^m;!zly?oDO zj*}BeZrfrW@3THmPD9C$4H>OIg4l$bo0(h8%gwl_a}X4MqkBF_9U&*21YdccvN?6* zg6`CjbJG#eC|785M69GR)FuiW)Uh|ACjLmOfertjj-wa zY)JoF{}qi2Zp`O4VH-+^v)UBYdK+8DuBi(U8`O87LdQg$htfsoiMk8-dJ4E6dnq5C z5x2>#FcdVMN3I~AF&U$do@^{ii_Q1iJp*Xf43Uv<;V)?C627VC%b+K}l@JH3i+$3p zcO_C0PdhlHZ2XPefy=GS?QP@ijqEa1iI41qAK0aI;SLpPXlpd8#NU46w9&wFilPXu zBZ-8cGh}6Tb%SRigJ;+jdDCwylYkc!%KSDX(=Y>gt~3L&yu&g86()d?I%0R^$~Vib z?X2G*?XDWUlrNK*lrytJOqG);jkp^|D5+oi0lS2s6<|_YQe=yr6t*mOxg!OHr`|uu zYZK z3#!xlP<>lXb;eYEvS+wBypJdg%Wqd4W2m)aSI!R-uI-uDmBqH|Yz_%sKO|h~chISM z$)gYq*{EEoWibR@0EU zoiHGGF(?>wDO>-$mNtNQgs?EX(Z7c$LD`)mb=yF4$|PRM1?3n{0hT=vl4~yrMwsWb zq#pQq5i980xt-A+A7=*F9m5*Vdl<;@xCHYSJu+I({5kl}8WFXU13rKc|BaC2+jVrp z366PVtcpGX7z0O9nz}9lKS7&HgU&=BXk9SoL7Xy+Q<_>d}|o> z_1(q97*D1_zsb31$b}Sh`{U<)r5yeAEu){l(=P*XNT7lu+00RSRE}@O0j4c$K#But zrJ+>j)9(k7gS~y(&06L%W2afQ3TSGSBiJrppoJiszv}c=U`YU2m|2h4W9X&{29usj zg}uhg&n&2SL7tMF`zAD&eu}o^4C9f8-U*}nMx?JnBGQ0^{CZccEvF4`LLR)u-|VKQgl+QTXv_TXnLz(c{xI zoQ_Fw5IU$+B_m-Q<;O)vb|d=KWJWWcCT{cejLYrk&SX9j{m%Jj_<6f`*eZs5CuX>p zWV6sez=beZuz=N`#i`>EUi8+ly&vwbH@-#nt(Ol@H`yPn`3Q1;KA;(c|wKgCE(U(UX@p^>*ihJFPV5-8e5n!p1SyOYI} zDNh?BQu8*j(6(;dlnDCLF+@a*%#h=>3Lj+(_dh>qh{ggBBiY4r+J&3`=D&9~M1!Y? zLApdKTW5)5g~x?Kf*e)E5OP!OCt4$LkN?~jR3!%P_y6Ni!42*e17!jK1}jb5xx_=j<14# zN|9PVw2_m%o_ZM~;`;VQ?{oEx5wFiAC4W)Q=K*@-yxP1%%~wH~p@9=^YQGG>R7%1@ zvuxHzFjJMXyAO;aGiiRaXAgrMiA9Rkn)4Klz2(A@@IJ#nCsHfPf{e}Q?Rna}+}-h< z)HEsI6sJ)?_QIgaiLB7H6xBdC2UkBN|uASpscVhh%+3Gw+3bL~QBy(6_7E1Y-Ez(Qh zj8Ib^H`tYC$2O{8{Je2@+WLvU4+cF9dJXDhnL^}Pbm|FU%Pw~~ThWfCX$49zK0``I zp};pl4(MZ$(5bhk1nAU#HE%c}flE(kkm$>Y3@$r5AV24~B2oW+Sp93dGm>88cBnzg zv*h+$?*bHD-0KQ7<)oVI{mLc265r?ttv*=Sby=x`aw!bXAW$TmvzwjxnR{t%f|3f< z=(*(sQh6~%|Gnvw&vlO!XwC`1d|l3(1v^3j83Ig4(pXRGG!6XTKR;e7rL!0XX9{{~ zgtxJag9j!D?a0Z%n<#Ul1!K}yfpH%YpWFsJ098-O_tQxmm{3WlGU;sreIXSzmdJrM z#ny4-s>ZPgPEFQyxwhKOIR9teBvws2Ubml=QVj-mAEz|fc|OV&&Z&Q{5Z8&SaEj~G zO_kIT3eZg-vZ9V{JqbPfT;cn(P$2$XX6*sA2MvN96U}^$St1yMsbwGEmFp&+;N!6x zhx(p%!|DGggi`=sM}!Mcl5kWKrXL@P66fZ$yg)HwKG<`W5^j$2bC?Zb@_L+P>cBxp zELJa z{Q%m$19$e3Fru3=9K6re7CqV+1pj1OmFGdIu zUQ=Z;>G7qr_y>1If_WQ%KjCW}rXv^CZ@Hj$M-}`rs2R3uEyl551*WRAzwk*1`#o)2 z6ff|iyvGqD?4P?>uH#Ft{tn*{Z-~6I0btJBV(m zmZ*y5W=SMB&uq?HYzxUnnjeA2o02qNFd5zkDn8B%BMeulQySad$S!yt=ve(zKw4_Cer{(qsD}JTEA&ZOo7Yo2!(iW|xPf4FQ{FS5+H1t*}9fm+c@iRRdHT zO8FZ5>Q`UUs@&hvp#RqM$kK^Hb?O+3pRbLQan!W%)yO z3eXs<#;oURdfBNHsOm{^F)JxMaewtZkK;qEzPEkP|HId$7|q?TU>uJ6SrH>3@r|4J z&n@lYV~O_cUT}#Ru!JtbhNWVaPY>Y;NCMk|pl;0yo%i=Qr{C+CaRakl@vt+0@Ofw; zc7uNFZ_!m>J8c+mk@(&`0l-(r;a~Y9jv%!>roA0CS4e8}mDEST{1mK;L5?L6?4W%F z@XceWLO+;{9r2#D0Xp{+#O{)~BsKsjOnTKNRtqZ4-=j#jdR>|~ay6Kb;!~zo|J)r+ zl!7#g-GTY{l3OeRzoPre5-kKJa9B->vwA*>qzwW3n7pO|I(AhA~&uQ zWJi6Hlyi|Skz%KGA-mn1HmDI?sWTe=e+-H^YA#Kt_?JenyXU?T zm>x`*42ks$Y%O=SgmDQ2mFfK|psUH|_4>naanSc8a?;$&)S7 zme@T>bsPpebk+01INW{sug zO}v9t(XvizEG3&8H_1#K3#D5EMnMFG1!b-pf(!^+XVX;INP=|;)`oY!q;LJj-{pHx&hN?9Daej!+Id+#_-SH1YNxFbX--v&y782VVW}Qmx(a| zC(E4S;WBX9aqmIkGMTGrs`n0uO8=|Ot9ib4^^%i4t<`N{$FK89~gEPj?gdkgv%LEf<~;bvx0W2 ziX(#Sx~~vnPN8~&JlX@M0upV1YEiBQA8id!8es7C8@tlJJ`gE8n<#?`_m!9`?# z;V&>G(K3C495Jl$lHD#&q>R%4MWNg;^ln46AUj49PmwGes%K#Owct2&*kOCs6~qy6 z(^cSg?`aQr4sM8N&wecqWrHF7CYZNw@}{37GChSa&9#rvQ8<(Y6IlWgkB+tHFHhc3 z)-rF?TI^N_XFEIZ;CEKJymM0d+^Zhk%mr>l+Dp1$Z!K})pWI;na=WbR8@#k3Hi?>8 z;J?JXq&fX$e)fET^rKC={m^o`JQ@D?gjl@bb=n3jOwR^Ne-GS*)Dp86w9oZH3AmEB zOA6?H0=+#?QVG70L`p8!Ylm&IPuOfb3NX!CueS!N`Vn_iT#J+j(}`LsO$Lp>ah~u! z{2mI+`|-YInC6a=6PvCMwiI*H+$ez6KpD2?i1t9kV(N=-7eCj$m#o z8*HhOnMdQ43AG8Hd<9>9mkEp(!)WcqnEqVJGNE)%N@ z8)f9nIYmv*OJRxZ?E;=)m}@o*z3O0I&kcEL=|<++{`9-ck+GQ7Nd37W1_7) zWu9NUVAY;-ND~k;uJpYb*6_&LVbo_v?PSrowunzg^kEb>&GCQpaHWpNzw_aJgbP9X zgXAItJ^==P1)?#jVX1czRa_Tl8bZWWpF#(fypOa|hSQ$w19M2cJHq;|;l)?hxv0I~ zYYj}F(&>^=OV^60eKzTP2Js2mKghaaZ3^aZex7|^3g~wsIh0kSYjlr?;#K^>OG?>?XOmU z$|o_rw+U0t?>1!*UN`zwee20LS}I>$5Le`9tuRR^e-WoA&EmDhvl8hM{?nC#m$2!q z>V-??T}b0Y@F#bxaJW3K4@9G1)Kj6_zsQ{sEt(c#S#|Wk*1@xu$d1oxkWIE;zE=ET zrGmaKp6s$JLO&_+`Mqpkokt(^#`88#GsL@;?SSn%kYTBjKauw0fyshe@Y5Rg((JX z189+DmDwVhKJ>I14Gnc zxKpS}Zc$Bn^8@z`@Ancie=Pddq|E**?YVx5 zF?M$%Emx?0J8+!Bh(9FcIPepXx(B;>zSg|#ZWIM}h2(K67OPdJD)4;eTmdc;w(i4? z{p4y*6RW%BHd>)OgP|<~`DdcSG2N$;H?u}7Bg4{#BBw2#9qTs+_S(IC9tZi+WE8b1 zk}=;G=RFt-Tz1Fa_q;tJFeW|(YeIZihEx8MzAr+Hf~6JgZ`_^KR3=s ztm$1~@A7v3@gk_qp@PQj!AGQafhQx%jk)(ktqK?QZKHe^Z~IfzQ0Qd2At+A1>py_G zjy841x&K{7NO_Vx9lHJS`F?;YP6m5(Vuaw3+|&EZ_veGCq&BdT*6$xCZ8Ms1X~CMK z4GlvU{Tz?bEyr;#`W0oi5n--0Ei-Azn1gAg@!3~C%Id4276a?{J3XqCUu1)3R+>@B zwg?(N04x#X#-U6)&&C-BUGLGaYOmBh5}`qa85jD5b@{7&ktkg8>V?>%KLtS{~ zwhTQgcr%ugVLK(~&ArpRpcOZVn{TFuWTIM}TO?2pr{DhaGi_f;jFypgn0*VOQ!`MI zSodW{v~!l1&W@Vhjc2XZx*bNf(Cw|aTicIunlc|L=)mQ^gDLhhS=wSPT<>eL!dUEO ziF>!J^!OkM>t^&2a*b>f@$nIz`0wi^)|Ss+`=(2OqP#1^oz&n?66vi_Z^G$WNNf-P z=>mZD{+)F!3EyK~z^FLp>v9|w*yu4)D?X_!!FZ{Ne>XX!zpti0AbzG-9{un^J_8^@G(wozc>x}t44wb*y#G)_ zQ$W|UOqIXD{Y%M6c_0i9cx{aT!a!*@K>ifjibq5Ky(2glfPp9<3$gztZWMTcxKZOx z?}+|;M|c!y(M3A<`W!z*MGyJ^Jz%6ifRjW|Cbr&||D}2=kf*M~^|g@yzjsD^f;^4? zn?I5e;LlHQqt9FFk4y+2L}ZH`tDIBlHWppwg6c+`T>*|lY=3MQnXaMg*XCq8@sOr3!rp^3waee*$Las#42__ z^%>%}Dl_zJQd=c2rUyyWW4shCs5cc;S(B%qC^Tyt{(|lLXJCwctzQ>^L>MGYoVW0M zz5wDnjm3C&G9VAPZNdc>Fg|T>5yrto(F=WAa#_JK50daO@Cetw2bheJQZ7Z_QN2uK zba@h7LTC_x4F-^MNd`z|5Y+k50X*cgyQt*q2T~lRg7bbtb_*O=<^E6iC3S#|c?vv$ z?w=IUZu|ih108lq{VoAknX{P{h$B4$_IASd$@|*_wtO2TbKnKasNaY{u*w|>!wXJ= z%2sX&(||xUkdxW{RK%RZ_@QuMFHuQoLWa0=<-+51g%R}Sd{1K1(`o01)WZA_9CZ3b zd%bGqb&N|GnLy@ckTp48!GZxX}-@-*t)hYP@!#PTXm@^t^QXiG&I% zpmKE>9G7+kabOS70kzn~0VD#h5tEa>yY5pZ;is+o_SkjMK0;wOoCHSpr9VNJlfcm3 za0Hnk&{|YW)oD2^JyyJmK)LeZ=CgGB9B9;Jfjd6TZfACKa+(CfO7qk8;x@3R8ZEps zw-tPw%3RP9dsBw@HlN;NyI7^H5X+5dvJ>@A=!sE*`= zA$h5y4}mrdxO@`r@nWN9jCzx-XK4u3b0{=(ogTIhbrAdb6hzK~;NCjx8QE;l4Ft-x zeSs%AJxFBZYW@^CX|+&+pc&+)OhJOB#&Y5<9$2SgGU}+GbpG}Cv-$jteVU-n!-XWs zWFtkG=u*Tq-@S>dpL82yVS4kKo!Cy+e!vf0sN?G6s{5kd1xVivWefU15@o6YpM;U` z!q2$hgDbHmt%V03=GPz2((bGRNy-YeRAsyam^m4s8d>l;qEvpCBJra@#AZkUBuf(_ zhJgCt)n7)%#G0M-e-pQ*F7s2jdqJvgz^gj5|vqWb)hePj`2F= zN)_08zfcwM*T0_ymt==X>goOpHW!hQ-E1fyWyo6W zEG(Bl%>1HAKAQnF&Zx)G{f7S!m4$I#2@$yi9!3(_cguixS+gE%38;O2eThGSQxf`? z&G*((yT!Gn#+m1#n}5tl!26G-MamD(L##vG9+uF;XJFBr{d^)iW-}k%w#Nqyxo=k-2vSxcUymIeeZ8S%`e29=9eNOAnPctpx9~-2_slpDEL`UAuWN++zFJDn8=udd4w`^lT`So@!$sK5Pl%lNz559&*&iYDQ5l4`JCZ`r+MlE< zWITUX8gd^i$E~l`OTR2oG{mZ{qnXa;MeL(rgo)%Q_b8L4jeD$s8BY8+;YXM&f^)TO$O#!5JHmiJz!C_`Af2 z7Ldz<$?jFGSrA?7sNhoHXIz5oA)@J`-s=@0wlOzp`=M*0zvBds${m=6e;$FwU>jZ3 zlzNx`k+%+f9*E;1nJ_jJa_!A`{S?7bkUFi&axeDIZYE2&v~Re|94y#mBTbf5kZj!A zJC8Tdg}_)C29^`x?$x0q;E7HC$iMARHSjj08*Ax(;=}ZWJz&QLvYkdc z6zi97Zid(rG-5Wr3PG(fwK?2}(Ve~{En9hZn>b+rhn6gn2Q4Hg-LagDd02c_*xbMn z!0z;HLX*cc_yaBgF+iD74^He@hXxENJvXJ5<`PDDBTFs z4Bagt(j_1z-6e>0cXxMphjdAUoM+y>_iw*vt@G!**7hyP+0fZC&$YL@o*;P3Lh>rY#3Exv&R0F!O)$7N&#?We{p^3Pp) zqQBGL1cBVoih+ia=a6thI{W%yD=}cAMB0>@%r}Xl;aL*3LL0U`7d(l;y*F zR}@zRs#mGp2;p9~V__q;ducXlI^nqclRo$26fuP-5rw$On$#*lss5go)j};y?}O~2 zaE1o&u~G0G*lgSvx6+!`Jc-=4t`IHf+A(UH1FhlSrh?iS9=C~@l1L#w9>>A=@T5sO0&*w@O^Pi$qRU< z0}kostB}^nBU?w8-nS^Yy0Xs)m7EQ! z4~SLAbW2p)XSnYfvSGn@F~j*1k0I~sIgHJ9;7zHOKD-#dUPKp%XdTGyF3RzjF0$V) zrbfP_1uucpAmIULnT{hk!rdxA{5WkRbJvjiq(4|w%W~k~Le#?jiZ1=?TiHzKqG4tj zZbj))`~x2Mv$h)ba1Knftsyv(Mjruuym)w}?KP^(JwfdwTZ3(W{!FnubZK(v(3J$; zGl)x!fLyJt(t&7St*ct^;C4Nw)J+IHnw>la87f)=os2t=l}6hu{~IbA$56JHyvJpF z?8piAr(JERK;kwSx#W>B_=yI=|6#7rWra6kWJ~!1!^8>yUG4+r?Tyqa5o6=5UfASF zE%}hats4MfQ7feJD;He0{H5||ll4(o2{P$cZCmf~2xSjU9p#5P5cT7qf@j4BAxIEn zMj!n8*2JeVJI6TUfyph7#;AKZ_bmB~aV+WleFOK!?>L!-y{P&oewO$xPw26SrzJN6 zGkpRmo^dlfgk|cD=j`g6N5ARs9q=JO-WAmaB?r%bMI!y8_?P?4%R+Gf_o?vB^+X+B zG-O`{$e&YjtZvXBO*&(C!*M)|UV}LPucqmKoO7C7JD2^{rztilvZpMpinQ!DtF8)6 zb7K6CNQlCNpoy)Xp65A#b&Q7!% z<8=cD^Th=0ru7qyEj0rM_Z+a(Por7&;HI85yQ4b;)YSve$(_lkeZ^LRJoe|THH=IKIUdm}X$0pq?IqX;mE z1lKaEWDm@L+bHL-cEK(@!YOW3Qs?8jjq*bABTp?{bi7(I+$@JF zu+UD`(##r|7vC!Pr{hd#49OnAD*T|!@waTm^$mK5A#u(5t7)EIEMM&tEV(%25#u^Z zokE2ZWSKEX4Y>Sa^gWiwq^o#J9IsKcl(A&;Sp2BEGfIi@Tqc}ME=wv$?ySAjgm#qA z?fyF<$dESMM67O{^PBd-4XUFnN97EYFL|aO0z*>p`R0cWKYj)q$}8Bk$KyxScNf%6 z>n$|iyev{x@(6v`!^d;{GA2S?0ZJcN7xT{So0WArQu^8oH3s(8_ta7-uNL@R=BU$`E96((rf8E?wj0s{K;pPS=H*ubt z<$q*7Ju#~@f6qhi{k_A}wrDIsWkFWUof1R!sbzD6xdSTPSn!jZq(r{C zmU7(G-^scJ@KG8RJgiIYKS1?k^3H)6Q-JAj&8I5b4O%ca1+uCDU}EjvQSK(^4rEjw+H_d%UD^7WbmThjo@2_^aDPCb6`*2${Hj3NWOn! zl9Fd<0al>Uj>J^^3BC9?%5K*4*5E~%#Y84JuNI=BPE7~)bP&6biK>5H<{{v;7XwT+ zW2Sc?OUp#SW^|I6{+eK+CnYNOA)-LSlqpHm;bWb6d7KojtHrN)+3Bj(lu$mM?hneA zpPbzysf2{Q{x)XI5j7gqj=G=6d!4SoUmN(o#?}3ikFK$XP6323>gV&RW;dLs(AaQl zF;7wsk2ZVx5&;x0hDl3}IQGrQIFK3X12dnIIbpC0Ck&DSOJibxx(7*+qc2Vmw=Q6! zK01Thi?RWFLpf6vq3&io`KRqlGn}LM{S?f`}BCcTL?>GPr z*X`ycX9F6+8E{|FeinD2F&ex${^9=V?)@D9X=UMoi?+#>5LHEfcOTXOf3x|!#)Cxr zd25DWMUbN}*yS?SXKjWl@qTUKtP4b)Png>#z|(64vMUaki!JFNNPs11=F}kV;r@I? zmy{hejH%)o_Tqzx%uH5Fi#xt@x}eA8wS&;PCx{GzYvOvBZOcQ>vT0bK3`-LgU{uxY zNdxmklYy)TE%_vDzdxRT-_kyfI@4W#d9yQP^%E9p) z9u+bA;XAq5q*2XB7>dT}W-V9g4E%Vri3$Lt)g09L?73B;o_$sOOiu+?dpE2lX}&Nzni5%7lT!Dtr^8cvZ0AFrbo zj6m{@4T$|P8%`rIuUY7)@j9CLn!cBA2PL0VnkqFmIyV5PL(R-A-&B)LnSu_~Dy%sE zm5{dS`fC7wrTR_r4cRI5HLr3QW+?bH+lX5Ee$~_WZMoQ-Ei;s^6~i1z;jP#Ne)u+( z&*`=RqT&iGCUcEJ;|vIOwXNkc&0R>#@Em*xqnqvmC9vs3p}NxEObH9@%+66oQ^%6T zVgFb2@PbaF z-*i1XG%SG-f-A7n;XDg0dy8@ak{AFOJ<(mjqE+i4l<};1>x5{C%P>AH%&JuuSba@cm~fpHj%&Z}BA zd?!mo6eehvS02okiNTmI;}nM@z!=4FdU`s(P)^sm-A@e*!pR~TBlah87D&XG8Vudp zq`6XtJ4q5->+uGfRp zT&cd8@6nkj9*gec{+H+sI}Gd}-Bw3v*c^Je7P2INe*-g-T1YRrX0SN6r0!>K-84k- z<9g^i<38hqWfS{3%x3TpZ|K+f%dYj9aY6NQ45LQ*b)z*nby}2(YKdExCg1CRUPCZW zEn5k_3@>;ldj6Gl_8}nQ3u{*(5oW1cj;)D#Bgd~8PmXA|FusKZdfR*>_SpSuC^@W8 z8%Kp4?c+3X>3Fb77wUoB6P|3-vKjD-!DP<}#zG1+VZ{u0TrEEAdLZ@1Oof$2d=Qmt zqjJJeB_u3nTdGA8+V8r#30@3>a%V&&sX zTjC?`*H&JOKfkFQ+x%tEFQ>+`2FStb!C6x5P9DTzEzbAY6GHHGrWk~6R0#)IGS@<<8d;|zkmKMu z%g(;WQ?KYiFNGcwSRAi^1dY9iG^8|OS_jyVI|T*%26%z_1dZok=95}2?$i;!99P+Luh@-wVvGujHCw?1T*P67& zBs`-VcY!YQ8+?wG%bwFQ=BY?jl}#@{yi3Q%M`OP3&{!b_*14+XcZ}!Frwgk|>VLyz zcQ1S*yBBM}Y{xNe0m=IO10F>|79KRY_Dh93-6h#!bpVqekUS#XK~c7bvo5 z@e}7}1W92Y@Taz_(9eFv9$eGrM96xBP?Os$>e`^7;Z9``Gf1{~e94UJYYPIl8(b0W z-PdPdu8s~_X%hNI(KS|~^Nn~QGE#R&PIGx9r7_%Bduku=NfBL0fOTvm{x6#dku|~7 zZ+;oVzQU;+(%xh~rt(AcO9cDyFYra|oDG;QpYkgT9wYtLmqT8KmoXV2xk;jau&_O> zB=7dV=$86}V~OoZ@qJtb6k+rEEaBDSRFN)f*h)9k#7SWbI@s;aw4|5MBebipxKOt! zF^QMS8Gy3Bqb`CXX;Rm-%}4@v6T0BwQqM{O^ue9$k417DJ=`Mi0jVL(Is zy$}>l=$^LmqqCc0){tH|%tgz3B%SQcd(i9^?j#Zt3-?(s`c&o*Lm5~m1jJn=!mS@Zn%UD*ouZt=S+Nre zy4Q{;u!bpAB=|WJ;crX$_IxS~vZ1+a3zjuaA%nNtCT!sS>;nDJC~@#wQr6ROAbogI zqSSQEIAx9vm)WrJt$m_bf*Z2rs?Qrq+W~O>F_p_IvUXbCLA~yjkT1pY&r7lX0*~e^ z;OV#yA39y6)c7alC;GB?>oXgoqN2V|E@}j|_|9{g!{AwVU3GUecby<%2(FH-#In0a zg0Ff;WKs(Jxk={Q2AQmd6>qwG$`9ylfA|e{__pFIbdj$4h$#G{#@oY)F^e@ z7SMTFReg~eD}?ZATN=ekSV%>?rwy&1J1z9CV7Ff#`?Eeq9N6$--8cTVkw{ zvg(1&50_d~2*2DS1WxH7E%#?3g<3W8))k*FV_S8q2c4_oH3j3|J<&6@d_#g7T=l9D zg^eQyt%5S_oMUnE*J$VX6Yo(qnhMR2?R$pF$I+P&{>#k(s!xC%t%9Oui z+eD<4ZTahAa9dfb-RVIQ{Z}1CB!9;hIZD50*e^&O*O&fEbUa4>&4apZtLLxyiSyk_ zad_7^hKidhZ>&%^jqfKviMokVIZB$*yU7U&xO;O2mLC(lN78FIm&>xg{>x2ZZyxX0 zB&(dB<)p{FkrM`7AcPm!28+RcJwI`Zj*%V|7|A!Gx;y9T@(xKesW;oVSa1+)uh2W? zzSR_he{bu3s3e5hcPe^VZa7lIayeF4SS-7yYu^U1Xq422lfYy6+G(r`LSFGAzl$B= zbAWO)aU#PbJxy@b6yi$(Xww>np-8L0N2`CvCk?T{i7v~i64vcL zFyRYFQG)apRp283D4E>_@&`}$hWyQw>KA7n&+N}eY)wm=l~w#;UJX{{cTDGk9=D%5 zQGLyGMOGa!d$k#hVh&R@mYgrM-x%OugHS$mO@Ze?dXSKP*9|yu#>CXhYY*dV%WJee z(`WMw7X~VA%gTh(^Q+%fNFlGHoBe18Hs=Ne2!%`!9HTP3o-rK$$u7xOO6C?g(^}FM zsW%m*H?Of)xiBjF*g?6n&=pB30Rn)6<)8ZucpYy;VMD`F^PLTB<6pDRPz0hlV9{9& ze*?N_Q>>QiRRO0mhAhG#6zs~$r|^*bA)=inDXjNKQW}H8opOM{C^3e$Gt#SujmMMe%3LNl;r%!)Za4a+mIY7K}>#_5-l=)0CB!oq@f#G=O$2s$PSQK5Gjs{IS*u zJn67yWgS@PE?!CO^?~tb3ycci!GgUHOjrkFVZaH|2OAg%;#uMWmr*`x*(II-VN!*} z_)iy@vbI1iXbiYM<~vmacBsYRC(p`<+m5hiFuZ?Qvj3y_d$Tj4&VfOjhi})!7#CG%!Ds^ zT%u8tvk$Dv&KjuG8>P4is)6iHA4_zLfsRvqd9<|uBXk%xBn>2C6oaMbRH`%B#LpZF zxGm1aECEDGLnq3!kfrCZCncYJ+g zLkFzKDhj~dT@11a@m;+-z{+ATm&o>BAo?EAPrke!Tmk|4S^x@7&d_No(b;EE&JG&D z3fDnGe{FZMKQm&?3gy(Je@&Num%CtK$1Ef4qVb}5f0*xB_9R78#thWdw);4hnvMM+ z84~hbuPp%MH}iA}Fq}7-jHDGoDr2xC9JJL#rHhQgO4?Clu%8p!`s5=JbaX&vxU3=< zA=dqx_+!DxlH%nR5T>ewITX@$s^Lij-0B>*+~exzQ9pC?CyR-8H69Mm5@EZr+3Lw^ z&0yzFu$v5jfT9y>CRxiM0jcM zdr39s0|%l`rhcrIr1Y^PQ{np95*=MZmm!Y$*QZ50+WUbdj!agrqnxL=OGj)ewA5{6 zOha<4rVrW!qT3cr^;ONXCktQ=9&cPF{aqezFezYC9{Cwqk}660oH3y-O@VOR)gkf} z@-p&tq%6ef)i++pZ7S$89nPOqaQ=3187r5rXMEv*rV(QON(A=V8v1Aw) zCVm!3B>M7mnvmD>1!!%*Fp;1Q=9E?{VxUf?N+XY=@i{_WuXVWEmETH%)5}1)}G@3fcDVAnZ zUePHEJ0C9>jl*qey(p@*nj81<0@nzb24%p?RmP#_@+CWUb_sE~I-WsQ+D-{N%mk8R z>S`j!%O0SWEcJa?c@$lICs@EwPXL}ua93lt=*<~QzqpvM&>~xpk$gRt)qFtH zu!(BL`d1bMkC7>DAY>R*Lp%HIXUO9)+gla%LdTrX+Q%R|2TUG^k#Vyj;1u5r^t>bH zVfdq!mX^CDY=7^Ko`?Z0+or9^wAmK}@0ek76yYLpi%?y1sSJ~4U?j}^_D&J9S0Wtj zrJONpd1YEZaOO&??x0!R7bAVs^w1Vd&sDXVm!fOq&KA;QKtA9{zY)^C^UbRcIHq*d zIRPQ54qUFN07pjm{FG1AL_4Ap*iD}Af|L6;tEYn;P*{~ihuCQMvvcndNDW@V1hVT2 zrt<=f;|ZY1z7Kaz}-I!#bwkct7uN#YEnd2 z7VB;l8=dx6{XuNGH&^j%Fojn|FTXVe<`;$KEo0SI#xv4gZ_S;;H+6o=6T4{Kb<)`P zMNzYP-haLU#9b<2JvefRcRT~1_1xB4;KlmmV8d>V2KU^De`;c&UWwM|%an(M*#4ly z$qu`N-O$ggB_i2fww$QN>A%PPHAdh0oyKYJbWeaLf~;A)rKv2EqGt6?{qMVo9IYJ7 zG6Uc#wQaeObkS|KOEprcNZ)t3mZzw{R?HzN6+IU{wAY*WEW&3MOvw z2c2tKOneTL&?!?9{}%{l1ZC)P7a)VTI-B^*-LSY$;vQYBA`gKHu}er9ayPJ=-M) zl}_&O<=N|7+zwnB8GsE&)f3wvNet2FjmQ%f*PqQAUAqIrnjB%9MJBBKnsLrLEPjDf z57KGa-`om?6$k{rR2obt*k%G)EQ7d#7YQNhG@D+tjSlWPlM|SCYtr<5&d#?6cFH`k z^|)<{%(z|{P8$nMh7uh>f;Zajuuc(yg#C#Y4C{Q8`Uy2exK8bEep}ABe|GnhK0k*S zDK2B2V@z-Q^O#2l;__AoRu_$bg198x-v%#&@`s$h zia43zw*uJ{ohwu(*JSj|f4FvuYvk3IKPr>hD7NWN?(@2d0E$MTEWYJTkxH8bBO?6E z&d$!yO%k;2P*|=l!ml!MT2S#)MpLUVCfk-ptX0AQIr_PBAx^+=B_XG|q5I&xff%Vd z8V<|Y(v~;bpP?@cL2h8F4H{}v{imT0RH~bFmv4yrR;{; zBJ!fM0cq_-z##0c~FoAdFDqWyr@i^e>|~qau5EPf#^9AjHou>TCm{R7z3_H2T>TR?JCKtNjmI@zwov4+*> zA=M>l+YH$bT@KxpA9LO}#IRsXKe=6gy@WtTpV1c2w2k= z4_QaJ!O*n%jnW}Cl!y`Yi9732=O*?*6l^WbL%=N>enF0_9~d5uy5UTLB{%~(EgeV( z6Igz&QLJupqxQbH44Y9qdzr~k9teGL||hfg}S|NA=^!6?hODA8Lv^6&L8 zDjYi4qN)zwN24K?Z;$_TD;NBAzFujs*>aoc_@v=KkAw!~%#fA0u|-BkLWcQ;mq3;~Apc*QZB zQ!wW9Wbk@$EhKm^G}XRN&R8_c4sWy|k;CBqAr3OZz#a3asAt>G3sbTk0(I_0>)o%TkAl z8`t1Tot+DBIMkuNbv?^A>W}H$vHq7O-JM{(5L<99xB@vJfl)+&prxmr61&+bnLd`q57ZIR=o$vR<+8L5$6hcx0kC)~ z15dmwsJb-*{z4LCF56{B*fR4&zP1!G08j==Bmyset|zSigXGHo6l`1jEK8c=$OQ7R z*>M9Q`P%S)RKEuD;iA~x(X%%U(W6)j`)B}(r zet|XXz|!OZf!8$t=hkky?D;bIS%J1K!+91A>wlFjZnA7agd8d2rn0v1L?8dyI|0l{JNMF7o{ zGIjT}KHBj*N7KGkzMAvPpoW|l$#UmLo=31crUqwFi#74@n&6zfM-nAa^hsIvmWh zx`K9y4EL3jpR&~~ux@S82mw6AF+ZFNV8t5)&jC!nxJVmJ6zExU zUk(IaC3?8b+H`=?6$3EN4d*GeFxP0~X*bb$UlJcMtYgBP;r@n&w14=V2~}?skE{^@ z&_*0+ewDmBT1t%wuHA=m-MPHL12+&#N!kJPF8Ld^LX2fo+gE03t_`#)WWpdWw4|z>?{8pE4qhE?rT8@br|v5MGra) z%WX`S=;^WE12KwjzYmO~s)>N0LVW@=0obhdc~m%+gBd5j>K8-;2(--a0S zCQ{7ZO@2L4m&&*lD5rg{vMSmSCf$@3xv+|j@Zv_=U5(n>2g2k`^ zhk=Jei|50iUDXE){EV@Sqa`i#m3S?JdDE3xG+Pn4hQBk1dU0yfQu z75zN*>)(ewAq~GSKq5lRKxsNT)f5|F60PEE^5ySe~1b6fm%)DEZaWMl7 zDQ$^ z8e!WKoGO>h!I3lO-@pg*yQ|}mM^v_kU1;hvz#|4U*XrM9gW!v<3vBcar44n-vJinwMHIC>8>j?RV82X!E_3U*C%y8x4` z)SjkR3tnk;=2BVy%UMI|jLMmvLw?rUFAc{QSJ3%+Y0N&rtGxu^o?W1M>>Y#aCI7UK@Wx2}>GH{y z(V(f}Jz~?|4lQ0Wh|km;O5GHAO!1$Cf^}^7$)wRwW7pp$$txRa(>{xu-aQy&mFBKK zyAqc?f}rw|SAlBBsLRCpg*`^>yctGc`PUGs1*t1i@d$)=8`lg*8io4=l^j`2_m8zg zL1@BmFW!MU>4OhFGNSAGb}SGlsZle0gcF87=R_Y^kGdki21khT_&q#Qb)G2p{KdKM zr57WTZC`d%`=mU>5a8K4Wf8BiLlF;&a{A!zzzO}0BQ2U(s~FK$cVpibmr1r|ebl}1 z)$jU_3%nMg{(!VMg<4SLbMXxF*(gdH8XD~ej7n$n6TfGtxUiXc-+SrDs&%0gVdF+~ z&K3Q>e>mmIROx0Xr_taY(B1iOwa65>=yiE&viUruhYx0%2xM>_Ef<|GOJZM0L==3A zuR1i`3E(K_JJO?{&%zSIOBfq1hd#H$G_qD_@dESy1rTm zG`e?92^sS>wzdjbh)V=?fkMY1KoAW)ba~L{9QG6hSpg7LKKs%uv_ssdK?sTO5hh-> zNjV$9t<`Mvc;453W1ziFZ;cjym(AP$Y}+*##Lf3S@7*Ad_lq!P94O?YSq$CJ3%pZn z@m4ZZu_h4RZnAk?V9tG2k`bzb}U6Hs`^beDpn(cUEWyqK3`^3B3?A4sJQd?&~R@6Oj03#eyR` z@L!QhmeIg~94^`S5L@sCH-RVvxa_SksH1fUc=@j~!K2zP@G#dLNz#qLNj*W{R`$Ju zL{^}Q-O(pfF)m*oe$ps6Qi8+Vwy`Cws8})UcGjcw#l)(0Hiw*^c<}}Yo41T4lFHAx zrvwy18}L#u>WD+3)$TB|f}2{3+%&Vd&>-QVrphjx@dt0hnNargN#=w0N`iABpYLid zwhUUrVIFq6WfK5p(Elme>8npA1R}h+C(_QFpghDwFzg$rJ~AP#-hPEY&W+CK-}%a} zbre&b=Vi7|{hLs4Y>JM#BHy2?*lHZp4o%b7M2}+A#n{*IW$e%nmOnr^d%i%N8k17{ zH57nAly$6M5-pYgm}l;;W~CSj7N*5ol6n_|tub5;sSYfYD|A_WTV;K)hWMByka{&+ zG8Z0D-KlGE|F*F*p-3OGdGOsF6JkUQ;rZLpbVV=sDKig@al$AD)D&yF%Z@sUsbyT- zorD7rOe?Ie{9UghEO@>8%(jb?4Q=ocf7kKtIXJi#*o(XoZ|G(a{qRP_5~Ce=o@E|C zgh!b<+jE4U_6@4=E#=Wi}?N z@o{z?g}rNDwcFsNRyo1)T~5Ulv3E~8+)EcTL{5iKiaBi-d6aI#iZY}Y+1&NKSE-%( zOV6_;;gJf)P79}B6JB=M2b5PQ?X_MZ%y4)7=sw2(k(j>-mDv&T;QT zSkbV2iu4$F94U4Q*;5336ROz}Yneayo%Wcc;T2+rU(Y`GJOV~ug_~*uq02?A4{(k> zsOVV=sQO$x#I20Oq7lb#{#D-QE=XA1*oiw>=iV{sV~D=f6h2Anq?#J~4}O?#Ms+oZ zP}rB@RZ*4TPYaKU*XLgxJTef%5|E(@Of;Gah>p@;s3?mK&inbeT9<2-&?SIGK8iR2 zNlY;m*Fge!j)b@8I5|UVLVJb>b6*h=`j1C5o2=AZmWj{Xt2vgVC4X_nsoDlo{z^j|C7S?!{vl~Wj_3v2~Nkz)nKF3#>wqMsS{av;og4C>gc%2pGRJ!P4r79~g zZ5)HO{N_I_046B2Y}a*G@z-{yCm|6wo8{S;on}^lh)g0be<594ltQj_1>iyhbwgQd zxM&z@H1%-t_WbIy5GXR*1~EIY!(O$!3pPApcBQfh=~(7(Z92 za}7#9mSmD~7WqBmBD^F1#Np@0@u7|^Bguh9Eg^-CB+~d-+4JTkM8u6{_5Jsauj`e? z?RiHa#@G?9Q=v$32}0d+ZxTjd!(TwrT4RW$Ixiuz8<3p}S}gI=3A{>M{JY`w;l9j^ zosJ)FKHUfvw1Lqnp~>#>PxM0hSZ`*s8^nwIJe@-FDpJ?%hVHz0Ly5?d^tlL|*-U## z_ela->c>y7E}3t?h|^7YTrtKda5@pewu3 zu!CUnjx_o?@^||0bind3i(*Iz@MD8~<=q37(`2ha9pP=-sWIX|yHPM?Y90oT2b+lQ zgcmTa#SG@)=b)2&kLZ&v(RyPm+*CzY2RGGN)s+of^0xsBgI1UC1poia5x^E&sOQcU z2F3qHm~O-Vo9$;tNv8i1ke<>4KR+KP>&$;0{*JI5!1+@)&};A?Z3r7g5>kT_EdNov z{CWR@Cpf0ap8q#Qz=e!I#Ao%joul&~Jt`RHdFWg-lKwBo!3y@Y|IdC3d0vgxG(sG& zwlDFM>P+h8y{GC`axxkmJ%Nv3OKL3BN=nrJaX($%o219X)TkANiL2kjWJZI0Z&z8H zKu|#t4st~Qvb!%41Qj5hx+EI0LT7x&U!WM0Ysmhgt~2Y>%#3L*^ODO(g5M25tf$Yw*Pol!phyg{tsn^T@kk?+I zPi`?(KO*0I1(*s|JB&%<&sF7E%D8nX5%!G~QJ4Oz{|l+G_+ZccKj{RZ9b|*(xY>vR zrk5z#{#|OMx7>%|vGmVXm{N;{po-1TJD=9;`5Z z5GvdPm4z2{6`yvMZ@@#Jx`tJhlDKMjc6IfE6vh-E%)$e-`Vc{_aaL(YREb*0{`cyZKhba$sy;3O~L}NQpu8&6kM%yV*vh}H0y0EjBxNAX9BU!J+3zF;eZfI{@bDL`_KiA&Fw5;X#H*^8 z!Qt)lpj5zA;BcxS{!7HTsU%C4%Zid+~sA$!;3s&8U?{*}dZg7c%R_0^1O0gQ7& zkdGm=|3W#gflrnI6EOe7dgucY?9HN@8ePwjrKRZTODDj0mBQD0f(&5M(S@OkC9`27BcV1&9oSk@n<-_A2E2Oq6{Vxl z(7<4E2ILQ96g`20#0I40DhN=gmncd5JVQCl4mKU?;ANhKNM>W1(4UMUZNJ4;@(9au zssoq~27OuBHXm8h8P+pommz?|tgSwJ0OS#B7!jmP`Il4?2LcBsBO#zKt}lbIi46F# z#c=&D(yq->-E%JDuct`=a2TV(YN~fAYtt>)fT4>Sh0n76notoCBBs{!7ls;Vn>`w2 zZ@zphH()(>AA2Q3X*w3bs~;(XF#?M^Tj0=s}&}|^ha2n^TJ(k1oa9y zX6c@=G@kgrDt#3SZ~!uZ8Xs%?t(w+E{XxV>0mN)^N7Tj*23zmtFl&(6irJl9@m*s+*nw|*;)sTgEHx-)hGKSQMv-KOq+B+w?DR$Y zF%{O zDn4)sF{KikAY0+kaPfjX+$G?OK^bLc2^i6q@F!m0=5cNdJGL*|GGYuye#3dgK>ld}n=O z`vS(Cgjr076EA~H8r>%*;fPPxNKM!EnP-~m_ge4M@I^mUen;pIbB*h}{Cju&!XA5) z*c=|a_B|E>+U|G}}l*yv2yxB!7Kdn6G%H zl+wy*((-`FebnQ$JO3Uf;tyI*c)&4il-eP!^e4GrfMJFlu1-S`N@x9a$MvjgP(;y(D7We(2wC5}h{F!(m6!_nboL68N9(%02cKKuUDn;`3O&M{@U%u|d>ecJmGXNug2 zE(1xz87Vh$j*;%}f(ics_GHxZoY(^jj4W&Jb(RFXY7W&!zfPpJIN{_%?Vsh}u!E>xkXs7TI5K{^ zw`iY4>kzl2{Th5_pI7AxHTS;dpOL6jb^S=5z}?tRbiPfXe%gw%1xNn2|XA53$9l$=oo%b z_&(3|hW>m$9urPB{_|>iz~h`K#qro79^N5-lll0LKY1ZFF?H!i!FAv2UQX}a@)o-M z&WX}aWRUyz`)5Q`CkmT3OdDD-14-Fgp=`^Q><7D*)!&L*?O-Txn{o!8xxQb>#4*7lh0v8!L0reuq$R%R$*>IX-*%kdjrh|0P>A zby;$X=isuD>n3FW%5VI*;MtorWCQQM)#eiepQ~TCfyYE5I_Lc|<5VL0M|a~#FCq=O za^>>{3g2hjsJ^^_{`m}t3BTf?9pS~pLZAGlez;Or(T12v#p7BJDOSS9E|lZbAct89 z{9C$*z$col*O>OQPlDou1ZhQIx4Q>Q#XieKUPBp-7E91B^Ys>r#&3U)B~2tF?~$jm zJsQ4Iep1n-{O8AkgV|15=|WrFqr33*h)~%xgTv6)-{+I=dT9X}(onJx>NsrV7RnbS z{^IhAl(=lPiq^BWZERDDCYrwAb0=iXl;O=pq_!%Avu^m>XTrRDJ<4PU{icgFwV1y1 zgsXtJZ}l!YMxDTk*{?FHMW~#yC${i`|Jy*MvZvh3pR*cb`tj7N-Mv}6W}$aA9ED|f3b{WoxZ*7`QlCC{oeNiO?>#N ze*b$ZsnCU06v24&vY+VN z6X_3QfT46n)KtW_T4|BMs)b3Qr%sIFUn*Mr86WNzLr{b7B)P&dz|`P$H5spyF#Br& z#VLv0n?G6C+Jc*HX^K?r6mW?rX8O+r3BL=A@=eV^TmJwf@U1BRleW$beR8o|$0%#N z#L&+}aGh}S!upUlt5fo}MdGsF*4ki4sJ+Yf$N2PFTRrUk*7dJX0$Y+%h#4VN&R&{Z zOZ=6RzK8m4p~)^CJs#5m8i$r=a*l)h=I^a^+EqKb(IGp&+#w_jk*`@<#_BPx5=jqQ zg>%2o;`Zw5R6B~)Cf15ax0Id*OfR+7g}6#Gkj@bD$T4eMNlM13#i2jL@zv_Znf_F7Ro~5v6=6&W{tN6pIff z`UEyDS9dp6rrl)wPf63-yLxJk@9V1w3z+uNI_o=KM1v+W<*ResR8ow&lRg`>g$@Mf zvGIIiPkJfG;xy5ga3F6oroeJse2hr|A0%t?*qodYna6os1r;QnvkKu1i)YpQ;FpJl z?PDQ-SG+)qWi)*5ju^Y_6yk!-jsL6%5EX5Um}Z^Fwqvv z=#!}ByK8cXd70IaI(~dN+eCGN9@OT?*1zz@ax)}nWrK(j5sHS9Zul}M(Pmh_ISb<{ zYaF&LrHmM-JakRgljoh7t)#e?p~<*q0;m%_pUiAU^LjJBbac?4k73*3ss<5B9aaV81fv5bYI#J~wtXFqNP?*mz2*jq?An_LgB) ztbf?3APo|NbR*p%A=2FlNOyM%NOyO4NhnG;(%m5_N=S!Dcf)yR|F`>`>pEZF5AR0? zX4b4>t(oV(e|JO=IEwpzJiBQ-?D~h8f7l*h3#{wUWEjK%JvW z`REfEF`#mDs;7zw6HH85k|UY+QtA7LBAkGa@MXoPeW$(>!dTLTz}ylGyJF^e@A~^! zVPwgb#!RApM5;0zPC$}~aK^<@ezDoJfVZK56QXC(X4X-W;4;8chBHPBIHdH7ej#q4 z0e-@P0f!o-L!vtwrxPgOQ~TeBa3Z*5j{yY@Yq5WRuMEe50z2HwDXV0|{|wqe8EzE; z#%$4PI%N*?pC54oq67Uo4x*=~=M?|l&?G{>?L#wU%aBK?rt-hTLZ>!~boi!2I>CA| zK~!bu_22C($l!3LaCL%`f6pl#2fQLxNYP9o5*=)$KV?2r(NnNR71`1!8vO9jHcWbO zno=k-86S)FljGv!=o? zC^_rfZH?y~cRbuFeNro@1j_LgC<;>$RD+5;wB29tKnNH)7Q|J{gN_`FX#zNXz~ICK z8U6r`>+a9j_P~|TFWqVe>OpAJ^gT;~8NG)F*fu0d-z~$G>bHIIX@nxx0nlG-qb`{M zbr{bSf z`s_?qv>wYo)an_4Uieuv)Cn&zpWOhZvuQ2+Uw}<<2w=v4f-;ID2{^xh8V2h0XYpj- zU0xWZuXuU+-c+982vQi@f^>#W41T(`mV<2(O4K7o-RsC`vVRlP6WLfWeR#3oW zH>U=~I@peol*suT)3vlg*IN)i;&%;2&jB4x;!020O%$Z}gv!nNAEDqfS@P#1$AdJ8 zt8V#xpmUM|^)!3={vN%L1CWzQi6N;CgrA{d{T%Qk)pNa@zXWXEV1-_bE#Cnw`q~{B zFy2XQPXlUb5P(n$V6i#;;G&=v&T)DL{3*5sTT7f}Cw`v8^uTNP*J{#t)wscL zi#O{7=Pl)NS+{lO3zi)h8BXyaeS<*Aw-sFcf!HLn_J^*AYnij8j(ol=poZEgPSa0p zxL9%+K$H)KpFz~TN1jVTI>L?gW1?`e}?@aPyQ{XaiE7CvzKEE#8+1qxIJp&d>B1v6OXNH(QvB@%Vf{#KH$V9y~cv0lenPhxPxcoouE7!1)3fN1UPLXaNWleNLA}imf>TKATSSGqvL{M~?mTe6NQbNcu86UFkkE z1#W`i8uM}=z_%s8tl!ZrAX^b6rhu#2@3LU&xOL{o?MaC-_55aQDTLImC24Pb1r?RwTw*h5x`cu}~hFFOlj4lU}{dOxD^W|DRbZz9+f- z?iDGRzpzO5M_wOC{9-Co)d3U>^V1n3SrTFfk-B(P9l*KVfKD*$k=`{j zCQ_yui)^RR4i6@Bkim19H4uhQ!T{Od#yT!nqnIVZg2%6p%aIWn+~hO4hDyFpSk5ys zVFto98Q)!kxa8oWIiPY9n)$W_5`%2^@|i9uo(n^5(#&CO8%Qn>VPw9)S*Fh%&I2_N?>dxdK~Pfd5ED8COi&c$!+c9D9$Kd2+#l_xlj)1Lh+u^^--c6%h3nw8KryC zhg?G|Wb>D&Ew#qfDHHg;Z&rVU2+M}GN7J9&nVN1juM|+kxRirQxrX=pbKEzcX&|A9 zv#l&1PSsgWGYKL!RSN?SM6uJRCU?@FDK9?jLEk2~1;*_03OvF=_)!ahEm@?kp=+P| zK7|bt+c2ii0k6?G3i|%N<(*`V$CjnDR42c~3k~7|OXuxB$cai-0!qi3y$W0MxJT?wT2h=UJs=>bu{TtlD7rt?=o@AY?v%E z0V~;qTR&}ABvWs-yo^!P_e(P;KBEHAU>wqFx5|G_)WHgCLnm5TG=a;kZ)zfhq`^>Diy32Hm%#_yN$_$IdXo*4n# zO!|UEDIHIj8@Iwr$O(ZM(n5Z3LdGe)i#-&1!2u&0Z?XzE#Va~(-epLkS7RFSJ(FF6 z0;`rcAuM$Nw{>9wwwS*;`n04b`6GDd$d~C&={?(c$80bh)%lc?biz9a-X;&P^-neUT<_Aw7VI1H^nS-lsd&A<8r!MQ4yQaYqh?s_OVsD!};^871pTeIO!AT zHkx#J!MVoBuqAiBRV}XpNLwC z)Bis6Wc2_NnsUBe@9jy{NYIcS*Dy}Qx`T#IaWys8AeiN8k<6wvf-ir`?aGkXNOmq_#R^k%P~WQ z3aBnGI?_K4WYOJc^uI+fVD4he!3||4$~yt|WXAQMjr$^Jo#l~mb3x>iHq0nZrqHWt z8__EPP=(u_= zKZDO$km?eT4xc}>7+6QMh|${i85;nMnQfE0h~G5)Bk?EBEmUR&()nmUmVyZ3Fxs$e;V0m1olGIvv7SiM|%ril&iJIB9S1 zW9(*M9*Iyn-|bd$?h&e~v*OSAacAd|e-L*(axikYckOXZ*?dzfQd4b+#n-TSN&Lkv zjdIDGF$m$_bSFQz2#J1*(TF|4XtIK{DeuvfbYv-Kc|z)kC-&WCf2h-y>97SvtcknC z{l|g&8rX75bzU1T!j)ou+k|7@ zFMjoUH(k8VT<~^bu?Ys(7!Gz+S6=XXsb&6Ai2}h7CHYtKzk%>F^ofdyC3)48z%ESJ z9i$FClW4c%XGc!B4T0r3Z+Um!*aBzA%Wm^@+wC`3>OA#sbd3c&r*>jH%>treWfg^H z10U{<^jp|Brm%wbTIE!(*x0%Jq?*+5S*ar*@J4?h8*lK?qY*SB4PM@mXbJ6qHSt{; zD((P=Jnr8UdO@^jVUeS5W>X`qf);L%DAxH!55r(MB@-#& zzT2$Zp1##GB>q&^Asnpuv|S;X!G58tSPcxDes3y!+Vuz{(!4$yqk_I{1c$ z%|cZ_NC7Pz81H*&d8njfIXNi7akf?|w}2D>irh_d_)surv{p zeXHzlyP8HesTY>O4iQ5fRxNh=EENSdGn*{)Z5gCGZ_uuvu9E%`XV{7)B~N*7-`yG^ z80MIeKTAbiC2f*J5&3QBBsc;XB!6g|hx@zFJcf&l8*8An=-=XF^K!^f@sVb@C%8Fe zX?bR=wv!WKkNDZBA(3yc{WhInA<19?^Hks@+^N%;w_7~g>lazX8MaP-l_fhZ1(WV5 zNyAHa+ONw5?r{Dzv=0bW*+w(jVCrLLE}q31%eFPZK^;m#R%4{!nU3Xubq{M#^Faoi zv3nt4(4q|V9S-)dkrQLnE)SPjL{FAE4J=oNMR2gBpJ*N?PIrv@;lMBW^s+WPxsAQ} zahdf*sVfAr+ADmyq21?NJ0RXQd@s!Y?q~@oBjr=_^W# z9`rNmbY2h=X9hB#Qwy?p&d7Ul*H?~@w1v#yaVg^?2o}Gi;4&ZhStSoN@Jk4E6l1F{p_o;H z$S%Y;b;w8}-4?HD2hlhi3cW0*E>Bd&Ylf;A}7qp-V}+&)%%Sq8VAD# zqn`VfBId%{JmxLfC{fKZaknEKj{c*KCXYUQSo{l(~h^ zaL%^ANN|B{*VaFA*x}cg6ejNIp}m1V*FN27S6MW%xlqQ0Bb`cL0lumS{~QZCeoT3b z^w;wHJOTBi60nz=Qby~V=v|rkDVpRBwqNu1*R<#`cHN{axJP*y*qUo?;6>R_eGwnI zyt6s^h2Fp*8g17w(_H_gxQD;Nu7K`#$h7VmnPANF@3ADGR36P;(}NgEkM?(}Khs|Z z`b>YgW~zJ1Wxf?8@ZEEgGM1Dt^EWMtQvH6kFBw`Y{42G*X+KTPR&6imqrh#47p~aL zsrpDKR~O}O+MBwc)YSw2A?OPCf0-p+eMH?nt)t;GtLs$u>1_$wp&gw=TGM}T@Npe2^KZ>d*PxAg>8rN0#`0@E_xq_^i0;roDH-fP^>Q}9$KeWFr`*$QsX-qM{||B zVdZc34W)o{8|v{)OWbO{PP!p#9OZ9*WXUH%u8!q6dNsNK(69>MSZqIm-R0V6Q!KxV zQK3<}1{ghZW5rejvgo{-J_ot?n+G&)S9qAGYfOflKXVnn9WQTZ?5T;GV=0U|wWNAxM=={KtX4fH*M1Z`b7i zabO$}2Zk1_9rc$vi?;?_6kmKi6ZwZ)18kbGDW>u!2?23E?tgoI2U~Kim3M;vB>`~) z2FWq2%Z=&pc6CfM3+w;o<>+9K;{2@_kCq1JME~Xfc*TS>+_POja{o)rk>6v1gFpC` zG5;kPIidHY6=v=7@3B|O00H=adI-~ByFJGvCoQ{`-35RNtd0}zJ@*(8#F>MYAQuGX zHh$h)xO{a>v@RXLXmhr*pXELIu1*h2fCTfsl~dWmMs@8mO!`p($w1O~eAcy1ggjQQ zMk@+%>e5?Cy~Ue8AP5i$X{26;-FN)p2VttF6S;RCa004u-Q$ z#D@zIjZ)l?muWr@{)g)d*C*QmlJhpP~um8-H6U9sM%>=$HP{s%9nm5`Fw)7At1~6ay z8W*5b{mGVtj>N!4tsRoDQT(^RE_&_8|Bz$bIOo}?rT!f(x1dm|F*RcTt3^H&h2 ztJenLwgqsiCoiLO5)@lNmabibf$vpcDj8sTfQfLrWDLm8X5yBYEl+=ct#R2>9Ek_{ za4d@s9jdfRMu5t5^UrbG%;4xxKA0+w!eLMwWU;Rxy?X=KilpX{BgIQYgdk9TK+5-a zS&09#f*G{3G1BzHRH&O{T5)B|qS`TH9UNVUZPPA&=P*R*Mz=j|FjvS@*^EdekL zljGnd#aa*&Gk36Qv~BB)NX~9(+JNcW1`hv<&;;!IT%=?Re1M zhI9upX$^_{a0! zts>LwHdTFZuLRuh6(D;b>l2mCm8#P6hdt&9WC7O+=)ut! zGLfwR^ag$dkX!92SDq0YwV_@E=v&_&i(zc-8+qpe;_Ke2H@*9s$S#s-Gv*ZV`UFDy zY^rrXH%8KKrWH5fYJqm6cCTDIFS{10n%qz&P`WUi3Kyl$wFvMEgw*)rF7j8LA**Ddxavh$C7X=87@*v1W?8Qh4b;?0og3}k!fMnBm zR^m0`^!aIRaCc~_U~8cY1Meaj@RfN`Rvf7p_YzrU|vqf=3)U`U7beUpuImBzXE7BW&oRljLW zAE?`zs4Xg5JTq+A%0Q)I^K%j^wBZJ~YU#s$iP1xyNu$e!MI$tE!vF)TDGO=o-)prNgY#X3TO z_+~Kkpj}|bl2P(b6<^0HRUPuV_+>F>2j{yIbq@^O!5?M0bfu)@fxE65ToSa^tCOvH z7u;Czb)U=4Gn1c{-c1*t#9?DKilmr?U&ZtD1UA~Tcx6D4W{u|o@lpQ)k5NHaC8TkY z1~*(g0$lVzXf)m@%B_|#U3=3zzd_U88`9h44QzDjW=3ZO+7H(+e1+>Axt`VO2dm-n z1UBD7(~wX7>k-R2_|SE^$>>QR$XS+uDI#BnF@hs`a}04CF+0eZ8ve%+t>6(W4XnSO@* z`>MONh>TlClZH#rOGhHQ8K~9@Nd5e;;3OA;$n(LT!(xp#8js5i2_aeueK=_=IO0jf zvm|V6Vj-TA=i%@xU!};N-Ab}Kayf@Pr?(Savb;=?c9VCB^{BNBCd8C~j{mMt_L-gD zwG@^#O29wN!F`X%#s~eDyT*#kGvzOai%8X$Et6nyU|Vk#Y&IH$G{Cdq7zCA~jT;QJ zg=wM%DYOh_>@395MEZF*X<@ep4=u3UPhpW8&K08dc=onxFsZ2EuO3L28Y*Ubr_X-KttA%2Ds@PAD4Y!@Hioc_0Be%vGCd$jj9>x${ASCV&UISn;yJC z_`rOBvdzHU9jiKT+mz_gY*j(MLvmA3?DXO!fuKI1>H=+U%3cTTa}6Aru# zsaYuoET&cnqJj??ZE~X)uYT+b-2qi&?4QtvZdj~56oUn35RH+ZQaMs1L<*aPG2;hn za1k{6&~m=^?tg3B@35PcfbJt%c$UG8*^bJfyUaOP(eb+f#~SB7$wNIq0grF?M0$+3 zIY&zoTt|QJCTC*vgyk`ehdE=Wg8Rg5qeI?=CA=WjHe&MHYDLR_%|T!Dwq{$GXP3tpHVDqx(&`$MsN?>6KzM|$VlohvpLZ!Ojo6epEeMzZdRnIRhSM?`}FAbgx5ja7N=-k-08alL$nyP9t&7FADYch#9YbzV}jxy z3#N#MA)w(s$|!H3$Z}wc7OefwYO3$4$QAuPmI@p7+3^eP5sNYoNinQjLlE?S&s6Ka zh$tD|+!uv6fAc;BuQl_2Ej-K8<#__s5WIgNc}#G*Ellx~@@eokoD27jT3ax#z2{^H zD^V>@ul}%McQOYcDHvC%60qRHib4rK8HYs96vYa$T@rMi{dVn_%rCy0ls!CWtL)#K z>>BWK+bBCvbjSoLr;NsoMMm-54Z#i+%j4b7X1IfrJf^6`;l3_*6=us0Hl2APg(HTswGQtx<%naAgp-<2$< zHI*aEkt7U5)%U|~7M{ZKa4tF)7+b|~n*|0D(Nh*R^Uh)XxK^^w>LOOE8hyCG5VGMW z<8{pc6;*mk2fKpV=`HwspLvGMSATC8RuzK=_Pd}}^%#x8Jl{WBkO*e!W|xhI?!%#0 zxw_l1bSa}_q%DFFM=Ur$@gg9m=3Wd7e_Py(g~WqvbUolRQ26KE)GKcu0Z#*DxP z(8YZMyM1_t1v4_hXl!R-b}i1`z7)A(N`mb;n2u9H!XDt}z-@unFLulVT z`Dqd-vpG7)jP>|METi-2)$-!xXjTc2XK}tn{;t_|oWtrnx}uL(pbqsmTQcqa@ad+S z73M>tFr{1m__5$la~o@fSW~8Ugqwg|A$$_!o4BbHieRD%4BIIUjz$IdZH2 z_i(aU%MTx=BGvvCVf-uIh?j)`D0TiB`+u)n1OZU`=k=ujy>1EwKxKt@O#VAtX$o+* zD$>>h|Lw&9ZAtN;8Tb#4CWwOfSQP)w6DL4Te7Q4r?fA#Xpzg{9a_!>)^9hT>G)M4jm z&2bZ&b-UQigh1x%%X(OFp5Y{LtEnDjuimk_d5SElVe!fUZ}~Wr>->71JIUNZ6aj+o zsikQMTFw?NpQB>UyP}(&=VW;mkq1j1LSHXr?8<<6@xl7mpE&)coOI(ZyLC69tyew5%13(Kszb_hTp?Yo?5B4#3%J~1`uV{=nV`j zMhU;z)i02wUys}2%bJ2GzEnm9>6BOQF#FsI)a^k_>B!g=^&8a0<8Pz zPr;~j1b`1rWl2_?fMjyzlY)iBMr9hE5R+v_T2fh=l-Dg#KEv_v!Z=xQ#A48L;O0v# z`1Cqy7z{ZZa$Fz{$L_^B<3*(ofVHeH8z~wzbes@k z^)1UK=692aiUt0u90fOc*~w^TokkR!`6oOJhBxFQ0e;wE)=LSQ3#vA&WA9H-CRQT* zC9VN1{%7?5()G`C%LxE^HX<1-s$Rh_!nOKf=vfP}!_jvk3N~`jH zO3_`T3H8o!%2bDm&h~75^{cx-js*92r{eR|Wg>63<1IR}8;lE*tryiBQmtt13`iLA z4BVXFU%;3H^*J>tA_E06n0zOroFG)sHvux_0F+4$x)>B3g`$u;y{v#f;&_yEVi5S5 zY?7|bp=vf(h=wQE8Uv4KC~pKP7~-L#?^KcN3t2rNN~j{a1kh^ULN%O2o{1XLE3Gr7 zYyA;Qlxp9p9#FR;xNK`#?y__PDljneO7yt#xZsYuWl7f%aygi!mg)9^@0ikv#m+hJItOd}d;?{04 zoGjzZeIl5i$zx*{Uc8TDL9y%y zFt8}2YXxxbsla;DZH%Y9yc7j$fOTv;@o1I+4Bwt?Z@UHkxGFWKL&}Z4ZwXD3xYOuW zB^wA=`sK=Yph^0h-uBB?RHIuce+PFSEXoJLETjk|(01eBf{&T$RFTY7ff!=*^`Fnh zn$^aOpD2Av|0it-yoKRJ@9PcHc^YelL3WbMe0`;37vzB4B>7pw6IK_W=NpI|g(h{a zz$HeJ;a;KJd^?(Q%)}vm3NHU=UDxk#o@=d|93wqa2J3Iz9HFoTaV^dGQN!~zUFV24 zsRugPucD7=1TJ>&YRtR*0t-ww%~&Q_qNK>;Q>HOS2-mQ~n#DT&oRq(?Fg-2TkX1ea zYu&P$sZtjUK2WH!7XS~j5ip|wrqtmRQ* z3?9Ai&u8@=pm-!jA&W&jos;arb1zH0_ddGHpC~W>C+GmQB-6ellttXZ z-!U?V6MMN9&AATJChPj3;vlGu*bD^kI}NphqzEQ}B}zzyfJsRD5f|GUuyAP_g;fVW zgO!|kiE#pueeD8J%&0r9OO{p9xkApVSBIUCVO%AyDXm9u!bFrV6;O3Xb<&s;4LB_L z7%cXG(unEXQ)HZMJ+mmXRxZr`Htvv=A%SP1b%;M-A= z=hWgAUy&p?kty+LNTAv)zV{#J)^Z@~Q#JmLM*5keaoFJAPen*Y2(V}T>j@%~Yv)tQ z2)?3J7bWv24@|zuHSZJrB~Q8#$u2*K%5WM4h0H4nUiE5!1Q(Syg59BRlkkQ0Dgo#-3|opvZJ zC=5j6MaR&M1bHiUG%j4?OhiBQ+;iSY2F{0HHA3;w!0*$NYiwuw3w35a=pgF5jU$qj zW&{e6(In$~4v_Ms2Do61X7+pqJdP<4WT}+cYNg@SFMVV`AXeB%dS?}l6@U=&P(zzm zalh2pVSya&YhzAJx2EuD9psaGCMo_Q&Kn1UW-|~We=oDoa5;au$TkGHC|xjOe@-oz zEWgaE4W`-N$J?~dxmwa7@pr@iJ0J=uk-VKxxcQoX(3Xehv80cXFq3*Ht1Iv`&AON! z+sv@AUgABxEB&KYY~J#!ORLmbz+#-304%ST#l$E37k-Cdfm{i9)8!A3H|nOJ8ladMlME+=pm1N{?cxUhV@MC!V}Ip!JHE z*4K~EG_a(RVT)OZXp#_#inwdit8G#4 z&$kMb^7nODz(=Rp+4`0A;c^Xw0^!jEulX9#y!|9^0)bY%_?)M#xZ11*yc`V#V!aCN z{cUq!8f}Zl3;SC!&~F%)Nuux=$v0%5rIaCJ3>Lhxp|-fHS>@Uv;bDn4X*vJ-Hjmw| zTrgE)#vVD@7M20ksZ0F%B>V|_B7YRjJ*vEfbPVR}QZ~&&MhVIQ6T)pJJJ`oOkwpw9B!rp~baHpS>7-UA@7X;u`@fiqgwLs^ytlyyzjR-4DOsQ4fsCoN0 z3jis){q3HuN{R2eW8c*CoOf7o`myIUk3NA^U-d~6Zrk+HT!DFn2;=@xED>Plt3Aoc zA=K}dR}^RUm2mTE1ry}dE6**ijj!TIaa8hN$TXWdSxApA13PZ^`8|FYgtY=CMK-s{ zuA@^hAKo4zwkHtE?0wPvyouZhI~tbH;I@|k?H%$3eC7rSH@D;1q1$wK+ge^4lTHRj zS&TRy^U?9aVUNqHhpGGSB zVW-@ux!7aGrfG)8U=@roLE08?1$1OgNd;V##2j`&6n;<6g|HqNTp2NpSE!duumdil8Ywv zbzaRbv|WEj%0_`rAFkZKHZX1eTqwOgs`4q+=vx{=sEfn*YCfqChbiwk3mG>Gd`cdpR zZSB1LmDVg{mb?GFnvm)qm-1_n)n)p&^Zo`&@!sTYV#~y5mHpJuMI)&p#{=aX8~dL> zBj71H`hd)>xkqSqix6RmuAR=fxvQLzrsnT}WPrcvEKi&swy^SRV62EH=Xw(18kpRE z8L#5IAC6$!Nn5!8`9{wxSNSYJRnmX(*u~l`MfQhz?R*z0iGe05*T9p?%_LO&@dOqE zo|wK*@Fx8XeX;1bl~mC)(K5K*J`!BD{69-!s>iUWS#((k8)zxlx~UjtQ#$AP8eroa#>M=GR?Z9M`d=3@4B4B>jMRj zd~QzbSy1O>yyJN zpP{_Unj6O)+?d&Hz7at%p!YK+h;3wnUHh4e%aDj~mmSAf%?LN`*|0lXw*AxUc+t~% z`?mT#PRouk06vCjkHDsg>iSVseh*x2^UmY+E4DSVjt)B=D;x9~2{tLO0flg)DWW%f zf1)pzY_)2&+5^pFBp&ZDk##u1Sn&|j#QL>VY8{aAz@$^lCRcUS+4$AbCndb{NryR< zDh|#rWu$f$Kh|%5uJ%(pyDI=b!8>%O7~o&put)MR8dF2#a&?52=046!PYg1bnbL2E z+LbN|rv(vhV12cc!Iz+zWL{U|`2kz#s2{%2*shZ1Xd$<>2k4=>mGOT;S-9`vN3 zXG>@@$VTto$%Z2`H**s4qI=uA$gIP~bF{+%#w9}t^!>A@VcGdS04SG`)gF4)h~xo_Ho z>UGKt79x_NtMqOmuhV32ldb4C*qPO*%y!9tp?Ewxrt%m+$=ks8K+1R=Sj*v0%(Nki zn~bmoh|suG(ZELTuVn)cvTRHx%%S}cUF)v$bY0V{LiUD2TLy|{Nf;a<%2up z-z}xF;KkI!bjd#cWh08v!1>VkC>^N(=K>*tTp;Mpg35ns1!)4v^AVc2SpMH$FQF|Y zAO`2ZE5HFj{Trss7yWoF*xAYNcNiNh2|BA?^P3(xqWtV0C5ONDTB)Lx}s( z{=I54K%Zf9n6`iOyXliw|FaEcNZxfDoSph>Ap=g#S;s%`qF^qzIaZK zl;3SskP(dZO3z0%JtqMar3StS3WM3LlOa&2wxL#CxDUoea-hFVbcQS{!YtA(#f@hx z4MTE2(Ff5xHNfx6_ULV8z<`NCQR7h(PCwW?0pO#O#vh6o2T4B(`$j%+R{*8Inf37W<$9TJ#;7PU$4xRe)C=MPVnVSO3_w+72D?e90^%*03~Pf|ql6a5Ae?gKF~%!$ z!0#$Jk|BS)0>av1un~J5+;vZ&XjlSnTTS6bF${s{Y*_&7&%VvQ134N0%q@XVI1wnK zh4p=}%u1CDL_2+|eUE^&`X4I?2ro&#y*iNtA){sh12t%|jRCE`p7oCkW~d)vjMfA! zlaIlgeh|!WZT*1iTo%gjXg-_K+4F%c5TF-k5THXt+Wu!6x)cDoBm+~k4wQBa1=ZR% zFAG6K2oL}*2MS85A>BJD(_9ej0F5nB^7Op#RxY^MsCU1MAxZ?+irdbOscY4vicsYCmITtMSq9d}E~@ zZIlQY?S|}tp@mMgVMUQ1ul=O-4rBAw=L773vVgroG4>|jL&uJR@ z^yRj?EjG$)LRp49cG)GWrW{~IIw!p+*BoG=4mpBcC2Z>ul_Pk+ZgS;1Re22l!y_+# z=wdsQ81IROy9IJJu}Q5Z0Nh2*whS6)H1C(~sL+VA>3X{60s^@~77G3A_rbfr8h=zs zfI`c<$Ppkux4kC_?clOs_^I=zcS1GBqjK@N%1+cm5O(!W9gRf zfV%@7`6()Yk|!9ks8kzE=pbwcNXm!h!$@Yv2ODi#-Tgh?mk_LLq@j{Q;CF zUYUE@ol{S1W91NSkUa}khXV_PgiC5Fl^-7Gd)@rmVN~s+iLKELld<|PLT;Mf6vo2Z zCr=a}A%q(G&xGT`^ccN2J$mst4wfabGD6ijEMC+2%HtLGv#<+nMC zyvFo(7YiM-IO$}E5U8f7X)b4I#%kur=R)oY2%ds3$dvUei;%i6Kab!q>xIP&SG0w! z&2golAq#I#{gS5fh@#0uS~kFqBemoHS`PC!$V^HqOY;KXkUh~1TKC-eji3`Oob;&C z8>4;+mG0kONray!nfyzrJ6x4fHn)Xe^8r5A z5_)CsDSra>&z9Z%c!eLcRowWpi?|dj7=j)6{w|;fakx9)_vK<+CB!6mw5Sp;=qr}8zTACTx?~ko z)iEzeRkD|I;I~BE>_TJL$DmCY#Z{K0)6NlKXC+f`ZCs00hS|ROZtclDRGpjzY%H8Z zKh{Zc#~qy*3y!Os@;x{=`w4i6)}prhutU1j&nZ5xc6V+mMMwT{-f>` z7-Gy!n@8cUz+P}1W8#xw_QF1ohB>X%^$wY1(BR;D91jp9c7KiuA^8nZ>LDK6%0u&=LlkzkcQ^7!ncUi_mEz{ALVP zPyBpz#V8w+l)1H4m9X)GOrM##VuW=%=D@RJK#lazGiQQO-=izO;u(0pBKr;9(mz}1 zXM#l`J5d!%Z=Wq_g7UEX#_nEZ!JujyNz3m{sg_a&bZUZuF8=rbnbx4vO4x>a5Iug-7d8_g034MS{_>unpGSQgGfr+DUGP? z=;|-KDKOtdS`8^AKcPva>ts}QiRUA3s?qp?Y3}W8*S(rw=vHtnD$P{j*q6&?Qg#sx zVsS%kUQwyq-@Tk&t!=(OxKE1SrGK2q?PoRPHSCVDw>1qK|KfgNUl0%xM6~|C=iti@ z%T8=n#3lwRm;BOIzuwCZ%YDl?Y<85hZEu0B>YDW^X{``Q+p@k785N)S^b`vQ`#1emv>DhD~zMt$E0310xWla;B!1a7qjbxHni>B=+vYP2Sft z?Dl^^uvLlKTw%21UcdIotv*q0WBikQ&?nZ2INW2FrbmM`4T{udCbohIs}zN_i$GJA(8YujmJOwBn9OS<~x zAwAv!FssW2<5Nx@H5x@46Om#)uyi8HbO3dPn+<7zujOy~RLJeB9x@+v6M^GKNa*@H z?8Mb8Po|^6{`;J4pLnSkvO=z%DIE3}nXo*JXXyKzkJcJvnQRc;Yq zD{M4IDbAwZa`c5#GBph*agCL#-WiUEgo}_fyh`@BMNJpdtPVFq8d&JrsBLrkN4$`? zWr!vGsN6)3gEqtB)+%g^ zC)wm=gJcCKZZa0ZZ5Dg}Sf$pNh62^`u#4aDn7jsm%o>;%Q@4HXD4A!qH($~$v>^OI z>3)dx_%8IA{D9;?ZE}uo`zRF4D*gi{~+G+20mMed?o$5sU z9dCIIc2Hk?v^g3tm>E|ASG0kILt~pCP&cASz(jkH2Z!=xWcg1AGt?&68G1;0V#BJOcBlG9@oKE0wJSTW;tOC$>%euGfrgzmo+QY zwv0iCPE?kG&(_|8S>TL7I>Sy2L8~BDLPmQWQw*cp9NrLBX(MOi`-w~Zr^E=R59R%M z>zp)ddF)Hq(mcMXdF;*CCqYWx-(^VRXFWGLGXp2sFmyg3KRP1FvlV_pGdOI4(B_kC zq$_BmazxN!Eu8VLDL-e~0S%=Pp_1Qrr(?g0tWDWmw^X$E`2 zb+qs@r)b&)5=sTiT?{7d&^9WS>D6c~T3&Uz-MC`3PG^N!*BGo${~)l5|K^;TU$)J|x@J}{GcmWx znb5@XDO31L4z>AFVf!J44UlELMzVUkhc_hnG#DA(YG!W({S7Ud7kf^Ip@Z|s8Up4g zyKFi&K1?`Y4U(OFkCn|-5<}g57u**P?xkh)JROEHg-49+5e^9R9|~8-g-5oux>}S~ zW+G30cy^xg8?}n-BC#`wD|#W@P>``iBAhR7_4e@DXx0fG2WJH_TPc6@UfgcxWTTLX zbebMtj==o1$Kv@?OMyDPSO$S*CKgk zf2o6PC_q99nY&Hq@2=APkW`-J{Mz(?3;uv$UzO^YvJ6H>j02^*5X6`Xuio)!lb1pu>ht}(-6b;8N~k0d0CMa$AzV(Y zq=_xmn?FZCH>+Y4L?l&A7~$VYtW+{ePR37-(9-jJ6yzISD&dmeU!RHZYq z#C$3Y8Wl`zTZSM7HSrdR0JuS|_>ibp@gOA|s0f6yK)+rA3iMZXE$} zni(1QYZcLV?rB3{(h4w$#kpG6+6 zTK+4{m^)JK@b&QkoW;gr!eKx@n1GqVmMvs%{)z5)=xw(njY;Frco|2`XI%UnRLrWg zw4JIzEiw=1K&w4e{rve`KO+G?YPilki8J8duDW=rH;q8M-sQXk)1Te$*$O>=BleX> z5CG6H3aKuD;6DY>F0(dVfdG~cgDeB8oAbRSWNey2AkB4ve}w-4vOLO_9hW;{K-pg$ z4zu>R#jSg|jvzVrCG5?c8-Rh@p;$$hk^4=Mz`y)bz`(m>k8Jx*jrIFVUZ(-igy+N0 zwMB3^4uI0ZsDMeeBpP(_zUac{w*6^1EqJw_`yXKsMbhT86BAdE>{ z)~ZgdviZT{u^fO{1U^!@SrDf}759p=r~?S&Ay0?ZQhOUH=Tres4GO4VE_eu>qa6)k0HsGNXp#qW6iyLy+NnNPG-g8S+xWxXVi@iUU;LUP9L06D9sV zE{|c$3Cl$$m4d+=^nJbYS10m*ukoAZ+&h?lSBs|iF^-eayEErdIyhYO7ZLchM7$ap z&CLzJ|FAS^DT+1PBAq~~0$Qm2snoRUj=+cHXDksME3O9D1-Pa^S0Nz*nDpw-{qpO0 zb_nuY2z@Ezi(`Y5ssqhyCwMRxE9=m*VoWObd_wLDC z!)1s*;oUr7{=D@e7KG8#n)Uz&cedSQHG;MX@T2NU=GD184!O~!0x!QJDoX**%Z}iW z2;JasxW{?TUO@tjTKr0i6Pb)K&kJLgTCB%mk*B5^U?`Z_=bD@f$(st0yQPhY)AZc5 z26Y1A9|gm1+5@q@-4$5e%N?#p%!G%+RsW=v=Y4szTf27$X2%Tcz*&1S%vgEKX?+2N zy$%hVx)oML(UC8vuJYv1?w zdC!+~)>-S>Yx!Z1FpM+9T>oDKX7s$K3KPuz-Mz6jy$f7pYz_OJc*4OPoUPlS&G(Ih ztrQ@4Itk-+y$pFAwK^0#q`QV9(TQ#NQlS;2MW4eMnoo|4t@AJZq3I=o52z{MH&^J} zrLFM7z+s4;n*5M~496E4@S;CVqq#Cs36c!=Xcn71D$7x7M973@#_3IJ1q^JyQrCV2 zjvF=_DEM+Bp=54yx@NY}srGi^z1vB%%l8ed!7T}cP>FdXnF;LTM+VROLmM#$hR^ZS z<$?!`U)vH%_h9-4UxpYDwRS|$TvkLE0N+4g{+B2_&mOXn_ay3ls_=l3&K?pr-~*5% z4-1pG1oo4gT3x9Q$EciJz&w9a???@g8!4td5Tcp9sNJhU!%wU`bTuWTZ9upo*x@>z-f#A|kHnO5)dfkM=ep@XgKs~G2{x~>cB$^*KT6%O_ojJHZU zGYzLj`^w94@`r(l1@PIfp6pp*)AjBaAoIyY0KXv{pu!&o2_`s!KAsu35T5*Zj!oNwo2+IxcOCI$Gd%R^ zM`dcn3Nz=Rktc`jHVbZ0Zy4D1?<8kl%`aiAj`Rj^u~P2h2-_T zw_AOadHzPE#INKdDN#R-Dc*;QKdsawx$lJ@#xcLFTzjn$5bmrtZiN4dt^ZDM+*^`g zGp~U6VJpb>Bc^z@*D?>zqI*3b+raOGV~g`I>MJoWDgE~Hqt(%(4K23VTZ!o2f~d?T z=K@T758BlC+j_ChK#s@M7o7>27G1?Pq%8sLhU(E&jPulH9?)uUd@ICcDJ>)r~3 zO3o#4kBB(*&4Vwj#fHejcHRY5YlK8${WMCJn+u2yCl+=;(*0)k4k(@|D}XM*tr{H* z9Q0E{F1m9gyPSbArEg@D$3|k%U_wf4{h{W|t0_HT)e+HqUBn#R)&I7oNZPq63lq!R zZZ&MY{K?BrF2&8T_r?jQZNF!d%Ek0o56QOyWouMt7W!rP`LbEj?*8|Wy+j=SzJ@Su zkx6_a!-KuerCxVrVFyxv_n`93U81#MX`Fe4scGxYg)Mjoj9G}$wa)8eJu6U$iw+6R zM72lXyVopCF|kT)%(?yL<3p`VTRsd-TiPc#R|kRt#KRPU2#_u0HS59j--_fQDDZdM zWtaX% z|Jil{A);#``CkkbX+l|@lC6kNyTR@r>Z7;QpF`dY8vc~oYw^nRf$7Rk#~y?00>dqn zrt(#a(kG=pHH@Mp#XI=kA380{+9)iuzftWc`OBE^SdTR~3dDh{@%9Nlr?oWX(2Ysa zZFG5))oZPaOFi51+PiHU!`=B))V66k{LR|lW`wVYKoQWcuIuLJT;wnld~2_7nTKf)VahHr9qnzdXUuQ1g};0VdO)Uh>P zY90$E?Q>jwjSec{)2x$m)cV@LknwCaf^+zdSPEsC%`x_cApmM;I7qd!{HZ_fl~YG$ z&vBj~9r+7fd4vfL_*w9uX@yL-I_|c@MlqfWE=)MN=DkGg4X#pHN`!~{Hk$2OA3@8_sog;d|qaD+X&<(xPV#bH2o2tCof zQ*?&+SMC}@wP{nbo$2c2*!W=2EKTgY+6qSWEyf#1OZOevnR;qlP8I)%%ku3i1-?55 z7E*1YVF_K2$e zPsyX!TDjRj;20`!4CjIJ*SfDaHvdZYz`p->e6-a@=dY1IQu+Y$7I+HVJopzL)67GT zfO)sj*6_cNR~+0GGY&HcWV86^=NCflktG=wUy1+rJ0`vch(aQUFrL0ZK)@l#kQebx1E&U1@higWkHxxG++ zC|CY}S5TV&3ADfn1`o;n4*1zt0UDD`mK3n!ErVod&`0_d#>&N zG_T4R{{(;-mD%HR0A4*8nrCZb(nu=$AgDZXck#_okv@z<>iVKYjrCbSRp#CG`i9E- zA&1-i2CqcEWcQu92T)xf1|gdgP-csOLUI7qbVjdDAct{)+^D7#qz*vtaRwz13-B2J zRGv1C6+oM-E*+@EeUOL?ysw3j)ScrGu4RMjLh}s0anz?J_Vb^ga)J+*4X|D+rLGAD zp|(U@jawHao?h&v<5q-A`3`gx0S~u`9*A4c`5X>I_~<==(h%~BXuSYza3MHHx{nBe zj=z7~%pU^XKF9LHhmBw*g-xodj^q`ZSZ zFs27A+o1Td!UjitPdezrQ~)XL8ce_{gN*I=E8E$+a!4gz%mfEPMiTO9oK)Y(Zoq7- z*PO^o9B~!yJ1c%>;YC=^u-!(ZkpXh*`%F1OmHnWokqgSWLZImz(09&= zykqKy3c<7bQrZu!6hQHHmqp)G)WSA^8xH_gYGA3}1KbBRlr!}y(53* z;NMIEWpY#A#;<;%LYo&WAcLC-49APbFLxK_TW!Isw)N@e5iBvd{nXo1c~?gLK8L9D zZ4RAsvT|(@f1ll0erP7J4DEZ?%o$K;KzHObgD`-Q#h{ojYJol5 zo+oge2&Sz2-3lLRntm_(AZ}K4Kw7*Bw3vk3mYtSUqeU=8@~7=2yBQS1NEYZ_Bt?@> zji^orXql6|$%^wn*{Pn+5VZd|3bxi|-!1WESSDjE0$RgYA#aZqjp}PGcs)jX^;a49 zz`MUd=)q4PP=DGAK7Vj_if>+U-VX#@MchaoW|!}mkAou9$%H!AV(G)D+GP*1nXswc<`m8xe*^2 zunu2=S!HCZz{xoC^`a96F={@`Xg2{1p26G*vyVEDVH!k8S2KJkTy?z$v#m)Jnu9sH zkzb4n3Oc*(4m&U-0!(OqP$ThP}lWyv@0Xf3UL5>Ci+DSXn7Wa)J|{t>rLs? zQdqJpF)*T3e2QG{_m!cSsaf)5i+SoawfF0B{wwFrNfnhEm*b)zi-0nd-1;B^Krs5j z*LPSbn!u)Fxl)qtHK5N~ZBCL$W8SE%+HKwnTKgV&Xo%c?0B>1iBcFYF6AE55A-g#i zkhD&L>OMhTEf)`RG$7u3jU~UKzt!0*Dfvh45@4Z34vJ*U6vOL}}tE6;DvO#8QV!P<4?SaD1wJhh*GZ}|r z%Je+XUCm9`CG9=tCD&G9bKc$riFN%>)PN;qFl_S1&}Qi8ToW)~iAkv@vn1p`P{>FD zh50j$>%1`*Lz1J`S(7b-9y^BTpqpR?NK9_>OE>i(<3nV;gemg~O0l=?f)xAxaV)$) z*}6(yqto*peS6V=2}LnO$o_s0mNRj~y)*f9jP<1ue{M8pwM-f_ zg}CaMMLp2v?c1yKpH{i(V!Xw6=OAS?R|Gy7y3rD8l^^PmVO`)YGY9WQ0CsWpBvT4x z1NL)Vfi;GJRQy$y5C2bkK>0{ZQxUsyn-4h!5v;#c&k#h?7umH^V|e?Enfa{adqG>I z^z;PAprX9S8B>HXb)$c_+H9NJ8nxjA>!l8u>~583u3LQIV;)7DM*d!raqiR5jmP9x zt$9eDYWuzUq{~elh7C?mHCqB?%Yc7#2>xEGQ^^T?dJTxtlLcU!hs^~~#)J+IPN7fI zJqvB;um*lAK_j%lz)v&_=(j?c=pbtEbAF$nxQ)Y>nMZbCsarAkK|x@FNgTP*h~QzF ze|g>WoZm0Za-+#7i-QS+p0ljA07{UD6P^6k7Q5K{P(9G94;A&*=KX&Z^{oyt{ee@l%MK15eig|*|>qS4Cpj?p3;P?&@TkA>0I+6Rq>8+s(Bv%L<>9&F~a zWE^5l9h{f8UI54W)y9w94#@Pl_ql)IB|wcFO?JSFpBQr|x>>gM!&Zm79etOYCN=_G_H=Kj?|B0cIdz)rz2At>qECQa=mOYxlDsCf!)*z`UQVM44P zsSwR3smi?&5mL7Bebm`Iow^=eG&K1kCPcj$81z>5oVr!H_FQVhn$zOoodVN70X4dx ztw3(^kLG$vyV9D3p!35Zg0hB;vg09tQGr(Q_tntL(0)sBO$#K=I!NQS_!xEPu@t5x$ZY$e zQzLb%%JI@|jJ-eWpOy^6$=v2tiIi5sZLi-xcB~oA*fwn=w`^V8D-I~V6={CdLv2W> zv&KRlpFK%DM4X>3f}pV;w7UeZ1pevI%Pe3R{Ta#YY45aCur7Qm z>sj(1IvZY2!?i@n)ruL0h}aTXTFeDP9&)Fji44U7w)vN4S)LQ`Y%3ajs50rVoVR}i zPg0$vLmj>ha2lN&s68h=jY1`SIALOe{KF0=_QQH-%zPo$r{KQ5Mxk)Rs$43*jYhW! z-YO@Cgz(HspR5 z9f6v|^97YcuIhe^{%1FvoP@8)2P{pFi;_UFeY^i$>lbp)G~Wh&`kQe1{QhAh?L{%) ziz!~FSHlWjWa_iGR6VQ+dXbpvFFD1`k-=mF*z6<}mUfzRs%K=R-o&TRYf} z>4WCJ+#ThTW?rYHG2>Qs{xiSr#+L(Sl3PyFWeG~?3g@cO3tob%m(Qz@SeemCr z>x`}Ok8_*nOwX+H8Nlt`8uq;}XR)z+J}vP%5Ddyv`RqN+aUMPEr9P|BtLZUb@HQRV zd{1N#0*BkFj@%ROYN8Z}?&lq9bN93wTuDlJ&d;KW9MTx^zoib~6KWt9?6lD()ez~U zTh|)#I|H8ex>bzP>!}h2?sz}Xdo)c^;q+PuZC!WOy8xA7eJXO(Q|cK}Q^tMp^Wo^w1v)PTtLlpgHYGwP{OH`yKesQ7YqeS0#3G8B;?v&?lJ>wZK>L&GZnMEViI69V!n>1sL* z*6+xVw<&R}X>=bJzJp`1s62|qLX|@;d@x?5w5#~q=aRfNBE!%{q?sXQW#QEG#NA_H zXUN}utvu--f!mu$T5!LvPej8n=?d(lEE@r(lzKcqElWN8qvxo}i4vE7)xBl>Ct}f* zUo?1-upW(oC&zkbW>^9*2cQ(jN6|1m5)7!&IBwUUVPOCg#I5zU=PAZM82i4+u;>f6x94pCbaLJ1?5?&0f_K{|my~ondp5j^CS)Km3L5 zOAu^#7DUWIJjQ=+O{@3&AK0D=!S)d}wTut{f@zk+NymS`6fgXr+O+8a8`uAO`UwK7 zu9c!L{cYIF{{5)|bU&l++~)Bb7N&bN#D81=3+Ep}x%lLO$sd1j`32qbzxy>j(d`M> zZG#p5M)yblc?oXeA@(^QSF(8$TCn^0NF*o47B~^>eJ0BDg6bNjB8)s@r7e$PAMpUa zVO7vES;2$`7BbBgJuKhxIrL=ZVdyJCP#-xkvhpL!kg``+PsB)=xx~Qa z!k(&vh|5ZN5|LGN+GU+T!>mr54eN>q=L6-?k;LZn52}wlE)w}1<#X%mgHDGpX(M-j!jiUucx`su)j^4czrvmDzvJid@FziTlAWKoLkOe*`0e{VBSdafmST#%;s5Tec!_ML>7@# z^Dpk*phTg@{1rC0*p+@Aqq_19E45XAyq@P5M@Wfc=XMTe>8Z?sjeJ|Z+@t(`LK9~S zJVi|dKyuzr`ce9n4N9;plS}$EU{VNcL7SdnZzCDh9E|&znNx|lbo+b&0FnPkNtSy$ z6ex80^SZ5zMVIf>(bMEe6wG?Xdjb5>>O($9DR zsDn$mC%1cR1gH}sm2a<*>bOvC1SE_cC{kbq$43cZtgW{H=jQ0w`viWo`nYcT3Z*kohBU1Rnr1p)I4q`&9_H-G%2MM$Ysh z^9GxQTiWYnYr_KBho*TQgtHQX?rsbchd+H8^p_s3n?-u$$650tmW#m^Mfq1}XlUrT zIygEAA!`7GTg=KVQ1olsT`B+>^gt9Og!ww4v2oW?633~k4!FinXdS?@OgYt}Kxqe) zst<}6fV-3hO!K`ZcWCHX;X?zWeM-k}3$y)fEsxDr-u6lTxyeml&zu3zJ(^<@0vy8A2)0jUSacd)rkC;#YfJ2jEcTmGh>L zm^&RTh+x=K3_-+*T64S&iDHv>|~{PyM=TEqm5(UWhu5vik>1@8|Fch>#U)qEPex=*E!-eI6tRFsu@FsYavarpU}KDVqlTa8jdAsoy@X|s^8_jToT_r`d~PR`+PD|I0* zX0Mfq39V(X^WH+OTvNN+c2CqMu%JNQdK3TH5|G0ryiT~e`5hPLbXnuwIZTEdKx6=9 zRhAdQG1p)yMCMXKwf=4=k_`UcpeJDZp%9>5$bT{bMr*d0htg2}a_J3GKh|l{(3|ZX zwzGeJ@Z@uFa=C~RMvDE5RM#rYZv15hVcFj=`Bo6uO9qIFX~zIpP@bUXyvFild!|kx z>cKOvwPHdVW|1I<8KSqT+8QEX*yn(@SpqPw=+x$YR!UXa%rCH{5tF#Q*r;`Oo)TB@ z4XcOB4XcC=fmA>K(L$BJp`$DhN9s%qsM}`jZa)lNWAwU$j`5N%&0@dc1%^AarW5cC zlh+6*;ms^j5ULa_jTkBxZpGU3e$-U$PkXGyZrhaaK=|JH_Y37xLnCZv#=(!@Gt7fs z=Ug`#*SK-e_pJc54?4dWGpn9j-}O+*Oldu}dwWTStoWsEY0d6~=bvkba)cHa()psX zdSWcmYw9ukOSA+Vp?ZZFM6fEIV|KHV50&Q%p3Sm#x3w`ugA+%w#X7|bc56E|ao`ao0W&@M^H_`LYV>hMEc8rqsQs1@PY`VP5R{$BUX~gBDPEhV=Cv4sMt+v zTP3KIgj_u#0YP*vzZ@dYvW!5uMC6Q{A}UJ&T9%@*bw(;%#(9s{9(LbrX0SBzG^_ z#B>h0Y9#0VfOff3Rx@%?T+My-XMQksyDGi`y-lE4eJG8+3a-2px<+k9M@xwx7jRMq zD3Im!_A(<-aG|yUu0|}7rNxtdoNtX?h*l1e&#DRm7oZ{}I&5de!}u?4JN#QmQoAV%xMDn zrPSLAij9cw`pcjM#E-Kt|D@6u4HR(byzc}GK}pf%an+)g$n|&z{F`7=Kcd0&jJMnvO0Z2N#~(ur6Dz?+CL8SO{D&W_)eg6k}2TpI_(J7 zJ+YbRZ7G+^^y_JXEZGQzxac>2>bw*yIA>T=(B?qT8zr$f6 zOP1=9Jr3HvddJ0uCimq5S@KcAp$xc-(3_;sFJ|uCVOCIS`Y?|;D z-+)NFqtClJ-CL3$Fa|IU9687zl0&Y(Tb$u=pz@*)w?m7aLCN`S@#~d6jD56#OO5FJUl zn+z(+0jC~jz&i8Dkah?Kh9AJ{@XAb47VH|2dgk6nys43bCN~>~>_6IG-(6s$n!9vW z<8z#20TCGi8IB#?4@k>N7T8&!cy*z5>YfLID6&AOa7O{R<67$Xd^^t|!t$T$?JVg{ zj3FwpTRQm(jI}y7chT3KTnp8R6xQlZpc`w)6=rm%<9VFtrS_*u{hmr+L_z&>TN(B|c# zUSy1UVvj!<3TfxhPc~6{#?p>M96i;Fh9cYE#~DKH9l$4PJ!##)f!C=+bEP{Ku~UnT z9L0Gm_%*~!sh5KN!cMB|HB~q+?BZnGHiTELZq7i(amYTcO!RP>{r#+hh(YIz@b#&k z+}Vzk-J6Hl+j?f{o`_xX2boW?M%umW9p+!Gt%1)oH5=Q9vMiQ27krL}hTJ}MAsmpr z)KJx6g>98si2^4flm zQ4O-GnS|*leY_vl{zsEUA2z}C(Pxk2rCOl~-ui!*1wKptvn+tOCYO%yykIs+hac$I zyZY%ms-&@3XTVfli)4lfVMbIv{xlt<0ye~;=64!cIC5jJ=DcORwvgq>=*=KVH#n^w z$v;Zh-o9M3DhpQtQcE*>Cj2dR+y-K&r_U%D{Vm!_Eq%k3n|HC10vsz1egp*iVHg{h z3p)q5V=brZS>wLHsReCuJ7uc*;1r+aDF`d}!YF41&CQ4GugioTjpx-KbD+kmHKA0H$XDeYIfk{-jW(P;gcj%g2+|n~mRY##dYcfOa zoBh`0?jLcrOq8|7UXvy3B?$_3ae_S5)7{0z)WTU&13ARpr-r@>fE2y zR=d16IR2l30v5BTz&+WHgfhI~a1v0k&(pU>UN8Cb_Vb)JTF>ZYsvPZ!n(2T$zFB*x ztr^zU;RCUW>bGYZeeO z#hqWiV21)bDEeW{PuVpJhw^8)9@BdgRVX0=f@N%}3eN8ltfBh#4vhZ7JLF)QI_lA`l@6kD_W};M~?Pe&d!wk2CY#~xzAFE&mzP|*Mnc)5LB2jzb6TwMXFPlk=bCaN*)Ysfp$G`*KSJOCDcElKD zzJC^;Q2$8xt;qhuU2(Lh>J|-`vsACIzF*hY(JG&jvp`C0XBoc8TkX&ro;J)k(eCt3 zJ}K&?bHts%V(u47%h%C%7rgC#tohR4ZxG(80x{HLCysk>noyyc%-?%A%T4Ta=lgDy z;UW`$M3V?lAL#b^6!-h@OF2@WD13M@hjK7eS zrni9o zNT4}C?T=$`d7GGZFTX5a-x_cbjI2=yxJ$L-?cECH272LF2EGWq$hQGxi4z4V&fiS= zubVy>-VId^EZeo$HvVN&cpb0N{u&nk(`k>DD)@Ic6F4dsp<&8@_!L|#$gWU>G_m%V z5;6gfis>BRiM+q`517fM%}w{{aT^IT|BveeGH_U7{$H+(ZcOm_%`91JY5(4J4=#N68PDwx-^sEf|Hs8U8NMeEi~rbK z$kT|?J6SJ^E6?A&Az*R;v@&cgCMKKbs{^}_92m~C>)SS>3=gQqkCbkvzq4%AR#@;V zmg4QaL9x=8nZ+LO6sYl_PEmSzZTbdZ>&_AuXw$DQ5aau1C$ubS)RC0u^$%%dN*)+) zvrs+1UFJ9sbsvCvH@!t%`-g_KRaS%W>5ry>#>&1bVrbl(POOy1>Njo(Tp7@rF5$X~ z7E`Pce_Z#+R?_1BwWZ@9qX)XVh;|3ir=SKcX#x%i=@4IFA1L>U%$nJ9+eT9tFOPmd z>QCb<8-U{0YER z@AUzko3!=o)Hb7T!69C~MZ){!)!=8YcUC#i%k>2s0pKbE^XVUf_@iwHAc@Qc;7e93 zn85J*8_ii&-0z=`lZgrYhdt7JwE{wJX&Zz;9C|% zY}VHR>i*3EJ-|Ud(3~zX`tAV;%D(}YdhbJo5g3~kaIFFv{(p+)fwOvbIBq=($n5=4 zPdm6HzjOy^P7CC^>r?%VU55pDO}oSSE#}a{q2&!U%=za>B^RhMceY|YItGz&4iGg= z0320@<9Y;hc6^ptu)$}ASPGj-&(SkqS{Px6vQFdoKst@z_l(L z_*OhAig(Y!eY98{$>84cyWxZicp(HQ71I|};GcbrLHef9XF+5_Sq+j%)UMxI3_V9``^_y({Mm`osEa=JC$)O(c03jst; z5$~?_4HlAY(D%>*8Zs#23ZBlCg-9*BO{h~TRv!R_JkwRb0+-1KJ^^7w8&HjGoG5{u z+WTlt9FTV0Q^Bqb@EerTweZxnEW&)!H7u*~^a4P0K$fBKF7vK@(1Nr!9UDLsdxr*_ zkC;JQRjJ8(5}-3dW$R7rW#AafX@sb`Zc<%{I~i*RtN`1HIp4XGyGmqx1Wo+o6QuXL zRv!sCJPO82gTKcx$IR+&6&ln#EODm&NjK=jwfg#qXz>O&6OroB?7OVrp z;H#kUlh*-OmRM$GX82awAmU}2PNh-t7WgKI+R?2QeO=(tfJzFNSo~Z7q3JUJ@<%_Y zv1S*STnB@xWZCVa#tlv;9r;MR=Ky5;4#+Pt<)wPi1Vj>Xu!5coc=B=11b36j_&Wqs zb@$TVH*HOHCIZP#+)lt~D^T03aM-~SB19%NdQ za3HBS6$E@V|6OqAfrDMQL7KDa zh&Q9mN}i?*-rjwWz>!@{$TzJR+i(9B4T&w_zJ}-e--umXfP{y+x10jm5#iGIK3T{*b zkN$zynB_LE3|Z0AKZ1TJ++JeSicwvcFtA>!OwksGZpR&QdmH==dyGg3uQ6QjYfk)G zo|$6Yxz$DsT|6!9s$k%njdJQbi-FMLcMgU2Y3g8_F$}%jgMa;q1-v$4NG1n$YNwzO zL%`v^*lzR0lVjpUWw(;X%IzlPqUmNik!1zxs*Zu5-S<)v(1+Hg+vt9k_RIp_cln*iR9KT39l7X8eI<{6-n3vxji29Y?`_dx+0xflAT z$if{IORzl8`g8>EEqL*Yz}3R?4o`%^AqA5=8X?+_5d-)0hjp30t=WWu(KJ6t8}^-v z*%oE$%1PJCTm63wrCKgn2cNy**#@s&$wHseRRp{X1jg#>xlV#!-B)es`I;Ec^4hb; zsncmLWD~QVu)BEyWIw>WA)@MenJ$l`e!fwAfG||-Q)3$@@E+(IlJgec$@oK-OQ?O) zx}_d|5;Yl2V`)N*{eZFN+A>63hkfk^0}IMfSy3a-(d*O*P-`(@7AHZ(Juan{HB`Jh zw1r~&UQ(?(vw*`DHakmN+QPjG)X^CVEHZw$K1B^VioNgmOvrE@ByN{WG20*ilcp}( zr0x*MTsl~hTe=g>e#_9d$JJC3Znf|120PrPPvv;;#JF2<0_>bs;~6Bf#2J|g)}Rq5 z*BEN4g(i*-K*Ou@8CwgwhRctur#5dJb`gF8`7e*UeUIhSFgVf6yCr#{kAHlw@?mA_ z!;-<%PlcbR|}dWbdpGYi5sI+`a=rqT855;RddY zXI1#5VRy4q3Fe-j{N6pQq$S^veiqFZB~REns;>3@Yo2V3W$Y?u664{$&tp7o%XgVm zW2kLtweGFOTH;JE>a;7if-x5Sm{=y936&?EtQ&R)0u8k95WIK!{A!SqD}mdr*RUod z>;O_T9todeVNJ3lFWt{_YBKGIdPmPKoqp|QAi+g-X=qv{$glct9IuwQc9}*Z9KTT| z^st&*9;$BM+D=BgG3W3540+k92a+faxnYuZBk~0hK_3lR_j*BBwFXr2QS&_@G%)wB z+7rlU&x7?ij2gvyruMyOEHGcn&}tR`;hwIptKXVCD|!`66<4`uH7AZjEi`i)IR61F zxVM?A@-`kCe(9W4UArggd^KmCz)d~^pX8?4#5VKBSv8rloA34?{PgnmqmgM@PLMC- zaVl_byL5PE<|Y$kR(q&t_BH#FC^U8q+OLApS3afF?X-fh3@Mu2SLz@fsgUI>zc6&8 z0u7Lp%b(wR*A~aoag_CmY>;g-EDVd>tNzXe4f6RESx*Ig&-o-c1Ev0b25x-Sfn20Z z)iinA2Y)xqLZf%1gv+NrAtMZr9>Z?#A*YTCakh+duV2aAVyMmMz@N-k6=o=N8dbkR zXvFEr7}R!T?MUXHS4psHQMGP?#3Jmaa^4uer&04O=Tmz8n{*oX+W=Mqyb$vIlX;k5 zH!`gA$8%1+%Ia7;mWxw~sd^GDOzutkR}V!B_GNrub0ME)Bs*W4=6f)Q-I?twv$>iY z^AE0^(|mXtRxNv1`_{?o%lxNXlxLN6Lt|O+h z5oZ@E>b2f=#AtuKb8E|fH}US4Nk3nF4-Y{?8qAEN+K(x7m-=j8R5EPuqB64xCNw8D zx1#RIVEfsB7_%^DSo*Mzcj(zmj5(wK&$yS!df#(?>*aGzv(-^Diu#+KT*?Vdd72EU z#y-RU&dl|hLi_Dv0NNk*X0%e&KT*X1L;)fGn_Y!*(Ekfo8)!Zz{|nRp|Eu&N_8(Gj zZ!4c!|EtS`B)Ku{>}i`*!i$ApGLLf#{?+s4&;hu6gsgA;_m+@*;FkZDuL-QOCp>ig z+HJ6VtU2)QTA<*yd1>pjXR!O|NTUf^F6NtYiA{1S>&8Ju%7qm+#!$=w1uhruxqJCi z1I?&X9^CM=jV4~SK8j+xR>_5klLOVZg+@espCa8W~wFcq~q9 z6KDZuO+x+IdX%eE6^k`OG&A1drGPvP8Cb8}w|2ni+5L)Hkwi9?$KNy5+QeVuFk_B17O&+==oOcYy{?!p`w-M-mH;h z;1gX10wd3H`!!g)+9!e{$&eHGBlz%iBqN4Cu;#or%R9ScUk-Svi1jBJe&wIw-Rm-F zi#xWwYqto_w<~$CsS*Kl(;*YIWAVK>N|1exgUYUI3bNxZhkYZLKnj^Q@H^Z4wWjC8 z2STJ!8h;?;b->peD@~EjvYMfKXXvC1a9PXwzE8q}4~c|VEhMiMj{?w(wSs;7ZZ(l#Z=Ih@4JfQ7MP~9%zfsd*|C))v-*GSt5F!Neg@+H~_!b=+ZuO0-T z0noTk#h`Zlu3R=y9RN_wOJX65Sr2P2buys@YRYJnl`PShiQtT;T4OmJA`Xj%1`^N! zHTDN;?c)U=TT(IivU5uxDw1F!SSh1Ui_Xcg|9mYrTDItirj^R?$_LM^6N`lE%2G_8G~^Hj zJyVdj)BrJj`AA|eP7eLT>u2L#LX*`S3oT7mH~t{?o0yr&esm7ZBgx=}8RM6D(z?9} zS_Xz@+S6Ux!_jbDrB;T-gpR#87`wRUY!Vt`Q`aaXdcwSz)INh}dri934@y4+qk|<6 z_EVuJl2MY>;`jWxgB}$4c9!8XT(nIZyKl|Wf*S5j%{Kr^O(+nRxZBS{%Mbwn`t3i! z9~DYnjaS06hA!BEn_148wkgT7WXfu~wZ6;!gh*dVz;VG4z&eW%CJ)gc{vwGkfRO|_ z+X9s3uzkFv_nsV0-LO`tg9_pLe2yU%3?L~t3c&-R-@^X_uPlFwo>;; zZv`qDZ{ox+$RG&9;VV zVnpja*<`pwbeRZS`II^P=|?&A-GpSW9JMr2d9aqXY|OuPN^1PH>*mjI@pxr&?6%2% z<{Ufze!w@Amh3Ie;TlM1C&RS!}BImdoEp1HDU19Rx7YUW24^O(B+w_cjN+$ z%9~S4EanFfHbT^)FW>x?!CRH5;hsag1!*!IFL@sE@ja=Qtt1mLc5KVAY)~c^l<=nAUf$T`)}Lxqm(0c@2HKz zHJDYfC~jBaR>;xhLK^JusY80Hx(Gg%)WNTXHaJmYt?dda0xHYey@WDzNXVV>w6Yqy zQ+?Lnyao=VYP~rAuW|@VZv#hLce==#g)dvIRAa?GWq7TxmOUfCCl|7wTGol+y_W*i zn8|(ypH(a(u%nDT9Jkv^qy-FI^pFLAK)r|KXWuHKR&4#;Vaa={#k*cvrmEY}4n2x8 zh{~C5Iuy5z=dLmM_t<=hR2=Rq+9wfh`zxy`!&HO|~g3p`E z6#CgUk=_9}1Gwzy)3VZ)2YwYRU_QS1YA%p$WUf0pMgRl<1oV2Ew9?*w^wIuT*S; zi5-8_ZW&hNqNet&DIOjYJpmsCuQo$Ip86fIp|lilMjhj?#0=Uy}VrCf=}o8L3faNxv9|b5AWfP zIs|zx=LCh@F~wulm^AY_@-Lgje#lh=L!;??!0B)SmvX=idQQKGyN^W$e*%bMff>S} zsStGhpr@)yBgmnlC}$fZ6hxJS@^k=|8JoYw1c>VWWW6fCEcJq;=6ENJJGUeGDyH8sv9EN!= zzcwFp$7j;AMK?7n@YIuWlHKEaeALY$e?q$N(o-MDm?&*D`4N#!)!Ol=`?2U-BKBO| zMce_{X5G_7R3E2{(>=Q(z64zNsy5iufo_wp`DnZ2^KBpn&n z!6ho49(Q>dF3e7&W9S?z5`G^?j++s!ul$X6ED}Q>QWACaokMYpvPzDxHA?hK>v9au zh|&H(ZrmLQ5B=k}_Me-5lzbF4y;MWSV;Yhseand9pNC(qVP0)9SBsQ~Za;E=5<4gr z@l(x#$ca4R#bEcqwA|YqXCEGy`Uh5dk7JqqLJ8hoCKvK&(}i+Ua446YMzi(A#G}=? z?@Cqtg4=>@p|i(#Z*|YLl#HqQfKRBMZReo6vZ-d6!rVRpmvd~3quii=MAvvAh0QVP z{z3G2boroMfz3pWZ(~|#Xr=gUHo7}nVN=zn5kDUq_ytq0m{vVV zZk+5Trh0=Gy1}UXS(l+YGM9(1QqqI2=e!&(e7`Hwv@NOhdue*Lx!qV;Ri=rJiNCO1 z$Q~5XDKqksI_o)K2(JoD2aYc1uD#iNLl519tCI2_iz0y@J&N0h!3-5>_fQkQB5ZIz zqneSebibF*+Y<;iJ;F&BKo*_7Lu$}N=`SQBzD&+a{Q)*9>)i}ygNjSwXYQ($lhQC+ zAuRW@avzTlWb1j0u9uWNHRp`PSGJQFI%Z}YBHRXOQT7jTrA{8kli`Py8{>9hb9)x@ z4Cpb*AqeiC+a*ArpYmO(e9AhcI)ju@uN?pE)fqp9-y1Fx{B?4iN{ zRad&rYl@X{gq&^{Sy$ZAUip;uq1JicMab91nQBB8As*cs$!fr{RC;n35B;mNW76B- zL-_V`UQ(^j`J>|pko>7(#JXl8yuT*9G zIzmP&ht9RV0G$x?$(uc6!~PiK4Rx7RN9z~FD*c-ZFbmiB$CWUUo6hNHWvk@}U16$z zDSp~_>dJU`kU}W@wLjD0U&5{1^|#^@>i+i2?>&?jaHJMKQosvWhkZ?cY7jeIJqEVI z^#Z~An_l4OR_%YQ;`(4fUgbl|e)ja=w)&6A0Js0Id<}%#2e(FBE#%jaq3HWRlCrco z9gvE}W7F&O{__}U3?Pof0H@8}=)X5mK}&sc1;zINZP4$Vgaq%&uF5Q(|2)WWMW7P* zF2A$M_%AQ>l0y1xkpJZ^C^ zBl~{tU1$;K#fwt)iJE`E6UgSc$a~hWJ~4JR-y>kj9h#-fxBB-RX?k!2Ji9({cn+^Q z9f212DL09~6?&1_W$rUG@bCD%XQ+yxXWwDNNGZ( zQ0YE^x1?B^0~EqT^BLU_N(%oab6AjXDUpVjt!G$9+*L^=9sIQ$FR>n`)pNk`*GqE^K>T>`7Eg)kAare-5qhgqB*#31LfEy)X aH+MH@Hh&a1i1FV6|0&CB$W_Q7g8mP^T?DrP literal 0 HcmV?d00001 diff --git a/src/javascript/helpers/aircraft.js b/src/javascript/helpers/aircraft.js index 6238d1e..4c15f31 100644 --- a/src/javascript/helpers/aircraft.js +++ b/src/javascript/helpers/aircraft.js @@ -124,9 +124,8 @@ export default class Aircraft { switch (key) { case "icon": - return inPopup - ? `` - : ``; + let color = this.altitudeAsColor(aircraft.altitude); + return ``; case "flag": if (aircraft.flag !== null) { @@ -236,6 +235,69 @@ export default class Aircraft { } }; + altitudeAsColor = function (altitude) { + let color_min = "EC5B13"; + let color_max = "EC5B13"; + let ratio = 0.5; + + if (altitude > 1000 && altitude <= 2000) { + color_max = "EC7C13"; + ratio = (1 / (2000 - 1000)) * (altitude - 1000); + } else if (altitude > 2000 && altitude <= 4000) { + color_min = "EC7C13"; + color_max = "ECC813"; + ratio = (1 / (4000 - 2000)) * (altitude - 2000); + } else if (altitude > 4000 && altitude <= 6000) { + color_min = "ECC813"; + color_max = "BEDF13"; + ratio = (1 / (6000 - 4000)) * (altitude - 4000); + } else if (altitude > 6000 && altitude <= 8000) { + color_min = "BEDF13"; + color_max = "40EC44"; + ratio = (1 / (8000 - 6000)) * (altitude - 6000); + } else if (altitude > 8000 && altitude <= 10000) { + color_min = "40EC44"; + color_max = "11E276"; + ratio = (1 / (10000 - 8000)) * (altitude - 8000); + } else if (altitude > 10000 && altitude <= 20000) { + color_min = "11E276"; + color_max = "13BBDE"; + ratio = (1 / (20000 - 10000)) * (altitude - 10000); + } else if (altitude > 20000 && altitude <= 30000) { + color_min = "13BBDE"; + color_max = "241FEC"; + ratio = (1 / (30000 - 20000)) * (altitude - 20000); + } else if (altitude > 30000 && altitude <= 40000) { + color_min = "241FEC"; + color_max = "EB13EC"; + ratio = (1 / (40000 - 30000)) * (altitude - 30000); + } else if (altitude > 40000) { + color_min = "EB13EC"; + color_max = "EB13EC"; + } + + if (color_min === color_max) { + return color_min; + } + + color_min = color_min + .match(/.{1,2}/g) + .map((oct) => parseInt(oct, 16) * (1 - ratio)); + color_max = color_max + .match(/.{1,2}/g) + .map((oct) => parseInt(oct, 16) * ratio); + let ci = [0, 1, 2].map((i) => + Math.min(Math.round(color_min[i] + color_max[i]), 255) + ); + + let color = ci + .reduce((a, v) => (a << 8) + v, 0) + .toString(16) + .padStart(6, "0"); + + return "#" + color; + }; + /** * Returns the textual value of the track * diff --git a/src/javascript/helpers/popup.js b/src/javascript/helpers/popup.js index 3d1e988..ddce58f 100644 --- a/src/javascript/helpers/popup.js +++ b/src/javascript/helpers/popup.js @@ -48,8 +48,8 @@ export default class Popup { let photographer = json.photos[0].photographer; // Add photo to content - content += `![${title} - © ${photographer}](${image} "${title} - © ${photographer}")\n`; - content += `© [${photographer}](${link})\n\n`; + content += `![${title} - © ${photographer}](${image} "${title} - © ${photographer}")`; + content += `© [${photographer}](${link})\n\n`; } // Add flag, title and icon to content @@ -122,8 +122,8 @@ export default class Popup { content: content, card_mod: { style: { - ".": `ha-card.type-markdown{border:none;}ha-markdown{background:${colorPopupBackground};}ha-markdown.no-header{padding-top:0 !important;}`, - "ha-markdown$": `font {color: ${colorPopupMarkDownText};}font a{color:${colorPopupMarkDownLink};}img{width:100%}h2{display:flex;justify-content:space-between;color:${colorPopupMarkDownText};}h2 img{width:auto;height:.8em;margin:0 10px 0 0;display:inline-block;vertical-align:baseline;}table{width:100%;border-spacing:0;border-collapse:collapse;}table tr th, table tr td{padding:4px;}table tr th{background-color:${colorPopupTableHeadBackground};color:${colorPopupTableHeadText};}table tr{color:${colorPopupTableRowText};}table tr:nth-child(even){background-color:${colorPopupTableRowEvenBackground};color:${colorPopupTableRowEvenText};}`, + ".": `ha-card.type-markdown{border:none;}ha-markdown{background:${colorPopupBackground};}ha-markdown a{color:${colorPopupMarkDownLink}};ha-markdown.no-header{padding-top:0 !important;}`, + "ha-markdown$": `img{width:100%}img + span{color:${colorPopupMarkDownText};font-size:10px;}img + span a{color:${colorPopupMarkDownText}}h2{display:flex;justify-content:space-between;color:${colorPopupMarkDownText};}h2 img{width:auto;height:.8em;margin:0 10px 0 0;display:inline-block;vertical-align:baseline;}table{width:100%;border-spacing:0;border-collapse:collapse;}table tr th, table tr td{padding:4px;}table tr th{background-color:${colorPopupTableHeadBackground};color:${colorPopupTableHeadText};}table tr{color:${colorPopupTableRowText};}table tr:nth-child(even){background-color:${colorPopupTableRowEvenBackground};color:${colorPopupTableRowEvenText};}`, }, }, },