Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Mottimuc

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    M
    • Profile
    • Following 1
    • Followers 0
    • Topics 19
    • Posts 69
    • Best 1
    • Groups 1

    Mottimuc

    @Mottimuc

    1
    Reputation
    23
    Profile views
    69
    Posts
    0
    Followers
    1
    Following
    Joined Last Online
    Location Munich

    Mottimuc Follow
    Starter

    Best posts made by Mottimuc

    • RE: Telegram: nur 1 User möglich

      Hab nun zuerst nen downgrade per Expertenmodus auf 1.4.3 gemacht, alle Telefone angemeldet und dann wieder hoch auf die 1.5.4
      Es geht jetzt. Wenn allerdings noch n User dazu kommt, ist es rum, dann gehts wieder von vorne los....

      Es handelt sich also definitiv um nen bug...

      posted in Error/Bug
      M
      Mottimuc

    Latest posts made by Mottimuc

    • RE: Umfrage: Welches Touchdisplay nutzt ihr?

      @aproxxo

      ich hab mir einen 21" TouchScreen an die Wand gemacht, dahinter läuft ein Raspi...
      Hannspree HT 221 PPB 54,6 cm (21.5 Zoll)

      Bin immer noch begeistert...

      VG M

      posted in Visualisierung
      M
      Mottimuc
    • RE: Test Adapter Fahrplan

      @marc-berg
      ahhh, danke, dann mach ich das nachher mal

      posted in Tester
      M
      Mottimuc
    • RE: Test Adapter Fahrplan

      @haselchen

      Hallo zusammen,

      ich habe nun auf die Beta kurz umgestellt und die 1.4.0 gezogen.

      Nun habe ich nur einen Fehler, dass der Stationscode nicht passt 😖

      Der Suchen-Button im Adapter geht aber auch nicht? Keine Ergebnisse für "Vaterstetten"...

      Ich bleib mal dran. (alternativ, wenn mir einer den HAFAS Stationscode für den S Bahnhof Vaterstetten zufällig hat...)

      Viele Grüße
      Michael

      posted in Tester
      M
      Mottimuc
    • RE: Test Adapter Fahrplan

      Hi zusammen,

      der Fahrplanadapter liefert bei mir seit geraumer Zeit keine aktuellen Daten.
      Der Adapter selbst ist aktuell (1.2.3)

      Auf der GitHub Seite ist aber als aktuelle Version 1.4.0 vermerkt.

      Was kann / soll / muss ich tun?

      Viele Grüße
      Michael

      posted in Tester
      M
      Mottimuc
    • RE: Vis bleibt weiss...

      @sigi234

      BOOAAH; Geht wieder. 😊

      Ich hatte tatsächlich eine View Importiert, welche "nicht gerendert" werden konnte.
      Diese habe ich nun gelöscht, nun gehts wieder.

      Danke trotzdem für Deine Hilfe zu der Zeit!

      Viele Grüße
      Michael

      PS: Die View hatte ich von Deinem alten VIS, die FritzBox View.
      Kann sein, dass es, wenn man nicht alle Adapter installiert hat, zu so einem Fehler kommen kann?!?

      posted in Visualisierung
      M
      Mottimuc
    • RE: Vis bleibt weiss...

      @sigi234

      Hei Sigi

      die Code Tags gehen nicht, zuviele Zeilen...
      VGM

      posted in Visualisierung
      M
      Mottimuc
    • Vis bleibt weiss...

      😥

      Hei zusammen,

      ich bastle seit Wochen an meiner VIS. Seit gerade vorhin bleibt der Startbildschirm in der Runtime weiss...
      Andere Projekte starten ganz normal und werden in der Runtime auch angezeigt.

      Ggf hat es etwas damit zu tun, dass ich ein Widget Kopieren wollte und dabei auf View einfügen gekommen bin?
      Da kam ne Fehlermeldung, die ich bestätigt habe. Gefühlt geht es seitdem nicht mehr?!?!

      Wenn ich die Seite im Browser untersuche, kommt das hier:


      [Link Text](VIS_CODE.txt Link Adresse)

      Hat jemand ne Idee?

      VIS ADapter habe ich schon neu gesetartet..

      VGMichael

      posted in Visualisierung
      M
      Mottimuc
    • RE: More than 100 subscriptions listed... ?? Woher?

      @asgothian
      Hallo zusammen

      ahhhhh, das war mir nicht bewusst, dass ich über instances.on die subscription erzeuge.
      Dann habe ich, wie OIiver richtig formuliert hat, beides fälschlicherweise gleichzeitig gemacht.

      Das Script übersetzt aus dem ICAL Adapter den Datenpunkt für die Anzeige in einem MaterialDesignWidget, welches auf ein JSON zugreift.
      Mein Gedanke war, dass ich eben die Push-Methode nutze, um hier (relativ synchron mit dem cron des ICAL Adapters) die Daten konvertiere.

      Ich hätte noch eine paar allgemeine Fragen dazu:

      1. Subscriptions laufen grundsätzlich immer, solange das Script aktiv ist?

      2. Wie viele Subscriptions je System sind machbar? Gerade für meine Steuerung Lichter und Wohnbereich habe ich hier einiges aufgebaut?
        Klar, das wir von Rechner usw. abhängen. Ich hab bei mir derzeit 3 Raspi 5 laufen....

      3. Kann ich irgendwie "aktive subscriptions" mir anzeigen lassen? In eine Liste protokollieren?

      Danke für Eure Hilfe
      Michael

      posted in Einsteigerfragen
      M
      Mottimuc
    • More than 100 subscriptions listed... ?? Woher?

      Hallo zusammen,

      im Log warn mich IOBroker, dass ich ein Script habe, welches > 100 subscriptions haben soll:

      	script.js.CALENDAR_SCRIPTE.Kalender.ICAL_2_LIST_KONVERTER: More than 105 subscriptions registered. Check your script
      

      Ich hatte den Begriff subscription auf "wenn sich Status des Datenpunkt xyz ändert" Verstanden, also ein Überwachen eines Datenpunktes. in Dem Script läuft aber m.E. nach alle 5 Min ein Script, welches aus einem ICAL Feld ein JSON für ein MDW Widget macht...

      ? Was tun?

      Hier das Script

      var schedule1;
      
      // Beschreibe diese Funktion …
      async function tbl_PAPA() {
         
         var instances = $(`[id=ical.5.data.table]`);
         instances.on(ical2TableWidget_0);
         
         // remove this, if you know to use your own datapoint
         let datapointId = '0_userdata.0.Calendar.Kalender.JSON_LIST_MDWCAL_0'
             createState(datapointId, "[]", {
                 read: true, 
                 write: false, 
                 desc: "JSON String for MDW TABLE Widget", 
                 type: "string", 
                 def: "[]"
             });
          
         function ical2TableWidget_0() {
             try {
                 let calList = [];
          
                 for (var inst = 0; inst <= instances.length - 1; inst++) {
                     let icalObj = getState(instances[inst]).val;
          
                     if (icalObj) {
                         for (var i = 0; i <= icalObj.length - 1; i++) {
                             let item = icalObj[i];
          
                             let calendarName = item._class.split(' ')[0].replace('ical_', '');
          
                             // Objekt für Tabelle erzeugen
                             calList.push({
                                 farbe: `<div style="background: ${getMyCalendarColor(calendarName)}; width: 6px; height: 20px"></div>`,
                                 zeit: item.date,
                                 termin: item.event,
                                 kalender: calendarName,
                                 timestamp: Date.parse(item._date)
                             })
                         }
                     }
                 }
          
                 // Liste sort by timestamp asc
                 calList.sort(function (a, b) {
                     return a.timestamp == b.timestamp ? 0 : +(a.timestamp > b.timestamp) || -1;
                 });
          
                 // Enter the destination data point that is to be used as object ID in the widget
                 setState(datapointId, JSON.stringify(calList), true);
          
                 function getMyCalendarColor(calendarName) {
                     // assign colors via the calendar names, use calendar name as set in ical
                      if (calendarName === 'Michael') {
                                 return '#44739e';
                             } else if (calendarName === 'Schiedsrichter') {
                                 return '#008080'
                             } else if (calendarName === 'SCBV') {
                                 return '#5a885d'
                             }
                 }
          
             } catch (e) {
                 console.error(`ical2MaterialDesignTableWidget: message: ${e.message}, stack: ${e.stack}`);
             }
         }
          
         ical2TableWidget_0();
      
      }
      
      // Beschreibe diese Funktion …
      async function tbl_MAMA() {
         
         var instances = $(`[id=ical.6.data.table]`);
         instances.on(ical2TableWidget_1);
         
         // remove this, if you know to use your own datapoint
         let datapointId = '0_userdata.0.Calendar.Kalender.JSON_LIST_MDWCAL_1'
             createState(datapointId, "[]", {
                 read: true, 
                 write: false, 
                 desc: "JSON String for MDW TABLE Widget", 
                 type: "string", 
                 def: "[]"
             });
          
         function ical2TableWidget_1() {
             try {
                 let calList = [];
          
                 for (var inst = 0; inst <= instances.length - 1; inst++) {
                     let icalObj = getState(instances[inst]).val;
          
                     if (icalObj) {
                         for (var i = 0; i <= icalObj.length - 1; i++) {
                             let item = icalObj[i];
          
                             let calendarName = item._class.split(' ')[0].replace('ical_', '');
          
                             // Objekt für Tabelle erzeugen
                             calList.push({
                                 farbe: `<div style="background: ${getMyCalendarColor(calendarName)}; width: 6px; height: 20px"></div>`,
                                 zeit: item.date,
                                 termin: item.event,
                                 kalender: calendarName,
                                 timestamp: Date.parse(item._date)
                             })
                         }
                     }
                 }
          
                 // Liste sort by timestamp asc
                 calList.sort(function (a, b) {
                     return a.timestamp == b.timestamp ? 0 : +(a.timestamp > b.timestamp) || -1;
                 });
          
                 // Enter the destination data point that is to be used as object ID in the widget
                 setState(datapointId, JSON.stringify(calList), true);
          
                 function getMyCalendarColor(calendarName) {
                 // assign colors via the calendar names, use calendar name as set in ical
                             if (calendarName === 'MAMA') {
                                 return '#44739e';
                             } else if (calendarName === 'FEIERTAGE') {
                                 return '#5a885d'
                             }
                 }
          
             } catch (e) {
                 console.error(`ical2MaterialDesignTableWidget: message: ${e.message}, stack: ${e.stack}`);
             }
         }
          
         ical2TableWidget_1();
      
      }
      
      // Beschreibe diese Funktion …
      async function tbl_LORENZ() {
         
         var instances = $(`[id=ical.7.data.table]`);
         instances.on(ical2TableWidget_2);
         
         // remove this, if you know to use your own datapoint
         let datapointId = '0_userdata.0.Calendar.Kalender.JSON_LIST_MDWCAL_2'
             createState(datapointId, "[]", {
                 read: true, 
                 write: false, 
                 desc: "JSON String for MDW TABLE Widget", 
                 type: "string", 
                 def: "[]"
             });
          
         function ical2TableWidget_2() {
             try {
                 let calList = [];
          
                 for (var inst = 0; inst <= instances.length - 1; inst++) {
                     let icalObj = getState(instances[inst]).val;
          
                     if (icalObj) {
                         for (var i = 0; i <= icalObj.length - 1; i++) {
                             let item = icalObj[i];
          
                             let calendarName = item._class.split(' ')[0].replace('ical_', '');
          
                             // Objekt für Tabelle erzeugen
                             calList.push({
                                 farbe: `<div style="background: ${getMyCalendarColor(calendarName)}; width: 6px; height: 20px"></div>`,
                                 zeit: item.date,
                                 termin: item.event,
                                 kalender: calendarName,
                                 timestamp: Date.parse(item._date)
                             })
                         }
                     }
                 }
          
                 // Liste sort by timestamp asc
                 calList.sort(function (a, b) {
                     return a.timestamp == b.timestamp ? 0 : +(a.timestamp > b.timestamp) || -1;
                 });
          
                 // Enter the destination data point that is to be used as object ID in the widget
                 setState(datapointId, JSON.stringify(calList), true);
          
                 function getMyCalendarColor(calendarName) {
                     // assign colors via the calendar names, use calendar name as set in ical
                             if (calendarName === 'LORENZ') {
                                 return '#407f88';
                             } else if (calendarName === 'Schiedsrichter') {
                                 return '#008080'
                             } else if (calendarName === 'SCBV') {
                                 return '#5a885d'
                             }
                 }
          
             } catch (e) {
                 console.error(`ical2MaterialDesignTableWidget: message: ${e.message}, stack: ${e.stack}`);
             }
         }
          
         ical2TableWidget_2();
      
      }
      
      // Beschreibe diese Funktion …
      async function tbl_FRANZI() {
         
         var instances = $(`[id=ical.8.data.table]`);
         instances.on(ical2TableWidget_3);
         
         // remove this, if you know to use your own datapoint
         let datapointId = '0_userdata.0.Calendar.Kalender.JSON_LIST_MDWCAL_3'
             createState(datapointId, "[]", {
                 read: true, 
                 write: false, 
                 desc: "JSON String for MDW TABLE Widget", 
                 type: "string", 
                 def: "[]"
             });
          
         function ical2TableWidget_3() {
             try {
                 let calList = [];
          
                 for (var inst = 0; inst <= instances.length - 1; inst++) {
                     let icalObj = getState(instances[inst]).val;
          
                     if (icalObj) {
                         for (var i = 0; i <= icalObj.length - 1; i++) {
                             let item = icalObj[i];
          
                             let calendarName = item._class.split(' ')[0].replace('ical_', '');
          
                             // Objekt für Tabelle erzeugen
                             calList.push({
                                 farbe: `<div style="background: ${getMyCalendarColor(calendarName)}; width: 6px; height: 20px"></div>`,
                                 zeit: item.date,
                                 termin: item.event,
                                 kalender: calendarName,
                                 timestamp: Date.parse(item._date)
                             })
                         }
                     }
                 }
          
                 // Liste sort by timestamp asc
                 calList.sort(function (a, b) {
                     return a.timestamp == b.timestamp ? 0 : +(a.timestamp > b.timestamp) || -1;
                 });
          
                 // Enter the destination data point that is to be used as object ID in the widget
                 setState(datapointId, JSON.stringify(calList), true);
          
                 function getMyCalendarColor(calendarName) {
                     // assign colors via the calendar names, use calendar name as set in ical
                      if (calendarName === 'FRANZI') {
                                 return '#44739e';
                             } else if (calendarName === 'Schiedsrichter') {
                                 return '#008080'
                             } else if (calendarName === 'SCBV') {
                                 return '#5a885d'
                             }
                 }
          
             } catch (e) {
                 console.error(`ical2MaterialDesignTableWidget: message: ${e.message}, stack: ${e.stack}`);
             }
         }
          
         ical2TableWidget_3();
      
      }
      
      // Beschreibe diese Funktion …
      async function tbl_ALLE() {
         
         var instances = $(`[id=ical.9.data.table]`);
         instances.on(ical2TableWidget_4);
         
         // remove this, if you know to use your own datapoint
         let datapointId = '0_userdata.0.Calendar.Kalender.JSON_LIST_MDWCAL_4'
             createState(datapointId, "[]", {
                 read: true, 
                 write: false, 
                 desc: "JSON String for MDW TABLE Widget", 
                 type: "string", 
                 def: "[]"
             });
          
         function ical2TableWidget_4() {
             try {
                 let calList = [];
          
                 for (var inst = 0; inst <= instances.length - 1; inst++) {
                     let icalObj = getState(instances[inst]).val;
          
                     if (icalObj) {
                         for (var i = 0; i <= icalObj.length - 1; i++) {
                             let item = icalObj[i];
          
                             let calendarName = item._class.split(' ')[0].replace('ical_', '');
          
                             // Objekt für Tabelle erzeugen
                             calList.push({
                                 farbe: `<div style="background: ${getMyCalendarColor(calendarName)}; width: 6px; height: 20px"></div>`,
                                 zeit: item.date,
                                 termin: item.event,
                                 kalender: calendarName,
                                 timestamp: Date.parse(item._date)
                             })
                         }
                     }
                 }
          
                 // Liste sort by timestamp asc
                 calList.sort(function (a, b) {
                     return a.timestamp == b.timestamp ? 0 : +(a.timestamp > b.timestamp) || -1;
                 });
          
                 // Enter the destination data point that is to be used as object ID in the widget
                 setState(datapointId, JSON.stringify(calList), true);
          
                 function getMyCalendarColor(calendarName) {
                     // assign colors via the calendar names, use calendar name as set in ical
                      if (calendarName === 'PAPA') {
                                 return '#44739e';
                             } else if (calendarName === 'Schiedsrichter') {
                                 return '#000000'
                             } else if (calendarName === 'PAPA SCBV') {
                                 return '#5a885d'
                             } else if (calendarName === 'MAMA') {
                                 return '#835d85'
                             } else if (calendarName === 'FRANZI') {
                                 return '#848f53'
                             } else if (calendarName === 'LORENZ') {
                                 return '#008080'
                             } else if (calendarName === 'FAMILY') {
                                 return '#F88c2b'
                             }
                 }
          
             } catch (e) {
                 console.error(`ical2MaterialDesignTableWidget: message: ${e.message}, stack: ${e.stack}`);
             }
         }
          
         ical2TableWidget_4();
      
      }
      
      
      schedule1 = schedule('*/5 * * * *', async () => {
       await tbl_PAPA();
       await wait(5000);
       await tbl_MAMA();
       await wait(5000);
       await tbl_LORENZ();
       await wait(5000);
       await tbl_FRANZI();
       await wait(5000);
       await tbl_ALLE();
       console.info('CAL_TBL_UPDATE');
      });
      
      //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0N2YXJpYWJsZXMlM0UlM0N2YXJpYWJsZSUyMHR5cGUlM0QlMjJjcm9uJTIyJTIwaWQlM0QlMjJzY2hlZHVsZTElMjIlM0VzY2hlZHVsZTElM0MlMkZ2YXJpYWJsZSUzRSUzQyUyRnZhcmlhYmxlcyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnNjaGVkdWxlX2NyZWF0ZSUyMiUyMGlkJTNEJTIyKSU1QiU3RHF3UExGSy1oZWE1bCU3QkF5UlUlMjIlMjB4JTNEJTIyMTEzJTIyJTIweSUzRCUyMjYyJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRXNjaGVkdWxlMSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyU0NIRURVTEUlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfY3JvbiUyMiUyMGlkJTNEJTIyMH4lNDBxdWMlM0ZjVHduJTVFbFRhLSUzRllJaCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNST04lMjIlM0UqJTIwKiUyMColMjAqJTIwKiUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZmllbGRfY3JvbiUyMiUyMGlkJTNEJTIyJTVEJTNGNzF0QSUzQiUyNX51akF4VCUyQmQlNUJUeEQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDUk9OJTIyJTNFKiUyRjUlMjAqJTIwKiUyMColMjAqJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjIlNUVQNkUzWWIlM0FnMFZUcE0lN0MlMkZzOGgyJTIyJTNFJTNDbXV0YXRpb24lMjBuYW1lJTNEJTIydGJsX1BBUEElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lb3V0c193YWl0JTIyJTIwaWQlM0QlMjJpdyU0MCFDT3U1NCUyQ2klM0ExeSUzRm1QRCU3QyU1RCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkRFTEFZJTIyJTNFNSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVU5JVCUyMiUzRXNlYyUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjIlN0NuJTJGejhxJTYwcURGJTJCbFJBV0MlN0N+JTJGJTdEJTIyJTNFJTNDbXV0YXRpb24lMjBuYW1lJTNEJTIydGJsX01BTUElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lb3V0c193YWl0JTIyJTIwaWQlM0QlMjJmdnpZfiEuQzglM0IlMjMlNURPbGZSJTVFdThWJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVklMjIlM0U1JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFc2VjJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19jYWxsY3VzdG9tbm9yZXR1cm4lMjIlMjBpZCUzRCUyMiU1QipKcyU2MCUzQlh5bFVDSmE4Z3MwJTdEaWslMjIlM0UlM0NtdXRhdGlvbiUyMG5hbWUlM0QlMjJ0YmxfTE9SRU5aJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGltZW91dHNfd2FpdCUyMiUyMGlkJTNEJTIydHR1JTI1JTYwT1ZRcFJmcXElN0NDVWt6Y1QlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWSUyMiUzRTUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VzZWMlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2NhbGxjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyeVJiYU9GakclMkY0KUFmTDJYNGlyUCUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMnRibF9GUkFOWkklMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lb3V0c193YWl0JTIyJTIwaWQlM0QlMjIlM0F1cjN2MSUyM0lEZTVsJTIzSSU0MHU4TyU1RC4lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWSUyMiUzRTUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VzZWMlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2NhbGxjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyRnNuV08lN0RjUlhjV0JYdEUlNjBTeCUzQmMlMjIlM0UlM0NtdXRhdGlvbiUyMG5hbWUlM0QlMjJ0YmxfQUxMRSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmRlYnVnJTIyJTIwaWQlM0QlMjJaSi5xJTdEfn5xJTVEJTdCJTNGY0ElNURocyU1QiUzRDBkJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0VpbmZvJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMkhaNCUyRkxyMSU3QzIuJTNCfk4lNUJQR0ElN0I4JTdEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRUNBTF9UQkxfVVBEQVRFJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2RlZmN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjJfenItRyhQdHljVjZVbCUyRkdFcWIlN0MlMjIlMjB4JTNEJTIyMzEzJTIyJTIweSUzRCUyMjIzOCUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFdGJsX1BBUEElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNDUklQVCUyMiUzRURRcDJZWElnYVc1emRHRnVZMlZ6SUQwZ0pDaGdXMmxrUFdsallXd3VOUzVrWVhSaExuUmhZbXhsWFdBcE93MEthVzV6ZEdGdVkyVnpMbTl1S0dsallXd3lWR0ZpYkdWWGFXUm5aWFJmTUNrN0RRb05DaTh2SUhKbGJXOTJaU0IwYUdsekxDQnBaaUI1YjNVZ2EyNXZkeUIwYnlCMWMyVWdlVzkxY2lCdmQyNGdaR0YwWVhCdmFXNTBEUXBzWlhRZ1pHRjBZWEJ2YVc1MFNXUWdQU0FuTUY5MWMyVnlaR0YwWVM0d0xrTmhiR1Z1WkdGeUxrdGhiR1Z1WkdWeUxrcFRUMDVmVEVsVFZGOU5SRmREUVV4Zk1DY05DaUFnSUNCamNtVmhkR1ZUZEdGMFpTaGtZWFJoY0c5cGJuUkpaQ3dnSWx0ZElpd2dldzBLSUNBZ0lDQWdJQ0J5WldGa09pQjBjblZsTENBTkNpQWdJQ0FnSUNBZ2QzSnBkR1U2SUdaaGJITmxMQ0FOQ2lBZ0lDQWdJQ0FnWkdWell6b2dJa3BUVDA0Z1UzUnlhVzVuSUdadmNpQk5SRmNnVkVGQ1RFVWdWMmxrWjJWMElpd2dEUW9nSUNBZ0lDQWdJSFI1Y0dVNklDSnpkSEpwYm1jaUxDQU5DaUFnSUNBZ0lDQWdaR1ZtT2lBaVcxMGlEUW9nSUNBZ2ZTazdEUW9nRFFwbWRXNWpkR2x2YmlCcFkyRnNNbFJoWW14bFYybGtaMlYwWHpBb0tTQjdEUW9nSUNBZ2RISjVJSHNOQ2lBZ0lDQWdJQ0FnYkdWMElHTmhiRXhwYzNRZ1BTQmJYVHNOQ2lBTkNpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FXNXpkQ0E5SURBN0lHbHVjM1FnUEQwZ2FXNXpkR0Z1WTJWekxteGxibWQwYUNBdElERTdJR2x1YzNRckt5a2dldzBLSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2xqWVd4UFltb2dQU0JuWlhSVGRHRjBaU2hwYm5OMFlXNWpaWE5iYVc1emRGMHBMblpoYkRzTkNpQU5DaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBZMkZzVDJKcUtTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQRDBnYVdOaGJFOWlhaTVzWlc1bmRHZ2dMU0F4T3lCcEt5c3BJSHNOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2wwWlcwZ1BTQnBZMkZzVDJKcVcybGRPdzBLSUEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnWTJGc1pXNWtZWEpPWVcxbElEMGdhWFJsYlM1ZlkyeGhjM011YzNCc2FYUW9KeUFuS1Zzd1hTNXlaWEJzWVdObEtDZHBZMkZzWHljc0lDY25LVHNOQ2lBTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVDJKcVpXdDBJR2JEdkhJZ1ZHRmlaV3hzWlNCbGNucGxkV2RsYmcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZV3hNYVhOMExuQjFjMmdvZXcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1GeVltVTZJR0E4WkdsMklITjBlV3hsUFNKaVlXTnJaM0p2ZFc1a09pQWtlMmRsZEUxNVEyRnNaVzVrWVhKRGIyeHZjaWhqWVd4bGJtUmhjazVoYldVcGZUc2dkMmxrZEdnNklEWndlRHNnYUdWcFoyaDBPaUF5TUhCNElqNDhMMlJwZGo1Z0xBMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2VtVnBkRG9nYVhSbGJTNWtZWFJsTEEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdWeWJXbHVPaUJwZEdWdExtVjJaVzUwTEEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYTJGc1pXNWtaWEk2SUdOaGJHVnVaR0Z5VG1GdFpTd05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnBiV1Z6ZEdGdGNEb2dSR0YwWlM1d1lYSnpaU2hwZEdWdExsOWtZWFJsS1EwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlLUTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBOQ2lBZ0lDQWdJQ0FnSUNBZ0lIME5DaUFnSUNBZ0lDQWdmUTBLSUEwS0lDQWdJQ0FnSUNBdkx5Qk1hWE4wWlNCemIzSjBJR0o1SUhScGJXVnpkR0Z0Y0NCaGMyTU5DaUFnSUNBZ0lDQWdZMkZzVEdsemRDNXpiM0owS0daMWJtTjBhVzl1SUNoaExDQmlLU0I3RFFvZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lTNTBhVzFsYzNSaGJYQWdQVDBnWWk1MGFXMWxjM1JoYlhBZ1B5QXdJRG9nS3loaExuUnBiV1Z6ZEdGdGNDQSUyQklHSXVkR2x0WlhOMFlXMXdLU0I4ZkNBdE1Uc05DaUFnSUNBZ0lDQWdmU2s3RFFvZ0RRb2dJQ0FnSUNBZ0lDOHZJRVZ1ZEdWeUlIUm9aU0JrWlhOMGFXNWhkR2x2YmlCa1lYUmhJSEJ2YVc1MElIUm9ZWFFnYVhNZ2RHOGdZbVVnZFhObFpDQmhjeUJ2WW1wbFkzUWdTVVFnYVc0Z2RHaGxJSGRwWkdkbGRBMEtJQ0FnSUNBZ0lDQnpaWFJUZEdGMFpTaGtZWFJoY0c5cGJuUkpaQ3dnU2xOUFRpNXpkSEpwYm1kcFpua29ZMkZzVEdsemRDa3NJSFJ5ZFdVcE93MEtJQTBLSUNBZ0lDQWdJQ0JtZFc1amRHbHZiaUJuWlhSTmVVTmhiR1Z1WkdGeVEyOXNiM0lvWTJGc1pXNWtZWEpPWVcxbEtTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBdkx5QmhjM05wWjI0Z1kyOXNiM0p6SUhacFlTQjBhR1VnWTJGc1pXNWtZWElnYm1GdFpYTXNJSFZ6WlNCallXeGxibVJoY2lCdVlXMWxJR0Z6SUhObGRDQnBiaUJwWTJGc0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHTmhiR1Z1WkdGeVRtRnRaU0E5UFQwZ0owMXBZMmhoWld3bktTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0p5TTBORGN6T1dVbk93MEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dOaGJHVnVaR0Z5VG1GdFpTQTlQVDBnSjFOamFHbGxaSE55YVdOb2RHVnlKeWtnZXcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2NqTURBNE1EZ3dKdzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHTmhiR1Z1WkdGeVRtRnRaU0E5UFQwZ0oxTkRRbFluS1NCN0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSnlNMVlUZzROV1FuRFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIME5DaUFnSUNBZ0lDQWdmUTBLSUEwS0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUhzTkNpQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWhnYVdOaGJESk5ZWFJsY21saGJFUmxjMmxuYmxSaFlteGxWMmxrWjJWME9pQnRaWE56WVdkbE9pQWtlMlV1YldWemMyRm5aWDBzSUhOMFlXTnJPaUFrZTJVdWMzUmhZMnQ5WUNrN0RRb2dJQ0FnZlEwS2ZRMEtJQTBLYVdOaGJESlVZV0pzWlZkcFpHZGxkRjh3S0NrN0RRbyUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyMCU1RCUzRGsyRkklMkNVMllaUFlnOTBGa3UlMjIlMjB4JTNEJTIyMzEyJTIyJTIweSUzRCUyMjI4OCUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFdGJsX01BTUElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNDUklQVCUyMiUzRURRcDJZWElnYVc1emRHRnVZMlZ6SUQwZ0pDaGdXMmxrUFdsallXd3VOaTVrWVhSaExuUmhZbXhsWFdBcE93MEthVzV6ZEdGdVkyVnpMbTl1S0dsallXd3lWR0ZpYkdWWGFXUm5aWFJmTVNrN0RRb05DaTh2SUhKbGJXOTJaU0IwYUdsekxDQnBaaUI1YjNVZ2EyNXZkeUIwYnlCMWMyVWdlVzkxY2lCdmQyNGdaR0YwWVhCdmFXNTBEUXBzWlhRZ1pHRjBZWEJ2YVc1MFNXUWdQU0FuTUY5MWMyVnlaR0YwWVM0d0xrTmhiR1Z1WkdGeUxrdGhiR1Z1WkdWeUxrcFRUMDVmVEVsVFZGOU5SRmREUVV4Zk1TY05DaUFnSUNCamNtVmhkR1ZUZEdGMFpTaGtZWFJoY0c5cGJuUkpaQ3dnSWx0ZElpd2dldzBLSUNBZ0lDQWdJQ0J5WldGa09pQjBjblZsTENBTkNpQWdJQ0FnSUNBZ2QzSnBkR1U2SUdaaGJITmxMQ0FOQ2lBZ0lDQWdJQ0FnWkdWell6b2dJa3BUVDA0Z1UzUnlhVzVuSUdadmNpQk5SRmNnVkVGQ1RFVWdWMmxrWjJWMElpd2dEUW9nSUNBZ0lDQWdJSFI1Y0dVNklDSnpkSEpwYm1jaUxDQU5DaUFnSUNBZ0lDQWdaR1ZtT2lBaVcxMGlEUW9nSUNBZ2ZTazdEUW9nRFFwbWRXNWpkR2x2YmlCcFkyRnNNbFJoWW14bFYybGtaMlYwWHpFb0tTQjdEUW9nSUNBZ2RISjVJSHNOQ2lBZ0lDQWdJQ0FnYkdWMElHTmhiRXhwYzNRZ1BTQmJYVHNOQ2lBTkNpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FXNXpkQ0E5SURBN0lHbHVjM1FnUEQwZ2FXNXpkR0Z1WTJWekxteGxibWQwYUNBdElERTdJR2x1YzNRckt5a2dldzBLSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2xqWVd4UFltb2dQU0JuWlhSVGRHRjBaU2hwYm5OMFlXNWpaWE5iYVc1emRGMHBMblpoYkRzTkNpQU5DaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBZMkZzVDJKcUtTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQRDBnYVdOaGJFOWlhaTVzWlc1bmRHZ2dMU0F4T3lCcEt5c3BJSHNOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2wwWlcwZ1BTQnBZMkZzVDJKcVcybGRPdzBLSUEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnWTJGc1pXNWtZWEpPWVcxbElEMGdhWFJsYlM1ZlkyeGhjM011YzNCc2FYUW9KeUFuS1Zzd1hTNXlaWEJzWVdObEtDZHBZMkZzWHljc0lDY25LVHNOQ2lBTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVDJKcVpXdDBJR2JEdkhJZ1ZHRmlaV3hzWlNCbGNucGxkV2RsYmcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZV3hNYVhOMExuQjFjMmdvZXcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1GeVltVTZJR0E4WkdsMklITjBlV3hsUFNKaVlXTnJaM0p2ZFc1a09pQWtlMmRsZEUxNVEyRnNaVzVrWVhKRGIyeHZjaWhqWVd4bGJtUmhjazVoYldVcGZUc2dkMmxrZEdnNklEWndlRHNnYUdWcFoyaDBPaUF5TUhCNElqNDhMMlJwZGo1Z0xBMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2VtVnBkRG9nYVhSbGJTNWtZWFJsTEEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdWeWJXbHVPaUJwZEdWdExtVjJaVzUwTEEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYTJGc1pXNWtaWEk2SUdOaGJHVnVaR0Z5VG1GdFpTd05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnBiV1Z6ZEdGdGNEb2dSR0YwWlM1d1lYSnpaU2hwZEdWdExsOWtZWFJsS1EwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlLUTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBOQ2lBZ0lDQWdJQ0FnSUNBZ0lIME5DaUFnSUNBZ0lDQWdmUTBLSUEwS0lDQWdJQ0FnSUNBdkx5Qk1hWE4wWlNCemIzSjBJR0o1SUhScGJXVnpkR0Z0Y0NCaGMyTU5DaUFnSUNBZ0lDQWdZMkZzVEdsemRDNXpiM0owS0daMWJtTjBhVzl1SUNoaExDQmlLU0I3RFFvZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lTNTBhVzFsYzNSaGJYQWdQVDBnWWk1MGFXMWxjM1JoYlhBZ1B5QXdJRG9nS3loaExuUnBiV1Z6ZEdGdGNDQSUyQklHSXVkR2x0WlhOMFlXMXdLU0I4ZkNBdE1Uc05DaUFnSUNBZ0lDQWdmU2s3RFFvZ0RRb2dJQ0FnSUNBZ0lDOHZJRVZ1ZEdWeUlIUm9aU0JrWlhOMGFXNWhkR2x2YmlCa1lYUmhJSEJ2YVc1MElIUm9ZWFFnYVhNZ2RHOGdZbVVnZFhObFpDQmhjeUJ2WW1wbFkzUWdTVVFnYVc0Z2RHaGxJSGRwWkdkbGRBMEtJQ0FnSUNBZ0lDQnpaWFJUZEdGMFpTaGtZWFJoY0c5cGJuUkpaQ3dnU2xOUFRpNXpkSEpwYm1kcFpua29ZMkZzVEdsemRDa3NJSFJ5ZFdVcE93MEtJQTBLSUNBZ0lDQWdJQ0JtZFc1amRHbHZiaUJuWlhSTmVVTmhiR1Z1WkdGeVEyOXNiM0lvWTJGc1pXNWtZWEpPWVcxbEtTQjdEUW9nSUNBZ0lDQWdJQzh2SUdGemMybG5iaUJqYjJ4dmNuTWdkbWxoSUhSb1pTQmpZV3hsYm1SaGNpQnVZVzFsY3l3Z2RYTmxJR05oYkdWdVpHRnlJRzVoYldVZ1lYTWdjMlYwSUdsdUlHbGpZV3dOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR05oYkdWdVpHRnlUbUZ0WlNBOVBUMGdKMDFCVFVFbktTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0p5TTBORGN6T1dVbk93MEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dOaGJHVnVaR0Z5VG1GdFpTQTlQVDBnSjBaRlNVVlNWRUZIUlNjcElIc05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBbkl6VmhPRGcxWkNjTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmUTBLSUNBZ0lDQWdJQ0I5RFFvZ0RRb2dJQ0FnZlNCallYUmphQ0FvWlNrZ2V3MEtJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0dCcFkyRnNNazFoZEdWeWFXRnNSR1Z6YVdkdVZHRmliR1ZYYVdSblpYUTZJRzFsYzNOaFoyVTZJQ1I3WlM1dFpYTnpZV2RsZlN3Z2MzUmhZMnM2SUNSN1pTNXpkR0ZqYTMxZ0tUc05DaUFnSUNCOURRcDlEUW9nRFFwcFkyRnNNbFJoWW14bFYybGtaMlYwWHpFb0tUc05DZyUzRCUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyJTJCJTVFZy0lNUJxOGlBJTIza2MwSy5NVGR4QyUyMiUyMHglM0QlMjIzMTIlMjIlMjB5JTNEJTIyMzM4JTIyJTNFJTNDbXV0YXRpb24lMjBzdGF0ZW1lbnRzJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5BTUUlMjIlM0V0YmxfTE9SRU5aJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ1JJUFQlMjIlM0VEUXAyWVhJZ2FXNXpkR0Z1WTJWeklEMGdKQ2hnVzJsa1BXbGpZV3d1Tnk1a1lYUmhMblJoWW14bFhXQXBPdzBLYVc1emRHRnVZMlZ6TG05dUtHbGpZV3d5VkdGaWJHVlhhV1JuWlhSZk1pazdEUW9OQ2k4dklISmxiVzkyWlNCMGFHbHpMQ0JwWmlCNWIzVWdhMjV2ZHlCMGJ5QjFjMlVnZVc5MWNpQnZkMjRnWkdGMFlYQnZhVzUwRFFwc1pYUWdaR0YwWVhCdmFXNTBTV1FnUFNBbk1GOTFjMlZ5WkdGMFlTNHdMa05oYkdWdVpHRnlMa3RoYkdWdVpHVnlMa3BUVDA1ZlRFbFRWRjlOUkZkRFFVeGZNaWNOQ2lBZ0lDQmpjbVZoZEdWVGRHRjBaU2hrWVhSaGNHOXBiblJKWkN3Z0lsdGRJaXdnZXcwS0lDQWdJQ0FnSUNCeVpXRmtPaUIwY25WbExDQU5DaUFnSUNBZ0lDQWdkM0pwZEdVNklHWmhiSE5sTENBTkNpQWdJQ0FnSUNBZ1pHVnpZem9nSWtwVFQwNGdVM1J5YVc1bklHWnZjaUJOUkZjZ1ZFRkNURVVnVjJsa1oyVjBJaXdnRFFvZ0lDQWdJQ0FnSUhSNWNHVTZJQ0p6ZEhKcGJtY2lMQ0FOQ2lBZ0lDQWdJQ0FnWkdWbU9pQWlXMTBpRFFvZ0lDQWdmU2s3RFFvZ0RRcG1kVzVqZEdsdmJpQnBZMkZzTWxSaFlteGxWMmxrWjJWMFh6SW9LU0I3RFFvZ0lDQWdkSEo1SUhzTkNpQWdJQ0FnSUNBZ2JHVjBJR05oYkV4cGMzUWdQU0JiWFRzTkNpQU5DaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdhVzV6ZENBOUlEQTdJR2x1YzNRZ1BEMGdhVzV6ZEdGdVkyVnpMbXhsYm1kMGFDQXRJREU3SUdsdWMzUXJLeWtnZXcwS0lDQWdJQ0FnSUNBZ0lDQWdiR1YwSUdsallXeFBZbW9nUFNCblpYUlRkR0YwWlNocGJuTjBZVzVqWlhOYmFXNXpkRjBwTG5aaGJEc05DaUFOQ2lBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwWTJGc1QySnFLU0I3RFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUEQwZ2FXTmhiRTlpYWk1c1pXNW5kR2dnTFNBeE95QnBLeXNwSUhzTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1YwSUdsMFpXMGdQU0JwWTJGc1QySnFXMmxkT3cwS0lBMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ1kyRnNaVzVrWVhKT1lXMWxJRDBnYVhSbGJTNWZZMnhoYzNNdWMzQnNhWFFvSnlBbktWc3dYUzV5WlhCc1lXTmxLQ2RwWTJGc1h5Y3NJQ2NuS1RzTkNpQU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1QySnFaV3QwSUdiRHZISWdWR0ZpWld4c1pTQmxjbnBsZFdkbGJnMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVd4TWFYTjBMbkIxYzJnb2V3MEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptRnlZbVU2SUdBOFpHbDJJSE4wZVd4bFBTSmlZV05yWjNKdmRXNWtPaUFrZTJkbGRFMTVRMkZzWlc1a1lYSkRiMnh2Y2loallXeGxibVJoY2s1aGJXVXBmVHNnZDJsa2RHZzZJRFp3ZURzZ2FHVnBaMmgwT2lBeU1IQjRJajQ4TDJScGRqNWdMQTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdlbVZwZERvZ2FYUmxiUzVrWVhSbExBMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHVnliV2x1T2lCcGRHVnRMbVYyWlc1MExBMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2EyRnNaVzVrWlhJNklHTmhiR1Z1WkdGeVRtRnRaU3dOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJwYldWemRHRnRjRG9nUkdGMFpTNXdZWEp6WlNocGRHVnRMbDlrWVhSbEtRMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5S1EwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwTkNpQWdJQ0FnSUNBZ0lDQWdJSDBOQ2lBZ0lDQWdJQ0FnZlEwS0lBMEtJQ0FnSUNBZ0lDQXZMeUJNYVhOMFpTQnpiM0owSUdKNUlIUnBiV1Z6ZEdGdGNDQmhjMk1OQ2lBZ0lDQWdJQ0FnWTJGc1RHbHpkQzV6YjNKMEtHWjFibU4wYVc5dUlDaGhMQ0JpS1NCN0RRb2dJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZUzUwYVcxbGMzUmhiWEFnUFQwZ1lpNTBhVzFsYzNSaGJYQWdQeUF3SURvZ0t5aGhMblJwYldWemRHRnRjQ0ElMkJJR0l1ZEdsdFpYTjBZVzF3S1NCOGZDQXRNVHNOQ2lBZ0lDQWdJQ0FnZlNrN0RRb2dEUW9nSUNBZ0lDQWdJQzh2SUVWdWRHVnlJSFJvWlNCa1pYTjBhVzVoZEdsdmJpQmtZWFJoSUhCdmFXNTBJSFJvWVhRZ2FYTWdkRzhnWW1VZ2RYTmxaQ0JoY3lCdlltcGxZM1FnU1VRZ2FXNGdkR2hsSUhkcFpHZGxkQTBLSUNBZ0lDQWdJQ0J6WlhSVGRHRjBaU2hrWVhSaGNHOXBiblJKWkN3Z1NsTlBUaTV6ZEhKcGJtZHBabmtvWTJGc1RHbHpkQ2tzSUhSeWRXVXBPdzBLSUEwS0lDQWdJQ0FnSUNCbWRXNWpkR2x2YmlCblpYUk5lVU5oYkdWdVpHRnlRMjlzYjNJb1kyRnNaVzVrWVhKT1lXMWxLU0I3RFFvZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJoYzNOcFoyNGdZMjlzYjNKeklIWnBZU0IwYUdVZ1kyRnNaVzVrWVhJZ2JtRnRaWE1zSUhWelpTQmpZV3hsYm1SaGNpQnVZVzFsSUdGeklITmxkQ0JwYmlCcFkyRnNEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGpZV3hsYm1SaGNrNWhiV1VnUFQwOUlDZE1UMUpGVGxvbktTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0p5TTBNRGRtT0Rnbk93MEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dOaGJHVnVaR0Z5VG1GdFpTQTlQVDBnSjFOamFHbGxaSE55YVdOb2RHVnlKeWtnZXcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2NqTURBNE1EZ3dKdzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHTmhiR1Z1WkdGeVRtRnRaU0E5UFQwZ0oxTkRRbFluS1NCN0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSnlNMVlUZzROV1FuRFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIME5DaUFnSUNBZ0lDQWdmUTBLSUEwS0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUhzTkNpQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWhnYVdOaGJESk5ZWFJsY21saGJFUmxjMmxuYmxSaFlteGxWMmxrWjJWME9pQnRaWE56WVdkbE9pQWtlMlV1YldWemMyRm5aWDBzSUhOMFlXTnJPaUFrZTJVdWMzUmhZMnQ5WUNrN0RRb2dJQ0FnZlEwS2ZRMEtJQTBLYVdOaGJESlVZV0pzWlZkcFpHZGxkRjh5S0NrN0RRbyUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyUCUzQVdhTVUlMjMlMjQxX2VaVyU3Q0QlNUVkJTYwV3glMjIlMjB4JTNEJTIyMzEzJTIyJTIweSUzRCUyMjM4OCUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFdGJsX0ZSQU5aSSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU0NSSVBUJTIyJTNFRFFwMllYSWdhVzV6ZEdGdVkyVnpJRDBnSkNoZ1cybGtQV2xqWVd3dU9DNWtZWFJoTG5SaFlteGxYV0FwT3cwS2FXNXpkR0Z1WTJWekxtOXVLR2xqWVd3eVZHRmliR1ZYYVdSblpYUmZNeWs3RFFvTkNpOHZJSEpsYlc5MlpTQjBhR2x6TENCcFppQjViM1VnYTI1dmR5QjBieUIxYzJVZ2VXOTFjaUJ2ZDI0Z1pHRjBZWEJ2YVc1MERRcHNaWFFnWkdGMFlYQnZhVzUwU1dRZ1BTQW5NRjkxYzJWeVpHRjBZUzR3TGtOaGJHVnVaR0Z5TGt0aGJHVnVaR1Z5TGtwVFQwNWZURWxUVkY5TlJGZERRVXhmTXljTkNpQWdJQ0JqY21WaGRHVlRkR0YwWlNoa1lYUmhjRzlwYm5SSlpDd2dJbHRkSWl3Z2V3MEtJQ0FnSUNBZ0lDQnlaV0ZrT2lCMGNuVmxMQ0FOQ2lBZ0lDQWdJQ0FnZDNKcGRHVTZJR1poYkhObExDQU5DaUFnSUNBZ0lDQWdaR1Z6WXpvZ0lrcFRUMDRnVTNSeWFXNW5JR1p2Y2lCTlJGY2dWRUZDVEVVZ1YybGtaMlYwSWl3Z0RRb2dJQ0FnSUNBZ0lIUjVjR1U2SUNKemRISnBibWNpTENBTkNpQWdJQ0FnSUNBZ1pHVm1PaUFpVzEwaURRb2dJQ0FnZlNrN0RRb2dEUXBtZFc1amRHbHZiaUJwWTJGc01sUmhZbXhsVjJsa1oyVjBYek1vS1NCN0RRb2dJQ0FnZEhKNUlIc05DaUFnSUNBZ0lDQWdiR1YwSUdOaGJFeHBjM1FnUFNCYlhUc05DaUFOQ2lBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVc1emRDQTlJREE3SUdsdWMzUWdQRDBnYVc1emRHRnVZMlZ6TG14bGJtZDBhQ0F0SURFN0lHbHVjM1FyS3lrZ2V3MEtJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHbGpZV3hQWW1vZ1BTQm5aWFJUZEdGMFpTaHBibk4wWVc1alpYTmJhVzV6ZEYwcExuWmhiRHNOQ2lBTkNpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocFkyRnNUMkpxS1NCN0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BEMGdhV05oYkU5aWFpNXNaVzVuZEdnZ0xTQXhPeUJwS3lzcElIc05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHbDBaVzBnUFNCcFkyRnNUMkpxVzJsZE93MEtJQTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdZMkZzWlc1a1lYSk9ZVzFsSUQwZ2FYUmxiUzVmWTJ4aGMzTXVjM0JzYVhRb0p5QW5LVnN3WFM1eVpYQnNZV05sS0NkcFkyRnNYeWNzSUNjbktUc05DaUFOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdUMkpxWld0MElHYkR2SElnVkdGaVpXeHNaU0JsY25wbGRXZGxiZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallXeE1hWE4wTG5CMWMyZ29ldzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabUZ5WW1VNklHQThaR2wySUhOMGVXeGxQU0ppWVdOclozSnZkVzVrT2lBa2UyZGxkRTE1UTJGc1pXNWtZWEpEYjJ4dmNpaGpZV3hsYm1SaGNrNWhiV1VwZlRzZ2QybGtkR2c2SURad2VEc2dhR1ZwWjJoME9pQXlNSEI0SWo0OEwyUnBkajVnTEEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZW1WcGREb2dhWFJsYlM1a1lYUmxMQTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR1Z5YldsdU9pQnBkR1Z0TG1WMlpXNTBMQTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhMkZzWlc1a1pYSTZJR05oYkdWdVpHRnlUbUZ0WlN3TkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhScGJXVnpkR0Z0Y0RvZ1JHRjBaUzV3WVhKelpTaHBkR1Z0TGw5a1lYUmxLUTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtRMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIME5DaUFnSUNBZ0lDQWdJQ0FnSUgwTkNpQWdJQ0FnSUNBZ2ZRMEtJQTBLSUNBZ0lDQWdJQ0F2THlCTWFYTjBaU0J6YjNKMElHSjVJSFJwYldWemRHRnRjQ0JoYzJNTkNpQWdJQ0FnSUNBZ1kyRnNUR2x6ZEM1emIzSjBLR1oxYm1OMGFXOXVJQ2hoTENCaUtTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVM1MGFXMWxjM1JoYlhBZ1BUMGdZaTUwYVcxbGMzUmhiWEFnUHlBd0lEb2dLeWhoTG5ScGJXVnpkR0Z0Y0NBJTJCSUdJdWRHbHRaWE4wWVcxd0tTQjhmQ0F0TVRzTkNpQWdJQ0FnSUNBZ2ZTazdEUW9nRFFvZ0lDQWdJQ0FnSUM4dklFVnVkR1Z5SUhSb1pTQmtaWE4wYVc1aGRHbHZiaUJrWVhSaElIQnZhVzUwSUhSb1lYUWdhWE1nZEc4Z1ltVWdkWE5sWkNCaGN5QnZZbXBsWTNRZ1NVUWdhVzRnZEdobElIZHBaR2RsZEEwS0lDQWdJQ0FnSUNCelpYUlRkR0YwWlNoa1lYUmhjRzlwYm5SSlpDd2dTbE5QVGk1emRISnBibWRwWm5rb1kyRnNUR2x6ZENrc0lIUnlkV1VwT3cwS0lBMEtJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpQm5aWFJOZVVOaGJHVnVaR0Z5UTI5c2IzSW9ZMkZzWlc1a1lYSk9ZVzFsS1NCN0RRb2dJQ0FnSUNBZ0lDQWdJQ0F2THlCaGMzTnBaMjRnWTI5c2IzSnpJSFpwWVNCMGFHVWdZMkZzWlc1a1lYSWdibUZ0WlhNc0lIVnpaU0JqWVd4bGJtUmhjaUJ1WVcxbElHRnpJSE5sZENCcGJpQnBZMkZzRFFvZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dOaGJHVnVaR0Z5VG1GdFpTQTlQVDBnSjBaU1FVNWFTU2NwSUhzTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFuSXpRME56TTVaU2M3RFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZMkZzWlc1a1lYSk9ZVzFsSUQwOVBTQW5VMk5vYVdWa2MzSnBZMmgwWlhJbktTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0p5TXdNRGd3T0RBbkRRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTJGc1pXNWtZWEpPWVcxbElEMDlQU0FuVTBOQ1ZpY3BJSHNOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW5JelZoT0RnMVpDY05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlEwS0lDQWdJQ0FnSUNCOURRb2dEUW9nSUNBZ2ZTQmpZWFJqYUNBb1pTa2dldzBLSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbVZ5Y205eUtHQnBZMkZzTWsxaGRHVnlhV0ZzUkdWemFXZHVWR0ZpYkdWWGFXUm5aWFE2SUcxbGMzTmhaMlU2SUNSN1pTNXRaWE56WVdkbGZTd2djM1JoWTJzNklDUjdaUzV6ZEdGamEzMWdLVHNOQ2lBZ0lDQjlEUXA5RFFvZ0RRcHBZMkZzTWxSaFlteGxWMmxrWjJWMFh6TW9LVHNOQ2clM0QlM0QlM0MlMkZmaWVsZCUzRSUzQ2NvbW1lbnQlMjBwaW5uZWQlM0QlMjJmYWxzZSUyMiUyMGglM0QlMjI4MCUyMiUyMHclM0QlMjIxNjAlMjIlM0VCZXNjaHJlaWJlJTIwZGllc2UlMjBGdW5rdGlvbiUyMCVFMiU4MCVBNiUzQyUyRmNvbW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfZGVmY3VzdG9tbm9yZXR1cm4lMjIlMjBpZCUzRCUyMnhodFByNWZDci5zdkh1JTNEKXZIemIlMjIlMjB4JTNEJTIyMzEzJTIyJTIweSUzRCUyMjQzOCUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFdGJsX0FMTEUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNDUklQVCUyMiUzRURRcDJZWElnYVc1emRHRnVZMlZ6SUQwZ0pDaGdXMmxrUFdsallXd3VPUzVrWVhSaExuUmhZbXhsWFdBcE93MEthVzV6ZEdGdVkyVnpMbTl1S0dsallXd3lWR0ZpYkdWWGFXUm5aWFJmTkNrN0RRb05DaTh2SUhKbGJXOTJaU0IwYUdsekxDQnBaaUI1YjNVZ2EyNXZkeUIwYnlCMWMyVWdlVzkxY2lCdmQyNGdaR0YwWVhCdmFXNTBEUXBzWlhRZ1pHRjBZWEJ2YVc1MFNXUWdQU0FuTUY5MWMyVnlaR0YwWVM0d0xrTmhiR1Z1WkdGeUxrdGhiR1Z1WkdWeUxrcFRUMDVmVEVsVFZGOU5SRmREUVV4Zk5DY05DaUFnSUNCamNtVmhkR1ZUZEdGMFpTaGtZWFJoY0c5cGJuUkpaQ3dnSWx0ZElpd2dldzBLSUNBZ0lDQWdJQ0J5WldGa09pQjBjblZsTENBTkNpQWdJQ0FnSUNBZ2QzSnBkR1U2SUdaaGJITmxMQ0FOQ2lBZ0lDQWdJQ0FnWkdWell6b2dJa3BUVDA0Z1UzUnlhVzVuSUdadmNpQk5SRmNnVkVGQ1RFVWdWMmxrWjJWMElpd2dEUW9nSUNBZ0lDQWdJSFI1Y0dVNklDSnpkSEpwYm1jaUxDQU5DaUFnSUNBZ0lDQWdaR1ZtT2lBaVcxMGlEUW9nSUNBZ2ZTazdEUW9nRFFwbWRXNWpkR2x2YmlCcFkyRnNNbFJoWW14bFYybGtaMlYwWHpRb0tTQjdEUW9nSUNBZ2RISjVJSHNOQ2lBZ0lDQWdJQ0FnYkdWMElHTmhiRXhwYzNRZ1BTQmJYVHNOQ2lBTkNpQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FXNXpkQ0E5SURBN0lHbHVjM1FnUEQwZ2FXNXpkR0Z1WTJWekxteGxibWQwYUNBdElERTdJR2x1YzNRckt5a2dldzBLSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2xqWVd4UFltb2dQU0JuWlhSVGRHRjBaU2hwYm5OMFlXNWpaWE5iYVc1emRGMHBMblpoYkRzTkNpQU5DaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBZMkZzVDJKcUtTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQRDBnYVdOaGJFOWlhaTVzWlc1bmRHZ2dMU0F4T3lCcEt5c3BJSHNOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2wwWlcwZ1BTQnBZMkZzVDJKcVcybGRPdzBLSUEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnWTJGc1pXNWtZWEpPWVcxbElEMGdhWFJsYlM1ZlkyeGhjM011YzNCc2FYUW9KeUFuS1Zzd1hTNXlaWEJzWVdObEtDZHBZMkZzWHljc0lDY25LVHNOQ2lBTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVDJKcVpXdDBJR2JEdkhJZ1ZHRmlaV3hzWlNCbGNucGxkV2RsYmcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZV3hNYVhOMExuQjFjMmdvZXcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1GeVltVTZJR0E4WkdsMklITjBlV3hsUFNKaVlXTnJaM0p2ZFc1a09pQWtlMmRsZEUxNVEyRnNaVzVrWVhKRGIyeHZjaWhqWVd4bGJtUmhjazVoYldVcGZUc2dkMmxrZEdnNklEWndlRHNnYUdWcFoyaDBPaUF5TUhCNElqNDhMMlJwZGo1Z0xBMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2VtVnBkRG9nYVhSbGJTNWtZWFJsTEEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdWeWJXbHVPaUJwZEdWdExtVjJaVzUwTEEwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYTJGc1pXNWtaWEk2SUdOaGJHVnVaR0Z5VG1GdFpTd05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnBiV1Z6ZEdGdGNEb2dSR0YwWlM1d1lYSnpaU2hwZEdWdExsOWtZWFJsS1EwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlLUTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBOQ2lBZ0lDQWdJQ0FnSUNBZ0lIME5DaUFnSUNBZ0lDQWdmUTBLSUEwS0lDQWdJQ0FnSUNBdkx5Qk1hWE4wWlNCemIzSjBJR0o1SUhScGJXVnpkR0Z0Y0NCaGMyTU5DaUFnSUNBZ0lDQWdZMkZzVEdsemRDNXpiM0owS0daMWJtTjBhVzl1SUNoaExDQmlLU0I3RFFvZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lTNTBhVzFsYzNSaGJYQWdQVDBnWWk1MGFXMWxjM1JoYlhBZ1B5QXdJRG9nS3loaExuUnBiV1Z6ZEdGdGNDQSUyQklHSXVkR2x0WlhOMFlXMXdLU0I4ZkNBdE1Uc05DaUFnSUNBZ0lDQWdmU2s3RFFvZ0RRb2dJQ0FnSUNBZ0lDOHZJRVZ1ZEdWeUlIUm9aU0JrWlhOMGFXNWhkR2x2YmlCa1lYUmhJSEJ2YVc1MElIUm9ZWFFnYVhNZ2RHOGdZbVVnZFhObFpDQmhjeUJ2WW1wbFkzUWdTVVFnYVc0Z2RHaGxJSGRwWkdkbGRBMEtJQ0FnSUNBZ0lDQnpaWFJUZEdGMFpTaGtZWFJoY0c5cGJuUkpaQ3dnU2xOUFRpNXpkSEpwYm1kcFpua29ZMkZzVEdsemRDa3NJSFJ5ZFdVcE93MEtJQTBLSUNBZ0lDQWdJQ0JtZFc1amRHbHZiaUJuWlhSTmVVTmhiR1Z1WkdGeVEyOXNiM0lvWTJGc1pXNWtZWEpPWVcxbEtTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBdkx5QmhjM05wWjI0Z1kyOXNiM0p6SUhacFlTQjBhR1VnWTJGc1pXNWtZWElnYm1GdFpYTXNJSFZ6WlNCallXeGxibVJoY2lCdVlXMWxJR0Z6SUhObGRDQnBiaUJwWTJGc0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHTmhiR1Z1WkdGeVRtRnRaU0E5UFQwZ0oxQkJVRUVuS1NCN0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSnlNME5EY3pPV1VuT3cwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR05oYkdWdVpHRnlUbUZ0WlNBOVBUMGdKMU5qYUdsbFpITnlhV05vZEdWeUp5a2dldzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDY2pNREF3TURBd0p3MEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dOaGJHVnVaR0Z5VG1GdFpTQTlQVDBnSjFCQlVFRWdVME5DVmljcElIc05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBbkl6VmhPRGcxWkNjTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hqWVd4bGJtUmhjazVoYldVZ1BUMDlJQ2ROUVUxQkp5a2dldzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDY2pPRE0xWkRnMUp3MEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dOaGJHVnVaR0Z5VG1GdFpTQTlQVDBnSjBaU1FVNWFTU2NwSUhzTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFuSXpnME9HWTFNeWNOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGpZV3hsYm1SaGNrNWhiV1VnUFQwOUlDZE1UMUpGVGxvbktTQjdEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0p5TXdNRGd3T0RBbkRRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTJGc1pXNWtZWEpPWVcxbElEMDlQU0FuUmtGTlNVeFpKeWtnZXcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2NqUmpnNFl6SmlKdzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOURRb2dJQ0FnSUNBZ0lIME5DaUFOQ2lBZ0lDQjlJR05oZEdOb0lDaGxLU0I3RFFvZ0lDQWdJQ0FnSUdOdmJuTnZiR1V1WlhKeWIzSW9ZR2xqWVd3eVRXRjBaWEpwWVd4RVpYTnBaMjVVWVdKc1pWZHBaR2RsZERvZ2JXVnpjMkZuWlRvZ0pIdGxMbTFsYzNOaFoyVjlMQ0J6ZEdGamF6b2dKSHRsTG5OMFlXTnJmV0FwT3cwS0lDQWdJSDBOQ24wTkNpQU5DbWxqWVd3eVZHRmliR1ZYYVdSblpYUmZOQ2dwT3cwSyUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGeG1sJTNF
      

      posted in Einsteigerfragen
      M
      Mottimuc
    • RE: Neuer Adapter EMS-ESP für Bosch Heizungen

      @tp1de

      Ist gemacht und läuft SUPER!! Danke!
      Soweit ich sehe, reichen mir die Funktionen.
      Für die Erstellung eines Urlaubsmodus muss ich mir noch Gedanken machen. Da kommt man mit einfachen Widgets nicht ganz hin, da muss ein Script die Daten noch zusammenfriemeln.

      Viele Grüße
      Michael

      posted in Tester
      M
      Mottimuc
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo