From b1a2bec5db4f1f6081c96d642f5553e4869959c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 11:09:25 +0100 Subject: [PATCH 01/22] Add files via upload --- components/sensor/images/cc1101.jpg | Bin 0 -> 37368 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 components/sensor/images/cc1101.jpg diff --git a/components/sensor/images/cc1101.jpg b/components/sensor/images/cc1101.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a497ee6dda80dd37db6ecdd5084abe1916cca7fb GIT binary patch literal 37368 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 literal 0 HcmV?d00001 From b735fb8889de65695a6b6f710b0ab0ca46046abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 11:11:37 +0100 Subject: [PATCH 02/22] Create cc1101.rst --- components/sensor/cc1101.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 components/sensor/cc1101.rst diff --git a/components/sensor/cc1101.rst b/components/sensor/cc1101.rst new file mode 100644 index 000000000..d9d9971ed --- /dev/null +++ b/components/sensor/cc1101.rst @@ -0,0 +1,16 @@ +CC1101 Low-Power Sub-1 GHz RF Transceiver +========================================= + +.. seo:: + :description: Instructions for setting up CC1101 RF Tranceiver + :image: cc1101.jpg + :keywords: cc1101 + +The ``CC1101 RF Tranceiver`` (`datasheet `__) can be used together +with the ``remote_transmitter`` (`docs `__) and +``remote_receiver`` (`docs `__) components to communicate over +free to use frequencies like 433.92 or 868 MHz. + +.. figure:: images/cc1101.jpg + :align: center + :width: 50.0% From 6a712575561e709562b396a75c1bcd15a7c60627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 12:17:16 +0100 Subject: [PATCH 03/22] Update cc1101.rst --- components/sensor/cc1101.rst | 158 ++++++++++++++++++++++++++++++++++- 1 file changed, 155 insertions(+), 3 deletions(-) diff --git a/components/sensor/cc1101.rst b/components/sensor/cc1101.rst index d9d9971ed..abcd37ede 100644 --- a/components/sensor/cc1101.rst +++ b/components/sensor/cc1101.rst @@ -7,10 +7,162 @@ CC1101 Low-Power Sub-1 GHz RF Transceiver :keywords: cc1101 The ``CC1101 RF Tranceiver`` (`datasheet `__) can be used together -with the ``remote_transmitter`` (`docs `__) and -``remote_receiver`` (`docs `__) components to communicate over -free to use frequencies like 433.92 or 868 MHz. +with the ``remote_transmitter`` and ``remote_receiver`` components to communicate over free to use frequencies +like 433.92 or 868 MHz. + +Tested frameworks are Arduino and esp-idf but it might work with others. .. figure:: images/cc1101.jpg :align: center :width: 50.0% + + CC1101 boards. + +Example configuration for ESP8266 +--------------------------------- + +ESP8266 can use a single gdo0 pin for tx and rx. During transmission, interrupts are disabled and the pin direction is reversed. This does not work with the ESP32. + +.. code-block:: yaml + + spi: + clk_pin: D5 + miso_pin: D6 + mosi_pin: D7 + + sensor: + - platform: cc1101 + id: transceiver + cs_pin: D8 + gdo0: D1 + bandwidth: 200 + frequency: 433920 + rssi: + name: "RSSI" + lqi: + name: "LQI" + + remote_transmitter: + - pin: D1 + carrier_duty_percent: 100% + + remote_receiver: + pin: D1 + dump: + - rc_switch + tolerance: 50% + buffer_size: 2kb + filter: 250us + idle: 4ms + +Example configuration for ESP32 +------------------------------- + +Example based on a generic nodemcu-32s board. + +.. code-block:: yaml + + spi: + clk_pin: GPIO18 + miso_pin: GPIO19 + mosi_pin: GPIO23 + + sensor: + - platform: cc1101 + id: transceiver + cs_pin: GPIO5 + gdo0: GPIO32 + gdo2: GPIO33 + bandwidth: 200 + frequency: 433920 + rssi: + name: "RSSI" + lqi: + name: "LQI" + + remote_transmitter: + - pin: GPIO32 + carrier_duty_percent: 100% + + remote_receiver: + pin: GPIO33 + dump: + - rc_switch + tolerance: 50% + buffer_size: 2kb + filter: 250us + idle: 4ms + +Configuration variables: +------------------------ + +- **gdo0** (**Required**, :ref:`config-pin`): This is the transmit pin. And also receive pin for ESP8266. +- **gdo2** (**Optional**, :ref:`config-pin`): This is the receive pin. Optional because it is required for ESP8266. +- **bandwidth** (*Optional*, int): Defaults to 200 KHz. +- **frequency** (*Optional*, int): Defaults to 433920 KHz. +- **rssi** (*Optional*): RSSI sensor. Value in dBm. The RSSI value is an estimate of the signal power level in the chosen channel. See datasheet 17.3 for further information. +- **lqi** (*Optional*): Link Quality Indicator sensor. The Link Quality Indicator is a metric of the current quality of the received signal. See datasheet 17.6 for further information. + +Detect a magnetic window sensor +------------------------------- + +.. code-block:: yaml + + binary_sensor: + - platform: remote_receiver + name: "Window" + rc_switch_raw: + code: '110111110001111011100110' + filters: + - delayed_off: 1000ms + +Transmit a message using the button component +--------------------------------------------- + +.. code-block:: yaml + + button: + - platform: template + name: "Gate" + on_press: + - cc1101.begin_tx: transceiver + - remote_transmitter.transmit_rc_switch_raw: + code: '0111000110010011110110010100011111110001001011110111' + protocol: + pulse_length: 434 + sync: [1,6] + zero: [1,2] + one: [2,1] + inverted: true + repeat: + times: 10 + - cc1101.end_tx: transceiver + +By default the transmitter is in receive mode, it is important to surround the transmission with ``cc1101.begin_tx`` and ``cc1101.end_tx``. + +Example pinout for a tested boards +---------------------------------- + ++--------------+------+------+------+------+------+------+------+------+------+ +|BOARD | MISO | MOST | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | ++--------------+------+------+------+------+------+------+------+------+------+ +|nodemcu-32s | 19 | 23 | 18 | 5 | 32 | 33 | | | | ++--------------+------+------+------+------+------+------+------+------+------+ +|lolin_s2_mini | 37 | 35 | 36 | 34 | 8 | 9 | | | | ++--------------+------+------+------+------+------+------+------+------+------+ +|c3 supermini | 5 | 7 | 6 | 10 | 3 | 4 | 0 | 1 | [1]_ | ++--------------+------+------+------+------+------+------+------+------+------+ +|d1_mini | 12 | 13 | 14 | 15 | 5 | | 4 | TX | [2]_ | ++--------------+------+------+------+------+------+------+------+------+------+ + +SDA/SCL is not needed of course, they are just there as suggestions in case you also need I2C on such a low pin count board. + +.. [1] add one dummy transmitter (``__) +.. [2] still possible to use i2c with TX + +See Also +-------- + +- :doc:`remote_transmitter` +- :doc:`remote_receiver` +- :ghedit:`Edit` From eef291336f3ddecf0262edd1ade362eba3450cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 12:33:10 +0100 Subject: [PATCH 04/22] Update cc1101.rst --- components/sensor/cc1101.rst | 62 ++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/components/sensor/cc1101.rst b/components/sensor/cc1101.rst index abcd37ede..a041833e9 100644 --- a/components/sensor/cc1101.rst +++ b/components/sensor/cc1101.rst @@ -93,6 +93,68 @@ Example based on a generic nodemcu-32s board. filter: 250us idle: 4ms +Example configuration for ESP32-C3 +---------------------------------- + +This one has a problem (``__) which needs a workaround. + +Basically, the receiver has to be pushed to the third channel by adding a dummy transmitter to an unused pin. + +.. code-block:: yaml + + spi: + clk_pin: GPIO6 + miso_pin: GPIO5 + mosi_pin: GPIO7 + + sensor: + - platform: cc1101 + id: transceiver + cs_pin: GPIO10 + gdo0: GPIO3 + gdo2: GPIO4 + bandwidth: 200 + frequency: 433920 + + remote_transmitter: + - pin: GPIO8 + id: dummy_transmitter + - pin: GPIO3 # GDO0 + carrier_duty_percent: 100% + id: real_transmitter + + remote_receiver: + pin: GPIO4 # GDO2 + dump: + - rc_switch + tolerance: 50% + buffer_size: 2kb + filter: 250us + idle: 4ms + +Alternatively these modified remote components can directly set ``rmt_channel``. + +- ``__ +- ``__ + +.. code-block:: yaml + + remote_transmitter: + pin: GPIO3 # GDO0 + carrier_duty_percent: 100% + rmt_channel: 0 + + remote_receiver: + pin: GPIO4 # GDO2 + rmt_channel: 2 + dump: + - rc_switch + tolerance: 50% + buffer_size: 2kb + filter: 250us + idle: 4ms + + Configuration variables: ------------------------ From 4314eba1e5a920ee57b97c3aaa8c511b849975f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 12:41:50 +0100 Subject: [PATCH 05/22] Update cc1101.rst --- components/sensor/cc1101.rst | 50 ++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/components/sensor/cc1101.rst b/components/sensor/cc1101.rst index a041833e9..ddd24cc02 100644 --- a/components/sensor/cc1101.rst +++ b/components/sensor/cc1101.rst @@ -101,7 +101,7 @@ This one has a problem (``__) whi Basically, the receiver has to be pushed to the third channel by adding a dummy transmitter to an unused pin. .. code-block:: yaml - + spi: clk_pin: GPIO6 miso_pin: GPIO5 @@ -138,7 +138,7 @@ Alternatively these modified remote components can directly set ``rmt_channel``. - ``__ .. code-block:: yaml - + remote_transmitter: pin: GPIO3 # GDO0 carrier_duty_percent: 100% @@ -170,35 +170,35 @@ Detect a magnetic window sensor .. code-block:: yaml - binary_sensor: - - platform: remote_receiver - name: "Window" - rc_switch_raw: - code: '110111110001111011100110' - filters: - - delayed_off: 1000ms + binary_sensor: + - platform: remote_receiver + name: "Window" + rc_switch_raw: + code: '110111110001111011100110' + filters: + - delayed_off: 1000ms Transmit a message using the button component --------------------------------------------- .. code-block:: yaml - button: - - platform: template - name: "Gate" - on_press: - - cc1101.begin_tx: transceiver - - remote_transmitter.transmit_rc_switch_raw: - code: '0111000110010011110110010100011111110001001011110111' - protocol: - pulse_length: 434 - sync: [1,6] - zero: [1,2] - one: [2,1] - inverted: true - repeat: - times: 10 - - cc1101.end_tx: transceiver + button: + - platform: template + name: "Gate" + on_press: + - cc1101.begin_tx: transceiver + - remote_transmitter.transmit_rc_switch_raw: + code: '0111000110010011110110010100011111110001001011110111' + protocol: + pulse_length: 434 + sync: [1,6] + zero: [1,2] + one: [2,1] + inverted: true + repeat: + times: 10 + - cc1101.end_tx: transceiver By default the transmitter is in receive mode, it is important to surround the transmission with ``cc1101.begin_tx`` and ``cc1101.end_tx``. From d2c3e7e5c93be6ebe095217d7b9eaf55cc10f85e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 13:31:43 +0100 Subject: [PATCH 06/22] Add files via upload --- images/cc1101.jpg | Bin 0 -> 37368 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/cc1101.jpg diff --git a/images/cc1101.jpg b/images/cc1101.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a497ee6dda80dd37db6ecdd5084abe1916cca7fb GIT binary patch literal 37368 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 literal 0 HcmV?d00001 From cd653e11c22b50be3ea4fbe15221b1a25df1b05f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 17:32:18 +0100 Subject: [PATCH 07/22] Update cc1101.rst Added allow_other_uses: true on common pins used by cc1101 and the remote components. --- components/sensor/cc1101.rst | 58 +++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/components/sensor/cc1101.rst b/components/sensor/cc1101.rst index ddd24cc02..e93cc4304 100644 --- a/components/sensor/cc1101.rst +++ b/components/sensor/cc1101.rst @@ -18,6 +18,10 @@ Tested frameworks are Arduino and esp-idf but it might work with others. CC1101 boards. +.. note:: + + In a recent update it became harder to use the same pin multiple times. ``allow_other_uses: true`` is necessary on ``GDO0`` and ``GDO2``. + Example configuration for ESP8266 --------------------------------- @@ -34,7 +38,9 @@ ESP8266 can use a single gdo0 pin for tx and rx. During transmission, interrupts - platform: cc1101 id: transceiver cs_pin: D8 - gdo0: D1 + gdo0: + number: D1 + allow_other_uses: true bandwidth: 200 frequency: 433920 rssi: @@ -43,11 +49,15 @@ ESP8266 can use a single gdo0 pin for tx and rx. During transmission, interrupts name: "LQI" remote_transmitter: - - pin: D1 - carrier_duty_percent: 100% + pin: + number: D1 + allow_other_uses: true + carrier_duty_percent: 100% remote_receiver: - pin: D1 + pin: + number: D1 + allow_other_uses: true dump: - rc_switch tolerance: 50% @@ -71,8 +81,12 @@ Example based on a generic nodemcu-32s board. - platform: cc1101 id: transceiver cs_pin: GPIO5 - gdo0: GPIO32 - gdo2: GPIO33 + gdo0: + number: GPIO32 + allow_other_uses: true + gdo2: + number: GPIO33 + allow_other_uses: true bandwidth: 200 frequency: 433920 rssi: @@ -81,11 +95,15 @@ Example based on a generic nodemcu-32s board. name: "LQI" remote_transmitter: - - pin: GPIO32 + pin: + number: GPIO32 + allow_other_uses: true carrier_duty_percent: 100% remote_receiver: - pin: GPIO33 + pin: + number: GPIO33 + allow_other_uses: true dump: - rc_switch tolerance: 50% @@ -111,20 +129,28 @@ Basically, the receiver has to be pushed to the third channel by adding a dummy - platform: cc1101 id: transceiver cs_pin: GPIO10 - gdo0: GPIO3 - gdo2: GPIO4 + gdo0: + number: GPIO3 + allow_other_uses: true + gdo2: + number: GPIO4 + allow_other_uses: true bandwidth: 200 frequency: 433920 remote_transmitter: - pin: GPIO8 id: dummy_transmitter - - pin: GPIO3 # GDO0 + - pin: + number: GPIO3 # GDO0 + allow_other_uses: true carrier_duty_percent: 100% id: real_transmitter remote_receiver: - pin: GPIO4 # GDO2 + pin: + number: GPIO4 # GDO2 + allow_other_uses: true dump: - rc_switch tolerance: 50% @@ -140,12 +166,16 @@ Alternatively these modified remote components can directly set ``rmt_channel``. .. code-block:: yaml remote_transmitter: - pin: GPIO3 # GDO0 + pin: + number: GPIO3 # GDO0 + allow_other_uses: true carrier_duty_percent: 100% rmt_channel: 0 remote_receiver: - pin: GPIO4 # GDO2 + pin: + number: GPIO4 # GDO2 + allow_other_uses: true rmt_channel: 2 dump: - rc_switch From 6019b1853e1fe8b490fc5da51eaf6a5599bda361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 17:40:24 +0100 Subject: [PATCH 08/22] Add files via upload --- images/cc1101.jpg | Bin 37368 -> 23236 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/cc1101.jpg b/images/cc1101.jpg index a497ee6dda80dd37db6ecdd5084abe1916cca7fb..80bd7debe6418decba9236794702da321f26b7a2 100644 GIT binary patch delta 22602 zcmXuKbyQUE_dPy}ND4~#kkX)ZhrDP373r3emIfKPN=i!$2#A0*BRO=ZNO!}~>Cgic z{O0{x-`|~e*Sde)HEW(T=Q;bFz4wDGxZhiU?<+Oi28dlXz{vpw($N9&fj}Ta(7k&U zAUxdDJ=_O(B~c_j0L|PJs4iZ*2ZZUIKUc!LfJSw!|58MlLGeO5Ejelt{Tan~pl<(7 zz4{m8Ix@3>kl@qhuVy2u_i6mhj}of_UCCP2(Nr)jN$f_)r#V^{8idtSy}`NtRJ|gl z(*ajQbt54#vF?gK!@Djt58o46^FO@<^()rVgq`|Z)}!dpAodm7Tsd37X{SSdqnb6l z=IqN%=4kG}oXsg;gN&f*>r@AQbFtfwY2R!)OFOJ*<}ULwTp>ei^#h*)H}de=_U8zp zvgXJ<365si*Fb+$*ZHByfZKvN4B-}qG*pio-5)Z12V!pLxC3=5w)0vB%ynhe_x;K* z7qQ*Y*9)X4)l_T{i`Yp0_V=c7(!8Ak<-u7-ldEDpA%WHp_*B5w%deecPQUPZ! z=;?QT_d%V)su4Fw(|W{JiZ>AK>tSo_NU7uLDHkgBLzUjqK@J};Sx*c7`3@9X1avv) zBe&OusRJa}=VBQ3#@+sA`Oelldj?i&PNt}QmBbrT)&@%It2x&C90$RuhOO-Us0G* z^^JONbt?-#eYmVxD*xP+NDepdsQzP`4hc?Rk(Dxd!)aKnf{N!WPPKw#i&)7DIz znfX*Z^Zc-V{;H+3%yzHZ;y;V5jhxC&IWZa_6ZPezSYF_HKP_}}qIgVFE3wBPIIP~B zO%B~HZLaUA+O_%_KxueN5Vk#a8Ii5;!Z;yRAXwM#wfCC!;rllRq;}jq_HsWdB(|eD zbpOHUG06&INT7f1p`1lv;lX$>j8!!Q#md)`|23C0{^k+mZvNFk5;ACDl^rQttO)=` z2Ua#Z7ILYucXC7hinA4V)@64f$fv+f_Ucw@&pQxNWJ$v@C(XI}U%8uIuWDY0u5`7o zMd=~#u*=Hd2dU4=!VkEq+F3CF_PpV?(&Gj;x|7XwFx+my{hhqPdUY-ZE)^mIESU)m zUGzvHZ>qz5cM>Mw3F^Fs%+Z9O0mJ>K3MQh<-d4^I9T|xcS1MP2GaWVg6CUE^PhN%@ zOx9y)Ha4d#s*E0T>c>~3^Ygr_=~yKR@@DmroM1F9qc)}#+k=>b*NyLiDOte|H67Wm z604m2{mUOXnwh5xzG~fp{Mxmj4I6Bm5$3U@Tc8|!zoo-o#|vm*=UJVT?t5P(#5j{O z_y#!sPU-wAm@@K}03gUhSRr|=jwB1PtBQC+a@=JW=4Qk6q6_dhzoVm89A5XYf0Q7T zCxm|d)mTg~)o$PX^z|F_nt7~Eh%9#O4uo5?H8^G>K&6*#RskHj{X@IS4X;N)MDj1) zdU8Sf*?HaemqQaU3zpug`C$j?>itvNNDrSJ-ELm!Mn~Hs(Cn&|w;JE}&K1*@{@`5J@28KzBKV5DEo=k0kSRV9_7HsM^e=02C4Qz_E}iag z29IK#w1^#zdGMdf0AzP_yor=x^5No{kd%p5hP?P+6!r^Ja)9RJNL0M9ykc*xrz6}= zV%^NjY}xHxFw?7r)`{RyFQ8JJ|usoD|e9T8=#$ejGmjC{#Tq( z#Ipo-_~_WpKU@xcPC^za%gjJy<@m9mOZTtGf%@(qI?TqC6W1-7h_mYOH+@b05NJR6 zi8%QeONnfY)<{|Y(q9xxu6H2+t%z-1qnyq=5G?`6ywSL+Rc{_ClCqN_?xR9Iu+dUp zKBJ@3Q`>3Z0&DU;n|%Fr?a~<}*m%VCnez&f2M*vcM);K})(fIrVmEgLw!;Kxb&W%T zR`;P@miBMZUxOBsrXdqSE5a?7If;3r98wc8i9NF`W3x~sCpnt7)j4S&AjQfaB=z~c zSbC2Y%K2SuOZ;^erfSEeFk=!B9LQy_O;v zC|a2_gz=NfzJy(${BpIZO+N`A4+@xP`o2yYmpg+ZLg5FjZIYuYr@Cc;2<+1p^MIud zh_Y?%^j`sAa&q2vkcwoEyJEBM){(}I%N8%?=pc^C`wWyz!zE>^RsyGrOorL#eLrr#vBe3UE__ zUh6n?7Ojkc1gT;cihkUW;rVgD_1`A#(ZKp0D8Z6&R!lxf6V?oyCDG(eXj$RpV9f9X zsP|kZc!_rsU`jJHnaDPjQpivUC$0o~B2$dxFHGcA5!c4yTy4kMBreBdeNB~rjbx2` zOO6MvU#F&}8NX8a7< zPFu2TjAEquc1k_NbvBA%_pM^fIW5vZlz>a?f~?Ti%%nxT!xxv)nQ4GHpQ(!bN*j5k zfumz&%4isNcPNL_zksVYrT4M8gGf|~239_vo$!Zr-_{w%(gCcMBxp@gy2;1Id zfba%13}U=WUpsXNY5*TM2Vb^EOXPArD5xCfr#1|?e@ngkAm&-m!)iH_d}R5iUf)Vk z*Byxb5>MdcCzPz^#t~p+Mkuwyv)ngd%{jRJJ$XnGy-cJ~dP%uK4?q%-a8EP4!&I?*$(e4=ohx*)Bt zsR#~^Zgz$!z-D|f+C84gWIr7d+L$hQ&Zau|-$qj1S+_oaH-P6MBmKI2Kz5gm;99RC z?DXBLmDyqXKbjnGBEPy?-`Kxj*+BL^kBXv)IGI~C#yC7UFhX%+)D>r9;WEmfGHf$d7Cs0ufogtL(|M{M2$rqA8Y}4C_%4nQ*Pc zym0Y$7V>2j{UDaky`B3^w8`v;?_k#hFaEu?1&^!B(_J(r0i4QG1fgxdhQzaM53*42 z$(Z_=_$G!8+u^mvUlZw*=JnQEK^dyeoboCS;1Lj=9paw+7(#w7g=i{zKWe$)6l`RC z2kKNT@Rcrt3SzzjE{R0g#XLNpJeC0YlR3TV4A+J^Pr53B9q>m9_6~zdEla{f)>d_yfKI zG`MCO1R4Roj~ta@ zdLXIrpApPnGX~U2*)-S>diqIy1Ps$dQ#;>*uEa1ukI=$*Ai|ugO5mqpxc7>V`~oa% z$3#+Oz+K7O%6ZeJWN3_|!y7?>C7we#ZnpF|a(^KYyKEv_P@?! zGTqGH&O8m|6sh>`4+w^?@e<6@!&~Kgp64<+FRta^784^Z!BSm+e5Z+ z2YTPDO&UKNpYmH+U{B;8^|fAS9#U9-yDFOzqJ?mkZ2pk;4hZ({t|cmXu`rP7y8D6C zJHqvJvibK-sw0b2-@pu5KKp|u2a&}@&vd+H`{CS4FeJqlBZ$isek4809wLePS#i9D z=!kK37jl0rvtaSCt`#ru#+JuWUgnc}+sA|>@O6jQg)JAC4Q1y_|^^;1R-RImu1zHq^$tuvLr|2|afetL(&$7&050q;WWE^%d zt|}z8&$ULk@D0?zMG%dW@n6B;&%V#3H<;)$d?Nx7%71~zhsa~Q=fHUFf%Hy z#*uOdrse?OD*IOH^-@Y`ASh{2PUbwkwCRszsaBmTg`WrKpDt4J7WJm%h3n^9zhkR0p z9b>L@S6|gJ*;JsMf9k`K{#<1+@2T)Q(36Mc8S6T<2ZmKl-Cf%$9}2Y3LznVXyg29%PVd6dp+%X-eu_}8Ej)L3P8MphVgs4@J?M; ziW5>Wmk0gSQs?KvO5sR=Pf3FS>x>ohsU-Tz^*|mIM5WAWRdl9G086`{(QZDzq+u#= z%}c=3d!H?YNI8C<@i&3&8bZrsUQrM8190ZYb;B+hMl2+g?t)oo13guVww|R+7hlW1 z(!5t8D^CN3ss(_5-g2X)bhw$!qkk>Jq6d=%EL$)mS#1E#j0tNviV<5)Pkj>Ki zflZC%^M|d3n=B-`ku;TivL^EI+d>q_oUvksxX}~xRl(z0i-il19^uH3;BIn!CoC9& z&GY!R|IzgYolW%pIG%o8nXElN5`LsFqg0jPPE3HqtJ5LIherB?tOx8)!px2GI+mQvTWa%_gEmdi&L82!Y^$ zlJ}J)nkEWM>}ZdAf~IL2uakcvg${(vdVQ^VwpOIH#{2D7){An_?DyC?$EiPD^}5%J za@A_(&*YF?MCP}xWIb;Aq3cTC0kaxA6jK7UR2|NLBP7vZLjeT-H$QaqmS@sL%E?rd zP2MB~4OqR_b)im$`Y}aX5{i4P)+e9cxY=1uNoaXu>-^Edsy-s}x~Qx7bG}d_i0Swx zuAf^rH$BLbUp7jw?d%oNh@;owST?$1LwNU7pkE-hH-bapicdGqC*3@@6Y1tByQ|dK zjpxoY?m!Qe0Nj>!Isn)E4@kgTYh3`sy%2NWbRjH$Y{QuY#KiR?EvEBl1NX@EhU3+xF znAl*pcdqVM{@!S|{Jn>ey{t_mEC=go+_ME74G!*Bxm?Iz^<(lmFjQ-{}0EZY!h zjOsomJmGAeR%x9h0|E~0tVyI_bP7F-AsT~_e|fV8VV=AsiTCSvkruG|Ygl`~* z`t}mcWJRqj3&k%ye6@+!&VqZZi)$_ZHOn_|7u{!P_zoqjGMl zob8|@mxHDGTgUE+10#TTXHFbA{%E@akaayR^4>A8_`1?SFjVs&IdgYuypl@XKTz1z z1eOHHx4gtEq8~IFPF|V;bOFJ34%siJwVmJW^LY(D3}{lK`a~$yzSD|lFzuT?6V)w~ z5qToVQRbZCHRk)YCcfhRwXAVnTn5od^N%%HWKR?4)^yfDl=v}T-^WNGzi?r!!ihmX zP9pR@81;fNDD$3h%~r@Q&l|zArR>OeAC#a%MZCJ&>AJjr6Ki9GC>il*7rfI6e5sDS zvZ&RwZBtW0+0u{TlDygsH0|L=V()*E0|U42`M9Rh2vwuu9c175!D~=%5D_HfxjeVH zMy4Q$blfD5+MI##L!AHxwkdm1WnaV}-2(Z9sje$2ar9Q-X;ha-@ymABiFzF^?Uqlc z2O75No)3UvRz4afi{`*^xPr74)B(x7aR(we5a}w12qV)b+_`%ah=ouW^QtV!R zMvj~kSkBfd#w@1C2iX=csom;q_J3VFQ2my;;VM(2pG+(L&&tV>4yv1@8?ZWisX$8~ zaoc93ovA%4w7>TIz(wewceb75eLK^sczR+`$JH?RNV@E@%2*GZY_)J? zlzPtrTF%wejn6$?YaqAklMm|j&#QHe_Z5DKelfmCwQ5Jf>3AL2!NZ3fii-=YqkRzo z+UY1Iog3~zye3CJg+>5wWB1JY7gZeLbVFH;-#X*BfD}3ce~06g9y0QhYmwH2UzFGS zEx&GkEnU!wV39vIUogk=PdmU?=Zg2Si~)!Jc{O9b@{A^kmF>C=hRHBY8fA7wTioxZ z2PFzu%8Vvn-rt!*`LATJ95LavSN$otVf(QHe}LAS+LVu~*@&oW>&) zRGT6bkcE3C)B@-ttLs=;GG>uL#<9<~YEq3|k(k(EW`5pRk|p~vP%5vdOJFrg$7cNV zt$~37qrqEi9%j&0h4+yzBYkuNd#Z2Z;zG-{*q>+hzb`EKpz2rt8t8f47tdnHB_)g$ z=#k#*7+RHjYL5T-!w93MXgoMJ+{$9a4-apB{;gU*=n*=`8 z{8{=BHi?^=+bTOUC?dsA11eMuR`|+RT11b2H~R7s7jXxp!mVK=k_n(Q5#V)7rydb4!uv3Z`4 zw$rxW89PSwsPnPJ75Wm)c0BT#-vmz8^2GZ(Ql6%G;9m16``(&;{Y%;-1B=42J7a$gatgs*tI`g5!bAOfu3{V;(5?5OIS6 zo;AZ>H@rv(C6gUug&;Fmqt-dsUprSc6&<0DMx4W0Vo&wE4L@E-U6KUr16tD@6w00? z_Qp@v8WjezmY^20rH>ew?z>uf!d zu#hiFWYUtN@DBs#G$RmMC-KdNk{OO~qc+bR>D|tZ7MzpcA9ppO{Tp9saFE}yds;Q4 zJ2>)ZJ3x@ZNuv0a;a2wQIVP%A2c-k~Z$eCweE-bS`T9C3I1^CnE+Lg0@Lss@E)aCj zoVJrZoDzB7`-&&Lxt1>p29=M3BIhm=aj6EurL)f>cF>B*_Vg*tt{U0XD>3|KB_vp6 ze*Ft32PwGUdF0GDq#79RJ_f6Hs#o{^-%T(GAoRgVZp%`X{edOjDNP1clPrII+S9G@?~K7@>Cuip?W}Jm0ZI2ECfD%Mr}t*Q+&U^o=JH=q&q0w6y_y#yWRF z&dL6k@8h$s64ptZC>=BTa<1m8kp#(yEKz{GOBCg&2)moAs$ezszQ*OM*FLFs1vSaK zD@WHxirIMtXpM}GnY7syPDw-4)brS=ED~i7nKIj<+(n&o0hggg;_ubFQqTY-Hv;}w zx63Dog=dj&x7Cc0<&UONj%1*RM`KNe#{8&fyV_>l+#&729SHdpr|McQ@~x^=1ON_` zlQ%tXEj7v{rSgb}iUJJCwW}~(sQCiMbZXjDy0AFyG(30I;DvQ_bNcWb7PCk_z5@|X z!v|#k5}sj6eO}|8(>+~%rkZZQiYFYI3?fGb<=;;OG?jf<^$peMyZt;`sP|&?B#y0>7e_fK+0_Ed5;1Zhn8VbAAqpvSACh4lc?T9)N?AhSx-Hc zrBY=QgJK2)>|RW}#>mISzGK?A$mfV#H`@MOs?&>){jpb0$5U^BV?yDRcPad0Q{iOy z*B?K;$MY!As{7caRk3I#pm|NNy?s_SVp>K_RnXm`HjvQBzwuQqbx$oHASL*fQT%%~ z70+1KPc6faVd&o}f=?r-QtGO2cM7-CmQyZ*VD{Iv75{|gc*_D}v@O)NWBd5|_9aY1 zGAlH>5{e+lbz!j(M0Qo)L|hPPF3NRK3?*XQtI|oLuV5@YE?^?W4W&nd|;b z+al{lRapJQ;YkEz;p?I>`st%1*eWaH=$U+FU(vZmj}s+R)$$qH$&a|L>p>{HoGLfHbdOHE)lNvn z7sNjzt$G1*Qq?lC?XtF&I+vmpg}&@7Hl+Wf(RfGCqJ6`UGqGIL4uFZ`B(&rl9x9eu&W2#RUoZl3RhWb6m<+NWkvLFFfWmk3)|Vp6w7MI%n@8dUM~K;@o?d4{03%jD@^gG>e+9h)?Np~O} zDxX8kIfjjR&V!K$p`!JFa*D^Vpe0vYi{R8CCyAwl5LdJZa;_LV$s#{3KGtBq|1q*M zC}=%iR2!uv%xA1o{Mz28D_Zn?Fg(E=c;u6NA5#J`SZ{kR&L8|jM^C4af?ydaHm;$hi+YxnV-|_3Ei`rf^#H+B`e7x zW5m0Rw&pbNR@=X$)*|JCeh=wnYeA3#Qv-#=#F)F-5NKlN~vvO<7 z4an$zVWz2FnKKPz{AUv$m-4KWtOp+;J}k~OC@wPa@tPjyeLEZ1uD<^}#HptU;*CIE zUC)RyYZjb7czy?Rl;55{Q6ItN6)(Mb!tv7UT$AsTbJOz*8h{`_HroK`O@tSPjI>%4 zNa%&~b7~rPXF#N{3`Ufr=U?9gY?tj$ebC zLOWAA!1~hwMJT*6kLb{_gYxfO(hyfdvE3jGVN!vMQfq&8xqZz2KYuDShDHCp1@T{P zUcoV8b$N?s%2~IgbnoVDUudo4H%WCWj6PJ7m%hB;!5YGi?KfQuQxJ7({*S-({dJ8+ zWv!;Yv%~jv?ybjL9{yZc<&Rl3ftM*#|J`plqmHbk=c86Up2IrM+B|=2PivYt;;T12 zcq@w~Qa(k&!9746gGXeYEO4wxd}tbKazJyQenzAIrrVg#k?gH#+P&!4P0RQ3LpsA^ zZv3%CH>d|oAtN*ZBH881FwWi}z70!qv*m=t<;iH-iWukaYiE9cnEvWH5TP+g7^d(9 z$GK17>PUkLb}*MbWdjKNm#+84lC}2Sm;R?`i*oe`CCv;rS55ARRyv>ZrSxB= zG@UgbjOVEH@Poy18>bUM7)o6pwm>5+iKb`jEQH=P*Y^r0l`NN{KHY)Fq{di|Q|67} zRj^W>ssjo=eo>7hO-^99(iQUGY1>-D9QT3*5a8yDJgCTHVnyhE!ZD}?$O^6AL+G4H9usPsni zl3F#1XW6QoVpEu+r{4A2Ny%+)XxSTWL#_6~+X5^hj(>a59SLk7V>trKb&Mu_GQEqG z#R4tV_JQqEf(p;voLF*OD`=TW>#ToRE88z5UiV^1Y{5d0P0{`b!TQQpZCrn6eGe-? z;$)P^D=k|a(BGxXSWXV-?u{qe;12U8e-e;w_u6Ev9)R@`h-GEeuvSxMCWQ7XB6+USG-DPRC`8#8vAdy=@4caTe>s{pPoHPM z1R3#(Q%&NlO~mP^ACa!;ZRI7)Qrs$V`gmymK^}Q4zas(#SG}BV+F+DTJUW)`?dlsq zbDXWe8$C^}eiC;o%*$e+{aBeL$MshmA790VN3j_ISddF3IH^?{>E@RD?t5RBu)Hrh zKA||^N|rF;@FlG%=Igv*y)G5CwAsg}dad+-w0_%3 z|7R7kw+RYA+YON@+|T+S_h1^7jibjf9bGbgow9{fh3vfE3n`7e?JkFl{4%Ne;!Z$$ z4jsh6nPR7an|5ogZw=RJBGiPVar!k>2x>Q3cL$1IB>m9pDL@gNd$6J>O-DDNA4v)RZ!aLF|Pb^>NZ*YBB}Mv%a zzF6H&ymyk;F{OMxZ-Z0=@Av&y{dE9M!Ld<%bcs@*N54S)TQbyRwxRAqq^C>H5`+ zE3J{m8?#C9L5UTUE;f35u6v6s{3yy-;kfl+-P4K_qK1h?t00!t&LA9t!G$gidQl!? z@nnIXD5dvySp|T`ZSM-f_ej(Xy<_6pylj8aUmKMc41)T;)M@`AB)XnW+dY zWrig}pl|KE44Wl-R&J%^-xb1Tw%JO5#$fp0RdK;b(&T6E)iWT^3$C+ zfh0LIIIdd2sksu9P)ey7RaJTH)@mJm@y9F&V@Rpd#B`{c1yi^2U_s% z!HQ1(V}1W(Aow1vF`{E;XeUIEri%{C zt!lQ;6#H*j{LY_Y*D@OiMZL-SFeVNbnE9` z`xaEssaaFPo07)96sTEI1)AL2tb5Rz;Bw6`yUGc^ZhSC%=|^040e%B-8`&PjK2vzR&FDo>^#Q5Sbey${w18W1_pTDwW~(@) zXxEQ?7v4@aJWEXXOE^sHemC33xqpZwaBxF{gLpJ05O(#h{nUOP)_(f*2SZPfsfq+yet=P^(v~XS z&G&>)_huph!90c#v4Gf3$KFTYy{kMk?&670kjbb2E=d;51jP~nRXh;Sh7!mJiX$XK zYk@A6dJiNI_*fEv^G838>bccD6eQ4d_+w%g8ssCig7+jWeHVL&D{qn;1UjwyMEJIXJ<%p|WUNF(H`i=Nn_&$?& zxgx@RtWXS<9m)$ia2MkTwzjkGUG$DxfU7}9x%ewqcGd}puO=RX1 zYmf$-=7Nr;{%YQwVWUz%bI*lv>6O8fc9sjnO~%y$Zq2Dkvn$OhyGb!jF6Zg?EPL%_ zW$GWcq%Q{Ne&^r6`jIkuX+cL!`h|1{Vf-x7C^PIr2tFpJoqhza2QWI9yI0V=`XHZk zos{y>pKT;|v@r1{Xi_8fPys;Kf9+30*1*(0-&$2XFk$OXCj}{Lh(oP$W4hQQ3Z3Tz znQYt-bz_JYL0h+u$Dh{$M)bSicc6&0Q_;7z)AcSU=^ICJ6c)juqO50d)i{U$NY#+j z_$0~2{OM<7#1Q6M06DNBOxY0!6>DSm(GHi9um7BU_0KT4}dn4KF_w5OzBS&XJ3QAS#jM_?InjFQzNmU@=$%qL#&RpQb0DsvN~ zim7>(8HU!ApQ>;-lyE6j(c(v=*_YY>na)&kK+X1f>v1su4aM))X+=ljFX@N_7Ajb# zkDzkFbX~C8-}tjlr$}oBw`GK8=Vmn&*JUHwVQ7H5)@T}S;fa9uGq5zbQ-|}8d;Go) z&t-ZE3{*~+5uv28M2uVt`&>#KyXP-qNliUw&M1#&dASazx?({}KZ^?sy*WPKYTXp} z8j+gcf4+Lr`LX9%5*c{)UR}SE6(*$g`5H(9ipTHrurwvoL3nqxm%)u6(BGa z&c)Gg$EV1E4ng8JFabHl6Hyn_+!qxF(IGr=7g$_4y^Q{Zd8D1Jr$6ww_OH-G&q%iV zk!|m5!mJnGR@q?uj`j6w+>9Qz%6iHjtw5J8DBSY`za>L&b~BJO(CYn@KK4>~&$XCK zE1Vc>Ikxbx|4g0vq#92CNTbscK&fkaGr)fB!D4>y?|!2%oKdZsn>tsRW!j%VtP`fErEKXUqFdxC^*fLRsCDmH7svP9MaOtK~R* z&puLAGx-@ek@e_)jHudsPyv;Dffy*lib+jMO3pg69a`cH1IgHdFwY%y8^5s{l|SG}e>6d6<^8bGV^y>etrug*o1|EnF{A;lS`e4snLJs!sk#VM{= z6mR%Pp0qzi5*VCaR%!_&%b=BoHlYkr!7#fv@bGucAN zlxdpI-G}X}xVL11E^%?;MHhHPoTv&{Rn9%LN-cyi`lDIcnBtm8bHViP4{;1l07+-F zUXLPyQ#$~jaE1S#^!Y}!x=1)M%)o=uJkayftT>pi*(U72%_dfOeKzITWEPO6Zm%(+ zE&9B>geh6a8vW}34ic;qPRnV+EC25xK_hxNduixD&whD%ZI;h!no=N2s|@gC#r1+~ zFwS?8D49npCW|rZ0*KvQcUoE^X;BK*@IF8dq;@<@XC@oxlFmm4|43S(gOZ-j=)w0x z3D1oi@R`2;)y^x+wUWDrasaw)<%FG{mf~!gks+KDi`ZEer?P-ZlRrK0G)Zdah#^Dt z2@^tcb*$f$@gZgi@_q#tgaVAEtyCyKxXNV?#t?jHX*TQ&IJ{f_=k+%~$!#1`1Dvp> z9;b*rZh0MGIx$GJftW@xP%vMC|4d9hd#Xt^E>o&7}JIzawob zoh{kwr;aLo7%RCo)88`0)mRKp>hMtuartd)slDy*#8*vpA$>mf194Gq%@NxT8wx7@ssLMbZ)CBt9{uRz9ZgypIoioz>=Vb87>u;_LJ9fMf&7?qK4ZR zvMiSNQRT!370fry^elJ?`?*-i>oTX?^fobuxdqPV7VYVz+#NWe;3xTpi zoU3xXJdEd5Cw+2|W#7M1QXbzuYceXyjYs*LjOy50<6#-H6{k_nH~2LJi^WZ9hA^5t zP|MVDzWvRH@fa|&LvYB(36nmKEs8Q84B|!$3e0JHVB{0b)!1wtk15-9%ja(QLVn>0 z2BH5Qo5@%uMSfMFL%*M9r(r0l$Wp6V^3MOWt7zY{bT+_9ga1t9i;eL$xbnk_;9q`D z*BW*9NJIT5V-{tCMsXyLv3k&is}kY?u~$Vi#}I=}fW)K@c+h|I)Q4Yi=XrN2YHiT} zLa`Z4-ukE*Eru}6+`v4QOw^eaoLyXDd2v)yfX8_WO&QsYhzKzkD)m^zs!!PaJ{K(* zi8l1`Q1Oc4feKuN#!cur+~|NpaORG#-Zgp$gw;_{0a9&z=qi!Pg_r41jG4sj<_Ki7 z8sGyuSg=HB(O7swM=96V_2YRbKMKob`4;YP_cuZA>$|zQ6H$l7XsYw8Xk_WSa3VwO zKA6(j0pIRMPS67_Oj))y4pC9^pXBAb9hm5g2 zL4+h0AwSo9FgVvZS8^@0GX~Wu*KmDG-%+=Io zF4`)&{fdUDCx`v7m$&ag_Eu5t%*fBhhtZXo^n;TF`-b1qaECOxLK8;?6h`8Gc zq@nM|v5!X9r#M&XPancIhQBO9M1Te748xzKWCsb#ySd+kX2CsRvHBv#Re z>e?v#9*bd{D{1(c zQx{{g3@61`*^bR;mugXOV7?SJKQx&opV?c?ODSYR-y*$ny%8hC4srFc;|Ef-cj6NX zxOT|#seH_HOJD_>a0l8btpk%RINe%B9=S&(L`h8^sg8tytc<|aS)I+RZQH5D2^}R< z**2A6Wxqf^G>0_daD*IK?)izyGR#FU6hW5?-$?$B7p;FB$(W|WED33<3=j0aWwFAjV7}}8*Wrr8Zp-Q_8ww* zpy3Wgi3PvMve)69P4#nv9Bq+|g=ahQO!g{JDJf{L)qKzfH_$Kq2$yUuIFSqJv!u-K zQlzT?;_6;k@>)oUTZnWKV-!(I? zQ=?IEYkqkEByv;>{r&SP?;BYFbsNqqcfG0JnMfPpFuK-H;qtYz&fA&hw!$fpxkqyJ zZ3CV#DTwXt`C9%)dCse1Arq@<6rVKn$FIAwMn@rIr6YoY(4$P067*OYp|5$W?Sx|| zj50hw`@RSN)hHa0WkjZ4J~+2bvn*n$F2#RCwx4SNXn7TL6IH%)j6v>ViE-jOKK*pZ zyTs6pbOoaEdgv3h(u`Yl1Bxt1a9Kv+r5{Oj%zZq{uQ7q|i1ws!ahEKkU$TSoj523+ zCkQun{$NV60;8>vDY$uasz1*?K@AsJ4^2M?yO)i$(21&f|G_^4xv?o|gYBJ#x@T{1 zfL!R$69ZzQ!V2Ko8l?jJ!5W1eP-ca*6;2@|Z~YrvX}cy5)Zb}~@_$-*`rGE=L$}S` z@0ZjV>X1pRYT@pVC2;rTe!CPRHz)W*$$t!m&trpM^r7VRe=%8~hib@oL3?p?1`qg% z4X!sI)L*0G{h^%`;aW>q;d{Y<^`#~R(5Tu3`$iFS;<@;D!Hb{5o#}p+>Ua&q)c54n z$X?Aj<7DSDE3q<4zYlsFSyyZG>Q}BaitoWOi*E7psTnEe%SCOiS|U>#y&!@coMI1A zK#0%vlG7~hUk(1X^K4A`WOU(ytNOyYs&8+K9R-tBU|ErgdK#A_TI9$SGhmp7Wt0{y zwgm(a=&A0u1#=d=ef;iXL0+k7^KSvHiAe|{aKbXxYFHWM7;YN2yuJg0MUU}7cOXxN zgT&GU9d(o|c9rEGCR~AD@{62(iAQTAzE~T}bh*{R*_FoETw2AzCE|k8J#rkg`F{sL zq3u+d7`I;tXcWa<-yHy=5~AY#XztOxrYRU-V^MQPG`K{8KE@92bUXo^^`cp%kt3V? za<5N0dLNY_vwKNVlW^tTMRrl1=yy!Y6ltt{2*TZzvGUX{@4g}3^6gmETK?9KN$<0v z{=7D>4*P?UHQWdjR28za=$EsZ2OfCvK|;s}^Q<&$SYug)0^qcMkQ~9`^H)S~rF-4L zW626jG`ArLY;et7Jg=14M>Q)IUWu*1ff%te8xDciKUd8S^C`6p4vcR!S~TrCye4* zG&h@nOSSuBeA#a)pQQKHf?NplHq?7?i1Bvv@{!P)hTBGMGmJD@?JwylM~~(fDP>ZF zP8Shz<=B4a$V<83&%*^)(_xz~V1nd{UKK{Z6uk^H7}63I75A_8Ib28PVDs2$RpfN^ zXA-cg;!m~uX0MvSFeWIy6XNvi}LE|5y&O#C0e!~kz3m-f2wz)j~#7viE!^3ruXsV#w!=3EYh%lgVdWH!nf3!f#YDN6Of zGMxL6T8|iX7|8bB5gz_fNR9U(@;Mb*Rd=ng9zHC>qe|d}hAY#&H6a2BPS)@RI3iS% zm6$fGWQ^L7wcU$`i708D9J)Ke;C0x}-h>kW^|@HqyvD54U)_hkW2VtT_HDAQz54+5 zIIg(fM@yq#zt1H=2zLt;y3E~Pd=SWGofS6o@zP`4Huf@$bL8BvP2ivSQ>ISbv`z5m z+M~ei4y1AJtuah_qMz4ZujvcCJS$&|vlK&)tt*nD6%uWoWb7u}ax;odzoZ`ont2bi zm)vZ*lBRTa_Tz`709^td>yghayIeM*F>!xscWNfbH`1c6&pYwXF9u9+W3fb)xQ!8s z=s5B%SUSwQcy^d8k%UKYZ}9%8Eo1G1Wj71;g5N&kLs@yUCdk@uE*8jgw47Bm>aH>c zd@;J{4xSGgus#K+n+v`GkDl38>hX$;C8=3{GrDxTB&Ann1$dwPtbWGaoUi`RNKG7i zd&?~G$0at(*czsmY~)T&t){8aNjiOb4nYKkR;XGLOfcz6*53+^jKjRhm z-&E@eHbYjm>_hZt0^qG+ct-ef2}y&7^9#y8PeplWNat8rt1OKIzfE&ayV} zuOL?YNZJ5DBOLM0KgEAP9C)ANP3(4lAJx1!;%m(pP7rd1#538p^!??+qU|uq7I&3* z1ptn`)*PR;7l(XBqw5-5c=yMCAF|hqCEbPYn{9OjsG#6Hkd%22NgpP4;OfcP14m|o9mQ_l_2g?M(lnW zt$C5z{g(=nZOPtS`JYtiKeMp$ZH4vrk>cGB>rb$`hR)_^f_r%_rj-jutsIIm!jf>u zXdSXM=sy(vIimOv;jV+H+xXK#zqqu~mI<``cxGGcd1il9UpORye5|uvNHEyTF79z$ zoDneL_9API0%xS50@GU)CB`1XQg9WR)cK$n8t<`DmZ;=N%Fg0 z*?A-H&-i~OkHGJO-ZK5Id=sgBFq6e|N#SiBwJmZTR6Ifppql~Oct1N1oMdLdN`Gr_ zh~Mz2{{Ut0A9##Q<;|q%H*!GT#Kt1A{{Z9cqPzqC2~%ya`11b%$KF2iXM}X02kV!& ziKB}>IDX_TLwn<^bz~fpc&!ikEf2&2;UCz}Z83jeYxtj7w6S%_1)+_N#Gj-;t$CE? z$wE~hn?Bzu!p1R;IHa!nCcg)^hvPqld?N>remq&(i6pv?)I|dWAW^t&RwsjzxUu)H zuf_KN0PwK?0BJke<8L$f;?my*m?+NGRSnMoj)UvySN1^C8c&G2r-`lvcI#}D-Ip$< ziz!6Mg##R9p2zJWQl1M17g5tHHt3 zb;(=E_Ynt9P1fLAbinZWi2ue`hIk zdGB<)sBLZyrOdFpML1C2Ly&($whspfoO@UAxOY`ii>>ilU)QPe)j4^eF30md@sHt# zv->psLGeb1<83=uJ}qgak_}C#W|`zWgUDHqSg|=Qa!*bVHNE>b{0!DUD}QKslg6{_ znh%5Z>o2k{uW@4(cDHdvcSyc_sSvOy@2)p7#^QQ@y!>YUgZvZmuKs@;PZnu*dfuVo z>*%g-(eCp;rp?LoTgl%JJ z?P3f5s&*0M?Ia*2NyIU!I8wlx^>AEiUmZALaP;|Se|}A*l3l-BY|jq24${L)Sc=l- zhuMni-*dyiY5xF--vNL0zW}a>;4K$gn_1B%cY|F<2^`LF8D!o`ln?>P`@N4*T%Usc zIVXU;C2iv^V#ip#(QXh3rqdM6u}L7u?;H?=YLd*Za56fu+g_FNFX5NNfA}Wvha>R+ z0En%uJZ=JXzZHB7_}zc;hr)KgA$=wr9UEM2 z!$s5Y1Xi#~7yvN`3euG-Pkx6L^-#wt(^yze(RlpGEjab*q1`8C;}^tLg{Jw2mFWyz*j^fZpUGB|r_ZbAmzhZ`fzy6dw^kZ2tfa zcu&Qeea*Z!6ExR0H;aarNQO})4cm4J>$nek{*Js6@CU>G717~_OAC9cqliY#f_@G7 zSHr&#>~Ab>;r`UOytX!x0hWeIS=HkNbG4CoZRwQ@K-SqW5 zJN5wo0D@!q+xFM-R6l36lS}ZtG6O!LBwG}xaUZYy$B#fy75lmSB>u(z4E>M%2Wg}D zZ%>78VvlUste?G<_vf!CpHun{{{Z2?!wnDNH-&#KbYBnY_WE|8YJm|VK)bLpla8jk z9+mOgrfXXpJI_e1mt*U4?5>s)Hjc9D#>Ts8)KOkp>4g+gKm`<0Km~qU{{X?te;FDN z3Vb;Db!&6wokHque*Q3eM-cL%C)<3F_^p1WSIXbE{{Z|Fcfh~5M~C zTge$x%9@3VM%~zDN#owUE8-9Q5HI7ug3Et3j-8_Tf)&XI%K1aKKiO-8xNsRnsm0BzRw1lKva}3k^on zDPg!VqKru}3PBPgHUjO!;Pc7WH5%CVu(W-xN|>z1E)(gcm6GUrXNGylAnZn z#MYBByLoLjCA$(jHpg^|RcSo1VP$_D;N`GRb6lP0?6u&V&lkg}X)|j69a~tu!*4!? zBF_tDSzCNBlEWAbRR$P>ahm!vU)kqH@vft7sd!)F$A$Gt6G2oK8nw~2T{_|jf`mgN z{L)Fcap0*e!ywikgW*3I`1Iemgzqfv*G;^#(wkO}>?7R8YOzA$PnZucEb@O0DF6U* zfmO|R?0YheX+|{ZS5|&YL(BYmqxhr8I-mCChljjL{er0tg_A6CUE(+*R9uC@&J?jD zBP@9}>%Z_%kB8b0ww@-}ruekK3w%kW!M{&PH`?85g}5rMoVI#x4P7sewZ9l?z9fTM zUk>V#_;hNsTTJa~n<%V=ZT^3g9K>yvoRa%j9ddeCqJGR4-VFGs;I9h!D_Zz7tXO#4 z#oD}oX7LTxxE9k1W#o5{o|Zqihl6yxAML;RM|CYaVg>KnzR{RmVnqqK4a9UOBe58+JY^b> z3hC0{PxvS3d2FduuNQw;;a@ZH`{38ae-8L_;g+^+WY)%+b!@gxs!yk|fR>Q9OR3Hd z!G^{N2a#V!{{X=(eh|s8e0I|HXl|`_O(Ni^x4X0<<8Y)F1&14f>ZdF?%`b_+;Evuj zlT`7Sggz8%RE00mF@5#tYv{{XY%Yo88oTHnXs1HXq~(p6AD+RP2P;UoCBCPv=< zJJ-`dQjwba{Cb(eJBnm*o01xR`?Q{PC1iJ9g$IWKr#GV>!UkrcvvS7_VVl)tE$Q6#582=LNdEwavG6a9t~^CG&A*5B zh`!0BGA4gmNQaA{4`A6)JE?5-udhF3f7z1L_GtKNXQcU&-fChcj(dd!F4Y(cx#SN2 z09x!m5_lba1>l=Y7LGWkT(hbS1tgP>E2fidXj_4|pQU|&4Dh8q9AS&ad)2jfeJ}o7 z9!_DHx~8N#!rLJJ-uUwr}n7-U-v2!vB8&4Q_P(L&f)_Y`UDtX0y8pF8xV_Xh8^$KjNZXT)^=pI1VqjT`%GKj|qn@|b@M`OCou zR}1l1;+Mm}+t>Df@hbRB;svjO{BZ?@nsl0tgND_u0yxYlp?vABq;Q}Z#zXP`Y#+s9Tr&QH0QCVPOIgZ?sl^(5}x#ZV2A{3lsDjxMs^y}uroTV1y zQ*FHui2nd$kN73$gZ}_$F9}?HVfef(_4}LYB)IVRhLS^e`poKCMAuGo%y*BLBf@`^ zmIVB@^H0X#+OOh2!`%~7@Ez}m@BAaEY7@zO5sLab4xJ2=ZeLg2V%K^B&wz@w*pD1owhz);fkgEKmMQ(PL$T{GG zKDGK2@KgQ{5%Kqk^es2TariG$)x1eCSRytp6zeN?+Rirt{_t!L{p;c{g};9Y{AK%X z{8EoY@Q#-=#dRY6vf(3iOTrlKxScY}Bp{!aeevAa?RWeWi~b2M;Xl~VK)2O(YkPfb z##10NT}v2YY_eVMV zKmNd;B>knlS*83&`0XOh@IOV{bk7bWv&Cs64rG;^nIy*>hyV^1RC0de()5d66HkWH z&Iqk-ZO}&)F(_1xM?e7LtmB$1;}WvvTOU;?cXzlBD58pBlfaM^e>AQ~_}4k&zk~i1 z@x8l4taxuh)T3jPE-Yh{pQ#zHmVhxpZ@Ket#LxI7zrZhwVVd*6I)0xsHsdaw?QGfn z4l(VD@SlkP0Pt?_!p{-SG~ONYCy6{Z&CF+~ZTpbSuQ&j&(!$_ws4 zEIum#0KpADE?@X+f9pxozAoEqdQ_2^($fAmh?T(@2Mx5~;~?h*jPqWv`xAc2{{SC6 z7x9z9c7GM*(De@p_!81q({3#mFEq-lvLNoiGq=s0xA!aWa=WPvVAfKirMVEm(}hoI z2G`Bo?j4>ghl#vFZ{cqaU+R}mBem0Qq`H}j;ZYQ^Kae#(f2DIJrkymfz}Heng_0E^ zT2eYFCxM=v*Pi&p;m?RZIQV*PH(t~(JTs%+JZ5V>Do}2&BMcd$l41x7_}ak$BoZ^; zoab#8=X_&*%D=JKhc2|gfm(j0sUs$>;>(HrL3|hx!b_OJYQ^J_Wb@wK4jz9N=<5IOi4W6xL0`x$&5PZ$?yaZe-QVr#?w3c0VuvCis3&g#I1y z@5OB+UbEJ`2$tg8#!^8Nt@fWY%Azl@Ba!CG^KFtQfBqA=5NqXMia!taG4kUT_b2=nTmA`E5A7M@B)9PXsjK*3 z!@7my%cu`eWcn?1SO|0EE5~(QIsCX=KxE;Ix}i zxeC{Me~*(GMUqzl7IFp)btBflKdG1EBL1&Jou}3GYr1{9+qv(oTrJNjU3Bm0d5`=P zqxLD&zh-|5Lu;qPWcy5I?=GZbT4!Pl6#f+q*iFKuZe}p#HQQ9e3<4D6D#3;s3t$auS00kre z0D?I9bN0*eMwjAU4Q=!v5G~3sqa;YGE}|#qVmfXE{GLJkixl0QSGPu_=}VfEFT=Jl{j_bwWwBSoaws5GT_MJWQ(1*Axa2q?wSdkF+VdItdo0qMP$(0dgD>Ai$1 zJ)wjEA>4fDoO{k)XPrOpz3Vs0&dOSuciwqs=G}YGv-jj~{%#%cKwVi)8Gwg}2T;Ym z0C!6OMZi5gy#KuaN5Ln=|4$(zAiyUiCL$*OkC2ewCnX^vBOxXxqaY)@PmU|Zq?A+? zjF@d;IZK);Nv|3+@r?Br^dVM0{{U4JVIP= z|I^|BQSk2J6A%*Nx9-dy_KE8e-Uqi#fBO;@clE0;-rhWgBo|~6nP*_x4Qd(PA-_Qta zYHsQ2?du;H92)*TIW;{qJ2$_u2;bP;+TPjyx3`ZxJv+ZZU81k9|APw;fdAiN{ZC~7 z8!l=bu6wvSARzt^F1&l*IKihTAbc!B^iW=h*wU5eiRc#+T7|@%nr>1KFav zJ*POF3;7>t{|(vyJ7B^8zmWY;VE+r(B7htp4>x)E)BriaEhabWDd7Jsr2PPv4CG$^n4BhN6Ca|1ntzL`260g{-m1iECMr$moy{TSS_7kmMzXNEcl!3;87#bBU+0-T# zn#VAXW1`ZsWv+vLO|-HiNBywEUhpJ+XU=;$q3Zn$!;_FO;9r$4;38EIsD8JXO|F0S z{!GqHy}7)P=ha78GN4{JXGeDex&YoW{#<=W4{+9s`iULJ&iNP zGWN%h_xki!S^)NjtJpgLq39hTc-m-T8JvZO)~jf*$Vwux;6WCAHxBG8_qw8Ih41ie zi>{Y$9SsBG1#oqPpxqAj&Wjc|eOaVvXt~+E50&B@2H1nQjtx}IVyX|i@jb)lDgOL% znI!knb-&`<&@?#HLPtXj?7^Jb4$UA@o@BRP7U9$BCU{K~IdZbSoYG)tF|99U5<0i; zgD&@+bU{lxLQQ=$dE&5g==4+UnWDMhnepHCmQ;-w&Qm*@gFephwA|dZ)W*PKz1cvC zs)vx*Q=CXm1T$np(cT@*s$iEiD)O^Z-bxm+^`MJ7nD3Q#oJKb5=OpFPfbG(PYg4wY zPmKsBtAyaCI4OuV@no&EHvB&HAw=5U{F2st-ftJ!la0`cXA0~Fvh5%lLYz*7q{Vz)VekG536h5BHxdVJCe#t$)KcnS zSITb&GC~Ar#qU?>X-|D@n87%T^A%W_FT~fI*a!N3i|ZlOi>%~a{QXI;Rlez-Y5GyQ z1StI4ut!FtCy=`qJK8>B@(fbE;Uk!8qs#ehhvIO51STD3T^|(kWN)LSxRf!Xxp~3# zLL`gQ8#VngZ^SD*+gb7Y$!#Rm35thZ1(6(K-mkaIzfBB{*PAT*AmkB=AdS)|K6O2< z-eUjd&jsa{tF1cn+;pB_+T@Clg%FpU*|!w5IwU=lf=xeONha+30RMZ*7XK(1uj*eF zmb3!5&a@CJ7+OO(+EHfXFT}G@fwBg^P(Y-L46+Tn1B@8mXJ>TFhX=jj***IiRY-B8 z3MRg+;`V3Ka%WXXd5WjsWEWilbtYa*<#s?W??pZR^?L z*Q_V~Rne==Xoht*#eR0dSqBd`Vhzp9=V`hQZ_e?Xt$Y9&c!?0)C?L@B$iYD%i-8=y z?;`Yz$B(odA>~lD`dSEi{U+8#b(d3hfl!Nqjc@B#+XU^5^o`9bhl#9YSPK+%N9HjT zonKYVq`)-Eotr`j?ls-NRFzZt^7{%gLPPv#&AIMi_m*R~=0|J|<=5Nk*4rvHa7wy! zGwX-*rd)(K{WbIAuv`BzH+IyW)xZI5qu+f~GW~HKKdKjP4xh3`;yDN*-G`DKCsR#R zShQ1B4_9u>COhHpiVm-kGz$I)z{B$Vw7(Yg&UO2bgcpOdm|TP9hhH`CMTPg#n}iQ` zM*79&&oOIew)g2Suk0IuSs&Od;;H_OZ_4Hk)k|~l36nTfq^&r#bg~6T?094&fxQ7S z0j8=Q=vbsg&V(Zr4xIh5XtXh9`nv%Z*-|B~!feg2wn!{H<8C%vzxK7|(@q9F)8N1e zDVSf#X4*IQ-PR)B*^Wx2cYa8Cl2Z2l`f_7y<8(TR7_F?VDf^Fa-((=CbVimkaw-@G-db4U3K6M>_Ny!7XUzdWUBot7)%qn>bU zWzqOq=AFhBP{tjABd)$wT|mbK6u25D6oj#@guF!Zpb8V4(^uK%H0YW?o#HW_C9@7D zP-+8$UnF=yGoY+CgxV6k6@CgQj25{X_U7-8ZcRGW(qJA&LgRB=rcBik zcYw@K`K8Iy$M?odI;HqkRY(nd4r0scG@t?0aWFs-+qIUr!F#f1mOuqYcs!%c2AD55{;(oELSi zG5LVj3!_n^H1Ci+z2lJ<0Acg-l4XU*Em8KwT#WQ*kMYA4BwuF!qL-4B!j5;cNl+1j z(;+XVDY(uj`)L=gRUw%l!U>HYdUJM1kZ|A=bF!;vyZnt0Ym-Cr-T~er8$t_`)Lfan zoVXcY*st^z`4^jps}LHeyj2U+#|u;bemHeNs+~SPr_>sdj!hg783_n+`FwVa(rCVs zy8{sX#F>{dG#GU>ApqgpC^_^1M$NiXb5;K_Xt@@`z#3L2BDQnnL{F6si&i8sKQP*` zNi03a_(tW6XGVYPWF_IUo2gWsxu~bxyEp4w)_6f@-K`L zQ^|%~VpIdDwDO2L0e1kWY&4H;gxrU<7}Vu#qsZD`qxY~oxt`GX2)dLxfdRDXm#n;; zi>f`zwvo;3!yGth5vV;a(5B&t8ajD=3jZBD>t@Yv1vGP!UyqryAr>zCnk^%cwRbpo zF}*SP!G6PXM230cLgg$HIfAOhEz3bD#hxE962d1v(Zf`A95`vyQk&AW=5&xWyvadCHu%JvU&SQS6|Z6u2AUP&26^89^4$H z-2u8eF0>cw`dh*Z;1O|o1?<&XrN5rPid3lW zyJ7uU-r{>@hJw;T7|`H#p@n$e2H1^3;)bT|zLbX?wfzZYj`QOba?#h;&gsTxd5nu( ztBiP|F-}!69gpmoYvPu=EjR;Ad;Oq`le_QKD$G_?&8shKE03mzXd3|z0Leq1WsuPSa~nwolMXy-CoX5})k37J1us&Dojz5ecSwLUmZe-l$3 zY7_hM6Qshovcz%AbZKZ+_t@;j0M8Z6G24-Wpo+uILe_2hMXZ=65*FMhZ~J7pP?JM2 zZR5WDlaZ}(ogGdpmxT5{wVEyAa;MjHXO}%7;#Cu$jaQ>qi#^u^QkkJYyh!{p)qRL(1RJIxx@oqf+!z*H^VsHrtWx#gjvWTH*u z;iX9(r1BoY<6I(1V_gMFVPbNUsv1wZ``|kOo7^WV(lxM2L&;2NY~M@G>B<~>hHOaU z6Jee|w%y(U;P-E4^aA}$=BsF^QOJM+V&126&0um1Tt;1R1gmSbH~KxR)1lu}d0$$n zo6;@E=x81}*S8ktf(B`2_rlV@W-r|Vkhpz{4zGM6)w9=6j2SaLlMLNc2nc^~&wY-J zVPhQ7F;rXmJqJrLfA2Va0Oo|u_`_in5==)Qt%UHuB}CG{;V=40*Y!c$bv8e2^UyB| zb|O7A_bB-Fc-6F_>E>D}b7v5LZu-s(xjGy38f|>vXqL@a8eUf}y)nXD5BV}CJnr8C z=nf=b3T8OE1{8met6nSzCyPB_0bHN0#a&zr@GCvjK}A-YTHH#Hho>+{RdFVFZUo{S zitb09>+My)`tvYi=#>)jMVAHpe4k1$S;uT8RcEmg9!rsJXgtRbum<%UvG4V6*>sey zzrBaQMuR0xO(#t88S4Z2A&v^D>{{I*hMM=LpPjL;14&fk&$aS*3AkVrw@74pnP}c^ zuli5D*yN@NC5!a#i$`-;WM+qAjD0J7THzLu47@V!B$i8$Ksz2j1^#MrP6FXww*Nl7MzH*R`TOU` zO_W6mI=r`0mT%%%{8oLIWr-z!fnT(8%k})$eVTbP#eUK|p$lUdWXgr^hQVTM&Tc z=&gasB=>8V87-l`R=Jz9-z8}aKArG&yxKN%Bg=9Vv8cg0lY}^ZYPl~*aWUK$fS4)# zlF~mqr2H&Q%i3Q3v@-nI?CEk*IC*}^nR9H%<2~GCb?)0>3JN>bL|SXbDa|bYJueVaJRcCbunnl3DB;-c4;OIUodKL za1~`kM_DdBHa?WR$;YO?Eh3Vu%?9udPwiEhAz|4V)OKw#5V(*%c)c>4R@m=}+tNQ! zbayPaZ`p2pS+vxLEO)Ry6E=D%)?h}*32)imt7epTRA(OxU4D2FV7z55V)Rmirozd_ z-ei9Q{k;EWW3sia?S}u(^phD+wb8$EDz1;YSMph`VF_EjrCTC+?wLzP=rmU7eQ~~6 zYk7p8Q9DlKBV zQ29BvWhPK1Q7__Yi3EvVqirqvve&vV`+o*gwy!C^HI*Pfnw3(6wVn4VZdV?c%R9?nUxgTEg$jg=z#2Z-Qza`rhJ^NM$;|nUj5LX6iH8 zi&!;Tep8$<@X_6uy!xSB>vmpd%m}l{*z8hrqM2xsx%;R2$kS&^{q}jzwr92uygKPd zzjb!(3vc#Xu7FdQJ^pO$bMS$$9$c`OruK+{9~<~o?A@^JvoSEw=1DIb&!8NoXJ|Vt z6w<23Y5PcstRU{BP?X9V6rEiYk6~rm5L&qDakaA$m>er{rXuCk@lBvvX>>M-NFF9L zR@-_yTv>%GzXOEC2+HzcS zxoevAS+IGOb%rH0s+2EK&UF~_9QTA3`XpmXYi>Rrn3$Jj^noZOY{SkB5y)>;b>sY> zKQ=X3V=FCaQ*Nq~f3gbS7Tspb*#n8NGo57OYs@}CW7w>Rj2a$!Hh*L72l}v&Hxs{` zyA8HHw;pJp_QDTjG*Ca#?OcsH6()-Z?2np!xjS08tPQ&zAbH!2j7(hs%GXt{w{e}| z?1(jl=311Y1usImfV&w^*NGjSu}YQVn7qhs`u+0xC~c;KT2L=>@$b1Qs~29>Ib_1n zj+pm18oSGgVp~1bWC_X~%rPX;&_&>!Eh}_&9 z$N8@|ong#r(HP5;!GeD+CQjaR;>l7sH3RL&OTX|Bx(I?Od!jJrw>h2bhtcu(eM-R~ ze2B=DlQ??G!TsR*sd#P7#j^)^ff*SGrrCAQ7`8NcJk7zo1u za9%|pR0J!CcpeeR6*wnsXCZd#!7~2f^B(J1LauVn$YX&gEyWMhxFXzS&#VCyc}F06 zoG0=EONWl`7PV^(WXBG-o;J#t^oz%OvWDa}+wfv82tJ_t0}^p&iWP_Ty`5ZrRhUyl z0NLCj^Gx+~YJuF)R8qem9|qlCuK<(x! zP|~V`) zhRJbQskAkG?yz?=KE{G~T0mN&ps@g4XeN_C=NM7Jk;oXk3U)oI|9Hw*jV!{@^lr=r ziH}5&#IjEr!1UMZG+SuYe^I&=k*^^hfKi=T(%u^&8q|9SAmZoL@WGB0WLGafdAe&Q z^h3+pv=~XCQf9FlB$;-jW#|=yjDi{3Na-Xs9n>z3k^)PZoP~1A~I2 zqDJ_;DK#UfoOEeG#us?_(>1~OUkIo#=#D=KUx+#IpuXDL!*T$b0?6?j{3qI{Kz6QA5}h-C>2i{Gyz!v1BJjQ8JQ^Vgo(nW^G| zP5m;xjVAhA!|%;|Z^JN7{3?ROlFZN|*kBk3?dM1j3%4-aE3$czo(?vJNfjuT^hufuU zm3F6QARj?BJO-}kX7&z&hwgZnVLryh#2r)y7*=$1E<_*69$kP=-_)LR5;%6+0zYrK z14P;s3H;{uoqXyVsrV^g$?{VDfo4F-jacCHD$8xT^ka#bSrn?}+=cN%hJKf_HV2-G zcLy-09@omtIn*8pvURSfrm;UlFBBMIUfIoQBMEydR-!rHUNc&srVI+kj!oZm#kKmf z%bNG;Ci^;h`n-=l;&Z+O5RX@ttVRFU1+%1?cx<=%K`m7HZp3lB^6A?QsDmRX2H25A zMZNsif=|Z{_Soa>(PB$*(eU=rFSf6#ThnL-5zfngQ9kks!kL&{$BGb^!!oM@YX69o-lx>Pu^!BuViWgxfGCW`7F{ zXx?YI>FLCi_C^XiGlF$Tytsqa7&B`rI&VKO{(M;{r6wkO(3iagW694LPN?DHgx4Lt z5!H9{Ef}f;bg^{tJLK{N?uiGWi6RUO%f_h5CQ1kC9d<$W zV$sf|?YX4?9U#={$*UmLpVwHa6Qk+a2G-|t8vk;m`lfL<1Mt734r90x4J7cfem5(j z)?b-Xur%!LE~2|?W>@fi{hk&;8ld)z>iZpFy#m<4o`&E-`8OeMr&oEWB!rmyP_xX1 zi5(<|`O3<-+dV(~TeC7>J0wU|_0u5*i={P+Kfg>`Jh+C2Uf??xey&xoJd@6dsg+Jl zsuSk?Koeuz?hnJz5u=)BWMweQGsn_0rTc+$2*YTh{J-ZK#?xIb8Y5&xr(Tw6j7(~H zJe)N+8vMu`x7%Wx<99e8;+S$g*D!L-r#4sdL`8okXp0pMit%O@V#1Hvn1ABug+UXMnCVsnY{#QRi7;O!4->Emx5JBV%$x# z$z|m}uaQF37psCXmZd&{*G%`t)BW3?HUZB@wFZYb$*EYc=f1Bf!^Rs=_xES-m^14?@S3e|` z>b@zB>7{Pn>h1|fDRcYEfsAx<i`kN-s}Eu67dz6`_F!i zBl2oamv`e+B4txBdp@=(WU|h5P7~55(Veo4k#}(}Tu^q<-Gvf5*L4-FlVrM0{qrmx z1$K_;0N&Gz?HY0X zo!Iw=XlGeA!`?^^QM@?Y+Kh*9DA(l;A!lC(`0@^PVth;Y)@rY^<@CZ2e%IxFz1>{l zOizI=ovAg(|0Uxa4aCRJ1Ih0I_L(wH($t$WROVK)V7uMZ<2;ld=%Jv@Y&)OC1e3Bx zy5K(~Sf@l?i_U6ePPrVXrAo!fp5_LTT_t15@Np!;He&54e*I<;{6e{Y;`-~^5BG+d z>-@Z54(sPmQdNcj3iGF0mVYRz8E0q9)!H68@*EnH2NI(*pD$dFqC8rDC^cujF^}pJ zxxXXIdmNLXraO|LT2&-%c@u~cM`VX?&B!%wHouP;VqjN4$MPh9u4*3N)y2-O)f9zw zem=QpF~4ts3yq3%i*QbC^Dx3eoowIT+S~aMil{4`j}?F}!?8877ZsBhAUok9ueW`} zDCyIj8%K`gPQYdNL8V@5Pdmtxw=K=j9JJM7aN0cn-MUC2yFve|qCFc!HM9p^FI$6o zW!#uS^y6f>H&|kM$BvE*+TKPKeXmL_p?CcjON0+>Gs?;gSVCza7<%NQI_qKFkHr!ut5wtlu^#Yqg})r9b%%$vAN9vr@fI;WDCgc%Wh> z2C~dRl!HHT1a-f6DbYL=aQt)G3frqWZ4QJ!wc3v9o6`N-KDX7@$+LXW>Cic^^8Plx z!B;{9C}w~NSUPN+zPDrgaG_7kI_D4=v^p4d5Xgv~pT!EGec>R2gGGnMWo8o%XIHiZ z(#joO{jXs*9KO1tlMKXub%ov}!`CM$&~33a&&@~l6MrG@SsArorx%Wt2M?W;3FzP6 z0m>t;<5VE*;GPrcdSV)o8OP@@Ia6Vz+LE;IFRSfZ{G_>!`Mo9%=20l?UQ5zD#*9W? zwQ>6%Z6KH?UHbG))C6#wZw$(|Q%^uYzs4B6TOhL;P_;BNbb1H)nq5cVid;f9P3gg< z4NU^mCsn+`rS=6|)Bvv+F*Rei3xq78OcX&RRV%=S6Vzu!_MtNZrA>o|=}m1+ALWSc zGdJeE9Hht!M6S-W#4D_5D*;?B1WKUYQf(}_rG11Zc17ZMVFhK0k=h}T0t^jit9Av7 z4tQxvA2-KFvV2@80!q1&F1rwq%CU6X-}<9&8vjDn0(io=8}$7vs1(H1JmE(ak6#H& zWUA8Xz2Xyj&~Ar$dx=*VsH*3xN>!;Tq$@=2a-cSV9%y=k} zvF$msv&Z!yi(%&ROnvkBTy5ssFph(2)>iBVq>Y#pt?R+m;4_UWA; zr>kzH0c!bD@OrYI3(<{)_48&O)~D_6#HFLXseC`jEk-@9?EU_K8%w^eH8dXshW6z+ ziUZ9f(U{_U54~v-nyjt+Tl1^!qvdMZ@W*)j3o^7(msE=(s03WVE&E(HF~EtM=HJ)6GpoWY|h=n5V**zYJBxKho?M z1_Q2>NnV%?-T-;ut9E?yhmy-{XsKlY+MF4{GhRB$(G!Mhx$?&DG#8LXu?MAo#E>(BBob_;^^EnURCK}t4k z9?6dPoAA>pQFNs7|1c^)&I5M1iaV5-H@zVExJz(R*{g}uDL`@vPqZ0Q!zXy`^vYmk zdA@%qTEo^^aOLeMvL8H-r{uMm(l*RYH%0|Xem!%Pl}H>R5zpWQ?QQItdb z?b5;Q%h?d{i^fEPP$$l&)3)i*jmI+@C1&fjK`yF8zB&Af}!bstNEw)Z(ATljgRl-}`fB9S@D9JcGG>wwAs}k8>V(e=mR6o8-;P z-Ug!%$$O?(RIqko<0Jj)+iugMxGUY<%NS1$kCT}|Ajc3hLzF-{u{51inZ@4CL%Yk> z`;N{V+*#@7V->l>M2R^|Z-*uRw1iHD>QS`vIlD9i67C)Ilk$D(+Lx<~@2lW=H+lF8 z(U$&=d842|wZQfV|5mWtr#PvVF>)PP(or*l&PD5`;S`iqmKkL1L!%hp<5w98U(t}C zR+>#L{#?zm{Mj&PI1-@s<~t%GPmew8=rg9uKCOq?dm46EHJbxdT`ft$ad9 zH3z6oXC{{&mnJ4%I$?JwFYB(DY~kM)Kf3N`G0asu9y=C!HHPcer>V_8_E=PpWC-O| z1yn0ZTSiv>k|l!T=!sW>W1=cW2kvG*X)2*n`4;?oqcPG&JK)rcb9_%_?TMpUItV@N+v*^*y_bCfggMc+HPiwjtx7gaXZCIGK^-n*Fg zbq6~-DK}+PSJ(D@ZArJzN{VSmN{8N*Oas^?wUpeeN2MJ5o>>p&SkV9*&)J(8*mNfs zFSQmPp;MW`eh{RFaA*6kU;`V0nYIY&aKpPqo}2r8nV*pk zo6}WRQx(dSqtd58pFCx6;*kLm%r+EOfdl;A9Vz<6%#2e^BPM#qxx!vsE^%b}>-?#* zG+x|}I_q2%LOI}U;St+yG>~G^sYo(&7R6|_h>gd!o1G-gRFY&fMv=eKdF9*3=L{$h*zk>Ec$c+9%$a>oEszJ`Xt-53r&VWm2|I!0RAB z9Lb($Ct07{@hZcyco_S@$G7FyZCMf_J$xC>6`S$&&-qzG;__tPDh8{VH;+$!T2?!R zAJ%xMq_uK&=0U4gA*;_H@01(~&#E0~t(E{8a3+lpXZ?P%zq~E#;M}v|tbUmm?!hK0 z{{+-C?r_OB5#btKotU6)xP`ac>5sh^IKB$J&4RG8C+C{x4!u_z9e!PFR=t<4#PmX^ z>r#qG1uoZpdw(7FHD{upMZCTthN3TEPnB^PLj+(1c+gE7Mt|SriK)7XDgk}kinqoK ziKCCN2`{^ldjVZ0aQ1lY z%F+3+F_`&N{iM8X-iIWPVMqRbJPqTm_v2|}!ZL)AFw2M%g-(f2KC)#w7Yl*xsZZj$ zcx9jj*pbvIbyAq3rbrP{+ca`cG7%|rcVs6v85y8B{&LS#i zGc36?+-jEXQloiLvhnUBMjO?2UyRysHwI%*8{ef4^Q(H@>fc7oIYB7{XR}zqJ_{b> z^!5=9x|24RyIsn(bpXi{0SptD|Mgr&=zzbrmnqgZEu!aC(8uwL{YZ({&~<=LyN~@* z4WcsKx8$?oyZJrTgNFY8zR|`P);g&+GC}t$4Y$TI3>jFm5TZy+Uj(ejFZ^02588LU zv#O20O7Sxdewhnw-|q$XjzqOq=O4x=cdj>dBJ?$~7fmo+AxFQ@ z?U$hecL1fXLp4m}%!R$gt7gu`Xz{N}Y859DS&|w3i+#!Jf0i;hY0Q5A8b6mHT$zA$pQ^sFOfLX z;-aouRe4c0osH%MVjd0%Eyiz9v@LGwDZ+u2BZR1;r*8vFQZ7}Tit40@d5Yg@7eel1 zNsn$A4uEVOod2#VlRu%#j+B-3e`h8<+Rk@hc(3>{pzQkj?GHIyO)8W*`c(m1MKS(T z(!OJ7J$}_zK^we3GHXe z(l7G>K$*UdS=j%c)<8Vmi7;GSz=ddz=gOT^do$Mc8LQARI# zCF~Un#Fy&R44ukAidRF;Ng5O?hoh+I==cum@H7^hvF-QL6u&$-EBwMkFs`-*5ZOtO zOc8Pa@T;vEh+LIA|CB+qb!yV9Fd|_E0{t^461?zNWf$S7NSyH$gh--WY}zLDZtm-T zP=DC^P2}9Ow;1&*ya7UW^9I^Y*TDf{ZtiTGay0BS(e0bJ0ZF;|jGZ$v;tm@S&$auw z{zkqq>6lH|GdI+`*oOop@4nD3+1TcnP91ghY%Ke9$?l6-f~Q8pGyOG_)_VQsLN3PX zl*CM*e6~5N;CKD8L;kbp&ywTJW%Z-sdi+uE4$0f^5U$Nw1C|Qi0gXK?#~tP5Praa{rh+Y#|4cG<|m^7QPckrpKk9l_WDMybY?eCsvZtJp;Ayao%RX3NH z@n1U`+O&~)m5vwMp|XOA6;y^@8cesJ)35L+;`k~**r@ij7|=*Bs!%fg4?OKwz;L)M z9+0*J!%&T$k^Ly=4fssQb6mkS+R~A}x|aRp?4)mPe)dEQ>DZR8bkW`y>muE1dU;AS z;!S2HS~R5dy`;DFnU&ve*2WtAG8`gbUS^*@mRx4n!7%kcZ{k=WN3DuGOkU)NiDE=< zQ#K^a=jnjBQWxu-4iePocl!gGKbtPS7@FB%Q4kj|&1@EKQ2%&4X&=eqAiEMQT*_gc zO!F{hxAUGfAN&r$?sKM(G^p|Yg)Wjun5Ua{dw6gZt=SLUJ8YyOzp@>D70&xdb%4sR z7rv)=d-%SpGwGHBX*_HF-O@6w%HF)p*a>s=@nXVrxf9NGAxDcbZmjv+AjIHfXr83! z8j!Q^r#EVIs+Q(o!x4O=_+a4O*n7Z>M>eJ0(YSlZVtHqz4NI34oq=CZR3{t2EQ3={ z58}C=vH21O6MkUJQF>pO>t9O zq~aJa=%eM;PWhK|c`$$DU>N2bO3q(IRHSRx;$b+mifY~a=f@KrNVklg1+ra47t9E4 zBF3T#3$uUO7qF#H?i(fUguStmYf}!0dml;QI7U0CS&1`~Qqml_V=j$pCH9in-yBNW zCuh&z(cs7;#*Xut@A%*knb8Bpftc*Wv>TfR3=5b-u0K_>)j{Z3g0_wRQ>7sL7Ayl5 znG$WOL2p3PM=!OG2U3STLVwA{s7%YQz&nA)Q0pb>Fc$xV$9#Ka7|}=t#LH^(cdQ}t z7Jerb(drF^zOaT1j6XZQC;Q{y4AcAS?{eslPuEiRz$>2qt%u_gP_W!WXa5>0Mlt_0 z12bh<2Me;iP=NcsR7{tuFu4;86>WGW@yHx;)QujN6ozAuGLcB+xtq`L)3aV#I#@&4 zK6YSDHx*uGonm(Xy+hEKa6uxMCN|YlxdxSP9|#z+rreP=hRYbn{>_qk)wLPIc`1n2 z_%h~IbH>H#`7V#KKd=%)g9yySd6979&~q6Rtht{4q{one({a9({kA?{B*)s7VL@p3 zbg2KCf1}o_v-_@l++&}%+RT^VHpjhwre9`O*al!Sj(ylOas5Lfi4Si|%|H+ubYvOY zizQOCFAF%A*+3y^$eG%E_QY1k^v|G!p;7^ME|4Fs!|w&9ZzCl`u0{tvuPdS&6bjzg|wf;cR=x5#T=axHL?S(O1!Kw@ll;YfDv|K0VKO?9eDT&KA zhW3vVwmmOZ34o8^du6d)O<*d$zhBXezKZ^SG|hgh?)R)p25pZ_?q_G6s?Pu&MLraw z_bD{DHJ=_~?B8;&A>wjwvz9fBam7#<@1?Ih2NGc9XT^s+s;Jg9^3fTnV05cs>xO{x z+BS|Ng!ZOpS;8WC@Vxn~SxHV4s;h&rVxflKCcSM0Gy zp&F@fj@42E(VI#)ZHcp)-De|qLxj+0`)g@fX<=#jChRi4&mrV??{#caGA z$I8@QbNF^o<9wh$g10;!zNBL|{z_zW3o)%3%~i}ZlM_%@`F#}pZ%wSxGgWmRd$hYKOJJc8@j~Pf9=5ztefFBt?(aY=kh;N*ir0| zd9JB!wD@!y@r%yWqDy(VO5&Utm#4f0#(hxNf11wzQ(ZURhD-YUgpZ^ZkU4Qy&E_e2MJW9Y-WZrtn!-H(obFkX|4uqxJ5>Ca37-#t-q_6wSf@Ej zVX{NL5;b<;`Wg@2j&N2-cf(7{JxP$Z8X(MHYcL4nT;<+$O${B0)9pJ|q z|6IwYkl4H0^aIVtiI6L0`!mmckv?aM18(n?5$^3MS}DNCO=20I9%ojcjP>|FHtt=m zmZmAs3U1uFkgu*`DG}@a+mM>bVH?{lD=#;x?yAS(3Nx|<;F3~1)ZuL7Sw1}~@mZ6R zZQ@qg?3j>PM%k`@>V|y~AG;67y>@@NU}6#G{lrnjrwPwk?Vf5Jg<&I*k}RIaJbLhA zsla$7$jM2Nl|I$EmGwh%P;S$|zhy^y`6mojiAxb>YLmAcbw}60S|~z0eko}VHHvoR z`jhTBkX^nfuw@a-?Qcx7DYEQH$_Mo+)Mx*Sx~6Y4L^0p~6olH2e|5!qF{blN=pr-f z<$W&{$1T;{9)h^v%U)pw?_&eJlHAmIOi_ckeMnzQjM|B3tEUnNM(yJg!DKzbtvA#6gjH`t9jOkO1cqG%gYGQ_Mu zZw%QGxKPIGvl-l}LXUp25KuD+p`?xG;cBB^z^Ef7vto<(j$+9c?Yhr)h%-X4zo|nn z9J1j%ID2gN`Dp$cge7&nAzHu=14$pxcxt@ZL>5K-QfcK1bdWw;6j0>>Z!^ z^v zpqhUCnkqH3C*YC|02H2$Wlpil(KN5)oyk$B^khqth2?gb;4Zg@c56e#aBY#J9scCb zsUT;Q8DBQW)qYa_C-`Vw;J)iz3J-COobF_amd6%c!X{k3oL5PUau1h3XPo}O66kbZ zvwI>zsCQ^6vXF_W9o{Z$pFg$-*XA}Dzl_@S#*i?hH#g-l)NCFa{;i#%*O*0r)m8f` zuBWMIjXo4Ke6M$xOM$3xlUwrKx|A0q9$s*FRxPI0n8nk7w+4SOk8kTcKZ4>6RwcsU zAyX=L@)sc@rUfhILadPwA$h;a`%Ui;JXE}Vy^d!l7a=Y0x^Y6ZhIRtdf(=~x4Ne5J zOUj*#+Y+8F*FMt`4|nC{?dTGAb9s&ZD#0eXW?1L%U*_XfvBhY&9rIH7k~jn;i-F>X z<^zTYeQUSo@YnJDAeWL879)C3%e|(>6Z^2uFfnrYYPmqmQOemXU<|*H84=2B6y@3= z7uwG`3tK3Y>%sugU)H0?2~Dqp_a{&JO1R=yRU_Fg6=VAu@6olCxv|u|$e#}HwS(H4 z8XbkTb<)$nKZ7wTFF?ARB%z*LSH1(X4p@n68DuAx#B$R)?7Dt&F6g3v_Gt5yS9SB6 zOB!C_Mhi__=sKVPLCoq3;>5V44L5{{eS$UQ*nHS!*k7zFTpA>ZCk}G#?$|4H-rsrk zdufpCy$anKUF}b0re?Pl-_L;s>=IqOS}`(p(IKsM@0^GG|6$*r%E-Z2J1Js2^2@-k zs4{#=3IFd}aU;jW(mr}J2F^H~hTAd#VmM(Plp$kNAE)bAOzny6Z2i6Gd%tuO6L|dt zPgS%La82!m_gXv}t>~j*+iw5MVDPW>`->ljO;$v7Di1#-w4s32utQ&5^iDBQ5FI?G z{lIij)IK%azAN@)>cQtD)eVD3j)14*AH*yiU($HeKK9SH1Vz~C^-NdABzfdH>e`nb zdDdM4e`O<7JJCGxU&T*IAadvm@P?ye|3i7OM0c=%FlyGj{9a0&U}Ej3TEFDRP9;fK z3-=o??D(u)?d9PuypwQmKO4#0sN;5U2N0-a*}*+i^l}MwdvwmC z2GYIanG|0usNtMUMV?o*`ge6Vdv0pfzVy^MMC0bAUHa^|MwbCcOOfv%=hf>Ypy4jN zZ1Keso2&e{-)tu!=5RK@wYN3X+z9?OhAj4Kj|KZ8bJf<5-;cJx2Wyus0tQX4;}R;B zd_8N^MIqC-bK9qTr!vgGnRaE`s}|7RGdU3;ie$=Tg#kVu>?G(^-o}!H-ZJ0|^ilL~GV6pu)Z& zG$p6r);hL;tqTM}@I|NoTx-s64Ok3(CZz1AQ}SZq%rG9>32Hgn!3F$qT!ayVD0BTl za@x7#oV3BXO{Zd&BPH3$GVH0bn=zTPS=`Ok3s%Ec2>WfD1l5B@A1^kGo@W>1Ea)%r zx;pK1pZWlCT9BxU6z&fND2Y&<wNPMEWDD}Rd*5F$DK~357#QU6Q8WX zxD=Mvy_^_7?pFURGNn--epT^*k@c2gO}}saH;Rfh(mj+?8kCNSN=qsoQ)$Ksk%pll z-5{WVOhh^+-Hb-MTY-)4(SwbB@6Ye}ANO(G@dTa#4|ZLg*Ll6K_xp8%k;7l7yU?YV z;8`M9{xMin>Gsh@C+glQG+sw{`o6UamwAm@h1=aw#l{b{f>#MfTN%4kvipx2T^dLo}+c;^l_IU?`_kM$iA|A;R_iR5QR ze!@LQW(!?PFwtNA?*6ccb$8~vO`P6-P5gVP{_p@L70sI9hb#xLe1TLWB3E$6`F>aK zr{zX+%P%L&-i~if)Pzu5s{8n}2e-59|^xxIlm&$LJu;8OdEW5280@QN(4 zqv3YP{VU1Iy)HoV>|V*wl9Kq6A8#I>-fY17yGk4fWw~$p*gk%QdGMuvzHLK4kr130 zB!bl|#pvI2F=6LIOGW!YfOt1a%jW{2YF3N7p*l- zDzW@Jti+Cd9j@tdZ@%OIbamv*$KhG01ytAQ1O)3DLSPCbvP8zasochqy*9-99PBQVOtfHs*G?GBCNF<*G?~@+U zPrCv3L)z^?F>lNA&#=UzczxYtx~Hc%5?!vBu!oVZLHxPq+X1jL84EaqVsWv9eqYnp zFx)`-V+Gl{*>zS;$h_mqK^7Xu&+C6*mH%u`w>;28V`%d_XF%~G>C|k#DZ!LXN*!BQ>WiISQPe2MWv;ZA z&qn`Plx|I>ZA*W%ZlC1!P5)q$j3a7*sJAVnFjKv{Ouxe|RwJd0U!Rc{wH`{e_ZA!y z5O}&|KXUNwZEUFLrxR)*o!XnBa-;T0BTB6N?bMTIC}YC;IEL1n?|p>Xn3zQR<)xh% z#hW6b?oVd_k+6q2i-Iw-UCn{tY81`IbJKPHSa7Vm-;S@kmDry^Co%CKN!>i(!~OQF zE6==)!JQoi?f!wQ<;myk>-(NZSA%Xx&4%0VGQNl^NU!&pikLG?CT)zgd*sqXyo(09 z+=fUuL*)5xcMrVqP1CG=m9JF2@diZB;npm$9U1D06ks%J5z<-ZoC0z7z#YDbqSl_6 zFq*j-P%ePnI5@s8XUw`wm`!%q-S>{lES=F(A!sDp84R4A^1ce*AwaDJGzJ6*gQ5 zMmo%5w@C$2(z)|GHp=)9cV7{K+RgAOh#?3#NJDuDvbcl`-yD|A-OkMLiL|#=3A`Qw zp|8Ud9jL8F2@GLG@<&C)Kj4~zTuiImj^bjlO8?JEzW5A!Edj#>#*^B|{gi_=!iQIq zR#hG2U#9gS{@%)&L8@Q7D3$0-uCq^_fqsYTi6G<7!-~A#|EEJm7~*uk5JS9TU4zAQ zWAZ#qc5Yl$ko6*}3o4)i{kU z^iKaJW)MvAk~V(sy$ZC^Z>wwDrdv2{-{)}B7l?ikS9#2N$c{W(sdki?C;bF@;vDk3 zH*#eW8471>fX0SI05XNQwSEtgH;^cBq*ttP_~}_<8`J!&oV;}|;nVps&3wzWx1qEF z-GJMBSiD;ck9V3+qYxw||4XN=x@Ma8O1MOjYJUdDto*Xx~ zU-|Z^{t6PC@D^xtkAc*f#z{lVRS)Wg{q(zL4wYhJ=t3L*ZP55H+!&FxY$DsIMI-Lv zRPfzL7Fvb4=XkeW^ycS%z8j9S2M+`uaapTxykg{|N^F(fYz^)JTqyGq(7@f{=Pw%Y zDuv!o0~dJTzv?o3PCx%4M3iiu7RM@;{gH@6ust;heHaVBXBG0cABtWMJ%&J=XkwwD zuM6ML7UY~al>kxUdIyeSo>*oF2s2do*t=H#_4c| z4Nr(dgeDTTER)*8MCZLu>-YNr<6+?WeH=p(uGu1m4JlKjU>v40GbQG;CRk)Ro%Ngh z7b&5RxDZmShr$~ZpffG6kdWbE|02E7#?hDOhVxHJNaRRvEVP>SZsz#AN7Y7)9c-k1 z%hBSjdofxf-{E?LjcbNR~<;@$6nZi|UD zNFT+pM4bZaQRNd~(7exaf!f&sfK_=0Ze%;#nFDn~&)n_b&lLOGS<9Wht@^IUR^erU zl)f$uaY>|r55RAxS|0H)IV3~&EP_N(&M0rA?uYMg{!FmYxKH=K+Y=!PECGNtdU1-H zC+#va+m_j_@asjh*xi&(rgNhXuq=WNY#tz$v3VuoWM}JlKLXMnS?yP`?|DvkO@9S<64kIV_p?7WUVSgQrrqb#KSv!W3llw!j7PbK9}OSmBdxcudh?4lzSfrZEc*+jxqW(I zS}P^XjBa-@lEOSqm@`E1;<^ywU4ry3Xv zP>ZFOI#*{EBg64S_2UvGy!W>syqBWo%_hxWQO(;P4rKlTBQCoYdUf&YFw%5;?9=fg z$#_;)lXvUOabOKe7nS>CHH+R82ltnY<|LP8zKf|EtM9H=Gt?ROgLu9AGkQTa%wa&y zi)iDT_yB06Tbbaf7O^uYbkoPZ69>C6!PMO?Y`C4i~9ZBjUC5dX2mLKN6`X{d1Mn z@_#O4+q-L7GMNuIIffglRNe%T=B!YyC0gKxiRAWpwIF$%^if_HwA^ARz&+;du3$^` z?8Lc_Tp9ZH(oeBxQs2v1wevyFpl)iv#wC^%v3y^D*@MM;gq`=g@nTW&n9Yt2kmW;o zUA_3(76P!RR&wEF*HxnKHUD_cDzmyXY|;>guwW+lLn-YLwl zHQ5PKeQmlD9Xc^O(m4mD947> z#i6HOYXA+o153UEw_)fC6+jj3d6ns zwR6=e{CfO*^kqpU?-3(+8mB!)$>|0nPs3J?WX(`@jL|Uj{}1#l2}lTsmI`10WL#3;`<`BkIeH2YXv+3HO7c=PnI`{Q^*OrpO=>2q(P#MjEEMIX zXepDNAvd##lt;j)Xc@9lkE!-!=v4TEz#@Zq6@^$A$;)i0O05vahG}u!^KRuGdf9Ip z-;~9E$(J1#^zqXtFafweFO2wN->ULPxwlBV0(HSIOz@=^*w@}Y=LYYgBIw&<U6-_GP;2mGok7`F4w?gNT?R@hN~nFb`p76$B>rY@iQA^Bd{F7FdKK+zKgK2&<*bn3WcYz2s zF0CyRzz(j7s01wI$e)0QeWy(6aRHyy5}m*ll1XB={#H<*vQI(`t?GfUuGaff3dzPT z8(M5c)(VKy`ARGi%9Zdfzde0sOkKq+Ssfq)?dE80)D%^OV0?SPGz3l+W=9C58X5&jD;lnf#C!H@8xMCv`Czy*^z7y zBFYEA8acXqxfj0-w~ME$3rPE1@&~KXTf%#+MQ;L#lyCGqfBq6j(q9I7dIwJl<1o0v}0?~_yd*4LtY#G!)t$qQeC69N|=h+?5+zmQbG&yB(fiR2KiqnZy?_^?= zx%a~&8lo8DO71oHzh)Ib?#&8a;WW*v5kg5-+VdU;0ARORF~U9n>pZA8SMf*tmTA)n zwH@Q}4h^gSNGNZTlg53r!UZj~DiHte2G5>Vj#~=nDR6f-LwTb7ry^V{byXzRMByRh2OV&nk%ypmG=W(~?_X1Mo%aEK@{gOnz zB1hb*+tcA?638}+tF~Oe0?C8zjV`viYoW!Jf17xK8ScM@<@#OPOiIETkb={FvM+Oj zXVIvun|%_=d~Bg^pK>g^_W&BKGepVwTU*MPhvG9yc%Sr{*~4Z>c7n-!91FI6+8)H-w5u6P*}eBT+$2r@GD`Wz>Tk9l*dTfl zOzJ14e1~{-XyD|=zOJO=Xf9Gy_ePfdkM*98P<;}}B}vxncxLHSAr8_Gf1KVss?~%o z_%V6cJMdDbc^mZby5|SwajDGT5nq*=RaU-L+{mFuWBufZeb95_Xv3s2x}ljx#bf#g ztp7d-qZ`Sp2S}n#t0w5I>6P$n_^akp$D8U;4#;;_*E?ffcS^Igt|#Q4a=LYuqAg-n88$5dS+<=1)Q6~U#08k4z|SPtzBwD{iW5ovD* zOS)(4o~`C&E=~OXFByr$>ZG35eU&yWN`!*8fF(MyX+9*E@G{s%{L_Ma2P6VTLr?_L z?^>8)xOm-Q5iHG{#60G1j{H6C2wxIM&+BqQtq1Ar=Gk6mbG0~L zT_E4%nD9z{tAN8rxWbD6tS;ZXXppIF(BoZ<+yi5>?~!67mf3G^T@3rF{K`;p2=gon z&M~d8e0HL>R;d~;S|hO{xf-_6hQvKaUqjL9@wU`G8L_p)!s_F&577|_ThaB_xIgi} z{))Zdf_tIg7~3X4M|pjOlJ})^&Rpx|&<^CqcFWJ2#+fX+&SNbI`Z!&_aU2BW*j;{S ziM8uRT~p-34_{@2qD&E=&9_X;evU+nZ}^u0V=`rCx3>vUZqxF6RwBEb9)|53bTDY~ ziY(GSzGWguzqZ;ay#Z&qM#7nJy{m&01n(bK)Qy9Gqdxve(pI^<)QIHTFYK49X;TT8%qh@cO$HcQJ`-|bl*SJi^V)?iE58KjH zt3zT`@^St^EM6E_)%6aShhC2KR$CP>v>CQr3+B{r!M|%=M2`|Uov|6+LZujSN?cc0 zm1Kt#GY8J}$W$HZfrWu+0k~=-wR9WE{@W5>OnOshnbP$YTFnoLKXC9hB#p8#u%l+% zZ|~TGh8=B&AEmPA@N*74p}7m@@?QCG8XV#e5KDA3@#~?qy)7;zh4r zDc3%>*f_^mDWie1Lv0p^JHfST#xrM&AZlkXh>K}@Q*eC4Khd6{Qbt3XZw~KB2)aRq zM~OsA4Xh(tBgRs_8ZdM{Zb?vO7(`z`Iw0eRqgZosBTkfPZ&>h14tT;2S87EY-m!L#O6|()Eh&XUrO0?yH*$ zlV9l4Dx?Kl-jYrq8*ejJ)G&!zJn3h9^EB1%SvDvA-CJ?5M_h!CZx>$z66$RLCLP+V zxB3Ex5UGXQY^3_e;3mJru^CG)$C3Q%)Cy; zr2^IbHK6xBwOMva>cK2iUjN?c0VHt2#+G@4)QFwKbKdI>gCA5M6-;|UwI~8zAEt0` z*U`TMCvXgo;by77y-_nKdKT-{$M+eZvI^?xC+_><^!VCem+oDb;ad}8zG}zFsyzC9 z0Ekqk^e1~m`5w6Ir323zm70%PRTZ@byieRcz0aH zti{oOD=Lb4n6RkKA&BQtAMvc^SWht=8{`r5U#x^1UcSPsz{f56_Q`?GKsFI%dc@HE z7#C(XE08{pIF`aW|?@?MvG?ZJsmP3ylhM21mSOXv3hu@>H7SLE?lknK?)kz5qb<<;T) z%GwY7BEEdpk%j#=kOvx~@$KV#!_~#Mb`SD3q)xm$Bxadh=~YpX{H&4}VE0u`woMuD z`l)=K{cX?eB6-XRMt}zVW6D z8l-4+3~*&rH}JNp^5Bu-M4lZ4R?4z}MS?^jYc@f6Jj8z0%1&y6;vvi@?c{$Le~ zWIFkxw&ra%BRb^oAh)2bQG7Mq|yXa}cji`!OZ{1zE7TpL!QeXs122uko&H)8l?*h#mI)vca(YR<2;B^cf>1sIG2_S`CcL5EGc{WF z)sx~5)lfx!`i1+B_i6sJ89r~RQe^%+rbeFwo%cpYu+Mxy($L4&CrZ!%!nS3(bN~F1 zm33k6{o&~ZOWItLN16R!+K0={Plr0ZYsEjaANCFhETi2c-b~lh-m`Xj0Fzso&+o}8 zs%#MD&*^zxBeP_=l76?yL&r@7ZhkDJ9k&@czg-hjQ8@RoUe-uxrs>47(@UT4u?CdC zoDlG3qP)s^*bQ@3`0i%sgWf}l6cQ`D6lLfnk&(ck)se#<*$00({^9!FuB2|R6HDdg zSexB~Lpn2uTbhkxEHsLS``>~f8=onXV0xVnI}J$yV>A2~0ACFElNmSmE1iO=EIso= zQ}8zTTaHYE>n-)dcU*BgcMOdWl>j&E-G7KE!pj9fkK~(@Zag?R6OOfyx!61KdheQq ze%Inpz7&A&5@h3li~aKV-&+1)IWV~3#&_2jQ%2DAYsmBN52KXN3&wfFmHzw$V5pwg$Cg@~F1dse5}$5GD*%CZXi&cs!fUxZTPIMZn&fuWjsH?V*pgB?;4JnE|Ui}CAP>=5CJs=9HR zbX>Z~DS!B>2cGKG^g@9q6=v^R%GFw?L*+tZz@$z_8gt3H3QqGr3leYEbuKt0B%iX` zXzeZ6_XJJ`T!nN<5bqHrCxI{E$x|+wnVAtvIqaZYmhs=ScL9~)C8f;mqMvQ9R{)ym z|7c{$3?S844(Gv^Emx&&eh$*bYy}Adw#xh=6Pd+qUPxLpYd0lz?t6nuJ}R0POxq9S zC*T)~LTK8U0PY_kf)L18_1PA-ec_yw0&VFd&@L!bQ5FZEPu~#aO*_|3uZwUs-8f0w z3z#sppknY4tb%ev%tZpK{%tt_9L~GN-fLA?v^=Q~W?$afIpfHqw(*iwgVX-`$?s!E z56XK()`aKSoUj6d=)}^-$xH0$qRsJ@mi_{_oU7Z0=KKpen(Cn{dH6b0U4@W4jh`T( zg#u>gm>i|?(YT5haNf4(uva0J89PvE^KvGo!{zXOWz(gh_QZh!rOX})#Vpw>?PnHX z#7AuThi1iinOzOw#Q4Own0?5t9gjqbx2R!`@2_vkF&lS6ao77W?xI6 zQY%oaUs$*%4Szm%&?XXOIobA*IOoePROuuQBWt&?+`%TjjP-;4bWY;F;SiV+E%7+@ zA^=l>jf?q*xNmp`0#i0?33$Py(*-QM>5}8&Mmg4Z&VqPzBT{ii! zk7;eWdgBw|-9drQ^yyq|*l>_?rvRgWfBnKD)Q3ncF*w)gcaBun)8`nXLzrSl&(|!<4|}TFegKa3VLN%d#qg?zm`i(^9ct;*w54 z@9E~vmdAiMx!8M@jo_UCqO3)P1ItAXQO<1v0vcCbt(cyubiQcyiJQ5XEbr6b{q;Es z)Q^MQJrgzBApS3c9_F4O`A+OxX?{;h-5oE^sPMKUNT#0Wh_Loz2Y`GvbrE|K5;c6! zIc1u~d~EZxqKt~6bh9=G^6%5U0_R=|@oxwI=Dm;EggnFLjxT0Ibmm5|;C-@HeF_}r zq=!M~lL}Js8~vzQD)fBIM7KT6qogeE^{Tuh*KcSwZWk-Gsy|a3J8WsK5K+9Q>+Oru z&FLN4FHdH6D&Kg9c?%k(6aUR@^~TPz1Q&wmLWRL4wn{M|y1C9ENX zeo4-eqx;iAx_N+g5gOFV%ak*3d9wbs{zL23GA4j*@0%lDc9}T15FQzw4wJ=bWEVT1 zf6jzRRD$HvNM6KIVg36LXHYJvH?-l*%Xd(AiFdYTW_Dc!Yl!219V3$-y>Dn6Obp;@ zm(Uds@%iQR=xUrJ8WP#Y(NKF7zJ|4cXn5M$E)5Nof4lME*^g$sqrP>#{##p`G+XN0 zCJ~Rt-b(e@b~VF~WMdS^9)p=Rh3?z`k#xZYC)R3SJD{+HvafruOwq7|+9^Br@-&OgZ6f3g zbydqRnrqW7;WJ+%<-a5PB~e>+V#Keculu%BEvmlk^~1Ff%kF_1;`Dgx24?Bffn ziN|cQlSP~c8j7}<_!#^#`KuX2iTp00`|J4U@v7j!;xg-SFmOQMdUxd0h(^Wga(y3e zpY*;RF>^5201b@)8+pScD`GFwm?S}isy)aHufEiWK_u2w3#J_K`$Vtnru60$jdJV^ zbd&PrW7OUJOx8@dHVOBZ(Ju4-H06A{b&l!VW)+HWJlnZc|Ez5Ca{N~D`BHdRVpyq#85+*CEg9L2T3xdkGNy0z8v3Gt+!qIEbZ3$I0Z z;~vK??oP9PB9g;4<~Wl3AiJW}FET3f;^*h%z{j8Fp^oRJ*8o38V4a|dZsjnlQTPI5 zT;gl&W}bNnHsI7pM7uDL<>FB&>+dc@4 zIf-XDzdNI3dnDck7pk9NOD6(J0M4t~A6`fu=iMdDr%Q{rbB%?Lx-6_pB1f+cJnVc)>GSYGLRtbc*!)mE77RIX+NY zWyDG*ep~y{I`O{x;PaJ3oDhh>5WmR4#6vjbT|Rg zV7iI7BBybqYd?cDOkoe}II6zKy2|k&_^d(*Ro8d_)DLq zHw8;G$|mkAm<2nYC(gGbZz_dF8utyJA}OxxP_DF*D6Sf_j4mQ|`pmBGO%7^zznT=M zlao77$x}q^sCzuLcoSNxy5Cj@BaE!xI2RG2=c`yh7*7{ z;pfDj8Q4LsCFR-g=0^L3CCn3VXX6Dq9Z=P811+AfRXVcbhGt0>>xy!yg{zRjB@}q0>hOF#}{Wh4lL2-15E%Z+BKpYp2Yv%xA$f67fCO0ewWd3_;V3RVb+zJ6A11EEFX^p)Ch>rI^qa4rYt=e;_yI-W#jZim_14D0xA-%dwrk zCtX*%=e4L+yD`Yd7V`wN;pYcES!S*Lz7QalsN6&w!o!o(tJgI-UeD!q%` z%Iabj{q|hr^UKt<3*LrX=Q((*{S)Bu1dBhNK9vnGQ&DhPt~yU%0ivkV3U@LEa;}b# zg&(^9nqoH@IW>7RPnnco&q&kZnLWL#Qfb)PreGLnHnsu=m^ijn>aF9fnH92Mh--1y5Cz9+Dr+bV@7>{$*C-AWo@>;gpN5 z|2j4O>q(m_hVeJVXNl6R-&l}p=$N}nr`P#|y6|Qrg2PYP6z7iAvPA;>H@cLyozCXz zc>IquD?(w;3g^`fy`p+$p8sSuJ^M4$^_B0#lSn>?1D7Mm#*5OtdZ5nf3!pbx$<~ZS4_?$)SS?n z&cA#_hO``vg2`7C+C7B#fq{4W1bWjRP^}o!ws<%F!i1aKx?H}cF?$`-h|HeZf5QCB>r;D!N34Hea5E>2`Yvvc4dO)6sCY#EVOYx}ERkan7sT?j zpU*E^rbD@_?b1qJg0k|RHr0a^Egnxu1?aavfkCh{q>46T?;yWA^rTz$d375fU7O00 zTvz|7)!TrFT>6#p5mdGK|48DznO`UN^OBw12{Oi1d zFm9r4eu%UM{MQ0JkGivD*pn(+=o^d2QhBrBZ00xZzK){;v86#8ge9sUURb4C4j4%*eC~4<{xy2P;z#AANPl3mCsj$ON#oFS4<2{YJ2gboARR0`65I5= z0tY|t)2*L+TjT#=I%qy;tjTJL)JwwDx=r`D$ZjDqO}H#^@(K)Cb!hY360sLu zIpos?lQbE{E&tsw{rTS|(iy(*rBLY`v_6f?lP}4et-HhLA z(hZNKTdJ5T68VgT)wS2&oBk-5Po3K+?w-nx&DRTa%QSHoT^fYjMEK{q9`0*Om zjt4m+ofk}MX2<4)G&b)yPt{7tw=K%kj2DN>G1;NNC%0|6oqw5>YgZi{BNM!&h*0Vs>y?>Oy4;A$n_QWOGMAPfz@_8JAC}XlJze)En57qO9U2E>T5ea z?9~^Fq_`KqsEgv=ON?ev!*-oNYpaF{jCT3v2sGD>i4aOlf7n++PNS77Jq0sMs-FD# zom>@QM?qM}eOh(LX%oE5U0zvP>GJRGS80(a*NG2&<4e7G?JIp68KoqQS>_`4x3N`Y zjmu|RgUf7yhk*Y4rP6;-%cV4!isM1UiLNq7*$+8&+jngk@`*hlI-ao)mlX@U+D(ne zCQw~dJ;_*s6zG@NBIc0wgvBA-`gK#QRi5wc>&kH`Cieb;nE)`(HnyoPCeX2~*Rswl z^NRHR2~O=gufmVT2G!g^9ITuwIAZ>hs^4^1RMbf8b0{;(>IG$E-ctF-NA2GvghLF_ z={+3dtJE0`7Ls=_2)%W=LEm}2sPR4=^QhS=!Hj7Cr@v1bx`X)4erm&Uo!O!q>{YPC z&fjS2;N+~Ssv&K?GIO}#?MHge6(8>KI^i38 zcLitK04*Zali-R4?Om^mS{mS@(ef>Z?nM@&tyRvuZ1@|ua;UO{{sI(Wu3-NoqxFL6 zdKH-hdl3hrFD13Q8l|Qd&=T-7)Jje{7IFUdx~`n?3cJ~*p;d`3|5BgAk;PR1JzKjKYC(ub7!djZD{JyMCpD@WNGE0`n|J3O9OQeH7l{ zlMcX1Oc3a;j|o~#c5g0>vPImal)7)h{`46%ybfgxw)^O%!KfV z_I65`XxhJY7vA3AHU^@^hf#EdSGZ}6=-YJ4YD^*>#D&7^R`@#x*4&Xb2Ls-C&o5qo zwiGTPcRwsb?h+V}_y>jy%RBq1qwaCY1G2iEhZ%>jfl}>Gq5LW)q%QTzd zf1MvBj^+P=*L`;-Sq!BzSr}Gv_95|oIUsK~%lg-k@1wl*)--mMz$m_YhS;0MtKqoy z>8&cV&=3ym{$CJ?n5_gGuP|rAD$e%uX+MW=dfzLES~uJ0-+mD1+dltV#iuSsm_duL z*DrH)@an{I%GFUOo1NIeO*mGAGq4^;8vaz#m!MTH{>g?+g>7PO=IrawRMTmhfm@{j zCMBu(ZwW`l^S^0432Dd6`?g167*NM3lMDMGH+ z!Rb4qp;io427R0#gWWq&HDADtD&&iW(RnR6-_>EGakoY7MxdU@T+P`vhWD~!$p?yA zIm6dxH>!phQ{wjy>md#2OElU_*W_?z;&eb^$FLEY#oW(9KYE!K=8z`6XbhUasz^@J z{`cIAw%^n3aVUS{kYWEjc_hOTGFlw2pp1%^?x`I+o!ht1-g+;YBAcXXP@yj}(9j`w zsTVjqk;5$$z#I|!uYB$Iy%hZKeyMt^gwJ$(fp2EN0D)O=aJPO~W7vb}g|S`5*vU zRWSUeYg%+90wET@D4n?5B)4v6!PDZ&H zb0YbCq&Gp>m*9^q-27PP40qA8^i1nAXXUkT__bp?(5ow|*)98Y1kHD6rq&iHl|+%| z_#Gxj4-%$D^wRU_a_bGVe%ZUulxM-$ESPIjm0rWoOcX*Bfs2I%d1-?qwe_>eh{KJE zecRTl-1_8w*uQg;iE#ecIqlh0(}WrEZg5l+s59i&jt%dTK&k!Dt$-Jzp8kQpJPE=d zxcaY203-&R0LnSN?+=0!J_)HbM(#t<);jnAlc^SazlaT;;>iIW^U6wF&AzMO2;W|4{TT(m@ICDdXhcW+T=kq_2ElJ6D)K+Vd&`BLKcAaH;R*nxHk+*0hre3yjq`0cKGZy?V5Yn6@uW#~`(ez5e5A)fL65m0~g>+F{4FzOb{0TR261xjH; zxhK-5qSBYMJh-@}v|4NYdG=ujEB%nxLSr{FkJSwt7D}QM58@aSkrsq1 zfczSQas{GHILenHK@Tw*VKlJ#%>ar z0?*keypf+X3`>4RpZg!24yLna={ANdb<~_K?A+xo6ii6N<>zkA<_Nb$%<4uQA7juT z?|lvGFLc-2(^8h~N6s(f9@Xzh13o{9eiK$d40Zrygm-*inQi-MK271vy4N29CLBeH zlcUn*+WUF*fvwaB6cDL70y{Ie#8Le>mE3c0GgnqRdBcY6_<_&o_#uTAPa72V#-MoD zbewlAH2K4#>9*J4=y73uxz?b1>PAS)nG%qC^#cCX+omJNbQ_7IQx)AZSH74DHL81` z{_s}+0Uv&r#}7}Q)pxX!O%OpiIG4Cab;7{NjZPkXU$f+n)|qs^vm-MC#wnq}Dbby4 z^u(a#;|CHNlJjEWSf;qr=%Sq&U)TLk^rN@icm?f0B<+A@@O__t9@_#;A>sz(*Jd#@dBJPFrS9%D8<20+Cz2yiIq|2` z*JAKVa3xvS@&ZOjUI~`38!Y{q+TC5mi_vL3%agQdM_G6s91RA>gmo@6ME@E)+joDS z{ONeCWRTVURp?{fYxBRjmWxPF*1hNDF!&wo!pZ4v;43F~;L2R#c-}AK{k2ZUCZ4cm>%LQJr0A0=r#*111 zJdSfm6C+nL8tUs}c9fso*6DKPm$VZ?^5+jq_Vcq8@~v%O$wt&5fJod_Es|EO6}fBo zIpsxDggUhNr9lT{Qd1v$)VuUojphkwJV}z4+%iD;N+1ZFpjwQRwW@v%tE#NCzZ;m7 zJ?n`KdWrKw1}S5gVlk+QfU|_+pVC!Uz@pKN@)@*`!D0l3qO>J8Z$~I3={mDLIaPM8 zG`8~wZxBcS=r@)z7M5tqP;)|STuYyc?_3ImE=&x8Bro>(t{`%Dk>|Iis z=b*C}wn@B-b_Sz z5V-AXS#9zZd57!S^4_{}I)j%luda-(iN7tcXm<2nwsLW59HbjW-A04sRh<#tfZ#Nd zV$#aCMzx4P2q@`;!IJ{mXy|5Ty=f{FjF_>+{0B+kmXGa^3^7c z=nP60>(dMLXo-=3jq_>ukleRM^nQP~`x2*vdF1*QuXb@BG`?7H{qfI$vDCkh4!3gJ z*|+v#dDZm^tZ7DaQx6_){h%UwBrdW#C2AL8Pp>BR#ao$`ySB!;VR9`I%DcB}cQ!{1 z06QZSd_t&z36iupl@XYEx@isjcS7o)az4@8nE5_F^SHEkQpcL6x9r1sChBp~tCWy1 zpUml=z6gR^A(Z7YYQ8-7*-lYWnc;lz+P~!5u8hQDqEpDg<;V_w1d=Ek#&_{CVXtZQ1~BF7!o^-u2Hm_C5?X#b~E{phbduQ0|5e$QMzgi;@$_lY)^JlZt@J%nrKZLZL8-c`>UyfC zOB$M*sT)H{Vr=7~w^A-z6peYPc}~qUMT>?~2_>}DkP0E9k@TJW;jMMoTkp&Ju-7_! zt+UqId#`=|`@i@84I-0=zo1j$flgGVFl8&Zgzo#s;G#Tnj2yHmvqoUC!!Di0?w7RSwa?wfdcEOTzEgkb*Q6X@?~0s z4brVm$9N28SF&}H=8W}Fp&#_WgwPWc(3A&8vJbejR_L?l0xGWnsg}x+CoFfW5&Q8J zUjT=yQQ>{r1F-8}k1wXbOLY#qRuCuJa~AAgGE_CEbg^q|hxj4yTgWoKo%w3UlLx;s^+cgelU&oG+W z5>GGpydVHqV#t{GD`8QKYH>Y62%qGR$Yooq?a=NWs~~3o>Cwp-FF!X>QXeYI9e_#V z27Sbphd1^X6Zt2|oY>+|ZXXx=3;ayv7DKBx<&%QFb`zZv?sa!1UlaN^taN@~n8B1X zh?7XJ9FrOoOR8kWeyQJc*nMLc|C#q~ZL+&DZ|kr$=AGM_&KbQ(nxEbaGz(K(eBL5J zo^Z3^3fNM8VF&PYbOU}+GEQYlh4CshpCe%okns7?*KqkkB33B860dZT|Nas3a|`SY z*j&oxBk|#YJg~Yi)j*hbe@cyZ(?w(y6{o0}leVzl`|2e+mLZ29RbFN)`U?)f5uBu1 zNdfG;nr?9red8y`H$Z)VOirhq1|d@#1AyG!BX=(?E^=V-`|?5EFjtIxPW9}&w> zv6_-^CO;$?EFEeWJQ*05^RhDNZKol%j3N}cH+745ZW>d_&w*UdB4)Bn8bj#P%Dm1@ z8MF!bHILyPeJ|knKzO5PVlpE4wVyEbOzW-C=~dv^;P{bZ;;j_(j-3mgm;#*lhV!o_ zaBr7YbOv5uq{X;TpvAzu=WOs|6qKV}^wp4G{|eW)9N-(J0J8}zQAd`kK^Zk^L$mz=y!-cYc=RfO{&M6#=j!lB`O>`1 zC~#o$S84s75lOTn9W8u=zmYyYgoxmM7-Y>D$SretH-|T==e~f(vy}DmU^u zh}5~+R`_uK5W6gM1fE?o9ROd(oCE^T2z((@t_AP&Q5!SbA-?QRqidqQ?d26|B1#P2UQc?xAl47^v);o;?cuQwu-Jj(Ot46h~_yJ9_Ij$aZd< zG-Sog`Sv*_B;b$tKR})n)JnEvKzov@sJ}Bs=ch2?xcPUEhX*j<`*ozeq-4{g9c^CjOrZiHmqujD8?!5 zt)0Q)xLEJ%kVRYAQ}=;{D+0D)-iqFo@aylYfLdGu09N!g73(-w=&N5*cusLhL9b_N z>uNC{D#4je;;ao&V;L&k+c?Yqh#S+Grr1Ov4D^{-qLeFZNUUdG%@(;2(+pdX{?bb< zqVweI<@&@x+?6Ygt^1)id8?I%k$`kD9rcA+$ z(~Sle>Q@EQr}9_3O*_2GaGUJD*4h1}(+ZKaN(EId4No0>_`NIbg$anu#5$qXaoajT zD&WSO+LSJMl;Q_q?qD91V>FrTZRzx`D#nHO;$Fjn78*_S;n_zL_2Uj+u%4ix7|SQx z4S9{#Ms2~}Fb36WBh!sWYH_|jek(aG5`PHMj~QE(JJQ$@TIwoVjvQ-d!V~taq-Wg{ zZ#kfx0w!Ms!tW}*V`Yj;=8GY?J$g|uxX73VHz=>{2wBKc>CxB0#rA$j^(0=K(qKWu z;h;ctgbWXzuCjXm5lP6P+|+j>WsDmR;7DyWOdyLKLtq@Sh9%Ejl}u8-gG>JPY4Yu8 z_a>d%57QJBzSJ`qJ;oIUURGzs`dk`(J!3Lafy?l*Q>LE3e!_(S%WLa>MzE3_F*Rcu zjF_K>_?Wrp)J8IPcQ>c^3mm7hqznXLcTe5|#MTbXrvOZ^Zgz9$hm8&Jx&#>O;}!DN zg+Qt#gy;;P+uWn|o5&^F5)j%|gJx#Ql1`9*OgxhlGW5xc+_aIO7F0|MZM{0Yf~u31 z+RMF?I{qxWOUvZ}Dn;QOk+`UF<;nNb=VJBVlfM)fMVtjM#{ILgE}?G@ouHSj_w|I0 zMYK;NA=A*65mT1)mf^tyi2M6M^hufGYkY-wA($H3bDOC{HuFCb)ssdL+jT!cE5&Qy z(u4>=-*tf{^@%ed*50xMNmiek8N3med=+XIN3vWHy-ts8t<&!o0o%XjsXc*Hqx=34RsPiJ|@bbg9Fk=>~SxQQE$e*I7^9;3Y zjxIARp{eULhefR4gTo)$+gZ3;`TpLykG7D!b?mRjG3=@Q?0_K(@Om3q1I4LgVgLXD From 512b390e8183651bf7d1d07121226dca9252681e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 17:43:50 +0100 Subject: [PATCH 09/22] Update cc1101.rst --- components/sensor/cc1101.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/sensor/cc1101.rst b/components/sensor/cc1101.rst index e93cc4304..4d71744d6 100644 --- a/components/sensor/cc1101.rst +++ b/components/sensor/cc1101.rst @@ -255,6 +255,6 @@ SDA/SCL is not needed of course, they are just there as suggestions in case you See Also -------- -- :doc:`remote_transmitter` -- :doc:`remote_receiver` +- :doc:`/components/remote_transmitter` +- :doc:`/components/remote_receiver` - :ghedit:`Edit` From 13875abec4275863965e89e3b433c9756364ed78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Wed, 28 Feb 2024 18:34:17 +0100 Subject: [PATCH 10/22] Update cc1101.rst --- components/sensor/cc1101.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/sensor/cc1101.rst b/components/sensor/cc1101.rst index 4d71744d6..d13bb032d 100644 --- a/components/sensor/cc1101.rst +++ b/components/sensor/cc1101.rst @@ -232,8 +232,8 @@ Transmit a message using the button component By default the transmitter is in receive mode, it is important to surround the transmission with ``cc1101.begin_tx`` and ``cc1101.end_tx``. -Example pinout for a tested boards ----------------------------------- +Example pinout for a few tested boards +-------------------------------------- +--------------+------+------+------+------+------+------+------+------+------+ |BOARD | MISO | MOST | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | From 241c793ef26fa216abf63b05bd62ef49dcf5aecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Thu, 29 Feb 2024 01:06:40 +0100 Subject: [PATCH 11/22] Update cc1101.rst --- components/sensor/cc1101.rst | 59 +++++++++++------------------------- 1 file changed, 18 insertions(+), 41 deletions(-) diff --git a/components/sensor/cc1101.rst b/components/sensor/cc1101.rst index d13bb032d..5145464f8 100644 --- a/components/sensor/cc1101.rst +++ b/components/sensor/cc1101.rst @@ -18,15 +18,17 @@ Tested frameworks are Arduino and esp-idf but it might work with others. CC1101 boards. -.. note:: +On ESP8266, you can use a single pin instead of GD0O and GD02 (gdo0 is an optional parameter). If assigned, +the pin direction will be reversed for the transfers. - In a recent update it became harder to use the same pin multiple times. ``allow_other_uses: true`` is necessary on ``GDO0`` and ``GDO2``. +On ESP32, this will not work, you must connect two separate pins. remote_transmitter to GDO0, remote_receiver to GDO2. +If only trasmitting works, they are probably switched. + +Transfers must be surrounded with cc1101.begin_tx and cc1101.end_tx. Example configuration for ESP8266 --------------------------------- -ESP8266 can use a single gdo0 pin for tx and rx. During transmission, interrupts are disabled and the pin direction is reversed. This does not work with the ESP32. - .. code-block:: yaml spi: @@ -50,13 +52,13 @@ ESP8266 can use a single gdo0 pin for tx and rx. During transmission, interrupts remote_transmitter: pin: - number: D1 + number: D1 # GDO0 allow_other_uses: true carrier_duty_percent: 100% remote_receiver: pin: - number: D1 + number: D1 # GDO0 allow_other_uses: true dump: - rc_switch @@ -68,7 +70,7 @@ ESP8266 can use a single gdo0 pin for tx and rx. During transmission, interrupts Example configuration for ESP32 ------------------------------- -Example based on a generic nodemcu-32s board. +Based on a generic nodemcu-32s board. .. code-block:: yaml @@ -81,12 +83,6 @@ Example based on a generic nodemcu-32s board. - platform: cc1101 id: transceiver cs_pin: GPIO5 - gdo0: - number: GPIO32 - allow_other_uses: true - gdo2: - number: GPIO33 - allow_other_uses: true bandwidth: 200 frequency: 433920 rssi: @@ -95,15 +91,11 @@ Example based on a generic nodemcu-32s board. name: "LQI" remote_transmitter: - pin: - number: GPIO32 - allow_other_uses: true - carrier_duty_percent: 100% + pin: GPIO32 # GDO0 + carrier_duty_percent: 100% remote_receiver: - pin: - number: GPIO33 - allow_other_uses: true + pin: GPIO33 # GDO2 dump: - rc_switch tolerance: 50% @@ -114,7 +106,7 @@ Example based on a generic nodemcu-32s board. Example configuration for ESP32-C3 ---------------------------------- -This one has a problem (``__) which needs a workaround. +This one has a problem (``__) which needs a workaround. And it does not seem to work with the Arduino framework, use esp-idf only. Basically, the receiver has to be pushed to the third channel by adding a dummy transmitter to an unused pin. @@ -129,28 +121,18 @@ Basically, the receiver has to be pushed to the third channel by adding a dummy - platform: cc1101 id: transceiver cs_pin: GPIO10 - gdo0: - number: GPIO3 - allow_other_uses: true - gdo2: - number: GPIO4 - allow_other_uses: true bandwidth: 200 frequency: 433920 remote_transmitter: - pin: GPIO8 id: dummy_transmitter - - pin: - number: GPIO3 # GDO0 - allow_other_uses: true + - pin: GPIO3 # GDO0 carrier_duty_percent: 100% id: real_transmitter remote_receiver: - pin: - number: GPIO4 # GDO2 - allow_other_uses: true + pin: GPIO4 # GDO2 dump: - rc_switch tolerance: 50% @@ -166,16 +148,12 @@ Alternatively these modified remote components can directly set ``rmt_channel``. .. code-block:: yaml remote_transmitter: - pin: - number: GPIO3 # GDO0 - allow_other_uses: true + pin: GPIO3 # GDO0 carrier_duty_percent: 100% rmt_channel: 0 remote_receiver: - pin: - number: GPIO4 # GDO2 - allow_other_uses: true + pin: GPIO4 # GDO2 rmt_channel: 2 dump: - rc_switch @@ -188,8 +166,7 @@ Alternatively these modified remote components can directly set ``rmt_channel``. Configuration variables: ------------------------ -- **gdo0** (**Required**, :ref:`config-pin`): This is the transmit pin. And also receive pin for ESP8266. -- **gdo2** (**Optional**, :ref:`config-pin`): This is the receive pin. Optional because it is required for ESP8266. +- **gdo0** (**Optional**, :ref:`config-pin`): This is the bidirectional pin for ESP8266. - **bandwidth** (*Optional*, int): Defaults to 200 KHz. - **frequency** (*Optional*, int): Defaults to 433920 KHz. - **rssi** (*Optional*): RSSI sensor. Value in dBm. The RSSI value is an estimate of the signal power level in the chosen channel. See datasheet 17.3 for further information. From cc87806eb92ae0a12b03db9f12f59597366e4d70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Thu, 29 Feb 2024 04:26:56 +0100 Subject: [PATCH 12/22] Create cc1101.rst --- components/cc1101.rst | 237 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 components/cc1101.rst diff --git a/components/cc1101.rst b/components/cc1101.rst new file mode 100644 index 000000000..5145464f8 --- /dev/null +++ b/components/cc1101.rst @@ -0,0 +1,237 @@ +CC1101 Low-Power Sub-1 GHz RF Transceiver +========================================= + +.. seo:: + :description: Instructions for setting up CC1101 RF Tranceiver + :image: cc1101.jpg + :keywords: cc1101 + +The ``CC1101 RF Tranceiver`` (`datasheet `__) can be used together +with the ``remote_transmitter`` and ``remote_receiver`` components to communicate over free to use frequencies +like 433.92 or 868 MHz. + +Tested frameworks are Arduino and esp-idf but it might work with others. + +.. figure:: images/cc1101.jpg + :align: center + :width: 50.0% + + CC1101 boards. + +On ESP8266, you can use a single pin instead of GD0O and GD02 (gdo0 is an optional parameter). If assigned, +the pin direction will be reversed for the transfers. + +On ESP32, this will not work, you must connect two separate pins. remote_transmitter to GDO0, remote_receiver to GDO2. +If only trasmitting works, they are probably switched. + +Transfers must be surrounded with cc1101.begin_tx and cc1101.end_tx. + +Example configuration for ESP8266 +--------------------------------- + +.. code-block:: yaml + + spi: + clk_pin: D5 + miso_pin: D6 + mosi_pin: D7 + + sensor: + - platform: cc1101 + id: transceiver + cs_pin: D8 + gdo0: + number: D1 + allow_other_uses: true + bandwidth: 200 + frequency: 433920 + rssi: + name: "RSSI" + lqi: + name: "LQI" + + remote_transmitter: + pin: + number: D1 # GDO0 + allow_other_uses: true + carrier_duty_percent: 100% + + remote_receiver: + pin: + number: D1 # GDO0 + allow_other_uses: true + dump: + - rc_switch + tolerance: 50% + buffer_size: 2kb + filter: 250us + idle: 4ms + +Example configuration for ESP32 +------------------------------- + +Based on a generic nodemcu-32s board. + +.. code-block:: yaml + + spi: + clk_pin: GPIO18 + miso_pin: GPIO19 + mosi_pin: GPIO23 + + sensor: + - platform: cc1101 + id: transceiver + cs_pin: GPIO5 + bandwidth: 200 + frequency: 433920 + rssi: + name: "RSSI" + lqi: + name: "LQI" + + remote_transmitter: + pin: GPIO32 # GDO0 + carrier_duty_percent: 100% + + remote_receiver: + pin: GPIO33 # GDO2 + dump: + - rc_switch + tolerance: 50% + buffer_size: 2kb + filter: 250us + idle: 4ms + +Example configuration for ESP32-C3 +---------------------------------- + +This one has a problem (``__) which needs a workaround. And it does not seem to work with the Arduino framework, use esp-idf only. + +Basically, the receiver has to be pushed to the third channel by adding a dummy transmitter to an unused pin. + +.. code-block:: yaml + + spi: + clk_pin: GPIO6 + miso_pin: GPIO5 + mosi_pin: GPIO7 + + sensor: + - platform: cc1101 + id: transceiver + cs_pin: GPIO10 + bandwidth: 200 + frequency: 433920 + + remote_transmitter: + - pin: GPIO8 + id: dummy_transmitter + - pin: GPIO3 # GDO0 + carrier_duty_percent: 100% + id: real_transmitter + + remote_receiver: + pin: GPIO4 # GDO2 + dump: + - rc_switch + tolerance: 50% + buffer_size: 2kb + filter: 250us + idle: 4ms + +Alternatively these modified remote components can directly set ``rmt_channel``. + +- ``__ +- ``__ + +.. code-block:: yaml + + remote_transmitter: + pin: GPIO3 # GDO0 + carrier_duty_percent: 100% + rmt_channel: 0 + + remote_receiver: + pin: GPIO4 # GDO2 + rmt_channel: 2 + dump: + - rc_switch + tolerance: 50% + buffer_size: 2kb + filter: 250us + idle: 4ms + + +Configuration variables: +------------------------ + +- **gdo0** (**Optional**, :ref:`config-pin`): This is the bidirectional pin for ESP8266. +- **bandwidth** (*Optional*, int): Defaults to 200 KHz. +- **frequency** (*Optional*, int): Defaults to 433920 KHz. +- **rssi** (*Optional*): RSSI sensor. Value in dBm. The RSSI value is an estimate of the signal power level in the chosen channel. See datasheet 17.3 for further information. +- **lqi** (*Optional*): Link Quality Indicator sensor. The Link Quality Indicator is a metric of the current quality of the received signal. See datasheet 17.6 for further information. + +Detect a magnetic window sensor +------------------------------- + +.. code-block:: yaml + + binary_sensor: + - platform: remote_receiver + name: "Window" + rc_switch_raw: + code: '110111110001111011100110' + filters: + - delayed_off: 1000ms + +Transmit a message using the button component +--------------------------------------------- + +.. code-block:: yaml + + button: + - platform: template + name: "Gate" + on_press: + - cc1101.begin_tx: transceiver + - remote_transmitter.transmit_rc_switch_raw: + code: '0111000110010011110110010100011111110001001011110111' + protocol: + pulse_length: 434 + sync: [1,6] + zero: [1,2] + one: [2,1] + inverted: true + repeat: + times: 10 + - cc1101.end_tx: transceiver + +By default the transmitter is in receive mode, it is important to surround the transmission with ``cc1101.begin_tx`` and ``cc1101.end_tx``. + +Example pinout for a few tested boards +-------------------------------------- + ++--------------+------+------+------+------+------+------+------+------+------+ +|BOARD | MISO | MOST | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | ++--------------+------+------+------+------+------+------+------+------+------+ +|nodemcu-32s | 19 | 23 | 18 | 5 | 32 | 33 | | | | ++--------------+------+------+------+------+------+------+------+------+------+ +|lolin_s2_mini | 37 | 35 | 36 | 34 | 8 | 9 | | | | ++--------------+------+------+------+------+------+------+------+------+------+ +|c3 supermini | 5 | 7 | 6 | 10 | 3 | 4 | 0 | 1 | [1]_ | ++--------------+------+------+------+------+------+------+------+------+------+ +|d1_mini | 12 | 13 | 14 | 15 | 5 | | 4 | TX | [2]_ | ++--------------+------+------+------+------+------+------+------+------+------+ + +SDA/SCL is not needed of course, they are just there as suggestions in case you also need I2C on such a low pin count board. + +.. [1] add one dummy transmitter (``__) +.. [2] still possible to use i2c with TX + +See Also +-------- + +- :doc:`/components/remote_transmitter` +- :doc:`/components/remote_receiver` +- :ghedit:`Edit` From fd0509fc569bb877a024ac045765fee953a45a7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Thu, 29 Feb 2024 04:27:22 +0100 Subject: [PATCH 13/22] Delete components/sensor/images/cc1101.jpg --- components/sensor/images/cc1101.jpg | Bin 37368 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 components/sensor/images/cc1101.jpg diff --git a/components/sensor/images/cc1101.jpg b/components/sensor/images/cc1101.jpg deleted file mode 100644 index a497ee6dda80dd37db6ecdd5084abe1916cca7fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37368 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 From 24bc9700effa2d158f7bbdfe7567054ef1d29006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Thu, 29 Feb 2024 04:27:45 +0100 Subject: [PATCH 14/22] Delete components/sensor/cc1101.rst --- components/sensor/cc1101.rst | 237 ----------------------------------- 1 file changed, 237 deletions(-) delete mode 100644 components/sensor/cc1101.rst diff --git a/components/sensor/cc1101.rst b/components/sensor/cc1101.rst deleted file mode 100644 index 5145464f8..000000000 --- a/components/sensor/cc1101.rst +++ /dev/null @@ -1,237 +0,0 @@ -CC1101 Low-Power Sub-1 GHz RF Transceiver -========================================= - -.. seo:: - :description: Instructions for setting up CC1101 RF Tranceiver - :image: cc1101.jpg - :keywords: cc1101 - -The ``CC1101 RF Tranceiver`` (`datasheet `__) can be used together -with the ``remote_transmitter`` and ``remote_receiver`` components to communicate over free to use frequencies -like 433.92 or 868 MHz. - -Tested frameworks are Arduino and esp-idf but it might work with others. - -.. figure:: images/cc1101.jpg - :align: center - :width: 50.0% - - CC1101 boards. - -On ESP8266, you can use a single pin instead of GD0O and GD02 (gdo0 is an optional parameter). If assigned, -the pin direction will be reversed for the transfers. - -On ESP32, this will not work, you must connect two separate pins. remote_transmitter to GDO0, remote_receiver to GDO2. -If only trasmitting works, they are probably switched. - -Transfers must be surrounded with cc1101.begin_tx and cc1101.end_tx. - -Example configuration for ESP8266 ---------------------------------- - -.. code-block:: yaml - - spi: - clk_pin: D5 - miso_pin: D6 - mosi_pin: D7 - - sensor: - - platform: cc1101 - id: transceiver - cs_pin: D8 - gdo0: - number: D1 - allow_other_uses: true - bandwidth: 200 - frequency: 433920 - rssi: - name: "RSSI" - lqi: - name: "LQI" - - remote_transmitter: - pin: - number: D1 # GDO0 - allow_other_uses: true - carrier_duty_percent: 100% - - remote_receiver: - pin: - number: D1 # GDO0 - allow_other_uses: true - dump: - - rc_switch - tolerance: 50% - buffer_size: 2kb - filter: 250us - idle: 4ms - -Example configuration for ESP32 -------------------------------- - -Based on a generic nodemcu-32s board. - -.. code-block:: yaml - - spi: - clk_pin: GPIO18 - miso_pin: GPIO19 - mosi_pin: GPIO23 - - sensor: - - platform: cc1101 - id: transceiver - cs_pin: GPIO5 - bandwidth: 200 - frequency: 433920 - rssi: - name: "RSSI" - lqi: - name: "LQI" - - remote_transmitter: - pin: GPIO32 # GDO0 - carrier_duty_percent: 100% - - remote_receiver: - pin: GPIO33 # GDO2 - dump: - - rc_switch - tolerance: 50% - buffer_size: 2kb - filter: 250us - idle: 4ms - -Example configuration for ESP32-C3 ----------------------------------- - -This one has a problem (``__) which needs a workaround. And it does not seem to work with the Arduino framework, use esp-idf only. - -Basically, the receiver has to be pushed to the third channel by adding a dummy transmitter to an unused pin. - -.. code-block:: yaml - - spi: - clk_pin: GPIO6 - miso_pin: GPIO5 - mosi_pin: GPIO7 - - sensor: - - platform: cc1101 - id: transceiver - cs_pin: GPIO10 - bandwidth: 200 - frequency: 433920 - - remote_transmitter: - - pin: GPIO8 - id: dummy_transmitter - - pin: GPIO3 # GDO0 - carrier_duty_percent: 100% - id: real_transmitter - - remote_receiver: - pin: GPIO4 # GDO2 - dump: - - rc_switch - tolerance: 50% - buffer_size: 2kb - filter: 250us - idle: 4ms - -Alternatively these modified remote components can directly set ``rmt_channel``. - -- ``__ -- ``__ - -.. code-block:: yaml - - remote_transmitter: - pin: GPIO3 # GDO0 - carrier_duty_percent: 100% - rmt_channel: 0 - - remote_receiver: - pin: GPIO4 # GDO2 - rmt_channel: 2 - dump: - - rc_switch - tolerance: 50% - buffer_size: 2kb - filter: 250us - idle: 4ms - - -Configuration variables: ------------------------- - -- **gdo0** (**Optional**, :ref:`config-pin`): This is the bidirectional pin for ESP8266. -- **bandwidth** (*Optional*, int): Defaults to 200 KHz. -- **frequency** (*Optional*, int): Defaults to 433920 KHz. -- **rssi** (*Optional*): RSSI sensor. Value in dBm. The RSSI value is an estimate of the signal power level in the chosen channel. See datasheet 17.3 for further information. -- **lqi** (*Optional*): Link Quality Indicator sensor. The Link Quality Indicator is a metric of the current quality of the received signal. See datasheet 17.6 for further information. - -Detect a magnetic window sensor -------------------------------- - -.. code-block:: yaml - - binary_sensor: - - platform: remote_receiver - name: "Window" - rc_switch_raw: - code: '110111110001111011100110' - filters: - - delayed_off: 1000ms - -Transmit a message using the button component ---------------------------------------------- - -.. code-block:: yaml - - button: - - platform: template - name: "Gate" - on_press: - - cc1101.begin_tx: transceiver - - remote_transmitter.transmit_rc_switch_raw: - code: '0111000110010011110110010100011111110001001011110111' - protocol: - pulse_length: 434 - sync: [1,6] - zero: [1,2] - one: [2,1] - inverted: true - repeat: - times: 10 - - cc1101.end_tx: transceiver - -By default the transmitter is in receive mode, it is important to surround the transmission with ``cc1101.begin_tx`` and ``cc1101.end_tx``. - -Example pinout for a few tested boards --------------------------------------- - -+--------------+------+------+------+------+------+------+------+------+------+ -|BOARD | MISO | MOST | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | -+--------------+------+------+------+------+------+------+------+------+------+ -|nodemcu-32s | 19 | 23 | 18 | 5 | 32 | 33 | | | | -+--------------+------+------+------+------+------+------+------+------+------+ -|lolin_s2_mini | 37 | 35 | 36 | 34 | 8 | 9 | | | | -+--------------+------+------+------+------+------+------+------+------+------+ -|c3 supermini | 5 | 7 | 6 | 10 | 3 | 4 | 0 | 1 | [1]_ | -+--------------+------+------+------+------+------+------+------+------+------+ -|d1_mini | 12 | 13 | 14 | 15 | 5 | | 4 | TX | [2]_ | -+--------------+------+------+------+------+------+------+------+------+------+ - -SDA/SCL is not needed of course, they are just there as suggestions in case you also need I2C on such a low pin count board. - -.. [1] add one dummy transmitter (``__) -.. [2] still possible to use i2c with TX - -See Also --------- - -- :doc:`/components/remote_transmitter` -- :doc:`/components/remote_receiver` -- :ghedit:`Edit` From a6aa733e2b497ba9238fd54febe7a5577a8ec024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Thu, 29 Feb 2024 04:29:36 +0100 Subject: [PATCH 15/22] Update cc1101.rst --- components/cc1101.rst | 55 ++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/components/cc1101.rst b/components/cc1101.rst index 5145464f8..52f16278c 100644 --- a/components/cc1101.rst +++ b/components/cc1101.rst @@ -36,19 +36,18 @@ Example configuration for ESP8266 miso_pin: D6 mosi_pin: D7 - sensor: - - platform: cc1101 - id: transceiver - cs_pin: D8 - gdo0: - number: D1 - allow_other_uses: true - bandwidth: 200 - frequency: 433920 - rssi: - name: "RSSI" - lqi: - name: "LQI" + cc1101: + id: transceiver + cs_pin: D8 + gdo0: + number: D1 + allow_other_uses: true + bandwidth: 200 + frequency: 433920 + rssi: + name: "RSSI" + lqi: + name: "LQI" remote_transmitter: pin: @@ -79,16 +78,15 @@ Based on a generic nodemcu-32s board. miso_pin: GPIO19 mosi_pin: GPIO23 - sensor: - - platform: cc1101 - id: transceiver - cs_pin: GPIO5 - bandwidth: 200 - frequency: 433920 - rssi: - name: "RSSI" - lqi: - name: "LQI" + cc1101: + id: transceiver + cs_pin: GPIO5 + bandwidth: 200 + frequency: 433920 + rssi: + name: "RSSI" + lqi: + name: "LQI" remote_transmitter: pin: GPIO32 # GDO0 @@ -117,12 +115,11 @@ Basically, the receiver has to be pushed to the third channel by adding a dummy miso_pin: GPIO5 mosi_pin: GPIO7 - sensor: - - platform: cc1101 - id: transceiver - cs_pin: GPIO10 - bandwidth: 200 - frequency: 433920 + cc1101: + id: transceiver + cs_pin: GPIO10 + bandwidth: 200 + frequency: 433920 remote_transmitter: - pin: GPIO8 From ae4a321364689a33dc3e13309722f90bdda1373b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Thu, 29 Feb 2024 04:31:46 +0100 Subject: [PATCH 16/22] Add files via upload --- components/images/cc1101.jpg | Bin 0 -> 37368 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 components/images/cc1101.jpg diff --git a/components/images/cc1101.jpg b/components/images/cc1101.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a497ee6dda80dd37db6ecdd5084abe1916cca7fb GIT binary patch literal 37368 zcmb@ucT|%>_bwWwBSoaws5GT_MJWQ(1*Axa2q?wSdkF+VdItdo0qMP$(0dgD>Ai$1 zJ)wjEA>4fDoO{k)XPrOpz3Vs0&dOSuciwqs=G}YGv-jj~{%#%cKwVi)8Gwg}2T;Ym z0C!6OMZi5gy#KuaN5Ln=|4$(zAiyUiCL$*OkC2ewCnX^vBOxXxqaY)@PmU|Zq?A+? zjF@d;IZK);Nv|3+@r?Br^dVM0{{U4JVIP= z|I^|BQSk2J6A%*Nx9-dy_KE8e-Uqi#fBO;@clE0;-rhWgBo|~6nP*_x4Qd(PA-_Qta zYHsQ2?du;H92)*TIW;{qJ2$_u2;bP;+TPjyx3`ZxJv+ZZU81k9|APw;fdAiN{ZC~7 z8!l=bu6wvSARzt^F1&l*IKihTAbc!B^iW=h*wU5eiRc#+T7|@%nr>1KFav zJ*POF3;7>t{|(vyJ7B^8zmWY;VE+r(B7htp4>x)E)BriaEhabWDd7Jsr2PPv4CG$^n4BhN6Ca|1ntzL`260g{-m1iECMr$moy{TSS_7kmMzXNEcl!3;87#bBU+0-T# zn#VAXW1`ZsWv+vLO|-HiNBywEUhpJ+XU=;$q3Zn$!;_FO;9r$4;38EIsD8JXO|F0S z{!GqHy}7)P=ha78GN4{JXGeDex&YoW{#<=W4{+9s`iULJ&iNP zGWN%h_xki!S^)NjtJpgLq39hTc-m-T8JvZO)~jf*$Vwux;6WCAHxBG8_qw8Ih41ie zi>{Y$9SsBG1#oqPpxqAj&Wjc|eOaVvXt~+E50&B@2H1nQjtx}IVyX|i@jb)lDgOL% znI!knb-&`<&@?#HLPtXj?7^Jb4$UA@o@BRP7U9$BCU{K~IdZbSoYG)tF|99U5<0i; zgD&@+bU{lxLQQ=$dE&5g==4+UnWDMhnepHCmQ;-w&Qm*@gFephwA|dZ)W*PKz1cvC zs)vx*Q=CXm1T$np(cT@*s$iEiD)O^Z-bxm+^`MJ7nD3Q#oJKb5=OpFPfbG(PYg4wY zPmKsBtAyaCI4OuV@no&EHvB&HAw=5U{F2st-ftJ!la0`cXA0~Fvh5%lLYz*7q{Vz)VekG536h5BHxdVJCe#t$)KcnS zSITb&GC~Ar#qU?>X-|D@n87%T^A%W_FT~fI*a!N3i|ZlOi>%~a{QXI;Rlez-Y5GyQ z1StI4ut!FtCy=`qJK8>B@(fbE;Uk!8qs#ehhvIO51STD3T^|(kWN)LSxRf!Xxp~3# zLL`gQ8#VngZ^SD*+gb7Y$!#Rm35thZ1(6(K-mkaIzfBB{*PAT*AmkB=AdS)|K6O2< z-eUjd&jsa{tF1cn+;pB_+T@Clg%FpU*|!w5IwU=lf=xeONha+30RMZ*7XK(1uj*eF zmb3!5&a@CJ7+OO(+EHfXFT}G@fwBg^P(Y-L46+Tn1B@8mXJ>TFhX=jj***IiRY-B8 z3MRg+;`V3Ka%WXXd5WjsWEWilbtYa*<#s?W??pZR^?L z*Q_V~Rne==Xoht*#eR0dSqBd`Vhzp9=V`hQZ_e?Xt$Y9&c!?0)C?L@B$iYD%i-8=y z?;`Yz$B(odA>~lD`dSEi{U+8#b(d3hfl!Nqjc@B#+XU^5^o`9bhl#9YSPK+%N9HjT zonKYVq`)-Eotr`j?ls-NRFzZt^7{%gLPPv#&AIMi_m*R~=0|J|<=5Nk*4rvHa7wy! zGwX-*rd)(K{WbIAuv`BzH+IyW)xZI5qu+f~GW~HKKdKjP4xh3`;yDN*-G`DKCsR#R zShQ1B4_9u>COhHpiVm-kGz$I)z{B$Vw7(Yg&UO2bgcpOdm|TP9hhH`CMTPg#n}iQ` zM*79&&oOIew)g2Suk0IuSs&Od;;H_OZ_4Hk)k|~l36nTfq^&r#bg~6T?094&fxQ7S z0j8=Q=vbsg&V(Zr4xIh5XtXh9`nv%Z*-|B~!feg2wn!{H<8C%vzxK7|(@q9F)8N1e zDVSf#X4*IQ-PR)B*^Wx2cYa8Cl2Z2l`f_7y<8(TR7_F?VDf^Fa-((=CbVimkaw-@G-db4U3K6M>_Ny!7XUzdWUBot7)%qn>bU zWzqOq=AFhBP{tjABd)$wT|mbK6u25D6oj#@guF!Zpb8V4(^uK%H0YW?o#HW_C9@7D zP-+8$UnF=yGoY+CgxV6k6@CgQj25{X_U7-8ZcRGW(qJA&LgRB=rcBik zcYw@K`K8Iy$M?odI;HqkRY(nd4r0scG@t?0aWFs-+qIUr!F#f1mOuqYcs!%c2AD55{;(oELSi zG5LVj3!_n^H1Ci+z2lJ<0Acg-l4XU*Em8KwT#WQ*kMYA4BwuF!qL-4B!j5;cNl+1j z(;+XVDY(uj`)L=gRUw%l!U>HYdUJM1kZ|A=bF!;vyZnt0Ym-Cr-T~er8$t_`)Lfan zoVXcY*st^z`4^jps}LHeyj2U+#|u;bemHeNs+~SPr_>sdj!hg783_n+`FwVa(rCVs zy8{sX#F>{dG#GU>ApqgpC^_^1M$NiXb5;K_Xt@@`z#3L2BDQnnL{F6si&i8sKQP*` zNi03a_(tW6XGVYPWF_IUo2gWsxu~bxyEp4w)_6f@-K`L zQ^|%~VpIdDwDO2L0e1kWY&4H;gxrU<7}Vu#qsZD`qxY~oxt`GX2)dLxfdRDXm#n;; zi>f`zwvo;3!yGth5vV;a(5B&t8ajD=3jZBD>t@Yv1vGP!UyqryAr>zCnk^%cwRbpo zF}*SP!G6PXM230cLgg$HIfAOhEz3bD#hxE962d1v(Zf`A95`vyQk&AW=5&xWyvadCHu%JvU&SQS6|Z6u2AUP&26^89^4$H z-2u8eF0>cw`dh*Z;1O|o1?<&XrN5rPid3lW zyJ7uU-r{>@hJw;T7|`H#p@n$e2H1^3;)bT|zLbX?wfzZYj`QOba?#h;&gsTxd5nu( ztBiP|F-}!69gpmoYvPu=EjR;Ad;Oq`le_QKD$G_?&8shKE03mzXd3|z0Leq1WsuPSa~nwolMXy-CoX5})k37J1us&Dojz5ecSwLUmZe-l$3 zY7_hM6Qshovcz%AbZKZ+_t@;j0M8Z6G24-Wpo+uILe_2hMXZ=65*FMhZ~J7pP?JM2 zZR5WDlaZ}(ogGdpmxT5{wVEyAa;MjHXO}%7;#Cu$jaQ>qi#^u^QkkJYyh!{p)qRL(1RJIxx@oqf+!z*H^VsHrtWx#gjvWTH*u z;iX9(r1BoY<6I(1V_gMFVPbNUsv1wZ``|kOo7^WV(lxM2L&;2NY~M@G>B<~>hHOaU z6Jee|w%y(U;P-E4^aA}$=BsF^QOJM+V&126&0um1Tt;1R1gmSbH~KxR)1lu}d0$$n zo6;@E=x81}*S8ktf(B`2_rlV@W-r|Vkhpz{4zGM6)w9=6j2SaLlMLNc2nc^~&wY-J zVPhQ7F;rXmJqJrLfA2Va0Oo|u_`_in5==)Qt%UHuB}CG{;V=40*Y!c$bv8e2^UyB| zb|O7A_bB-Fc-6F_>E>D}b7v5LZu-s(xjGy38f|>vXqL@a8eUf}y)nXD5BV}CJnr8C z=nf=b3T8OE1{8met6nSzCyPB_0bHN0#a&zr@GCvjK}A-YTHH#Hho>+{RdFVFZUo{S zitb09>+My)`tvYi=#>)jMVAHpe4k1$S;uT8RcEmg9!rsJXgtRbum<%UvG4V6*>sey zzrBaQMuR0xO(#t88S4Z2A&v^D>{{I*hMM=LpPjL;14&fk&$aS*3AkVrw@74pnP}c^ zuli5D*yN@NC5!a#i$`-;WM+qAjD0J7THzLu47@V!B$i8$Ksz2j1^#MrP6FXww*Nl7MzH*R`TOU` zO_W6mI=r`0mT%%%{8oLIWr-z!fnT(8%k})$eVTbP#eUK|p$lUdWXgr^hQVTM&Tc z=&gasB=>8V87-l`R=Jz9-z8}aKArG&yxKN%Bg=9Vv8cg0lY}^ZYPl~*aWUK$fS4)# zlF~mqr2H&Q%i3Q3v@-nI?CEk*IC*}^nR9H%<2~GCb?)0>3JN>bL|SXbDa|bYJueVaJRcCbunnl3DB;-c4;OIUodKL za1~`kM_DdBHa?WR$;YO?Eh3Vu%?9udPwiEhAz|4V)OKw#5V(*%c)c>4R@m=}+tNQ! zbayPaZ`p2pS+vxLEO)Ry6E=D%)?h}*32)imt7epTRA(OxU4D2FV7z55V)Rmirozd_ z-ei9Q{k;EWW3sia?S}u(^phD+wb8$EDz1;YSMph`VF_EjrCTC+?wLzP=rmU7eQ~~6 zYk7p8Q9DlKBV zQ29BvWhPK1Q7__Yi3EvVqirqvve&vV`+o*gwy!C^HI*Pfnw3(6wVn4VZdV?c%R9?nUxgTEg$jg=z#2Z-Qza`rhJ^NM$;|nUj5LX6iH8 zi&!;Tep8$<@X_6uy!xSB>vmpd%m}l{*z8hrqM2xsx%;R2$kS&^{q}jzwr92uygKPd zzjb!(3vc#Xu7FdQJ^pO$bMS$$9$c`OruK+{9~<~o?A@^JvoSEw=1DIb&!8NoXJ|Vt z6w<23Y5PcstRU{BP?X9V6rEiYk6~rm5L&qDakaA$m>er{rXuCk@lBvvX>>M-NFF9L zR@-_yTv>%GzXOEC2+HzcS zxoevAS+IGOb%rH0s+2EK&UF~_9QTA3`XpmXYi>Rrn3$Jj^noZOY{SkB5y)>;b>sY> zKQ=X3V=FCaQ*Nq~f3gbS7Tspb*#n8NGo57OYs@}CW7w>Rj2a$!Hh*L72l}v&Hxs{` zyA8HHw;pJp_QDTjG*Ca#?OcsH6()-Z?2np!xjS08tPQ&zAbH!2j7(hs%GXt{w{e}| z?1(jl=311Y1usImfV&w^*NGjSu}YQVn7qhs`u+0xC~c;KT2L=>@$b1Qs~29>Ib_1n zj+pm18oSGgVp~1bWC_X~%rPX;&_&>!Eh}_&9 z$N8@|ong#r(HP5;!GeD+CQjaR;>l7sH3RL&OTX|Bx(I?Od!jJrw>h2bhtcu(eM-R~ ze2B=DlQ??G!TsR*sd#P7#j^)^ff*SGrrCAQ7`8NcJk7zo1u za9%|pR0J!CcpeeR6*wnsXCZd#!7~2f^B(J1LauVn$YX&gEyWMhxFXzS&#VCyc}F06 zoG0=EONWl`7PV^(WXBG-o;J#t^oz%OvWDa}+wfv82tJ_t0}^p&iWP_Ty`5ZrRhUyl z0NLCj^Gx+~YJuF)R8qem9|qlCuK<(x! zP|~V`) zhRJbQskAkG?yz?=KE{G~T0mN&ps@g4XeN_C=NM7Jk;oXk3U)oI|9Hw*jV!{@^lr=r ziH}5&#IjEr!1UMZG+SuYe^I&=k*^^hfKi=T(%u^&8q|9SAmZoL@WGB0WLGafdAe&Q z^h3+pv=~XCQf9FlB$;-jW#|=yjDi{3Na-Xs9n>z3k^)PZoP~1A~I2 zqDJ_;DK#UfoOEeG#us?_(>1~OUkIo#=#D=KUx+#IpuXDL!*T$b0?6?j{3qI{Kz6QA5}h-C>2i{Gyz!v1BJjQ8JQ^Vgo(nW^G| zP5m;xjVAhA!|%;|Z^JN7{3?ROlFZN|*kBk3?dM1j3%4-aE3$czo(?vJNfjuT^hufuU zm3F6QARj?BJO-}kX7&z&hwgZnVLryh#2r)y7*=$1E<_*69$kP=-_)LR5;%6+0zYrK z14P;s3H;{uoqXyVsrV^g$?{VDfo4F-jacCHD$8xT^ka#bSrn?}+=cN%hJKf_HV2-G zcLy-09@omtIn*8pvURSfrm;UlFBBMIUfIoQBMEydR-!rHUNc&srVI+kj!oZm#kKmf z%bNG;Ci^;h`n-=l;&Z+O5RX@ttVRFU1+%1?cx<=%K`m7HZp3lB^6A?QsDmRX2H25A zMZNsif=|Z{_Soa>(PB$*(eU=rFSf6#ThnL-5zfngQ9kks!kL&{$BGb^!!oM@YX69o-lx>Pu^!BuViWgxfGCW`7F{ zXx?YI>FLCi_C^XiGlF$Tytsqa7&B`rI&VKO{(M;{r6wkO(3iagW694LPN?DHgx4Lt z5!H9{Ef}f;bg^{tJLK{N?uiGWi6RUO%f_h5CQ1kC9d<$W zV$sf|?YX4?9U#={$*UmLpVwHa6Qk+a2G-|t8vk;m`lfL<1Mt734r90x4J7cfem5(j z)?b-Xur%!LE~2|?W>@fi{hk&;8ld)z>iZpFy#m<4o`&E-`8OeMr&oEWB!rmyP_xX1 zi5(<|`O3<-+dV(~TeC7>J0wU|_0u5*i={P+Kfg>`Jh+C2Uf??xey&xoJd@6dsg+Jl zsuSk?Koeuz?hnJz5u=)BWMweQGsn_0rTc+$2*YTh{J-ZK#?xIb8Y5&xr(Tw6j7(~H zJe)N+8vMu`x7%Wx<99e8;+S$g*D!L-r#4sdL`8okXp0pMit%O@V#1Hvn1ABug+UXMnCVsnY{#QRi7;O!4->Emx5JBV%$x# z$z|m}uaQF37psCXmZd&{*G%`t)BW3?HUZB@wFZYb$*EYc=f1Bf!^Rs=_xES-m^14?@S3e|` z>b@zB>7{Pn>h1|fDRcYEfsAx<i`kN-s}Eu67dz6`_F!i zBl2oamv`e+B4txBdp@=(WU|h5P7~55(Veo4k#}(}Tu^q<-Gvf5*L4-FlVrM0{qrmx z1$K_;0N&Gz?HY0X zo!Iw=XlGeA!`?^^QM@?Y+Kh*9DA(l;A!lC(`0@^PVth;Y)@rY^<@CZ2e%IxFz1>{l zOizI=ovAg(|0Uxa4aCRJ1Ih0I_L(wH($t$WROVK)V7uMZ<2;ld=%Jv@Y&)OC1e3Bx zy5K(~Sf@l?i_U6ePPrVXrAo!fp5_LTT_t15@Np!;He&54e*I<;{6e{Y;`-~^5BG+d z>-@Z54(sPmQdNcj3iGF0mVYRz8E0q9)!H68@*EnH2NI(*pD$dFqC8rDC^cujF^}pJ zxxXXIdmNLXraO|LT2&-%c@u~cM`VX?&B!%wHouP;VqjN4$MPh9u4*3N)y2-O)f9zw zem=QpF~4ts3yq3%i*QbC^Dx3eoowIT+S~aMil{4`j}?F}!?8877ZsBhAUok9ueW`} zDCyIj8%K`gPQYdNL8V@5Pdmtxw=K=j9JJM7aN0cn-MUC2yFve|qCFc!HM9p^FI$6o zW!#uS^y6f>H&|kM$BvE*+TKPKeXmL_p?CcjON0+>Gs?;gSVCza7<%NQI_qKFkHr!ut5wtlu^#Yqg})r9b%%$vAN9vr@fI;WDCgc%Wh> z2C~dRl!HHT1a-f6DbYL=aQt)G3frqWZ4QJ!wc3v9o6`N-KDX7@$+LXW>Cic^^8Plx z!B;{9C}w~NSUPN+zPDrgaG_7kI_D4=v^p4d5Xgv~pT!EGec>R2gGGnMWo8o%XIHiZ z(#joO{jXs*9KO1tlMKXub%ov}!`CM$&~33a&&@~l6MrG@SsArorx%Wt2M?W;3FzP6 z0m>t;<5VE*;GPrcdSV)o8OP@@Ia6Vz+LE;IFRSfZ{G_>!`Mo9%=20l?UQ5zD#*9W? zwQ>6%Z6KH?UHbG))C6#wZw$(|Q%^uYzs4B6TOhL;P_;BNbb1H)nq5cVid;f9P3gg< z4NU^mCsn+`rS=6|)Bvv+F*Rei3xq78OcX&RRV%=S6Vzu!_MtNZrA>o|=}m1+ALWSc zGdJeE9Hht!M6S-W#4D_5D*;?B1WKUYQf(}_rG11Zc17ZMVFhK0k=h}T0t^jit9Av7 z4tQxvA2-KFvV2@80!q1&F1rwq%CU6X-}<9&8vjDn0(io=8}$7vs1(H1JmE(ak6#H& zWUA8Xz2Xyj&~Ar$dx=*VsH*3xN>!;Tq$@=2a-cSV9%y=k} zvF$msv&Z!yi(%&ROnvkBTy5ssFph(2)>iBVq>Y#pt?R+m;4_UWA; zr>kzH0c!bD@OrYI3(<{)_48&O)~D_6#HFLXseC`jEk-@9?EU_K8%w^eH8dXshW6z+ ziUZ9f(U{_U54~v-nyjt+Tl1^!qvdMZ@W*)j3o^7(msE=(s03WVE&E(HF~EtM=HJ)6GpoWY|h=n5V**zYJBxKho?M z1_Q2>NnV%?-T-;ut9E?yhmy-{XsKlY+MF4{GhRB$(G!Mhx$?&DG#8LXu?MAo#E>(BBob_;^^EnURCK}t4k z9?6dPoAA>pQFNs7|1c^)&I5M1iaV5-H@zVExJz(R*{g}uDL`@vPqZ0Q!zXy`^vYmk zdA@%qTEo^^aOLeMvL8H-r{uMm(l*RYH%0|Xem!%Pl}H>R5zpWQ?QQItdb z?b5;Q%h?d{i^fEPP$$l&)3)i*jmI+@C1&fjK`yF8zB&Af}!bstNEw)Z(ATljgRl-}`fB9S@D9JcGG>wwAs}k8>V(e=mR6o8-;P z-Ug!%$$O?(RIqko<0Jj)+iugMxGUY<%NS1$kCT}|Ajc3hLzF-{u{51inZ@4CL%Yk> z`;N{V+*#@7V->l>M2R^|Z-*uRw1iHD>QS`vIlD9i67C)Ilk$D(+Lx<~@2lW=H+lF8 z(U$&=d842|wZQfV|5mWtr#PvVF>)PP(or*l&PD5`;S`iqmKkL1L!%hp<5w98U(t}C zR+>#L{#?zm{Mj&PI1-@s<~t%GPmew8=rg9uKCOq?dm46EHJbxdT`ft$ad9 zH3z6oXC{{&mnJ4%I$?JwFYB(DY~kM)Kf3N`G0asu9y=C!HHPcer>V_8_E=PpWC-O| z1yn0ZTSiv>k|l!T=!sW>W1=cW2kvG*X)2*n`4;?oqcPG&JK)rcb9_%_?TMpUItV@N+v*^*y_bCfggMc+HPiwjtx7gaXZCIGK^-n*Fg zbq6~-DK}+PSJ(D@ZArJzN{VSmN{8N*Oas^?wUpeeN2MJ5o>>p&SkV9*&)J(8*mNfs zFSQmPp;MW`eh{RFaA*6kU;`V0nYIY&aKpPqo}2r8nV*pk zo6}WRQx(dSqtd58pFCx6;*kLm%r+EOfdl;A9Vz<6%#2e^BPM#qxx!vsE^%b}>-?#* zG+x|}I_q2%LOI}U;St+yG>~G^sYo(&7R6|_h>gd!o1G-gRFY&fMv=eKdF9*3=L{$h*zk>Ec$c+9%$a>oEszJ`Xt-53r&VWm2|I!0RAB z9Lb($Ct07{@hZcyco_S@$G7FyZCMf_J$xC>6`S$&&-qzG;__tPDh8{VH;+$!T2?!R zAJ%xMq_uK&=0U4gA*;_H@01(~&#E0~t(E{8a3+lpXZ?P%zq~E#;M}v|tbUmm?!hK0 z{{+-C?r_OB5#btKotU6)xP`ac>5sh^IKB$J&4RG8C+C{x4!u_z9e!PFR=t<4#PmX^ z>r#qG1uoZpdw(7FHD{upMZCTthN3TEPnB^PLj+(1c+gE7Mt|SriK)7XDgk}kinqoK ziKCCN2`{^ldjVZ0aQ1lY z%F+3+F_`&N{iM8X-iIWPVMqRbJPqTm_v2|}!ZL)AFw2M%g-(f2KC)#w7Yl*xsZZj$ zcx9jj*pbvIbyAq3rbrP{+ca`cG7%|rcVs6v85y8B{&LS#i zGc36?+-jEXQloiLvhnUBMjO?2UyRysHwI%*8{ef4^Q(H@>fc7oIYB7{XR}zqJ_{b> z^!5=9x|24RyIsn(bpXi{0SptD|Mgr&=zzbrmnqgZEu!aC(8uwL{YZ({&~<=LyN~@* z4WcsKx8$?oyZJrTgNFY8zR|`P);g&+GC}t$4Y$TI3>jFm5TZy+Uj(ejFZ^02588LU zv#O20O7Sxdewhnw-|q$XjzqOq=O4x=cdj>dBJ?$~7fmo+AxFQ@ z?U$hecL1fXLp4m}%!R$gt7gu`Xz{N}Y859DS&|w3i+#!Jf0i;hY0Q5A8b6mHT$zA$pQ^sFOfLX z;-aouRe4c0osH%MVjd0%Eyiz9v@LGwDZ+u2BZR1;r*8vFQZ7}Tit40@d5Yg@7eel1 zNsn$A4uEVOod2#VlRu%#j+B-3e`h8<+Rk@hc(3>{pzQkj?GHIyO)8W*`c(m1MKS(T z(!OJ7J$}_zK^we3GHXe z(l7G>K$*UdS=j%c)<8Vmi7;GSz=ddz=gOT^do$Mc8LQARI# zCF~Un#Fy&R44ukAidRF;Ng5O?hoh+I==cum@H7^hvF-QL6u&$-EBwMkFs`-*5ZOtO zOc8Pa@T;vEh+LIA|CB+qb!yV9Fd|_E0{t^461?zNWf$S7NSyH$gh--WY}zLDZtm-T zP=DC^P2}9Ow;1&*ya7UW^9I^Y*TDf{ZtiTGay0BS(e0bJ0ZF;|jGZ$v;tm@S&$auw z{zkqq>6lH|GdI+`*oOop@4nD3+1TcnP91ghY%Ke9$?l6-f~Q8pGyOG_)_VQsLN3PX zl*CM*e6~5N;CKD8L;kbp&ywTJW%Z-sdi+uE4$0f^5U$Nw1C|Qi0gXK?#~tP5Praa{rh+Y#|4cG<|m^7QPckrpKk9l_WDMybY?eCsvZtJp;Ayao%RX3NH z@n1U`+O&~)m5vwMp|XOA6;y^@8cesJ)35L+;`k~**r@ij7|=*Bs!%fg4?OKwz;L)M z9+0*J!%&T$k^Ly=4fssQb6mkS+R~A}x|aRp?4)mPe)dEQ>DZR8bkW`y>muE1dU;AS z;!S2HS~R5dy`;DFnU&ve*2WtAG8`gbUS^*@mRx4n!7%kcZ{k=WN3DuGOkU)NiDE=< zQ#K^a=jnjBQWxu-4iePocl!gGKbtPS7@FB%Q4kj|&1@EKQ2%&4X&=eqAiEMQT*_gc zO!F{hxAUGfAN&r$?sKM(G^p|Yg)Wjun5Ua{dw6gZt=SLUJ8YyOzp@>D70&xdb%4sR z7rv)=d-%SpGwGHBX*_HF-O@6w%HF)p*a>s=@nXVrxf9NGAxDcbZmjv+AjIHfXr83! z8j!Q^r#EVIs+Q(o!x4O=_+a4O*n7Z>M>eJ0(YSlZVtHqz4NI34oq=CZR3{t2EQ3={ z58}C=vH21O6MkUJQF>pO>t9O zq~aJa=%eM;PWhK|c`$$DU>N2bO3q(IRHSRx;$b+mifY~a=f@KrNVklg1+ra47t9E4 zBF3T#3$uUO7qF#H?i(fUguStmYf}!0dml;QI7U0CS&1`~Qqml_V=j$pCH9in-yBNW zCuh&z(cs7;#*Xut@A%*knb8Bpftc*Wv>TfR3=5b-u0K_>)j{Z3g0_wRQ>7sL7Ayl5 znG$WOL2p3PM=!OG2U3STLVwA{s7%YQz&nA)Q0pb>Fc$xV$9#Ka7|}=t#LH^(cdQ}t z7Jerb(drF^zOaT1j6XZQC;Q{y4AcAS?{eslPuEiRz$>2qt%u_gP_W!WXa5>0Mlt_0 z12bh<2Me;iP=NcsR7{tuFu4;86>WGW@yHx;)QujN6ozAuGLcB+xtq`L)3aV#I#@&4 zK6YSDHx*uGonm(Xy+hEKa6uxMCN|YlxdxSP9|#z+rreP=hRYbn{>_qk)wLPIc`1n2 z_%h~IbH>H#`7V#KKd=%)g9yySd6979&~q6Rtht{4q{one({a9({kA?{B*)s7VL@p3 zbg2KCf1}o_v-_@l++&}%+RT^VHpjhwre9`O*al!Sj(ylOas5Lfi4Si|%|H+ubYvOY zizQOCFAF%A*+3y^$eG%E_QY1k^v|G!p;7^ME|4Fs!|w&9ZzCl`u0{tvuPdS&6bjzg|wf;cR=x5#T=axHL?S(O1!Kw@ll;YfDv|K0VKO?9eDT&KA zhW3vVwmmOZ34o8^du6d)O<*d$zhBXezKZ^SG|hgh?)R)p25pZ_?q_G6s?Pu&MLraw z_bD{DHJ=_~?B8;&A>wjwvz9fBam7#<@1?Ih2NGc9XT^s+s;Jg9^3fTnV05cs>xO{x z+BS|Ng!ZOpS;8WC@Vxn~SxHV4s;h&rVxflKCcSM0Gy zp&F@fj@42E(VI#)ZHcp)-De|qLxj+0`)g@fX<=#jChRi4&mrV??{#caGA z$I8@QbNF^o<9wh$g10;!zNBL|{z_zW3o)%3%~i}ZlM_%@`F#}pZ%wSxGgWmRd$hYKOJJc8@j~Pf9=5ztefFBt?(aY=kh;N*ir0| zd9JB!wD@!y@r%yWqDy(VO5&Utm#4f0#(hxNf11wzQ(ZURhD-YUgpZ^ZkU4Qy&E_e2MJW9Y-WZrtn!-H(obFkX|4uqxJ5>Ca37-#t-q_6wSf@Ej zVX{NL5;b<;`Wg@2j&N2-cf(7{JxP$Z8X(MHYcL4nT;<+$O${B0)9pJ|q z|6IwYkl4H0^aIVtiI6L0`!mmckv?aM18(n?5$^3MS}DNCO=20I9%ojcjP>|FHtt=m zmZmAs3U1uFkgu*`DG}@a+mM>bVH?{lD=#;x?yAS(3Nx|<;F3~1)ZuL7Sw1}~@mZ6R zZQ@qg?3j>PM%k`@>V|y~AG;67y>@@NU}6#G{lrnjrwPwk?Vf5Jg<&I*k}RIaJbLhA zsla$7$jM2Nl|I$EmGwh%P;S$|zhy^y`6mojiAxb>YLmAcbw}60S|~z0eko}VHHvoR z`jhTBkX^nfuw@a-?Qcx7DYEQH$_Mo+)Mx*Sx~6Y4L^0p~6olH2e|5!qF{blN=pr-f z<$W&{$1T;{9)h^v%U)pw?_&eJlHAmIOi_ckeMnzQjM|B3tEUnNM(yJg!DKzbtvA#6gjH`t9jOkO1cqG%gYGQ_Mu zZw%QGxKPIGvl-l}LXUp25KuD+p`?xG;cBB^z^Ef7vto<(j$+9c?Yhr)h%-X4zo|nn z9J1j%ID2gN`Dp$cge7&nAzHu=14$pxcxt@ZL>5K-QfcK1bdWw;6j0>>Z!^ z^v zpqhUCnkqH3C*YC|02H2$Wlpil(KN5)oyk$B^khqth2?gb;4Zg@c56e#aBY#J9scCb zsUT;Q8DBQW)qYa_C-`Vw;J)iz3J-COobF_amd6%c!X{k3oL5PUau1h3XPo}O66kbZ zvwI>zsCQ^6vXF_W9o{Z$pFg$-*XA}Dzl_@S#*i?hH#g-l)NCFa{;i#%*O*0r)m8f` zuBWMIjXo4Ke6M$xOM$3xlUwrKx|A0q9$s*FRxPI0n8nk7w+4SOk8kTcKZ4>6RwcsU zAyX=L@)sc@rUfhILadPwA$h;a`%Ui;JXE}Vy^d!l7a=Y0x^Y6ZhIRtdf(=~x4Ne5J zOUj*#+Y+8F*FMt`4|nC{?dTGAb9s&ZD#0eXW?1L%U*_XfvBhY&9rIH7k~jn;i-F>X z<^zTYeQUSo@YnJDAeWL879)C3%e|(>6Z^2uFfnrYYPmqmQOemXU<|*H84=2B6y@3= z7uwG`3tK3Y>%sugU)H0?2~Dqp_a{&JO1R=yRU_Fg6=VAu@6olCxv|u|$e#}HwS(H4 z8XbkTb<)$nKZ7wTFF?ARB%z*LSH1(X4p@n68DuAx#B$R)?7Dt&F6g3v_Gt5yS9SB6 zOB!C_Mhi__=sKVPLCoq3;>5V44L5{{eS$UQ*nHS!*k7zFTpA>ZCk}G#?$|4H-rsrk zdufpCy$anKUF}b0re?Pl-_L;s>=IqOS}`(p(IKsM@0^GG|6$*r%E-Z2J1Js2^2@-k zs4{#=3IFd}aU;jW(mr}J2F^H~hTAd#VmM(Plp$kNAE)bAOzny6Z2i6Gd%tuO6L|dt zPgS%La82!m_gXv}t>~j*+iw5MVDPW>`->ljO;$v7Di1#-w4s32utQ&5^iDBQ5FI?G z{lIij)IK%azAN@)>cQtD)eVD3j)14*AH*yiU($HeKK9SH1Vz~C^-NdABzfdH>e`nb zdDdM4e`O<7JJCGxU&T*IAadvm@P?ye|3i7OM0c=%FlyGj{9a0&U}Ej3TEFDRP9;fK z3-=o??D(u)?d9PuypwQmKO4#0sN;5U2N0-a*}*+i^l}MwdvwmC z2GYIanG|0usNtMUMV?o*`ge6Vdv0pfzVy^MMC0bAUHa^|MwbCcOOfv%=hf>Ypy4jN zZ1Keso2&e{-)tu!=5RK@wYN3X+z9?OhAj4Kj|KZ8bJf<5-;cJx2Wyus0tQX4;}R;B zd_8N^MIqC-bK9qTr!vgGnRaE`s}|7RGdU3;ie$=Tg#kVu>?G(^-o}!H-ZJ0|^ilL~GV6pu)Z& zG$p6r);hL;tqTM}@I|NoTx-s64Ok3(CZz1AQ}SZq%rG9>32Hgn!3F$qT!ayVD0BTl za@x7#oV3BXO{Zd&BPH3$GVH0bn=zTPS=`Ok3s%Ec2>WfD1l5B@A1^kGo@W>1Ea)%r zx;pK1pZWlCT9BxU6z&fND2Y&<wNPMEWDD}Rd*5F$DK~357#QU6Q8WX zxD=Mvy_^_7?pFURGNn--epT^*k@c2gO}}saH;Rfh(mj+?8kCNSN=qsoQ)$Ksk%pll z-5{WVOhh^+-Hb-MTY-)4(SwbB@6Ye}ANO(G@dTa#4|ZLg*Ll6K_xp8%k;7l7yU?YV z;8`M9{xMin>Gsh@C+glQG+sw{`o6UamwAm@h1=aw#l{b{f>#MfTN%4kvipx2T^dLo}+c;^l_IU?`_kM$iA|A;R_iR5QR ze!@LQW(!?PFwtNA?*6ccb$8~vO`P6-P5gVP{_p@L70sI9hb#xLe1TLWB3E$6`F>aK zr{zX+%P%L&-i~if)Pzu5s{8n}2e-59|^xxIlm&$LJu;8OdEW5280@QN(4 zqv3YP{VU1Iy)HoV>|V*wl9Kq6A8#I>-fY17yGk4fWw~$p*gk%QdGMuvzHLK4kr130 zB!bl|#pvI2F=6LIOGW!YfOt1a%jW{2YF3N7p*l- zDzW@Jti+Cd9j@tdZ@%OIbamv*$KhG01ytAQ1O)3DLSPCbvP8zasochqy*9-99PBQVOtfHs*G?GBCNF<*G?~@+U zPrCv3L)z^?F>lNA&#=UzczxYtx~Hc%5?!vBu!oVZLHxPq+X1jL84EaqVsWv9eqYnp zFx)`-V+Gl{*>zS;$h_mqK^7Xu&+C6*mH%u`w>;28V`%d_XF%~G>C|k#DZ!LXN*!BQ>WiISQPe2MWv;ZA z&qn`Plx|I>ZA*W%ZlC1!P5)q$j3a7*sJAVnFjKv{Ouxe|RwJd0U!Rc{wH`{e_ZA!y z5O}&|KXUNwZEUFLrxR)*o!XnBa-;T0BTB6N?bMTIC}YC;IEL1n?|p>Xn3zQR<)xh% z#hW6b?oVd_k+6q2i-Iw-UCn{tY81`IbJKPHSa7Vm-;S@kmDry^Co%CKN!>i(!~OQF zE6==)!JQoi?f!wQ<;myk>-(NZSA%Xx&4%0VGQNl^NU!&pikLG?CT)zgd*sqXyo(09 z+=fUuL*)5xcMrVqP1CG=m9JF2@diZB;npm$9U1D06ks%J5z<-ZoC0z7z#YDbqSl_6 zFq*j-P%ePnI5@s8XUw`wm`!%q-S>{lES=F(A!sDp84R4A^1ce*AwaDJGzJ6*gQ5 zMmo%5w@C$2(z)|GHp=)9cV7{K+RgAOh#?3#NJDuDvbcl`-yD|A-OkMLiL|#=3A`Qw zp|8Ud9jL8F2@GLG@<&C)Kj4~zTuiImj^bjlO8?JEzW5A!Edj#>#*^B|{gi_=!iQIq zR#hG2U#9gS{@%)&L8@Q7D3$0-uCq^_fqsYTi6G<7!-~A#|EEJm7~*uk5JS9TU4zAQ zWAZ#qc5Yl$ko6*}3o4)i{kU z^iKaJW)MvAk~V(sy$ZC^Z>wwDrdv2{-{)}B7l?ikS9#2N$c{W(sdki?C;bF@;vDk3 zH*#eW8471>fX0SI05XNQwSEtgH;^cBq*ttP_~}_<8`J!&oV;}|;nVps&3wzWx1qEF z-GJMBSiD;ck9V3+qYxw||4XN=x@Ma8O1MOjYJUdDto*Xx~ zU-|Z^{t6PC@D^xtkAc*f#z{lVRS)Wg{q(zL4wYhJ=t3L*ZP55H+!&FxY$DsIMI-Lv zRPfzL7Fvb4=XkeW^ycS%z8j9S2M+`uaapTxykg{|N^F(fYz^)JTqyGq(7@f{=Pw%Y zDuv!o0~dJTzv?o3PCx%4M3iiu7RM@;{gH@6ust;heHaVBXBG0cABtWMJ%&J=XkwwD zuM6ML7UY~al>kxUdIyeSo>*oF2s2do*t=H#_4c| z4Nr(dgeDTTER)*8MCZLu>-YNr<6+?WeH=p(uGu1m4JlKjU>v40GbQG;CRk)Ro%Ngh z7b&5RxDZmShr$~ZpffG6kdWbE|02E7#?hDOhVxHJNaRRvEVP>SZsz#AN7Y7)9c-k1 z%hBSjdofxf-{E?LjcbNR~<;@$6nZi|UD zNFT+pM4bZaQRNd~(7exaf!f&sfK_=0Ze%;#nFDn~&)n_b&lLOGS<9Wht@^IUR^erU zl)f$uaY>|r55RAxS|0H)IV3~&EP_N(&M0rA?uYMg{!FmYxKH=K+Y=!PECGNtdU1-H zC+#va+m_j_@asjh*xi&(rgNhXuq=WNY#tz$v3VuoWM}JlKLXMnS?yP`?|DvkO@9S<64kIV_p?7WUVSgQrrqb#KSv!W3llw!j7PbK9}OSmBdxcudh?4lzSfrZEc*+jxqW(I zS}P^XjBa-@lEOSqm@`E1;<^ywU4ry3Xv zP>ZFOI#*{EBg64S_2UvGy!W>syqBWo%_hxWQO(;P4rKlTBQCoYdUf&YFw%5;?9=fg z$#_;)lXvUOabOKe7nS>CHH+R82ltnY<|LP8zKf|EtM9H=Gt?ROgLu9AGkQTa%wa&y zi)iDT_yB06Tbbaf7O^uYbkoPZ69>C6!PMO?Y`C4i~9ZBjUC5dX2mLKN6`X{d1Mn z@_#O4+q-L7GMNuIIffglRNe%T=B!YyC0gKxiRAWpwIF$%^if_HwA^ARz&+;du3$^` z?8Lc_Tp9ZH(oeBxQs2v1wevyFpl)iv#wC^%v3y^D*@MM;gq`=g@nTW&n9Yt2kmW;o zUA_3(76P!RR&wEF*HxnKHUD_cDzmyXY|;>guwW+lLn-YLwl zHQ5PKeQmlD9Xc^O(m4mD947> z#i6HOYXA+o153UEw_)fC6+jj3d6ns zwR6=e{CfO*^kqpU?-3(+8mB!)$>|0nPs3J?WX(`@jL|Uj{}1#l2}lTsmI`10WL#3;`<`BkIeH2YXv+3HO7c=PnI`{Q^*OrpO=>2q(P#MjEEMIX zXepDNAvd##lt;j)Xc@9lkE!-!=v4TEz#@Zq6@^$A$;)i0O05vahG}u!^KRuGdf9Ip z-;~9E$(J1#^zqXtFafweFO2wN->ULPxwlBV0(HSIOz@=^*w@}Y=LYYgBIw&<U6-_GP;2mGok7`F4w?gNT?R@hN~nFb`p76$B>rY@iQA^Bd{F7FdKK+zKgK2&<*bn3WcYz2s zF0CyRzz(j7s01wI$e)0QeWy(6aRHyy5}m*ll1XB={#H<*vQI(`t?GfUuGaff3dzPT z8(M5c)(VKy`ARGi%9Zdfzde0sOkKq+Ssfq)?dE80)D%^OV0?SPGz3l+W=9C58X5&jD;lnf#C!H@8xMCv`Czy*^z7y zBFYEA8acXqxfj0-w~ME$3rPE1@&~KXTf%#+MQ;L#lyCGqfBq6j(q9I7dIwJl<1o0v}0?~_yd*4LtY#G!)t$qQeC69N|=h+?5+zmQbG&yB(fiR2KiqnZy?_^?= zx%a~&8lo8DO71oHzh)Ib?#&8a;WW*v5kg5-+VdU;0ARORF~U9n>pZA8SMf*tmTA)n zwH@Q}4h^gSNGNZTlg53r!UZj~DiHte2G5>Vj#~=nDR6f-LwTb7ry^V{byXzRMByRh2OV&nk%ypmG=W(~?_X1Mo%aEK@{gOnz zB1hb*+tcA?638}+tF~Oe0?C8zjV`viYoW!Jf17xK8ScM@<@#OPOiIETkb={FvM+Oj zXVIvun|%_=d~Bg^pK>g^_W&BKGepVwTU*MPhvG9yc%Sr{*~4Z>c7n-!91FI6+8)H-w5u6P*}eBT+$2r@GD`Wz>Tk9l*dTfl zOzJ14e1~{-XyD|=zOJO=Xf9Gy_ePfdkM*98P<;}}B}vxncxLHSAr8_Gf1KVss?~%o z_%V6cJMdDbc^mZby5|SwajDGT5nq*=RaU-L+{mFuWBufZeb95_Xv3s2x}ljx#bf#g ztp7d-qZ`Sp2S}n#t0w5I>6P$n_^akp$D8U;4#;;_*E?ffcS^Igt|#Q4a=LYuqAg-n88$5dS+<=1)Q6~U#08k4z|SPtzBwD{iW5ovD* zOS)(4o~`C&E=~OXFByr$>ZG35eU&yWN`!*8fF(MyX+9*E@G{s%{L_Ma2P6VTLr?_L z?^>8)xOm-Q5iHG{#60G1j{H6C2wxIM&+BqQtq1Ar=Gk6mbG0~L zT_E4%nD9z{tAN8rxWbD6tS;ZXXppIF(BoZ<+yi5>?~!67mf3G^T@3rF{K`;p2=gon z&M~d8e0HL>R;d~;S|hO{xf-_6hQvKaUqjL9@wU`G8L_p)!s_F&577|_ThaB_xIgi} z{))Zdf_tIg7~3X4M|pjOlJ})^&Rpx|&<^CqcFWJ2#+fX+&SNbI`Z!&_aU2BW*j;{S ziM8uRT~p-34_{@2qD&E=&9_X;evU+nZ}^u0V=`rCx3>vUZqxF6RwBEb9)|53bTDY~ ziY(GSzGWguzqZ;ay#Z&qM#7nJy{m&01n(bK)Qy9Gqdxve(pI^<)QIHTFYK49X;TT8%qh@cO$HcQJ`-|bl*SJi^V)?iE58KjH zt3zT`@^St^EM6E_)%6aShhC2KR$CP>v>CQr3+B{r!M|%=M2`|Uov|6+LZujSN?cc0 zm1Kt#GY8J}$W$HZfrWu+0k~=-wR9WE{@W5>OnOshnbP$YTFnoLKXC9hB#p8#u%l+% zZ|~TGh8=B&AEmPA@N*74p}7m@@?QCG8XV#e5KDA3@#~?qy)7;zh4r zDc3%>*f_^mDWie1Lv0p^JHfST#xrM&AZlkXh>K}@Q*eC4Khd6{Qbt3XZw~KB2)aRq zM~OsA4Xh(tBgRs_8ZdM{Zb?vO7(`z`Iw0eRqgZosBTkfPZ&>h14tT;2S87EY-m!L#O6|()Eh&XUrO0?yH*$ zlV9l4Dx?Kl-jYrq8*ejJ)G&!zJn3h9^EB1%SvDvA-CJ?5M_h!CZx>$z66$RLCLP+V zxB3Ex5UGXQY^3_e;3mJru^CG)$C3Q%)Cy; zr2^IbHK6xBwOMva>cK2iUjN?c0VHt2#+G@4)QFwKbKdI>gCA5M6-;|UwI~8zAEt0` z*U`TMCvXgo;by77y-_nKdKT-{$M+eZvI^?xC+_><^!VCem+oDb;ad}8zG}zFsyzC9 z0Ekqk^e1~m`5w6Ir323zm70%PRTZ@byieRcz0aH zti{oOD=Lb4n6RkKA&BQtAMvc^SWht=8{`r5U#x^1UcSPsz{f56_Q`?GKsFI%dc@HE z7#C(XE08{pIF`aW|?@?MvG?ZJsmP3ylhM21mSOXv3hu@>H7SLE?lknK?)kz5qb<<;T) z%GwY7BEEdpk%j#=kOvx~@$KV#!_~#Mb`SD3q)xm$Bxadh=~YpX{H&4}VE0u`woMuD z`l)=K{cX?eB6-XRMt}zVW6D z8l-4+3~*&rH}JNp^5Bu-M4lZ4R?4z}MS?^jYc@f6Jj8z0%1&y6;vvi@?c{$Le~ zWIFkxw&ra%BRb^oAh)2bQG7Mq|yXa}cji`!OZ{1zE7TpL!QeXs122uko&H)8l?*h#mI)vca(YR<2;B^cf>1sIG2_S`CcL5EGc{WF z)sx~5)lfx!`i1+B_i6sJ89r~RQe^%+rbeFwo%cpYu+Mxy($L4&CrZ!%!nS3(bN~F1 zm33k6{o&~ZOWItLN16R!+K0={Plr0ZYsEjaANCFhETi2c-b~lh-m`Xj0Fzso&+o}8 zs%#MD&*^zxBeP_=l76?yL&r@7ZhkDJ9k&@czg-hjQ8@RoUe-uxrs>47(@UT4u?CdC zoDlG3qP)s^*bQ@3`0i%sgWf}l6cQ`D6lLfnk&(ck)se#<*$00({^9!FuB2|R6HDdg zSexB~Lpn2uTbhkxEHsLS``>~f8=onXV0xVnI}J$yV>A2~0ACFElNmSmE1iO=EIso= zQ}8zTTaHYE>n-)dcU*BgcMOdWl>j&E-G7KE!pj9fkK~(@Zag?R6OOfyx!61KdheQq ze%Inpz7&A&5@h3li~aKV-&+1)IWV~3#&_2jQ%2DAYsmBN52KXN3&wfFmHzw$V5pwg$Cg@~F1dse5}$5GD*%CZXi&cs!fUxZTPIMZn&fuWjsH?V*pgB?;4JnE|Ui}CAP>=5CJs=9HR zbX>Z~DS!B>2cGKG^g@9q6=v^R%GFw?L*+tZz@$z_8gt3H3QqGr3leYEbuKt0B%iX` zXzeZ6_XJJ`T!nN<5bqHrCxI{E$x|+wnVAtvIqaZYmhs=ScL9~)C8f;mqMvQ9R{)ym z|7c{$3?S844(Gv^Emx&&eh$*bYy}Adw#xh=6Pd+qUPxLpYd0lz?t6nuJ}R0POxq9S zC*T)~LTK8U0PY_kf)L18_1PA-ec_yw0&VFd&@L!bQ5FZEPu~#aO*_|3uZwUs-8f0w z3z#sppknY4tb%ev%tZpK{%tt_9L~GN-fLA?v^=Q~W?$afIpfHqw(*iwgVX-`$?s!E z56XK()`aKSoUj6d=)}^-$xH0$qRsJ@mi_{_oU7Z0=KKpen(Cn{dH6b0U4@W4jh`T( zg#u>gm>i|?(YT5haNf4(uva0J89PvE^KvGo!{zXOWz(gh_QZh!rOX})#Vpw>?PnHX z#7AuThi1iinOzOw#Q4Own0?5t9gjqbx2R!`@2_vkF&lS6ao77W?xI6 zQY%oaUs$*%4Szm%&?XXOIobA*IOoePROuuQBWt&?+`%TjjP-;4bWY;F;SiV+E%7+@ zA^=l>jf?q*xNmp`0#i0?33$Py(*-QM>5}8&Mmg4Z&VqPzBT{ii! zk7;eWdgBw|-9drQ^yyq|*l>_?rvRgWfBnKD)Q3ncF*w)gcaBun)8`nXLzrSl&(|!<4|}TFegKa3VLN%d#qg?zm`i(^9ct;*w54 z@9E~vmdAiMx!8M@jo_UCqO3)P1ItAXQO<1v0vcCbt(cyubiQcyiJQ5XEbr6b{q;Es z)Q^MQJrgzBApS3c9_F4O`A+OxX?{;h-5oE^sPMKUNT#0Wh_Loz2Y`GvbrE|K5;c6! zIc1u~d~EZxqKt~6bh9=G^6%5U0_R=|@oxwI=Dm;EggnFLjxT0Ibmm5|;C-@HeF_}r zq=!M~lL}Js8~vzQD)fBIM7KT6qogeE^{Tuh*KcSwZWk-Gsy|a3J8WsK5K+9Q>+Oru z&FLN4FHdH6D&Kg9c?%k(6aUR@^~TPz1Q&wmLWRL4wn{M|y1C9ENX zeo4-eqx;iAx_N+g5gOFV%ak*3d9wbs{zL23GA4j*@0%lDc9}T15FQzw4wJ=bWEVT1 zf6jzRRD$HvNM6KIVg36LXHYJvH?-l*%Xd(AiFdYTW_Dc!Yl!219V3$-y>Dn6Obp;@ zm(Uds@%iQR=xUrJ8WP#Y(NKF7zJ|4cXn5M$E)5Nof4lME*^g$sqrP>#{##p`G+XN0 zCJ~Rt-b(e@b~VF~WMdS^9)p=Rh3?z`k#xZYC)R3SJD{+HvafruOwq7|+9^Br@-&OgZ6f3g zbydqRnrqW7;WJ+%<-a5PB~e>+V#Keculu%BEvmlk^~1Ff%kF_1;`Dgx24?Bffn ziN|cQlSP~c8j7}<_!#^#`KuX2iTp00`|J4U@v7j!;xg-SFmOQMdUxd0h(^Wga(y3e zpY*;RF>^5201b@)8+pScD`GFwm?S}isy)aHufEiWK_u2w3#J_K`$Vtnru60$jdJV^ zbd&PrW7OUJOx8@dHVOBZ(Ju4-H06A{b&l!VW)+HWJlnZc|Ez5Ca{N~D`BHdRVpyq#85+*CEg9L2T3xdkGNy0z8v3Gt+!qIEbZ3$I0Z z;~vK??oP9PB9g;4<~Wl3AiJW}FET3f;^*h%z{j8Fp^oRJ*8o38V4a|dZsjnlQTPI5 zT;gl&W}bNnHsI7pM7uDL<>FB&>+dc@4 zIf-XDzdNI3dnDck7pk9NOD6(J0M4t~A6`fu=iMdDr%Q{rbB%?Lx-6_pB1f+cJnVc)>GSYGLRtbc*!)mE77RIX+NY zWyDG*ep~y{I`O{x;PaJ3oDhh>5WmR4#6vjbT|Rg zV7iI7BBybqYd?cDOkoe}II6zKy2|k&_^d(*Ro8d_)DLq zHw8;G$|mkAm<2nYC(gGbZz_dF8utyJA}OxxP_DF*D6Sf_j4mQ|`pmBGO%7^zznT=M zlao77$x}q^sCzuLcoSNxy5Cj@BaE!xI2RG2=c`yh7*7{ z;pfDj8Q4LsCFR-g=0^L3CCn3VXX6Dq9Z=P811+AfRXVcbhGt0>>xy!yg{zRjB@}q0>hOF#}{Wh4lL2-15E%Z+BKpYp2Yv%xA$f67fCO0ewWd3_;V3RVb+zJ6A11EEFX^p)Ch>rI^qa4rYt=e;_yI-W#jZim_14D0xA-%dwrk zCtX*%=e4L+yD`Yd7V`wN;pYcES!S*Lz7QalsN6&w!o!o(tJgI-UeD!q%` z%Iabj{q|hr^UKt<3*LrX=Q((*{S)Bu1dBhNK9vnGQ&DhPt~yU%0ivkV3U@LEa;}b# zg&(^9nqoH@IW>7RPnnco&q&kZnLWL#Qfb)PreGLnHnsu=m^ijn>aF9fnH92Mh--1y5Cz9+Dr+bV@7>{$*C-AWo@>;gpN5 z|2j4O>q(m_hVeJVXNl6R-&l}p=$N}nr`P#|y6|Qrg2PYP6z7iAvPA;>H@cLyozCXz zc>IquD?(w;3g^`fy`p+$p8sSuJ^M4$^_B0#lSn>?1D7Mm#*5OtdZ5nf3!pbx$<~ZS4_?$)SS?n z&cA#_hO``vg2`7C+C7B#fq{4W1bWjRP^}o!ws<%F!i1aKx?H}cF?$`-h|HeZf5QCB>r;D!N34Hea5E>2`Yvvc4dO)6sCY#EVOYx}ERkan7sT?j zpU*E^rbD@_?b1qJg0k|RHr0a^Egnxu1?aavfkCh{q>46T?;yWA^rTz$d375fU7O00 zTvz|7)!TrFT>6#p5mdGK|48DznO`UN^OBw12{Oi1d zFm9r4eu%UM{MQ0JkGivD*pn(+=o^d2QhBrBZ00xZzK){;v86#8ge9sUURb4C4j4%*eC~4<{xy2P;z#AANPl3mCsj$ON#oFS4<2{YJ2gboARR0`65I5= z0tY|t)2*L+TjT#=I%qy;tjTJL)JwwDx=r`D$ZjDqO}H#^@(K)Cb!hY360sLu zIpos?lQbE{E&tsw{rTS|(iy(*rBLY`v_6f?lP}4et-HhLA z(hZNKTdJ5T68VgT)wS2&oBk-5Po3K+?w-nx&DRTa%QSHoT^fYjMEK{q9`0*Om zjt4m+ofk}MX2<4)G&b)yPt{7tw=K%kj2DN>G1;NNC%0|6oqw5>YgZi{BNM!&h*0Vs>y?>Oy4;A$n_QWOGMAPfz@_8JAC}XlJze)En57qO9U2E>T5ea z?9~^Fq_`KqsEgv=ON?ev!*-oNYpaF{jCT3v2sGD>i4aOlf7n++PNS77Jq0sMs-FD# zom>@QM?qM}eOh(LX%oE5U0zvP>GJRGS80(a*NG2&<4e7G?JIp68KoqQS>_`4x3N`Y zjmu|RgUf7yhk*Y4rP6;-%cV4!isM1UiLNq7*$+8&+jngk@`*hlI-ao)mlX@U+D(ne zCQw~dJ;_*s6zG@NBIc0wgvBA-`gK#QRi5wc>&kH`Cieb;nE)`(HnyoPCeX2~*Rswl z^NRHR2~O=gufmVT2G!g^9ITuwIAZ>hs^4^1RMbf8b0{;(>IG$E-ctF-NA2GvghLF_ z={+3dtJE0`7Ls=_2)%W=LEm}2sPR4=^QhS=!Hj7Cr@v1bx`X)4erm&Uo!O!q>{YPC z&fjS2;N+~Ssv&K?GIO}#?MHge6(8>KI^i38 zcLitK04*Zali-R4?Om^mS{mS@(ef>Z?nM@&tyRvuZ1@|ua;UO{{sI(Wu3-NoqxFL6 zdKH-hdl3hrFD13Q8l|Qd&=T-7)Jje{7IFUdx~`n?3cJ~*p;d`3|5BgAk;PR1JzKjKYC(ub7!djZD{JyMCpD@WNGE0`n|J3O9OQeH7l{ zlMcX1Oc3a;j|o~#c5g0>vPImal)7)h{`46%ybfgxw)^O%!KfV z_I65`XxhJY7vA3AHU^@^hf#EdSGZ}6=-YJ4YD^*>#D&7^R`@#x*4&Xb2Ls-C&o5qo zwiGTPcRwsb?h+V}_y>jy%RBq1qwaCY1G2iEhZ%>jfl}>Gq5LW)q%QTzd zf1MvBj^+P=*L`;-Sq!BzSr}Gv_95|oIUsK~%lg-k@1wl*)--mMz$m_YhS;0MtKqoy z>8&cV&=3ym{$CJ?n5_gGuP|rAD$e%uX+MW=dfzLES~uJ0-+mD1+dltV#iuSsm_duL z*DrH)@an{I%GFUOo1NIeO*mGAGq4^;8vaz#m!MTH{>g?+g>7PO=IrawRMTmhfm@{j zCMBu(ZwW`l^S^0432Dd6`?g167*NM3lMDMGH+ z!Rb4qp;io427R0#gWWq&HDADtD&&iW(RnR6-_>EGakoY7MxdU@T+P`vhWD~!$p?yA zIm6dxH>!phQ{wjy>md#2OElU_*W_?z;&eb^$FLEY#oW(9KYE!K=8z`6XbhUasz^@J z{`cIAw%^n3aVUS{kYWEjc_hOTGFlw2pp1%^?x`I+o!ht1-g+;YBAcXXP@yj}(9j`w zsTVjqk;5$$z#I|!uYB$Iy%hZKeyMt^gwJ$(fp2EN0D)O=aJPO~W7vb}g|S`5*vU zRWSUeYg%+90wET@D4n?5B)4v6!PDZ&H zb0YbCq&Gp>m*9^q-27PP40qA8^i1nAXXUkT__bp?(5ow|*)98Y1kHD6rq&iHl|+%| z_#Gxj4-%$D^wRU_a_bGVe%ZUulxM-$ESPIjm0rWoOcX*Bfs2I%d1-?qwe_>eh{KJE zecRTl-1_8w*uQg;iE#ecIqlh0(}WrEZg5l+s59i&jt%dTK&k!Dt$-Jzp8kQpJPE=d zxcaY203-&R0LnSN?+=0!J_)HbM(#t<);jnAlc^SazlaT;;>iIW^U6wF&AzMO2;W|4{TT(m@ICDdXhcW+T=kq_2ElJ6D)K+Vd&`BLKcAaH;R*nxHk+*0hre3yjq`0cKGZy?V5Yn6@uW#~`(ez5e5A)fL65m0~g>+F{4FzOb{0TR261xjH; zxhK-5qSBYMJh-@}v|4NYdG=ujEB%nxLSr{FkJSwt7D}QM58@aSkrsq1 zfczSQas{GHILenHK@Tw*VKlJ#%>ar z0?*keypf+X3`>4RpZg!24yLna={ANdb<~_K?A+xo6ii6N<>zkA<_Nb$%<4uQA7juT z?|lvGFLc-2(^8h~N6s(f9@Xzh13o{9eiK$d40Zrygm-*inQi-MK271vy4N29CLBeH zlcUn*+WUF*fvwaB6cDL70y{Ie#8Le>mE3c0GgnqRdBcY6_<_&o_#uTAPa72V#-MoD zbewlAH2K4#>9*J4=y73uxz?b1>PAS)nG%qC^#cCX+omJNbQ_7IQx)AZSH74DHL81` z{_s}+0Uv&r#}7}Q)pxX!O%OpiIG4Cab;7{NjZPkXU$f+n)|qs^vm-MC#wnq}Dbby4 z^u(a#;|CHNlJjEWSf;qr=%Sq&U)TLk^rN@icm?f0B<+A@@O__t9@_#;A>sz(*Jd#@dBJPFrS9%D8<20+Cz2yiIq|2` z*JAKVa3xvS@&ZOjUI~`38!Y{q+TC5mi_vL3%agQdM_G6s91RA>gmo@6ME@E)+joDS z{ONeCWRTVURp?{fYxBRjmWxPF*1hNDF!&wo!pZ4v;43F~;L2R#c-}AK{k2ZUCZ4cm>%LQJr0A0=r#*111 zJdSfm6C+nL8tUs}c9fso*6DKPm$VZ?^5+jq_Vcq8@~v%O$wt&5fJod_Es|EO6}fBo zIpsxDggUhNr9lT{Qd1v$)VuUojphkwJV}z4+%iD;N+1ZFpjwQRwW@v%tE#NCzZ;m7 zJ?n`KdWrKw1}S5gVlk+QfU|_+pVC!Uz@pKN@)@*`!D0l3qO>J8Z$~I3={mDLIaPM8 zG`8~wZxBcS=r@)z7M5tqP;)|STuYyc?_3ImE=&x8Bro>(t{`%Dk>|Iis z=b*C}wn@B-b_Sz z5V-AXS#9zZd57!S^4_{}I)j%luda-(iN7tcXm<2nwsLW59HbjW-A04sRh<#tfZ#Nd zV$#aCMzx4P2q@`;!IJ{mXy|5Ty=f{FjF_>+{0B+kmXGa^3^7c z=nP60>(dMLXo-=3jq_>ukleRM^nQP~`x2*vdF1*QuXb@BG`?7H{qfI$vDCkh4!3gJ z*|+v#dDZm^tZ7DaQx6_){h%UwBrdW#C2AL8Pp>BR#ao$`ySB!;VR9`I%DcB}cQ!{1 z06QZSd_t&z36iupl@XYEx@isjcS7o)az4@8nE5_F^SHEkQpcL6x9r1sChBp~tCWy1 zpUml=z6gR^A(Z7YYQ8-7*-lYWnc;lz+P~!5u8hQDqEpDg<;V_w1d=Ek#&_{CVXtZQ1~BF7!o^-u2Hm_C5?X#b~E{phbduQ0|5e$QMzgi;@$_lY)^JlZt@J%nrKZLZL8-c`>UyfC zOB$M*sT)H{Vr=7~w^A-z6peYPc}~qUMT>?~2_>}DkP0E9k@TJW;jMMoTkp&Ju-7_! zt+UqId#`=|`@i@84I-0=zo1j$flgGVFl8&Zgzo#s;G#Tnj2yHmvqoUC!!Di0?w7RSwa?wfdcEOTzEgkb*Q6X@?~0s z4brVm$9N28SF&}H=8W}Fp&#_WgwPWc(3A&8vJbejR_L?l0xGWnsg}x+CoFfW5&Q8J zUjT=yQQ>{r1F-8}k1wXbOLY#qRuCuJa~AAgGE_CEbg^q|hxj4yTgWoKo%w3UlLx;s^+cgelU&oG+W z5>GGpydVHqV#t{GD`8QKYH>Y62%qGR$Yooq?a=NWs~~3o>Cwp-FF!X>QXeYI9e_#V z27Sbphd1^X6Zt2|oY>+|ZXXx=3;ayv7DKBx<&%QFb`zZv?sa!1UlaN^taN@~n8B1X zh?7XJ9FrOoOR8kWeyQJc*nMLc|C#q~ZL+&DZ|kr$=AGM_&KbQ(nxEbaGz(K(eBL5J zo^Z3^3fNM8VF&PYbOU}+GEQYlh4CshpCe%okns7?*KqkkB33B860dZT|Nas3a|`SY z*j&oxBk|#YJg~Yi)j*hbe@cyZ(?w(y6{o0}leVzl`|2e+mLZ29RbFN)`U?)f5uBu1 zNdfG;nr?9red8y`H$Z)VOirhq1|d@#1AyG!BX=(?E^=V-`|?5EFjtIxPW9}&w> zv6_-^CO;$?EFEeWJQ*05^RhDNZKol%j3N}cH+745ZW>d_&w*UdB4)Bn8bj#P%Dm1@ z8MF!bHILyPeJ|knKzO5PVlpE4wVyEbOzW-C=~dv^;P{bZ;;j_(j-3mgm;#*lhV!o_ zaBr7YbOv5uq{X;TpvAzu=WOs|6qKV}^wp4G{|eW)9N-(J0J8}zQAd`kK^Zk^L$mz=y!-cYc=RfO{&M6#=j!lB`O>`1 zC~#o$S84s75lOTn9W8u=zmYyYgoxmM7-Y>D$SretH-|T==e~f(vy}DmU^u zh}5~+R`_uK5W6gM1fE?o9ROd(oCE^T2z((@t_AP&Q5!SbA-?QRqidqQ?d26|B1#P2UQc?xAl47^v);o;?cuQwu-Jj(Ot46h~_yJ9_Ij$aZd< zG-Sog`Sv*_B;b$tKR})n)JnEvKzov@sJ}Bs=ch2?xcPUEhX*j<`*ozeq-4{g9c^CjOrZiHmqujD8?!5 zt)0Q)xLEJ%kVRYAQ}=;{D+0D)-iqFo@aylYfLdGu09N!g73(-w=&N5*cusLhL9b_N z>uNC{D#4je;;ao&V;L&k+c?Yqh#S+Grr1Ov4D^{-qLeFZNUUdG%@(;2(+pdX{?bb< zqVweI<@&@x+?6Ygt^1)id8?I%k$`kD9rcA+$ z(~Sle>Q@EQr}9_3O*_2GaGUJD*4h1}(+ZKaN(EId4No0>_`NIbg$anu#5$qXaoajT zD&WSO+LSJMl;Q_q?qD91V>FrTZRzx`D#nHO;$Fjn78*_S;n_zL_2Uj+u%4ix7|SQx z4S9{#Ms2~}Fb36WBh!sWYH_|jek(aG5`PHMj~QE(JJQ$@TIwoVjvQ-d!V~taq-Wg{ zZ#kfx0w!Ms!tW}*V`Yj;=8GY?J$g|uxX73VHz=>{2wBKc>CxB0#rA$j^(0=K(qKWu z;h;ctgbWXzuCjXm5lP6P+|+j>WsDmR;7DyWOdyLKLtq@Sh9%Ejl}u8-gG>JPY4Yu8 z_a>d%57QJBzSJ`qJ;oIUURGzs`dk`(J!3Lafy?l*Q>LE3e!_(S%WLa>MzE3_F*Rcu zjF_K>_?Wrp)J8IPcQ>c^3mm7hqznXLcTe5|#MTbXrvOZ^Zgz9$hm8&Jx&#>O;}!DN zg+Qt#gy;;P+uWn|o5&^F5)j%|gJx#Ql1`9*OgxhlGW5xc+_aIO7F0|MZM{0Yf~u31 z+RMF?I{qxWOUvZ}Dn;QOk+`UF<;nNb=VJBVlfM)fMVtjM#{ILgE}?G@ouHSj_w|I0 zMYK;NA=A*65mT1)mf^tyi2M6M^hufGYkY-wA($H3bDOC{HuFCb)ssdL+jT!cE5&Qy z(u4>=-*tf{^@%ed*50xMNmiek8N3med=+XIN3vWHy-ts8t<&!o0o%XjsXc*Hqx=34RsPiJ|@bbg9Fk=>~SxQQE$e*I7^9;3Y zjxIARp{eULhefR4gTo)$+gZ3;`TpLykG7D!b?mRjG3=@Q?0_K(@Om3q1I4LgVgLXD literal 0 HcmV?d00001 From 213ec6ce50951a7f81171b73eae78bb875a0196c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Thu, 29 Feb 2024 22:43:43 +0100 Subject: [PATCH 17/22] Update cc1101.rst --- components/cc1101.rst | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/components/cc1101.rst b/components/cc1101.rst index 52f16278c..054f2d66f 100644 --- a/components/cc1101.rst +++ b/components/cc1101.rst @@ -24,8 +24,6 @@ the pin direction will be reversed for the transfers. On ESP32, this will not work, you must connect two separate pins. remote_transmitter to GDO0, remote_receiver to GDO2. If only trasmitting works, they are probably switched. -Transfers must be surrounded with cc1101.begin_tx and cc1101.end_tx. - Example configuration for ESP8266 --------------------------------- @@ -191,8 +189,7 @@ Transmit a message using the button component - platform: template name: "Gate" on_press: - - cc1101.begin_tx: transceiver - - remote_transmitter.transmit_rc_switch_raw: + - remote_transmitter.transmit_cc1101: code: '0111000110010011110110010100011111110001001011110111' protocol: pulse_length: 434 @@ -202,7 +199,6 @@ Transmit a message using the button component inverted: true repeat: times: 10 - - cc1101.end_tx: transceiver By default the transmitter is in receive mode, it is important to surround the transmission with ``cc1101.begin_tx`` and ``cc1101.end_tx``. From c0db0ee8bfb655c9393b72a36577eabf7327f218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Fri, 1 Mar 2024 00:06:39 +0100 Subject: [PATCH 18/22] Update cc1101.rst --- components/cc1101.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/cc1101.rst b/components/cc1101.rst index 054f2d66f..98e79afcf 100644 --- a/components/cc1101.rst +++ b/components/cc1101.rst @@ -161,7 +161,8 @@ Alternatively these modified remote components can directly set ``rmt_channel``. Configuration variables: ------------------------ -- **gdo0** (**Optional**, :ref:`config-pin`): This is the bidirectional pin for ESP8266. +- **cs_pin** (**Required**, :ref:`config-pin`): SPI Chip Select. +- **gdo0** (*Optional*, :ref:`config-pin`): This is the bidirectional pin for ESP8266. - **bandwidth** (*Optional*, int): Defaults to 200 KHz. - **frequency** (*Optional*, int): Defaults to 433920 KHz. - **rssi** (*Optional*): RSSI sensor. Value in dBm. The RSSI value is an estimate of the signal power level in the chosen channel. See datasheet 17.3 for further information. From 9e2aa76e8453e12f8393947c7e12421dd24cbae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Fri, 1 Mar 2024 01:56:07 +0100 Subject: [PATCH 19/22] Update cc1101.rst --- components/cc1101.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/cc1101.rst b/components/cc1101.rst index 98e79afcf..795ee6536 100644 --- a/components/cc1101.rst +++ b/components/cc1101.rst @@ -190,7 +190,8 @@ Transmit a message using the button component - platform: template name: "Gate" on_press: - - remote_transmitter.transmit_cc1101: + # - cc1101.begin_tx: transceiver + - remote_transmitter.transmit_rc_switch_raw_cc1101: code: '0111000110010011110110010100011111110001001011110111' protocol: pulse_length: 434 @@ -200,8 +201,9 @@ Transmit a message using the button component inverted: true repeat: times: 10 + # - cc1101.end_tx: transceiver -By default the transmitter is in receive mode, it is important to surround the transmission with ``cc1101.begin_tx`` and ``cc1101.end_tx``. +Transfers, except transmit_rc_switch_raw_cc1101, must be surrounded with ``cc1101.begin_tx`` and ``cc1101.end_tx``. Example pinout for a few tested boards -------------------------------------- From 879f4fd670b329c6d09a939edcaf78c68b8f4cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Fri, 1 Mar 2024 02:01:30 +0100 Subject: [PATCH 20/22] Update cc1101.rst --- components/cc1101.rst | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/components/cc1101.rst b/components/cc1101.rst index 795ee6536..7bef90452 100644 --- a/components/cc1101.rst +++ b/components/cc1101.rst @@ -208,22 +208,23 @@ Transfers, except transmit_rc_switch_raw_cc1101, must be surrounded with ``cc110 Example pinout for a few tested boards -------------------------------------- -+--------------+------+------+------+------+------+------+------+------+------+ -|BOARD | MISO | MOST | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | -+--------------+------+------+------+------+------+------+------+------+------+ -|nodemcu-32s | 19 | 23 | 18 | 5 | 32 | 33 | | | | -+--------------+------+------+------+------+------+------+------+------+------+ -|lolin_s2_mini | 37 | 35 | 36 | 34 | 8 | 9 | | | | -+--------------+------+------+------+------+------+------+------+------+------+ -|c3 supermini | 5 | 7 | 6 | 10 | 3 | 4 | 0 | 1 | [1]_ | -+--------------+------+------+------+------+------+------+------+------+------+ -|d1_mini | 12 | 13 | 14 | 15 | 5 | | 4 | TX | [2]_ | -+--------------+------+------+------+------+------+------+------+------+------+ ++--------------+------+------+------+------+------+------+------+------+-----------+ +|BOARD | MISO | MOST | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | ++--------------+------+------+------+------+------+------+------+------+-----------+ +|nodemcu-32s | 19 | 23 | 18 | 5 | 32 | 33 | | | | ++--------------+------+------+------+------+------+------+------+------+-----------+ +|lolin_s2_mini | 37 | 35 | 36 | 34 | 8 | 9 | | | | ++--------------+------+------+------+------+------+------+------+------+-----------+ +|c3 supermini | 5 | 7 | 6 | 10 | 3 | 4 | 0 | 1 | [1]_ [2]_ | ++--------------+------+------+------+------+------+------+------+------+-----------+ +|d1_mini | 12 | 13 | 14 | 15 | 5 | | 4 | TX | [3]_ | ++--------------+------+------+------+------+------+------+------+------+-----------+ SDA/SCL is not needed of course, they are just there as suggestions in case you also need I2C on such a low pin count board. .. [1] add one dummy transmitter (``__) -.. [2] still possible to use i2c with TX +.. [2] the c3 supermini has multiple versions, this one has the led on pin 8 and the button on pin 9 +.. [3] still possible to use i2c with TX See Also -------- From e76f00818e4cb6cee505b562ecb261699b106351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Sat, 2 Mar 2024 23:25:12 +0100 Subject: [PATCH 21/22] Update cc1101.rst --- components/cc1101.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cc1101.rst b/components/cc1101.rst index 7bef90452..c571e979e 100644 --- a/components/cc1101.rst +++ b/components/cc1101.rst @@ -209,7 +209,7 @@ Example pinout for a few tested boards -------------------------------------- +--------------+------+------+------+------+------+------+------+------+-----------+ -|BOARD | MISO | MOST | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | +|BOARD | MISO | MOSI | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | +--------------+------+------+------+------+------+------+------+------+-----------+ |nodemcu-32s | 19 | 23 | 18 | 5 | 32 | 33 | | | | +--------------+------+------+------+------+------+------+------+------+-----------+ From 568c1744890ddcc79365d944febc93f0958db45a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Sun, 3 Mar 2024 00:10:40 +0100 Subject: [PATCH 22/22] Update cc1101.rst --- components/cc1101.rst | 96 +++++++++++++++++++++++++++++++++---------- 1 file changed, 74 insertions(+), 22 deletions(-) diff --git a/components/cc1101.rst b/components/cc1101.rst index c571e979e..3f4f262ab 100644 --- a/components/cc1101.rst +++ b/components/cc1101.rst @@ -18,12 +18,14 @@ Tested frameworks are Arduino and esp-idf but it might work with others. CC1101 boards. -On ESP8266, you can use a single pin instead of GD0O and GD02 (gdo0 is an optional parameter). If assigned, +On ESP8266, you can use a single pin instead of GD0O and GD02 (gdo0_pin is an optional parameter). If assigned, the pin direction will be reversed for the transfers. On ESP32, this will not work, you must connect two separate pins. remote_transmitter to GDO0, remote_receiver to GDO2. If only trasmitting works, they are probably switched. +The ESP8266 can also work with two separate pins, of course. If no gdo0_pin is given, that's the default mode. + Example configuration for ESP8266 --------------------------------- @@ -37,15 +39,11 @@ Example configuration for ESP8266 cc1101: id: transceiver cs_pin: D8 - gdo0: + gdo0_pin: number: D1 allow_other_uses: true bandwidth: 200 frequency: 433920 - rssi: - name: "RSSI" - lqi: - name: "LQI" remote_transmitter: pin: @@ -81,10 +79,6 @@ Based on a generic nodemcu-32s board. cs_pin: GPIO5 bandwidth: 200 frequency: 433920 - rssi: - name: "RSSI" - lqi: - name: "LQI" remote_transmitter: pin: GPIO32 # GDO0 @@ -157,16 +151,72 @@ Alternatively these modified remote components can directly set ``rmt_channel``. filter: 250us idle: 4ms +Sensors for RSSI and LQI. dBm and a raw number. + +.. code-block:: yaml + + cc1101: + id: transceiver + cs_pin: GPIO5 + bandwidth: 200 + frequency: 433920 + rssi: + name: "RSSI" + lqi: + name: "LQI" + +The CC1101 also has a temperature sensor. It is possible to use it on the ESP32, but because the temperature is reported on the GDO0 pin as an analog signal, it also has to be connected to an ADC capable input pin (ESP8266 does not have such). The ADC pin is an input pin, when gdo0_adc_id is set, transmission will not work. Currently there is no solution to this. To restore transmission a new firmware without gdo0_adc_id has to be flushed and the device must be reset. + +.. code-block:: yaml + + sensor: + - platform: adc + pin: + number: GPIO32 + allow_other_uses: true + name: "ADC" + id: gdo0_adc + update_interval: 10s + + cc1101: + id: transceiver + cs_pin: GPIO5 + gdo0_pin: + number: GPIO32 + allow_other_uses: true + gdo0_adc_id: gdo0_adc + bandwidth: 200 + frequency: 433920 + temperature: + name: "Temperature" + + remote_transmitter: + pin: + number: GPIO32 # This is GDO0 + allow_other_uses: true + carrier_duty_percent: 100% + + remote_receiver: + pin: GPIO33 # This is GDO2 + dump: + - rc_switch + # Settings to optimize recognition of RF devices + tolerance: 50% + buffer_size: 2kb + filter: 250us + idle: 4ms Configuration variables: ------------------------ - **cs_pin** (**Required**, :ref:`config-pin`): SPI Chip Select. -- **gdo0** (*Optional*, :ref:`config-pin`): This is the bidirectional pin for ESP8266. +- **gdo0_pin** (*Optional*, :ref:`config-pin`): This is the bidirectional pin for ESP8266. +- **gdo0_adc_id** (*Optional*, string): ADC id to be used by the temperature sensor. - **bandwidth** (*Optional*, int): Defaults to 200 KHz. - **frequency** (*Optional*, int): Defaults to 433920 KHz. - **rssi** (*Optional*): RSSI sensor. Value in dBm. The RSSI value is an estimate of the signal power level in the chosen channel. See datasheet 17.3 for further information. - **lqi** (*Optional*): Link Quality Indicator sensor. The Link Quality Indicator is a metric of the current quality of the received signal. See datasheet 17.6 for further information. +- **temperature** (*Optional*): Integrated temperature sensor. Detect a magnetic window sensor ------------------------------- @@ -208,17 +258,19 @@ Transfers, except transmit_rc_switch_raw_cc1101, must be surrounded with ``cc110 Example pinout for a few tested boards -------------------------------------- -+--------------+------+------+------+------+------+------+------+------+-----------+ -|BOARD | MISO | MOSI | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | -+--------------+------+------+------+------+------+------+------+------+-----------+ -|nodemcu-32s | 19 | 23 | 18 | 5 | 32 | 33 | | | | -+--------------+------+------+------+------+------+------+------+------+-----------+ -|lolin_s2_mini | 37 | 35 | 36 | 34 | 8 | 9 | | | | -+--------------+------+------+------+------+------+------+------+------+-----------+ -|c3 supermini | 5 | 7 | 6 | 10 | 3 | 4 | 0 | 1 | [1]_ [2]_ | -+--------------+------+------+------+------+------+------+------+------+-----------+ -|d1_mini | 12 | 13 | 14 | 15 | 5 | | 4 | TX | [3]_ | -+--------------+------+------+------+------+------+------+------+------+-----------+ ++-----------------+------+------+------+------+------+------+------+------+-----------+ +|BOARD | MISO | MOSI | SCK | CSN | GDO0 | GDO2 | SDA | SCL | | ++-----------------+------+------+------+------+------+------+------+------+-----------+ +|nodemcu-32s | 19 | 23 | 18 | 5 | 32 | 33 | | | | ++-----------------+------+------+------+------+------+------+------+------+-----------+ +|lolin_s2_mini | 37 | 35 | 36 | 34 | 8 | 9 | | | | ++-----------------+------+------+------+------+------+------+------+------+-----------+ +|c3 supermini | 5 | 7 | 6 | 10 | 3 | 4 | 0 | 1 | [1]_ [2]_ | ++-----------------+------+------+------+------+------+------+------+------+-----------+ +|d1_mini | 12 | 13 | 14 | 15 | 5 | | 4 | TX | [3]_ | ++-----------------+------+------+------+------+------+------+------+------+-----------+ +|d1_mini (no i2c) | 12 | 13 | 14 | 15 | 5 | 4 | | | | ++-----------------+------+------+------+------+------+------+------+------+-----------+ SDA/SCL is not needed of course, they are just there as suggestions in case you also need I2C on such a low pin count board.