Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Mitsubishi Klimaanlage einbinden

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    741

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Mitsubishi Klimaanlage einbinden

Geplant Angeheftet Gesperrt Verschoben Visualisierung
12 Beiträge 5 Kommentatoren 7.3k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    Michi2404
    schrieb am zuletzt editiert von
    #3

    Ist leider nicht vorhanden in der Liste :-/

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #4

      Dann leg es an ;-)

      Sammle Infos und links zu wlan Adapter und ggf einer api Dokumentation dazu.

      Was aber drin ist ist eine Idee die für mehrere Klimaveränderung funktioniert. Ggf auch mal geschlossene issues prüfen ….

      Gesendet vom Handy ...

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        Michi2404
        schrieb am zuletzt editiert von
        #5

        Das sagst du so leicht :D

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          Michi2404
          schrieb am zuletzt editiert von
          #6

          Was müsste man den machen um so einen Adapter zu erstellen? Bzw mit der daikin hat ja jemand schon sowas gemacht.

          1 Antwort Letzte Antwort
          0
          • apollon77A Offline
            apollon77A Offline
            apollon77
            schrieb am zuletzt editiert von
            #7

            Als erstes mal die API rausbekommen. Also wie das wlan Teil angesprochen wird oder zwischen App und gerät Traffic mitschneiden.

            Google hilft vllt

            Gesendet vom Handy …

            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
            1 Antwort Letzte Antwort
            0
            • painkillerdeP Offline
              painkillerdeP Offline
              painkillerde
              schrieb am zuletzt editiert von
              #8

              Hallo zusammen,

              noch habe ich keine Klima aber das wird sich bald ändern.

              Wäre dann auch sehr interessiert an einem Adapter.

              Hier mal ein paar Infos aus einem anderen Forum - vielleicht hilft das jemanden der wirklich Ahnung hat.

              Über das Wlan-Modul wird wohl immer mit der MELcloud geredet.

              Hier hat sich jemand mühe gemacht und das ganze mal per Script abgefragt.

              Anbei einmal Curl und PHP - da gibts doch hier sicher ein paar Profis die daraus was machen können.

              CURL

              //Parameters
              $username = 'email@email.com';
              $password = 'password123';
              $loginurl = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin';
              $url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices/';
              $appversion = "1.7.1.0";
              
              $ch = curl_init();
              
              //Curl options
              curl_setopt($ch, CURLOPT_URL, $loginurl);
              curl_setopt($ch, CURLOPT_POST, 1);
              curl_setopt($ch, CURLOPT_POSTFIELDS, 'Email='.$username.'&password='.$password.'&AppVersion='.$appversion);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
              
              //execute the the login
              $login = curl_exec($ch);
              $data = json_decode($login);
              $token = $data->LoginData->ContextKey;
              //print_r($token);
              
              //execute the request (get info)
              $ch = curl_init();
              
              //Curl options
              curl_setopt($ch, CURLOPT_URL, $url);
              curl_setopt($ch, CURLOPT_FAILONERROR, true);
              curl_setopt($ch, CURLOPT_HEADER, 0);
              curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
              curl_setopt($ch, CURLOPT_AUTOREFERER, true);
              curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);
              curl_setopt($ch, CURLOPT_TIMEOUT, 20);
              curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
              curl_setopt($ch, CURLINFO_HEADER_OUT, true);
              curl_setopt($ch, CURLOPT_VERBOSE, true);
              
              //Add the token in the request
              $headers = array(
                  'X-MitsContextKey: ' . $token,
              );
              curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
              
              //Execute 
              $response = curl_exec($ch);
              curl_close($ch);
              
              //Print the result in output
              $response_json = json_decode($response);
              var_dump($response_json);
              Direkt antworten Antworten    Zitieren Zitieren
              
              

              PHP

              LoginData->ContextKey; 
              //print_r($token); 
              
              //execute the request (get info) 
              $ch = curl_init(); 
              
              //Curl options 
              curl_setopt($ch, CURLOPT_URL, $url); 
              curl_setopt($ch, CURLOPT_FAILONERROR, true); 
              curl_setopt($ch, CURLOPT_HEADER, 0); 
              curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
              curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
              curl_setopt($ch, CURLOPT_BINARYTRANSFER,true); 
              curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
              curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
              curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
              curl_setopt($ch, CURLOPT_VERBOSE, true); 
              
              //Add the token in the request 
              $headers = array( 
                  'X-MitsContextKey: ' . $token, 
              ); 
              curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
              
              //Execute  
              $response = curl_exec($ch); 
              curl_close($ch); 
              
              //Print the result in output 
              $response_json = json_decode($response, true); 
              print_r($response_json); 
              
              //Create variables from recieved output 
              
              // 1.OG 
              
              //OperationMode 
              $OperationMode = $response_json[0]['Structure']['Floors'][0]['Devices'][0]['Device']['OperationMode']; 
              setValueInteger (22705 /*[Geräte\Klimaanlage\Klima1OG\Anlagenstatus]*/, "$OperationMode"); 
              
              //Power status 
              $power = $response_json[0]['Structure']['Floors'][0]['Devices'][0]['Device']['Power']; 
              if (preg_match('/\b1\b/',$power)){ 
                  SetValueBoolean(30423 /*[Geräte\Klimaanlage\Klima1OG\Power]*/, true); 
                  } 
              else{      
                  SetValueBoolean(30423 /*[Geräte\Klimaanlage\Klima1OG\Power]*/, false); 
              }  
              
              //Room temperature 
              $romtemperatur = $response_json[0]['Structure']['Floors'][0]['Devices'][0]['Device']['RoomTemperature']; 
              setValueFloat (10149 /*[Geräte\Klimaanlage\Klima1OG\Raumtemperatur]*/, "$romtemperatur"); 
              
              //Set temperature 
              $settemperatur = $response_json[0]['Structure']['Floors'][0]['Devices'][0]['Device']['SetTemperature']; 
              setValueFloat (30426 /*[Geräte\Klimaanlage\Klima1OG\Settemperatur]*/, "$settemperatur"); 
              
              //Fan speed 
              $fanspeed = $response_json[0]['Structure']['Floors'][0]['Devices'][0]['Device']['FanSpeed']; 
              setValueInteger (17082 /*[Geräte\Klimaanlage\Klima1OG\FanSpeed]*/, "$fanspeed"); 
              
              //Automatic fanspeed 
              $autofan = $response_json[0]['Structure']['Floors'][0]['Devices'][0]['Device']['AutomaticFanSpeed']; 
              if (preg_match('/\b1\b/',$autofan)){ 
                  SetValueBoolean(10148 /*[Geräte\Klimaanlage\Klima1OG\autofan]*/, true); 
                  } 
              else{      
                  SetValueBoolean(10148 /*[Geräte\Klimaanlage\Klima1OG\autofan]*/, false); 
              }  
              
              //WiFi status 
              $Wifistatus = $response_json[0]['Structure']['Floors'][0]['Devices'][0]['Device']['WifiAdapterStatus']; 
              setValueString (17084 /*[Geräte\Klimaanlage\Klima1OG\WIFIstatus]*/, "$Wifistatus"); 
              
              // Dachgeschoss 
              
              //OperationMode 
              $OperationMode = $response_json[0]['Structure']['Floors'][0]['Devices'][1]['Device']['OperationMode']; 
              setValueInteger (37111 /*[Geräte\Klimaanlage\Klima DG\Anlagenstatus]*/, "$OperationMode"); 
              
              //Power status 
              $power = $response_json[0]['Structure']['Floors'][0]['Devices'][1]['Device']['Power']; 
              if (preg_match('/\b1\b/',$power)){ 
                  SetValueBoolean(27387 /*[Geräte\Klimaanlage\Klima DG\Power]*/, true); 
                  } 
              else{      
                  SetValueBoolean(27387 /*[Geräte\Klimaanlage\Klima DG\Power]*/, false); 
              
              }  
              
              //Room temperature 
              $romtemperatur = $response_json[0]['Structure']['Floors'][0]['Devices'][1]['Device']['RoomTemperature']; 
              setValueFloat (22702 /*[Geräte\Klimaanlage\Klima DG\Raumtemperatur]*/, "$romtemperatur"); 
              
              //Set temperature 
              $settemperatur = $response_json[0]['Structure']['Floors'][0]['Devices'][1]['Device']['SetTemperature']; 
              setValueFloat (42529 /*[Geräte\Klimaanlage\Klima DG\Settemperatur]*/, "$settemperatur"); 
              
              //Fan speed 
              $fanspeed = $response_json[0]['Structure']['Floors'][0]['Devices'][1]['Device']['FanSpeed']; 
              setValueInteger (31246 /*[Geräte\Klimaanlage\Klima DG\FanSpeed]*/, "$fanspeed"); 
              
              //Automatic fanspeed 
              $autofan = $response_json[0]['Structure']['Floors'][0]['Devices'][1]['Device']['AutomaticFanSpeed']; 
              if (preg_match('/\b1\b/',$autofan)){ 
                  SetValueBoolean(16361 /*[Geräte\Klimaanlage\Klima DG\autofan]*/, true); 
                  } 
              else{      
                  SetValueBoolean(16361 /*[Geräte\Klimaanlage\Klima DG\autofan]*/, false); 
              }  
              
              //WiFi status 
              $Wifistatus = $response_json[0]['Structure']['Floors'][0]['Devices'][1]['Device']['WifiAdapterStatus']; 
              setValueString (39891 /*[Geräte\Klimaanlage\Klima DG\WIFIstatus]*/, "$Wifistatus"); 
              
              ?>
              

              Grüße Daniel

              ioBroker auf Qnap TS-251A 8GB (Docker), Homamatic CCU2 + ca 50 Geräte (Aktoren, Sender, Sensoren), Alexa Echo, Alexa Echo Dot, Vu+ Duo2, Logitech Harmony Elite, Fronius Wechselrichter, Viessman Heizung + vControl

              <…

              1 Antwort Letzte Antwort
              0
              • apollon77A Offline
                apollon77A Offline
                apollon77
                schrieb am zuletzt editiert von
                #9

                Gibtnes dazu ein homebridge Plugin? Wenn ja wäre ioBroker.ham eine Idee.

                Gesendet vom Handy …

                Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                1 Antwort Letzte Antwort
                0
                • painkillerdeP Offline
                  painkillerdeP Offline
                  painkillerde
                  schrieb am zuletzt editiert von
                  #10

                  wenn Du das hier meinst dann ja

                  https://www.npmjs.com/package/homebridge-melcloud

                  ;-)

                  Hier ist auch noch etwas interesantes - falls das hilft:

                  https://www.npmjs.com/package/mmcontrol

                  Grüße Daniel

                  ioBroker auf Qnap TS-251A 8GB (Docker), Homamatic CCU2 + ca 50 Geräte (Aktoren, Sender, Sensoren), Alexa Echo, Alexa Echo Dot, Vu+ Duo2, Logitech Harmony Elite, Fronius Wechselrichter, Viessman Heizung + vControl

                  <…

                  1 Antwort Letzte Antwort
                  0
                  • neighbour_tomN Offline
                    neighbour_tomN Offline
                    neighbour_tom
                    schrieb am zuletzt editiert von
                    #11

                    Gib es zu dem Thema schon etwas neues?

                    1 Antwort Letzte Antwort
                    0
                    • M Michi2404

                      Guten Abend zusammen :)

                      ich muss hier jetzt Mal genauer fragen und zwar hab ich vorhin das Thema Klima Anbindung daikin gelesen.

                      Jetzt wollte ich Mal fragen ob man das auch für eine Mitsubishi Split Klimaanlage machen kann oder ob es eventuell schon jemand von euch gemacht hat.

                      Natürlich gibt es auch einen WiFi Adapter bei der Anlage.

                      Ich hoffe ihr könnt mir dabei helfen :)

                      Danke im voraus :)

                      RababersaftR Offline
                      RababersaftR Offline
                      Rababersaft
                      schrieb am zuletzt editiert von Rababersaft
                      #12

                      @Michi2404
                      Hi,
                      ja ich habe meine Klimaanlage eingebunden.

                      Aber!!!

                      Erstmal unterscheiden muss man ob die Mitsubishi eine "Elektrik" oder eine "Heavy" ist.

                      Meine Anlage ist eine Heavy und dazu kann ich gleich weiteres sagen.
                      Sie ist natürlich über ein WLAN-Modul über die Cloud erreichbar und in meinem WLAN-Netzwerk.

                      Jetzt gibt es keinen Adapter, der die ganze Geschichte mit meinem ioBroker verbindet.

                      Gelöst habe ich es über ein separates (Java)Skript (irgendwo aus dem Internet gediebt),

                      sorry wenn ich jetzt den Ursprünglichen Developper vergesse, bitte mir bescheid geben und ich korregiere das dann,

                      welches in einem (bei mir Linux) Verzeichnis wo auch der ioBroker zugriff hat zur Ausführung gebracht habe.

                      Dann habe ich mir die IP der Anlage rausgesucht und diese in meinem Skript angepasst.

                      Jetzt gibt es viele Möglichkeiten zu erweitern und anzupassen.

                      vorher ist jedoch noch zu sagen, das ich mir die dementsprechenden Datenpunkte angelegt habe, wohin auch immer ihr wollt , müsst ihr das dann natürlich auch tun und das Skript danach anpassen.

                      Ich habe bewusst hier als Antwort gepostet, da das Skript noch keine Datenpunkte selber erzeugen kann...

                      Viel Spass, und bei Fragen .... immer Fragen ;)

                      Hier mein Blockly...

                      <xml xmlns="https://developers.google.com/blockly/xml">
                        <block type="on_ext" id=",I/1#d[ckg_#O0.:_MBh" x="13" y="13">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                          <field name="CONDITION">ne</field>
                          <field name="ACK_CONDITION"></field>
                          <value name="OID0">
                            <shadow type="field_oid" id="]i-`+-Y%aeBk~x!AxW40">
                              <field name="oid">0_userdata.0.Heizung.MH-Daten.trigger1</field>
                            </shadow>
                          </value>
                          <statement name="STATEMENT">
                            <block type="controls_if" id="wM|$;P7kq6Xw_b05mmCT">
                              <mutation elseif="7"></mutation>
                              <value name="IF0">
                                <block type="logic_compare" id="@`nlPz|[C^$x1i$;I2[!">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="(UQSLz4HK+:z:#e`0y1[">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="M3[:d8}Uw)yjb}gVoNs1">
                                      <field name="NUM">1</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="procedures_callcustomnoreturn" id="yd14gs2i*^f6x:I}wC].">
                                  <mutation name="get_power"></mutation>
                                  <next>
                                    <block type="control" id="@Z`.^jqpLe`b|0ykRU?0">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">2000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="2JeG;zF7s3hG$~id}F-b">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF1">
                                <block type="logic_compare" id="yiP5yDbe-vd^[L^j?vjR">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="A5XE6?qnn5KxnzNvQKo8">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="nR9jFzCmY8``~Mymt+Y9">
                                      <field name="NUM">2</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO1">
                                <block type="procedures_callcustomnoreturn" id="b8_OV(dMiDP{+A(/qK-y">
                                  <mutation name="get_mode"></mutation>
                                  <next>
                                    <block type="control" id=":OYr-W#mT~L_l)GI1P43">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">2000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="f_hSB7![x:vMdg=v`Ci|">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF2">
                                <block type="logic_compare" id="vVGMHm#-$Vy`h?Rvg,Je">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="ksHpJxBSmR?55O#gX-Df">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="AqzPMg3:v7roWu7S%2q(">
                                      <field name="NUM">3</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO2">
                                <block type="procedures_callcustomnoreturn" id="g;%5noIa^Q3Qjo1+uMx%">
                                  <mutation name="get_speed"></mutation>
                                  <next>
                                    <block type="control" id="ePh69Q=0ymr1Wu[$5mvh">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">2000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="ID_Q|(;,O-t6kH53EsEn">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF3">
                                <block type="logic_compare" id="G_2!f|2_Qee8]ILfAFjP">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="%RLI!]y%#]%YLUD8#^]5">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="}*h1E.Zk9.47kl(nzY*5">
                                      <field name="NUM">4</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO3">
                                <block type="procedures_callcustomnoreturn" id="1XfuIZGjB@%co?~VlqcE">
                                  <mutation name="get_outside"></mutation>
                                  <next>
                                    <block type="control" id=",,J/qeO*E-GsCB55uD6I">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">2000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="|2Ei{a*b.[1zA1bteu_q">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF4">
                                <block type="logic_compare" id="Q3%u:D`-2A$W~bdmC}oQ">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="F4Hf!RN^P:Cgp}eOb0rM">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="wIXulxmO::s|G[c!Y_zY">
                                      <field name="NUM">5</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO4">
                                <block type="procedures_callcustomnoreturn" id="/mAK{$d1hIX6R-CgxpNg">
                                  <mutation name="get_setpoint"></mutation>
                                  <next>
                                    <block type="control" id="S`I8w}i=[MY4=hU3]P1y">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">2000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="U?v[#Kgjx].X%p(uuRh_">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF5">
                                <block type="logic_compare" id="3Dzxnd!eluv,EmtDa/]z">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="F|9y3lb__(#GHxmJnI9)">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="KUSl1d2%!%)Ja;IzR0R!">
                                      <field name="NUM">6</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO5">
                                <block type="procedures_callcustomnoreturn" id="G9PPdk,={:ETQ~nd@Zt2">
                                  <mutation name="get_roomtemp"></mutation>
                                  <next>
                                    <block type="control" id="p$hn1X`nsA.z4(~9MA2f">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">2000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="N`Qo^q8!,)eDuZ5/Q#qQ">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF6">
                                <block type="logic_compare" id="`@`b|`7+6Mi/5eXO)|U[">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="iZxwSRB}$koe77weUzjN">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="N!10qdK@5/PpSQSI8OEm">
                                      <field name="NUM">7</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO6">
                                <block type="procedures_callcustomnoreturn" id="JFl+qhMgOe:~~8m_RY#x">
                                  <mutation name="get_hvane"></mutation>
                                  <next>
                                    <block type="control" id="w7}ck)7t.5,IOKtE]Ud$">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">2000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="PIb3,3+n+pK*DX*wfRIw">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF7">
                                <block type="logic_compare" id="eku/|rN3^?Y0X2{J3nT)">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="{9P$*RGT8!Q!Bzj=*%zi">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="(/=-]{Jc(zy8vq#]uUQK">
                                      <field name="NUM">8</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO7">
                                <block type="procedures_callcustomnoreturn" id="0-l*WBye-3kUi5jqpmN{">
                                  <mutation name="get_vvane"></mutation>
                                  <next>
                                    <block type="control" id="F0B_pV*OQ@;f.5Y1;]t:">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.Heizung.MH-Daten.trigger1</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">2000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="blL.go7vkTpg~/:{9j-q">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </statement>
                        </block>
                        <block type="procedures_defcustomnoreturn" id="6%^mFvfQojEh]Gkt,Y[3" x="13" y="963">
                          <mutation statements="false"></mutation>
                          <field name="NAME">get_power</field>
                          <field name="SCRIPT">dmFyIHJlc3VsdDsNCnJlc3VsdCA9IDA7DQpleGVjKCdiYXNoIC9vcHQvaW9icm9rZXIvYWlyY29uL2FjLnNoIDE5Mi4xNjguMS4xNzkgZ2V0IHBvd2VyJywgZnVuY3Rpb24gKGVycm9yLCByZXN1bHQsIHN0ZGVycikgew0KICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7DQogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuSGVpenVuZy5NSC1EYXRlbi5Qb3dlciIvKlBvd2VyKi8sIHBhcnNlRmxvYXQocmVzdWx0KSwgdHJ1ZSk7DQogIHJlc3VsdCA9IDA7DQp9KTsNCmNvbnNvbGUubG9nKCJleGVjOiAiICsgJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgcG93ZXInKTs=</field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                        </block>
                        <block type="procedures_defcustomnoreturn" id=")fjde3zlgv7b:Anw/=cZ" x="13" y="1013">
                          <mutation statements="false"></mutation>
                          <field name="NAME">get_mode</field>
                          <field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgbW9kZScsIGZ1bmN0aW9uIChlcnJvciwgcmVzdWx0LCBzdGRlcnIpIHsNCiAgICBjb25zb2xlLmxvZyhyZXN1bHQpOw0KICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4uTW9kZSIvKk1vZGUqLywgcGFyc2VGbG9hdChyZXN1bHQpLCB0cnVlKTsNCiAgcmVzdWx0ID0gMDsNCn0pOw0KY29uc29sZS5sb2coImV4ZWM6ICIgKyAnYmFzaCAvb3B0L2lvYnJva2VyL2FpcmNvbi9hYy5zaCAxOTIuMTY4LjEuMTc5IGdldCBtb2RlJyk7</field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                        </block>
                        <block type="procedures_defcustomnoreturn" id="TQ*aHUZ^$6Iku9$Y{Ve." x="13" y="1063">
                          <mutation statements="false"></mutation>
                          <field name="NAME">get_speed</field>
                          <field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgc3BlZWQnLCBmdW5jdGlvbiAoZXJyb3IsIHJlc3VsdCwgc3RkZXJyKSB7DQogICAgY29uc29sZS5sb2cocmVzdWx0KTsNCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLlNwZWVkIi8qU3BlZWQqLywgcGFyc2VGbG9hdChyZXN1bHQpLCB0cnVlKTsNCiAgcmVzdWx0ID0gMDsNCn0pOw0KY29uc29sZS5sb2coImV4ZWM6ICIgKyAnYmFzaCAvb3B0L2lvYnJva2VyL2FpcmNvbi9hYy5zaCAxOTIuMTY4LjEuMTc5IGdldCBzcGVlZCcpOw==</field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                        </block>
                        <block type="procedures_defcustomnoreturn" id="btE-7[nRTo__JsHig{j5" x="13" y="1113">
                          <mutation statements="false"></mutation>
                          <field name="NAME">get_outside</field>
                          <field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgb3V0c2lkZScsIGZ1bmN0aW9uIChlcnJvciwgcmVzdWx0LCBzdGRlcnIpIHsNCiAgICBjb25zb2xlLmxvZyhyZXN1bHQpOw0KICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4uQXXfZW50ZW1wZXJhdHVyIi8qQXXfZW50ZW1wZXJhdHVyKi8sIChwYXJzZUZsb2F0KHJlc3VsdCkgLyAxMCksIHRydWUpOw0KICByZXN1bHQgPSAwOw0KfSk7DQpjb25zb2xlLmxvZygiZXhlYzogIiArICdiYXNoIC9vcHQvaW9icm9rZXIvYWlyY29uL2FjLnNoIDE5Mi4xNjguMS4xNzkgZ2V0IG91dHNpZGUnKTs=</field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                        </block>
                        <block type="procedures_defcustomnoreturn" id="9nSL8+#J;dmi~$i}3d/S" x="13" y="1163">
                          <mutation statements="false"></mutation>
                          <field name="NAME">get_setpoint</field>
                          <field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgc2V0cG9pbnQnLCBmdW5jdGlvbiAoZXJyb3IsIHJlc3VsdCwgc3RkZXJyKSB7DQogICAgY29uc29sZS5sb2cocmVzdWx0KTsNCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLlNldHBvaW50Ii8qU2V0cG9pbnQqLywgKHBhcnNlRmxvYXQocmVzdWx0KSAvIDEwKSwgdHJ1ZSk7DQogIHJlc3VsdCA9IDA7DQp9KTsNCmNvbnNvbGUubG9nKCJleGVjOiAiICsgJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgc2V0cG9pbnQnKTs=</field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                        </block>
                        <block type="procedures_defcustomnoreturn" id="DB[XdC3(2ftKjn)7,z,," x="13" y="1213">
                          <mutation statements="false"></mutation>
                          <field name="NAME">get_roomtemp</field>
                          <field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgcmV0dXJuJywgZnVuY3Rpb24gKGVycm9yLCByZXN1bHQsIHN0ZGVycikgew0KICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7DQogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuSGVpenVuZy5NSC1EYXRlbi5Sb29tdGVtcCIvKlJvb210ZW1wKi8sIChwYXJzZUZsb2F0KHJlc3VsdCkgLyAxMCksIHRydWUpOw0KICByZXN1bHQgPSAwOw0KfSk7DQpjb25zb2xlLmxvZygiZXhlYzogIiArICdiYXNoIC9vcHQvaW9icm9rZXIvYWlyY29uL2FjLnNoIDE5Mi4xNjguMS4xNzkgZ2V0IHJldHVybicpOw==</field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                        </block>
                        <block type="procedures_defcustomnoreturn" id="X8bGVs?|9dV,QOw:;#Of" x="13" y="1263">
                          <mutation statements="false"></mutation>
                          <field name="NAME">get_hvane</field>
                          <field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgaHZhbmUnLCBmdW5jdGlvbiAoZXJyb3IsIHJlc3VsdCwgc3RkZXJyKSB7DQogICAgY29uc29sZS5sb2cocmVzdWx0KTsNCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLkxhbWVsbGVuX0hvcml6b250YWwiLypMYW1lbGxlbl9Ib3Jpem9udGFsKi8sIHBhcnNlRmxvYXQocmVzdWx0KSwgdHJ1ZSk7DQogIHJlc3VsdCA9IDA7DQp9KTsNCmNvbnNvbGUubG9nKCJleGVjOiAiICsgJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgaHZhbmUnKTs=</field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                        </block>
                        <block type="procedures_defcustomnoreturn" id="dbp*%q],o6o-v:LB`q,Q" x="13" y="1313">
                          <mutation statements="false"></mutation>
                          <field name="NAME">get_vvane</field>
                          <field name="SCRIPT">dmFyIHJlc3VsdDsNCmV4ZWMoJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgdnZhbmUnLCBmdW5jdGlvbiAoZXJyb3IsIHJlc3VsdCwgc3RkZXJyKSB7DQogICAgY29uc29sZS5sb2cocmVzdWx0KTsNCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLlZlcnRpa2FsX1ZhbmUiLypWZXJ0aWthbF9WYW5lKi8sIHBhcnNlRmxvYXQocmVzdWx0KSwgdHJ1ZSk7DQogIHJlc3VsdCA9IDA7DQp9KTsNCmNvbnNvbGUubG9nKCJleGVjOiAiICsgJ2Jhc2ggL29wdC9pb2Jyb2tlci9haXJjb24vYWMuc2ggMTkyLjE2OC4xLjE3OSBnZXQgdnZhbmUnKTs=</field>
                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                        </block>
                      </xml>
                      

                      Hier der Export in Java....

                      /**
                       * Beschreibe diese Funktion …
                       */
                      function get_power() {
                          var result;
                          result = 0;
                          exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get power', function (error, result, stderr) {
                              console.log(result);
                            setState("0_userdata.0.Heizung.MH-Daten.Power"/*Power*/, parseFloat(result), true);
                            result = 0;
                          });
                          console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get power');
                      }
                      
                      /**
                       * Beschreibe diese Funktion …
                       */
                      function get_mode() {
                          var result;
                          exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get mode', function (error, result, stderr) {
                              console.log(result);
                            setState("0_userdata.0.Heizung.MH-Daten.Mode"/*Mode*/, parseFloat(result), true);
                            result = 0;
                          });
                          console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get mode');
                      }
                      
                      /**
                       * Beschreibe diese Funktion …
                       */
                      function get_speed() {
                          var result;
                          exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get speed', function (error, result, stderr) {
                              console.log(result);
                            setState("0_userdata.0.Heizung.MH-Daten.Speed"/*Speed*/, parseFloat(result), true);
                            result = 0;
                          });
                          console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get speed');
                      }
                      
                      /**
                       * Beschreibe diese Funktion …
                       */
                      function get_outside() {
                          var result;
                          exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get outside', function (error, result, stderr) {
                              console.log(result);
                            setState("0_userdata.0.Heizung.MH-Daten.Außentemperatur"/*Außentemperatur*/, (parseFloat(result) / 10), true);
                            result = 0;
                          });
                          console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get outside');
                      }
                      
                      /**
                       * Beschreibe diese Funktion …
                       */
                      function get_setpoint() {
                          var result;
                          exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get setpoint', function (error, result, stderr) {
                              console.log(result);
                            setState("0_userdata.0.Heizung.MH-Daten.Setpoint"/*Setpoint*/, (parseFloat(result) / 10), true);
                            result = 0;
                          });
                          console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get setpoint');
                      }
                      
                      /**
                       * Beschreibe diese Funktion …
                       */
                      function get_roomtemp() {
                          var result;
                          exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get return', function (error, result, stderr) {
                              console.log(result);
                            setState("0_userdata.0.Heizung.MH-Daten.Roomtemp"/*Roomtemp*/, (parseFloat(result) / 10), true);
                            result = 0;
                          });
                          console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get return');
                      }
                      
                      /**
                       * Beschreibe diese Funktion …
                       */
                      function get_hvane() {
                          var result;
                          exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get hvane', function (error, result, stderr) {
                              console.log(result);
                            setState("0_userdata.0.Heizung.MH-Daten.Lamellen_Horizontal"/*Lamellen_Horizontal*/, parseFloat(result), true);
                            result = 0;
                          });
                          console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get hvane');
                      }
                      
                      /**
                       * Beschreibe diese Funktion …
                       */
                      function get_vvane() {
                          var result;
                          exec('bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get vvane', function (error, result, stderr) {
                              console.log(result);
                            setState("0_userdata.0.Heizung.MH-Daten.Vertikal_Vane"/*Vertikal_Vane*/, parseFloat(result), true);
                            result = 0;
                          });
                          console.log("exec: " + 'bash /opt/iobroker/aircon/ac.sh 192.168.1.179 get vvane');
                      }
                      
                      
                      on({id: '0_userdata.0.Heizung.MH-Daten.trigger1', change: "ne"}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        if ((obj.state ? obj.state.val : "") == 1) {
                          get_power();
                          setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
                        } else if ((obj.state ? obj.state.val : "") == 2) {
                          get_mode();
                          setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
                        } else if ((obj.state ? obj.state.val : "") == 3) {
                          get_speed();
                          setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
                        } else if ((obj.state ? obj.state.val : "") == 4) {
                          get_outside();
                          setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
                        } else if ((obj.state ? obj.state.val : "") == 5) {
                          get_setpoint();
                          setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
                        } else if ((obj.state ? obj.state.val : "") == 6) {
                          get_roomtemp();
                          setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
                        } else if ((obj.state ? obj.state.val : "") == 7) {
                          get_hvane();
                          setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
                        } else if ((obj.state ? obj.state.val : "") == 8) {
                          get_vvane();
                          setStateDelayed("0_userdata.0.Heizung.MH-Daten.trigger1"/*trigger1*/, 0, 2000, false);
                        }
                      });
                      
                      //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX2V4dCUyMiUyMGlkJTNEJTIyJTJDSSUyRjElMjNkJTVCY2tnXyUyM08wLiUzQV9NQmglMjIlMjB4JTNEJTIyMTMlMjIlMjB5JTNEJTIyMTMlMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFbmUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRDAlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjIlNURpLSU2MCUyQi1ZJTI1YWVCa354IUF4VzQwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjJ3TSU3QyUyNCUzQlA3a3E2WHdfYjA1bW1DVCUyMiUzRSUzQ211dGF0aW9uJTIwZWxzZWlmJTNEJTIyNyUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyJTQwJTYwbmxQeiU3QyU1QkMlNUUlMjR4MWklMjQlM0JJMiU1QiElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjIoVVFTTHo0SEslMkIlM0F6JTNBJTIzZSU2MDB5MSU1QiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS52YWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMk0zJTVCJTNBZDglN0RVdyl5amIlN0RnVm9OczElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2NhbGxjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyeWQxNGdzMmkqJTVFZjZ4JTNBSSU3RHdDJTVELiUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmdldF9wb3dlciUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMiU0MFolNjAuJTVFanFwTGUlNjBiJTdDMHlrUlUlM0YwJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMnRydWUlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRTBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLnRyaWdnZXIxJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVlfTVMlMjIlM0UyMDAwJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbXMlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNMRUFSX1JVTk5JTkclMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyMkplRyUzQnpGN3MzaEclMjR+aWQlN0RGLWIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJ5aVA1eURiZS12ZCU1RSU1QkwlNUVqJTNGdmpSJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX3NvdXJjZSUyMiUyMGlkJTNEJTIyQTVYRTYlM0Zxbm41S3huek52UUtvOCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS52YWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMm5SOWpGekNtWTglNjAlNjB+TXltdCUyQlk5JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8xJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19jYWxsY3VzdG9tbm9yZXR1cm4lMjIlMjBpZCUzRCUyMmI4X09WKGRNaURQJTdCJTJCQSglMkZxSy15JTIyJTNFJTNDbXV0YXRpb24lMjBuYW1lJTNEJTIyZ2V0X21vZGUlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjIlM0FPWXItVyUyM21UfkxfbClHSTFQNDMlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJmX2hTQjchJTVCeCUzQXZNZGclM0R2JTYwQ2klN0MlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJ2VkdNSG0lMjMtJTI0VnklNjBoJTNGUnZnJTJDSmUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJrc0hwSnhCU21SJTNGNTVPJTIzZ1gtRGYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudmFsJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJBcXpQTWczJTNBdjdyb1d1N1MlMjUycSglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UzJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2NhbGxjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyZyUzQiUyNTVub0lhJTVFUTNRam8xJTJCdU14JTI1JTIyJTNFJTNDbXV0YXRpb24lMjBuYW1lJTNEJTIyZ2V0X3NwZWVkJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyZVBoNjlRJTNEMHltcjFXdSU1QiUyNDVtdmglMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJJRF9RJTdDKCUzQiUyQ08tdDZrSDUzRXNFbiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMkdfMiFmJTdDMl9RZWU4JTVESUxmQUZqUCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMiUyNVJMSSElNUR5JTI1JTIzJTVEJTI1WUxVRDglMjMlNUUlNUQ1JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLnZhbCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTdEKmgxRS5aazkuNDdrbChuelkqNSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjIxWGZ1SVpHakIlNDAlMjVjbyUzRn5WbHFjRSUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmdldF9vdXRzaWRlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyJTJDJTJDSiUyRnFlTypFLUdzQ0I1NXVENkklMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjIlN0MyRWklN0JhKmIuJTVCMXpBMWJ0ZXVfcSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGNCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMlEzJTI1dSUzQUQlNjAtMkElMjRXfmJkbUMlN0RvUSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMkY0SGYhUk4lNUVQJTNBQ2dwJTdEZU9iMHJNJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLnZhbCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyd0lYdWx4bU8lM0ElM0FzJTdDRyU1QmMhWV96WSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPNCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjIlMkZtQUslN0IlMjRkMWhJWDZSLUNneHBOZyUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmdldF9zZXRwb2ludCUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMlMlNjBJOHclN0RpJTNEJTVCTVk0JTNEaFUzJTVEUDF5JTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMnRydWUlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRTBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLnRyaWdnZXIxJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVlfTVMlMjIlM0UyMDAwJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbXMlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNMRUFSX1JVTk5JTkclMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyVSUzRnYlNUIlMjNLZ2p4JTVELlglMjVwKHV1UmhfJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUY1JTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyM0R6eG5kIWVsdXYlMkNFbXREYSUyRiU1RHolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJGJTdDOXkzbGJfXyglMjNHSHhtSm5JOSklMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudmFsJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJLVVNsMWQyJTI1ISUyNSlKYSUzQkl6UjBSISUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTYlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPNSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjJHOVBQZGslMkMlM0QlN0IlM0FFVFF+bmQlNDBadDIlMjIlM0UlM0NtdXRhdGlvbiUyMG5hbWUlM0QlMjJnZXRfcm9vbXRlbXAlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJwJTI0aG4xWCU2MG5zQS56NCh+OU1BMmYlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJOJTYwUW8lNUVxOCElMkMpZUR1WjUlMkZRJTIzcVElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjYlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjIlNjAlNDAlNjBiJTdDJTYwNyUyQjZNaSUyRjVlWE8pJTdDVSU1QiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMmlaeHdTUkIlN0QlMjRrb2U3N3dlVXpqTiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS52YWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMk4hMTBxZEslNDA1JTJGUHBTUVNJOE9FbSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTclM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPNiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjJKRmwlMkJxaE1nT2UlM0F+fjhtX1JZJTIzeCUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMmdldF9odmFuZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMnc3JTdEY2spN3QuNSUyQ0lPS3RFJTVEVWQlMjQlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIydHJ1ZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkhlaXp1bmcuTUgtRGF0ZW4udHJpZ2dlcjElM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRTIwMDAlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlVOSVQlMjIlM0VtcyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJQSWIzJTJDMyUyQm4lMkJwSypEWCp3ZlJJdyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGNyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMmVrdSUyRiU3Q3JOMyU1RSUzRlkwWDIlN0JKM25UKSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFRVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMiU3QjlQJTI0KlJHVDghUSFCemolM0QqJTI1emklMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudmFsJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjIoJTJGJTNELSU1RCU3QkpjKHp5OHZxJTIzJTVEdVVRSyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTglM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPNyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjIwLWwqV0J5ZS0za1VpNWpxcG1OJTdCJTIyJTNFJTNDbXV0YXRpb24lMjBuYW1lJTNEJTIyZ2V0X3Z2YW5lJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyRjBCX3BWKk9RJTQwJTNCZi41WTElM0IlNUR0JTNBJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMnRydWUlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRTBfdXNlcmRhdGEuMC5IZWl6dW5nLk1ILURhdGVuLnRyaWdnZXIxJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyREVMQVlfTVMlMjIlM0UyMDAwJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJVTklUJTIyJTNFbXMlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNMRUFSX1JVTk5JTkclMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyYmxMLmdvN3ZrVHBnfiUyRiUzQSU3QjlqLXElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyNiUyNSU1RW1GdmZRb2pFaCU1REdrdCUyQ1klNUIzJTIyJTIweCUzRCUyMjEzJTIyJTIweSUzRCUyMjk2MyUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFZ2V0X3Bvd2VyJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ1JJUFQlMjIlM0VkbUZ5SUhKbGMzVnNkRHNOQ25KbGMzVnNkQ0E5SURBN0RRcGxlR1ZqS0NkaVlYTm9JQzl2Y0hRdmFXOWljbTlyWlhJdllXbHlZMjl1TDJGakxuTm9JREU1TWk0eE5qZ3VNUzR4TnprZ1oyVjBJSEJ2ZDJWeUp5d2dablZ1WTNScGIyNGdLR1Z5Y205eUxDQnlaWE4xYkhRc0lITjBaR1Z5Y2lrZ2V3MEtJQ0FnSUdOdmJuTnZiR1V1Ykc5bktISmxjM1ZzZENrN0RRb2dJSE5sZEZOMFlYUmxLQ0l3WDNWelpYSmtZWFJoTGpBdVNHVnBlblZ1Wnk1TlNDMUVZWFJsYmk1UWIzZGxjaUl2S2xCdmQyVnlLaThzSUhCaGNuTmxSbXh2WVhRb2NtVnpkV3gwS1N3Z2RISjFaU2s3RFFvZ0lISmxjM1ZzZENBOUlEQTdEUXA5S1RzTkNtTnZibk52YkdVdWJHOW5LQ0psZUdWak9pQWlJQ3NnSjJKaGMyZ2dMMjl3ZEM5cGIySnliMnRsY2k5aGFYSmpiMjR2WVdNdWMyZ2dNVGt5TGpFMk9DNHhMakUzT1NCblpYUWdjRzkzWlhJbktUcyUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyKWZqZGUzemxndjdiJTNBQW53JTJGJTNEY1olMjIlMjB4JTNEJTIyMTMlMjIlMjB5JTNEJTIyMTAxMyUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFZ2V0X21vZGUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNDUklQVCUyMiUzRWRtRnlJSEpsYzNWc2REc05DbVY0WldNb0oySmhjMmdnTDI5d2RDOXBiMkp5YjJ0bGNpOWhhWEpqYjI0dllXTXVjMmdnTVRreUxqRTJPQzR4TGpFM09TQm5aWFFnYlc5a1pTY3NJR1oxYm1OMGFXOXVJQ2hsY25KdmNpd2djbVZ6ZFd4MExDQnpkR1JsY25JcElIc05DaUFnSUNCamIyNXpiMnhsTG14dlp5aHlaWE4xYkhRcE93MEtJQ0J6WlhSVGRHRjBaU2dpTUY5MWMyVnlaR0YwWVM0d0xraGxhWHAxYm1jdVRVZ3RSR0YwWlc0dVRXOWtaU0l2S2sxdlpHVXFMeXdnY0dGeWMyVkdiRzloZENoeVpYTjFiSFFwTENCMGNuVmxLVHNOQ2lBZ2NtVnpkV3gwSUQwZ01Ec05DbjBwT3cwS1kyOXVjMjlzWlM1c2IyY29JbVY0WldNNklDSWdLeUFuWW1GemFDQXZiM0IwTDJsdlluSnZhMlZ5TDJGcGNtTnZiaTloWXk1emFDQXhPVEl1TVRZNExqRXVNVGM1SUdkbGRDQnRiMlJsSnlrNyUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyVFEqYUhVWiU1RSUyNDZJa3U5JTI0WSU3QlZlLiUyMiUyMHglM0QlMjIxMyUyMiUyMHklM0QlMjIxMDYzJTIyJTNFJTNDbXV0YXRpb24lMjBzdGF0ZW1lbnRzJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5BTUUlMjIlM0VnZXRfc3BlZWQlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNDUklQVCUyMiUzRWRtRnlJSEpsYzNWc2REc05DbVY0WldNb0oySmhjMmdnTDI5d2RDOXBiMkp5YjJ0bGNpOWhhWEpqYjI0dllXTXVjMmdnTVRreUxqRTJPQzR4TGpFM09TQm5aWFFnYzNCbFpXUW5MQ0JtZFc1amRHbHZiaUFvWlhKeWIzSXNJSEpsYzNWc2RDd2djM1JrWlhKeUtTQjdEUW9nSUNBZ1kyOXVjMjlzWlM1c2IyY29jbVZ6ZFd4MEtUc05DaUFnYzJWMFUzUmhkR1VvSWpCZmRYTmxjbVJoZEdFdU1DNUlaV2w2ZFc1bkxrMUlMVVJoZEdWdUxsTndaV1ZrSWk4cVUzQmxaV1FxTHl3Z2NHRnljMlZHYkc5aGRDaHlaWE4xYkhRcExDQjBjblZsS1RzTkNpQWdjbVZ6ZFd4MElEMGdNRHNOQ24wcE93MEtZMjl1YzI5c1pTNXNiMmNvSW1WNFpXTTZJQ0lnS3lBblltRnphQ0F2YjNCMEwybHZZbkp2YTJWeUwyRnBjbU52Ymk5aFl5NXphQ0F4T1RJdU1UWTRMakV1TVRjNUlHZGxkQ0J6Y0dWbFpDY3BPdyUzRCUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyYnRFLTclNUJuUlRvX19Kc0hpZyU3Qmo1JTIyJTIweCUzRCUyMjEzJTIyJTIweSUzRCUyMjExMTMlMjIlM0UlM0NtdXRhdGlvbiUyMHN0YXRlbWVudHMlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRWdldF9vdXRzaWRlJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ1JJUFQlMjIlM0VkbUZ5SUhKbGMzVnNkRHNOQ21WNFpXTW9KMkpoYzJnZ0wyOXdkQzlwYjJKeWIydGxjaTloYVhKamIyNHZZV011YzJnZ01Ua3lMakUyT0M0eExqRTNPU0JuWlhRZ2IzVjBjMmxrWlNjc0lHWjFibU4wYVc5dUlDaGxjbkp2Y2l3Z2NtVnpkV3gwTENCemRHUmxjbklwSUhzTkNpQWdJQ0JqYjI1emIyeGxMbXh2WnloeVpYTjFiSFFwT3cwS0lDQnpaWFJUZEdGMFpTZ2lNRjkxYzJWeVpHRjBZUzR3TGtobGFYcDFibWN1VFVndFJHRjBaVzR1UVhYZlpXNTBaVzF3WlhKaGRIVnlJaThxUVhYZlpXNTBaVzF3WlhKaGRIVnlLaThzSUNod1lYSnpaVVpzYjJGMEtISmxjM1ZzZENrZ0x5QXhNQ2tzSUhSeWRXVXBPdzBLSUNCeVpYTjFiSFFnUFNBd093MEtmU2s3RFFwamIyNXpiMnhsTG14dlp5Z2laWGhsWXpvZ0lpQXJJQ2RpWVhOb0lDOXZjSFF2YVc5aWNtOXJaWEl2WVdseVkyOXVMMkZqTG5Ob0lERTVNaTR4TmpndU1TNHhOemtnWjJWMElHOTFkSE5wWkdVbktUcyUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyOW5TTDglMkIlMjNKJTNCZG1pfiUyNGklN0QzZCUyRlMlMjIlMjB4JTNEJTIyMTMlMjIlMjB5JTNEJTIyMTE2MyUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFZ2V0X3NldHBvaW50JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ1JJUFQlMjIlM0VkbUZ5SUhKbGMzVnNkRHNOQ21WNFpXTW9KMkpoYzJnZ0wyOXdkQzlwYjJKeWIydGxjaTloYVhKamIyNHZZV011YzJnZ01Ua3lMakUyT0M0eExqRTNPU0JuWlhRZ2MyVjBjRzlwYm5RbkxDQm1kVzVqZEdsdmJpQW9aWEp5YjNJc0lISmxjM1ZzZEN3Z2MzUmtaWEp5S1NCN0RRb2dJQ0FnWTI5dWMyOXNaUzVzYjJjb2NtVnpkV3gwS1RzTkNpQWdjMlYwVTNSaGRHVW9JakJmZFhObGNtUmhkR0V1TUM1SVpXbDZkVzVuTGsxSUxVUmhkR1Z1TGxObGRIQnZhVzUwSWk4cVUyVjBjRzlwYm5RcUx5d2dLSEJoY25ObFJteHZZWFFvY21WemRXeDBLU0F2SURFd0tTd2dkSEoxWlNrN0RRb2dJSEpsYzNWc2RDQTlJREE3RFFwOUtUc05DbU52Ym5OdmJHVXViRzluS0NKbGVHVmpPaUFpSUNzZ0oySmhjMmdnTDI5d2RDOXBiMkp5YjJ0bGNpOWhhWEpqYjI0dllXTXVjMmdnTVRreUxqRTJPQzR4TGpFM09TQm5aWFFnYzJWMGNHOXBiblFuS1RzJTNEJTNDJTJGZmllbGQlM0UlM0Njb21tZW50JTIwcGlubmVkJTNEJTIyZmFsc2UlMjIlMjBoJTNEJTIyODAlMjIlMjB3JTNEJTIyMTYwJTIyJTNFQmVzY2hyZWliZSUyMGRpZXNlJTIwRnVua3Rpb24lMjAlRTIlODAlQTYlM0MlMkZjb21tZW50JTNFJTNDJTJGYmxvY2slM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2RlZmN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjJEQiU1QlhkQzMoMmZ0S2puKTclMkN6JTJDJTJDJTIyJTIweCUzRCUyMjEzJTIyJTIweSUzRCUyMjEyMTMlMjIlM0UlM0NtdXRhdGlvbiUyMHN0YXRlbWVudHMlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRWdldF9yb29tdGVtcCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU0NSSVBUJTIyJTNFZG1GeUlISmxjM1ZzZERzTkNtVjRaV01vSjJKaGMyZ2dMMjl3ZEM5cGIySnliMnRsY2k5aGFYSmpiMjR2WVdNdWMyZ2dNVGt5TGpFMk9DNHhMakUzT1NCblpYUWdjbVYwZFhKdUp5d2dablZ1WTNScGIyNGdLR1Z5Y205eUxDQnlaWE4xYkhRc0lITjBaR1Z5Y2lrZ2V3MEtJQ0FnSUdOdmJuTnZiR1V1Ykc5bktISmxjM1ZzZENrN0RRb2dJSE5sZEZOMFlYUmxLQ0l3WDNWelpYSmtZWFJoTGpBdVNHVnBlblZ1Wnk1TlNDMUVZWFJsYmk1U2IyOXRkR1Z0Y0NJdktsSnZiMjEwWlcxd0tpOHNJQ2h3WVhKelpVWnNiMkYwS0hKbGMzVnNkQ2tnTHlBeE1Da3NJSFJ5ZFdVcE93MEtJQ0J5WlhOMWJIUWdQU0F3T3cwS2ZTazdEUXBqYjI1emIyeGxMbXh2WnlnaVpYaGxZem9nSWlBcklDZGlZWE5vSUM5dmNIUXZhVzlpY205clpYSXZZV2x5WTI5dUwyRmpMbk5vSURFNU1pNHhOamd1TVM0eE56a2daMlYwSUhKbGRIVnliaWNwT3clM0QlM0QlM0MlMkZmaWVsZCUzRSUzQ2NvbW1lbnQlMjBwaW5uZWQlM0QlMjJmYWxzZSUyMiUyMGglM0QlMjI4MCUyMiUyMHclM0QlMjIxNjAlMjIlM0VCZXNjaHJlaWJlJTIwZGllc2UlMjBGdW5rdGlvbiUyMCVFMiU4MCVBNiUzQyUyRmNvbW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfZGVmY3VzdG9tbm9yZXR1cm4lMjIlMjBpZCUzRCUyMlg4YkdWcyUzRiU3QzlkViUyQ1FPdyUzQSUzQiUyM09mJTIyJTIweCUzRCUyMjEzJTIyJTIweSUzRCUyMjEyNjMlMjIlM0UlM0NtdXRhdGlvbiUyMHN0YXRlbWVudHMlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRWdldF9odmFuZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU0NSSVBUJTIyJTNFZG1GeUlISmxjM1ZzZERzTkNtVjRaV01vSjJKaGMyZ2dMMjl3ZEM5cGIySnliMnRsY2k5aGFYSmpiMjR2WVdNdWMyZ2dNVGt5TGpFMk9DNHhMakUzT1NCblpYUWdhSFpoYm1VbkxDQm1kVzVqZEdsdmJpQW9aWEp5YjNJc0lISmxjM1ZzZEN3Z2MzUmtaWEp5S1NCN0RRb2dJQ0FnWTI5dWMyOXNaUzVzYjJjb2NtVnpkV3gwS1RzTkNpQWdjMlYwVTNSaGRHVW9JakJmZFhObGNtUmhkR0V1TUM1SVpXbDZkVzVuTGsxSUxVUmhkR1Z1TGt4aGJXVnNiR1Z1WDBodmNtbDZiMjUwWVd3aUx5cE1ZVzFsYkd4bGJsOUliM0pwZW05dWRHRnNLaThzSUhCaGNuTmxSbXh2WVhRb2NtVnpkV3gwS1N3Z2RISjFaU2s3RFFvZ0lISmxjM1ZzZENBOUlEQTdEUXA5S1RzTkNtTnZibk52YkdVdWJHOW5LQ0psZUdWak9pQWlJQ3NnSjJKaGMyZ2dMMjl3ZEM5cGIySnliMnRsY2k5aGFYSmpiMjR2WVdNdWMyZ2dNVGt5TGpFMk9DNHhMakUzT1NCblpYUWdhSFpoYm1VbktUcyUzRCUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyZGJwKiUyNXElNUQlMkNvNm8tdiUzQUxCJTYwcSUyQ1ElMjIlMjB4JTNEJTIyMTMlMjIlMjB5JTNEJTIyMTMxMyUyMiUzRSUzQ211dGF0aW9uJTIwc3RhdGVtZW50cyUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFZ2V0X3Z2YW5lJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTQ1JJUFQlMjIlM0VkbUZ5SUhKbGMzVnNkRHNOQ21WNFpXTW9KMkpoYzJnZ0wyOXdkQzlwYjJKeWIydGxjaTloYVhKamIyNHZZV011YzJnZ01Ua3lMakUyT0M0eExqRTNPU0JuWlhRZ2RuWmhibVVuTENCbWRXNWpkR2x2YmlBb1pYSnliM0lzSUhKbGMzVnNkQ3dnYzNSa1pYSnlLU0I3RFFvZ0lDQWdZMjl1YzI5c1pTNXNiMmNvY21WemRXeDBLVHNOQ2lBZ2MyVjBVM1JoZEdVb0lqQmZkWE5sY21SaGRHRXVNQzVJWldsNmRXNW5MazFJTFVSaGRHVnVMbFpsY25ScGEyRnNYMVpoYm1VaUx5cFdaWEowYVd0aGJGOVdZVzVsS2k4c0lIQmhjbk5sUm14dllYUW9jbVZ6ZFd4MEtTd2dkSEoxWlNrN0RRb2dJSEpsYzNWc2RDQTlJREE3RFFwOUtUc05DbU52Ym5OdmJHVXViRzluS0NKbGVHVmpPaUFpSUNzZ0oySmhjMmdnTDI5d2RDOXBiMkp5YjJ0bGNpOWhhWEpqYjI0dllXTXVjMmdnTVRreUxqRTJPQzR4TGpFM09TQm5aWFFnZG5aaGJtVW5LVHMlM0QlM0MlMkZmaWVsZCUzRSUzQ2NvbW1lbnQlMjBwaW5uZWQlM0QlMjJmYWxzZSUyMiUyMGglM0QlMjI4MCUyMiUyMHclM0QlMjIxNjAlMjIlM0VCZXNjaHJlaWJlJTIwZGllc2UlMjBGdW5rdGlvbiUyMCVFMiU4MCVBNiUzQyUyRmNvbW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
                      

                      Und hier das Skript was vorher zun laufen gebracht werden muss...

                      #!/usr/bin/env bash
                      #Airconwithme script (airconwithme.com)
                      #Written by KingOfDois. BSD 3-clause license.
                      USAGE="usage: ${0} ip set|get option [value]"
                       
                      #pseudo: login credentials.
                      #security note: wget leaks user/password in process list
                      if [ -z "${AIRCO_PASSWORD}" ]; then
                        AIRCO_PASSWORD=operator
                      fi
                      if [ -z "${AIRCO_USER}" ]; then
                        AIRCO_USER=operator
                      fi
                      #pseudo: 1st argument is IP
                      if [ -z "${1}" ]; then
                        echo ${USAGE}
                        exit 1
                      else
                        AIRCO_IP="${1}"
                      fi
                      #pseudo: 2nd argument is set|get
                      if [ "${2}" != "set" ] && [ "${2}" != "get" ]; then
                        echo ${USAGE}
                        exit 1
                      fi
                      DIRECTION=${2}
                      #pseudo: more variables
                      ACTION=${3}
                      DO=${4}
                      VALUE=0
                      EXIT=0
                       
                      #-------------------------------------
                      #pseudo: functions
                      function stderr () {
                        cat - 1>&2
                      }
                       
                      #-------------------------------------
                      #pseudo: action table
                      ACTIONS=(power mode speed vvane hvane setpoint return alarm outside)
                      UIDS=(1 2 4 5 6 9 10 14 37)
                       
                      #pseudo: select uid from action
                      FOUND=0
                      for i in "${!ACTIONS[@]}"
                      do
                          if [ "${ACTIONS[${i}]}" == "${ACTION}" ]; then
                              FOUND=1
                              WORK_UID=${UIDS[${i}]}
                          fi
                      done
                      if [ ${FOUND} -eq 0 ]; then
                        echo "available actions: ${ACTIONS[@]}"
                        exit 1
                      fi
                       
                      #-------------------------------------
                      #pseudo: work the $ACTION / $VALUE with $uid available
                      if [[ "${DIRECTION}" == "set" ]]; then
                       
                      if [[ "${ACTION}" == "power" ]]; then OPTIONS=(on off); VALUES=(1 0); fi
                      if [[ "${ACTION}" == "mode" ]]; then OPTIONS=(auto heat dry fan cool); VALUES=(0 1 2 3 4); fi
                      if [[ "${ACTION}" == "speed" ]]; then OPTIONS=(1 2 3 4); VALUES=(1 2 3 4); fi
                      if [[ "${ACTION}" == "vvane" ]]; then OPTIONS=(1 2 3 4 swing); VALUES=(1 2 3 4 10); fi
                      if [[ "${ACTION}" == "hvane" ]]; then OPTIONS=(1 2 3 4 swing); VALUES=(1 2 3 4 10); fi
                       
                      if [[ "${ACTION}" == "setpoint" ]]; then
                        if [ "${DO}" == "" ]; then
                          echo "value: 180 till 300 (18.0 till 30.0 degree C)"
                          exit 1
                        else
                          VALUE=$DO;
                        fi
                      fi
                       
                      fi
                       
                      #pseudo: now select the proper value based on the action
                      if [ "${OPTIONS}" != "" ]; then
                        FOUND=0
                        for i in "${!OPTIONS[@]}"
                        do
                            if [ "${OPTIONS[${i}]}" == "${DO}" ]; then
                                FOUND=1
                                VALUE=${VALUES[${i}]}
                            fi
                        done
                        if [ ${FOUND} -eq 0 ]; then
                          echo "available [${ACTION}] options: ${OPTIONS[@]}"
                          exit 1
                        fi
                      fi
                       
                      #-------------------------------------
                      COOKIE=$(mktemp)
                       
                      #pseudo: login
                      LOGIN_RESPONSE=$(mktemp)
                      LOGIN_ERROR=$(mktemp)
                      wget --save-cookies=${COOKIE} \
                           --keep-session-cookies \
                           --post-data="{\"command\":\"login\",\"data\":{\"username\":\"${AIRCO_USER}\",\"password\":\"${AIRCO_PASSWORD}\"}}" \
                           --output-document=${LOGIN_RESPONSE} \
                           --header="Content-Type: application/json" \
                           --header="Accept: application/json" \
                           --tries=3 \
                           --timeout=30 \
                           http://${AIRCO_IP}/api.cgi 2> ${LOGIN_ERROR}
                      LOGIN_RC=$?
                      if [ "${LOGIN_RC}" -ne 0 ]; then
                        cat ${LOGIN_ERROR}|stderr
                        EXIT=1
                      fi
                      if [ "$(grep -c '"success":true' ${LOGIN_RESPONSE})" -ne 1 ]; then
                        echo "something went wrong while logging in"|stderr
                        echo "response: $(cat ${LOGIN_RESPONSE})"|stderr
                        EXIT=1
                      fi
                       
                      #pseudo: get sessionID from login
                      SESSION_ID=$(awk -F '"sessionID":"' '{print $2}' ${LOGIN_RESPONSE}|awk -F '"' '{print $1}')
                       
                      #---------------------------------
                      if [ "${SESSION_ID}" != "" ]; then
                        ACTION_RESPONSE=$(mktemp)
                        ACTION_ERROR=$(mktemp)
                       
                        if [ "${DIRECTION}" == "set" ]; then
                          POST_DATA="{\"command\":\"setdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":${WORK_UID},\"value\":${VALUE}}}"
                        else
                          POST_DATA="{\"command\":\"getdatapointvalue\",\"data\":{\"sessionID\":\"${SESSION_ID}\",\"uid\":${WORK_UID}}}"
                        fi
                       
                        wget --load-cookies=${COOKIE} \
                             --post-data="${POST_DATA}" \
                             --output-document=${ACTION_RESPONSE} \
                             --header="Content-Type: application/json" \
                             --header="Accept: application/json" \
                             --tries=3 \
                             --timeout=30 \
                             http://${AIRCO_IP}/api.cgi 2> ${ACTION_ERROR}
                        ACTION_RC=$?
                        if [ "${ACTION_RC}" -ne 0 ]; then
                          cat ${ACTION_ERROR}|stderr
                          EXIT=1
                        fi
                        if [ "$(grep -c '"success":true' ${ACTION_RESPONSE})" -eq 1 ]; then
                          if [ "${DIRECTION}" == "set" ]; then
                            echo "saved";
                          else
                            RESPONSE_VALUE=$(awk -F ',"value":' '{print $2}' ${ACTION_RESPONSE}|awk -F ',"status"' '{print $1}')
                            #sed 's/\"//g'
                            echo "${RESPONSE_VALUE}"
                          fi
                        else
                          echo "${DIRECTION} failed"|stderr
                          echo "response: $(cat ${ACTION_RESPONSE})"|stderr
                          EXIT=1
                        fi
                      #end if SESSION_ID
                      fi
                       
                      #---------------------------------------------
                      #cleanup
                      if [ -f "${COOKIE}" ]; then rm ${COOKIE}; fi
                      if [ -f "${LOGIN_RESPONSE}" ]; then rm ${LOGIN_RESPONSE}; fi
                      if [ -f "${LOGIN_ERROR}" ]; then rm ${LOGIN_ERROR}; fi
                      if [ -f "${ACTION_RESPONSE}" ]; then rm ${ACTION_RESPONSE}; fi
                      if [ -f "${ACTION_ERROR}" ]; then rm ${ACTION_ERROR}; fi
                       
                      exit ${EXIT}
                      

                      ...

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      620

                      Online

                      32.6k

                      Benutzer

                      82.0k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe