From 26c96ccdd0357075b265532669af4c44d4b63e4a Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 7 Jun 2024 09:51:49 +0200 Subject: [PATCH] feat: Jumper T15 support (#5113) Co-authored-by: 3djc <3djc@gh.com> Co-authored-by: philmoz --- .github/workflows/actions.yml | 3 +- .github/workflows/nightly.yml | 2 +- companion/src/CMakeLists.txt | 2 + companion/src/companion.qrc | 7 + companion/src/firmwares/boards.cpp | 5 + companion/src/firmwares/boards.h | 8 +- .../src/firmwares/opentx/opentxinterface.cpp | 10 +- .../src/images/simulator/JumperT15/bottom.png | Bin 0 -> 12743 bytes .../src/images/simulator/JumperT15/exit.png | Bin 0 -> 70674 bytes .../src/images/simulator/JumperT15/left.png | Bin 0 -> 70065 bytes .../src/images/simulator/JumperT15/model.png | Bin 0 -> 70763 bytes .../src/images/simulator/JumperT15/page.png | Bin 0 -> 70790 bytes .../src/images/simulator/JumperT15/right.png | Bin 0 -> 71196 bytes .../src/images/simulator/JumperT15/top.png | Bin 0 -> 2842 bytes companion/src/simulation/CMakeLists.txt | 1 + companion/src/simulation/simulateduiwidget.h | 13 + .../simulation/simulateduiwidgetJumperT15.cpp | 69 ++ .../simulation/simulateduiwidgetJumperT15.ui | 206 ++++ companion/src/simulation/simulatorwidget.cpp | 3 + fw.json | 1 + radio/src/cli.cpp | 5 +- radio/src/datastructs.h | 5 +- radio/src/gui/colorlcd/CMakeLists.txt | 7 + radio/src/gui/colorlcd/function_switches.cpp | 280 ++++++ radio/src/gui/colorlcd/function_switches.h | 41 + radio/src/gui/colorlcd/model_setup.cpp | 6 + radio/src/gui/colorlcd/radio_diaganas.cpp | 2 +- .../gui/colorlcd/radio_diagcustswitches.cpp | 90 ++ .../src/gui/colorlcd/radio_diagcustswitches.h | 32 + radio/src/gui/colorlcd/radio_hardware.cpp | 9 +- radio/src/gui/colorlcd/radio_hardware.h | 1 + radio/src/gui/colorlcd/radio_version.cpp | 6 + radio/src/hal/adc_driver.cpp | 7 + radio/src/hal/rotary_encoder.h | 2 +- radio/src/opentx.h | 1 + radio/src/storage/yaml/CMakeLists.txt | 6 +- radio/src/storage/yaml/yaml_datastructs.cpp | 6 +- .../src/storage/yaml/yaml_datastructs_t15.cpp | 919 ++++++++++++++++++ radio/src/switches.h | 8 + radio/src/targets/horus/CMakeLists.txt | 25 +- radio/src/targets/horus/board.cpp | 46 + radio/src/targets/horus/board.h | 34 +- .../targets/horus/bootloader/boot_menu.cpp | 34 +- radio/src/targets/horus/cst8xx_driver.cpp | 290 ++++++ radio/src/targets/horus/cst8xx_driver.h | 110 +++ radio/src/targets/horus/hal.h | 360 +++++-- .../src/targets/horus/lcd_st7796s_driver.cpp | 460 +++++++++ radio/src/targets/horus/lcd_st7796s_driver.h | 63 ++ radio/src/targets/horus/led_driver.cpp | 31 + radio/src/targets/horus/usb_descriptor.h | 4 + radio/src/targets/taranis/board.h | 11 - radio/src/translations.cpp | 9 + radio/src/translations.h | 7 + radio/src/translations/cn.h | 9 + radio/src/translations/cz.h | 9 + radio/src/translations/da.h | 9 + radio/src/translations/de.h | 9 + radio/src/translations/en.h | 7 + radio/src/translations/es.h | 9 + radio/src/translations/fi.h | 9 + radio/src/translations/fr.h | 9 + radio/src/translations/he.h | 9 + radio/src/translations/it.h | 9 + radio/src/translations/jp.h | 9 + radio/src/translations/nl.h | 9 + radio/src/translations/pl.h | 9 + radio/src/translations/pt.h | 9 + radio/src/translations/ru.h | 9 + radio/src/translations/se.h | 9 + radio/src/translations/tw.h | 9 + radio/src/translations/ua.h | 9 + radio/src/translations/untranslated.h | 4 + radio/util/build-firmware.py | 5 + radio/util/hw_defs/legacy_names.py | 31 + radio/util/hw_defs/pot_config.py | 4 + radio/util/hw_defs/switch_config.py | 8 + tools/boards.py | 5 + tools/build-companion.sh | 5 +- tools/build-gh.sh | 3 + tools/commit-tests.sh | 3 + tools/generate-hw-defs.sh | 5 +- tools/generate-yaml.sh | 5 +- tools/msys2_fetch_and_build_all.sh | 5 +- 83 files changed, 3354 insertions(+), 136 deletions(-) create mode 100644 companion/src/images/simulator/JumperT15/bottom.png create mode 100644 companion/src/images/simulator/JumperT15/exit.png create mode 100644 companion/src/images/simulator/JumperT15/left.png create mode 100644 companion/src/images/simulator/JumperT15/model.png create mode 100644 companion/src/images/simulator/JumperT15/page.png create mode 100644 companion/src/images/simulator/JumperT15/right.png create mode 100644 companion/src/images/simulator/JumperT15/top.png create mode 100644 companion/src/simulation/simulateduiwidgetJumperT15.cpp create mode 100644 companion/src/simulation/simulateduiwidgetJumperT15.ui create mode 100644 radio/src/gui/colorlcd/function_switches.cpp create mode 100644 radio/src/gui/colorlcd/function_switches.h create mode 100644 radio/src/gui/colorlcd/radio_diagcustswitches.cpp create mode 100644 radio/src/gui/colorlcd/radio_diagcustswitches.h create mode 100644 radio/src/storage/yaml/yaml_datastructs_t15.cpp create mode 100644 radio/src/targets/horus/cst8xx_driver.cpp create mode 100644 radio/src/targets/horus/cst8xx_driver.h create mode 100644 radio/src/targets/horus/lcd_st7796s_driver.cpp create mode 100644 radio/src/targets/horus/lcd_st7796s_driver.h diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index d67d27b8e..b3d32a569 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -49,6 +49,7 @@ jobs: - pl18 - pl18ev - t12 + - t15 - t16 - t18 - t8 @@ -97,7 +98,7 @@ jobs: - nv14;el18 - pl18;pl18ev - t12 - - t16;t18 + - t15;t16;t18 - t8;zorro;pocket;mt12;commando8 - tlite;tpro;tprov2;lr3pro - t20;t20v2;t14 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index ce10f1135..e9b3ed909 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -19,7 +19,7 @@ jobs: - nv14;el18 - pl18;pl18ev - t12 - - t16;t18 + - t15;t16;t18 - t8;zorro;pocket;mt12;commando8 - tlite;tpro;tprov2;lr3pro - t20;t20v2;t14 diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 2b720dd75..f41b0873b 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -336,6 +336,8 @@ elseif(PCB STREQUAL X10 AND PCBREV STREQUAL TX16S) set(FLAVOUR tx16s) elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T14) set(FLAVOUR t14) +elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T15) + set(FLAVOUR t15) elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T16) set(FLAVOUR t16) elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T18) diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index fde60acfd..6c4d972a2 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -261,6 +261,13 @@ images/simulator/JumperT14/left.png images/simulator/JumperT14/right.png images/simulator/JumperT14/top.png + images/simulator/JumperT15/left.png + images/simulator/JumperT15/right.png + images/simulator/JumperT15/top.png + images/simulator/JumperT15/bottom.png + images/simulator/JumperT15/model.png + images/simulator/JumperT15/exit.png + images/simulator/JumperT15/page.png images/simulator/JumperT16/left.png images/simulator/JumperT16/right.png images/simulator/JumperT16/top.png diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp index 93db2e4a8..0bfde994f 100644 --- a/companion/src/firmwares/boards.cpp +++ b/companion/src/firmwares/boards.cpp @@ -202,6 +202,7 @@ int Boards::getEEpromSize(Board::Type board) case BOARD_HORUS_X12S: case BOARD_X10: case BOARD_X10_EXPRESS: + case BOARD_JUMPER_T15: case BOARD_JUMPER_T16: case BOARD_JUMPER_T18: case BOARD_RADIOMASTER_TX16S: @@ -252,6 +253,7 @@ int Boards::getFlashSize(Type board) case BOARD_HORUS_X12S: case BOARD_X10: case BOARD_X10_EXPRESS: + case BOARD_JUMPER_T15: case BOARD_JUMPER_T16: case BOARD_JUMPER_T18: case BOARD_RADIOMASTER_TX16S: @@ -532,6 +534,8 @@ QString Boards::getBoardName(Board::Type board) return "Jumper T-Pro V2"; case BOARD_JUMPER_T14: return "Jumper T14"; + case BOARD_JUMPER_T15: + return "Jumper T15"; case BOARD_JUMPER_T16: return "Jumper T16"; case BOARD_JUMPER_T18: @@ -668,6 +672,7 @@ int Boards::getDefaultInternalModules(Board::Type board) case BOARD_RADIOMASTER_TX12_MK2: case BOARD_IFLIGHT_COMMANDO8: case BOARD_JUMPER_T14: + case BOARD_JUMPER_T15: case BOARD_JUMPER_T20: case BOARD_JUMPER_T20V2: return (int)MODULE_TYPE_CROSSFIRE; diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h index 5396526f0..6859053f5 100644 --- a/companion/src/firmwares/boards.h +++ b/companion/src/firmwares/boards.h @@ -62,6 +62,7 @@ namespace Board { BOARD_TARANIS_X9LITES, BOARD_JUMPER_T12, BOARD_JUMPER_T14, + BOARD_JUMPER_T15, BOARD_JUMPER_T16, BOARD_RADIOMASTER_TX16S, BOARD_JUMPER_T18, @@ -434,6 +435,11 @@ inline bool IS_JUMPER_TPROV2(Board::Type board) return board == Board::BOARD_JUMPER_TPROV2; } +inline bool IS_JUMPER_T15(Board::Type board) +{ + return board == Board::BOARD_JUMPER_T15; +} + inline bool IS_JUMPER_T16(Board::Type board) { return board == Board::BOARD_JUMPER_T16; @@ -492,7 +498,7 @@ inline bool IS_RADIOMASTER_T8(Board::Type board) inline bool IS_FAMILY_T16(Board::Type board) { - return board == Board::BOARD_JUMPER_T16 || board == Board::BOARD_RADIOMASTER_TX16S || board == Board::BOARD_JUMPER_T18; + return board == Board::BOARD_JUMPER_T15 || board == Board::BOARD_JUMPER_T16 || board == Board::BOARD_RADIOMASTER_TX16S || board == Board::BOARD_JUMPER_T18; } inline bool IS_FAMILY_T12(Board::Type board) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index f56fcac4e..e8d9d176f 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -70,6 +70,8 @@ const char * OpenTxEepromInterface::getName() return "EdgeTX for Jumper T-Pro V2"; case BOARD_JUMPER_T14: return "EdgeTX for Jumper T14"; + case BOARD_JUMPER_T15: + return "EdgeTX for Jumper T15"; case BOARD_JUMPER_T16: return "EdgeTX for Jumper T16"; case BOARD_JUMPER_T18: @@ -710,7 +712,7 @@ int OpenTxFirmware::getCapability(::Capability capability) case LcdHeight: if (IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board)) return 480; - else if (IS_FLYSKY_PL18(board)) + else if (IS_FLYSKY_PL18(board) || IS_JUMPER_T15(board)) return 320; else if (IS_FAMILY_HORUS_OR_T16(board)) return 272; @@ -1440,6 +1442,12 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, NONE); registerOpenTxFirmware(firmware); + /* Jumper T15 board */ + firmware = new OpenTxFirmware(FIRMWAREID("t15"), Firmware::tr("Jumper T15"), BOARD_JUMPER_T15); + addOpenTxFrskyOptions(firmware); + addOpenTxRfOptions(firmware, FLEX); + registerOpenTxFirmware(firmware); + /* Jumper T16 board */ firmware = new OpenTxFirmware(FIRMWAREID("t16"), Firmware::tr("Jumper T16 / T16+ / T16 Pro"), BOARD_JUMPER_T16); addOpenTxFrskyOptions(firmware); diff --git a/companion/src/images/simulator/JumperT15/bottom.png b/companion/src/images/simulator/JumperT15/bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca5f5a2c124ea433cc5e9c77b74b35e049d191e GIT binary patch literal 12743 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 z zX zT&fH;k@#NAmZ&v3N^*$B~$eI`zlg%nCnV1q=M8C8yg~^Lk!Ry z*6+SQsfj=A-~?XcgLJFo0qi_~_0@)t8ffii?`m57;qq{P(s%u?+pWhd+s$zQ&v0Pg z&j`V`f%M087m;u>$fofgZxrBjAZk^eBZV$CTL1Ek$AC@kCH&s#=EQ_(XrRsSuB7N zzD3b{g#J77PpyQ0I#V1^{uGrQ^3HXJYa|aQWT=2SW3t3C15h6;tvN0=@xOTbe2(h4 zmXnp`&;poLN6o2U#E7Axq5tLVD4;r91%CuKaA4z_@>{-}5-L?O*22SB!?EM0MKM3O zLS?mSvT|;GfcyA=uz2;}!aSyc%Sx{qaBJ3v&D-_aNwB1m0dkGx^~!#(ADl|u|0hkV z)nUL|=hSKlo&L#-cf*F?aopPx(&MnmV&T%VjcH0$#@0;hIHi7jyEJf(4( z1l}H&rV$f&yRDtJIIgvv{`9-uzzyai#6JB4l~865Lw`N{&TSAi;SY1NYnd@Dqp|=X zBoJxo38>6BIc|DY1`g|ethq!g0BGt+=ezTzIR_Uaa7d_?R{P{gJ0Kgk7PO=f?`{o2 zg$ru#AtLHg)1WY9>mnmX#NTo(6CJelIa4tCI~JU%wI!p;W4o0hO$JFq?I%4O&x~H~ zFDxu3-cbcSAAZbDu|l_L$s9jzS>a!6aWu*5@qWCHxmg4@up3{%K?Iij@|U~{0$7Ne ztFmvc?MjRA(%AWSBLwq#{fC)zCgVz4LCR1$ihZ1veM|*wWIq9nljQ}*`%*cK`5z|JGLeL`aVhQjF?A|C9PNy0s=Ki7n9^cv> zVTW+mBQmn=!-_z4s1@qh?AgqyKVT4{zKfErEeEkl2lurM&pJP)hlTjK8ZSqC1bryhY=Zl zYhnM9;F0wIahywO@iUWnE#d;szmyvHNf}|@K|ZJ^q~!-vFPF(A^TI! zw^WGFPH-lVEP)wnbd`Ol#oo6*`SIQtT8INuNPku6K-8$|uQTXEq=D%;e;x4o3;6#i_77dj+~qL48S02P9Mj|$B9czGfzDmZTT}RC#^eI95SuPwIGJYX*MX)=gI>t zBf7i?T@y;`cO%ea+p78NjZeP~t)`)qMd+fs_MJ5c*~buUsY=@^4&@y|abecV%i-}f zfNA0fU-U4V-aD>*Bgy<@z)ubE%d+1d6&fsy6wV{bKv_1vO{oB=3NKkm!lzeQo0=@~ zKGt)Rq(ja!-h8uID8XfpWRhK8aO2H8s?V1$YaW$A>l(aa0OQFB0BBgmlx7e0&*Tdu4EPT7+v!8tjiaSyxsXw@y1pnP$SxrSuOw50vz`u8!wUvMcS$DGAe<1jBB|e3O zOKn!hwqGx=Dttgru25GtaXY2mVgEJ?rOR*7f?lb3bDJuvjZ`vc3I%))3K~fVe55;B z4Yt&n`T6;)#<2dVz6cy#B>}Mh?hG&zb z9)YaJe_1Tx@%{Jwki?{B-Ke+hVYIg7;aKf56$VuaLBWdGb2cuirkm(FCF?fh>RQDn zcf!D`n@^(W`++(uqF8$E9J?s#%^e%wvw}BkUN1Q`zYiEjOH~?hm%Hk|0xlMpmjgEe zZx))_QB#Gd8iP~SluobvOryk+d;#~MwFS&q;1w1L0L1FLf9;7w#hBJTmFf( z+(l&_kG2vwVZf(9&*Z%_NJ(+4S@|^h%~N#X;wD_gbrciIi=vyUpqvCk@c#6{Y`j3% z#84B+S6VIds%U9>81bnX5EM7>?T)9#3>VZKpSB!6^;EQ3N!Qws+P1R9Ga%4%KB4T0 z`A}tSeKpxruZE+qH-96rwR8kQZPQLdG>)J-%67N%JkvCr)Gn%)wx`)LydFk(0iRu5 z;%!7}mLVPitt*D@8+Qp=OIK}Ne7QE)7$3rw@8{bC$)8AnHTqNYi~wug$LB2jZRl=g z$*#0rtlFU(E$BDPL{-U-p*c05D2sdJx}mYrf`=Ah7|V`pDO#I%0eVv{Yp08gi?g#X zT3VTtOG2gi*3Fk1s>}^&3-X~0bdYYX;oXgL)T<+-p4Z%i@nOCMMUPaw5ktwb{tVoK z1n9G3NU-9JBF3sm^w-#He<8 zmhY(e5(Af$le61POUvcL6HPP9AV{=c;qqku-^+D?#bwRimkltarhV+X^rCYpm|!8j zS+si{KM28lik@K~yQMreAn^_w6e(-A_TS_%E8d!Am)5KcFL&y$AL_3AspSid4|&sk zuD-~b@nKS7s-c5gblvHs5pM`toa`j6UdV?=s0u2s=DB$#&J5V3UtX+EfxHx*(6E+qRRT4Qq>^GO za~V}^$h9GdtCk9RJgnGIHGsI!uK*XNRqUI+30Q{JiMKLclD?uqepUL(dgwe-K4(4r zxGyMj=kM;Y&t`Mzu-K@!#lLYC$JlfN6xbQpM&s5F#aoHdpN}oJS@ZX)OaPnC%P1yN z^fdGPxPCW?rXV`}RVtGa5+=idFpB#>`nz$(4ot4TN=i9XbF*jY>9~dnee~2T`QJqt zhMqH?$B_qF*XfM#$S${Rx9&@olOM%bv8AkK+#i1;GzACPc>R6zQOM3Qm~rZi%Fxa| zB-m3$$YE7Np|F1=X+KBdak>7(PPtdNTlYxw(8vxfv|c#(ZF+!R+hu5;O(jY<7#U*w z#KmI%4p#B)m~yguemw|bPy&7S_ux#?ubYO&JUka6Q58!I#Gp3oYK{`dE$>S)AJoIl zDOH~0x`9ZP5hJ{Q_W-KB6E*wCuz2w#=%{KF+N#d0c!P?o_zb7lE?kyWUh6~jVSinReM#twL z^%==uw&*W4M@M`fFXh)=N-TFJrjy>d={1kHjzy@@LFm_T6RxI5((N}yuFN!2l?>dC zmRr_(jw9L2&?78jZ*>wP&6{sz`cQfGQmqfnboGCH{gRtalq(4(ItIsmveAVmhc<;% zbVZyfoZ_y3vPl_uo9Pcx2)&tA^L^IMz^Y0T42|7BBiKM}eY4vg$KAz+8uHG_8swoJ zWKL(3Q&&?HZ`1k)*PTjadug@qii7BO1IbKF%S!7uV7Zxn?K(fwrj@Q{q9;?6Ux`_s zl#Om0VPHmk=3tv$_yYo{Pd5f_N=Pl=DBv1Zvq!!sNh5jcAf1w{Hp*i%5+3r&!xg9O zEi6h~+DL%WXhf7@)e0jY8=$)tRy+Id(?aZ9BNJUaX-7xnq>7;}e$~%)%H>9CtqIK(+~yL?&A(8i00#lkj-VV8R%53$efeq- zGRS?Z*t=!qQ;R+Pu_K4f9{uOs_elH0SZ-PF+{r!Yj&vNg?M<`p$s7Y0or%6^X^}mV(0Hn_-MN1EewWhM-!Xn!=$AmTk=O>QSJ2-qVBnU>Fuk+a= z+L)8TGxJ)m-x+^r)EoI!6Z29)yLYE1a3r+{ z2gmj|u*LEjR)t4uM}8YCnjByp5oAwB0A(F_vx?a}Hm=vyazvFmu2oc2R_x)~AX2Bb zE0O=S`ouBbP{BIJuh`Fm7<856=deG)6dEZn*#tn(T|+M#SSuT9epJ*{t~h8fduVAZ zXQl21Aei!J>KOpeQ$0I+mRH037@ar}vSd~#fyhh|1A>f_vQES15Nx-iSe zqLd^n(WKfw5la=an;nO*&L>~lLHp<N%f)C;5-x@aht@)XBvxI%oh;YgPz`g|J1{ z9rxFSEtq zV2zIr^XH#A9s>=$jq(~0Y>Z3*9O{SqWep^Q#>`-d`Rxhj(>+*7^G!G@-|Ae9y;$2z zFUB;)?)TJSj?J0_5ct%7_ilgx3V)okXF8vmsDB!>VpvSLwpSf@oOaY4cQe`3>@Xt| z%>fG4xWcekxDjd=(}$j!k=VT-_x>dF()RdqaRc8R-z zlwis;JJi^IxHTfXk08;bK%$35>qXLjhS6bg7t`SB_WxIvQp-r^>cOA?zkUz<_ZYGf zT@9Pp>rM~@`skUHN50xb3^8AJ?Op`|)-@NiaU(u)c}1f#J)KI;3s-RFRwz7t?I+c` z294DnQMUz5FaC0fq!R+o+-2W6#d|sg?|L{ZJC4@i+1(8Y+vnY0jyy@!IgNtEq>T zmEni+j*7McpOw3*@d8J~whA87xWmVdaB;(;7_ed$>(=(gc+c1|RpcXpk9GRSMEu=d z)u^YQnGN;T5pe$o_#~V}SG%qrKp>|YSX}Rv!UtUI(>VpJEMv_1bEzmOa5dIE9EeGB z+Dft0nu>Jx67YgPD)H(U&9^2HTAfglf6{ns+3+dx%e!~#k5@Y+f69I4IB7XQP`7Wx zKAz`ze*ym{VI46xs(I@9?ELcY>gldElg~$>(w?^Wa^t3pwuEky&ZQ+ExaQhF^{88) zX9Qx5NI?wHMEh$PxmQM>(Px(t!ejA09@snye?F809j+vf`En4pcyw@ZVACwDU!TyF zHMtMyoa&2YPO7S^#?}MZA$T_1SLq=iEO>Wn^CQIAqv(ch;6zd?1j|?#jr`2F)Jvfi zEgYRpK^!0JmFQRpS(0)8xuL6kM|MHuZ!r@39H+0$n4SjqU3Z)&Ib#0zzXA5p@y+AO z@RcurQd6DIYn{Q|M(|qoX@_(-+Ngq_NBJlcw&Rfb!b`?SnZjuS;_NX7D7)@>(%Iy>WqB~8Gekbe0FBhD*?lp;IRngvH6az zw@Msg`Nv$-S2!C34*Vt@#4*E{z^Ll814N%)yJjqT=IDxwv(3-y)7C(!gt!_FB_D1C zFKVx{Ln#GIVmPL8mtUx26;oiCzFZHi+lC)Ax6O;J@9boy4<|>;RMM;>fuQf#^Z0~! z!0fvA%J5%T^Yf#C<(_Z-ZLtS7!3AH`7+FIG;@Ldi4XtL!j1EViPnPh)zbAwq7yK4Z zV=VH9IA3d-xSAio({D)koBj?u^cM&CKrzGS&H5Bn)kHC`j>Cq{&Em?BAAwMG<3kmY zi8=jAC@F{dgmEHX|F_IV3!N^QK%b%IY@wf1F9Cw_5$Tu}>L zAW3LRKMaNuaCL6D#6N65U)~=aYz;;LbQ}0nBXOw}$!&_SSloP?)}p7;q~lw|O_6L` zx*A`^P_&?B4cv0+py1GFR#=f~-BMkgCPA@v#)`5&8!*-8J-Ssyl@pcJ*8hC zIpf*7R*muqqFpxGCzYpZ!2sp-!R`v|z~0Sj)Ynsf$KCZKBEFB;D^Kv=J0N1WF9tTs z$}NBY`_kHgNESF1fT3OEWuGqnNQBPvQ}8uts<%MuAxMVZ}2SuE?TomRb#!kX~PX&?|6#4qZ$)tHrQme5DmjT*>5gTq`h=t3U9fz zF$J6pBl?SVqL8(`!9+)_$wwVE6&*QRF)Ok2cF(0Xti0CZxtk(FdK3H5g(jm-5e1g( zn*A?egL?vBGI`6izS6oF z^LgdFu@4W*BJ1`1q@%q&3a;@g0Z2);OPR!+CL0n$7aKG|+F1(k=C6_gf!gegPczTwt>`JR11f>m4s_^zz& z#$7cr4O|8IXY6~Jylw0Jj%x_s(88O#4qn`4L&11PB|8LA;-#owWEu_SpQ=5=t{yM- zHW@B@PVYI=Xjk$3WwXIZSg{7HVfQ`{PO2uQC>W1Z4kc*B2f9xo=sqK*M`SY*llBq% z4@i8p)D62C5DYKw4qJE25mXieLf%Aje^S<)suf+0G*GBj-`%6o3|-&k{>1jTxpj-( zjUoX&zc0!wz}{BFYQauBwI7p|lr-!b9JvNCYPRm)XmY$e*b0rnp<+)PC+3_!>R7E3P-z6R zs6XRHHFi^&Ax}S!BGJ13RoT#-4W~nmExIrpnEQeN_7chC;tHzx+x=V(?SQZI&vD#< zT-2nNf|k*pQLC}jQxDVSd+(5gAp@8mez#kZ!WUj`@UK@S;t0;gwE3u<@a@%u(KjJ< zUQjQsOx}O&T|Z|7f7nCTW|*EXznUdXCp!j#&=R~oUK4J(c70f@KxGC~&|a$(m{xgo zKW)cw0+p!G)|1@4*-7GG)tav)E@jJqOvv1_h$fI~*&8EZBJght)s2&&9 z>``lrX2w~{7?Lcp6~s5U(1qDTvIJm(i#Xuim+s zX`ii1fiMO%!+rFpbqY-B*4%b(N9<(Z66I$m*0m%Lil_A-)VUUt_GrmdB3vv@p%khv z!o#2xWlb+M&;eJr00@-YrypYjgt}^hUj8Zkzq8s=)7jObZ(>xvoY`V8ga~i8hskLN zp?OcaxKj||I9DSD;15v8Ua>!dad9mRK28w+w=DM?J8BT>Y^_{``DuJ)sX)kx)gy88 z^84)P74R)v+B~U0!TVn@S#@y{@44_y$sHE zfel{>l7kfYni<^IC6R?tKkGURJ0l~%27#(lvcDSu6=K9@V~9Tjk0`~-#>K@LkZ_!_ z^lPlO!3dR^}6s9u154{e8^&v zRjVJ=yEDVwa0l_VwIEmwH#s!yoaw4LC)uri?lBoO`7Cgj$K(%`gEfVNxEd`e_G5Iu z`?xc1i*+c-xJAR9y&sUE$S9HD&*=s2V;Piky12h5DDLpN{k2}JS|;P%lBEdiamA`o zs*X?=QAQ!X`mWL7fkA0&!}7xl?ON_9kyyU-Mjqg zb*2kCTAcbvQmN1i2!|DzBDe*gYNT_twNb}iV74eM?X41eXxOGg`l+yGzNS*x39rC& z)EMgs5~lP8682z77tQgQ!QgzSAS-;vg-JMcgp|HXTkN|!;`cN~J(Ir=Xt=Kj;XU1& zOXDnzUFxeh8h>n(F&yw)d`HdRYhW5$YG@VHgCqTG@p-*Ncg`A>s1a#`_vs64Kyify zg7|oCZwI+wo6K*_u19E(<_tD#v?|CZz-jEHkmSjoQsgUJa-<$+!NMvs@@&~vfY(B1 zAA9A((rXG~+Vx6Q{=h;K{#~2IWhYu1^gF{fOVh_rMdmVwRND5tYo1fYKSJCDFCM)p zNv4Vs(vt#a+}Np=s}7zRB18Gk?-L(kA4w@gj5W00B3^{q@)999r)mFGdU@a=#ZhyN z_g4S*h`~q7KF`uAb85pSPYLsv$JgMhiwa_AvVe&S((=lO?X<6?U+lzjhsSzxxM#}$ z5h|1BM!NFWgw$4(ff=tb@&9RDs$ZHoyIMSg<^RDDr7Kh^eBhwC=A~CwG)cG2mGWQF zeoK-_yrVy7`!|?5XNg1;)GL*;NVzIshm#R(n@9EOvMw>L*r35fu>j+D0Cos68UjeV z(E{F0;~qKUoMih)EMW`LN$)K_uPc0*9!xlh@>Uw+KSQv^!Q4_B&hqK&h)Ua=ixa8l z(2R9%Vszv4OSjjDq940TBiUw}SrlK37 zp++cJpi8*RBiWld^?*oGZ8(q2Z5jWvd}iJ~8>)Xzi6#?Y6rdxRsV`L3mniG^@WG1x zBc7nege-&kmL+A#YkG}VYGLkv)XhjcPKmA++f^CfUmf2Fc3y4>cK#-7QEW>7<0H2I z=D#Or6@>Dg4EcT3a4K>+67>o8RG~lLF9J~C;Xo~D*2_I7NLWQo#(XzSs%WsZ4vE1; ziXsR!gQae6b9zpV=f;vJzH9ZqREnLUq7nn-yLq+sjA;{231Vi3#4)`3ULGPtja1+A z#^)r%SKtdtS3=h9tbN=1YSD6WJst_>wBZ)Y#yP1o4x2d)4c2!*<19Huog3=6LzBPH z2unsx zv(qKKFzcd8n0{ETUYS(Zl!u6qBl8OaLf}@BVbY3qNnxKGN2Lmj4C)dN`oaLarGOHhqZ!f08j3PA!WR7{*oCVA&qB zW7#OUy2!?d-3f*w=lndnLF+rVN4VR+Vtp7wMTh5jL|0wCGa~@=y=L~J83}x~B7=@% z;7ex~4^Zt1h%9CYk(Vp{naRJ0Qz3%v=rj@gDyrK3NU4s<3kAff-hW_$eg_wbp$CZv zbI?X#QcsdO8zP1@`D6>UqPmynFAi;V9leun+(O@UdX2*1@N18pUXbv<)vQYI5zW=^o7Fza2wmbX4tY@wxJfvKb; zv!p^jn8sWSfSP_$y_i#q_FF5*3wGv*^bqg45lr2^k0GGSPFD^>qXhS_W{VGQZ2!6K z=bA%nvJif_6c{g4NZ5es?sNVxu1^YV-+reQ9tiwZG}Da~RpIFVBr8CqH4E-}^ zhKO2^CMyz&iXt*WpQ0`xKef)W9%bG3O)iqi`Jeetq2lu_yiA%5D#+M~HAuE-WBI+i zd|0`N2|w5oOF@eYhc)2^Ih2^yFmuQXZ808Y7M;eW@)wmFJ{e|YbqK7FI{l$v0e000 zuk4>no{emK`&!!y(4opQO-Miy5M((~ny6c_{Tk@weT^nus=}#&g`DiE0mBw&pm^C3 z!tt_UEUqv;kt`AwXOYBvAX$`r)`&IUekngI-O&OCNAYu)B}T@Fqa=i}bfeBZzkR|Z z&sA&_Iu}O%G}cbjo63qndQRes)0e)0gnQl}nK+2ZmDosa8-(_q)Sj&tqO*rX^0wrw z&!Zq%Q>qYw@g`529wf6N_Bb_57kV$rxItJ0tiT0qxj3Ej@HY5@EAqJbOny%?fO;gJ8=ghmkW@ z0Y;=knX@?03U9;h_(sO$6|ByHod7q;Z*~+UC~ER>??JFxRxZ?ZzYKCu1ojpr)kn7B zIxS99l(N7c<%kG$c1A?>WBfw1(w5RVe}O{%?p4Y3+Upe)y|009wVSRNdDwnsB zDV=-N^3@@~0YOFrc~y+?*G=f22?;^vC*|ZBXB1f<+Wql1(LZ5Xq6OCl@z!4H>58PD zjcL*MfM9en;SiNTp#9#8nE1VfhOyI0;crZjSVK>p*dd5pXn6fy zd0{4BY=$tUf?*v~lC=FAUp_ORO_=8t1XnfB*(eVdwNLCELRqz?MD*3;Np8|nQ;K*R z<@@_c2S_sw{`PNT|3dR>J)fp4A7w&gs5{90##FSEv zJQc~KkO z{fcHcPZ3d}<0D=SB*(Xpe3?s;b%6UN!`pXI2E|Jaof2j3+XgS>77;!8eXE&kO!&@+ z2ohz|FBg2ZSw8p40t>3yk($2_MaymHa^d;g?E6Ubh2Q zK~dmM3uCTSGJ5$@R4>o|$IOAh%xO#=NGfeavT*4fb7xf^`xI9(K9>7=6P8WH!deTW z-o3KAY15}QCq|Vy!84K;WD45pHyuQm+T7FP<69abdphXP7BhI>JPC~mZ2C3N7Nu{o z-@WER$D5YoF=aM$=Z6*T3V_Iz>M1$nIV7VRs*#YQm|sQ z3lB~ko{85fK8TXQW}I45g0~c{p-*kEhjU*piVHcqlGt6Kk#=Tvfp0I zi)I6RccMloMv`$-eY5h4^yXk*g#8wccT|ch_QkNh8T&mk0%^ zV8}U+LVxLqstgw2MSF7}%Rf@pF(I2hR~JQ;a6(i&a1dI5UczA9Qa8#6#zSPYl?#OD2U5}oO@bL-O^Kj$ll$qO8-~l7NScwLK6{mRNPrj zrjPA_9kwCN zljhNAaIFhqi&!#jeSPY*s{KT$)py)-jwKV0Xcp5|*|v4%GT;+>#h==)OuQ6ylHGa> z13k~$Qi!T}K^qK@Ns|5Ivj|xDMf`YJ=A8LMGU7;YlT)|9Pek_pLKlJh$?q`Xa`L|` zllt(94YVDEIP@M%+=TYGPd=;M3bKxhW!IcYQvJty-iG;D$BbXwYTlw3*hSCe1TAKl zzmO@JLC&?nsATh+@dXR#xX|*z?64)9W0=p0D`6K4v?EBQgV~+ia^0_A5vDL>SAW2W zmris71&N9axyUU0uhqYe)*cATGqX_8y!ozS8@pD+moRs6hE36Tj*-!nk?4x32u9Sf zRd*KaM|Q{h!39RpB|Cu6{n0Ptw_Ru3)0ds3jYWi9QoIvzq3gl4e&5v&Nx>n`m?4WY zDN@5qDp)p>@x@QYGxA%#s7?Njhhyr^S1c~`s{oe>oBSv&yv|$YNIL|@F6xv@EJ|uY z7!Ija7;eaT*Pj>_Emc$EAnX`kDFD6*+PdOGO3tD|Mx48lgb?PJ{`Apq#f(k-HOvRC zz5gr6JNDQqm{Y=ELK^+rw2g%!Q2KS0%|fK9C3bLMrNto!^L({b5nI$G&TkD@m#C*V zY4ZHi6@;3>Lv@FyMUOsZ(TVl*@^M2*9@CNW*UGM)p<1ehUGK*kDiKcR6s%p3D{ay! z1UFQX!NiOL%*NT1LW^MAF z1+MetL+Lv&(BN``Y4eW0^or30B>I6>UH*GuG6lg@rPVgbXaDVtKO(dn#5GjpFn;pe z|5xYEwv7@O?SQD-w|P=I7IBqGxAGKv3+~;Bvqwj^5Di&3xb%h_AOg5Xu7za!tL3+d)jFF-BLR?0uhBzHhk?hSszRTFW zRHJ+ekM{gZ|8-w-BTZzMJ^xvhOv%@BXZXZ5`GrT%rijH2IkLO+&$j*{ejEScEhEgC zPB>_bOv7%rtX=Jo3H3f@=sc%k44(~k>f!_BEn!hrXuq6>DPzywPTydfRC7zbkS!`? zG*VKCh%1WzOP_WkLcd|@FOu5c#Mh?xM9d9_c0?>rc6ly8M%AOcrp*c8f2OXKiz8M^ zG%5dvd{hkek`;5)01`yri#GGF`W(1Zcwb315I34Sa6O$RPAkScJ^=k$%eQH$Tu*lV zva_%3hvlUiLDRfa*pE*u3iHM9M-E{#qpaoTQshk$n4sU2iN;`YnZM$u6In^740&Hk zyjuAs`^xuRY-j)h%PIW5F(sOua-kw`eIco?5E7HC&_R@LB86r=#!i!xiRZ0u9IBLo zq%~vQ^RlH(;<=nO; z<3>p_Bb#ti6gpc()VH=T=m>Z*q7aQ|6LX7hJYxkhJB)AXrmD|iEuQ|pF_eLi@4@9N z;gDJ`b3R2n`>o_wxep2n+!VZnr}OrisOj`ZXLqCbvU{?i}fWE(F< ziAP`%P0+8Z-BNE#w}7m4U}wBXY!E9AwQdV|6eb$zbEEwGhAQN5u1_s~DL#UDT~)yg zmx~Wp9|=KaVjK4CB_hjsaaZ}q!NTYE{Su0DR63?IhZX24OcLkr30msPSf-+hVN&*$6b9iji z66H<2UIvKk@GPQ=wqTt%pgo`v*gC!@+l7=NyS_>waN6fUXLJis#sXPA=jLQ4vWiWx z-rmLnUzC%06!A-%^p+8gVQa-RTQT7fbwdBwC}qfx>+Pdbg!=!#XfxTm^U^V2Qz0D^ zv4;96MQ$$^%<-k|`1%Pg0%)fuwAZqO> zHEG2%C*R~GQPfV_pS%K=MV{^Z%6BT+^a}iQ4E+YX?2Cc zd9j35$T5P9}M+G)0Ng2hfk@QtS@QzC(jUI{&;4n%5CZ2Vh z2!euucN5s;k#oV*gsnHLrk!1X#AEUW^FlD5$2~m%wSL~&4iFbvlIpMzx;TqAJeJW3>55i3Ou5X}w%wqBB zuU|I}Ay1%1X&BzlZdw;E1(B@8%xes9(~m;mMv1)1nyqZ(@E_7*BTRccEoQ!>M*(M$nTR^^pA>>pb<%c-uX~v5G!ZZ zeWj&ENkxVKz=DZZ;!w~ZAs`J{$${{DQJWm82Kz`5V;g2i=@yG~n2p1x$o{V)W~PDy zX82~WM8|6LVU&Q{fB#LGyig+-L8?v$qNXhX6x}&K+xO|Oc>%aElu@j3sAZhb{W&h} zOqtFK#T)__sxM!$?hKzolgj&p6asy0d|i8huDUv+FXAJO=>0tPr=jY<5%&7pbimw! zU1qijHsg~60}#yRyUd#rh#8lWw}x)7V+Ozigl}B9EPHsl%b=G>xB>=c9Ln_w&InaS zpUJb*1kYMGsvaB9Bj0#-2EhN`QAzkTtbgj=r8#pQ_Oc>Q%*Fv)ImRuy#VhQGc#=72 zKw@mL-h@?FzL^;RAR}5~o9RW_eN{;HH~;3*u1VZn`j0Z{jseOu_J=jEY)|NaA8xOn zzDs8*?X7jfV4$_TyJ)rFVO9@hI|cXmVum?iEh2u@?;Z6~m>?Sg z>X`}TmH`6^AL`2Co4kEKsjB)h#u^n9a|H-;{=5JB`7n)xg9CKN-%kzfCBcACm-{s}H6CQ2{%_LDMKgIKzxzo)=o%0# zK@5^*jg~o$yAC?0(#g^Ff9-U=EcRYkRxVb+pE}z@Y5v=4YSp;&hEfyxmR1LdmPqYS z&Fck$iuV!{oH0B?jDh|Sm&3Ks4-zk>FW0$&0E0)I`M-_k8k>a~<$@G~GxBrTeAe^y z@bIdEjVUG>;A{Yxtj~X!KL>QKoXD^~0*gF=4g+NCNvh_B)g8zPS3gb3S9CkB*505)7;WzL`}(GZtYY4iIcj}NGm&UsFu(nM3F9|&65VjAjX&5k?tC#+5U z|E*Yeb2!j+GP+TNFNS00P5$kg{PTNR0jdBzKBJ`J-DW>3CNq@L=qV@2y;9sNmH*G0 z*79a%0eJ^~i;9A>ALhn7IA^&IOFC+~;@Okdg}ahpxYg9uUSeJ@dmocNAE}82JQ7Ui zq0sq*AF4++OkMtxdS?F&#Q)E}HecKRsh^?gFwl!223Vw16G- z-ktfqoPNIA6P5ZFKH=9lXxQrMYTo7wzAqVXmS*09Jz7~QR9eV zjAPE<`%HhpbNrs;`#j(0_c>Ia9a15|tsZd6rmaav#LX}f8aSytXYcYd$aqCFcMYY|a6Tz2O0tX*mE&fb3jW%i zy0N+)@w%~56b&t7EZGt=EQSJfblf~1xmOk=Vn3#MnD0sYLAsc)JO~NeA%nPe%O-*I zq7LI;rhR#m1UtFa_D~{9oR*q6!sQy#V6&h#11%YV*_!}$(TZa~v6y$=*Zo+QwD@jU z=sRDN%*q!4V>MXYw%U}Z3<-o7_vRvIf!6sa*Fuc+fl#~o*ajp(!|Z0R4@_6K6D7oc zw)p0ambPE^>Ns69^!H!@e6RE)Fuk2R5Gz9XD{Nm#-!<3=`1okC$dFk^vLYVB zp8B|JM}0u3osc)sK}N$2j%bD`tb?cM%FxiJxVW9(nrhoyY%qU3-DFrb7mrmbLwKG;`jq?j24vD~}Y5$W}};;T!r?Xvn04{fBk7nU0ZQd0i7uB?lV zB01p=#Ck|`w_4g8ff6*0kw_hZYf7PYCd{|H(h&Qve@erQ&GqS}asVVk zZ6T||W>^SBB690MEVpc(N?2;I%6=}ZIcb_%)w8Uld#&=7*|cM5HqPv+k)pkgc;WfW zw)bKr!^$sQOOJ8S^VkJSG&lk*t*rRkkk|tLOcV_AlUMtk&?&s>jHX4Y!YC@MAkr0i zq>+%{qdsD7WB+WnYfMdJNWW!%-e-1xw$)LeJ6Sb+xMLnIr-!c{jbt#GEC?2}M8(h= z2L41$0SEqC)*9JXw8GE92ts=Lrz)xOctEM(H^w6VRmp1*0wqFY<=;O{FocayPB z7>dV)^><#{m2Sq^3wF?1K>qq@F3EZG9;VgvP}Ibg}vwk>4X z38MVG#(Mn2)44eM)dfMjS)A% zth&2&;hGKN0a!DEEs#pI5Qv0Wf^cejCa$zG3*knuB0TA*>@rk{pQ^bVzc=g@@H8I% zJy1$ZCRV0WfUyH~r&Yg&xQOCcQI@ zf;lC~yA&9pG5&52-t zbSRa6NAJ=?5?w(T6b!>J965Jn%hcB;HDshyYv<3d;Q9sFE-^9uKBOH<&?c=QWo2%4 zVeU0hB8WiP7YYu#MD5&x0NKl7gReiP<1eA6;@p0{6?fSg@#sJ8KZK3`USCk4ffjvJ zwiV7+2tg!CX0I-61qOrigkc#z&x}qsM*Kpa1?w{J^x2j;R|~vi>Or}WvD%>R{IFWz z7d57K;#oS=P8c6^jWa7r1C>zk+))bPQ8^6^D|Qn(4r@j^G8X^ehb-^UH`uNB8??GD z9zWAp*i-dfs)X<*nKm9dq`}4zZJ>={z%=TbN!sL;P+oXD0s4iJivt%s^Hw!M|L$H~ zTA&;fDG)m1c@u52*=KJa(laD&uWY+C_%i?)`hYFM4lhf&;YGlxcYVh}v)8^;$qG(f zd@XZG>-nnQRmPrpeQqhpplQ7UsTt4oJ%@uZU6q_9;wFiO@o{4O3wR9FF~9-CFmBsu z`vNlB&^8yxbBI?%D!Fl}YI*LgauK-D7-yO|92*=;BC0)Eqh4bqF}-vG4;gfXX}FR& zjaQ1Q*Gg>?WZQj}@Z-n!8%YGB>=qwf<#XbiED9Z=uvUO+~xGAMEk!;LSpN_(&?^ zCL%#m9ue=MFe@X|=btqt(+ytKRNdal3I7_|Dy}GedGG`M{d>FhW~h1guup1M)i zKf0XufMdLfx{7kUnkF zdN=R4U2&Jb#LN{tWllzdduNhUTK@P1>U_=Ils)7zk4TfgnWdtB>ZFl&D$e)AHR?;tK&QeBhTDp7u~aKCqZ34i+@HYj6t?TtjdP36kJWaDwaO zf6jNlch+0?-gnk|>+Q8??Y(S z1NpfG9fIEee8F^4GIj?5me8C5+44$>o_E z0FaROcCoN>fO&u{VYc?plHlX^ZZOE+S`ut1sLrGAA_udxSMqg(>H2EuS@}9xiCTlD zr9cwiV$T3hFb@lmx09o@yO_5m_&;#Pp6~xD<_3fQgT%u@5-jsigCHYyEsz}C4F(e8 z;^DO7;o$=bi*oS_2?z-BaDe!D_;|Q^1i5+nIC+J{cm%|Fg+c#1z|XC@S=)%|Ko$Pg z*7K7j*v`YlMU0!<%gc+)i=PYbX3NbhDk{p&!^h3X$N5ab>F(p~Vd2f`>`wn*2vC^2 zm7BebhdtaG^bewiCEU|P68y~Re~RGb@^4sY_kXGBSz+AX7B1YpTs;4X^k0PP>i=g_ zC#Qc?yL-sLdv4`l{QfV2-SvE2VB9(|cetmU6-@pe%-MtfzZ$c)`gdIyPdCT^kks0W z8|DaedM0y!W{mgWO}W^?J>c$k@c)e*|9<^%X|G>duMC7mpkh}9Q~^T3~J#4lLSBangAz{04JZQ9xuNbkDwSoFFTKj7!S{XlBz%3 zfwhH)#s7>LZf$Sl^FJX~R~J)ucK5Jwwt^``CBe^3aoO8ji&^vV@CyqFTXOPS@QQK@ z@(J*Bit<|6aEgiuSPNJRiSh|siT(#)&-I~jE6;z__fP%*G+S%9)icJwH6&&s%p=Oj zZzIUbFDfj;$uAkz$ z+k!#=H#c%{N4T3h-1=GP{QtdNSx!#N4Q^xa`250MM^P4}EH5X-D=H+!$;ZX}kJ&%7 z@hq;Az58}yIZ{bKePTnvylHES^t+>t?VqEZDG$5 zmK*$!Fx>ydqW|m^?*C_h{l~li7PtP3{5cr@bNlZo{QU6mI1Y1uhIV_7(u?%)AOI4! zjWSe5&pZ3z!RL$9uqSOqwSLo;)JD$oy|3RAZho-y7yuJNLK#(1su_ASta8Ae$oMLX zlG&gN+I*mS^UVw#i3}5s7BtqY(qfR;0W+#lGw1+Wi3pSvK$r<}1=CA*=l8ejS6$*c zuE!N0r46d}_3yI(n#LdJ8ki#auZZ6LsCm;*72xpc*LCaU1Jfd>*XR99X*LPxn)IG>zT zy`=b+=!PgZJYB+x#9^@?O}j?%pEOd*U>%_u1@aG+%vyce*iQo?7yu=w^smKvXFYEM zuDyyDO}M(O(hJmYV=6$fpe;5qHwGl^hI<6VA$)au2IOK-z z;Vw1qkF$^aR<$c=+tO_*LnbPaRdv_aQiir>v}6lQ_7&7f{ddfdz%*iw=8lV_zo;YL zOJhNUz$8_fhyaC%_0c@aE@twRR4ayR4c3L79wo}qK;uteepN#uUwQ~J683`6`zrz} z_=2-z^h$d892g*Vq@x|c0+<Q@_F*(Nrw^n!R=Ajwj6A{Mp}|@!L@|V$ zxpK+U0PBih9d$bIH=3xl*1fGv=x4F8GeE&>KrD(K;c2z%2yIvVu{1`VaE&pZ(c81Oj9{I@wMXVd&cyEew+bI5-sOg!xPPG}|1C>L3p_c~ z4TGNPV<@Gw+|-3l^LS`5IKP@Lbxgnv02wi7wZYg=(J7~HJ&2vlUmsUh6wP)QbkL30 zK_xgJGCy!XCj3G9imc*jB3fVt05I5~sBBgIz(Qzkp!H6On1@f_I`fm3vhHJi*%a;r6LRhESu! z*U?_wgTPmu%oj~oQI#O#%LPsLRo%BIwSRts#r#KAmpkW%FyY;Azr0ag4iheid2>x8 znQ+gM1DD0oSc`QD45dc=k$Dh<`B$5r=vcnJ@8LM$m3TlHR0HaSkwOUsxui6!Qu6QO zA|TcTl1yJI49HbZKV66Jrbe#`j!|2(y;zndQZnY;ySB_}(Xj$nf6ZI*=7%#gPdVsl z)UIR=4AgD9wzMfH02J6~U*#fjz=YmSoD%ip2a-rW^?8IIH zcIdWiP1PVo)?r^&qIkjtO68*BXzK~Cj5#49nUhj4I%hdSSLI=(H z`>Pc%Lc-1~c?-hT8*)=A8uf_KWt6Lx7>s3pVp-!95D4+a*PjBr8DTecUYxHKBSoTw zfX)C4z5c5FpCc;6k~h5;BShR z%k)f@LLwSCfC1$@{i|S3B-Byq*F6``V;9d{R8-^&*opc!_+AqLv#92sxM_18 zq}q`LP|Q$-dM=&cEk)9{bp%PY=4jvCgQcADz{^fS#9?VQ>7v~3if6GppoJ`&%l ztiZwt^9&LsUUk*U*+hx3e>}urB&Zzs4lA zm+Xor4im5Jk|!kYIF0Bv8_oB{SnDJ}5ZM49wnxIvOlDyquWiSHt7?jSmMobVp`E?t zJOB{FF$J&WxFCrEm0L1cGXVr(`WLq-R@guw^lU9hi#BK>h^lRS;lsy#AU)q!etmO_^MhqfiW!i-4= zE48wUn&V}^y{*wf3Wq~Sp_PRNYG)j())JQJ7s8iJ$;$d4#WrN_`EiIi+tby7oUx%p z6I`3ECsJ&YVT?&wVJrobse6kEhe z7V(H`)VkRZ-;zT^tw0qH%yEQ-MphK`m~RLP1w4}@;yRcCwy}F2mHTt>u9LpeSt_e4 zW_*D7?^kv>+9-g*^aaOvhqqjWqC5SciIBwWNmjXW!X%K8)1f%nMl$yDUV!jbxrD8u zUAEmVKXh#){m_cckS}uidfVM-zUu0Tb4pnsDr)&5QIGnZmQ-P~7X$ZmbBkIr+C~*( z;0m$MiW&aFB(Iu`xr?!OG=ex@yI8gT=n3T+PU1gtJaV#lfHNPuHyqU;pr1QCrw{f1 zwqZWL2Lk4osZ6XocfyLa+{JPPvVB_z*!#n}j^)GTUNqA$2i$ zag}J5^lF(Cgv#P1+h77XnB*tTm@O$ClVW-Px0DgxTe`3>%j|+zeP87tef>**u7d4e z|8nNy|8DnefJs!2g!Q1 zAy8Y5Ll5zv9W~gOGyq2&bXxCw?LiZkqq@Snxtha&q<5&s(m~T$Ps60Mn|hG62$D_f zr6@Tu2Ey5SSx2xsb47G8dq4Rn@j&>BIM)ed(UJZ%OF~D@=c2zeC3JMiXc&3!IEiww z{63HVWV!Rw=g&D>jx#N;j%40A6O<gl=_ad+Q#*VvRE3jRD{0uuRj+A}?)7_{MVg_yo)7avWl1s666 z4S5bcvkpI?iBp&*!`SWMM@+mwa~7e<6>X$HrTFu%U0>h#jEvKZPk|`xJWj{SnKTA9 zVX}G|8<51>w^<`4@{?93$*N*s2kFCJQBwHN9bnMKpkGPK)BAQb9^-Aslx#@dZ)p!v zW{$x|`t*WQ=je)=-}80NC*vMMxk*=pWOmEvgx={F_v+TwZtOQCS`%*xQa@rj^pYhH zhar}()@*kc7iPqNA$V=1vf>qpt#HC{K;SdGvCGQ{8ILo7!{KA^vY*tkN5zSrtSrx9 zEb~m!bUJH7V*Hgr);LYTE|S3D_zoZl(YSCwxGaT8ce+u0^|}}6Ky)Wtt~JC^-;EU1 zKYuTd1VY1RP$1K?;Xu4AIq_3r-9T}2aTO)|@d(~(9++c8HpG_eX8T)}vd=EECZxpf zDfFq%;0XwMGY6cfb$%x%dHiS3E)Nk~KXmjB_Eyit^j*DrWmQX&;jKEXn#r$8wvxSq z5jm)^E`i7Yjc`_0e{WDuH2~0DcXt;#bJM|rCDas^Z@=g=Pm706Efw0sf6?1ZD6WH< z&>{+i8Iq(j8!L4sj2IWOR-?FI*HjJdkU_jt@?wVwW#71kk`11 z@3e?Wlr1eU{q~A$d{Ze=B#bQ@b+SE562%ch?D`QImZdcF+R$cH=^!&F@dRKUA7ZWn zVJrDcZI6IF37&{a&C7`~sXl~U$w|{3N zmZgpqXK`i6W(()00}zfjR8>45g)Fi4RQgK#1Zi`$wupH9H=xchIFP2hqwM_)v4;RX zY80=${;QXx^y{*8z==DJGO?ycPEn9n%Gc>r zyQgg#S`8mlR@G^Ay@A)yP%A=cH=b7+@Hmmd>KFj zj+%k5Nxw3hppYYIQWF>1`W$}F0Uj%s-{uj2^LbZL;{a*&|MS|ItnoC_eZr`6{`~SK zGLKz_v#kh)f&R}Q7i-gNAK7bguoPDp195^x*>sFVB|YPI#jY34Y=%G3%?l*WLoo!8P-~TzmU% zqJc-}=2Lm&p(ZR@;Rni@g%J#Sz@t@P}HdX)R4dUzHM5yg0uLt*+)gerT#R?7A;u&h@#?fctGMq?rcn z{rXvnj(*p;;3$>X_{zYlmO|hIP{@EK??}5a1XI9MPAjv06=oHuY$a9e|#{>nf*0v-Q3bbdk`mZp5x@I z>y;ouPsz)qc;nC)``vgzsTD0@pRT!P=F1l@b|E2ivR1M-ty&L9PApV}V}S>)AqPzj z3MTH(uH-^c$xI5Dmw`_~#3Mad-RIL)+?}VyJhg9~kF&FvAF*Rk^+4!ECY;Sbw$xqfHi`^%Ry@?)(_HYL zAk$zF8JDnnV^fps(SgQ{2ne*A!n!#X)g%;_flH)q5!2tF=w8Eu#i+Kk7|w4iBoy&? zA)Eik(c;_2@Yg3%*bQ!x@37kssBf(^~l@O&7oESmoE zd(S!`LvO`Z1gB`gATfgig|28%NZgI!y8;i>JmChTkLB!k64U2kA?4i~`Y!3MaBtg= z=#fsp>JliKd{#wf3gh)M%sV`6{nf9Mty=n%Y;-vYWTJJ!arT8H+zBrHSNqLmT)pyA zz6;;e%LL{>21|{$lNx0+E7$k%`!nu`tjUMlTK|m~E1z~QTtujG(8#$>U#E}p#A838 zd9&jYzN#Q50L1q0dH8M&<}x=7dTVmTO8Ni=&@z;&nqc}gFXI$9>N!2ILiC(7w^vt( z?m%$yoVQ+A`OZ|lIY>sqB+V=PV#n1@xgEO?0Ikv)(G4SqLvMkF-@jXC6U?bbN}zu> z#~>XduVC{j-<=g^i-Ev165?0Ssm@lzAusJymHyYv3V-t-CPy}S3=`cPC0f(n5Z`Ip z(oMiODd_p~4S->e@P#68aza6M$t?BASGLVU!etwB?{WuibSdd{|8ySf<+$%m($dmC zjRs!KNIyKES$R+Qy}ggy+p`P&w$;E_X7Jug|07|u72H9t*A9{*N%AuS6FvgLr6O^9 zlB^M4Bp@m)5ssJU?B%nirS^a+GBOOrb!vKjnbo_A`u^pST=Yj$r0INFZmZa<0I9qe zR^CsxRg}AQn843=Sh{b~rsz2f55}Eww&maQfJ)7_LiNz?dh2Ja3NiLP3erH;VFq8# z3aMf@?~PPm81+cb-{yE-(72mS{a$BoqKBf}R(hzQ*bi|3gaNKgNgrmZCMx2h#g`Scr`r zEY)_1frg3&w&vzb6wVXVW{#c0I4>puWJ8jH8HK>xEbrR$_gs;!ku_L;Gg!2dLIqMg9m2d4Z~$ zIQBE?j(-08uRcQiSAcv2^r2YggVW~h9xfX-ZVUyY9d8C3eT>(cr5Tf@4{4bHBX-H$zl9s-}@12-ZAPH30smpXUWCH3{|F@GKXe!&Ju;^*iId#8LM zzi;5F%q}wWN?j^U@T-R?tMPCZS=0>A6c>SfU4G^F??@Cxb>z^1gyYdjiobk1j5BCT z*zZD?M_UFbPr13&sP>H0mGyvssq)((Jgmbhba|IQWV!odER8B>p{?Ob@)IB`qKay@ z1wGNy+XzakKl%yxUx}hnAfS~}(n|wK@mIDAIhoDgKL7Ne)+S1c^KOk-vC85Gxi}%oG1f5)qb1GD+JMumMK^>%EJ z_NhMbtX$K7ay(0z*7w@tU1|TTH_Mmwd;KQMY%G+CF+??H7%>O|L&qGUmRS4}R^yEh zxxGkOMxN?N6zB(80v=L$6qEBNZN1C)3elAHNlH>|7p%AR8_6f`Vp^%Y-*Z^3=?8}o z6QRf)=B!%!xRolEIrFj*0}_o=Wou$o?c*GW%u@Te$P%909pN@6lW`2x93J@D4jMU9 zOM4z&JMSOcyPy15T3TCgRzvX{8m(bh%TS-nbc=Emr3-}-d`y@E;W6vP@)^M5Ec^9c zv$U!@X$8Y~uHL%Lsu8+1iVeLs@=1lv-U>5!s<^IhL|_WL796ueAz6K$2Q{ib5_=0S zRI65pi7^*_Xkv^9%dWbIqA=+)jHT~*YEjzk6T|^Kld4z%34bR|HL3`ZI7Jq-#;XWStkoGv5cO4b@?sQ%9A;2uzYx%?3c7_F`*jxQ!lx%{MK_Ur~ zvW%s2d2KRz3!FSkW$30PE7$t(8x@r^x^t!gM!*ySl&R&s{ESFgiQ2DR88CvGP=Jce z!$1}})n!c=H8k)^JQiFB)x+4)dV3gxTtLlJV#%0%OE8Re;T6XC^RuBg7}BTM!Y-Pi z(*%+xV#JEz3?CF+zVnqjz7+C(c=YpioO+waddMF9_vpSAdt>;T`|)e{Nlf?29y)D@ z9?93=NO9lKm@?MLvhx{M)_qMrHT(UE`t0rHd z=!K4$x+s6IG&_q(6j7yD?9j6pWoSGPo0#ztycv}4DW7##LccrL9f4%ThRKPtS}k(4 z=1N&KbHp~bH(1n&r11Gh@7#AL;+TuNPt5LbCIc=T@g>je+9pGdWz@p?@XAs`yQ4BoSFHZ#yqF%zLJ02aFxtc#lfAX7=4jLfJ-HS5kwY_5of_V zW^H$k11wN}q;2VE?^A3dB7CcFMbJahPbg~cMWW;>yhx;fig#9kMVwnLD_FhnFsI^qY~wlk^*z_? z4oL2$^K#X`m=M)?fkO2wX=udzt)aZRH#i7-X1oNARWZH*B+Pi1B zj5Ma(*In0IzaY9q58io`pg<$hI{z7i^cb^ahf+;-N(Zs5JI_tW%f2Idn!&Z6 zz8=m%%Z0&*T?vo9m_Py``RouTat53cG@sJ>9s?Pm=^DePf7HN3v*3$17LdScvB)YH zulR}fNYuw7*8vfFHj?wxo*QnM&z~QAR}#0oE&jh-0{2@2Dx1Du?9aIo*EZz>hT~{1`26gG(Dq1O?6- z?Yty79j>$Jh4MX5E949{mp#OtWfzoek8Mw^t7F&kiA z-TBmY_hc5hQTue!{kS6S{S+#1yvVB&^t^`keZnH(CAq_H_zzAVNtK`v5ft> z+6UUF#;5c0vaZX>$0=I>$@eQUz=`+Jjo18nlSqWqMp7Oagw!De1s&N9!LFf&fkG=wk$lyb4z4 zQQ8`7raBeYMK#`8>psI+hp(|>$N)m%- z81ZLxA1G(~P9-=xDCIRvhTS9mg`A1F4;;&3+)pfrAhG`I`{lpOF;|Os@TWuDM|j{( zx2TlV<4oY~JKwneV;lKz_7rE^CCyLS=#mHbW5J*Rp>QnTuw zM)?Q$7^alRASIr(MBRpmaKuH@43w<34N!mvSx-&aG@904<*eL9j#S*{KJA!^y5Ej@ zJqAl(|EWx?uCMNisd2QHHNM=HRQVxEC_3l8gJCX}<>Z`qil$4v=KR1`V-+ z(Sw2s#DXu79u{_~CobT)Q2YUoeICeAg#v=t<%e`viII`>mH>oF!CJ4T&BCDueoaw2z83(%>n|>+ z=#OhxPxq5giw{@QF5qkc0DeHhG-CYfkhwFdcL;L3hE?f6^zu*6U-cP}ww%C6;wK!! z?u)C(u7`(*Q#6493o1*ZPU?b<%m+6tt z)QAoKR=fntP@k_&HqfcUxpxavQ^z=E{-U%Uvu=7P8d5X}xvmzN}2+lI*Cj_w@DvU>JM~$r3`K;bO=%N~0!Z z&>un}m@IQ&QK2ek0DzS8^}vvL(CWn{KngC_xd2g1zwI2)d?4PE^f zAkPm-jwOK+V+bXA2)b19grv!!dhr14R>hmi^f}BLXFn(wIn34Mbi17T$9F#21|Hew z`E2hwmyK5CQ%TU>o^ZYjF!nj>cA!43c#m)1)=8sRVdwcJHKkGR6}h zBnX?ap=cOi%+%ST80C~~*Zpg~)43buIZ%gSSf(u|83*JzN`jezf6WJMVp-hajxN9* zw5herGC~JME7l|!28L8Z#AqzM3tuIV@Xdfoh5?DtIlhaSZEbvR)N;-uynYRm#IU%V zH4Mmv;NP2r`ftnKE$w%$W=~BTEvm~gVONDyFn|6^hR+p?>+*Xj+PZVFpL;1V-8p4F z&5&6D)MI;WVdZvwRSPNiCwdTDRVO11i z@2~ZbqqTZ4pUZ=VJ?r8Sfj@+ruB1Wsd>rvpGM4qxd&)E{X~t?Mxz?evsR?w>B{$kIrsW`0zxH#5<~h`sp1e}_K}K7F$_%bymAGr zroIUXH0M-dmKA3S=_8w^_*?XJtq5Q45T(G;NTpmJFs@wq27$8rCuR}{hX^v@P^WE@ z!%tOcXkFhy`8-$_XQ%OxOO-|&xO4i>_jv<2F zQ!W3X07Q%XBN)b_4`U%vbE>_JDEfgSv>JA$d;maRL#c+>l<+jhy{R&GPN!#`;i)+1Z^2+|1L#4UwE0LM9;ZQ|l(ram`Y4-Z+{?`6q?=>;o%2GX@( zP)Q_$K$h}*QGjf(pwi!aL)h^;4VcZ>&u-U!9lr87#{KmDIr*`CB+>CZRrsZ?5+%J% z+$}q@_w?onj;k?+r5GIh_nwE3Q$M!Q^qG#&$y-{YJ3eCuItxS&=6d{FAP$wOtM*8? z=wa06XGtbxh5)3{xuUb6hi1GGGYmqR{PcqYEAK%SR%^ecU0kUsH3|+TPrjkrPk%v! zXtffhesZhBNa0o)dV~c-gjTU3x?sQwf$0h!FW-1S*%G5d8Xpo$fWGIL8Sh5R@BNpw zwCYUB8v1kqOQb=x>Asf{E(F~oSR2vUOt_rF>TmQq3pxDUB2X~YkO9wYt-23m-S>M- zOG~P0G`>6hp(%{NLh1=Oym>)B3OQh^=7!hLV|RUh{h2XBUTZSeYXkeRT?9^EYzl;m zEDV7Y!@~nex}re}f^kN^OvqxUFSC3P@OP@SqX($PY6qjpzU340X%!33q@wE~cRT?G zL;BDd;-6Q0mMLP;(kYDF>wg<~L*j#xQx4zs_5uq?xq0N3Bs0aJ048k=B0qYp#XfC$ zEh`1f7{rtSE+M4@r|oM@k?6NN*62{YF|9mzXDv@Ghd(Y9U?s5fbzOb^>4k0X%}=wN zkGf?Vc_Pd`uLf`mG2OC@bxXim-MfBtXw05V0y~pA$5(eV!^JDKyF$WFLM+RxnNV81 zT_&I`Zi!FuFvZtuW{6wWW-tbFj?Xu7)h+2sO4^R!Nd1)5YE6h$kw|8;_%XDwDqK!=7C6T6rK;&wlNr+Gv20eXWYhiGG}Q) zw5k2Q|9gk56|QhT)Vj!G(i@Luhh(QIxG|@;-hZ_pN4k`t5&yihFf*tOZo9Z~SmT$9xfXjO3bx z1qX(;)wC}yw=ZARa0lL~4uTR}26=pfH)ZO$2sVii&=Wo(qdqYxfElKK;3Ro*028-* zsWyz%6xpyp@9}onhRrSM_V*dBOh*tEk`azgC^IyRw!W=`(NPqRjccqZ?9|B!+^I!oPb8g`w1taXIL zYeP+fgfp8eOo@Yl3hal;0a%{v9VLswmPx+H%*n%%()WqXd46tQ&)c}I9Qg9;f1_Gc zUZW9dk98E-6OK`>x1#XAlN_QFv%o~#iTmp)=?z3d14wxD9!#P59OGt!06AJbKBX@{ z7>5UFpRhI>DU$PmhRQkCtl`MA+`3>Tr0Msz>HCtDKn-&O3A^+l8G9v_fm>5Uy2#@Z z{^@M3haMTE?Pzl$k-2lUe&()oadNKL_q*Su0z5o`7Hv~LaHa3g$vqhyEcW7k_z=L~ zn~s$g7OYp3{QJgpfm6qUYuILA-W~q(zgoJ=+&wzvhBw(L=?O!4p4q_m97Yu)Ahkf; zJBoFBPkzM@I0-eoJxi0iO^lz|7bVQc?d7&7mZM??GADY)4eIp&K_Li&kr3X2)F@dM zrbr7TK`${;Um^kF$trT-u!K(=o&1B~0_GB>1gT&{VatZm)>N#ZbrA z@F=etC^dYU$oADCdaIIUhZbAAOb;>sk~nROd5>mrzykHzGRl;rl>g=a^jzUm_{ ztRkR1Q{P8#NK?E*Ffzzp2MUke_WQO~pAKTQs1@BcU)`%e}XorcBR;I0aF zB#QRXH$j!?nyIQVXkybB+xlsM`Z1HH5V5Qcj8Bhpw1wm!qIxLgXjr}=f z15Z$28fD2mCr3xWqq)F~UUcq<0_pome7sA+4LJ)V@BBI$?D@K_0+jOoU+>NIKW<}z z5T5~n=N*IZZ$294`fO*cxmXEiEbX1y-0%(iL~#)$sHrFRV@36yBacd14SZp6sAg`M z4cPGtux*)n|7WkPvVx3(2Cy>zIpLM=hbGmg7TJL zbN*K6)$;JmwRm{u;Hm!3yxei;RrWO|)u)f2Dh)6O)-Z<>iKSHuM!yGCVG`7weGxzp zG27IDns!LxCS10E+J!2#kGlcDTR_-*exm+JKPQLCA*qD6$7Fe^guWsuO zO(4d#)`2B%D58FyCc#g$X=E+j^QagLQf4WcJMKPNk9nRR?p^r8laN>X&TMdfawthY zRaw-m`W2<;4>eE*zez+4x1$i|bBvyP3sB%Z4$upDnsi=1Dd2Q{zcacU)Q? z4$rc?(S&rf*twA9lDupFs-FADPj8naQwGl&<(Q%!z~=sqF>R^yw!!1{+(ChPN7LtQ zwZGZwxU;Phc$xq_VafQ+!KWT|ZXP@)8J%G;kcxfmwKW)ZcmWg)#y^E(9yi|9c8uT> zwwBhTMfR`Fbw7^HOiEnPJ}3rmcg9P#b$7!#x_Q5y-3fr|kG{wqo`hsZ^r~GoE>y9I z>l^!=0uiF*_x>|84M-)`|Sz&f>`+Hufh+*B3n1JNiOuKcp}jW5!2e|)~H?yBH;vI z{j(zopmitw52(4ax@yMgaedI+I{?=h0VRt9YArX=rEywkpk}#H4PC1J~QT zZnC;>cCRr2xF!zQ_a3~9x`6yq7Dqz8WRD)faYv!!OSIX{Hdh}GK3km9xro zed~Eglt3QQt!m7*rZF)jRWC@^5d(lG`m-^f>V8;cDe+j9;_+ z?2LWR3ohWfF^rPn(BY0pI7Klh0>cZaxZ>L6APDa~WTIg29g@G;#ZE19@dZG_&cay{ zeOy92{vvA16+Rkk5Qr6)LnpJq&}sQ<(fShb;LSyt!WE1jj=Rb$ zmd>sqxwpChX)bXj94o61)c!_MMje8apu|Wpw%s^w=i%)wk{hden0?y}f4aPqx?L`{ zCs6NgFOKOmS~{~Bun#^Z-0M>;LLRy)wa@f5B@5>zQ%csS7pHJ2OWxZuBr_*Aps<}4J^AMbx|g)e=6(&R9Qhlj_M zeCjAvx#PL?qsBgab+axxOw-9?{HPP%E&Izf)GAGRh&i$g`kTIoi6#t>-kcp{@Jr^z zpIO6w1WWo-k|Jj|0HbQ4&%Y3&#dnFUR?Gs^K}U^xjhD-}gdm^*eAOlfHnzPsHiZBp z5P&rVt5s}0Og~rL>*(?BSla#ad2gWaLx6S)z&eg|q#+?xi2_7vrI!ui3&6aW$KC0y z&1!q6u1#{_qoN!FGti#jm_B_R&w?2*XMR6&@hRfjdxyov!KO+`6o3K5Sbrfy;=12y z%i2pE7BunYdA;DK*WBefP5qpL-l7t&-7hVFvytr{=McjC$M3vA7mS)=fcXA^|2oc4 zKGFM#GAiX|l^pA-TC@w{jS?Q@@{LNCvY)t!F9YLHSPoHnU<8TJ{y;^}R}9)X?K|i# z1_>XZTM?(AVo*+ZmCjVd5cg;UOZ(E1i^#!c8;3%3vnFn&oYk{^*UeIdDu|L)Sri(q z=$t1+gK;JLcV-0C<#MA7A#2(>MhT2vtu0<2-g*!1JvgHx!2{l8qNoI0)L3S~*opNI z>Tg0D%6aFB>|%LmCwAOtDCWKtex5b5QkSf)=9JJkohY#s!95MYA?A6*@$<3%auSDK54pLU(MBNj@)Ln26?6(`>?IoRxB6!ZQsuRu zXDxFRf-vomFwwlpKW+Azzsgs5MJS^f3aFsM5G-z^viF*tH8b0Rx0@5GAo zqe zJk_XzyooM=5W#rq8**Jq(w*2f0-VD7=DKE<(Zc6ZSBkzqNjL>5%dZ!J>0f;+`9 zrqjW_WvXEaybzO<33=_$J(vb&;1aYz`p z*g*r`alEth6kgL8q?`qz#0A8m{sZu;*UGfJnS<_&HaR0%QT$Z^HJ{%5)%j19piH}- zM3)JJGbw6CHem|#7|*91uQ_#6mqu z+|1`bUwvUp&A6)ed#DbqR)}Gvqt60;0ZCau0PV1@DWE1+W0Gy_FwIh`mU5$1+r`=? zLOCH4qz3X@+9^xUEq^>5wS#Dm%h2($8@^LwUz+;aLtScuGvUkiw%o=$Rquf*IlwPA zTev*^M7nE&OEYAdn4d@oAZQZ2stI(~f$T^LO+8)m$Jp%581zYhNtV%Qn-@bFG#X3F zQezI36|v~7mG3qpeE|ZLI=YKj{wy;GWG#dej2qQcUIU#qWWDd_{ml1{c_r zzi;8;E##Gohy4grND-iKZAtls8?E6_T^O#V@kf2*RQdAAj52n$^mFAR`t@p^c=B%- zeRt&9@gtm>0^b)z`nF~VqSAz|Al;Ae$*$@6fLp!x;3>nLeO@=9bq@+jM|n`k4t+d@ z_g#W9VH{9R2328;;1PkEF9HS^4xHmWMa!raq9DMhzk28zxRpTh%6mdhJkVy#TS5OC z5BfRLUV0MGFyvN}Q`cS1_nb1wn8SZb9n>ta>21kW1pOuAp^mPm6|tS+D55`z`H;7! zsG67?nhdy6kU&iVZ$jM^y%w8%lnya@8RR%oAVa^SGQtrUu}D&e>C!0OlwlatD8bAP z5XdeJJ(D7Vq-ri9TLu_pS{+Jesr%kEN=nA$z$$U7NoDbehZeI9V3Ea8o;%#w+_f^6 z9$&>@i=-61eh37!dMEPFf_~Z~Llfl~*OEHYW0a?jp8v6Bg{^9URa7(7W925_|AK-0 zm(usMRKmNEP}ilAtfk45HdRZ>m~l2_QDZWoTt2fEW(glXfS?f71+gkgU<__J(2|vM zH`Ms1&XR-(k--G`T}EM=K#5tj?8zIfVoI_?GCt;BgucxW3rT?o1>q!1vAyd7tx~oO z0F;z?)KK}@V%0oj#6AqfWu3`t1tLI-J(UkVY;(^``Zofv5a?MBcE(%2mO{m&wCac+ zG{0Zz_#%AXygIr_)|sDU_6?7&O%KL`xx+qXB6*&HX|%$LQqvyP291t~Dae$RAhQs} zzMB;^fnvHt%+gv;gr36=`Lebwgx#At9KvEfQ=-KM%>yr}kRyf6lZ!frk@W*El<#{H z>r;t^z%H=AVjLmsNU_JnMcfHTdHlzwv`b>7-d`a(WmNSaf(Ug!7|z;UP*ovPZ2KY- zzLd~Qk8B@_G#EvE0UjBBG;2sVtER@TTRtK5Cgy`IXIm2Km%P=jrHxz!UENTkQHk6J>F|m3 zzlcC(!n{-}w-7*cqmaVv3{thj5<_=F9tKxe5ja*wHMgR zO(xGZi1{OTYLWvS8%3fhQ$BPK22eOu@y?oPd{5<4G9%hI_Y4W3mR}8Xu@uhBr1Mt$ z%)B`w6K~wbsGbdJ-N>W^ho!sF_T~1WMF;E7C1Xydg2sPEjTe6WWb9$yz{oi;!Zw87 zoe!ZVV%GxWelHv#NOD06YEH8<^S2a`P#Q8AL`O=HS5?l00ERh<&M~lBhA1|j@TsIi zNk-5`SYMJk!!+HzzlOc#13+z19ICheV)5OH98v^(D1aAup|q*-n1hJP2EWC&ndE4ys1SXL;7_8OTt7H zo=l>q1XUBAgcR>8@MtKX%WD7F2SZ8%5?yNVibfu0L;r|#h=O$-=G)$MM7DKyWl+pe z8qR4Xh#8`E84@H#HRHgX|5={*hZ-gQ7EpPAHa}aTqV>UQUm#jK+?0L zUw?_ea}bUy)OMT{MH!61k#+OUOHjQ}JsP!k%nSFfxA@KAoiYEl zED1JjS^bi^C#t{LI$CB-KM7(`NLHAW;Hv0Qq5ddni8Yjk#he}?=O?Pka-f}(_7*w9 zeTb*TiE-=4!`D}7@-Ewp(TQ#0mJkgU1DXxWgt3`syjT&rFD&}<01|w;DcXxEZ8i!GvYrF&U7B|J=`5$B7;>u{l~(i# z+M=c4VTm7v&{y*RzW^^m(7w2d5|IF3pw;+vJ-a_4{sdZz`C*JH%hK9HQw9@XC?%cd z{^p`4s3^80)S=3@gX4~p1RBVD=UgWI^Le?e8CDkI0gzQoWM`%pw8ZoWfYh{r7KDoD z7U@3h6m};rE#hsc$#xTih7iE}WUp!f;G}>`AEd@i+S%|d;gh7F(Q1x?L6yc3IYFjG z9Xqkv&;_X?PG06O+3OnA6$0|sg|aL)-kjJn@ew+~%kd4w*n*B;7A{66f?AxgIolFL`x*72}G`Eq7O3CqdeCi#Y_W{L{ZNWN1#deBWwC{J!`ei2TH%`Mi_!2swxpOp<#e?x3iZ6p&3SWZ(GN=JiOSX-5qk@GU5 zD+(7#UlJ%}#zeEl%7G^!ELOIdh{%x)JrsGt(pyK21ShE(Qp!j#Ls)FZ`jik{kU}X- zr~#KN52XWU3I-Jfa89N`4J)+g zB*rob`F&iZ*owJ9;s;{%tCJu(;7q5(AX;n7stR_q$Oa1h31UFRn1kBB6i=c7(Oo1* zdCH-j!W1N#ygnG#c|Y=H#--O!w44|-s8z6(B|sI$Qm~XGD%JE^Yf%JC0wt$r$mW$` zkP0sM1VVDL2Pyhiu1egj07{sNbk|!^Rfl@U*fdX+iO6M9fQVdKc}W$KNgO_i0CG%V zkurOw5?))6VFY9YcTxtCIsg$R2w?v79i z3tBK(QQS%89UDZc(ORVozGG0=XUoCh3o2Ef`SG5G*`| z7QeT8qP28dm?6S{l(=V!WR~IfW$hHh+B1Wei0c#OkgAJJiUYucoLs>vlEi%s0*4n-=8GsQPpMv<*{?tiO;KWzdVG4TMHxVEfMUie= zSSZx~#>|;0#)VZtFE0lQeyC`{m^2!?c<(}4J8pOL+QXrb@mlBuXHu3To`J zj7w#5VzP#k8LUeB$?C=nLB41#H_X+DD zB4QEWDw{noC;-)u5cl*b)JgAP9tdNUt|W*}_zy+F~eZM!xTJjO762BD4V4VZP0`0%(yws45855Weu%Ig*PREio1n_}v29YR-l)sk%VZ-m8Ey11Y+F z{>!V3J7Zfoaj?>1eMK*T;$4pJY=FLq!LLFC=f4%@S}v=C`&a(v28Les`C{D zN1j05(kyLGfVC~}0A{%T?4^n#nAbl2HDK=~rBoD%1e#Ot4G8TdULlMRf~-Q`J&hzl z`XEdj$oQ)L0YoB)>o8la9kl!H`{b)Lw2`7MbPkh7y>}Bee^X{lc z?eVKL6Prim4kQ80mfeGdYsnMu0A^UkLdkE)NsN>AQl5(h}5mZP#*y5>j|}j zl8`(2dhYU1b|Oc!v28gpy-Ln!jw`qevR8pjPUu;KdY6FomM<$bZVkViPzW6pawHNi z1L2<_D3tnjs)GAh&wdI2BSfUstP=3alR%upt+}yr3bS!R{;+i@?*L|K7d4tS^G8g{ zG*3Qb8~rR>;ly7e4TkdpP;BeuVavQCnJgFPLOobA-kFhI;H1_u?7~4IBxu@?ODSF- znq?3v-T?rFa0ZO-Y);#w#dbpX5>H#s{(-&|t63(lMb1ItP(Xm*yI6n83??#YZOS`< z84`e+$?;HfM-apu3#5!8BGt-*#u#Xja_q>5uxX2Q`+#JB0|W`mTj`T$-U|Exg1qW5 z?MmQBtroY+VZcSvag=mAQa@#!W57rdIE(^Ra7WW2oi_lGjnRbB43=Aho=um58JpyC z;*KI+8w3F0vnCgmQr?I4b1A(8m|jGXnqsBKSlstG_aeF$%7vU=1W$u3YI2M~3=^m} zQ2fI;MX(w*1IlKAaLKD{MTjhw!HC8d#ufp_NscA z5(R>4si(iDyeQIEhn{Z8GZ3XYSCk?=Y>c%LoEsjIqWRMOk%v8@-L~;r8kNa0?C8v)MveQu>=ce`%elbt%0dz6iCt5d^rd zD0FgEbc^yvm|-o(Ah?9hU!Rx^>fnGNeDt+}ag%ho5(Rm%P_=nuOi^|``SHQ-X#d*y z@aBAa?7cUJ52UmF;$&<2r3XsoA+0>ka1PhQQ?*x=eI@NXra!f^A5z$&f8tN_3~tc7 zW?D~2M+b22l}@)e*gms!{@%^)vp`hWbI?RrJs|9MB_r*{eAK z^NyBx6iiAArqN@N<0Y9;RP+TXh2anr`2y-?$--ys+wllklpO##+P{8q{guh#o^!Re zMNxJ-old{svxu|#d^DaMA0CY+lcs6B_Xaupj+G53pbBt7MEy+>jUp(FHVGocOX9dv zMJ2Qq|HBX=i9g2(HJY-js;csy#*^t}I^DZ=`C#w*)~WO7?|-O2+?vm(@;-$YO)6NF zRz>7v!knpk;0Y(uUJ$rqB`2(Hd8aZ1EG#05a}*$5D6Sa@DY1h=Rz1KE1n@-G7Pjb2 zMhAPZK7YJ_oxC@;==O%28^fX~u3f+Wm9IVh+zT(g^vdOH*Kdr*li6%GtLw>hP6Yb4 z1NBEGq@G}VXxD+{i*^!O>4ioqGK^6(L|7+sPl#q%Yx=$J&i2-Yb7voX;DJZq{jLk= zFHEMhqvO%d8&^ihhZi1r_{{lxo4R&Q1JZs_H3%ue%YKD$A>jrD5~9xx4Bp~H%fZ-s zmvv``Tg|8}TSOQD0O$ddG(7c{Cze9CM<>FqveN;8-B+LAz4AgcpA|(}bUNEx8+G0M z&X>OW`QQHHm!EukcW=)c>~yM5r(2a}uiGU+$1m& zM40$}C(uAY8a`;UgdV(0Ba4Z+qy$2M>=& zlkw!`Z#-R3XXo#~glJq-XAZF-NfKKo1!wILXZjHZ5{5Tsz2o>{-I-yP`;8Xsv~!cf zu`7_~3@z2%hyYM_dQCll_4%g`cCQ#?ZPne}7#hT1|IIJ{{J;6kSDt#xBHnZ1{QDk# zS5Z_1)VS~pGemk>|;0Ou6lg{Zbd6N=hP@pqt1QqL4SYWSRO-cq9@Bz{q< zvD@3Hwzf81(_FuH<@x7d`01bf*T3+~pZTso{zw1lAO6D|n_GuR$FIKp!fZah|KUfA zvYgLnIx)&ytOf`Zre?EOMw*U-nH>{5AdaMMnlE3&btr4k468~=WTJ234}hSHgYtmwbz(BS%Y@qhNEuRQsG`tI-EIkj{1=FRJ`UT*5AbE#^!~?&8yknm z<7>MIjccqmd^#Nngg`{YFH#OWgY|V;(pmYos3<^sqhC`qIDjOvwI#HIz(-w(Mlpb3 z`1rkW2r+*}gvoexbaZrhJeoE1;DZlexNz}zp7_#V`PBFRg+KqFUwYvFy}g^e*RR%f z{m^^fS5}?*d>Xx2G3m&soy}%Cll(Fo6$CzArIqWqR>j=D%E=X4^)+!^3c_fo8l-6i zF|Z|mB)*w|%1(DOI(qTzUzyKlXv==T4}gE~|NDdA|Brt3+?msV@DKcf?bGM?kEfH_ ztSC&UDy%W$3<5+l2CX$hui;sI%&1Y@*nr+*!i}J2Gm39EY(c=NFd*C>*2pFm4FAB* zatf7%)jhewn6fOZs&d{RA0JI7XYC6iJNG%9zEPM0D^}5|& zw`Z(Hw1Id50l*V@Pfg>U^Um>W&EzGp@pU%jJ#m1 zH&KpTy))2wv7rs6jk4#Y(MKPI7|Hr@k_nvy@>!0|hZ@TZ&BeQt}M7>^* zpJJ_@jK}l&JUEWD2jtZCFAsQqgA^-faj>-TLCjjA|1cnuDF8%-$#nY6Gf(gC?smJK z@pue?yiLg(GoR1A_m4mJ_%qKu{kQ(k-~HeHC;#!c{GLx99pQL%{PicFc<4QkZSI_& zO()*_38!QoL^*s>~ZQFOZ9!-M_f8%LALR1yJ2 zJt%TcT|lpYq`2(!;@5=Z^~aR%5P--7ARZkZ?e6WCw&?V_ovO07;0ZHmnz}h0jURc} zyI*?Y`TzO*zyEkN`p)n8jxoY?HhcDKUw+_`M^BwSKcCG~YoR^=C~xC#xdtF|c6$t3 zQL`rB$W*<(Wqp~U#SP)#C7#vWZR_ z)(`+7yov$HHE!ajolaGimH2tkId?c3-}k_SRj2bK|M(w|$KyZ#$NngynNBCqJ^fYJ zG-of~JD<-O@I|Mz56CGEa;S?HiF5YC>?~crH7{$-3=4@~={NROa1=^@%iS5kgr7x! zJh9blUE^+CyIj|Gn*-H;z+T1yHd^{=&+ZfZK?rb)F`Gps*UA)VthfKuPU^fA676IuBf>Dk%)*EiD){Td7@6$VKOy{-ut8R`0V)$#+aY@ z$)6mJM}O*1{>dKpCzJ6D&py>O^YiyU=<25NO=}@Au_dBD(#eltiXyi{WYzd#{mL3M zLnhr53n6}{i~(XU#!5lNh^8pZ-D_8NZ`_#GbAx6y9{1N>U1`nOs0cD|K~pa>C2Zd zf9zx5JexPc)-Yx~9`D|`R?q8hx4UfF^3`4`nwOVbBcfY2gE`l_cTPWo=2t)WxyfYm=l<-U9S%2+kB=_D_`LW2o(CWC z_kR7?fBnLRd&+LVZfXEDrf3?sw|l*5nzE`E+J%Od;8J%yypwQ^E-e0fBK(}N5>l*n_%pf z%P(Jf`Guk=5DmYrM+6G0ZAOrsJ4T`eH0*M_X_a+7#;1; zCKFo}IUv!`*k+AIj1vzeDax`K4u=K}zY`D;hr^9dw^x>BSyp9Pl~q|*Rax=ps;t;MS`}qgRvoER>6Ko8 zXp6#=lddciw7BpA000c4CqJD|o%12X55XW#XEU(&!yo$a3opL#5C72*HO|?h9FNDZ zUcSsKj%Qr_6a)ZiR2&jpioz+Z$^5;>xjVVCj?54RWcnp>V(=FQ6j7)~sU6+lpsa-G zy&oMPhboBAJ^w7B?Qfj+&Vwn?R+I6uYig4*!)k4wcx>8N03>K7J9m;p3_^va^guc^ z`M7|P_)5r3ioILr-dYqP5OE86noK86-5Bwe8H4lLoWMN(*!zF?cYo)XKl7Pxw+qJZ z?(QD!@0V4@&+st_&1%qtbSpe+xfz%DZ2j0_?O;;NxNQFgNH!|)l*>_|a@>TN2k~Sv z03>pVc3#gXlL_Z0OsBI~FJIo+JdL&@*PtmI*UToziCS2U0W5fsT3wfmXv}Or!_lZJ zOU86q<76`S-Wg*7z9bL=Oa9>gsHAmVH~Z|X*RONkI(fRKxQMgTc% zYC4;Cpi>kj&m>winNIut-o=aeeCD&i{NDFHw!O7Io6Yz3_J*6AfC!}7D9QkFH#2Eq zI{9aztnT57mbGJs7D!q&om0q!;g6mJnW3T<3b)owCgb^h4gf__+}OQw^Wb3P^n(JR z%IWy1nNMw@bFxCVwM200)QQ)S2qvS^MDwwU0MHn#hHO2XAI#_2BH!pZhy+E+NR^^J zQ8+v=x$X8PugD@}Hk$!aRdoQ6$Q#7*czou}xvzfpOP~MzZ~T!z^2e}lj*ds;(Wuku zc;}MYk*=vOOANXtDKzo9u!dWt*9#_Prs;CiIsGbcXOok>NP%ptSymMW>)FhCkH!>5 zxqtKKeAe^^o8CJBLxA;kl$odiIoiFYg}P7+kxzPLFADN`z-hJQJGNWn-3qGzf}5BW z6p|hznU!U&ttv7y=GNJ4)-*LBcp?Jg!%_!>;n%+Q}vBG&VIJQ}On08#5kbkqvz zyyMDxF+&z(mMbk3Owp4U*MQ;=LJE;bAlQ5awR1p#XpAw3hX;hFEGzFFBKW3m<`cxl zH=r%(^hI<8%X9@m@F>Q#zT_5?-@}#$DUf_M$^S9=AZEzwJ|$(fWs>(2r_)(o*KC$> zL}GJmdw2K7%P+r71dVf(>C{WKA>yLI6v4ZcaO>I${@a!{Vur=_%+OJKS*5>Fe|RG; z#*i}!3#dKny>rg-(i6aFbj%yq$u|Jt>Zxz$3w|V6>8ODPCyBx*((g&EKuyLLb4TjA z?L=gcTKGoG`t25D~#SH<`{54U*$6#jcqV zxjYBymTQ?pePx4$+?irD4nPE+d_YD7fZ&}6;2r%s%2pG3<4LD@VoYW|FQYAN-gcUht^aTeGz>x}@ytC+}#vniUU@y;UxkR#U+f^X&|06Mu5mK(_WBPCps@FsI^ ze=sP^iho9g$#^=SPth3ePEi)U-oO|mhk1b>RZL2=ItUfNyO%tQ#l5`Y^+?i6d1A ziD{;Pk}q+qn2=1WS13{%005wK4Igg-MBr;62ObzKEtD4RyjGKyyzlmUgTc^wj{w9Q zMu$axbFQ1nhQp1j(@mT+IrS$Ba>Hj$^+8s+z3~~EHhH_qGwor zJMU(*x%bW%1tNK0llO##kgE0D@j$EVEi{tc5t&8OE?DxT93Ls+5y(drp1YJ8c#Osv zJ_LKA2e<6xZJ}S-#_e^!%d!N(!dk(eC}ICJ10cL|B}tUIg=ZDkjSaZ01vBI(a>fRk zo+m4=wV~uy-c?SgDZVwTtnPb?*NQuF)NaHI?3#3SO6M}BX zRauh2ugPQ*f^G=jyV3DcuOHIgM026I>E+SP*}+cG?W|}BC)07$G`YpUg2K|itxz6P z6N!MlV@`05L&V|6CL$DNRhA`pgKzhaP&^i%!uifghT*Lg1Kz3=Csx*j8Kk690u_Qm z21VpU>5*G`RZ3;C2rrRm07X%HIkuud7!=ml^{foRSI>tIwa?LLv&0IQX1gu|`N?QB zmD34g&;j|YwjfaG1`V7(pFraYkYyWH#Qog)B1 zW2Vz-x7Ry+?mQ6`MNw6iF(}!xgaFP{)DD=Pm2?}3w04XDunx>Xi_$%XN(nHC6p|Yf zQD*~ZE0Daf#3v><5m8wb!ADQ9y}jM<^`?_?F&vWj2wvQ>iwkud5f^&D;H*T9FAg+% zUXs)|#wGzP%(y!pc^sl#Bmy9_#0#8|e9B7c2TaAqlH#4C5Yn*6$43_~-gEKdJsc~k zs*25GiV2aisbD|6MmlfVN9$2eIL@$W8&G;ZA$kO$_6?vORZyu%5R#Pyp{rZNdta1A zQIthdc%tFP=GOM9>11rkk#CS(`Wo-p{w)@4>5rIxV#^aToFAqm)hdfow>;>!7)ybY5T64UuL;L2qkT96-PnaMHu?JG{pp_LD z#oGgyuu<5lI*3@R;W0Ff^Y7=(msb-5A_StK&Op7RkAF}x0YynM3L zjSW!p-aBO#IfKvZ2j)`!zxSRuxDoLtxusF9+>l>dXjv`tKpu?+G{)MxuE&${M?dz> z7cN``0Aq_muUlB-Tz2xL{!!edIp<5+IF$$putXD|XgL|1VL|#Q07Z@uiM;b?&z?PV?)=qPoWD~vH3`O;mI6ytLFw=biG2}Ce}pO z|L`jzcr=C}ByL^5cKzW;-t&=4eAwtq_A;iZUMoNU|p7)#ji#CgKj0%?uR2g7?0z>#C|cole~}MOhkeEd{r|3t-{w?eT?FE7NuG{Yo21DOYh%!< zin?*uY9b>Cd@!8=F7YjQ@3eBKVNzQsK;!{XM#%lB@rn><)DGH6s1$4p^=zcYd+)t3 z3Og9|i=yass=BT(UAlDk!aYaF$Ho`}EUl?5dR8<585`se%RVP;kbTZe?z3g5RwVZD zf7vfXv3Oci!chY&w59*-V*8m6G<@GY|e)R3VismtO!THF?M+S0N9<=Wl{LI zuB9_VnUN6p06+v$LOkiLFjXw`H$sqD;@IJQOd9liyte8Dn|hKu`%R{)s}`C&vsu$cc`e9v8B20rW+n zX%8SLFU&qt{M{h&83l+~6a|sLdiC0wbLT($@o(;SyPKPv=gwX1RGsb3K~)tVLfVDA zn?iV&+s*ysAwXgKaF&HRp>tPB5PrldfY-|j>y?$91J-8jbe$Za(_H_rLo+j~c|maO3ouvuDqoJF~M{6vlhfYF4{h z?HcESAeya93Ac6ewv?S#xSckDCBNs^K+An39}R*J`w;fWbrRu zv5ZT?VVGnPMzM`+&q8w zbXAq!6C!UXMS~zZAqW&1Af??=!`h%}pdrc@t!*E?h8b$fkk`vFtr@kjiP6Dcw^JEg5D^-z%Cah{ZhYM|{CdwM5E23({KQ*RZtP$-3Dmx*mzCsNzabPZ75~^OoJYi+(`R;0o!J}?PVH>=x?R;CAa(-h zU+~Zn0gNGjCp;KL*|QqAAPUb28!W0umL%;>Dfxt{-Lp86OGW$A>yS(hE?il>h=+#< z^ZBf4ntLwZGZ+k>e)?lE#_X&{;V-kP!4z(Y{Dj ztUCCM@pC5Injj5Z~=2fZIfXMD#erZbI*{3bV$m|a*r@_=9r0$I)o z?RKhrE?y|B^5)*|Y&LVwZEbCR@Pi+I<Qt-*5Wt`*Y=OqauuhU31EQlbSrtS>!Ls-rJ znPhCSfew8Y#iyjdO5QI;N3d{Ls~dNU8J6k9WnY99_$sp3D8|{68-n~xsR5GxV!>2k zmJl8xj$wN}9~;nsCF2pvyQ(VApFLZa<;}gl>2%UGO}Epz@4kCCHix^rySvw~9UbgX zXLIu5#m}V71pv`-M5AjQUev%nj-pNNj0^*1b@WR7fMI$P>qwhO)}M%z?wDS|IoH$; z0h*$G@X|f^-FJVd+pVhV)akR^J3Bj@8@+DjiK>N>fiXnm#GX({G)$6v zleNLt2$mO;1K%JgTvhIi7t@kL9Q+sZ%#^ z-aOd9d3rTV>&i z0I}Qc4Ti(P#>V!}&c<-VTGQ_jPMtcvwX?ImG3a(H@2D)RUblw^fxw_CiUOGvq;*O_ zp90PxtuQ@6GaiAiIBscSTO!wg$qMHNL!7bv^DTfAEW=K%7BFw;4r+!4fJ#>r!V2rWyzizkN8w>~iL9gHIbog~AWq;5=bLRZ!=H_tFt%|}E zpn-m`$1kcX3Tv$uxP=A{pmxxs0?oh`22oE)mf#zK&g4p35CUjl$-k!8(+`WE;k9X! z)+1Wg?xbdDGb+*2%X~3_B@jANZKhB`8^M_9#%H}`{2xXeWOQO@K$NKn;b=s)5fP}< zDbH4?hQq<}Xfzs)%d+ZByVL2kGw=5M{hG^sUe~qb;`x|LvD)QuMNTDBQB83?Y`F-M z6NUtUl#CJ|B@csLq~Wp&$9V`}AR?kQwk*qTuh;E#i?Tr8zg!fZPIoxm+&Q(gwYkx& zD#UQMOSjYQ^?GQGHAXo>UiZc`7I*{L?;sm8Vk8rdLGYTNfd~NJyIUPPzrYEQQ~9D! zXkngonQyHGAlEhkE4l8DF~f2>u`rA@wSpHuXk#Ix)UTSjyfLAC0uVjmf%EgyxhEh> z6?z~y@r;BsvWSSV*X?#Yovn?{$#imfbUZpfo=hfnT{o`rjbnwt=kq0-F@x^q7q%0C zLMaveK}RqLi@Qq(hJ--g=dzA;l+gAxhnA6Zhpa7ZVT-~RHbjDpqAIISx3{sev9-0? z>r~eARy#5V5KOP%XA7aQmX(izcyvB9tpW6^sseZl%f|r;L8I}fRbW2d#qXq_IllJH)Kz!DsoMV5gonZ@)~bXpLk-f z)ugBt=X1^hK#XUZxuA(Db!D`)rJ!(9yPR4RlFFj+8t>%X00`hWL|Zv!BcW9y0`LNT zfUGg4~(u9fjtJ$Mlne>TS5$bKZ7SJ1{e|YP1&+K;YZbli%Rh}obVb| z$LlI-gD2)q0)PnpAt3bx6RYeDnOC?+Gh%G449c$v1;gA~Aq5>Dt>Ds)>3PAY}L z6NHo|07Pt@i)T>>`0pWLXyb{jJTbB8DUyKx!PcV!k^o5u6jcQVqR%vOkqKod!_*<5 z!NfxRWna@mi@WhADgc5aB zpM5j>Q5mcv~53WuuOzJrT>DGP%A1$g9K6%z^0^628`TnMC!9{HS!Jhp#s%~2nniA zr>ZKs4MAh(K^HG(Vgs^XW|6@*beLHb;S~nJAHr^LUD1UV{{LUiaI2CCMGAO7z*UHr zK=`ZzJ&H4KBWQ_Kz>h3R#=)>toz6*6># zdAdhipNruqMv6QQ1Y$8t%CUVi_d3Ti2e%`QJ6ukL8E{clfJ|1Kq*JA$ZaF1dNeF-x zi>s+X7~>40ZNx(o7M#fg#CMr+0Vv&L3fmIH+FFYM-iz8H3QqS31|VuUG|JOJ0LBPm z85WaDl@x(W7>!YjG_nad&uo=;P~`&eNg#lbenQ4@ce&Lc>NyI0qeVOw?^dn`)gxo6)EIc!Wr6?*H zP@+kil_d|YMV=6P(uYM{U~PcX2;f6!s-(o2E zA65DW!-3g{DKm(6)l6};;EBqz>~^~084(gHO($YqwJL_xbg`w8_}zHgaH1hdRIU+M zn{d$CcDvTv$OhU0og!+@aa^Pr;zUHw{AEveRLU5-0zi($z$al?U6#=1y0OCvr(@_3 z(Gmp!T2?s%R!9Vx;tm4w0mic|Qk0TDQQ8mdl4D@cN)2TXIRc0)s zRDov{ziF?-Qpp6N+$xU*5&vPiGP4e3+0w7;RZh&c+WI|H59uW7O&MiIt`K)og01w> zVIn{O@9hIJoVW`0AP&;fiFtOB(|;3EmTZ-(=aYVMo1Y=31_F?8yRrMq@gpZ z2+xcKFa~?QZdnu(s=DI3MB|-BzK3kgs9xZKLJmO>d246#U;HGa}e}lii(3h-Gfg0vxuB+>*b z)NVgLS&!&sOd6w{1^@!SBB4rvNT0^o#50pIjL>bs7+hbhp7=DK258?48cxjGP8c77 zQ5QreMl{A0MbYVW;t<-MgY>$dM;saed3vG*lBtWhH3})w-q{04r?V}_)~B4%S*tB@ zqZB1rDCqfA(xzZnZxv5Q=B!{gN+Y`Y>gwO*C%F;x1yWCD$`AQ6BgomPB8HV!q6E#y zzKR@-oK}>LQzZh3=%>7kk@2G~%~Z^ z5MqumM#w|fC?^H$ttoJ62~`t!sfh$u_!B=Qw<5-)uu}~Xn?MMxXpFVi7=FR2`iAuJ zDIC;$9@;9*qO9IU`;zO1t=nmR!^un%c_oT}mj5APMShQVs3wNLZR=p_) zH8ImCI!oo>K#hD4=>asMT{Tc4yAaiV8f{GsbTsJ{ptadK)R^g_OytYh5F~Fm zQBw*RS?r2lh+LYx^h^rt&UU z)~_i{!Zg~m#^t1rq+cQDWt}1!W#rF)SKgCX`lV7ljhNk2m!h(sB#rwMJ^RO}O?F($s9R)WLOqJczBVA3c_&mse4 zv}A6vtk$?1gEULcqzK9#Rg2GcWVli?wn>= zAzX9%SfZcfFM%clt%OtS7LZbQx55xi{F968kb*Ikx=9x?`IJbNNyJ$l0;8h5xQUm#C#`CTLMVYQA|id%a2Sz@YSD8t zN@HY4gxJS%uwpRqEm}uxBLo060U%*`jcpNd79*4ZOjN_ji#ec?9M0LfrQ^uELd z33VJPV=$GAL?$((K`9UUpjDRcnhuAF?U5{Y;KVput*;qSkmh&9-coR4Mz>K0k@z2e z@f#o*6I`{%nv_46QQm6e7RB3A7pxyqHc7V(6|JV(w34Z=IZha-Us!Y9%AGWz6Ks@F z2BqYmtB#mqAhIXil?YV5NudWt;R_(-E}Pykf(`&aI|!5HC1Ej?7n4E2{mE`S-Cuxu zEPP-r<-JT6qU@C;vFNq)EWAxPWj-VKG$knr_F$sOhE>_i$pFb9hwPAT=VZ23RVIdT zrYMr7i0~`{OW{vkGYQj#G31RTOOnaEI3a=8){h(RBs0X>Uy7Jw9T83_a+d2xgiPsV z=lmldjLFV`0RRJr!hU9AHW2boUEnH9TR1yJ$7BPLg1SJv!3ji0_&d`!fIJxV@=i2V zO@cbqpdhuyI4M!|8X(4C@nB7ZffE>LF;-Gt68KXOLdf``HFGE+l6P+cL7FEM1r3X> z-1{anCT&fI4ml8AKQ0L6q+f6dAnJj1DHiIYu!!(OI~vz`EicEvFo+VOm@RrKG*u?5}>>x4NkFDtaT&?jF`h8dLRqkwPIcZ5XY zZ=T~QY1A!?Fn$PLk(2-uP0!RIfF)`o2Z6%2}z;^ z$)+>iB^ODP(*2$gjE6uBgvc&`(h__`s-F0$4z=Br)C{0(BQ*CHB|#8EI0a+O8?|mr zH%VAVgiFM6a?nB2`9uk*h6vLM$eWq;SAK>M?31utgjqcNL_V!uS%afuRu@zx8>CuG z{A*aBk~-0z<`w6Kh+<4}5kgz;CdKG6qk-5o6d-MI%Zyn#e5|lL`fvynMiL!|gyhMq z4g(=Ri~PzRAUS9Qv|8!J#k_X}JnH9*d-APA>`CEz5`M}S!IQ20;?G@cy}3IpYUpcX_#1Emz7PjFNc zv6ERvc{x{m=A+vn^0#nz2xwx6x-t4}?F@L5lX5rX zR?^R+IO3LFm8{~X%unMpB8-hd8hs-Be8Tx)+*bfb=*l;;=Z8|hBO)W4ikW8(sAxwoFa-OV{Z$E@jH_V{$YY7@XE>>A&%Dkno~AvIpskR$G3Zc_d=lSypVF43Qf(`8vnsa&-=2;iZV zYeWEp8o{Vrd6Z&Nm4nJ=u{c?>h2>Tm&n?HJf#YB?qH_?b7=62;74X18H$_URPnL9l zsiHZAC2B-9QNsU`_b@^e5bTLMBO*A|tX<$JRoF?x+zrxmRxw;uSgNe18Y^#-lA7yN z?ySwQIMc8oycV`z#$Ra3O-U842#M5}&|d$jrY) z;Xt}7n0Qpfx(AB_qI6EwQSv;l>{WOJwANbbH9TJQP1r)2@3&Y$N|^RMe2MxYE1{Np zMN|0`L-?3h7VWpZ#Hk~s@J2>to(dcyC&h-P$<#=@RZ1bix~Ybfw;AGOhwmwx#iSOf zBQ*uH8k~wQAj}#{<#@}RhwURAAW~ZBMO0gS*s3uGjpe@xKrv{il2uW*W_}AM$Y2A> zgOCus_nM~|keiGk2?j@17Q9G{s9dBnr^*6(B9BS4kT6Ez4$?V=BuJ-I7gJ9R8V63F zCvyd&5fU{8Y2UI5W|I$7QL;AW&N9O?n6%pFQ&GBd%4DrDzeOIE5q}WJx=1O0fRy_3 zo+&7|MP+OO1WhxaO~$U7)w3D-CZsS6oR3tLQ-fIl%9??cB%r~+s=c69M3l1Gh|=DrfQ^c>vPCf&9qnCtakPJ9 ze6(NBCji9z$&9sS(J|IW-%^5yfifz}#tH#SE!-ggEV&Y!%l`|zDoCkK9_0XNPISC~ za086Bo!-XAsk1w0?-_2La;|CWIihSnNH~`FF5UXr_~`WW@%PY+gy7Mbr5q*Su^sMS zgL3jV!x9{n2)YE!#JIBXOG>+`t1h<4>6|fofB^Ab3-KKTp?zu7+R_%q`1s)FwU-ZW zT$xXf5z*M9+Z*({-A=bc!1;VWna-xOnRA|v^#srBClG+6*hr(tQYZcxl^p7hXq|`* z%jF6rR}bQ)<1;N+{_=DC*RO1!y?ExHOWl6Ip3l@{&Fm26w}kF9r)qE# zB#fOV86j#DIzT;PGEM#iS(`Ou1b{mZlWt!nVGZ%PN30_`5%DMh1X$u(YVG31?4XIz zR74s%;;Op6dNzOcg{Swfyf~kZjkQImH|TW-{r+S&z5MFc=U;s3rI%m5a{c<=&70Hd ztf`yvY);;X+)-f)5NZy4ZuCMDFGE0MPy=a*!46QC(&Qs$E;XNxTsLx?I+v_5y;w1Td+C7(PMo=gv8lIYuSr)rK7RK229y zTwMOw`!viF7$i@AUAuDfnjr&}xt7Q!x3EFn$(H;oIhZIv>ATO9rZDlbr>ha#x7HR_ z=itWG%g;YGKHLjz(C_uSomVbj`SdUU$``-%C&Owo3@b0}Oke2OfCfV;}y| z@BNlfoSe3cbFMg&5o>Y+edxd`3iKLn4=j~Pp?E_oiSgiTUHgKz5M*sS6+CA$lI#h zsjAJ*;R`Rm^yy#vx1am`Z{9pO+TIwPKX-OG99nBVLF1hBUQ?R69VVhy=f&y?OsK>! zvOFe7X~GCcra|WgkjTqPF}h1z9Gijtj4|jv0m9bC)?hHG>-p6ymtTD8r5}3gnSb@^ zU;Ov~y+83Czwdux%W8ByzWl;B>iO*62j6AO($zKhO}C?hu%B>o;N$pVaU~Hjv&wkVA)x3)IMqw$aY_&@)dpZoN5HhTV=Eu{%8#8%{fR2;jXp)}A>x zy#La>H#Ro*cCTN!_qiL_u72aW=l}lq|G*cY`0{uEx&LHiYwKWt|H>;b&FAw6A9>W4 zWj&uq-h$-pv+yqke$>t>=LkO%r!#tpmN7+ESn#DTI6Ky$+)-v&$_KgH&tT}+T*(@jJ`1mQHX#WY**eJ}+Gj47OVYzL4aY#CoX z?SkJbwn?T|K}Gj zT-e*YxqIzZ=b8uK_1?0o=CfIAx&@&DB6{-R5$2TD$t;EJntTw~Q0mBJw`qP0g^LJ@2`UXB5K&oHpk?5P1n1Y=la$3#DI z3jsoMC^rIz7m5cZ$t}sQw=BWV4=anZD2m24$H#}0 z@$qOh+Pits=?y;dP2cqLE3f>Ozxt_XzwzA8_O`Lb&Fj~m{pu6*>9nf4aT^|`iz0T5 z!X!%mLb&S1_CZB=h?uQnqPOMGT9uPJc=)vy6)ww4%R?XT5dKR2MOjQVky*AV0P*>! zzjAZ$x~+PJExO&_KmPHb_y<4qBlq8P@sIt9@4Dxqch5Z%K~2*w%)EdBmqdwZJ* zj*gDU;|UQNV-Amwr}O6HAOHAtGX1OH``4cM@|U)^wro)z?%(|SlTVDtN1bj@n8An0 zfoe0-8O*puCY{1$NLf2de+}i%dy`TNIdvjsCcz4Ki7t$KmZHHI?-dI+gXT*hsws-< z<>#Khe(iEubpWvJR6p`#KmM~n{|oPa*CQYJ&_`|6n@y(ZsVvK;s`@Y_^7VXH*Nyj{ zVp>vejZ<6MrKl;?5ZnfGGO=?G05I&007!Dtfm~u=BngPv$Qb2}Jw$?=-hc3eANbmnPyUU+`M3TL|LOn!n?Clj!^6Yl!=tZ%^@)ey z^Z0OUdp4awLe7EJ!{-p;%T^`#w2DL^sjZ7g@#AaojokTi=QRVa_?#6LLrGMPa=ZkR z5!6z-@)cuEy@C>f27s#Dxq0L2l~-OY%BpExx7+=xfBCaN`}4o>$U_gk>pkxqO=jcc zBLXU_axmQJ_4<>^Xn%iyJf6(!#yNTU0;N4#KBkraMFAu6|H)zE!fo08K3M7KJ$Xmo zlXK3w#(VFaYnsM2&U^2@zk21$Z~gXfKJmowT)TGN`=A2>z#223&yU8_N8k6ptrXzhzk9vY=>nR7ijqD?y%&sys5Gce`J(VvjD0=JiE4&b zbfVrz(ZC?iNtAR|6o~~Z!Dmn!Eq^Q5w?#RhPF{KOIZx0u&E|09x4!VjpZLk2y8qsL zAGq|$;o(tPmC)%`M4e9O;O5Qeo_%I-Zx;})EsR-s&g)$Bmflm10t*-0H?~0_trBOQ zPN&o9koWVtZkndkfwC&u<7JJhoBHtBUwY`_s(k4Oe&`>K$CE$&2mb&fPN$P^JoVKF zA9>HtxeLvF=AGAQL)N_%K7}56`5~yUHllhbl#>m*2~|)+P$}`o%bCR-oJY}_0Sg3{ zv=yHf>LY@+_LUc2J~}!;G*#8Pdj0wj{_u}(Zf;(B_+3ZG#{lHXTU&VNzVY>EUU=@= zrmm|_m*2M&YLu&;qPQf#+M!QAfd#ScqvMPn=i5zS^ZB41SIb_Qw%$GMPO0%#%%1pS$P2`F!r352Gb9UD$~lA1yP&J_!L$q9~RF z-rTfamvW-ausBgN?HT+IA3?=@DwZVNmQY6Pw&Yg^!bMpf9q#X5zea?!`Fy+E`-z|Y z$>ZarPk!=S#?zU14I+}Kx~{+e%+uGeT`7vP+v`Udpk%AS?F}i1^usOh#)RBgnLw)> zU{MV;o6m`$>Qupzg-G5XjmBrsod<-U`k8+@8jb!p|G|G?j2VwdFMi{hrfDwR_n?Ei zX&P=wMSk=*k(g%!T!8?{hg<-JmB)y#WjXnD3;@WM8KeEVkTJ31=FC!VO}^N(At(`q z)s3rHCX-3y9HRNPU;mBY`t9F-?|UC3v`sTdKx?h@?(!=y9v>ceI$bm-vR_J>OYzNX zE~}8z3ZtXN2`#?7&69YF=JlL_x>Xk>d6CE;jmD?XoHNG$;xGO3cr^YqfBH`khQrbE z@ypLY>zupi{!7Mqw(lYJ#DQ4VL;x8533w~rvK&8QR{Y)*AuxFfO&FBWChP zVpaeFOeMAl0hDDq8XfQL?joXdem=RZFh zPrm!l{kh@B=F#!d)ypp#V=vr$KO5-$Ky|0aAZDhPB}5Ti$*p0oFDJk{#Th7(IsC6K zvwAVL;DW1y06^kysI4%cs83ee{Vhf9Y@h?Z0(+bhNp-1!yk6{NnEQt5wwjK}X_9+h>}_1E4L+*=#mCKC;%X43V~A(z2emdYxqSw42F35FwgwZ_w=x%1+0}{Q&%{ zPe^;w2w(B+g(?P(b8a%7a54y2Lxk~oQg!?9f9$bmzwwQ~^Y^}QG#Yn%gU0!nUwmOS zINtS1+=N~jjsL70ZpJf%=SPecmE znqquBnoK6v7G+gly>|V@7hgPg;eNsr(10ljaCCG?-XkV6lQy-~g>y?8=e*+-34U2g zT9?wX0+9DbSs7!!ceCl#ITtZHkug><$ZIoJu+@6(DjIao&!$uFyy1`nfW{#$I5QBM=QoK$C#^88#)HDqm)9G}dd;S}f>1_M-g~oY6V~fsoGMUZB zwkR@ETgm{ij2aiNc;||u+}hgS*w_?m&byUZ3xHUb6##he>v|qXLB1%;;pS$y*Yn;> zPF`xPtS(D!4FF@%6HRB+#yK@kj4_kxjL;nr1W_b8YAR zi!VH1cKTI!=m}UYOee>3XToud_&g=WRRWs8IahT$n_D}GwyHXV;V?}gX{!bDMNt-I z0SK;ceB<<$hsN0caEQiqy1o8jNJQT224uYD@RQyynm>p{G@VZBrqQ=`S!*VfN!jh) zbI-lM^qF6J`Q=y2vQs;^dt=vo&zV`ELWpNd!BSM_dZaA2b%J*6_WAsGx}2nDXeIR| ze!G?gPUU?NHX7VXYEt~Q)c^nh7-Q;sKAX)r>vME`eC^t`jjhv!766T{>iMjmjg7Gj z9bGA36RF-B8hP(}z24^LHt*}4&u7!=L^(ONJ3{Y0Fh&A7!y;{MKASNd?Dl#an_Flw zzH$AvOW6f@#Zx|;P3yWwW0)Q|)NuCfxr6=v&;7>dilQ{u9vzR4kB`-+mpDU+!SNrq zsyTZJTMQ7pp!*%xixc1uGsD6ZWD-A}JZ#rg@fp9b!a{Oih9cOFSkLRGu8lFaDE1Ey z#^cFgW5;_Bh-ixWZ0udF8L9d6@<-9a6Ot>Qh&=TNgW+(K2oOy@pC26T&*n4rN4Ch4 zvr5aV1OVq;UDs-~u>78kN0afGyU>U0sL2)rP5RLj*AG&VkL~RDdd}WkbR+?9` zT3I{}7gjgVSB*?o*K_9y5DQxz9PCf$O{Y5`*8qWcu9=NNnim3Jy=EzeCEew-@rD~4 zgTau%8-vs7zF|)~dbbQ2OxGc-u&So>u_5&iKX_{thYkO~R_k|Z;008IQWHObv^&}vP)nMlPj&7&a zm`?kYV9+%xcbpm8A|Vyy*%Y-TUJykwoj3v%NhA|Hd;!RFeFCbRCPa(Sj7B3*WUV3Z z0Khf#rk*7jDaG>(T~5V&G9c%jF}S(8)$R6($eFkFz1`__oogu7n2Sv>TH4F>0}<6tt+K#-Ush$^xGPt$G|oHM z%;t67gq@`^9ld3_1?x=x+G!Hf+EIV2-1(huOG-w(*=j~(ATcmfG7aVg2&;rP5_m(h z?Sv&5h8>AC8jpc@@B0SGQ8OdgK&DdiE+Z@vtH~ATTw#mN&F!+PxC6&WN5{uUVSi>m zUj4ur&RAQPB>*(8shc`;>?S?1wy5j*;lY06YTmlHwYAmn4|sotbSOVNlH@U|&Ax0U zj6vrb=NgIk^BxJ<-@n;3ZZ@0Ob?sQ1aFVK|vtqg|!Cv;T_;$uzvaBIz+-c3Q9Q=fT zX?cwW7z9xpEU$?1Z9V*z2*`Wy`Ah&r@BMr}0{|dLz6Rg;W=235Cj{H-J*6th8H2!+ zuc~TmbIV#wo`~r1@L)U{8_QeumycRZXJ3|;u@(sG`JBAJMN+!8g>!EIX0Sj2U}Ixr zI2?NKeK?k8bvO%eO@l}TLC=JIJoY-&1mKD4x(*vEAV49|HPF~JfhTgFXkoKkj6JWN zmku#FtFB+Mxz*1PH%-|-d7_fF3eOCT=N)?+6QBd3;HLhU7ZLSBed`_E?rpDOv|@tGYv)O(JfZ`Km^YFrfEjwF(Mj+-qk>kd;`?H z);_mj8Ug|^8)yQ^(v@z(c>e0i7iDQ}2>^9nJLlvjxr>j~&t!~o&eu(i!s}J1gC_CZ zFNkHCiQA5j$a@O=TFHBFO@WBUT6O@$SQ^7IPjZYT#hl2Moli!;W> zHx{cP*x1+{4mW_v7&DvAZtmZ7O_PNSml-y(-P^f9usx4f%)_U&`4-V$D8Rr@dhr{7;gNR&=7AM05 z@ZOhIWi5vn>J;%Wofz*uB5Z7K_WFJDgvLxJlskem&f`O63=x0qM0qcH}6j*bqd<1uG0^!vk& zjZFmf-nZIC07NXy4kCEx=k@HC)Iof1hsG9djKcstu)~1{^GvtMq zu2I{VhUDDIXdwV-qFCnqiC!ikV@y$4@4Yct6!zS?3q;_9GtnEfs0ak_lCov;OAD9t zWn&P{@$u2|@i71r`EIwjxwUPK35O#|P49gX&hdt(sa@TmSu~wPan9SK*x1-C%Yqf< z;nCsf_}HLX5tLY<{`4X&@-qU7OO41Njz*(ium6D$ez>YCYiw0jovM_xYO-^bbrwS4 zKfd}jTZm;3U9WQInc-GSdc|C&7)k!k+%`cu|N7BsncTds*^)DNqG6A?8{Q&m-2 zmAtj!^y$-Q&s{tojjTZ;um-F}F}N{rZ^12d>ro(DYbVpm!NI=w4uGmor`PKzelIe{ zmQ{ra-Zgby$1gM zx&vgvKN+A=!YY}6DRVS6O;eU-zuPm2Wl&?i*Q{7; z=kpn7>CNl;XmqSug`TJ=N?Q~V(g)ot42_81`{{U$0Cn9Q93C`HW35?6P1yQ3gY2oU z$T{7F^IwfIrYy_jqa#A|t-tr%&!0a}1ZaxQ;h@(oopZrDNM187gdK#G23tr@Q*O`I zI$F-5oV3lbnxq(KpDaqjS7|LE`_-NuOkWmOr&i6QgFW>PZ*5$Ch%@$u2< z=!iU7Yoy98$!aMf=1)Q*B+nCsXv(5EJ|5N1fBfU0c=+LWSz8!m`~BYL<^Y139OpJ1 zw2YDHF}zq8#F(apU$RH9A4CE;ab{Syc`)%IWfCl%)byMZ{YRV}?KXqWN8Wqyool+? zZl}{J%EB5`+TzjoJx*A7*8m~`bV^eg@QE`wqKl=pcRSP27{dv0F>%%VqAa`JE&?`9 zseR zRdr5nZ}z*DCsLC}&?ut5^#YdQArJYxh+7DF?HB>z#F?Sx^=nZ;;uTG+wkW4fNUX!t zy)hI^NWJOzdi`Fn)9n^TLEeA(BOe=VoEncu)*4S(7N*}RNco|q>lX>~^$r@*x#sBb z;PBvPJ)hyStq!Yhm5Qk~fUrP|%Wsme2xI`56Rfp`Ev{d`f!2Qfn?8Bw%-LSAfByW% zPN%oIF&Or{L}HN1n?*AuL`0eeBYPO);}(sURNt*xIca8S7frp!lmn8CRJ9`b*Nh}n z27oBqQ4`M?4|wm3!VU(5Zl~Mp^%~dgY;S+$<@ZXiiC_c##%~Wnw~%-UW-l|F#z8g!eNn%$s?zEz(fmQ zU)$QYtPkE}sXyIPytkTxmDLw}l89t$$QT4PfLPdqh^}6}y0vrqn?CW$&CRW<>3 z)=lG4DPVEQU$c~3<=SagSl!+#td@M%CepTq6ELJnU{MyXaaXQgy>Ri~4}IvPoo=Vo z>F%69bN1}HGpDwDox*!kl1IewLecQLd2S{Al@J3;W(Fk3E3Fv6wz5v;j;C)-fMQU}T;#db%;ZJ)N%u?-W(k zr0P2tA1b%jOflSfX24tX11^5V{4-@&Glif(TeV?{Q;rI2fKjb8cgE=b=gxZX_HXVrO-&viee}`(p#S8TpBNn<^m<)H8(E^VP2@Xj(HEp+nvi(wVhk3> zT8>T_vVaEh@bGXvnZEx6AAa!CLx{M&y>sgHnT?H&&0(+K>lQ@`5W%Fi))=dnF2hdE zwvY}6@r0PXDIH)fsr@!(O%4Qzqz{5P7mFBkut5EK9YEI!LH(lP38MVD2Fh7R&I5Vs zcB*?WT&T)&Z*Olln>I~z`t<3KeB`4qzWCzhS6(_k+()X*qC|rPe1u{^T-mlAF&UZ6 z3FI}kpjM60N(=n8W+DpxU}8wtx_(XONV!Az56DAUEh3;brg84zXoR->@JBy>;lf2@ z%=Y%qsWWG{HipA~ud2#Ur)#Vs@|>kq6onN|NYahKb7m4EcrSvAVG`)Ec?8T-$t%Su zfT?VlYgSGeCM}ip^6nj#r?S{2vmJ^Gr&b%tnMhnm`N1H11Vju+18_awk3;0W?^Naa zb7#x4+}qomOeW6N-A?z?rAyme+t;pN+q-e?_~@{i&XNuxpfOoabIOxoFp@M&edtO$qv(;+*gup{UQYo%yOAyfbCP&mAamL*G~ zxQLt)sTs}!47P3n-9Rtz^?UE`Rh7p-GEe5os=D{R2D;z7XxuZH*Z0<~%F4<*%Xdzm zJZb$xYc>=BDP@(PF(%Ra%H>N%UhE(2kH({NQEIL60v1Ja`O@Y6{r!9Q_Q#{+`D|8I zWzB`#D9zZA@L)wnmxz z6UwKsyXkny`SiYigowq51pxp6sL-&(h}93l(E_EELZ!6QN@saq6vbe; zH5d$vqR6v6NzX^!t4T&`Ii+&Jkcp3KUc1h`jj_ zZ;r?UW9^8amsCnM1z;_mga)09FtlM30JO);dk803RpE?=**b~5?8GRzh(`mJp|=ra zjCBEsoXgSg6}=)~>}*fQlcUjSG8s=N)A?d<>e`svmYk_;V@z%8y0Ybl2za`i;tp^n z3Hir6rp^SQ%O!MZ#LJO=BD*9NeU&?pm#pK1V2c|iNt$Y{QK42!>m@_ZD~9Tg|BH_An!sbD+%l=dYzu9X?|gMYil^4FQ(J!Y(AgO=ViI5 zD=P=af+I49WfphzV3k~73@04|F_;KtXbgh8$X2Hp@6n7x9xkk>!p;AgIyYe#8 zS|>@CWqDEbd%Ysh60JjdPPAqrFN&VhTI&S4V>}z%B;F0~wg{8rh!XA(AiLAYz3MP&wmZ zUFy&Wv|t^K(OM7sy`soXT^pjRa-vY1+5sbP7mO7I&(Ps%t@9uxA{YnDKEW6Y(N)nwUNn!&-hyZSO*gHga9ox!H$e4IR8*aApt@ z!S5uZ?X-~k51VXxPV8YgFPB=$ihS25D!O!807VE~@CVT}VG6L!8Ua(9xi4^N@s zuF&*S375D-twu`}TAN+fRBdb|EO5d^ju)6%^D z#!Cg+tqXZV#UZ35%?5)Z2hgIZKZ{a$5mu1V{?Gaw!D+El?6@C=*tZ1P4Rruv4Y=6k z&c;`49qdF(%Y;gvz&(vcWnFv*X@mv)0lLBK9#`Qx1cl1(v4brD-UqOaBQZ|#ZlVA) z$Zf_|9^7wk@7g3uj7?z$YeAH|zXAj#1E>^uH&>x^kQorBRS_3PE0N#Kn4t)v;pi}w5qcHYmDL0DBT2O_mqKaJj z4ov(YmZ;<7GBwv`U*fNlm8t6zXh}t?r`UD~BTE2zmStJy@lxb4vr$A|(8hBP&Zyd$k`Q1LPC}S2^vJF8F1_E@ z^^Q9^TPkmP99mx+NJ(DOxR$z%(z!U$G9(gr2jVf}PZ-5QnPKFF1DohD1VI4g6^Mk+ zuMMx$-vGG-j3)R}4%o7Y0Dw*ss4BZtsJ}CZSIET`tyrRP%IzKPqG#fS4R16=U-`}q zdBAWcgqsmT2fwZB?2#lQ3yO>U@N578+3I~-sa~&d?FI&|5aC7?JnUPG-V_U&i%{5c zNB>qJ#GQO)fQFDqEG=20Q{_W^WSNAtEa+xV$<}?KNH%;N#ZSb>9deSXlLYEIARLwhae?PU`DlE-g)xqi-2|HZ1;Ih| za8rwkYzWvjqyVidusB5w5dv?Y0~|Z{FtjL&BuyZ=L%}BS#Yh-W?tw)?SbNs`z1&>_^p>_t%2Bkw=}3S5B*0H&@*L*m)o{&C6n&$-oAUhmB24&$TTLf=;0N8qw>;uYO*}+bL zL*>+spU4DgFus#W_mJe@Q73h>`+aeF7ppBl?Ob3|M?V_cv%{haowuwludw(vdFzc% z9lMwkXA_9s8+`6igcjK4MVmNeB~QqS)xM^#J@^au%X=LT5b>fJBtU1Knx*8?#br3p z!llY};tNy?A~Eqcs8N+W#EP_1MX#r{bN6|*vPbzKr@q~DlT%2B1H>dWi)VN%EmlhG zFcN`F<&H2tfQ5?aC1M%Beh}6EK^r+onB?>`H2fH8EK&Ti7PyHzgAf5b3GNpTB}MIf zui9r{@`VTj)QZ4SEOnlvL=e-GQVIcTyG1820uB%2q%S<6Q|4rYTEgfPf^xzqZ^RNM z;e@~^jsCF906uq!n2$4!NWlCMRW z1@sU8Vd<3W|71GHNjCxL#jB1!JI&*@wZye@g-gR+NZrjsQOWOzk{lD_49i3eXi|r#1lOd*zY4a)Dl(mP!Q5VJ+bFK2(Yq7}(aEavMw& z`o~1b(!3}NZ~<8iKS!@4YJ@r7`9Z>m#^%0B0El1{P@LYd;)Zh4-QGsZz*(yQlj(dX z-7x;-Q4K`aRbDRD83Z^h2ABM4&a?HgJcn^2SGl8801$FmSx@@5KwK=evewEVkTE2% zgjb)DXTtc5V?mBzxfA3Asm|>U-EhW$8)?dL1U17H8`zAcqF2~LNv>VtSO}B|qPJ|6 z{V3V7Lka`VPiNtgeQ=IWc{GKw#~gvIQ`3i3|EIeAtc!@Xdel%zQYyqzfA$hn5I5y< zl6Nn|1wrKn*wSh!a62(u3%QNMTR!A(mlD`t6+61z4!hhA$TT|OVFt1~cI3N@Txm5t z2-kjz9@~!&c`Tz4G0*cfO|9F*cL>kxv6XPDs`r=t-NwANbdG)=QC^LC{ng!0nx zApB!!t2JE0zXIp_lYEo5a)<=1{&KbrYewf-YgG;gHO*$n(93JEc^uu$LF9qkPtKk@ z4rG-ZscsGg3b&FgiVCgidJyo15Cdlrl(H2gBbG%cC+&y#eE|vYB0I*qI>hzkq2cT0 zL;0svN@=b0Jl9G)^CSk9-3cjE?x}1{D?G0-CJhma-vj}JFn%y$K&0tfKS_XdPRH=9 zyLxP}ZRNZ_8Xah?qzTo@Dtlac433viN_Xz@ghyZnIRrJ=dw_ETrt0aMyeV4 zT3D7`dn$yWn{HX-!gaI@>rsU}))PFo(HW7(L}`pI5kv|!Aap4(_M1RB-d2G3w&QCM zBOX9uP9hNs>`jOm_8p9S;|{7YuSMc`)G=?$0-qAHBKO8YiGIqbvdh-A)=842X{y|o zSBh^G01*#@f4uku5ZD44(9|YABIifaI?UEQ+jMqVLM~3Q?C0~N^Ro;c`rgMbn<(hM zC=Q8$_~I3o;MH(9|6V;u@K*{wa`OWr)5HEllEs1_2Skgwa6F$tL14 zF+xh~XB^H?7#xxi$U9OOfdg9CctZJJ8oXyuKo__S5mn|m41O)Q8ogo+O+=A5@4+YYULH)@hRP z=s5k(G8_i29r}z%f%pzUVX~5qA@`s4iuL}i!`+Uk#&=meSvY6QK&>J1_5wR(VHGvv zFmY2sbvhBVf@j6Sgp4@fpJ*;& zO+@a2=o4~$$=Qd<4-w7rld-{Q@_85!BJ>HXt#hPJKwA<|JGWaj=vVMKmspsEW`oY# z=Yat5n&`rE6@@oz7tfdgb@~BEj%d!q6*R@+=zk7kQ=x zbgQCWTfx5sLZ!%Xq@0kM2Ei{*5UUgb1Y29!qtM^aH%>nN4gFLZ5pW6y0ud$Ee}P7-W5 zE1s{s02h^)597bt0=)$$+5%&WYC`FnDp6ggG2Q)R-aBWx0~haf=Hz8t_R= z01B1=5Jjt)>mVFx0w?8{NmxZ}WkD$)O5zDV*EK(7KMh1Mx~8h`t7A(TDcKdyVrJq&JLqHH?T01Qr+g#S4(NC5_QQf2uvp`aI50P{^O< z6<(J4yTdmJlm@>}9AFZ{*{K$fF;2saMf@ z*@g33&kz(&7`ukI&_P}glT=G9+7|fV%Y*;QC)>G-S zJb$I@xC%xISiQ&kKL{K)lSnK-BTp*0n|NseD;f4f6tWf8NQy};X`%!E$=xhO7;rc0 z4V*;b-#F8x5#+NkI6Tr4f8reJeAY8GOfqzSMX?;Qaawpi4WAE5m=9!;@R-O#3kns1 zY*8?tF5@OCm<4jKb8tV9V~&ji67GhGlI5BY$TQQPZIGlr5&U6Wq5#ZDf!I9+0bCL{ zOM=^X1qIq#GRn)znN!ybb_Bdz5Nw^pgk)HM2yyH3Df}nu`ej|{Ood_fXJIJCFsI?c8v!& zT%2Q>5|u3{z%s$LwHx5oUt(Y$B$nbM>%3T z`G9M(ZDz3H40yA^zJyB!@|GQ!i(I4Q(qdSU-;qWvqHAW6`=y}U>GeYX-cedJVCk^KlT5Z?>53<7{ zAE;>k1b*8B@)vhxC3$)9t3CN-!FLvOGc$8L9PS4%AyFsfd$ewV;~d#nPJ9CPEQ4EY zFIRwI{b>h2yiRc9We-UO?QhED7_{MQi(&PN9c&-E_%B%4q{Cw&&W|ttG9vZVjWgrGo+>3T!)k>H8hv{5s0lh3+=ow}LTfLAVxGfCP zxB!<>vEbraA+8mTSSK_>|Ip2Giid}fHw>GLjfJ2>aDy6m2_aW-bBM_H!496aB!&!& zQD`Li8*may0l+24+h6@bdDSvV(P-!Fqe;s~A!eRfn>O13Xue8`tx1}EhRY~_m8OLy z3W9(|`<8I-km!Jq?}+(q8wcfj6qXB=Wg4H{3f!81Vp0g8l`&y;fV(eGF*hQX>?d#+ zT${pZbq*_p%GXY?<011SE4&K;zlcZxs3w$hp)qtX!FEr90Wej~MkNZVp}j0>WL3{s z9q&X2UEzS{jUu-(aL4&XlfnUSwONHNJ5{tn?eUX-0)R|S=9q_2Ny57z|JCb3Ud`_< zNlOL0IbZF)*!FBIV{C+$auxO}e0K@060NvC`zrI^ck%H|A&QL=b0TF|BJkv6WZVG# z*fT>2ODbd_*a|WHVknUZ&e;k8n|rG?7v_)0&W)hBf9T$Q!66bKP_Q*Xlh->>6HcN( z^BiFkc6{nYMje9g^krOCK1>~Wwc4175U#TYwyectMv>S08ECDwN>W5+OkI_WdN!%6 zg{f=1gDr@LSRq1;TQDekq4S-{F(cY*13I#uaq{5OExb^$RRp$G3`_v*I%t(7N+~j? zs!CJW>~h3bH(V4n0)-WD7%3X>Jx5Y50TEdN=0uH%LI#S92)4LWoZ7*=@+S}{K<#u&!|E%PB>Axl6P54NYVqgNm6{Ln%GTk>+@_A8~6G|h^|7Z;cM` z&Zoz9RUrT>zsoX%C8rd_jf0|$kNeCj0C3ym#$>;n&LDkjKG`OhG_LihT9lMzSuxnz zzHnvt%HzGkc3qcMSw?0GfQ@>*?#N!+kab6 z*u1<0ke+lT{(3H!!3`(KL9x^_1_IwNolljl$TI>ywCb$}-t7QKEiFVZXlqOzx+LlF{2FRemSkS8D)p=E4w+z=;@WIZ8s_H9^XNd{S0* z9)!m~xuM8RG5j`Su2|ZWR5>P1wn_9Z6cyR?zjbc*xOQWzp=N%5ihOEki9I4C*=gDgPoFgS1| zE_A398LG$#EMJ3JF_=z9H{bl;{;hY2NT*qzW;@%%@nrfWU2|Nd-P@nAX~Rsm?b=+M zYnzPC-Zp!)ZQI^zvu$g0n{C^C=lQ+!@7(wKoOAAT9bI2U`MgzZye@2b?=>u(uP)_` zoA|~Srpa?aGeeAd*F-<*;nKnI-Se;6POOH|e6l;5Id_;8xVe^r7<cr6n%3jeWxrWUgP~T3g?7b$>8i)HIT{q5asrsXk98_@v=~ znO?ul?P}*}gIbU98=Ye#n4eG;)12XBe@Y6T4?Ut99$No6K&Fw1d?sw-8dB*D+phbS zx~n+(8;!&J-jiMr zZqA!&erS^9Y;0N?9Plgq5mmWX9R3Z=^Ptrl%zgQ*TH&l2$u+oVpj18dOOOjZO9{5s zd3oor^1%spoIiPRm&kq_?Rp*jc5Sy*>-DbsJie42!)EvpXx#olw(W5%wlrLPFc zQ-wD8qQtw7DD`s{8U}e9T+zTLc@pS59LwYwXrPYE?-5@_cU9DyypuG3q^P(cX}Mwo zf#wGz+ZGy^HK5}`7bNU%LvoFGw_n`iHrzk<$6czrTy6#*^gZ58KSuRG)VuD+h3;tH z`{(B;AV5Hm3mpcW8wJ6aG)lQr2|6VZS~|uj;@-mS@|)tdUd01CFI$IDx(j_2{0$znI9i6Y{g5c~YYvTtB?B@mvT$^chh8M-ew zDtT~?q$8?oGe5FuO0Ze32En%olV7dvwlD0igYzGh^@*-f(uT>#+?8G4H_I8|bePh$ zwJiOoyQ+@`pQkP%LBZD!p{E4>*U=cNj*8lHjEWmZnRs#gLgooH=wF{)u=sLC#bX!A zi*2ytl%@X-CTmlErw60&USCyigXrbm$qO3>M8Wa2)(OL4x+w22nBo=n6*wlL01?Zq z-z92%V073ya4iIRaWz8)jUN?FlMv?h=n)bUvFy1wrZ2d-@e$$k#Nu<2q|SVLdQ92k zV)xK+;pxCfZ0Z&x>Ksa9e^8qHv8XI+xa{XYV;&Mi4)6YUh|DNP5m-H%_e&_$?aPHs zqg3lBlu5o}vDxH+ewoC*4*rXc=J&xedN4}Q#QeO_N0R=FrO?Ao+lqGA&XCW7-NUtG zBdb$V5jfq1x+)B^qfu1_Dd}n-;7u`2fi6=|gwgTDji37Lh!K9#ERNh4Ug(?|!omji zHxA%pP)>4Ab~adtG)*-qSR>OFuDk9uEO`b45=NRU8K6bKYtign)mM(ou)Iw*b-k^8 ztW83Az)Lw#UsyUGx3{LJ4@3UlRL#}>d5hxSaDBU5aDVeoHpW+K8!gUlNS{0i{(Cdob@{f?`Jw*4 ztp5@7KIe1!kK`$C2P8|KaN%>1G3mK~(}u$Wv7D@IvHlbtr-Ey&rhJb_i*LC3w;&qf zTiu1FIGQ$YvIqQwT#Xh8L>7L-(j728NPsjXWho(k(SEn=$OWV5mfhj8v%m5B)b*7R zS?_gQW>%tbbf^9B$h+$hYww5s&Y2}dADtGba9)e<-<<7zgG)~%*Aodo!ao*|8#--! zW|aaIt*=F2*C@zU79ftU(|lvKlwf4Mlh(wD>&2;Jp|_)^D*cbAt{WHXgprG-<%!~1Zv7``&17|Ak6N9-Q6)7Ev(VRn5gr2t zaEz4=EYLrT^ZoUoG}jVjKaeoRl0&k!<{T4PB>VM%Zo>`bJ2PU%)poazBF36C$*kLa z>GQtvaoMn-?{gHvq6&w-C(2+O(9JQe~-qPGeqILRm9ptGeE$b=B2#9)GI( zvo&bEkiHP_&+(dITV%QjR%B>v)RD#)*P#cqN}}0O(moGulp4}*--MA)Ki_+BOAdX5 zm4e;y+WY78`0=`pp&+odv78n8?a;ZzkH5)gt;Io`LH9OXRYVwW%8!iTFP@JzYeN^l z7J1Ec$-rzy{U0@B3TR%VzaOYpv}QQk z`vj(i#8(Wq!iYSKrjm|`;T zgI+U`=NhsL$sp(vS?kD}8| z$ZAQj@i?geMBrn@mj&4q1Uq{duS#{&^XL@2YcxL#?=W|=a8Jp3e7P%i)V$- z3S;%uD4=yzUe$>d%J?(V!HFzH;a^hL7XSkT>ua9ub)vnI&Qi({PA=fWg;}xFLtWP>%aEiA50XQK)72qPB`xC}lJ`Yf0SZNFh2q%}*FfnLaS~!; z?~i}#%(^Y5b)9VDf0PP$rtLMEtq4t2SriTMpO%P)%a2EK6DZBojU}c}?m_~#<{=^w zmX@Z?4PS6=?%)FSs&Wq8;)|rsPfl=+S{c_Ydgnv1<6?Uv&x7jJJLOVl=y;o-8;DepX{Jpay4wMJ9ZO3*TZU4bf$TX@HTil&JxA6eu0 zO25?ZF;yOo<~~yA)29qOVvr(VHsUIv&saa>rqup6!SC|$z;fo*tMw`A=YQZ-3ZnZL zGmn-r51P*9w4Kt@&~98K2+FHr<4Ey{vJQRbp^v6U{zAb?uhxNc;4u26>1V*9D`z&!OGfkZ{uMV1T$9QrdekakWB$1RS!WR2sV z^5;Bm=6%>=d;S%PFB3CQ&ZL}m;tC~dgL1+M1KH#N&MOu ztHMM!4t%1t)^KiPZRfLaW~Vi&R_-W$Ae2F8YDVk4){2)yn5^c%Hh!GWn=IQdmlLl- zN7a8r1#w;=d34#!JeZuOi|Myj-Qk<|BQnIk@DMA57&y*<2t(y-hYiq0(+xck(PY;G zD<8=}qv4Sv{gmM7m}u%*%_iAKG*o|C7-O^Cxqo-mexY<40eNxU_-(A zXct7us;X+nn#snhL7cMQaLc`mzN!*a|AZ)F8xT8XgQxgUL=PyC4?hqro&)5hT277O zG3SmGtCw#}ycKg>Vpl zU~^VcNmhxCfUxZ1?zYK}uIS49D&l46=?qnbvo9@p=E+k{9YV*5sO6w`wc0Ib3m&8; zhJT2A<>Lu2y!?%DtvM?;A(w9gn!%-z5OQ1D*wb)27Tu8Y_+Db4CQC*U_+-_o!3YH8 z!3FqA6`^;SIok5xD9IrA+l!aWSz8oXfm5k|wk7>Of+z@RLXPOAj3c5cs38SRXEf93 zLcO4H44_wiN+@!(7P#??O@3g=3Q95CrYE1{>UpVzW+LYMFa6}yCC=PBxj70UldOOq zw;Li`-oqMW&kLcKR{@aY_GgfV(Q#?|L=l`6o$+7M6(VD~f5r~WSp%20$i6FY5&-^< zeVlX&Pf!9I96}wVOkI8H=&zbTrK58V_Mc0%x8_ZR6oieG9tfsb+@(uT(kp0V+4#VU zbQOuBpL)@R0k9mzS<62Z=LJHYgw{Gl{O>SAzv!;QoFa>tCdJ}dj9UMt0x>@IuyqI| zZK!EuBxrk8?W=O?|E*(GnElO+Q=%pgm`f$KT*)zhxafv^H)VIyRR_2^ey5vov4O1` z#)S^#7_a5{GC1c1QHWE0L9`M+J&jCEP6{?CW0Ax`%mZDT^ z0-7|kBGE{hh>(0DRPOf(4-K`0qj3VFe5f{#0fEQQ`nb$k4Qf z@xRqEzmk_SFn}7!;Egg%#I%i&OIz8Uh}!tF=2HyKc4{73K>vywajQz{+4o12zGjpp z6_qHP(Q+`4B{gRXHC2kVE}RiF9<8{|LU!%5Qr;S{if_xHU16u2IfUP7^B*_*wXJJ5fX?D2$==fbj9r9`Uz=_H? zPp__yKN(0t(^gz`I1a{R#8hGPVGPOe@{bZ!?3+_4&?34Es{j4eAU4M0fqzoE9cxnp z$&z)WU|~jZOBt$HcqoWTNWMNCO$t8k(f|NS^x-<@s>w+m6G(EyFaD&Ti3G zkSRx{mtd@reuuP1uB|?c?*E1JaS^B6-q?wbo#z85v^G+O&Fyt`K+cV8r8*jhO5>l* ziy;=>T?Mb9&c+Ir5lfEje1gyb=Ip@6{OqVr7NAr7GPJR@Wnp5Fb*RnkVQZzON&;jr zs+m+&S>ej#7v?^@|KKXT3^$3dg(E>Kp31Txdi;db$%=~_CL2%bmOPpp=yR3f zM>p;jFtZ(Q!∋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
iD)fD6_NYv%kf+wmVBmhcTAo3I{`BLDm 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
=YNn7?;RD>(% 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/simulator/JumperT15/page.png b/companion/src/images/simulator/JumperT15/page.png new file mode 100644 index 0000000000000000000000000000000000000000..f0d48656dd3428eeda7153cfaf80698d608d6065 GIT binary patch literal 70790 zcmcG!2UJwgvM)RX0}M%K0Lft(P>`Hq$YF>Q6+|Sb0VL;~(-0&GO3nxh5(EXwQF0KF z92JqAbN=Rk&i|b6zHi-ozq{UBZ?BoP_wKH)uB!fZRafth*3wWSCZHhz006`)%E%`G z01yNKV1dC{m=Zi0yhh9o-&tAT4FF(;{PhQ>*lJS)0Jtr-I?vsotE-7wI5}{eSvr|p zaeF&BW2gZD32ARguuKlqAap8qQ5fy4em;%+Aim;I|l*mHF) zn7os#6-=0$m&<~emmemA;N}w+6cpy=gz@w8^YZWt@$m6;@d=CZ3X1WG!2Z7AnBH71 zQDRS!ihuWod6R_OxVt-x@$h(gd2xFQa67qL^Y9@M2p(R39)5l<3vr3H_by_Exo%nc(L-@m(ZwsCTIakuosURic7@@drZ7s#j z_{@aOMJy0pW+-7HE`)`kAeR}h2rrkY2*L`15ESI)wdDJUT$uJqCkv0i%=cIOf5O(% z$pXXU-xd-R5w#Ey5HJ_y5<&=~xXjH2ExF7@`GvUt^rIB~CcXCyCvc%Y2;6IkD$jfWFI-zXsF%@o4l;mJ43i85y z2w`C^er~?MV2=?4qpq^88)l4s{+>urtz7mT2vI>xL33dQKL$PjQvLsm=zp8l!p6+e+6v=gdEo#1%KXpZ z{$G#7|1tspcgEpASBB>=$NEo%@%(?m_m8^&;Dj*)`Hv!uXaDQ*-ysF_^6#Kz<%qG9 zD<2JPxYM!}|5b=uhhEYR6_^*`; zWRoOPEEzIRM-jzHeW^c54*H)TX^S08OVwI}KeLU(A4L~gg%u$~uW(fjWwZdwrd5g0 zQM`5|roJYn>}C8MM{|pQE|qs*U6_A0?+uhL7PDuTrfq!O^IJ0br7*whmHIU#_iBEm zbLI4_q$A+?z4$)nPWes}71^`nLb$^xAmNx`V3Uyk)5ULI&To(?VQz(D)&k`{&rtWB zLEx`u5vOU?40SzRpL+)XYMcLm(DZ&n1NPo~m2;&Qg)^ltr_pT2I>PD2xj_K$Z;;Ae zlgGW8f&l1@$GOYZT21p=dV7XU0^cH*9@0FO!D2Ov@u*We)j@`O&kRMS6_h~6vJz1q z^h6#6NMRa$GB)C~%qM+)G`h<}xg;>i%W~tOn<&uccz@Ih3=6$6fzz&ALw$%|FOKhU znXR7T3fT8KCWZ%FIu9?O?`nc!RYUmoNs!MWUd z#`pjqu*qnrdKU0jE3o&j#m?#EYje%%t|;Wn{IEbkp5->16Dl1`aOpgMZ|520ARfFn zekyz-{U=;$ZZY8Og2JlF3MEq@bMB#8oAXT&wr63wx<92PUJ} z8sC6Gb)r~6Utidrv$1p`e~1*N!W*o{k4b>`;q*WB;PSICB@>HfLy8Ut-~G$rO5zNO zY%317kvsS)M}ad3Pa>5`Vfn1aSX zNV@*;nvw-eN5#5a8Qc601K3MHP_{IA6&x2`O(IT3EWf7q>zW>x@>DOQtD2C?V23metyw2oPLg534u)a@29R z+ew7b`z=XID0D0cI9*oOu}u4O6gZxt_4L&IK(~_?Ras6HnOMmG2H_&eFZ2LDnQEU_ zXWIQtgfVF-SuBX@MX`9D--)o<*jqCIq(n;nX~w`u%DL2?O}AY0m1sH@sh2TrxQU&G zaX1B!M%QAtRoYbnd2R1S+XTgbbHKCq3{~}P4?sU}eW!a>92&~f_APduQH7?^J%^_Aw{WXw@%1Cd@y zAlGLDVl4r~jUV_zC&xyd?u3_AH4;VMWi2*{s6?Cftn7Me{~#g2?k@B-eP~*&_GQht z_^ic29L_!<_xw2(G7X(RqqAA$-xh}_qbp4X$}P#^{!!Gw7iA_+yXb$>na*}mDy^! zPG+Lk!y<#7rh<3d^B4B5%V@CxEk`vM$CnfGBXmw-NSp7EM{9y1r10j$%`NNLiQC2F zKGq7{W|$WF?w=iT5vRpRkLzq_H!QD@pK8M30+bQ*!D}Yo7xter)O+@VE(6eQAJxEC z+Myw^n=+!OZ&x`gn*y&+vr8*L;Q-liAY15F2#Tu7ktK_>bp_ZpnmRYviGQ~GzCHcS z?hmhD8N1E8^E%U{6L58@)oqSs-X&0?OPop~8q@_s`u6<{QO#F8=e zP#H{wwNA%Bu;nz5t7RXi%mPRD=13m-j*~|mEi#+x-`}Q&^jDXb5y%K(&@pOnoqdHp}AQZ)74j~0X z6_G5!e9PJ0LotVX^&=CvMg;9ADSd^tjMCiojm-o{%|B^X!+vgzf9kaY-@jy=3E?DwkF5~4?Y`tt=6kUTHL{OUe?0gZ);^kWwd5$;N*Dc?sZ6tlJYsWw6iMt$vJZ(&Z z2KNHZwJ9PvK*3p0Eq`WVBTtQG=ny!MkjI{;PhOk*BrJ7N#rC?3aTC}ZWYbtC`JGYx ze(yZ&Nba~x2L#lNm4MIQYata2FR@3Ybf+dz;}C7#HR!crIY%!&rO1}w^PgX0t zi+J%M1A}bvU*aTy<)$-+q~8v_os$EWiDSi1B~-_Y37ap)sD1Wy*X5FNA+adx^F961Ft6ZmYj!yGC$|vg-Kem0Gx-*r-rh{ zSrvZ5ZxdW6ptuHE)X|}xw&yhM-D}yP)YvEq5oTHzKqA+tk685f*T2$>gFcOTH}~vl z4a*bEY$EgC#kS)DAeOS%o;mMwETAdxsc_!l13r8#J+M@*kdcugKV7`4a7dFBAatvy zI?e%uSYSqYHWk@**vY;oc-`~6X7|Pdgfq#lW;~3V`kKFmre||phTzaY)M_tn`BA&| zYo{r7^u1zHv2FDGic$k5FB9JjUAXJ8gYeM1$9^>zpKBh+6nqW18h-huw3I*I8*)bw zrZ(VcP1X)rftA(}dT^#CyY@bZi_1c|K9}$tIaS9x;%zeBihpmf^5CUBS#y>fA@DhW z*fq==S?3r0F6Z8#bi-{)w5fLdLqAnRMMhW{aPCyQNQ`=)} za)Hv=djJROb|ZraMQR%p#lw#g?pIQK+)nmOkgL{~ z4O(I;WCuzO-eoI0Qjb=+gIFu=gcngtTV?d(zzOIvq8UdJID|i2N?M|K) z7IyKzBBPe@)(->_oz6wL4rVx$4;xmB7_IR!5|EE%*=Qy(rC1$w(<<>aAG0%241ZFd zy1ejjXlOaiRswazq)(>QD^kF`-(*N4Am zbRlz(uwPi(ymY#T@~y8#xe^&mO6`pOGkDx@&wUyH#pRk~X_Ax;@lcgcJW~<}OHDZ> zi-ee%am8$bv-E~{(_ zK@Zo%rl7GM3k?D84bMgOV0qS>=p6m&k>VN-J#KvoMa4plqvPEEZp-?VrCm7}K5<%Z zUIVzapsmCK43KNPCP;mKFCEI#V>q>nMR%lRMMj%T2AG^XdZT)`gtq{wv0aqyqXzly z%X_(XcuI(eP;bmuyx%@`ruKH**Cfgg+P=p0vJfs)1f)Sk4lcsvj3rH`4q0Av9D5 zIWTeQ{z->G=XWP(=Fp!oMsI1-i(()EId7ja=M~@HwcREywoLHgdH;5-a)jc;^c!LT zP50yy4uJ1D>``^Fu(|AKC4xPY569=QMQ1;;+8?*VtM|I5d_W9bapyw(BlWH~bQ<1( zvHomg?dM8&Aep&ZEYb9xiIcQ|Mq|2IaFV=-^zM^F&ov{wsL!Ro;y&+|v?pJ7>#fqrvt~2u5Fx{K|GO&nu_eB3~PY)|=537PUa`9e&{+(FH0w@v3<5;vt z_2C9>@1s37eJ~hc>PV>E23^^s7Gdf6@s_65DOt*4?{JBvOYiolR2vE~>N$S^oI2Iq ze@JEw%-}r+%XC$9mSF;QDH{QtvXG#jVC-~qg=m8>44af>7fY+N#c!`? z#g|{@Wj@<{U*F8jX71kTQ4F`00~;yLmq2La+dYOQTKA8PP!R&?{-B2uy|Gvo9fYm_ z*Rj2e|5?$;eo$g)CfWE}`^^p?)qC+M5_8QVH8bkhd1Aq#XMT7sUCP6}RFZTIRPKYv z$}%>hbhm;W(9|vg=h$^K%D!wR@312az+KZ~x0H4K(PBug0}!*gd!bK}x%%NOCo6XP zxSbvgR`gN_Gcij`8)}=qeD_YKOvJ?+-2DB|&d<+(pIbH?3wSLanQARHpw`tbuvF{2 zdlMsh-K3WBVFV-APuC3Xq_m(2Ndu(v$3-U8;!@@tE3*qvEsAe_8#6QJ2!PSXZh#5~ znMiWh&`tB!9&Fnwzo$TjFzg?0IYMyf%K^p`rbrRx=ECqQD$K69wpmd4}p?jV+rUxwM^&8(4I$0xrFCrWc0LPL&PbZMEegl+wE+GIjmTDp|*I1i>`K8`%O>~;pXT7nm zi>o1Qn|g-U;#t4+!$G9jW2z68z-@1Id5_tAPO2M)uqltLgFCc&Y{OB7O~yP{`OLQa zi3@$N&DVs*8l2}YX@?uT*-ajb*FA=&7eiqphIgz@FL-*AZ*IamEA$;_iSxHqBHf&m zs#2_cyuF{lU5({w*-w_fSh+jSy}j0Jxn9Mr1#W-;&Oz(w3Na)MRA*^eA0eR7$V1Z3 zQ(>ZYH%Qmy&x)I^G(7sNTL0e({+$$h`m&lq1$(m$7r1)LA-=^}D9(`OKPa1Wz}hMQUQ zPjnL=BRt7l;>1yAucx&wQQb1VHok2!bm7+z(@3|G2d^bRd5zH5p+%@(BMm)@rq-Gg zE7X+uTq_x9*^(SaDRk9`Nqu*?o8XEE*gO3DQ}|VX+QDG-SzygfTnXM49-dK+&0J)! z)f#TZ_|Z~GRquNmqh?=^X5+iYXf;Y^JZO^Ji9Nz+J| z`Aw0wMs1{hiG~aS)^Xw+aCJ&g;es42=tzrzCW7B6XSrGF=Hzfw4!q;|1p$4S_gLub zd*qf_hnctZ*`JN9iv@z&6FbzqnMby>EX>BQfO#LMUj2HGS*Lw!a9f*3kah}=rIOYs z*Wmpcnt55th1fameE|oCNJflh<0bS~2pujwYx1;^WK}paJs+uGDzEG%uh`Kzo z;Z`7}?j&mSJA7)n1d;J&spTe=wXm6ZO@ylaU zFCgD;s)DQ|;buDFCW7(yNcyUNAarMdZHa~mYHC3@_bqZwhHGxA5T!tlbn z^?c-3I_OgKrjYR}3hsO|E0q1+s~3O2{KFTqtkI+9!JmSJ+o)EnCtxTX_(vgOkz$H-bx8TmSJNugwt~w4J}H6KX^pU>24BGHy!Y7Lxr92R^RoQy_5;h zt}IH{DuL*^&YSD29RDTXn%kf|%An)c8@Hf8r=z3EniBfDZ!+>aTbj#Hxp_M&)Tn9= zO^CQ(ac_X*FTIAO!V%y6#U5n#E$W+VbjmcsUbo3*y$QM3mKfap;4sX8=_ck853?S> zeDG&0)-Jn~v17!|w{qF!=Y#^WF{XD!=!Q1l57UYH&-`feC|48&J{C?Q8g+I~?@;OMMUfSc5K70}rGx+8NJ3 z1YIXo8aJM93yko)?V|kGcIf%T?&a3H&HSW8e-2Rnk#Blvx+S)q{o!*Wvjw5YswP%v z&CT42UBr%-rYdw40Pd;f)xq_7eP3ClFnstSQ_x6)$kFs+?7Zny?DwWIJHW!)S_N`RALhdkr3Qi4W-P zJxH4N?(vvZY+d37E=%8z2W@KZ?CeM$4GL^>BI^A1@|q0>tDbWG_GMm+isMg4TdNe- ziOZx(mQ)5r3l0PiZrvRE{zO-8YeK;>?3?gGO* z%#MciDGBB5(&AV4b`(q^M^vILRX!cJ%w$xij~vHu@QC6)k>62bT(~z&rZxaFvgn7} zZP-10!^$4DbpkJXajXy)c)V!R?748YD}5ezw`g*=6|@u0nvt%Qgx!5rTG{=IrRBM_Bc0|I!`97d@0lZZ>pM`@^Fs0R_1L{ zu2XguQ1AJ=Y&l6$!HX(J1%8~uw{mOZD922cU`_&SGAclE-8}WdURkhp(9P_t)t47| zw{3fOpMuT{MlN`-oGxuw(}%Tr#FQzi}q#-9rM%ZISY5ro^{`@T*~%pY)W)0j^$v;FP< zrQ_szPgC@PbeK+>!ilTc5JI3+dQHoj;z9f(A9Q!t@r$uYCNUwlxhkq#N>xm6Nxo>o zbU`-Ky_&~d*sVk?-{Aur2}$KSDm`4KdrcO_XVU2DQ2*lkHt1~WqA&NlkHmjDY}DhH z%V9|@lc`C6X_d~vMEn>?QWLj%+5e?XWa;Zg-QDEU^*57i%%+{cOTA&Ox&@yg5?(@> z4Z+992Y%1TY#FGUJ&+%x0V^h7N;fAAqu;)~4~;7!WdcBLyArdQ{dlpeoZml=&`H5T zL-Ju_uA>1+_pmoUcrr7)xT@^nzeINn_?GSzZwTZ<>0RyeE8jj%xt`<(5YOiw3tU+XmTV z;mhjui?N>%C@#Y8ZW+&`bI+qOx?+DVJRhzr3W!Z(%6kKTvtt9`dH8YW-ovYDzsaJq z*5l5gpFDS~t;c0c=iT;Fje$4ai~f}@5){x8DP?9{id;trxd{DWeI;He*~d)$kDv3H z@o|iBz8L>T_f#yY<7Y5t>-`ED-;4(UnvI~}Q?&AiTlu307iHu^H(r;&+f@M>ydZDp zhC-f{lH<)ju)^bdm!*&3i%(NzA&5Bl{(hZWEg{i#{WHP;x5#bx(s97jS-|l9I>&|W zOz*G@P;VenC@#O?%h+Y2AjL%p>U5Ft@tl2ka`T3FlYTb5p3Yh^8^$@l;VwvXmoI(H zc)gx*yIwOQb@g2oxV)g!L-kpCzHr!K8iMXntb~-S%fcugvcM0w(*wGU>c2jn zTqaL}K%IX}_(4YdtIRso_z46MB_mcL6%H{4$gcS2KRGs&FuzKD1EZ;pi^VPciXECV zG6*h5q7Cblu5GXc{h0lU@j%f*%l+qwbK%5%c(I4Ljpva{w}0=6dfO!S?Em#&(Z zuC4-?T5srcFMrThwl3Dv>+h<0`w6haS!jI?UX73aP`%9M-BP7D+ihy~T>0?2$iW~k zMwwp&;4&_nl=T=E3#$G7px|?Y3cYm>n`m2n%=lShU774 zxBYK8Fh;*#x|_RetPDKiXg#UBjVB2@E@WFyhxT1n*wV-#SxOY5AnnZ0>0-+Jaf@-@ zDkBT3reC)f1V6ilh7bG6xmWaZnnzDoi3Je^gC&kn=*UMkfSo&NmfA~JwB}Cf{WK^P z9>Z5P$d>BNg;ij2dMbLK>>~*&bS>+xS~PY%wE}*PIm_q|4zmfSe!c#11?^#!z*22x z%V|FcPwR30NWkt|;I8%Ejr2L=?eNk?V|=`0ojRFuf4E{yF>&!Tc&1FyOLb{p4jHWA zVuyz{VWpfIC)5Sy`n2mzA*{LnOG}q?K}VX`2hyiquV_iq$(D`!U%Xn3-KltdYZ8y< ze+xbmWYF|qyKBB1*t^@*YdvfXI%_>mN(kIO-roMbyHL%Ulyzn#)7GIj>Ow8W@-@@` zjj5|GJqt2dQmhXSFpYqJx`L11qVCbAQAJ~?xj1q!=TSqn27Lb@2>ML*=)b%<;WGbn z3TtEGpO}(nr8=yALQnwi?Ng`@nUwYnRJNl;v1b*cnvJ8u^}jk9Z`a8*TlN_5R&vi< zZ}ac=x3{;?u5*G`PNs~X!b&^l2EC_+>K}C_H75MBUNBcgO4PWm`U{^e;PP_VCaFhQ z2d!Mbstj7GXS~)7%&SnU*%%Cp4N#if$>x=ZGhSsBG6!hKnahD(zd%?yOVMFrVbX`W zx63@YV?5U*L2GxvW=QKoG1={{@F!Lem{-Ip=&+g6}!Myin=9cB~8y)T|}_r zd&2;M2Ud_=fhJ#W_VmkmQ4;h^;*fhmbDwD!(cnBt!w^bS9<^MI-$a_ zw_iynQw?DB(Qdvm$W)8CT)Kbq0rOP|iLzS|4?;iYah*iQ~6LQM8p{ zAZ)wa!VB7;&@=WqogwkQrRXLbwsT6LhR?_50)1c07aXc77X8Lfv|u^Sv97t`xjW>! zt(QKtmO6;uJ3sGfU0Gj0^=*C#mvfB}cszA20|;Jc%X^9Jwc+^cz*202g%!;G4$Nja zM8w+z1%y$72pYFDJfmCGlV=E=$u~iRpF7hz;DC@{>b;Mb$$-FJBLM#E5N(6+xW$j} z^M6>;lL042e0xGNT8bCG(3o|P8!Zoljsz>OgQ&R7jD1KU!^6Xbobzx!hb*K=rD7UI@X;g2Dy_ z(~9Jr*985Ex^0&}_tTWVxmD`G2kf8r^Qz>2DZC+1I5xF}-8dsBzNFo=+NTis8TSMluQbvgHcaz2gjv zbZ~%oUGC;Y5~wrc*XbR;+1EwrH?ksl>mTr$Z;2>pyj6VFHtk3U&@$e>h z3~qp`okUQg&Y3;~Q)FmSh=7ND)u_!iCJtm82b{c-zFWJScb705J)HQs_j<;&c$rB{ znh=u_^+zZ)`*y$`=G033Ru0&HguHc52Gc0~-rwJ^uMF5}y|}yGXl@QzV_46>c=pB1 zFqu=Z4*_I(9n=<&U?T|bGqsxXP|%+Dzj>8=yOHaQ0mty#)tQDSpq*NGy&OL&u?_s< z=237zoewLPs*JcJH!S)X2hgV9!TN9!2#Qa|+XqHYcZ$#Gfj`qu{y3%J1+kbF@{2+Q zWALwkR9fPizD**X0foM@G$N+6i)%Z5(oRnV;M>pMeXH}4!EKm}GB#7h$+-2Pt4Hd# zul4HecGqnrz(FS=<$eL~2wKX2OTBfd>2%4<*nKh`Xd}oF<{pf%o$o^j2&PlFu93d7 z4qCr(k_x&wT%9NI?cH(UmnS{B6uM#!?z0?}MXHQCe*a)ju_unAPUu;>{!_VF?{=J& z5YY2-Jnzzn)LsNl1aS@$EQc@^p^)v2F?g(g8X{sUlcD{B&+sWYWl+$`aLWf06iM`o zrD9&NKRD?75gG+_a+YnEplCJNSAvf#_>tBPLgF)uG;#3zu$YY(?*hjqMmsrVU(Ojs zO%0PLMZ7xs35G3Vl8TG-9%-Mo^?z(^oY=4oKKwaD-Z11e!jA9tYQCfRShmP+uDW!q zdV5wlc2oa5CelMsQs_(FLzE&yrqIYDTFX4QCS$%)WkC zR^k0aMbKJ|o^ilC_JK0J$_l+$HsxdnGnE>EYO+5DBV#>&d=G43>CpjhQUg=wtz8ly&5wpR)&jDptaA0lFeMv<} z76XI-lAJU2`PpZ=N%w-aBj7tIf`blvvu|?!v(al$qhwrZfM_po^5vcdtRSm}C4(#^ z)Iym`koyCz(}r4ZcFshhi~d`On$hGFIli7IUv0VmL}D8)&@&fonC$&!ww|Gp2sq8x zZ&hcZ!HR%mN0ruS0Fy#$TO^Ye;7IcWLs z%IZHPP=iQXn&(}R#P}f#r1vQw4je=q#zdopJZdl#EJ5nuzgjuMoCOaVF26afKF0)D3d1&E&Txs zW65@T+Mj_KfQkKxB61shngR;4p54a#wh$)yAlseW=%e zPXDUM+Pb7{qO^h?B*PhO2;rJF14o<>X{Vv)d2PSCO?^=i;_eTvp}A+uiw{7*uPAFh zTDt2U9UZM130!U-A)55GA^fHovoaL?19}1-eg9^)@#f|Rvr}Cm+m)zK-tLv6h&B%Y z%>M+}RtExS=j><$unoom@~WS8-g{q1SzS6!1gRqyb^ryZ^SyL#Qyy9z64s+c7b}AI zacCvvVTqqYrkRn*v}ig~Hoj8Nr*-8AGMv~rHUo{JVfYTiN|tpJ6~$==5r~bk^@^L_^mRj)Zp4trS#dn z=1p>ttGD+>k{edj<3ZDmyoBUmS_(ppZEz{VfZ^%KkL<=G`fyU3XN4XPZ`-{09nX)1Up2E(N98 zcAI)EQnVu;yH9q?emA84v4A{3BLGhLnDx)OLg6`RKy3|ZgOvEHa(_x6Zuao5kOufA zp@N!tgX~ z_B_ELy|B;#vpw6;NdA(O2zIZbcoNiwIY~blmxUnK^^Yx>kYOUS&6e`o?ECc22|lV~ z=d0G?)LlWKAIcCiZ8hoaYD#;63WV9Q7*s3pzwKs?EGAv%b-70_+>3>NiOZ=)PstAi zfbrZS$WB0A6!QR50Z&8?5z*TW4K%OHVEY4r(G)%7(hbH_K18DtiSm$1CacX`(0a&W0+WM!B2|q|eITWTL>HhdAZID8T{=1%jAQ;Xa+-lq){;*Y zUTH3-t)HjfT{VIp7JppQA-X#nNl_pS{Wz>b{zV+z?3>I6v%BGmNolETMmF;CeR*$yd-H~RPCW9db(kEyg84>Dq_e`%{EH0+DUVq~WJcz}^!=set zYMUE+@yeJim`G7+Hud~bR&qDj+C9PKlytqai4y4>Ba_?1)P!BSouMEt2B!Ik7haIycVhLf4cox1MbXiMXEtHg$Kq3hx1)|?Aph5&PwW81X0s%mq3>1Gl zWrSU3&I#RGkXZV42hVlKP^L((@8$;)1+S&cQ%Ac7~Aa4?g0)C?Jd+%lRRf0A{1U6JTkAD94cV`5YhzaK}Yo6v8-X>Zli z#u@9aLbGEdJuS<(qTo71jGJ>jG2^Bc3Y5mV)OACr11-ltwjP|U-KO4^1vvyc?M?2? zMYz#y$IZ$I10Pv_JdU%8CJr^~Fj^}s?XcW7K#9WuiEd>ln*%171r)h0u$>(~`G-`N zYd>$HpPSp6_HkhO-k>~KO-R<_fJjV&-$O@j!n=hwXIA4hBWW1f{-jkq=sFvM1{Pew_rHm^hAh? z*zW5+g-44z7QrX5jOXu+MkraJ>2}j&-vq4U4$RD5o!F+^YOP=X;+)Lr9$x8i=1swPxh@fNArZU!=QL^lQC%X2$3vqU{bazwe zdp%JZP+r>KkyNEL_eSOo=rMS^%g^AK4F7$P?EJu$M8-Vj^mP5E1nnnf{S==i1ZwIy zIv95whPSl$FsA?qKSt+5u)k1vykZ6YG6f#|8X6((s$P)J#)rgj`hBAVFZ3EAr<bhf?o=A%{k!1f$UAakhY;MJNV=IfW=-B6GnKSQMmG5om#Hmy$P z?_<8uUzRaZ@|i<4Nt+Fu)V$R1;#iX@jr|WWX(3}m&t4+d(zjC$;tNrJ8!bd+edv+; zlhA^G6v#sXj`G8U%jmxySTz^RzCB&KoxAJ9#2Tl-ql_vW z?eEL%5)VGwKaQ0sJmQnH9w&PCm3W%N6Bsv`T|EEntb1r|Xq-_%OeiQOBBZn00u{f@ zDKB9Tl<31Pr%ZpV=KEe|lHr{ihxUNNRO9B5!p;ei5HQNSAmVJ|I-#jlg!I5@4QyRA zGu3)KKb3Q}*?L=fN6UEAs}!G*(6w#Pg_K{i(4&$&tdrQqmsLpmnzPSq;;h}T3OJToWN8$X`jYR@%l;vk6FhTakmGGH z7%?@2$W<>pE_*9TLqeDOaZ8`U(&lQ*(wJR6eD)Tbc>*`|G)6S;CW2190!PmLM>b|2 z0Z7G^UPvzxozVfhYz1q3yqk&N>Z+b2{le~S zd<3w|Yr9zq#B!LOFqp4tb;@Kd%kt5o#PlPGnX*u6sVXac69~ZXr_@1*>)Pia$e&h^ zKYuEUSy?*A>nCchJZ)EcSBC$iu|Jf2%Bql?c;c7vCM_<3J{>^jnN843@1gb-`Osg-azN$sMZ6Ko8pAP--Sj~Oi%L5ief_z z4G(4id~Q2N`~OPT2L8e%ycG`p1u$0_pT5v1Y($-Lxk5O5}bsV$;tzSvEu=4=V~1qFYHfeM*L617|)k6PFzz%<5}4%s>U|6cIU;C z$D*_AbCm*J1DzTH0rXVYD{ksWRk^JD0V=gh!RnW!2SQl2p{8+4^eTVo3gxK96o4Q~6>I|?1W9Z%@B%gsm|qa#^#kIbL5Hc@7LFJ>Nlk>x z`$2XBuUb*@7QZ^qfvcyp@{UfF4<(h`BUE%B!MjO90PX(F=!cH!`tQQ;L9l!ev-hTt z+{FS8qgi=Oq>i(lW^1=zEcxsOtTmd(`D#eH_Z8)h#VEJj%4&}5M=Lk&QLCiTf0VcT z@K8Y%{o*yYRzRxf2xkjDo#b0mq}e;e&os~`lKMf<=t;4Aq5(5#jSC7 zBUVlY?YsjUy607oTKv|AH=4&cbMa8q-|)@5Yx*7qv#fnThnu?J_jU-!O8XW|_2Bnqg zD&M{xjiycb_GO~oA6!UoDeF9=NUG`SwtrJfpC3Py6G8u=>;nHaD=T}5w;(;=Itvzg z3Q%kfoyB!dloMOPc6NG-$!-mGzqoN1z=QK}=?XYve(Uwxh;JG3=QU48LX{(oi-L%Q z-M(%7b=e-|SVy|)VBKrALVXTBErL9uL4GIdrw=c3;e@+ZaK_Yb&DNf@aKx5!4iwLP zc9`-gPYCQ;wj}=){*reAfN0Xn9_GZRe41PCvhV7d|NOQthn%|oIo9~9CqC#9=l)>* zdV)wa$|Vr5YEF^z>0W<$1}}rGdi$%u9MHQT!+dxjG9=AZz)*8-@|8YIsZ7m>dkdQ?S2C=w>wKU{GhY7O*D1H&a$AaIqmkl)n!L8~sTU1L8kV zyJAyajcZ~~Me^qCe-e84yb!ffRnN~vN-yy*;-C>MT|#ETc%8(uKJdOC=uMXoU8k<$$J zUiz>@$B9!D?I!_juM#?HOcf!O&Vdcx%^td^Xp7BT|K#1^pV{Q zcuN+3Hu*N$!ly&SOPM8)k1m<9KNeN8e$uu5aGK_!%M`?BAtM$ft(Z|A%%}TcBtxVI z8kG4RBPRwiD~K`TrNt@*)KGSX*PgycSbSG2s>c5jyzLj58QeW|le;L&+C@}3XJ^$O zx!`pkLje3- zMO5IH(apaMlvhfOPU7vQ*u5v~vZWzxBYaIoei&i5=Sy%F|F$hSP+i!%2%@tJu#cW1 ze>+eGPK4A@bUmFLR#gv8ghVNHK012nw%oNy1El$ct;{w;_Lkpn+M$X^gJn6V_S2Lq zuL@~epKdizq@6RHhacy4ROQoB;Nh zNUHE)1${YXt($Tz*l@@tMLMDN{cz~Fn(&3?&ewibUAAA23s%kT#Mv z6TN(#;mtv3insCz)r#vg$h5#AQ>a|YbW0zI1wcOlB&&%)83j5fZd4(ADH~&1*hEUe z@LvlvlG|dELYOS0tD3#6nlqN4LSV%DIq%lfxcIa>cHbt!3d&QH{j3xNe%p^V8^m4) zWC=~pWZ0MGCNqvnWEoPWW&#v%)|`TI&T^W|Oa#2$~R<&sdm&ZdxHKh;V5X z5J{H=(MI`31`WX|#)0r?Z=+?10i|VPlxxEf7g2I~TF_9g-NO1-)-qI8431S#cVN5D zb2=LeqIf;U9RJ=KM}J68oJ-1hsmtCayOhC?7VqVIR!h)}(F_~S<3D1))F6P>{uYi6 ziO08v#Ha#Evq($PSOCZa@u@ly4S?DhncWaI2%y36FhHy*1Y&6rg2F8VZ3(ehqX96b zEz{uX0!hYbDft(h7N5R*qmjeHI70H5Xkf(AZ{8M7OXe_8VknM&P&-#WoB7nP_WWF z{}sUlI*9^5!;+dMDRni{Cf6vNkz==KkRQ;lutv#C-SmZn?eiwOMVEV*zxAr)RGGyX zHF@vkSAN???7xB(qS{2g@kx*oq{VtSYRGtfv<@skSTqzeHIW%DgF_ODOFgLm!i@#`H02Ep%gw-EC%?aCE|-G z5dSJ^n|!Vih}p4vJ4X1ZI`Pn{x20HFl`3cp3e3>bQp$LxhV{&6kP_Odcz|MHKCyoZ zHWo#QJD@S(%eb5UZJ7SD{m0RRsU%G#iR8lqosXH5A``b^`=M*s1k zTpfX&q-RklGJ9>B0J+2`2RxGm4ZbHZef;LfTbKJILQBCfrO<&z;5uF#e3n%_evR+I z_4KYufpIQuriw$BH}|VP_j%(DiN~MyDl#9RnAb)P5jBUXn@jj;`>Db&M$|h_rY*KA zMzhdA3Kf;LpfH*6XCI!d=)>RZMvZ>f2`5K!vdS{NGCi4LMc&J^>Hi^TGNuYrN$+9* zB!R@e=RaMuQb+`jdDQG(QB$Q^aX>wZ?Z>P{{sT)}PUAFZ4M>^HBiY3mngw8*A;h9k zKvJ9!~XE*b-EB1SbOg{i^RaH+PR2{tiErw0Hw^}tQs@!43Z=JOdOieD;mfD81oJ)udHxW_H-6}GpwL%sQO!-q+QuBE zG6M-qFEbDMsK&)2p5H?smS22375*qMs7$L}ko;gmBEL#;RCoeJ(Mo~geV{UXBqS)#{ysGk0I0)};_^u&)O05A z0RwprO-ES?<%(ABqm&)qVRWgCfbqzLVET?r{w%X;WG`TY0~DQtSzLVOe0WMKO|?6W z=uG^i|MRCnzHV*;5rtG#xhV6b3a-qbY-Hy`pYyAQ$gFsxlQq)HgaZBrxMYEVA3*J+ z+-~Pk3i|&6D?!x01^5E3rl-f+{TcCR(9+BgA}Y($xgw?vX1-9#I<5Wfi<+RK)Q*S_ zRka0hqJ3ssVsY1XS@s(U{3Q8=hr+lJzrL%_%S#r7WX!c7!X+4d35jg=K6*CN! zgB=8bOiN^_2~4i{L?84>Px`t3Xl5FiBuaWlGy*NQ9yz8jCmu0}W2V7k7Zn?u3W~Z2 zb5lFsD19+bNVnTQE4~as-19lILGEuzw~RItB?7i;%0}r(h=p@iS&`MtNUkW{B7IAs zun{xOmQD^l0b#OwlZl8L$%sXfw=BJjh>_q?YKELL^1~1&J7Rsw2rfvWoF$?G*H<2q z4wNYrR0vpQ6^PMlV>Rf3{^&K=)d67UF~)942>MD!rV)ZAeUn5w4f__u3d1o;u?#`o zk4qx9Qf{#Lff@bLNstvdi^D;P&bhLxg57MgK>~k*84xMv5N%&cm1w|pmslxJE6Qn1 zA(qL@!LaW4qd(2K^Y|lekBk|jRj`vKAS#NTV5yI&qNeZNEs0=Dpw!e1Tf7nsQp4pe zU?i7%kfZO&RhgR=AQEOK-Q%SgRY&xUscD`m6O+rP01@@%$V*WXQReVL1h6uJi9aEk z!?`S0Q=upez@$G@ei4eLy6b%)hS-v9u)D=V4C<$f&oHt_R&PWunR3G}8=`Zj{ZY0@ z?M;G2MmYjaCq(-p$LIruEIbBz`3F7^y%Db*?g6Xnjp@Ndk245CCby|LX8F5>E*3&aeA z7UX3#rlUmHUrjb+W-tW74}GeQE**@3Bw38nJEW(A8Up5z>_1U0m~g34Z%`U3+Z@a| z$=Fs zgWpLqw$1EjfY?vVyEnGNbNL`W@xtMxi^~k!auR`_KIk(E^w?m4Sit5Lj8bFVAlx(% zC`9hcJWOd)^BOj2WE#)OGy%p$AbYx55@?oVN;xsM>syrhm(-JitH6$@fJy$NSqlWw zGXz@?k?rq;p2V}_uqZ=>|0HwIir6T_gWH8u3>TgmVoSI_Qx3Vh=t*$^*pfWbH#7wh zDCLWSk*p?QCd!6gk~m|P9D76-uvCj4=ft}WeP8whWHLSn@wxpO2O$C{JrW(J5UYKQ z0Af)T`J#obCc|&aoS9L;I z0@Y7$Sp{KWL)R0DIlj zKIUMqN1Z){wqsZl9?Bx&)?YwZgvu9j6w|n577bVc&VEupfvtl91V!s1bvboJS0w@q zYi+CH3x;bhA}7Fmf*H13gtkMN1TY|dh^in^L-?Xg=fn>7Xi2e(s1g{#OyqcZzhZBWbM%I~hfwmP#lg%t0jzuG zBMxA%r(QMhP6pJTzS?cl?Gd#DSpaij_n_c~^D>;pMHu}RuTj-i$M=0 z>W;!NJ^-SxC!7_Ogk7P>`!4@%C2}$whn9oVtL1$5afNol)+z|~3B7m2c$I!20XoQX#If@vUf$>ie6p{MlPzCpIto;)HCx|GyS!Li;2SGH2JLblwA?&>u^dEK+ z+IxT*hAkS+G4sbv$vjWK$2Re^Erm0GiQO>N2SBr}vxn{Siu7c;F&D}-fZCJeq4ga>ka8?gdJK`M)+RK?K!cQ1M?Qo_TN0NKSoSwS zkf6GhK6~cJ&rjD(5N6^=+>a=GO6+GpE%0Eobu zSdRY6B*rATl7cmmWx0mM0C@sw?z>N(e#|TfL?Y+NIkcjYJr7mxj7mT&psn~{YQ~8V z1kY%1GPpK*eo%L_Hl7O23ybXl-M?dUKJ`9CC>Jueav2k!3y|E#>2e`NFa2X%Zyb-| z`6~ZWwf7V=L>FpSMj(X=qBe;5M=wfXHE9O4#Q@1O z>DrC&TG2A2eMO0cb=f9HeHz`#4ckQA=UP!E=@qMHgpH_`hzG8-;k^`sU8MGQnBh@bKHCyhLSekY z8k7Kc%_6W<`zPoJT^c4Nz}e5ys3me`jR4JNxj4SLUfgSzXKl0cZR5R%kjJA+V28|C zl#qFObJdV!y%_F}Jq+Kbm^Uj1nS8t|-c?9?!?~gW195$!s49+RbJwENT7i zJ%8spN$W~}zP9f&dQOu^M@9E(Z-*H!#5))+QS+BGlOZ}dAPAqhZD3j?9gZYH z9xT*&dm<{znuV7qM~mZ|%X@d5^%*l0X+b)t8z(!bn;t|e4{7CjhI2R`o*H{4y{{7c zj`>f6?1vn-#6RgLdxqYSeYbAci_;Uh`AR(+PY-C+Rub$kwwSRd1 z`qLkn%=Vkj+V)cz&}0OQc2^Vmm@#Lr9(2IPv=;=fIF}PHY`Uw&@xe;_mI&7iafwy#Iq&uD`EqTi*Ua8VR7+4Lb}Z zNf4G9a#PJD0=g@ydbmU~9VRS-ncqi(z|Fyr=yp+dtz8*!0RjRnLI_n^eC@er({X`t z^S|&LKk&>m_s$lproVQx|=y8?O6&`!;b2mob0?%L+H=f8S#^g5Aq)o5=%BgCKi z`Ct48|L7;a_|>mE#3yfD|JX;qttcu1>3rD243RKpc}U7>-NDHc;9Nv^A*vmri6re6 z@pqt1iJmES)M%Y;T~ZU@P;{eIat8;8`}=#o>u%kA{rTr#_>sT&_y6IK|HSY7SANIu z_-(&!zPEqx^z5~lU)VJ3r$6|SqAZ(c69*>pmZ|~4jH%V^wKvV*LYW;iJ0QKu&@|sY zhZmt;cxE`Sg;buQa?qdjZ=5UPo+>ahOY>9Kwo(fe)$X2as9Dx|Mtmr+ID`qUT+qs-g~`+mL$Sh(LN}F(5Ku+P6l=CHD+FwEe?T5 zTn0r1gpiPQB@>dRnyWb!*Bgll5zY1w=lhorE?qjjdSmb4^3!*2zxdLNKm1qz+84g~ z<^RL)`+b)VFWtR+_ttB#c5V0m4}GMp>bBVcBrOn>4;bBtzKdmJ2qH%Jn}GUQSy-YI zPfOkdE^(!K*mW$KV(|c!&O()Mh^T8W8p7^ED zf8js+!9V=_|DFHiv+sZU&YinQx87*m_5&aOSXtFgvrb;Dlyt;-XL}>vll=BJQ4nxG zOXtqtg=+NRQyyKD^S)+|OG6mLRD(Q?AO*I}kE9n1NLi0oi_;gs{>5gqL03*D69D{^ z|Gz)?L;u|mU%PVoU-~V-<>2!5MXt>D$BB}D$jg&cDhcOQ0R}?3AkG}q;&#zaDx*i3=54q4ckrEU`M%bb9a5nnp z2nd?70lbZIPpO4?y!@kEURX-dHEY(X*L@y%E@H1T(AGg zANwzV@}KUuO9jf8o*Tx>RL z1Sy<5TPzpr&8I*8X$1Jg|Ji@`Pyg93?C)#&m)?U)AnC+L9 ztq*3_8vTbC5*q?QL|CoY&pr3GqobqIs9r9Y0I18998uG3nE4YQ|HO08eeI9`m;crO z_J8wl{`z0{y{D(RT%3LV%b)+ihd;h|>GEd1V&)zQ66i5TQU?(gWd??ry_AoG^qJuz znhY118Kn1lM`%CuJmz>QBNLNa$vRCXO`#~N*I#|{^!N@HmCEry{X>8DtIvJ?yFdGx z{ma)*?wyu}E348KMLinbJ2^hPeY#q$EfLVvLqyKG3+S!CDen5b{WatG_+w6Y2q3}$ zh^MEgM|X}&SJdNCT~*E%I$(s*PG2Iw-$!ukG324z%>Agvxn~xPmEcUZ)d2!we8|E!+;yYzdJmw8ETDr z1wEq=QZ2$E1URBjZqq-=G==IlL zef8y+n$5-)E)~)<7j6>kZ(Z6Au6`@5l)Iv&M{5WG5Vm3f@tt4!bzN6gS(%>)z4!MP z%ctJ|OjXx^;V=Hh<#PG2{L8-sk=EpTJ044lh^oK>QUgtZ1`{t`{+jgF3)7j^L<%@sk z@BZCqpLurg(&5?Jq9|NPRLf|yS-^a z6L&un5z(QDtT!7LsjFJaln|Nubh*5G{RR>J^}qGE7R$x&{$0OojFZ)B`NB88+I7wK z_dVm=uH$Yn5t!K$Ngu_*Phd(Cw?bmo^x@*Q3(O2X>7H2#>9h10Amw75D~J@)6lHmI z^Yx?Kw>ND=NQ>q2ul|j{F_}!>_w+N1hf?6|^xkW)y}CF%t?PPg<#HyP2Yr5v z`r$27%eHl~>%=~Xsn4lt8W5=K3J_VX4wlo!^6>IiB>ek7`VY^}7QgrR{I6%z+1cXk z<>$ZQyY9*Ne^5X|h+04_xE97gk1vMdM+6RrL;jPkCG6z^Ts(%jz|0U^9$<##<>=Ez zOm*nBTrC7YJyO>;w{N|%-fUK@^>jMvwf~;-reqxi0*qE>~qb)Qi+3s>2y0xNKMoHJ4^|XTuDfntD-FKotzxsy(jnHx8rEJu^JYXOj`=sJJr z=vLQtWmRq67Y4qgbZ}Rf&A;07Ny@G>jDjM(*w#CPOLI&X0ZU)v#(N+D03mfS6_bp#S+e{#< zJ0_+CV%X(D!*-$C1!aclo|LV>d9*d1i_w?PBCzMXcaD7L1)!>`U;e@u zPEXICeCpYz^_pEF0QXMrc5PP_ZR{2q8?kzpbSRk>*xsC5z z%yclA=`Rs=onNij!c1Bg3JDRGi`95C{lv#U_LZ-F?T`MkKYsV_-M#$-qT;nzUOu|{ zMp>4b#T>8_hLQuE1sAe4J=l9X+NzK2*o8BzFDgt*N>=iNX-c+yj(q@;b`*$buyEmu z)pBv~Cbczxd*4JgG;c&1RD(LW1Wm zxT=#$-TOKmsBDNXpqjXdnqjB=bPE?Jzg`kVDK=y=UFqF`$SoFUP1BHbRb9XM;)}O# z-@f+5)143ikt@5-FVF5F4Tfb4e#FD)y#o8N63CHrj;JWhVm6x*lI{rzh_l(e9*xVg zEX%4atFkJ~swyk}T$Po2N2{W&%Br?=s(55PnYp51@z#}Hf)=+v0000XvhaGn_MStA z9|9q+Hyd#7)1UhE3opL#Xa2kYw)5T<<#M@v?bTOR#p#HfpF#j2kBUQPOG&80nvLI^ z9J@!?E+R7|0hxcvoEZ8g0*WM5lhjV`Z-}gf$jpngvv3OHH=qB8pqtDuvuB_JUA0=C z`L3lNGn}u@Gmp*i2!I8xY~@Z?#2}oolO80#ntj|tNO~k>CZ*o(a&K*m5JZ|B0U%jYdH3=;-L=__(YpeFmo>w5mY{>sENwZZodm zvx~_?9;C`*04U-SUDGzJ)k<>{*6Yn{uf96pyNs?9 z-yxNq?>4KmOf7830Jc0xgRa{_B-%6^Tr8@xR7{60u2xHCPviiAnHP&Qne<%v=5pyd z_A^co;#L3aj&N*bl@F&)R z?4hCo3U`iHt7X$P08kXg?W5awPfq5SpD_Scu9v4>vvx%slXGO-Km_MbopcOEV6|AR zVm`JA01~-q$hMp2q-k(KzR7Wr2uiXyjTFryp?F?)*@IjEL=_pE%?3oOss=z2CdB1( zdF9HrFMa6?KlgJ#``dr}zl?2ndbU_D7Ij^-_u1%J*P<@V47wdDH0il;0hdT$ESS_Y zO?R8l`B&SW%_@0G1hRwMs;VGtHyh84L`6{^-@V&xy76?6*#nROw(CXDLy+7 zg3Tw;dJh7KL`3)Qod{A{R?Hp|xNEy+g}A)~+Llh=Mn|wqR{#W$VoK}FE)n}ZENQR? z*;mT`kJ$$^L(cD0*3P#~`n|;UdegS8nk5>M*xNriI=cPx%P)&S=lyEEW{Wl?Tojlh zc$YG6y>Np6f$ah@!}fgk&{2LkN`IsNup=#|kh2&IM0=Fkd+&AX1z@o_(}nB89RT=t z&0VwQM}l)5HL&F*iSS9{_bgTrO~wIpC+d0NK=dB9^-Xs7GbhW$ggfvO3%6|(ent@C zs;Zl&y>;uRXYRVLZ9DJ1S!nqRIAer#07SM+o;~QT9(B7&Hbbr!`bM)2ct&QajGj%e z#96S7#QRLc8mK}<1n>Q7y+I@tuS<%3w-NFE9HjfsWe)Wt8)W3J6cghBBEZ4{83_Oa zdj`-I{qZdax9HzI>y!=*^{nSzw1vY9d;HLEn!TsD_1=q!9yvZa7LlfHo3>?U1keL zj0hlJd?yIpHDUldyAXC8$ni(XxFX|C<=n}1T9%dmj0mgcx@p!(q}?gXVmzJ_krnfT zSgKee&BoV|9>pVK(==_Z5jda-nVV*Jv&DM zgL>|VL`}_cc;Wk74i}9R;NmdDu7Q)N5Hiy&{>i?irD8@hxn7Y(X#fC#-gjEw0z`mY z5DyFrmbTh}cHXSXD$JwtcsiYVW&{vjFgh#RyG>j~Hk-|>dXzb5`qZB($Q^HtSd`V7 zKk>fHq9W(W{DI=y`Eu4+n1ln&G?$MW6&%+1hjpzGOFxNq+m>(#-`9g-(#7J43&9LI zA8ff#dxvaUS3e*fog3ju7-dCDYv-xb9XX>z9SK75$vrV+_#etgnnTeH^=cV%Mt(!=L~zIh5hpk zfUxCCmMC){&njFrHqdqDP=S2`8)tt*N>;nPajkxEh2Vek4j@Ywj4+5jn z7!jmvFf3w}%wX82@pIY$q}b^cf^KJ3S&G50)oK-jZV1eNadtYMgmgF4Txf23d$e+P zuoL2PRwTjIdf9bd-{L=q!t%bIqde?P6aitcoZvf;h_m?~A{1p+mZf$>FJ~`k9t)OG z-#N=Lyq{vg`*q@xwTr06>7yHBHmDcM(Ih1Tp0nB0~SU7{H&t zI3fTF`^>@mAg0ZEAdc^DuPb{m0Dwg6^?EcOU%hr+1d5`ls)`6LTUHRjvn1_+y;?~R zfJhgP5dba%Gsw1d&!JKV3=)O(4T+?)L9-RaHZ0-HM@3v0jp$Pvo+I752D0fAjQ;c2ERBXonX#Bl(<_@(-Ac ziye)!orLqjxdv)y-uV_-gZrjN!(o&)(g7jZSattM$>snX1BwrZ@$O_ ze&4zU0()VP03hrfogCl2eD&(bKlz=?d-bR;3&%-1K`N0WJypi~%DjUul00}2+dh)^ z$e3ZL6FP@KefWeKk}!K92M_V&h>OzYflJgVtg9Lk3s(s96Hh)_k0zV-8UaMOARvT{ zYU6Ze9I{Ph@pzw)L`30rSmVXnN;fq?g_(V16|2F=@q=<{{69160yhy|B)2oF)i>mK zHraKSFbE?#KqBYbwq354pZV=s0FW!D<5A(r`(EYA_$T6~m~+09jdO{B06R4C zBW;hyX4sPc89=flTbL=go&gf6+KB-Xg)1UD(wgcj#=6dr$D^t&8xi(=_3G6t*RH?u z%JWwaFL@7+&=Iy?&N2SB&4Mk7j@fGRjna}D-j>hBZWb9cq z`%tN!O+jE>0?pB_J)GjLcH#E0f=9v(1D%j~U=U)kLrLZ%fLPX~ZEX(m!c5#@wwOV} zS77G0ZL6xP>$>f_qAZE&*$;f^)t6rIwidZ6u;XY%=jg}8{(bC(*b4z>KbnlE(-|{I z%Ylk{s~HW505F}+YYV#Np|+gxd)l$j3}scF-aGMKx3v`Md}y_c08z`x0|9~~B63G} zj`j{NeebXT4b#~i2@&1?d|FpU+j-|=BBKU;FdqPIX_veAT6@?qX{Zw*@c=|d==)LA z5hKo|9pX*GNx`Owo{hXQGcy;3n@%T1QPg$Sw(YaeK6~}Xlc#5AL?nQvqsk$xq5#k?#h|hjkPEa$QoO9&v+`TiI z%zo|n{`%|JZxpU@RLp0y`E(q^&%rGqVI`GVISfEhD_^D0E@#(8Zx3HH3=tBTG&E7( zBXjA0Q>Q&D#LaBC;r%5zH{uN>)N}x57>`DERkv-6M0HVo^kbj=>7RU^y$2)#s7vaY zJxkaiZ8yT$^;+>11R}TDY-n*-mX%oI;A*{MpH{jp&(35z4IB4{;I2fAbZeA)_Ae5) z%VjrI3$dRAV|j~3QSqh_0w4jPbA*7mZr`5m?SJaipSgbh#(ZzDs;Z(a5BFzC=sjb8 zXX`Io{5&Lv1?z`d1kV{X8M5SCYv=2}ciJ8*GYrW#ldQRRz-Ti-)Ex+6FLToowm5R@ zo@P()?(1$+w(hDDY`Gw~$U%J#WJEBpAi*+X{30dwp z1^KM@o-5160&$tYM+mwh5K+@?+P3Kj*hKAZTe)gC6@geM)0ARR4#TdT->`@KNGtiP z^Ol@|+`M`7@bZ;Ueb;BFv)QG?!@d23!WEbHrd3gN9QNBb`yed-Oo=2IY&OrKKmmsj zyP9$I+hd1s9RPcHx-1F*!LfWqq-P|gH2{!6lo3xpDoPc*{EZMKmN|AbA5*52@pwEQ zjmEBUAoA(YeD`>Euv{)35erm~Cbg5)ot^&H;e!UOsg`KGR%tH36Oq$(13@LI_!kLj zpBgh{u!@eF9v8B20pdoWc@LmZUfBC6>32fW8U=`06om-C@y5+7*RFr&yT4~N8tv`v zUAy)~UDXGB)2b>MLfVDxO<_E%_wD<~Lx6-ZZDaKo+fE$%aM}fMtxEs9WNHDn5kqEF z1`i%)w-`biMASu$qTAMoDk)MpH=9oDfS0<)Cw%zNg;5x4*YP8;`0Y#*_tsh)Df)C=`w4q`n|xQ}qMydUy=NpSuJa&-wgj z+B;;PhsX>&0}I*T{6h|*(5y*266{8VP?;yLZrg!H&0vtQtVbyfSa>|D=kwWUJSod! zxm-N+%=@;%|-S;~*dj!*Zy9Cwib?mBblLv~!b&7k2I z2V&esWm&B^>o;!Q{@{l`{GFfruCgr0lgafPPh7ryWp6gAO2?3uK0oJIAAF z8-$+I!QLX1w@$fl{))H96^|&+kUq)qZ+=3utOF3Sh(neXCSgJ%$(mmk0YK24G2tgd zV6^=|XR~SBcB|D&m&1SJ6Q5*|=f3#M;}H~P$pU5RX3nkFZRT-75MafI_pwQ2pP^_^!BNM`F!!W|rZAZ6z#JV+bBj^F#%z`%WE9|^&s*;|NJ zS>8LjcW<%$tC!2dd1ee7hyq1U01!2uLwqyKnMD8w zgRQ;cKt;aLb1n@e!&~AEd9&j*Yfuu6F zbJrwe2Z&>#Wq>V2T@}UEE0^1@y?b=j`A&pC_OXvwRrQrGetx}Lj>covF?Cf`WzlwB z({blD_G(}at&akLTUq=&XRJppk{um#`+%X&r<>h}_54z0dax9zDvINi^>S5}%z~)PNs$mtCj^0FFDQ9;qG3%)9dshSNgLV+Z(@W7 zGUTl?%wPoaXWd7iJOa%yob#R`opOufshPvV+>04)?~=pWbEKzdqKYR(AY#ufzOKp} z*RO%V@$sFm>)87bfA}NQ>Fi5i{QTnN&Zw@)6(WL!RasW0v>mryr`vmGfshdR&?nxX za#II;gCN6$@o*%$!EXpzp{K2P2XKUib417-wtXy$;`Y%|$Nbq}^Sw82Tt~!9m#UH4yJveK zcZ&9%#~~XU+&Z#-$-`oXZF?a95dc6nZI3L_))?v?qU;|SU&atU-cT#T@@Gwhly&u^GmVTa8j+2APHvwsY)gT}wo&D1h*SP%hdNgP5EzJ2>P73Ft- z_A^(mTqUAQmo6V(zPvY^&1U1es;MY!poEB=D~Kp$OCj1ch7G47#Xs~X$^YKxy-m5~ zaV9l%&K(@c2zsYz-zKU-8;H!E&w3O#!#Uncv1t^^iXUN$Hf5Iwy`My9+T#=Rkw!$_ z$qg)K7bZ^_5Qq@OX-4R%uAY42Mp>12?;LG58}I%8{{DA<=civey!y(^FWfu6Bh9)f z3g?^%GO&O~5|B0gB&gwWQWnO@lmNyT=ZuCaz(mSJ!IdB~2JvkF%Ux_HJ#-K;;5ZQ= zLPS|_Hp|s|@6zRuee@Iay}5J6#9LF9u_m~(uupi7%S*eRIgEr zvt<_q`Il1zWb4I(sh})jJR%yy=2#yakiZEsqOh;3;`-IAWm(?6b7#F?bzL{A>!+T2 z-+XU&baZrd>*ndn@p{t;hmD^lG8X_O!x1UYaoDIqdz?gDv@?1bsCQ00l0IMcOQ;m-go4QN9;T ziXt$EX`Iv(35kYTa&I;_ICz8IO|0M>^a(dA_w9pu%OUc4&&Y8?>`MMM7dZO$(JlLw z_$Lj3dEcTejZ~an75NGW*8@aKw3p=U%rp>0nh*zoh%5kvD2U8l7Vg@W%j5Cr&e7e) za?!PoM!v?Q@!{d&-Me>Bj_;nGo~~A_u4~x)kd0#=FZV%GCe%JynpG^!F)OzRqUlKtMO=z zgdjjjMNyz~g56y*&=&z`kXD!%&`c%JBaYkI)RyS$zifv4216RL{^$DuC)kCZ26w>z zeIBA_*dhqD!txNiWk!M}9R&&qAR;)CbgU`JSAz}tZpDDW%*IFKG$@135W+`G40Ek~o#aX^$*1-g740^M^#a<01`~bW8J8#D4cW7;1&`RVC*1c1e$>>2r*Vjw&0sU9LaNO!3bb@ zr2jQPo`2Z>3~x@83?4B!?O|$$A)|`yJgf%;SOTM?sLdi&h&REM=%%$^di)>WHpuAA z&VVFS5khIiXd@y>U6)s@!`W}c$3DBqVZJjW{Joz-=UkN~8+W?%)bq|dhcFT#a*T_>VbmD_HHZscns+r3hGs+hL z(*q2epO=rlfJm;;1G$-JB-F?f5yA0jG^*?U`QB>1x_5fEI6GUdR&CpMzT?iTLeTnr z*<#F~dv(Kh0f*R&R zr1b_J9FU7Lre2uCre|;-N$X^n24^q4$06fEgkpz{mk&vh;T;U4mbe9we z+24R*&ZnX%rqgLzmNCQzxvIR^kUo^9lUCYIclG0>KV!X?_}G8m9t7KLrRv$_Egz;B4Q zYRX1Nt0Drx27N#rQE9noM*G6X6KcUDfG+ro@jff*6lp&Ae88AKIEy57SGz`pVsL1P ztN}2}@aWz}$QfRHh=@+>XPR7@&1U1#_*`I*0klanIbHap?R zs0+81;sZG0O{$K!)bblXGH((9B7Ky_VJRnzG-agZ3);S70#IrnTld$L0Z##{iZArvWzfVV;i z{Q;G}a=2LSAu+?YuMHE<$rwHbiA`xrb_+HTV@DE_2sbi58m4oHmZmk6n!#%uBDg?y z0+Lf157A$vgpXJN=v-T83=FHwMK~@L2@op=2PB;>#;Xv4OM0(NDH#_es*TT!v zp?oqSAq6Fb7Iln5fr!TAu_G5UwZ@)g z`-btM2GxxS1**EPs>&`yh%xh^i?=he0aY)n$WR+Pj4Yb)3NN4^!fNk0qgyllKV8jm zzm^F_33xxiRY;aV_#6d#5@&jkpe1qvD<(dpCI=IHq*71;dZL5~(+m=T5qfS&=rhSV zFeB1J93Uc!rji+uSRy?n7&noI1Ol-EWUrNxXGWTc7!y7+OFLMw@q!TkimyQkA{wj2 zg2wg8kz-4&uvaJSr+WSzy@nb z(z#NJZn;RbmJk3r7LTTaV2U%CwlNP$m~bTzFyCdy1rX^TbJ&&{*3LNuU^cZQ5}fV{ z3_#LwNRg*O0EmpRNX2BNN=ZN^ybVQ*G_i@^UfC+|V3Z5GCP4r~`iT%}cSiN7EK3m~ zeRR}~nXC>Ymc>A#BQCx~Pz%=c%tS^2*j*i?Kl2w&IXsF8bo@AUF`4+3XkYgEAo-Dc z#)MsKH`sb+2un#)G7yO-yRA)mxLe{0qo??=gbSPtP#OU^Bv(`BH5CLhnG6stTH`x2 zf%~4H@KlT|h2k!ThW{~2-(WZ>`zU1w(H=EZdRt(TvMfjSC_E!U!bsDZSdUs2Lu$I& z(kQw&Uc7OpA;eTJnXApZqS!TC?{?Aj!bMozlZ0;gDiHx>JRm(zh}TA{0!*tRVlzXq zr=W8vZ!H)GneEYk%1#j$gsF3m*&FNXGYAY5r@s<_5E`JD82gT!23c4`>(NPa8cARY ziWo1_V)&PmJ1+P-A>y>i|3stF$T^qTAa)=QkqpK-O;QSRBBEygswX=sWei;b5HDun zi!p4RmT=FD#tx4-9V7mbEKvZET_-2N3Yh?lxI@5vfT@;6j#Ba`+Wo^k_0}|IP)XAB zz|cbcDI#V;0HCm`u0Zg!_87?IYi2nkA%dFbL3xB*V^moQ0E(3^X1!0qM`*sE9-E^< z7>F({GtftMT~~EH)kdsGsRqv^eT%&gQ)L5$cBwrQO#FxG>X~(5)0Tg|SnZLyRtLZL z)I&Z<@uD7OCay4dQHHHz(P0rlAVW9FlFN3Evd3F4nt*@=MUf-%ya@mq(;}*JK;1;y zjM!n#M+~*VdvGuC73Q>@zilq`17O0aI3bP(!GPrAkmkdVWm$|yBf!k=l?eDCAAI#( zm?cAOTR)mYORCdUkhysixu-zLj%L=)Tk|n~>)S(ftv=v)fGB1YHib0!hA0F;y^SGX zBPRos_qnbC03&qFMnA%)6fsJe*&d-x~d2~!>YQns}eyBRA_F{Ugx4Vz;LpeyID))h#9wVuFAR)FA1OWH>j2_5=~%)+QX-3^O2m4+0CR+0{{VEiBTm$qE8~1d1iVHV{{uZ zhMsR$PkLG$1{huoF`U@DcgFY#in<^%F(MHaMN!vvdWB)4(CveU7YraYOM~yO{6HpLP5{xk~Rms@lx|-^qdvSMtMZHKfCd7_LE(R z{RxVm%$y(k(~MxXQB4d-R!I`H|L*6J16j4A-g`!g04DmS-^IlE$(B|s)-4z6x+;nR z9v;3z>Y7>b!6eHDFeCRQnIsu-L4kw|cfDd{#PBv3ix(ayGi;Fs?);d^bhCp4fV!W8 z!Ss*Os|mL3R>lV*?lu&`fQi3$cMZUZIc<#44_TvC3XYfNz-1s*DXmg72^`^1`jB0U zm`Y*i8X(;QA+REmbB;(iIE}uc`1l+S#>}e0yW@_x2LR~r#11M6Vy=-ES+<}%#M>q> z?0NTn)a@b08DuCdhAz9UE6@OIyr>UqQl?LGmfF988uc291!%&3qk#&&14-TI(boKt zl3OrYN3%`=I@ha1jXhn|6Z!UT2$r{-si_DTRqUExNL&~F3L$)Gj86~>LOSQFs?rUo zqi%~ligsP5i!eiC*?ae9Z0MtiFjZHvs(#I366VpK3)~)6N&0i-yvh zr1&c#>53jlt}F`YoVtVpFU218VPrg(xYO7slSR<~l#{!4(9UKE3q><+Vf-e3YfMc=6&=L8V#6p35A6Uh&pg~g9I_Z-CobUkVYul82F#*&7ZfNxJk4;9aP8B_4*i^d2{ajKB~-23LQ1`>BMiaJ zKe;^*IT%AbH|rv1pR&^ue95>(rMOtBmGmM#IXZktv8Z!yc5gFVv>5uMshuIj$OuGK zxPpjeIFR>kJu_;1K$AhW{W8X$W=;PK&-tEY;qVZe)tW{( z=2~M)v4n`4ax@$b15i^~di)UWhj3pLYP#b|uX`b<2rN^h?~5WNpb#Gv5V6Zmhh)){ zL4+4L!(} zAA7S5`taIAgh|`bC_k9RhGXP6o*to5JW;>0$kv^DgdC_YB#j2v2=;Ym3h#`tW`=u; z0cZKBii<#W_Y;Y!Zx9miVrGYODTZQ1CaO)(*;^9XiU_lh)61H{pqIpR%r-&*Knef} z!#1`>z*&k=0x%i)EbRSY@GTqFn6Y}EBv%21fS8~v2J=S@V?k~}WBhZ$+QalFrH_5S z$fz@oxoKN5s>{lyCn{9;`^-my{q89Y>Kdl*&yaOEjY)QXXodRh8~B z9S$?wBb)5NiRo?Q`7r|u^8Aj}TM16ghJ>egg!e;Ho7@Ie+e=yz`0M6z@P? zsD4CSBt0-x;%PCP)-u&&juWQgH`csp?O__w88*r&Lvr%(tB#amV6rD%l?l{%QG_0n zgfD=RyDfUd1Udk;b`WOCOU7bo8K-`Eb zyvZuOCt;s^b!~yAnJBhk)z)$r7M#&Epaw1XXr=JmkuVQjkXHI1Sf03?*(<75P*Ek}z9 zB9UDa4Q1?TZyub&Q7L5)G@aHTsl2lavLZS{BuA*os)y?=CTF@A4Jz6IVV?D5?_s?% zI|EtkS|$HoBzVJdVV>|DUhdD>IWX-JwnxJZk>-oO=CS;K&BkHkV9Ej zfxs*fRZivtN|HVCWq?=_=ZG!!)KVR$A%r2V2oMbj4dY#e#)(J(=p04@4baYf|ItCm z42Z!FR`3`HKr(5R>m|F?2wy@hL_>-h69aHypG?vvm?iyjxPa{fl!`gOMd)CveIWkR z9QOecfQoL-9#gm;#h5{jAVZU~Fsu$LZ)1`+Xg)GhfK?cLs=*Ke04p^RI+X-(4_zm& z6A%{OX8jnXV-d_|MlWZ>e#ya={sFWYpW(EKWH6TP6c!?@Dds@J-iTpTmBahmIqc3g zP}v5z%)*HxC0ahc`HDa>vncG03)LPTGrVcRZ;HY$*pmI}{1ocSeu-a|cB6dC9j4kW zK!;I9m?<2T1|kMHo=>^~;((11Ax$IMJEc3M8M={{?(UY9?gnY35s?xQ{hs$@@td`H z>YV$Wz4v8-GoTT}EVxNagrO+Hk^69`FDVUm@_0ecu*R;Wf=5wmWOenGR0K^}U@<8r zKF(YdE@X!w!O?zImZS-s5fUIia*N@fG9msxV01jw<%{9l_$Np zdxd{Mzn`hcU8JM~T0dub2p-L=#GA34M@j#4_YlXqRixK~iz#C5-9EwSeUV{tH8lmwKm6)CGdEFkCLuOzARDUqNI7o+^#t{F2$VfR)YEhz9*JfKO;#v}j*^jf8N~^_bBxAgbS_>f( za~9b+>$PvuzwG|uM=2>+i-tKPU^a2Y9K2~hEWRWdx0|qInxLLuMk1qGY`z-gRXR!s zAb!-Hw1?p);UjTfS;N2iNDOegv{iy;f`l}om{CmmMStKX{!F}p#U-NR2h37eKOut6 zx3rNENlE2oDPR#?VIj=^5w(trFcbKQHizo7eE7#2ve-BN*i|)dgxe&<)#653tutsK zak+WH&FAJ(4el(ZEaQ|X6u7W_u!5K=Pq`IkC3TqSA}$gU>OYZI4;UsFlA-=JSTf?C z13@^31wLVKl?D8fgap}M2-&pmQ6Jp@ukdK7tp#5+LcC3yj&?hQn?5@Z=4*wEOarCO zJ2Q_VbOMtwT#my)FbjtKIxQ!w!WUGI3EBa<_gG0gHUma+UOtRZE|NU95-?JIvB8py(Uh(E5LQQ#he@GTEcFK1dB>=BW( zN-Km92($i9E!r)`4C-j)5EIuTSfb+*$-g04#3IENrz`SBmcsq~_49b9JG^k%>?E3{ zcJF31-=Ze}4}w1;`U2WLk%x4SIG;$p2TMcME16VWFUEfc`{Akej!;?m5Q0j_;q)_k z8L1kfsYhJZFx32U%*#R^$wxkdU2YFPS5@`WlkZjwA4h9D77r6?_a9A|lLILdcLHh# zxj+xH5oHpI8y7@B&{L9QlJ%2?f9oxj*y_+A6|+i;Vd$MJE5<^sTtb+q40Hv|W-p5| zF>JnSh4{Ju&661NhBI57w~4Te#^OMkDmay)Yhil9zHH@hUV!PYosOA2))DZbC`mv3+o!NVyX zCgMQFOzA)K{|v;}Y3j%sW4r^B7KM4;)`#)~*Q>$ev;neabD$x_0SXH@66skO{oXy4 zix~!zxw2Gz-utbU^<_ZWubDpm`t26M zlFnzPiUYUtU3*iS!PnWY0W6@YB%qcnC2&piNDS)G=ZJi@;>kAZ*IuJD<|b~JcG=1l zK9-Ple`D=1h<(3ne*%`AODUW&zs}45RIr+kRs}A(S^I9c5+PoDPUmvCQB@$`%3sh ztiQ`BFCNazTwo3U zAenuLS53)er)&ny_}xT=HL4t!X}$5W8uNsgq)--5rm~9wD$&*$%APecx^sIwZSa( z_k_-jN@w4mMb0;Tv>UlZK85J-X0u8qAo5nR1KtMQBIjJgjt@KCK>-4}JDqNaKNt5s zB^u6wo8f&`UJDRWf}*L!;eF$mXhB*aPlvC*n1%yLwBSSGCv6%_qA<0nURB#4Or-SV zCa?#MY&bV&f{x8u9?YOEksfj@?CM|*eEz-oN#rQ@Wl?3>NK$kMzE9RMpsA(98(+`w zn=cVhzh@VKdq6Je(*N*v1`xwFXT>W_FSe>~c{^`;8Ba}5*N&tFY_ed;(yN-Qw!^zV z5ba~z{4J-HEs5e<;{S0wMWQ1W!39HiIkA)2B~PdT=4Hkm_N$k#fcJ@f_xH--6q9=2 zbJTgamRrG+-<>8vg@p-PEf6=&Vx2%TIkL!*iq$b%}=sg>(dN4xViLq z_?-O&?1B@@y6KCci|7}l2Hl#BU!ji$GPmM+E+CU>`H9?n4zy(> zzCw;Vd5>acMly|#4Xi)ZdQ1}QL{uyy(*KVOsBWuK?U5SjX2rdExY`1uNMF_8if5|< zGkC|Ga(g39B5O3~3R1QdMvM7w*X3An9Ecm8mgijFm!b?r>%U-OXMR>ObKPaq9=A$W zZ-Y7;RUntwMLaCrI7&NAJtHyxC)NBXFJc@_T2?kBBFGkZbjU+a6SDa0^7r0iS@^qX zKt9XlbG-wI#&kb_4DI{kd8VbAS#y7U>C|P?kOL5W1&r6e{{e~Lkyo0q`5}E4HD}LW z&^2w+pRAFrCPPjpp`(_;%+-@AwN|Vs#ZW$JJk;Cu5J0+GQl4D9DnzOX4lRUM$Xsvtj}(C-Y5) z%9Btzg6RFBswf2)$=!zU2>mO_RL`!FPnx{G7Dd*rzAea`6x~B9CEw2`cK!|ymJJ60 zwC%AmAP{(}b!#+ihvQ z(PIiv32FDmvlL@kDHT>oVHA_k-bAIZeBmOH6V9EHvufG+*5kA2<*c9SCH`xAnujWB z_2M35?(M(jCH1T8D`IPXx_VtUcRBscx)6LhCCEVpUw(K5B|Zi|-4?k`Fk%ajMUQLx zU&hU0+o*5Sv-ygB8*iftiXS=sGmC}IiEYMNY-r>t)VUERCTHu2DoQkie4l;+fx5t& z-qioB4B*8$i&4$k1UQeWwtUC|q6%sSf$O_gvtr@aZsOAWxZ|_4g&ul&wr-26GO~EF zGy6$YYu4 z&#e8>0W5f2GeyGK#Y*f*hBayQdJIg6h<5QGKAj^AwtQ?r4%y>F<7bYtQ}US&F%!uT ze!r)a(+2zwa3IWT_1)S`qRi-o?~Yd$A3I7xUegs6bSucAII!4ez)=kD_dbkSaR<;k z4{Qy+&x=zHKmxr#ACQ-CyvFUZ<+bCn)ebz0!V(ht4Vlg-L2G`;c7oEYF)D!N2eut+ zJiROCQFlya`?h=AL+q|zK!xOv79ygXmzUT3a9)!(0aVs_dBAvZDb9-$1pht zzhb%A$S4xzYgS@qC!0Z_6zn|96>ODDSk^c$Mv628LL^DJn;$j9&#_TntXbzIZQeXV zjjXJJN_qBjiiqOs?;L8U+cKf(RfC1>VEiAk(piEv-(L!XbFz~FaJqc)&o-j3WtbI3snrFs6bAvzzOmvFK|6&IiALxEOlLci6GnG=o4~QOyUIx*2&&HF+7Q0&OXF~sLQCjSC z00=>VP9~}tcdi=lO@iPKc%MzTK2vUjzd?u1f^(85YYtm>q=oJdV9E7jS!w&CqAD^| z#QKuRZq|{jn3~i+C}x{SH_&$x6e&Q2lfO!+;9zJRtabiCmdWF73jYTlm=L_uL>0H|2LyZ3DXg{AeXE?3a><7->FeRutqlYr`y|8AS{*ri;E zc#CV+y--_|ot(NRrtRN+jiCVsYg5%X5qbgtbq}%C)q-A7K~?hnp-pG)^*i}?!afuVNvkxX+y}&G@W?(2h4TU@0GUZR~ojckNj04rl z1X->*qdC0J-BGkK%V130l-gyTc`z+zhko6|<73R}>P#;1r-Kg@1c5dBQY)ZS>D%GU zopEpL1;pnIbz8aR#(=oszFYIZ9P?=cLfm~b9@$YM6WXxe`P}_zkL1OthRv3?<}FMU z5{<{-^q%#V)$T3!)v7Cr%~C+tVs^<-Zb3 zC~ypL#U(>N`Hz1W_W{H8hDDR_>;0M>s7f!7Lm=0tMZZD!VynZ2a=U*C$WduCYT)Nq zXK*|bHw-SIpArZc-4YX<$J~mAcMs;;lY3R=pQG+^om)S6jxT4KY_{8~zSyk4+FWgU ztnG#?#z2j+6Uir#12mzO(*NO^taxrN0q-56k-jiM9X8GLug&VyeWHe|CKL_<1))TI zz{yR0_RunWft{DjYUfwl?E9v0>O2o;L(d&Ru2?%=>-|wLK#644o#p_z1F;9Q+dZ>g zQ@Zu>WB3o>_&7l6a%X)^jK7Y1tRFz7HrZHBXR^4cNC<9?pg97-(!YabpOi}a%*va4 z24{GuhE^aJYSML?XMs6vK;>n0Q;Y3>T<%(8iTzpX_FSmvA|HN!M!H zVm>vUF5#*?ts%66WW3e%I8>Y8(QIwbK!H44G+|``{l0y8*j)Ya@E~8}w)RxMq0OHm zcP2{B#$={4hScLAI*8`PuH;N?;r8W9~{C5wp}QdWKq zTo!n`*T+%@NXo?~wru&*+06~$|LON}*Gl)=a$E9NUE@~`xIXgjLvIprc3uO(O#y~_ zjL2zGVm9?$!*DjN~m z_b9g?c+z#WzArhDXf(d9@vaAmRqw*WUGee?3=|_vsIF$MS!@Vgays`v%Dd>DTc^cr zy2+>yrAiJy)lb6z_0+3)CCwEcJJaYs_8aa!*3$q!H!ltX3?B7K6aYbY4w1kWtD}L@ z`dkzaxgqsy7fUTms!M7%OZW0v@cMvY>%0DmXru~YsdC@5JBaJDg|sFtmfV& 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 z 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 + + // add actions in order of appearance on the help menu + + act = new RadioUiAction(KEY_MODEL, QList() << Qt::Key_Up, SIMU_STR_HLP_KEY_UP, SIMU_STR_HLP_ACT_MDL); + addRadioWidget(ui->leftbuttons->addArea(QRect(80, 120, 100, 60), "JumperT15/model.png", act)); + + act = new RadioUiAction(KEY_SYS, QList() << Qt::Key_Left, SIMU_STR_HLP_KEY_LFT, SIMU_STR_HLP_ACT_SYS); + addRadioWidget(ui->leftbuttons->addArea(QRect(40, 55, 140, 40), "JumperT15/left.png", act)); + + act = new RadioUiAction(KEY_TELE, QList() << Qt::Key_Right, SIMU_STR_HLP_KEY_RGT, SIMU_STR_HLP_ACT_TELE); + addRadioWidget(ui->rightbuttons->addArea(QRect(75, 55, 140, 40), "JumperT15/right.png", act)); + + act = new RadioUiAction(KEY_EXIT, QList() << Qt::Key_Down << Qt::Key_Delete << Qt::Key_Escape << Qt::Key_Backspace, + SIMU_STR_HLP_KEY_DN % "
" % SIMU_STR_HLP_KEYS_EXIT, SIMU_STR_HLP_ACT_RTN); + addRadioWidget(ui->leftbuttons->addArea(QRect(80, 310, 100, 60), "JumperT15/exit.png", act)); + + act = new RadioUiAction(KEY_PAGEDN, QList() << Qt::Key_PageDown, SIMU_STR_HLP_KEY_PGDN, SIMU_STR_HLP_ACT_PGDN); + addRadioWidget(ui->leftbuttons->addArea(QRect(50, 210, 100, 60), "JumperT15/page.png", act)); + + m_scrollUpAction = new RadioUiAction(-1, QList() << Qt::Key_Minus, SIMU_STR_HLP_KEY_MIN % "|" % SIMU_STR_HLP_MOUSE_UP, SIMU_STR_HLP_ACT_ROT_LFT); + m_scrollDnAction = new RadioUiAction(-1, QList() << Qt::Key_Plus << Qt::Key_Equal, SIMU_STR_HLP_KEY_PLS % "|" % SIMU_STR_HLP_MOUSE_DN, SIMU_STR_HLP_ACT_ROT_RGT); + connectScrollActions(); + + m_mouseMidClickAction = new RadioUiAction(KEY_ENTER, QList() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ROT_DN); + addRadioWidget(ui->rightbuttons->addArea(QRect(80, 160, 100, 170), "JumperT15/right.png", m_mouseMidClickAction)); + + //addRadioWidget(ui->leftbuttons->addArea(QRect(10, 252, 30, 30), "JumperT15/left_scrnsht.png", m_screenshotAction)); + + m_backlightColors << QColor(47, 123, 227); + + setLcd(ui->lcd); +} + +SimulatedUIWidgetJumperT15::~SimulatedUIWidgetJumperT15() +{ + delete ui; +} diff --git a/companion/src/simulation/simulateduiwidgetJumperT15.ui b/companion/src/simulation/simulateduiwidgetJumperT15.ui new file mode 100644 index 000000000..01aa6f97c --- /dev/null +++ b/companion/src/simulation/simulateduiwidgetJumperT15.ui @@ -0,0 +1,206 @@ + + + SimulatedUIWidgetJumperT15 + + + + 0 + 0 + 1000 + 520 + + + + + 0 + 0 + + + + + 1000 + 520 + + + + + 1000 + 520 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 260 + 520 + + + + + 260 + 520 + + + + background:url(:/images/simulator/JumperT15/right.png) + + + + + + + + 0 + 0 + + + + + 480 + 320 + + + + + 480 + 320 + + + + + 5 + + + + + + + + + 0 + 0 + + + + + 260 + 520 + + + + + 260 + 520 + + + + true + + + background:url(:/images/simulator/JumperT15/left.png); + + + + + + + + 0 + 0 + + + + + 480 + 100 + + + + + 480 + 100 + + + + + 5 + + + + background:url(:/images/simulator/JumperT15/top.png) + + + + + + + + 0 + 0 + + + + + 480 + 100 + + + + + 480 + 100 + + + + + 5 + false + + + + background:url(:/images/simulator/JumperT15/bottom.png) + + + + + + + + LcdWidget + QWidget +
lcdwidget.h
+ 1 +
+ + ButtonsWidget + QWidget +
buttonswidget.h
+ 1 +
+
+ + +
diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp index a708c013e..12571326c 100644 --- a/companion/src/simulation/simulatorwidget.cpp +++ b/companion/src/simulation/simulatorwidget.cpp @@ -108,6 +108,9 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato case Board::BOARD_JUMPER_T14: radioUiWidget = new SimulatedUIWidgetJumperT14(simulator, this); break; + case Board::BOARD_JUMPER_T15: + radioUiWidget = new SimulatedUIWidgetJumperT15(simulator, this); + break; case Board::BOARD_JUMPER_T16: radioUiWidget = new SimulatedUIWidgetJumperT16(simulator, this); break; diff --git a/fw.json b/fw.json index 8268c3cdc..9bdf222b8 100644 --- a/fw.json +++ b/fw.json @@ -22,6 +22,7 @@ ["iFlight Commando 8", "commando8-"], ["Jumper T12", "t12-"], ["Jumper T14", "t14-"], + ["Jumper T15", "t15-"], ["Jumper T16", "t16-"], ["Jumper T18", "t18-"], ["Jumper T20", "t20-"], diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index fdfc6372b..bbead1cc6 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -1583,8 +1583,7 @@ int cliCrypt(const char ** argv) } #endif -#if defined(HARDWARE_TOUCH) && !defined(PCBNV14) && !defined(PCBPL18) - +#if defined(TP_GT911) // from tp_gt911.cpp extern uint8_t tp_gt911_cfgVer; @@ -1655,7 +1654,7 @@ const CliCommand cliCommands[] = { #if defined(ACCESS_DENIED) && defined(DEBUG_CRYPT) { "crypt", cliCrypt, "" }, #endif -#if defined(HARDWARE_TOUCH) && !defined(PCBNV14) && !defined(PCBPL18) +#if defined(TP_GT911) { "reset_gt911", cliResetGT911, ""}, #endif { nullptr, nullptr, nullptr } /* sentinel */ diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index f3bb0f41f..223a42212 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -153,7 +153,10 @@ static inline void check_struct() CHKSIZE(RadioData, 869); CHKSIZE(ModelData, 6706); #elif defined(PCBHORUS) - #if defined(PCBX10) + #if defined(RADIO_T15) + CHKSIZE(RadioData, 965); + CHKSIZE(ModelData, 15760); + #elif defined(PCBX10) CHKSIZE(RadioData, 965); CHKSIZE(ModelData, 15735); #else diff --git a/radio/src/gui/colorlcd/CMakeLists.txt b/radio/src/gui/colorlcd/CMakeLists.txt index 23f8cde46..7fb1a4e74 100644 --- a/radio/src/gui/colorlcd/CMakeLists.txt +++ b/radio/src/gui/colorlcd/CMakeLists.txt @@ -114,6 +114,13 @@ set(GUI_SRC radio_version.cpp ) +if(FUNCTION_SWITCHES) + set(GUI_SRC ${GUI_SRC} + function_switches.cpp + radio_diagcustswitches.cpp + ) +endif() + macro(add_gui_src src) set(GUI_SRC ${GUI_SRC} diff --git a/radio/src/gui/colorlcd/function_switches.cpp b/radio/src/gui/colorlcd/function_switches.cpp new file mode 100644 index 000000000..ec3931bdf --- /dev/null +++ b/radio/src/gui/colorlcd/function_switches.cpp @@ -0,0 +1,280 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#if defined(FUNCTION_SWITCHES) + +#include "function_switches.h" + +#include "opentx.h" +#include "strhelpers.h" +#include "switches.h" + +#define SET_DIRTY() storageDirty(EE_MODEL) + +static const lv_coord_t line_col_dsc1[] = {LV_GRID_CONTENT, + LV_GRID_TEMPLATE_LAST}; + +static const lv_coord_t line_col_dsc2[] = { + LV_GRID_FR(10), LV_GRID_FR(10), LV_GRID_FR(10), + LV_GRID_FR(12), LV_GRID_FR(8), LV_GRID_TEMPLATE_LAST}; + +static const lv_coord_t line_row_dsc[] = {LV_GRID_CONTENT, + LV_GRID_TEMPLATE_LAST}; + +static const char* _fct_sw_start[] = {STR_CHAR_DOWN, STR_CHAR_UP, STR_LAST}; + +const std::string edgetx_fs_manual_url = + "https://edgetx.gitbook.io/edgetx-user-manual/b-and-w-radios/model-select/" + "setup#function-switches"; + +class FunctionSwitch : public Window +{ + public: + FunctionSwitch(Window* parent, uint8_t sw) : + Window(parent, {0, 0, LCD_W - PAD_SMALL * 2, 36}), switchIndex(sw) + { + padAll(PAD_TINY); + + std::string s(STR_CHAR_SWITCH); + s += switchGetName(switchIndex + switchGetMaxSwitches()); + + new StaticText(this, {8, 6, SW_W, EdgeTxStyles::PAGE_LINE_HEIGHT}, s, + COLOR_THEME_PRIMARY1); + + new ModelTextEdit(this, {NM_X, 0, NM_W, 32}, + g_model.switchNames[switchIndex], LEN_SWITCH_NAME); + + auto choice = new Choice( + this, {TP_X, 0, TP_W, 32}, STR_SWTYPES, SWITCH_NONE, SWITCH_2POS, + [=]() { return FSWITCH_CONFIG(switchIndex); }, + [=](int val) { + FSWITCH_SET_CONFIG(switchIndex, val); + if (val == SWITCH_TOGGLE) { + FSWITCH_SET_STARTUP(switchIndex, FS_START_PREVIOUS); + startChoice->setValue(startChoice->getIntValue()); + } + SET_DIRTY(); + }); + choice->setAvailableHandler([=](int typ) -> bool { + int group = FSWITCH_GROUP(switchIndex); + if (group > 0 && IS_FSWITCH_GROUP_ON(group) && typ == SWITCH_TOGGLE) + return false; + return true; + }); + + groupChoice = new Choice( + this, {GR_X, 0, GR_W, 32}, STR_FUNCTION_SWITCH_GROUPS, 0, 3, + [=]() { return FSWITCH_GROUP(switchIndex); }, + [=](int group) { + int oldGroup = FSWITCH_GROUP(switchIndex); + if (groupHasSwitchOn(group)) setFSLogicalState(switchIndex, 0); + FSWITCH_SET_GROUP(switchIndex, group); + if (group > 0) { + FSWITCH_SET_STARTUP(switchIndex, groupDefaultSwitch(group) == -1 + ? FS_START_PREVIOUS + : FS_START_OFF); + if (FSWITCH_CONFIG(switchIndex) == SWITCH_TOGGLE && + IS_FSWITCH_GROUP_ON(group)) + FSWITCH_SET_CONFIG(switchIndex, SWITCH_2POS); + setGroupSwitchState(group, switchIndex); + } else { + FSWITCH_SET_STARTUP(switchIndex, FS_START_PREVIOUS); + } + setGroupSwitchState(oldGroup); + SET_DIRTY(); + }); + groupChoice->setAvailableHandler([=](int group) -> bool { + if (FSWITCH_CONFIG(switchIndex) == SWITCH_TOGGLE && group && + IS_FSWITCH_GROUP_ON(group)) + return false; + return true; + }); + + startChoice = new Choice( + this, {ST_X, 0, ST_W, 32}, _fct_sw_start, 0, 2, + [=]() { return FSWITCH_STARTUP(switchIndex); }, + [=](int val) { + FSWITCH_SET_STARTUP(switchIndex, val); + SET_DIRTY(); + }); + + setState(); + } + + static constexpr coord_t SW_W = (LCD_W - 4 * 2 - 2 * 4) / 5; + static constexpr coord_t NM_X = SW_W + 2; + static constexpr coord_t NM_W = 80; + static constexpr coord_t TP_X = NM_X + SW_W + 2; + static constexpr coord_t TP_W = 86; + static constexpr coord_t GR_X = TP_X + SW_W + 2; + static constexpr coord_t GR_W = 94; + static constexpr coord_t ST_X = GR_X + SW_W + 20; + static constexpr coord_t ST_W = 70; + + protected: + uint8_t switchIndex; + Choice* groupChoice = nullptr; + Choice* startChoice = nullptr; + + void setState() + { + if (FSWITCH_CONFIG(switchIndex) != SWITCH_2POS || + FSWITCH_GROUP(switchIndex) > 0) { + lv_obj_add_flag(startChoice->getLvObj(), LV_OBJ_FLAG_HIDDEN); + } else { + lv_obj_clear_flag(startChoice->getLvObj(), LV_OBJ_FLAG_HIDDEN); + } + if (FSWITCH_CONFIG(switchIndex) == SWITCH_NONE) { + lv_obj_add_flag(groupChoice->getLvObj(), LV_OBJ_FLAG_HIDDEN); + } else { + lv_obj_clear_flag(groupChoice->getLvObj(), LV_OBJ_FLAG_HIDDEN); + } + } + + void checkEvents() override + { + setState(); + Window::checkEvents(); + } +}; + +class SwitchGroup : public Window +{ + public: + SwitchGroup(Window* parent, uint8_t group) : + Window(parent, {0, 0, LCD_W - PAD_SMALL * 2, 36}), groupIndex(group) + { + padAll(PAD_TINY); + + new StaticText(this, {0, 6, NM_W, EdgeTxStyles::PAGE_LINE_HEIGHT}, + STR_FUNCTION_SWITCH_GROUPS[groupIndex], + COLOR_THEME_PRIMARY1); + + auto btn = new TextButton( + this, {AO_X, 0, AO_W, 32}, STR_GROUP_ALWAYS_ON, [=]() -> int8_t { + int groupAlwaysOn = IS_FSWITCH_GROUP_ON(groupIndex); + groupAlwaysOn ^= 1; + SET_FSWITCH_GROUP_ON(groupIndex, groupAlwaysOn); + setGroupSwitchState(groupIndex); + startChoice->setValue(startChoice->getIntValue()); + SET_DIRTY(); + return groupAlwaysOn; + }); + btn->check(IS_FSWITCH_GROUP_ON(groupIndex)); + + new StaticText(this, {SL_X, 6, SL_W, EdgeTxStyles::PAGE_LINE_HEIGHT}, STR_SWITCH_STARTUP, + COLOR_THEME_PRIMARY1); + + startChoice = new Choice( + this, {ST_X, 0, ST_W, 32}, STR_FSSWITCHES, 0, + NUM_FUNCTIONS_SWITCHES + 1, + [=]() { return groupDefaultSwitch(groupIndex) + 1; }, + [=](int sw) { + for (int i = 0; i < NUM_FUNCTIONS_SWITCHES; i += 1) { + if (FSWITCH_GROUP(i) == groupIndex) { + FSWITCH_SET_STARTUP(i, sw ? FS_START_OFF : FS_START_PREVIOUS); + } + } + if (sw > 0 && sw <= NUM_FUNCTIONS_SWITCHES) { + FSWITCH_SET_STARTUP(sw - 1, FS_START_ON); + } + SET_DIRTY(); + }); + startChoice->setAvailableHandler([=](int sw) -> bool { + return (sw == 0) || + (sw == NUM_FUNCTIONS_SWITCHES + 1 && + !IS_FSWITCH_GROUP_ON(groupIndex)) || + (FSWITCH_GROUP(sw - 1) == groupIndex); + }); + } + + static constexpr coord_t NM_W = 100; + static constexpr coord_t AO_X = NM_W + 2; + static constexpr coord_t AO_W = 100; + static constexpr coord_t SL_X = AO_X + AO_W + 30; + static constexpr coord_t SL_W = 100; + static constexpr coord_t ST_X = SL_X + SL_W + 2; + static constexpr coord_t ST_W = 80; + + protected: + uint8_t groupIndex; + Choice* startChoice; +}; + +ModelFunctionSwitches::ModelFunctionSwitches() : Page(ICON_MODEL_SETUP) +{ + header->setTitle(STR_MENU_MODEL_SETUP); + header->setTitle2(STR_MENU_FSWITCH); + + body->padAll(PAD_TINY); + body->setFlexLayout(LV_FLEX_FLOW_COLUMN, PAD_ZERO); + + FlexGridLayout grid1(line_col_dsc1, line_row_dsc, PAD_TINY); + FlexGridLayout grid2(line_col_dsc2, line_row_dsc, PAD_TINY); + + auto line = body->newLine(grid2); + new StaticText(line, rect_t{}, STR_SWITCHES, COLOR_THEME_PRIMARY1); + new StaticText(line, rect_t{}, STR_NAME, COLOR_THEME_PRIMARY1 | FONT(XS)); + new StaticText(line, rect_t{}, STR_SWITCH_TYPE, + COLOR_THEME_PRIMARY1 | FONT(XS)); + new StaticText(line, rect_t{}, STR_GROUP, COLOR_THEME_PRIMARY1 | FONT(XS)); + new StaticText(line, rect_t{}, STR_SWITCH_STARTUP, + COLOR_THEME_PRIMARY1 | FONT(XS)); + + for (uint8_t i = 0; i < NUM_FUNCTIONS_SWITCHES; i += 1) { + new FunctionSwitch(body, i); + } + + for (uint8_t i = 1; i <= 3; i += 1) { + groupLines[i - 1] = new SwitchGroup(body, i); + } + + line = body->newLine(grid1); + + new StaticText(line, rect_t{}, STR_MORE_INFO, COLOR_THEME_PRIMARY1); + + line = body->newLine(grid1); + line->padBottom(10); + line->padLeft((width() - 150) / 2); + + auto qr = lv_qrcode_create(line->getLvObj(), 150, + makeLvColor(COLOR_THEME_SECONDARY1), + makeLvColor(COLOR_THEME_SECONDARY3)); + lv_qrcode_update(qr, edgetx_fs_manual_url.c_str(), + edgetx_fs_manual_url.length()); +} + +void ModelFunctionSwitches::setState() +{ + for (int i = 0; i < 3; i += 1) + if (firstSwitchInGroup(i + 1) < 0) + lv_obj_add_flag(groupLines[i]->getLvObj(), LV_OBJ_FLAG_HIDDEN); + else + lv_obj_clear_flag(groupLines[i]->getLvObj(), LV_OBJ_FLAG_HIDDEN); +} + +void ModelFunctionSwitches::checkEvents() +{ + setState(); + Page::checkEvents(); +} + +#endif diff --git a/radio/src/gui/colorlcd/function_switches.h b/radio/src/gui/colorlcd/function_switches.h new file mode 100644 index 000000000..768ef684f --- /dev/null +++ b/radio/src/gui/colorlcd/function_switches.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#pragma once + +#if defined(FUNCTION_SWITCHES) + +#include "page.h" + +class ModelFunctionSwitches : public Page +{ + public: + ModelFunctionSwitches(); + + protected: + Window* groupLines[3] = {nullptr}; + BitmapBuffer* qrcode = nullptr; + + void setState(); + void checkEvents() override; +}; + +#endif diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index c7ee08307..82fc28c45 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -33,6 +33,9 @@ #include "trims_setup.h" #include "throttle_params.h" #include "preflight_checks.h" +#if defined(FUNCTION_SWITCHES) +#include "function_switches.h" +#endif #include "throttle_params.h" #include "timer_setup.h" #include "trainer_setup.h" @@ -387,6 +390,9 @@ void ModelSetupPage::build(Window * window) {STR_ENABLED_FEATURES, []() { new SubPage(ICON_MODEL_SETUP, STR_MENU_MODEL_SETUP, STR_ENABLED_FEATURES, viewOptionsPageSetupLines, DIM(viewOptionsPageSetupLines)); }}, #if defined(USBJ_EX) {STR_USBJOYSTICK_LABEL, []() { new ModelUSBJoystickPage(); }}, +#endif +#if defined(FUNCTION_SWITCHES) + {STR_FUNCTION_SWITCHES, []() { new ModelFunctionSwitches(); }}, #endif {STR_MENU_OTHER, []() { new SubPage(ICON_MODEL_SETUP, STR_MENU_MODEL_SETUP, STR_MENU_OTHER, otherPageSetupLines, DIM(otherPageSetupLines)); }}, }, BTN_H); diff --git a/radio/src/gui/colorlcd/radio_diaganas.cpp b/radio/src/gui/colorlcd/radio_diaganas.cpp index 5cf63920c..2e4f6c9c3 100644 --- a/radio/src/gui/colorlcd/radio_diaganas.cpp +++ b/radio/src/gui/colorlcd/radio_diaganas.cpp @@ -193,7 +193,7 @@ class AnaCalibratedViewWindow : public AnaViewWindow lv_obj_set_grid_cell(lbl->getLvObj(), LV_GRID_ALIGN_STRETCH, 0, 5, LV_GRID_ALIGN_CENTER, 0, 1); -#if !defined(SIMU) && !defined(PCBNV14) && !defined(PCBPL18) +#if !defined(SIMU) && defined(TP_GT911) line = newLine(grid); auto lbl2 = new StaticText( line, rect_t{}, diff --git a/radio/src/gui/colorlcd/radio_diagcustswitches.cpp b/radio/src/gui/colorlcd/radio_diagcustswitches.cpp new file mode 100644 index 000000000..598322b5c --- /dev/null +++ b/radio/src/gui/colorlcd/radio_diagcustswitches.cpp @@ -0,0 +1,90 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#if defined(FUNCTION_SWITCHES) + +#include "radio_diagcustswitches.h" + +#include "board.h" +#include "libopenui.h" +#include "opentx.h" + +class RadioCustSwitchesDiagsWindow : public Window +{ + static constexpr coord_t FS_1ST_COLUMN = 95; + static constexpr coord_t FS_2ND_COLUMN = 160; + static constexpr coord_t FS_3RD_COLUMN = 260; + + public: + RadioCustSwitchesDiagsWindow(Window *parent, const rect_t &rect) : + Window(parent, rect) + { + new StaticText(this, {FS_1ST_COLUMN, PAD_SMALL, 60, LV_SIZE_CONTENT}, + "Phys"); + new StaticText(this, {FS_2ND_COLUMN, PAD_SMALL, 60, LV_SIZE_CONTENT}, + "Log"); + new StaticText(this, {FS_3RD_COLUMN, PAD_SMALL, 60, LV_SIZE_CONTENT}, + "Led"); + for (uint8_t i = 0; i < NUM_FUNCTIONS_SWITCHES; i += 1) { + coord_t y = 2 * EdgeTxStyles::PAGE_LINE_HEIGHT + + i * EdgeTxStyles::PAGE_LINE_HEIGHT; + new StaticText(this, {10, y, LV_SIZE_CONTENT, LV_SIZE_CONTENT}, + STR_CHAR_SWITCH); + new StaticText(this, {25, y, LV_SIZE_CONTENT, LV_SIZE_CONTENT}, + switchGetName(i + switchGetMaxSwitches())); + new DynamicText( + this, {FS_1ST_COLUMN + 10, y, LV_SIZE_CONTENT, LV_SIZE_CONTENT}, + [=]() { + return getFSPhysicalState(i) ? STR_CHAR_DOWN : STR_CHAR_UP; + }); + new DynamicText( + this, {FS_2ND_COLUMN + 10, y, LV_SIZE_CONTENT, LV_SIZE_CONTENT}, + [=]() { return getFSLogicalState(i) ? STR_CHAR_DOWN : STR_CHAR_UP; }); + new DynamicText(this, + {FS_3RD_COLUMN + 5, y, LV_SIZE_CONTENT, LV_SIZE_CONTENT}, + [=]() { return STR_OFFON[getFSLedState(i)]; }); + } + } + + protected: +}; + +void RadioCustSwitchesDiagsPage::buildHeader(Window *window) +{ + header->setTitle(STR_RADIO_SETUP); + header->setTitle2(STR_MENU_FSWITCH); +} + +void RadioCustSwitchesDiagsPage::buildBody(Window *window) +{ + body->padAll(PAD_ZERO); + new RadioCustSwitchesDiagsWindow(window, + {0, 0, window->width(), window->height()}); +} + +RadioCustSwitchesDiagsPage::RadioCustSwitchesDiagsPage() : + Page(ICON_MODEL_SETUP) +{ + buildHeader(header); + buildBody(body); +} + +#endif diff --git a/radio/src/gui/colorlcd/radio_diagcustswitches.h b/radio/src/gui/colorlcd/radio_diagcustswitches.h new file mode 100644 index 000000000..6f3ed4711 --- /dev/null +++ b/radio/src/gui/colorlcd/radio_diagcustswitches.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "page.h" + +class RadioCustSwitchesDiagsPage : public Page +{ + public: + explicit RadioCustSwitchesDiagsPage(); + + protected: + void buildHeader(Window* window); + void buildBody(Window* window); +}; diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index c825187ad..2ed8081e1 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -33,6 +33,10 @@ #include "radio_diagkeys.h" #include "radio_setup.h" +#if defined(FUNCTION_SWITCHES) +#include "radio_diagcustswitches.h" +#endif + #if defined(BLUETOOTH) #include "hw_bluetooth.h" #endif @@ -199,8 +203,11 @@ void RadioHardwarePage::build(Window* window) }); // Debugs - new SetupButtonGroup(window, {0, 0, LCD_W - padding * 2, 0}, STR_DEBUG, BTN_COLS, PAD_ZERO, { + new SetupButtonGroup(window, {0, 0, LCD_W - padding * 2, 0}, STR_DEBUG, FS_BTN_COLS, PAD_ZERO, { {STR_ANALOGS_BTN, []() { new RadioAnalogsDiagsViewPageGroup(); }}, {STR_KEYS_BTN, []() { new RadioKeyDiagsPage(); }}, +#if defined(FUNCTION_SWITCHES) + {STR_FS_BTN, []() { new RadioCustSwitchesDiagsPage(); }}, +#endif }); } diff --git a/radio/src/gui/colorlcd/radio_hardware.h b/radio/src/gui/colorlcd/radio_hardware.h index a56414a82..11940ffdd 100644 --- a/radio/src/gui/colorlcd/radio_hardware.h +++ b/radio/src/gui/colorlcd/radio_hardware.h @@ -32,6 +32,7 @@ class RadioHardwarePage : public PageTab static LAYOUT_VAL(NUM_EDIT_W, 80, 80) static LAYOUT_VAL(BTN_COLS, 4, 3) + static LAYOUT_VAL(FS_BTN_COLS, 2, 2) protected: void cleanup() override; diff --git a/radio/src/gui/colorlcd/radio_version.cpp b/radio/src/gui/colorlcd/radio_version.cpp index 93c2a38d5..7f5427487 100644 --- a/radio/src/gui/colorlcd/radio_version.cpp +++ b/radio/src/gui/colorlcd/radio_version.cpp @@ -360,6 +360,12 @@ void RadioVersionPage::build(Window* window) version += options[i]; } +#if defined(RADIO_T15) + version += nl; + version += "PCBREV: "; + version += '0' + hardwareOptions.pcbrev; +#endif + #if (defined(PCBNV14) || defined(PCBPL18)) && !defined(SIMU) version += nl; version += "LCD: "; diff --git a/radio/src/hal/adc_driver.cpp b/radio/src/hal/adc_driver.cpp index d3aeecca4..20d01d9d5 100644 --- a/radio/src/hal/adc_driver.cpp +++ b/radio/src/hal/adc_driver.cpp @@ -310,6 +310,13 @@ uint16_t getBatteryVoltage() // removal will break existing calibrations! instant_vbat += VOLTAGE_DROP; return (uint16_t)instant_vbat; +#elif defined(VOLTAGE_DROP) + instant_vbat = ((instant_vbat * (1000 + g_eeGeneral.txVoltageCalibration)) / + BATTERY_DIVIDER); + // add voltage drop because of the diode + // removal will break existing calibrations! + instant_vbat += VOLTAGE_DROP; + return (uint16_t)instant_vbat; #else return (uint16_t)((instant_vbat * (1000 + g_eeGeneral.txVoltageCalibration)) / BATTERY_DIVIDER); diff --git a/radio/src/hal/rotary_encoder.h b/radio/src/hal/rotary_encoder.h index d1fc7456b..510c6d598 100644 --- a/radio/src/hal/rotary_encoder.h +++ b/radio/src/hal/rotary_encoder.h @@ -27,7 +27,7 @@ #define ROTENC_MIDSPEED 5 #define ROTENC_HIGHSPEED 50 -#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) +#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T15) #define ROTARY_ENCODER_GRANULARITY 4 #else #define ROTARY_ENCODER_GRANULARITY 2 diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 75f9c7567..6860607f5 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -26,6 +26,7 @@ #include "opentx_types.h" #include "opentx_helpers.h" #include "touch.h" +#include "switches.h" #if defined(SIMU) #include "targets/simu/simpgmspace.h" diff --git a/radio/src/storage/yaml/CMakeLists.txt b/radio/src/storage/yaml/CMakeLists.txt index 6803ba88e..fd2756c2e 100644 --- a/radio/src/storage/yaml/CMakeLists.txt +++ b/radio/src/storage/yaml/CMakeLists.txt @@ -17,7 +17,11 @@ endif() if(PCB STREQUAL X12S) set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_x12s.cpp) elseif(PCB STREQUAL X10) - set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_x10.cpp) + if(PCBREV STREQUAL T15) + set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_t15.cpp) + else() + set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_x10.cpp) + endif() elseif(PCB STREQUAL NV14) set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_nv14.cpp) elseif(PCB STREQUAL PL18) diff --git a/radio/src/storage/yaml/yaml_datastructs.cpp b/radio/src/storage/yaml/yaml_datastructs.cpp index dcc6ceabe..e533c9806 100644 --- a/radio/src/storage/yaml/yaml_datastructs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs.cpp @@ -31,7 +31,11 @@ #if defined(PCBX12S) #include "yaml_datastructs_x12s.cpp" #elif defined(PCBX10) - #include "yaml_datastructs_x10.cpp" +#if defined(RADIO_T15) + #include "yaml_datastructs_t15.cpp" + #else + #include "yaml_datastructs_x10.cpp" + #endif #elif defined(PCBNV14) #include "yaml_datastructs_nv14.cpp" #elif defined(PCBPL18) diff --git a/radio/src/storage/yaml/yaml_datastructs_t15.cpp b/radio/src/storage/yaml/yaml_datastructs_t15.cpp new file mode 100644 index 000000000..2925365a6 --- /dev/null +++ b/radio/src/storage/yaml/yaml_datastructs_t15.cpp @@ -0,0 +1,919 @@ +// generated by generate_yaml.py + +// +// Enums first +// + +const struct YamlIdStr enum_BacklightMode[] = { + { e_backlight_mode_off, "backlight_mode_off" }, + { e_backlight_mode_keys, "backlight_mode_keys" }, + { e_backlight_mode_sticks, "backlight_mode_sticks" }, + { e_backlight_mode_all, "backlight_mode_all" }, + { e_backlight_mode_on, "backlight_mode_on" }, + { 0, NULL } +}; +const struct YamlIdStr enum_AntennaModes[] = { + { ANTENNA_MODE_INTERNAL, "MODE_INTERNAL" }, + { ANTENNA_MODE_ASK, "MODE_ASK" }, + { ANTENNA_MODE_PER_MODEL, "MODE_PER_MODEL" }, + { ANTENNA_MODE_EXTERNAL, "MODE_EXTERNAL" }, + { 0, NULL } +}; +const struct YamlIdStr enum_ModuleType[] = { + { MODULE_TYPE_NONE, "TYPE_NONE" }, + { MODULE_TYPE_PPM, "TYPE_PPM" }, + { MODULE_TYPE_XJT_PXX1, "TYPE_XJT_PXX1" }, + { MODULE_TYPE_ISRM_PXX2, "TYPE_ISRM_PXX2" }, + { MODULE_TYPE_DSM2, "TYPE_DSM2" }, + { MODULE_TYPE_CROSSFIRE, "TYPE_CROSSFIRE" }, + { MODULE_TYPE_MULTIMODULE, "TYPE_MULTIMODULE" }, + { MODULE_TYPE_R9M_PXX1, "TYPE_R9M_PXX1" }, + { MODULE_TYPE_R9M_PXX2, "TYPE_R9M_PXX2" }, + { MODULE_TYPE_R9M_LITE_PXX1, "TYPE_R9M_LITE_PXX1" }, + { MODULE_TYPE_R9M_LITE_PXX2, "TYPE_R9M_LITE_PXX2" }, + { MODULE_TYPE_GHOST, "TYPE_GHOST" }, + { MODULE_TYPE_R9M_LITE_PRO_PXX2, "TYPE_R9M_LITE_PRO_PXX2" }, + { MODULE_TYPE_SBUS, "TYPE_SBUS" }, + { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, + { MODULE_TYPE_FLYSKY_AFHDS2A, "TYPE_FLYSKY_AFHDS2A" }, + { MODULE_TYPE_FLYSKY_AFHDS3, "TYPE_FLYSKY_AFHDS3" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, + { 0, NULL } +}; +const struct YamlIdStr enum_TrainerMultiplex[] = { + { TRAINER_OFF, "OFF" }, + { TRAINER_ADD, "ADD" }, + { TRAINER_REPL, "REPL" }, + { 0, NULL } +}; +const struct YamlIdStr enum_BeeperMode[] = { + { e_mode_quiet, "mode_quiet" }, + { e_mode_alarms, "mode_alarms" }, + { e_mode_nokeys, "mode_nokeys" }, + { e_mode_all, "mode_all" }, + { 0, NULL } +}; +const struct YamlIdStr enum_BluetoothModes[] = { + { BLUETOOTH_OFF, "OFF" }, + { BLUETOOTH_TELEMETRY, "TELEMETRY" }, + { BLUETOOTH_TRAINER, "TRAINER" }, + { 0, NULL } +}; +const struct YamlIdStr enum_Functions[] = { + { FUNC_OVERRIDE_CHANNEL, "OVERRIDE_CHANNEL" }, + { FUNC_TRAINER, "TRAINER" }, + { FUNC_INSTANT_TRIM, "INSTANT_TRIM" }, + { FUNC_RESET, "RESET" }, + { FUNC_SET_TIMER, "SET_TIMER" }, + { FUNC_ADJUST_GVAR, "ADJUST_GVAR" }, + { FUNC_VOLUME, "VOLUME" }, + { FUNC_SET_FAILSAFE, "SET_FAILSAFE" }, + { FUNC_RANGECHECK, "RANGECHECK" }, + { FUNC_BIND, "BIND" }, + { FUNC_PLAY_SOUND, "PLAY_SOUND" }, + { FUNC_PLAY_TRACK, "PLAY_TRACK" }, + { FUNC_PLAY_VALUE, "PLAY_VALUE" }, + { FUNC_PLAY_SCRIPT, "PLAY_SCRIPT" }, + { FUNC_BACKGND_MUSIC, "BACKGND_MUSIC" }, + { FUNC_BACKGND_MUSIC_PAUSE, "BACKGND_MUSIC_PAUSE" }, + { FUNC_VARIO, "VARIO" }, + { FUNC_HAPTIC, "HAPTIC" }, + { FUNC_LOGS, "LOGS" }, + { FUNC_BACKLIGHT, "BACKLIGHT" }, + { FUNC_SCREENSHOT, "SCREENSHOT" }, + { FUNC_RACING_MODE, "RACING_MODE" }, + { FUNC_DISABLE_TOUCH, "DISABLE_TOUCH" }, + { FUNC_SET_SCREEN, "SET_SCREEN" }, + { FUNC_DISABLE_AUDIO_AMP, "DISABLE_AUDIO_AMP" }, + { FUNC_RGB_LED, "RGB_LED" }, + { FUNC_TEST, "TEST" }, + { 0, NULL } +}; +const struct YamlIdStr enum_TimerModes[] = { + { TMRMODE_OFF, "OFF" }, + { TMRMODE_ON, "ON" }, + { TMRMODE_START, "START" }, + { TMRMODE_THR, "THR" }, + { TMRMODE_THR_REL, "THR_REL" }, + { TMRMODE_THR_START, "THR_START" }, + { 0, NULL } +}; +const struct YamlIdStr enum_MixerMultiplex[] = { + { MLTPX_ADD, "ADD" }, + { MLTPX_MUL, "MUL" }, + { MLTPX_REPL, "REPL" }, + { 0, NULL } +}; +const struct YamlIdStr enum_MixSources[] = { + { MIXSRC_NONE, "NONE" }, + { MIXSRC_TILT_X, "TILT_X" }, + { MIXSRC_TILT_Y, "TILT_Y" }, + { MIXSRC_SPACEMOUSE_A, "SPACEMOUSE_A" }, + { MIXSRC_SPACEMOUSE_B, "SPACEMOUSE_B" }, + { MIXSRC_SPACEMOUSE_C, "SPACEMOUSE_C" }, + { MIXSRC_SPACEMOUSE_D, "SPACEMOUSE_D" }, + { MIXSRC_SPACEMOUSE_E, "SPACEMOUSE_E" }, + { MIXSRC_SPACEMOUSE_F, "SPACEMOUSE_F" }, + { MIXSRC_MIN, "MIN" }, + { MIXSRC_MAX, "MAX" }, + { MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" }, + { MIXSRC_TX_TIME, "TX_TIME" }, + { MIXSRC_TX_GPS, "TX_GPS" }, + { 0, NULL } +}; +const struct YamlIdStr enum_LogicalSwitchesFunctions[] = { + { LS_FUNC_NONE, "FUNC_NONE" }, + { LS_FUNC_VEQUAL, "FUNC_VEQUAL" }, + { LS_FUNC_VALMOSTEQUAL, "FUNC_VALMOSTEQUAL" }, + { LS_FUNC_VPOS, "FUNC_VPOS" }, + { LS_FUNC_VNEG, "FUNC_VNEG" }, + { LS_FUNC_APOS, "FUNC_APOS" }, + { LS_FUNC_ANEG, "FUNC_ANEG" }, + { LS_FUNC_AND, "FUNC_AND" }, + { LS_FUNC_OR, "FUNC_OR" }, + { LS_FUNC_XOR, "FUNC_XOR" }, + { LS_FUNC_EDGE, "FUNC_EDGE" }, + { LS_FUNC_EQUAL, "FUNC_EQUAL" }, + { LS_FUNC_GREATER, "FUNC_GREATER" }, + { LS_FUNC_LESS, "FUNC_LESS" }, + { LS_FUNC_DIFFEGREATER, "FUNC_DIFFEGREATER" }, + { LS_FUNC_ADIFFEGREATER, "FUNC_ADIFFEGREATER" }, + { LS_FUNC_TIMER, "FUNC_TIMER" }, + { LS_FUNC_STICKY, "FUNC_STICKY" }, + { 0, NULL } +}; +const struct YamlIdStr enum_SwashType[] = { + { SWASH_TYPE_NONE, "TYPE_NONE" }, + { SWASH_TYPE_120, "TYPE_120" }, + { SWASH_TYPE_120X, "TYPE_120X" }, + { SWASH_TYPE_140, "TYPE_140" }, + { SWASH_TYPE_90, "TYPE_90" }, + { 0, NULL } +}; +const struct YamlIdStr enum_SwitchSources[] = { + { SWSRC_NONE, "NONE" }, + { SWSRC_ON, "ON" }, + { SWSRC_ONE, "ONE" }, + { SWSRC_TELEMETRY_STREAMING, "TELEMETRY_STREAMING" }, + { SWSRC_RADIO_ACTIVITY, "RADIO_ACTIVITY" }, + { SWSRC_TRAINER_CONNECTED, "TRAINER_CONNECTED" }, + { SWSRC_OFF, "OFF" }, + { 0, NULL } +}; +const struct YamlIdStr enum_PotsWarnMode[] = { + { POTS_WARN_OFF, "WARN_OFF" }, + { POTS_WARN_MANUAL, "WARN_MANUAL" }, + { POTS_WARN_AUTO, "WARN_AUTO" }, + { 0, NULL } +}; +const struct YamlIdStr enum_ModelOverridableEnable[] = { + { OVERRIDE_GLOBAL, "GLOBAL" }, + { OVERRIDE_OFF, "OFF" }, + { OVERRIDE_ON, "ON" }, + { 0, NULL } +}; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; +const struct YamlIdStr enum_TelemetrySensorFormula[] = { + { TELEM_FORMULA_ADD, "FORMULA_ADD" }, + { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, + { TELEM_FORMULA_MIN, "FORMULA_MIN" }, + { TELEM_FORMULA_MAX, "FORMULA_MAX" }, + { TELEM_FORMULA_MULTIPLY, "FORMULA_MULTIPLY" }, + { TELEM_FORMULA_TOTALIZE, "FORMULA_TOTALIZE" }, + { TELEM_FORMULA_CELL, "FORMULA_CELL" }, + { TELEM_FORMULA_CONSUMPTION, "FORMULA_CONSUMPTION" }, + { TELEM_FORMULA_DIST, "FORMULA_DIST" }, + { 0, NULL } +}; +const struct YamlIdStr enum_TelemetrySensorType[] = { + { TELEM_TYPE_CUSTOM, "TYPE_CUSTOM" }, + { TELEM_TYPE_CALCULATED, "TYPE_CALCULATED" }, + { 0, NULL } +}; +const struct YamlIdStr enum_ZoneOptionValueEnum[] = { + { ZOV_Unsigned, "Unsigned" }, + { ZOV_Signed, "Signed" }, + { ZOV_Bool, "Bool" }, + { ZOV_String, "String" }, + { ZOV_Source, "Source" }, + { ZOV_Color, "Color" }, + { 0, NULL } +}; +const struct YamlIdStr enum_USBJoystickIfMode[] = { + { USBJOYS_JOYSTICK, "JOYSTICK" }, + { USBJOYS_GAMEPAD, "GAMEPAD" }, + { USBJOYS_MULTIAXIS, "MULTIAXIS" }, + { 0, NULL } +}; +const struct YamlIdStr enum_USBJoystickCh[] = { + { USBJOYS_CH_NONE, "CH_NONE" }, + { USBJOYS_CH_BUTTON, "CH_BUTTON" }, + { USBJOYS_CH_AXIS, "CH_AXIS" }, + { USBJOYS_CH_SIM, "CH_SIM" }, + { 0, NULL } +}; + +// +// Structs last +// + +static const struct YamlNode struct_CalibData[] = { + YAML_IDX_CUST("calib",r_calib,w_calib), + YAML_SIGNED( "mid", 16 ), + YAML_SIGNED( "spanNeg", 16 ), + YAML_SIGNED( "spanPos", 16 ), + YAML_END +}; +static const struct YamlNode struct_signed_16[] = { + YAML_IDX, + YAML_SIGNED( "val", 16 ), + YAML_END +}; +static const struct YamlNode struct_TrainerMix[] = { + YAML_IDX, + YAML_UNSIGNED( "srcChn", 6 ), + YAML_ENUM("mode", 2, enum_TrainerMultiplex), + YAML_SIGNED( "studWeight", 8 ), + YAML_END +}; +static const struct YamlNode struct_TrainerData[] = { + YAML_ARRAY("calib", 16, 4, struct_signed_16, NULL), + YAML_ARRAY("mix", 16, 4, struct_TrainerMix, NULL), + YAML_END +}; +static const struct YamlNode struct_anonymous_1[] = { + YAML_STRING("name", 8), + YAML_END +}; +static const struct YamlNode struct_anonymous_2[] = { + YAML_SIGNED( "val", 16 ), + YAML_UNSIGNED( "mode", 8 ), + YAML_UNSIGNED( "param", 8 ), + YAML_SIGNED( "spare", 32 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_3[] = { + YAML_SIGNED( "val1", 32 ), + YAML_SIGNED( "val2", 32 ), + YAML_END +}; +static const struct YamlNode union_anonymous_0_elmts[] = { + YAML_STRUCT("play", 64, struct_anonymous_1, NULL), + YAML_STRUCT("all", 64, struct_anonymous_2, NULL), + YAML_STRUCT("clear", 64, struct_anonymous_3, NULL), + YAML_END +}; +static const struct YamlNode struct_CustomFunctionData[] = { + YAML_IDX, + YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ), + YAML_ENUM("func", 6, enum_Functions), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 1 ), + YAML_PADDING( 7 ), + YAML_END +}; +static const struct YamlNode struct_RadioData[] = { + YAML_UNSIGNED( "manuallyEdited", 1 ), + YAML_SIGNED( "timezoneMinutes", 3 ), + YAML_UNSIGNED( "ppmunit", 2 ), + YAML_PADDING( 2 ), + YAML_CUSTOM("semver",nullptr,w_semver), + YAML_CUSTOM("board",nullptr,w_board), + YAML_ARRAY("calib", 48, 20, struct_CalibData, NULL), + YAML_PADDING( 16 ), + YAML_UNSIGNED( "vBatWarn", 8 ), + YAML_SIGNED( "txVoltageCalibration", 8 ), + YAML_ENUM("backlightMode", 3, enum_BacklightMode), + YAML_ENUM("antennaMode", 2, enum_AntennaModes), + YAML_UNSIGNED( "disableRtcWarning", 1 ), + YAML_UNSIGNED( "keysBacklight", 1 ), + YAML_UNSIGNED( "dontPlayHello", 1 ), + YAML_ENUM("internalModule", 8, enum_ModuleType), + YAML_STRUCT("trainer", 128, struct_TrainerData, NULL), + YAML_UNSIGNED( "view", 8 ), + YAML_PADDING( 2 ), + YAML_UNSIGNED( "fai", 1 ), + YAML_SIGNED_CUST( "beepMode", 2, r_beeperMode, w_beeperMode ), + YAML_UNSIGNED( "alarmsFlash", 1 ), + YAML_UNSIGNED( "disableMemoryWarning", 1 ), + YAML_UNSIGNED( "disableAlarmWarning", 1 ), + YAML_UNSIGNED( "stickMode", 2 ), + YAML_SIGNED( "timezone", 5 ), + YAML_UNSIGNED( "adjustRTC", 1 ), + YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), + YAML_SIGNED( "splashMode", 3 ), + YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), + YAML_SIGNED( "switchesDelay", 8 ), + YAML_UNSIGNED( "lightAutoOff", 8 ), + YAML_UNSIGNED( "templateSetup", 8 ), + YAML_SIGNED( "PPM_Multiplier", 8 ), + YAML_SIGNED_CUST( "hapticLength", 8, r_5pos, w_5pos ), + YAML_SIGNED_CUST( "beepLength", 3, r_5pos, w_5pos ), + YAML_SIGNED_CUST( "hapticStrength", 3, r_5pos, w_5pos ), + YAML_UNSIGNED( "gpsFormat", 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), + YAML_UNSIGNED_CUST( "speakerPitch", 8, r_spPitch, w_spPitch ), + YAML_SIGNED_CUST( "speakerVolume", 8, r_vol, w_vol ), + YAML_SIGNED_CUST( "vBatMin", 8, r_vbat_min, w_vbat_min ), + YAML_SIGNED_CUST( "vBatMax", 8, r_vbat_max, w_vbat_max ), + YAML_UNSIGNED( "backlightBright", 8 ), + YAML_UNSIGNED( "globalTimer", 32 ), + YAML_UNSIGNED( "bluetoothBaudrate", 4 ), + YAML_ENUM("bluetoothMode", 4, enum_BluetoothModes), + YAML_UNSIGNED( "countryCode", 2 ), + YAML_SIGNED( "pwrOnSpeed", 3 ), + YAML_SIGNED( "pwrOffSpeed", 3 ), + YAML_CUSTOM("jitterFilter",r_jitterFilter,nullptr), + YAML_UNSIGNED( "noJitterFilter", 1 ), + YAML_UNSIGNED( "imperial", 1 ), + YAML_UNSIGNED( "disableRssiPoweroffAlarm", 1 ), + YAML_UNSIGNED( "USBMode", 2 ), + YAML_UNSIGNED( "jackMode", 2 ), + YAML_PADDING( 1 ), + YAML_STRING("ttsLanguage", 2), + YAML_SIGNED_CUST( "beepVolume", 4, r_5pos, w_5pos ), + YAML_SIGNED_CUST( "wavVolume", 4, r_5pos, w_5pos ), + YAML_SIGNED_CUST( "varioVolume", 4, r_5pos, w_5pos ), + YAML_SIGNED_CUST( "backgroundVolume", 4, r_5pos, w_5pos ), + YAML_SIGNED_CUST( "varioPitch", 8, r_vPitch, w_vPitch ), + YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), + YAML_SIGNED( "varioRepeat", 8 ), + YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), + YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr), + YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr), + YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr), + YAML_ARRAY("sticksConfig", 0, MAX_STICKS, struct_stickConfig, stick_name_valid), + YAML_ARRAY("slidersConfig", 0, MAX_POTS, struct_sliderConfig, nullptr), + YAML_ARRAY("potsConfig", 4, 16, struct_potConfig, nullptr), + YAML_ARRAY("switchConfig", 2, 32, struct_switchConfig, nullptr), + YAML_ARRAY("flexSwitches", 0, MAX_FLEX_SWITCHES, struct_flexSwitch, flex_sw_valid), + YAML_STRING("currModelFilename", 17), + YAML_UNSIGNED( "modelQuickSelect", 1 ), + YAML_UNSIGNED( "blOffBright", 7 ), + YAML_STRING("bluetoothName", 10), + YAML_STRING("ownerRegistrationID", 8), + YAML_CUSTOM("rotEncDirection",r_rotEncDirection,nullptr), + YAML_UNSIGNED( "rotEncMode", 3 ), + YAML_SIGNED( "uartSampleMode", 2 ), + YAML_PADDING( 3 ), + YAML_SIGNED( "imuMax", 8 ), + YAML_SIGNED( "imuOffset", 8 ), + YAML_STRING("selectedTheme", 26), + YAML_UNSIGNED( "labelSingleSelect", 1 ), + YAML_UNSIGNED( "labelMultiMode", 1 ), + YAML_UNSIGNED( "favMultiMode", 1 ), + YAML_UNSIGNED( "modelSelectLayout", 2 ), + YAML_UNSIGNED( "radioThemesDisabled", 1 ), + YAML_UNSIGNED( "radioGFDisabled", 1 ), + YAML_UNSIGNED( "radioTrainerDisabled", 1 ), + YAML_UNSIGNED( "modelHeliDisabled", 1 ), + YAML_UNSIGNED( "modelFMDisabled", 1 ), + YAML_UNSIGNED( "modelCurvesDisabled", 1 ), + YAML_UNSIGNED( "modelGVDisabled", 1 ), + YAML_UNSIGNED( "modelLSDisabled", 1 ), + YAML_UNSIGNED( "modelSFDisabled", 1 ), + YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ), + YAML_UNSIGNED( "modelTelemetryDisabled", 1 ), + YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ), + YAML_PADDING( 7 ), + YAML_END +}; +static const struct YamlNode struct_unsigned_8[] = { + YAML_IDX, + YAML_UNSIGNED( "val", 8 ), + YAML_END +}; +static const struct YamlNode struct_ModelHeader[] = { + YAML_STRING("name", 15), + YAML_ARRAY("modelId", 8, 2, struct_unsigned_8, NULL), + YAML_STRING("bitmap", 14), + YAML_STRING("labels", 100), + YAML_END +}; +static const struct YamlNode struct_TimerData[] = { + YAML_IDX, + YAML_UNSIGNED( "start", 22 ), + YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ), + YAML_SIGNED( "value", 22 ), + YAML_ENUM("mode", 3, enum_TimerModes), + YAML_UNSIGNED( "countdownBeep", 2 ), + YAML_UNSIGNED( "minuteBeep", 1 ), + YAML_UNSIGNED( "persistent", 2 ), + YAML_SIGNED( "countdownStart", 2 ), + YAML_UNSIGNED( "showElapsed", 1 ), + YAML_UNSIGNED( "extraHaptic", 1 ), + YAML_PADDING( 6 ), + YAML_STRING("name", 8), + YAML_END +}; +static const struct YamlNode struct_CurveRef[] = { + YAML_UNSIGNED( "type", 8 ), + YAML_SIGNED_CUST( "value", 8, in_read_weight, in_write_weight ), + YAML_END +}; +static const struct YamlNode struct_MixData[] = { + YAML_SIGNED_CUST( "weight", 11, in_read_weight, in_write_weight ), + YAML_UNSIGNED( "destCh", 5 ), + YAML_SIGNED_CUST( "srcRaw", 10, r_mixSrcRawEx, w_mixSrcRawEx ), + YAML_UNSIGNED( "carryTrim", 1 ), + YAML_UNSIGNED( "mixWarn", 2 ), + YAML_ENUM("mltpx", 2, enum_MixerMultiplex), + YAML_UNSIGNED( "speedPrec", 1 ), + YAML_SIGNED_CUST( "offset", 13, in_read_weight, in_write_weight ), + YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ), + YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ), + YAML_STRUCT("curve", 16, struct_CurveRef, NULL), + YAML_UNSIGNED( "delayUp", 8 ), + YAML_UNSIGNED( "delayDown", 8 ), + YAML_UNSIGNED( "speedUp", 8 ), + YAML_UNSIGNED( "speedDown", 8 ), + YAML_STRING("name", 6), + YAML_END +}; +static const struct YamlNode struct_LimitData[] = { + YAML_IDX, + YAML_SIGNED_CUST( "min", 11, in_read_weight, in_write_weight ), + YAML_SIGNED_CUST( "max", 11, in_read_weight, in_write_weight ), + YAML_SIGNED( "ppmCenter", 10 ), + YAML_SIGNED_CUST( "offset", 11, in_read_weight, in_write_weight ), + YAML_UNSIGNED( "symetrical", 1 ), + YAML_UNSIGNED( "revert", 1 ), + YAML_PADDING( 3 ), + YAML_SIGNED( "curve", 8 ), + YAML_STRING("name", 6), + YAML_END +}; +static const struct YamlNode struct_ExpoData[] = { + YAML_UNSIGNED( "mode", 2 ), + YAML_UNSIGNED( "scale", 14 ), + YAML_CUSTOM("carryTrim",r_carryTrim,nullptr), + YAML_SIGNED( "trimSource", 6 ), + YAML_SIGNED_CUST( "srcRaw", 10, r_mixSrcRawEx, w_mixSrcRawEx ), + YAML_UNSIGNED( "chn", 5 ), + YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ), + YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ), + YAML_SIGNED_CUST( "weight", 8, in_read_weight, in_write_weight ), + YAML_STRING("name", 6), + YAML_SIGNED_CUST( "offset", 8, in_read_weight, in_write_weight ), + YAML_STRUCT("curve", 16, struct_CurveRef, NULL), + YAML_END +}; +static const struct YamlNode struct_CurveHeader[] = { + YAML_IDX, + YAML_UNSIGNED( "type", 1 ), + YAML_UNSIGNED( "smooth", 1 ), + YAML_SIGNED( "points", 6 ), + YAML_STRING("name", 3), + YAML_END +}; +static const struct YamlNode struct_signed_8[] = { + YAML_IDX, + YAML_SIGNED( "val", 8 ), + YAML_END +}; +static const struct YamlNode struct_LogicalSwitchData[] = { + YAML_IDX, + YAML_ENUM("func", 8, enum_LogicalSwitchesFunctions), + YAML_CUSTOM("def",r_logicSw,w_logicSw), + YAML_PADDING( 10 ), + YAML_PADDING( 10 ), + YAML_SIGNED_CUST( "andsw", 10, r_swtchSrc, w_swtchSrc ), + YAML_UNSIGNED( "lsPersist", 1 ), + YAML_UNSIGNED( "lsState", 1 ), + YAML_PADDING( 16 ), + YAML_UNSIGNED( "delay", 8 ), + YAML_UNSIGNED( "duration", 8 ), + YAML_END +}; +static const struct YamlNode struct_SwashRingData[] = { + YAML_ENUM("type", 8, enum_SwashType), + YAML_UNSIGNED( "value", 8 ), + YAML_UNSIGNED_CUST( "collectiveSource", 8, r_mixSrcRaw, w_mixSrcRaw ), + YAML_UNSIGNED_CUST( "aileronSource", 8, r_mixSrcRaw, w_mixSrcRaw ), + YAML_UNSIGNED_CUST( "elevatorSource", 8, r_mixSrcRaw, w_mixSrcRaw ), + YAML_SIGNED( "collectiveWeight", 8 ), + YAML_SIGNED( "aileronWeight", 8 ), + YAML_SIGNED( "elevatorWeight", 8 ), + YAML_END +}; +static const struct YamlNode struct_trim_t[] = { + YAML_IDX, + YAML_SIGNED( "value", 11 ), + YAML_UNSIGNED( "mode", 5 ), + YAML_END +}; +static const struct YamlNode struct_FlightModeData[] = { + YAML_IDX, + YAML_ARRAY("trim", 16, 6, struct_trim_t, NULL), + YAML_STRING("name", 10), + YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ), + YAML_PADDING( 6 ), + YAML_UNSIGNED( "fadeIn", 8 ), + YAML_UNSIGNED( "fadeOut", 8 ), + YAML_ARRAY("gvars", 16, 9, struct_signed_16, gvar_is_active), + YAML_END +}; +static const struct YamlNode struct_GVarData[] = { + YAML_IDX, + YAML_STRING("name", 3), + YAML_UNSIGNED( "min", 12 ), + YAML_UNSIGNED( "max", 12 ), + YAML_UNSIGNED( "popup", 1 ), + YAML_UNSIGNED( "prec", 1 ), + YAML_UNSIGNED( "unit", 2 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_VarioData[] = { + YAML_UNSIGNED_CUST( "source", 7, r_tele_sensor, w_tele_sensor ), + YAML_UNSIGNED( "centerSilent", 1 ), + YAML_SIGNED( "centerMax", 8 ), + YAML_SIGNED( "centerMin", 8 ), + YAML_SIGNED( "min", 8 ), + YAML_SIGNED( "max", 8 ), + YAML_END +}; +static const struct YamlNode struct_RssiAlarmData[] = { + YAML_CUSTOM("disabled",r_rssiDisabled,nullptr), + YAML_CUSTOM("warning",r_rssiWarning,nullptr), + YAML_CUSTOM("critical",r_rssiCritical,nullptr), + YAML_END +}; +static const struct YamlNode struct_RFAlarmData[] = { + YAML_SIGNED( "warning", 8 ), + YAML_SIGNED( "critical", 8 ), + YAML_END +}; +static const struct YamlNode struct_PpmModule[] = { + YAML_SIGNED( "delay", 6 ), + YAML_UNSIGNED( "pulsePol", 1 ), + YAML_UNSIGNED( "outputType", 1 ), + YAML_SIGNED( "frameLength", 8 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_5[] = { + YAML_PADDING( 8 ), + YAML_UNSIGNED( "disableTelemetry", 1 ), + YAML_UNSIGNED( "disableMapping", 1 ), + YAML_UNSIGNED( "autoBindMode", 1 ), + YAML_UNSIGNED( "lowPowerMode", 1 ), + YAML_UNSIGNED( "receiverTelemetryOff", 1 ), + YAML_UNSIGNED( "receiverHigherChannels", 1 ), + YAML_PADDING( 2 ), + YAML_SIGNED( "optionValue", 8 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_6[] = { + YAML_UNSIGNED( "power", 2 ), + YAML_PADDING( 2 ), + YAML_UNSIGNED( "receiverTelemetryOff", 1 ), + YAML_UNSIGNED( "receiverHigherChannels", 1 ), + YAML_SIGNED( "antennaMode", 2 ), + YAML_PADDING( 8 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_7[] = { + YAML_PADDING( 6 ), + YAML_UNSIGNED( "noninverted", 1 ), + YAML_PADDING( 1 ), + YAML_SIGNED( "refreshRate", 8 ), + YAML_END +}; +static const struct YamlNode struct_string_64[] = { + YAML_IDX, + YAML_STRING("val", 8), + YAML_END +}; +static const struct YamlNode struct_anonymous_8[] = { + YAML_UNSIGNED( "receivers", 7 ), + YAML_UNSIGNED( "racingMode", 1 ), + YAML_ARRAY("receiverName", 64, 3, struct_string_64, NULL), + YAML_END +}; +static const struct YamlNode struct_anonymous_9[] = { + YAML_ARRAY("rx_id", 8, 4, struct_unsigned_8, NULL), + YAML_UNSIGNED( "mode", 3 ), + YAML_UNSIGNED( "rfPower", 1 ), + YAML_UNSIGNED( "reserved", 4 ), + YAML_ARRAY("rx_freq", 8, 2, struct_unsigned_8, NULL), + YAML_END +}; +static const struct YamlNode struct_anonymous_10[] = { + YAML_UNSIGNED( "emi", 2 ), + YAML_UNSIGNED( "telemetry", 1 ), + YAML_UNSIGNED( "phyMode", 3 ), + YAML_UNSIGNED( "reserved", 2 ), + YAML_UNSIGNED( "rfPower", 8 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_11[] = { + YAML_UNSIGNED( "raw12bits", 1 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_12[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "flags", 8 ), + YAML_END +}; +static const struct YamlNode union_anonymous_4_elmts[] = { + YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), + YAML_STRUCT("ppm", 16, struct_PpmModule, NULL), + YAML_STRUCT("multi", 24, struct_anonymous_5, NULL), + YAML_STRUCT("pxx", 16, struct_anonymous_6, NULL), + YAML_STRUCT("sbus", 16, struct_anonymous_7, NULL), + YAML_STRUCT("pxx2", 200, struct_anonymous_8, NULL), + YAML_STRUCT("flysky", 56, struct_anonymous_9, NULL), + YAML_STRUCT("afhds3", 16, struct_anonymous_10, NULL), + YAML_STRUCT("ghost", 8, struct_anonymous_11, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_12, NULL), + YAML_STRUCT("dsmp", 8, struct_anonymous_13, NULL), + YAML_END +}; +static const struct YamlNode struct_ModuleData[] = { + YAML_IDX, + YAML_UNSIGNED_CUST( "type", 8, r_moduleType, w_moduleType ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), + YAML_UNSIGNED( "channelsStart", 8 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 4 ), + YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), + YAML_END +}; +static const struct YamlNode struct_TrainerModuleData[] = { + YAML_UNSIGNED_CUST( "mode", 8, r_trainerMode, w_trainerMode ), + YAML_UNSIGNED( "channelsStart", 8 ), + YAML_SIGNED( "channelsCount", 8 ), + YAML_SIGNED( "frameLength", 8 ), + YAML_SIGNED( "delay", 6 ), + YAML_UNSIGNED( "pulsePol", 1 ), + YAML_PADDING( 1 ), + YAML_END +}; +static const struct YamlNode union_ScriptDataInput_elmts[] = { + YAML_SIGNED( "value", 16 ), + YAML_UNSIGNED_CUST( "source", 16, r_mixSrcRaw, w_mixSrcRaw ), + YAML_END +}; +static const struct YamlNode union_ScriptDataInput[] = { + YAML_IDX, + YAML_UNION("u", 16, union_ScriptDataInput_elmts, select_script_input), + YAML_END +}; +static const struct YamlNode struct_ScriptData[] = { + YAML_IDX, + YAML_STRING("file", 6), + YAML_STRING("name", 6), + YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), + YAML_END +}; +static const struct YamlNode struct_string_32[] = { + YAML_IDX, + YAML_STRING("val", 4), + YAML_END +}; +static const struct YamlNode union_anonymous_14_elmts[] = { + YAML_UNSIGNED( "id", 16 ), + YAML_UNSIGNED( "persistentValue", 16 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_16[] = { + YAML_UNSIGNED( "physID", 5 ), + YAML_UNSIGNED( "rxIndex", 3 ), + YAML_END +}; +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), + YAML_UNSIGNED( "instance", 8 ), + YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), + YAML_END +}; +static const struct YamlNode struct_anonymous_18[] = { + YAML_UNSIGNED( "ratio", 16 ), + YAML_SIGNED( "offset", 16 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_19[] = { + YAML_UNSIGNED( "source", 8 ), + YAML_UNSIGNED( "index", 8 ), + YAML_PADDING( 16 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_20[] = { + YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), + YAML_END +}; +static const struct YamlNode struct_anonymous_21[] = { + YAML_UNSIGNED( "source", 8 ), + YAML_PADDING( 24 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_22[] = { + YAML_UNSIGNED( "gps", 8 ), + YAML_UNSIGNED( "alt", 8 ), + YAML_PADDING( 16 ), + YAML_END +}; +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), + YAML_UNSIGNED( "param", 32 ), + YAML_END +}; +static const struct YamlNode struct_TelemetrySensor[] = { + YAML_IDX, + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_STRING("label", 4), + YAML_UNSIGNED( "subId", 8 ), + YAML_ENUM("type", 1, enum_TelemetrySensorType), + YAML_PADDING( 1 ), + YAML_UNSIGNED( "unit", 6 ), + YAML_UNSIGNED( "prec", 2 ), + YAML_UNSIGNED( "autoOffset", 1 ), + YAML_UNSIGNED( "filter", 1 ), + YAML_UNSIGNED( "logs", 1 ), + YAML_UNSIGNED( "persistent", 1 ), + YAML_UNSIGNED( "onlyPositive", 1 ), + YAML_PADDING( 1 ), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_END +}; +static const struct YamlNode union_ZoneOptionValue_elmts[] = { + YAML_UNSIGNED( "unsignedValue", 32 ), + YAML_SIGNED( "signedValue", 32 ), + YAML_UNSIGNED( "boolValue", 32 ), + YAML_STRING("stringValue", 8), + YAML_CUSTOM("source",r_zov_source,w_zov_source), + YAML_CUSTOM("color",r_zov_color,w_zov_color), + YAML_END +}; +static const struct YamlNode struct_ZoneOptionValueTyped[] = { + YAML_IDX, + YAML_ENUM("type", 32, enum_ZoneOptionValueEnum), + YAML_UNION("value", 64, union_ZoneOptionValue_elmts, select_zov), + YAML_END +}; +static const struct YamlNode struct_WidgetPersistentData[] = { + YAML_ARRAY("options", 96, 5, struct_ZoneOptionValueTyped, NULL), + YAML_END +}; +static const struct YamlNode struct_ZonePersistentData[] = { + YAML_IDX, + YAML_STRING("widgetName", 12), + YAML_STRUCT("widgetData", 480, struct_WidgetPersistentData, NULL), + YAML_END +}; +static const struct YamlNode struct_LayoutPersistentData[] = { + YAML_ARRAY("zones", 576, 10, struct_ZonePersistentData, NULL), + YAML_ARRAY("options", 96, 10, struct_ZoneOptionValueTyped, NULL), + YAML_END +}; +static const struct YamlNode struct_CustomScreenData[] = { + YAML_IDX, + YAML_STRING("LayoutId", 12), + YAML_STRUCT("layoutData", 6720, struct_LayoutPersistentData, NULL), + YAML_END +}; +static const struct YamlNode struct_TopBarPersistentData[] = { + YAML_ARRAY("zones", 576, 6, struct_ZonePersistentData, NULL), + YAML_ARRAY("options", 96, 1, struct_ZoneOptionValueTyped, NULL), + YAML_END +}; +static const struct YamlNode struct_string_24[] = { + YAML_IDX, + YAML_STRING("val", 3), + YAML_END +}; +static const struct YamlNode struct_USBJoystickChData[] = { + YAML_IDX, + YAML_ENUM("mode", 3, enum_USBJoystickCh), + YAML_UNSIGNED( "inversion", 1 ), + YAML_UNSIGNED( "param", 4 ), + YAML_UNSIGNED( "btn_num", 5 ), + YAML_UNSIGNED( "switch_npos", 3 ), + YAML_END +}; +static const struct YamlNode struct_ModelData[] = { + YAML_CUSTOM("semver",nullptr,w_semver), + YAML_STRUCT("header", 1048, struct_ModelHeader, NULL), + YAML_ARRAY("timers", 136, 3, struct_TimerData, NULL), + YAML_UNSIGNED( "telemetryProtocol", 3 ), + YAML_UNSIGNED( "thrTrim", 1 ), + YAML_UNSIGNED( "noGlobalFunctions", 1 ), + YAML_UNSIGNED( "displayTrims", 2 ), + YAML_UNSIGNED( "ignoreSensorIds", 1 ), + YAML_SIGNED( "trimInc", 3 ), + YAML_UNSIGNED( "disableThrottleWarning", 1 ), + YAML_UNSIGNED( "displayChecklist", 1 ), + YAML_UNSIGNED( "extendedLimits", 1 ), + YAML_UNSIGNED( "extendedTrims", 1 ), + YAML_UNSIGNED( "throttleReversed", 1 ), + YAML_UNSIGNED( "enableCustomThrottleWarning", 1 ), + YAML_UNSIGNED( "disableTelemetryWarning", 1 ), + YAML_UNSIGNED( "showInstanceIds", 1 ), + YAML_UNSIGNED( "checklistInteractive", 1 ), + YAML_PADDING( 4 ), + YAML_SIGNED( "customThrottleWarningPosition", 8 ), + YAML_UNSIGNED( "beepANACenter", 16 ), + YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL), + YAML_ARRAY("limitData", 104, 32, struct_LimitData, NULL), + YAML_ARRAY("expoData", 136, 64, struct_ExpoData, NULL), + YAML_ARRAY("curves", 32, 32, struct_CurveHeader, NULL), + YAML_ARRAY("points", 8, 512, struct_signed_8, NULL), + YAML_ARRAY("logicalSw", 72, 64, struct_LogicalSwitchData, NULL), + YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), + YAML_STRUCT("swashR", 64, struct_SwashRingData, swash_is_active), + YAML_ARRAY("flightModeData", 352, 9, struct_FlightModeData, fmd_is_active), + YAML_UNSIGNED_CUST( "thrTraceSrc", 8, r_thrSrc, w_thrSrc ), + YAML_CUSTOM("switchWarningState",r_swtchWarn,nullptr), + YAML_ARRAY("switchWarning", 3, 21, struct_swtchWarn, nullptr), + YAML_PADDING(1), + YAML_ARRAY("gvars", 56, 9, struct_GVarData, NULL), + YAML_STRUCT("varioData", 40, struct_VarioData, NULL), + YAML_UNSIGNED_CUST( "rssiSource", 8, r_tele_sensor, w_tele_sensor ), + YAML_STRUCT("rssiAlarms", 0, struct_RssiAlarmData, NULL), + YAML_STRUCT("rfAlarms", 16, struct_RFAlarmData, NULL), + YAML_UNSIGNED( "thrTrimSw", 3 ), + YAML_ENUM("potsWarnMode", 2, enum_PotsWarnMode), + YAML_ENUM("jitterFilter", 2, enum_ModelOverridableEnable), + YAML_PADDING( 1 ), + YAML_ARRAY("moduleData", 232, 2, struct_ModuleData, NULL), + YAML_ARRAY("failsafeChannels", 16, 32, struct_signed_16, NULL), + YAML_STRUCT("trainerData", 40, struct_TrainerModuleData, NULL), + YAML_ARRAY("scriptsData", 192, 9, struct_ScriptData, NULL), + YAML_ARRAY("inputNames", 32, 32, struct_string_32, NULL), + YAML_UNSIGNED( "potsWarnEnabled", 16 ), + YAML_ARRAY("potsWarnPosition", 8, 16, struct_signed_8, NULL), + YAML_ARRAY("telemetrySensors", 112, 60, struct_TelemetrySensor, NULL), + YAML_ARRAY("screenData", 6816, 10, struct_CustomScreenData, NULL), + YAML_STRUCT("topbarData", 3552, struct_TopBarPersistentData, NULL), + YAML_UNSIGNED( "view", 8 ), + YAML_STRING("modelRegistrationID", 8), + YAML_UNSIGNED( "functionSwitchConfig", 16 ), + YAML_UNSIGNED( "functionSwitchGroup", 16 ), + YAML_UNSIGNED( "functionSwitchStartConfig", 16 ), + YAML_UNSIGNED( "functionSwitchLogicalState", 8 ), + YAML_ARRAY("switchNames", 24, 6, struct_string_24, NULL), + YAML_UNSIGNED( "usbJoystickExtMode", 1 ), + YAML_ENUM("usbJoystickIfMode", 3, enum_USBJoystickIfMode), + YAML_UNSIGNED( "usbJoystickCircularCut", 4 ), + YAML_ARRAY("usbJoystickCh", 16, 26, struct_USBJoystickChData, NULL), + YAML_ENUM("radioThemesDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("radioGFDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("radioTrainerDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("modelHeliDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("modelFMDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("modelCurvesDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("modelGVDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("modelLSDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable), + YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable), + YAML_END +}; +static const struct YamlNode struct_PartialModel[] = { + YAML_STRUCT("header", 1048, struct_ModelHeader, NULL), + YAML_ARRAY("timers", 136, 3, struct_TimerData, NULL), + YAML_END +}; + +#define MAX_RADIODATA_MODELDATA_PARTIALMODEL_STR_LEN 29 + +static const struct YamlNode __RadioData_root_node = YAML_ROOT( struct_RadioData ); + +const YamlNode* get_radiodata_nodes() +{ + return &__RadioData_root_node; +} +static const struct YamlNode __ModelData_root_node = YAML_ROOT( struct_ModelData ); + +const YamlNode* get_modeldata_nodes() +{ + return &__ModelData_root_node; +} +static const struct YamlNode __PartialModel_root_node = YAML_ROOT( struct_PartialModel ); + +const YamlNode* get_partialmodel_nodes() +{ + return &__PartialModel_root_node; +} + diff --git a/radio/src/switches.h b/radio/src/switches.h index f04ddd9da..a4e4a86b0 100644 --- a/radio/src/switches.h +++ b/radio/src/switches.h @@ -89,10 +89,18 @@ SwitchConfig switchGetMaxType(uint8_t idx); void logicalSwitchesInit(bool force); #if defined(FUNCTION_SWITCHES) +void setFSStartupPosition(); +void evalFunctionSwitches(); uint8_t getFSLogicalState(uint8_t index); void setFSLogicalState(uint8_t index, uint8_t value); bool groupHasSwitchOn(uint8_t group); int firstSwitchInGroup(uint8_t group); int groupDefaultSwitch(uint8_t group); void setGroupSwitchState(uint8_t group, int defaultSwitch = -1); +uint8_t getFSPhysicalState(uint8_t index); + +//led_driver.cpp +void fsLedOff(uint8_t); +void fsLedOn(uint8_t); +bool getFSLedState(uint8_t index); #endif diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 798b25bd4..c753f623d 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -54,7 +54,7 @@ if (PCB STREQUAL X10) ${FIRMWARE_SRC} targets/common/arm/stm32/audio_dac_driver.cpp ) - if (NOT PCBREV STREQUAL TX16S) + if (NOT (PCBREV STREQUAL TX16S OR PCBREV STREQUAL T15)) set(FIRMWARE_SRC ${FIRMWARE_SRC} targets/common/arm/stm32/sticks_pwm_driver.cpp @@ -71,6 +71,18 @@ if (PCB STREQUAL X10) add_definitions(-DHARDWARE_POWER_MANAGEMENT_UNIT) add_definitions(-DRADIO_X10E) add_definitions(-DMANUFACTURER_FRSKY) + elseif (PCBREV STREQUAL T15) + set(FLAVOUR t15) + add_definitions(-DRADIO_T15) + add_definitions(-DRADIO_FAMILY_T16) + set(FUNCTION_SWITCHES ON) + set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") + option(BLUETOOTH "Support for bluetooth module" OFF) + option(INTERNAL_GPS "Support for internal NMEA GPS" OFF) + set(AUX_SERIAL ON) + set(AUX2_SERIAL OFF) + add_definitions(-DMANUFACTURER_JUMPER) + set(LCD_DRIVER lcd_st7796s_driver.cpp) elseif (PCBREV STREQUAL T16) set(FLAVOUR t16) add_definitions(-DRADIO_T16) @@ -158,6 +170,10 @@ add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS) set(SDRAM ON) +if(FUNCTION_SWITCHES) +add_definitions(-DFUNCTION_SWITCHES) +endif() + if(NOT UNEXPECTED_SHUTDOWN) add_definitions(-DNO_UNEXPECTED_SHUTDOWN) endif() @@ -206,7 +222,12 @@ endif() set(GVAR_SCREEN model_gvars.cpp) if(HARDWARE_TOUCH) - set(TOUCH_DRIVER tp_gt911.cpp) + if(FLAVOUR STREQUAL t15) + set(TOUCH_DRIVER cst8xx_driver.cpp) + else() + set(TOUCH_DRIVER tp_gt911.cpp) + add_definitions(-DTP_GT911) + endif() add_definitions(-DHARDWARE_TOUCH) endif() diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 51b837db5..3a18498f4 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -65,6 +65,52 @@ void boardInit() #endif pwrInit(); + +#if defined(FUNCTION_SWITCHES) && !defined(DEBUG_SEGGER_RTT) +#if defined(RADIO_T15) +#define LEDCHARGEON(x) fsLedOff(x) +#define LEDCHARGEOFF(x) fsLedOn(x) +#else +#define LEDCHARGEON(x) fsLedOn(x) +#define LEDCHARGEOFF(x) fsLedOff(x) +#endif + // This is needed to prevent radio from starting when usb is plugged to charge + usbInit(); + ledInit(); + // prime debounce state... + usbPlugged(); + if (usbPlugged()) { + delaysInit(); + adcInit(&_adc_driver); + getADC(); + pwrOn(); // required to get bat adc reads + INTERNAL_MODULE_OFF(); + EXTERNAL_MODULE_OFF(); + for (uint8_t i=0; i < NUM_FUNCTIONS_SWITCHES; i++) + LEDCHARGEOFF(i); + while (usbPlugged()) { + // Let it charge ... + getADC(); // Warning: the value read does not include VBAT calibration + // Also, MCU is running which create a drop vs off + if (getBatteryVoltage() >= 660) + LEDCHARGEON(0); + if (getBatteryVoltage() >= 700) + LEDCHARGEON(1); + if (getBatteryVoltage() >= 740) + LEDCHARGEON(2); + if (getBatteryVoltage() >= 780) + LEDCHARGEON(3); + if (getBatteryVoltage() >= 810) + LEDCHARGEON(4); + if (getBatteryVoltage() >= 820) + LEDCHARGEON(5); + delay_ms(1000); + } + while(1) // Wait power to drain + pwrOff(); + } +#endif + boardInitModulePorts(); #if defined(INTMODULE_HEARTBEAT) && \ diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index c3fa6ef13..c4264f2c6 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -74,6 +74,10 @@ enum { // X10 PCBREV_X10_STD = 0, PCBREV_X10_EXPRESS = 3, + + //T15 + PCBREV_T15_STD = 0, + PCBREV_T15_IPS = 1, }; #if defined(SIMU) @@ -145,10 +149,6 @@ uint32_t isBootloaderStart(const uint8_t * buffer); #define IS_PXX1_INTERNAL_ENABLED() (true) #endif -#if !defined(NUM_FUNCTIONS_SWITCHES) -#define NUM_FUNCTIONS_SWITCHES 0 -#endif - // POTS and SLIDERS default configuration #if defined(RADIO_TX16S) #define XPOS_CALIB_DEFAULT {0x3, 0xc, 0x15, 0x1e, 0x26} @@ -159,6 +159,10 @@ uint32_t isBootloaderStart(const uint8_t * buffer); #define NUM_TRIMS_KEYS (NUM_TRIMS * 2) // Battery driver +#if defined(RADIO_T15) +#define VOLTAGE_DROP 65 +#endif + #if defined(PCBX10) // Lipo 2S #define BATTERY_WARN 66 // 6.6V @@ -320,6 +324,26 @@ void bluetoothDisable(); #define BATTERY_DIVIDER 1495 #else #define BATTERY_DIVIDER 1629 -#endif +#endif + +#if defined(FUNCTION_SWITCHES) +#define NUM_FUNCTIONS_SWITCHES 6 +#define DEFAULT_FS_CONFIG \ + (SWITCH_2POS << 10) + (SWITCH_2POS << 8) + (SWITCH_2POS << 6) + \ + (SWITCH_2POS << 4) + (SWITCH_2POS << 2) + (SWITCH_2POS << 0) + +#define DEFAULT_FS_GROUPS \ + (1 << 10) + (1 << 8) + (1 << 6) + (1 << 4) + (1 << 2) + \ + (1 << 0) // Set all FS to group 1 to act like a 6pos + +#define DEFAULT_FS_STARTUP_CONFIG \ + ((FS_START_PREVIOUS << 10) + (FS_START_PREVIOUS << 8) + \ + (FS_START_PREVIOUS << 6) + (FS_START_PREVIOUS << 4) + \ + (FS_START_PREVIOUS << 2) + \ + (FS_START_PREVIOUS << 0)) // keep last state by default + +#else +#define NUM_FUNCTIONS_SWITCHES 0 +#endif #endif // _BOARD_H_ diff --git a/radio/src/targets/horus/bootloader/boot_menu.cpp b/radio/src/targets/horus/bootloader/boot_menu.cpp index 9536a762f..32530d65c 100644 --- a/radio/src/targets/horus/bootloader/boot_menu.cpp +++ b/radio/src/targets/horus/bootloader/boot_menu.cpp @@ -61,7 +61,7 @@ static void bootloaderDrawTitle(unsigned int x, const char* text) static void bootloaderDrawFooter() { - lcd->drawSolidFilledRect(28, 234, 422, 2, BL_FOREGROUND); + lcd->drawSolidFilledRect(28, LCD_H - 38, 422, 2, BL_FOREGROUND); } static void bootloaderDrawBackground() @@ -94,17 +94,17 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) pos -= 92; lcd->drawSolidRect(92, (opt == 0) ? 72 : 107, pos, 26, 2, BL_SELECTED); - lcd->drawBitmap(60, 166, (const BitmapBuffer*)&BMP_PLUG_USB); - lcd->drawText(195, 175, TR_BL_USB_PLUGIN, BL_FOREGROUND); - lcd->drawText(195, 200, TR_BL_USB_MASS_STORE, BL_FOREGROUND); + lcd->drawBitmap(60, LCD_H - 106, (const BitmapBuffer*)&BMP_PLUG_USB); + lcd->drawText(195, LCD_H - 97, TR_BL_USB_PLUGIN, BL_FOREGROUND); + lcd->drawText(195, LCD_H - 72, TR_BL_USB_MASS_STORE, BL_FOREGROUND); bootloaderDrawFooter(); - lcd->drawText(LCD_W / 2, 242, getFirmwareVersion(), CENTERED | BL_FOREGROUND); + lcd->drawText(LCD_W / 2, LCD_H - 30, getFirmwareVersion(), CENTERED | BL_FOREGROUND); } else if (st == ST_USB) { - - lcd->drawBitmap(136, 98, (const BitmapBuffer*)&BMP_USB_PLUGGED); - lcd->drawText(195, 128, TR_BL_USB_CONNECTED, BL_FOREGROUND); + coord_t y = (LCD_H - BMP_USB_PLUGGED.height()) / 2; + lcd->drawBitmap(136, y, (const BitmapBuffer*)&BMP_USB_PLUGGED); + lcd->drawText(195, y + 30, TR_BL_USB_CONNECTED, BL_FOREGROUND); } else if (st == ST_FILE_LIST || st == ST_DIR_CHECK || st == ST_FLASH_CHECK || st == ST_FLASHING || st == ST_FLASH_DONE) { @@ -119,8 +119,8 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) opt = 100; // Completed > 100% } - lcd->drawRect(70, 120, 340, 31, 2, SOLID, BL_SELECTED); - lcd->drawSolidFilledRect(74, 124, (332 * opt) / 100, 23, color); + lcd->drawRect(70, (LCD_H - 31) / 2, 340, 31, 2, SOLID, BL_SELECTED); + lcd->drawSolidFilledRect(74, (LCD_H - 31) / 2 + 4, (332 * opt) / 100, 23, color); } else if (st == ST_DIR_CHECK) { if (opt == FR_NO_PATH) { lcd->drawText(90, 168, LV_SYMBOL_CLOSE TR_BL_DIR_MISSING, @@ -162,25 +162,25 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) if ( st != ST_DIR_CHECK && (st != ST_FLASH_CHECK || opt == FC_OK)) { - lcd->drawText(28, 242, LV_SYMBOL_CHARGE, BL_FOREGROUND); + lcd->drawText(28, LCD_H - 30, LV_SYMBOL_CHARGE, BL_FOREGROUND); if (st == ST_FILE_LIST) { - lcd->drawText(56, 244, TR_BL_SELECT_KEY, BL_FOREGROUND); + lcd->drawText(56, LCD_H - 28, TR_BL_SELECT_KEY, BL_FOREGROUND); } else if (st == ST_FLASH_CHECK && opt == FC_OK) { - lcd->drawText(56, 244, TR_BL_FLASH_KEY, BL_FOREGROUND); + lcd->drawText(56, LCD_H - 28, TR_BL_FLASH_KEY, BL_FOREGROUND); } else if (st == ST_FLASHING) { - lcd->drawText(56, 244, TR_BL_WRITING_FW, BL_FOREGROUND); + lcd->drawText(56, LCD_H - 28, TR_BL_WRITING_FW, BL_FOREGROUND); } else if (st == ST_FLASH_DONE) { - lcd->drawText(56, 244, TR_BL_WRITING_COMPL, BL_FOREGROUND); + lcd->drawText(56, LCD_H - 28, TR_BL_WRITING_COMPL, BL_FOREGROUND); } } if (st != ST_FLASHING) { - lcd->drawText(305, 244, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); - lcd->drawText(335, 244, TR_BL_EXIT_KEY, BL_FOREGROUND); + lcd->drawText(305, LCD_H - 28, LV_SYMBOL_NEW_LINE, BL_FOREGROUND); + lcd->drawText(335, LCD_H - 28, TR_BL_EXIT_KEY, BL_FOREGROUND); } } diff --git a/radio/src/targets/horus/cst8xx_driver.cpp b/radio/src/targets/horus/cst8xx_driver.cpp new file mode 100644 index 000000000..f0745d428 --- /dev/null +++ b/radio/src/targets/horus/cst8xx_driver.cpp @@ -0,0 +1,290 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "cst8xx_driver.h" + +#include "debug.h" +#include "delays_driver.h" +#include "hal.h" +#include "hal/gpio.h" +#include "rtos.h" +#include "stm32_exti_driver.h" +#include "stm32_gpio.h" +#include "stm32_gpio_driver.h" +#include "stm32_hal.h" +#include "stm32_hal_ll.h" +#include "stm32_i2c_driver.h" +#include "timers_driver.h" + +volatile static bool touchEventOccured; + +#define TOUCH_CST836U_I2C_ADDRESS (0x15) + +static tc_handle_TypeDef tc_handle = {0, 0}; + +tmr10ms_t downTime = 0; +tmr10ms_t tapTime = 0; +short tapCount = 0; +#define TAP_TIME 250 // ms + +static TouchState internalTouchState = {}; + +static void _cst836u_exti_isr(void) { touchEventOccured = true; } + +static void TouchAFExtiConfig(void) +{ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + LL_SYSCFG_SetEXTISource(TOUCH_INT_EXTI_Port, TOUCH_INT_EXTI_SysCfgLine); + + stm32_exti_enable(TOUCH_INT_EXTI_Line, LL_EXTI_TRIGGER_FALLING, + _cst836u_exti_isr); +} + +void initTouchI2C(void) +{ + TRACE("CST836U I2C Init"); + + if (stm32_i2c_init(TOUCH_I2C_BUS, TOUCH_I2C_CLK_RATE) < 0) { + TRACE("CST836U ERROR: stm32_i2c_init failed"); + return; + } +} + +#define I2C_TIMEOUT_MAX 5 // 5 ms + +bool touch_i2c_read(uint8_t addr, uint8_t reg, uint8_t* data, uint8_t len) +{ + if (stm32_i2c_master_tx(TOUCH_I2C_BUS, addr, ®, 1, 3) < 0) return false; + delay_us(5); + if (stm32_i2c_master_rx(TOUCH_I2C_BUS, addr, data, len, I2C_TIMEOUT_MAX) < 0) + return false; + + return true; +} + +static uint8_t TS_IO_Read(uint8_t addr, uint8_t reg) +{ + uint8_t result; + uint8_t tryCount = 3; + while (!touch_i2c_read(addr, reg, &result, 1)) { + if (--tryCount == 0) break; + initTouchI2C(); + } + return result; +} + +static uint16_t TS_IO_ReadMultiple(uint8_t addr, uint8_t reg, uint8_t* buffer, + uint16_t length) +{ + uint8_t tryCount = 3; + while (!touch_i2c_read(addr, reg, buffer, length)) { + if (--tryCount == 0) break; + initTouchI2C(); + } + return 1; +} + +static void touch_cst836u_debug_info(void) +{ +#if defined(DEBUG) + TRACE("cst836u: fw ver 0x%02X %02X", + TS_IO_Read(TOUCH_CST836U_I2C_ADDRESS, CST836U_FW_VERSION_H_REG), + TS_IO_Read(TOUCH_CST836U_I2C_ADDRESS, CST836U_FW_VERSION_L_REG)); + TRACE("cst836u: module version 0x%02X", + TS_IO_Read(TOUCH_CST836U_I2C_ADDRESS, CST836U_MODULE_VERSION_REG)); + TRACE("cst836u: project name 0x%02X", + TS_IO_Read(TOUCH_CST836U_I2C_ADDRESS, CST836U_PROJECT_NAME_REG)); + TRACE("cst836u: chip type 0x%02X 0x%02X", + TS_IO_Read(TOUCH_CST836U_I2C_ADDRESS, CST836U_CHIP_TYPE_H_REG), + TS_IO_Read(TOUCH_CST836U_I2C_ADDRESS, CST836U_CHIP_TYPE_L_REG)); +#endif +} + +/** + * @brief Get the touch screen X and Y positions values + * Manage multi touch thanks to touch Index global + * variable 'tc_handle.currActiveTouchIdx'. + * @param DeviceAddr: Device address on communication Bus. + * @param X: Pointer to X position value + * @param Y: Pointer to Y position value + * @retval None. + */ +static void cst836u_TS_GetXY(uint16_t* X, uint16_t* Y, uint32_t* event) +{ + uint8_t regAddress = 0; + uint8_t dataxy[4]; + + if (tc_handle.currActiveTouchIdx < tc_handle.currActiveTouchNb) { + switch (tc_handle.currActiveTouchIdx) { + case 0: + regAddress = CST836U_TOUCH1_XH_REG; + break; + case 1: + regAddress = CST836U_TOUCH2_XH_REG; + break; + default: + break; + } + + /* Read X and Y positions */ + TS_IO_ReadMultiple(TOUCH_CST836U_I2C_ADDRESS, regAddress, dataxy, + sizeof(dataxy)); + /* Send back ready X position to caller */ + *X = ((dataxy[0] & CST836U_MSB_MASK) << 8) | dataxy[1]; + /* Send back ready Y position to caller */ + *Y = ((dataxy[2] & CST836U_MSB_MASK) << 8) | dataxy[3]; + + *event = (dataxy[0] & CST836U_TOUCH_EVT_FLAG_MASK) >> + CST836U_TOUCH_EVT_FLAG_SHIFT; + /* + uint32_t weight; + uint32_t area; + */ + tc_handle.currActiveTouchIdx++; + } +} + +/** + * @brief Return if there is touches detected or not. + * Try to detect new touches and forget the old ones (reset internal + * global variables). + * @param DeviceAddr: Device address on communication Bus. + * @retval : Number of active touches detected (can be 0, 1 or 2). + */ +static uint8_t cst836u_TS_DetectTouch() +{ + volatile uint8_t nbTouch = 0; + + /* Read register CST836U_TOUCH_NUM_REG to check number of touches detection */ + nbTouch = TS_IO_Read(TOUCH_CST836U_I2C_ADDRESS, CST836U_TOUCH_NUM_REG); + if (nbTouch > CST836U_MAX_DETECTABLE_TOUCH) { + /* If invalid number of touch detected, set it to zero */ + nbTouch = 0; + } + tc_handle.currActiveTouchNb = nbTouch; + + tc_handle.currActiveTouchIdx = 0; + return (nbTouch); +} + +void TouchReset() +{ + gpio_clear(TOUCH_RST_GPIO); + delay_ms(10); + gpio_set(TOUCH_RST_GPIO); + delay_ms(300); +} + +void touchPanelInit(void) +{ + gpio_init(TOUCH_RST_GPIO, GPIO_OUT, GPIO_PIN_SPEED_LOW); + initTouchI2C(); + TouchReset(); + TouchAFExtiConfig(); + touch_cst836u_debug_info(); +} + +void handleTouch() +{ + unsigned short touchX; + unsigned short touchY; + uint32_t tEvent = 0; + cst836u_TS_GetXY(&touchX, &touchY, &tEvent); + + if (tEvent == CST836U_TOUCH_EVT_FLAG_CONTACT) { + int dx = touchX - internalTouchState.x; + int dy = touchY - internalTouchState.y; + + internalTouchState.x = touchX; + internalTouchState.y = touchY; + + if (internalTouchState.event == TE_NONE || + internalTouchState.event == TE_UP || + internalTouchState.event == TE_SLIDE_END) { + internalTouchState.startX = internalTouchState.x; + internalTouchState.startY = internalTouchState.y; + internalTouchState.event = TE_DOWN; + } else if (internalTouchState.event == TE_DOWN) { + if (dx >= SLIDE_RANGE || dx <= -SLIDE_RANGE || dy >= SLIDE_RANGE || + dy <= -SLIDE_RANGE) { + internalTouchState.event = TE_SLIDE; + internalTouchState.deltaX = (short)dx; + internalTouchState.deltaY = (short)dy; + } else { + internalTouchState.event = TE_DOWN; + internalTouchState.deltaX = 0; + internalTouchState.deltaY = 0; + } + } else if (internalTouchState.event == TE_SLIDE) { + internalTouchState.event = TE_SLIDE; // no change + internalTouchState.deltaX = (short)dx; + internalTouchState.deltaY = (short)dy; + } + } +} + +bool touchPanelEventOccured() { return touchEventOccured; } + +TouchState touchPanelRead() +{ + if (!touchEventOccured) return internalTouchState; + + touchEventOccured = false; + + tmr10ms_t now = RTOS_GET_MS(); + internalTouchState.tapCount = 0; + + if (cst836u_TS_DetectTouch()) { + handleTouch(); + if (internalTouchState.event == TE_DOWN && downTime == 0) { + downTime = now; + } + } else { + if (internalTouchState.event == TE_DOWN) { + internalTouchState.event = TE_UP; + if (now - downTime <= TAP_TIME) { + if (now - tapTime > TAP_TIME) { + tapCount = 1; + } else { + tapCount++; + } + internalTouchState.tapCount = tapCount; + tapTime = now; + } else { + internalTouchState.tapCount = 0; // not a tap + } + downTime = 0; + } else { + tapCount = 0; + internalTouchState.tapCount = 0; + internalTouchState.event = TE_SLIDE_END; + } + } + TouchState ret = internalTouchState; + internalTouchState.deltaX = 0; + internalTouchState.deltaY = 0; + if (internalTouchState.event == TE_UP || + internalTouchState.event == TE_SLIDE_END) + internalTouchState.event = TE_NONE; + return ret; +} + +TouchState getInternalTouchState() { return internalTouchState; } diff --git a/radio/src/targets/horus/cst8xx_driver.h b/radio/src/targets/horus/cst8xx_driver.h new file mode 100644 index 000000000..086d73d00 --- /dev/null +++ b/radio/src/targets/horus/cst8xx_driver.h @@ -0,0 +1,110 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* + Copyright 2016 fishpepper gmail.com + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + author: fishpepper gmail.com +*/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* Set Multi-touch as non supported */ +#ifndef TS_MULTI_TOUCH_SUPPORTED +#define TS_MULTI_TOUCH_SUPPORTED 0 +#endif + +/* Set Auto-calibration as non supported */ +#ifndef TS_AUTO_CALIBRATION_SUPPORTED +#define TS_AUTO_CALIBRATION_SUPPORTED 0 +#endif + +/* Macros --------------------------------------------------------------------*/ + +/** @typedef ft6x06_handle_TypeDef + * ft6x06 Handle definition. + */ +typedef struct { + /* field holding the current number of simultaneous active touches */ + uint8_t currActiveTouchNb; + + /* field holding the touch index currently managed */ + uint8_t currActiveTouchIdx; + +} tc_handle_TypeDef; +/* clang-format off */ +#define CST836U_WORK_MODE_REG 0x00 +#define CST836U_PROXIMITY_ID_REG 0x01 +#define CST836U_TOUCH_NUM_REG 0x02 +#define CST836U_TOUCH1_XH_REG 0x03 +#define CST836U_TOUCH1_XL_REG 0x04 +#define CST836U_TOUCH1_YH_REG 0x05 +#define CST836U_TOUCH1_YL_REG 0x06 + +#define CST836U_TOUCH2_XH_REG 0x09 +#define CST836U_TOUCH2_XL_REG 0x0A +#define CST836U_TOUCH2_YH_REG 0x0B +#define CST836U_TOUCH2_YL_REG 0x0C + +#define CST836U_FW_VERSION_L_REG 0xA6 +#define CST836U_FW_VERSION_H_REG 0xA7 +#define CST836U_MODULE_VERSION_REG 0xA8 +#define CST836U_PROJECT_NAME_REG 0xA9 +#define CST836U_CHIP_TYPE_L_REG 0xAA +#define CST836U_CHIP_TYPE_H_REG 0xAB +#define CST836U_CHECKSUM_L_REG 0xAC +#define CST836U_CHECKSUM_H_REG 0xAD + +#define CST836U_PROX_STATE_REG 0xB0 +#define CST836U_GES_STATE_REG 0xD0 +#define CST836U_GES_ID_REG_REG 0xD3 + +#define CST836U_MAX_DETECTABLE_TOUCH 2 + +#define CST836U_MSB_MASK 0x0F + +#define CST836U_TOUCH_EVT_FLAG_SHIFT 6 +#define CST836U_TOUCH_EVT_FLAG_MASK (3 << CST836U_TOUCH_EVT_FLAG_SHIFT) +#define CST836U_TOUCH_EVT_FLAG_CONTACT 0x02 +/* clang-format on */ + +extern void TouchInit(void); +extern void TouchDriver(void); + +#ifdef __cplusplus +} +#endif diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index ee1aa9b38..421a9fe69 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -61,6 +61,19 @@ #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_7 // PI.07 #define KEYS_GPIO_REG_TELE GPIOI #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_5 // PI.05 +#elif defined(RADIO_T15) + #define KEYS_GPIO_REG_ENTER GPIOI + #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_8 // PI.08 + #define KEYS_GPIO_REG_PAGEDN GPIOI + #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_11 // PI.11 + #define KEYS_GPIO_REG_MDL GPIOI + #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_6 // PI.06 + #define KEYS_GPIO_REG_EXIT GPIOI + #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_5 // PI.05 + #define KEYS_GPIO_REG_SYS GPIOI + #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_7 // PI.07 + #define KEYS_GPIO_REG_TELE GPIOI + #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_4 // PI.04 #elif defined(PCBX10) #define KEYS_GPIO_REG_ENTER GPIOI #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_8 // PI.08 @@ -94,90 +107,188 @@ #define ROTARY_ENCODER_TIMER_IRQn TIM8_BRK_TIM12_IRQn #define ROTARY_ENCODER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler -#if defined(RADIO_FAMILY_T16) && !defined(RADIO_T18) +#if defined(RADIO_T15) + #define ROTARY_ENCODER_INVERTED +#endif + +#if defined(RADIO_FAMILY_T16) && !defined(RADIO_T18) && !defined(RADIO_T15) #define ROTARY_ENCODER_SUPPORT_BUGGY_WIRING #endif // Switches -#define STORAGE_SWITCH_A -#define HARDWARE_SWITCH_A -#define SWITCHES_GPIO_REG_A_H GPIOH -#define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_9 // PH.09 -#define SWITCHES_GPIO_REG_A_L GPIOI -#define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_15 // PI.15 -#define STORAGE_SWITCH_B -#define HARDWARE_SWITCH_B -#define SWITCHES_GPIO_REG_B_H GPIOH -#define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_12 // PH.12 -#define SWITCHES_GPIO_REG_B_L GPIOB -#define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_12 // PB.12 -#define STORAGE_SWITCH_C -#define HARDWARE_SWITCH_C -#define SWITCHES_GPIO_REG_C_H GPIOD -#define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_11 // PD.11 -#define SWITCHES_GPIO_REG_C_L GPIOB -#define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_15 // PB.15 -#define STORAGE_SWITCH_D -#define HARDWARE_SWITCH_D -#define SWITCHES_GPIO_REG_D_H GPIOJ -#define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_7 // PJ.07 -#define SWITCHES_GPIO_REG_D_L GPIOG -#define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_2 // PG.02 -#define STORAGE_SWITCH_E -#define HARDWARE_SWITCH_E -#define SWITCHES_GPIO_REG_E_H GPIOH -#define SWITCHES_GPIO_PIN_E_H LL_GPIO_PIN_4 // PH.04 -#define SWITCHES_GPIO_REG_E_L GPIOE -#define SWITCHES_GPIO_PIN_E_L LL_GPIO_PIN_3 // PE.03 -#define STORAGE_SWITCH_F -#define HARDWARE_SWITCH_F -#define SWITCHES_GPIO_REG_F GPIOH -#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_3 // PH.03 -#define STORAGE_SWITCH_G -#define HARDWARE_SWITCH_G -#define SWITCHES_GPIO_REG_G_H GPIOG -#define SWITCHES_GPIO_PIN_G_H LL_GPIO_PIN_6 // PG.06 -#define SWITCHES_GPIO_REG_G_L GPIOG -#define SWITCHES_GPIO_PIN_G_L LL_GPIO_PIN_3 // PG.03 -#define STORAGE_SWITCH_H -#define HARDWARE_SWITCH_H -#define SWITCHES_GPIO_REG_H GPIOG -#define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_7 // PG.07 +#if defined(RADIO_T15) + #define STORAGE_SWITCH_A + #define HARDWARE_SWITCH_A + #define SWITCHES_GPIO_REG_A_H GPIOG + #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_3 // PG.03 + #define SWITCHES_GPIO_REG_A_L GPIOD + #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_11 // PD.11 + #define SWITCHES_A_INVERTED -#if defined(PCBX12S) - #define SWITCHES_F_INVERTED -#elif defined(PCBX10) - #define SWITCHES_B_INVERTED - #define SWITCHES_D_INVERTED - #define SWITCHES_E_INVERTED -#endif + #define STORAGE_SWITCH_B + #define HARDWARE_SWITCH_B + #define SWITCHES_GPIO_REG_B_H GPIOB + #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_12 // PB.12 + #define SWITCHES_GPIO_REG_B_L GPIOH + #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_9 // PH.09 -#if defined(PCBX10) - // Gimbal switch left + #define STORAGE_SWITCH_C + #define HARDWARE_SWITCH_C + #define SWITCHES_GPIO_REG_C_H GPIOG + #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_2 // PG.02 + #define SWITCHES_GPIO_REG_C_L GPIOH + #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_14 // PH.14 + #define SWITCHES_C_INVERTED + + #define STORAGE_SWITCH_D + #define HARDWARE_SWITCH_D + #define SWITCHES_GPIO_REG_D_H GPIOI + #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_15 // PI.15 + #define SWITCHES_GPIO_REG_D_L GPIOH + #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_15 // PH.15 + + #define STORAGE_SWITCH_E + #define HARDWARE_SWITCH_E + #define SWITCHES_GPIO_REG_E GPIOB + #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_15 // PB.15 + #define STORAGE_SWITCH_F + #define HARDWARE_SWITCH_F + #define SWITCHES_GPIO_REG_F GPIOH + #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_12 // PH.12 + //SW1 + #define FUNCTION_SWITCH_1 SG + #define STORAGE_SWITCH_G + #define HARDWARE_SWITCH_G + #define SWITCHES_GPIO_REG_G GPIOB + #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_14 // PB.14 + //SW2 + #define FUNCTION_SWITCH_2 SH + #define STORAGE_SWITCH_H + #define HARDWARE_SWITCH_H + #define SWITCHES_GPIO_REG_H GPIOD + #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_13 // PD.13 + //SW3 + #define FUNCTION_SWITCH_3 SI #define STORAGE_SWITCH_I #define HARDWARE_SWITCH_I - #define SWITCHES_GPIO_REG_I GPIOH - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_14 // PH.14 - // Gimbal switch right + #define SWITCHES_GPIO_REG_I GPIOJ + #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_7 // PJ.07 + //SW4 + #define FUNCTION_SWITCH_4 SJ #define STORAGE_SWITCH_J #define HARDWARE_SWITCH_J - #define SWITCHES_GPIO_REG_J GPIOH - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_15 // PH.15 -#elif defined(PCBX12S) + #define SWITCHES_GPIO_REG_J GPIOG + #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_13 // PG.13 + //SW5 + #define FUNCTION_SWITCH_5 SK + #define STORAGE_SWITCH_K + #define HARDWARE_SWITCH_K + #define SWITCHES_GPIO_REG_K GPIOJ + #define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_8 // PJ.08 + //SW6 + #define FUNCTION_SWITCH_6 SL + #define STORAGE_SWITCH_L + #define HARDWARE_SWITCH_L + #define SWITCHES_GPIO_REG_L GPIOB + #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_13 // PB.13 +#else + #define STORAGE_SWITCH_A + #define HARDWARE_SWITCH_A + #define SWITCHES_GPIO_REG_A_H GPIOH + #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_9 // PH.09 + #define SWITCHES_GPIO_REG_A_L GPIOI + #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_15 // PI.15 + #define STORAGE_SWITCH_B + #define HARDWARE_SWITCH_B + #define SWITCHES_GPIO_REG_B_H GPIOH + #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_12 // PH.12 + #define SWITCHES_GPIO_REG_B_L GPIOB + #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_12 // PB.12 + #define STORAGE_SWITCH_C + #define HARDWARE_SWITCH_C + #define SWITCHES_GPIO_REG_C_H GPIOD + #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_11 // PD.11 + #define SWITCHES_GPIO_REG_C_L GPIOB + #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_15 // PB.15 + #define STORAGE_SWITCH_D + #define HARDWARE_SWITCH_D + #define SWITCHES_GPIO_REG_D_H GPIOJ + #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_7 // PJ.07 + #define SWITCHES_GPIO_REG_D_L GPIOG + #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_2 // PG.02 + #define STORAGE_SWITCH_E + #define HARDWARE_SWITCH_E + #define SWITCHES_GPIO_REG_E_H GPIOH + #define SWITCHES_GPIO_PIN_E_H LL_GPIO_PIN_4 // PH.04 + #define SWITCHES_GPIO_REG_E_L GPIOE + #define SWITCHES_GPIO_PIN_E_L LL_GPIO_PIN_3 // PE.03 + #define STORAGE_SWITCH_F + #define HARDWARE_SWITCH_F + #define SWITCHES_GPIO_REG_F GPIOH + #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_3 // PH.03 + #define STORAGE_SWITCH_G + #define HARDWARE_SWITCH_G + #define SWITCHES_GPIO_REG_G_H GPIOG + #define SWITCHES_GPIO_PIN_G_H LL_GPIO_PIN_6 // PG.06 + #define SWITCHES_GPIO_REG_G_L GPIOG + #define SWITCHES_GPIO_PIN_G_L LL_GPIO_PIN_3 // PG.03 + #define STORAGE_SWITCH_H + #define HARDWARE_SWITCH_H + #define SWITCHES_GPIO_REG_H GPIOG + #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_7 // PG.07 + + #if defined(PCBX12S) + #define SWITCHES_F_INVERTED + #elif defined(PCBX10) + #define SWITCHES_B_INVERTED + #define SWITCHES_D_INVERTED + #define SWITCHES_E_INVERTED + #endif + + #if defined(PCBX10) // Gimbal switch left - #define STORAGE_SWITCH_I - #define HARDWARE_SWITCH_I - #define SWITCHES_GPIO_REG_I GPIOB - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_1 // PB.01 - // Gimbal switch right - #define STORAGE_SWITCH_J - #define HARDWARE_SWITCH_J - #define SWITCHES_GPIO_REG_J GPIOB - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_0 // PB.00 + #define STORAGE_SWITCH_I + #define HARDWARE_SWITCH_I + #define SWITCHES_GPIO_REG_I GPIOH + #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_14 // PH.14 + // Gimbal switch right + #define STORAGE_SWITCH_J + #define HARDWARE_SWITCH_J + #define SWITCHES_GPIO_REG_J GPIOH + #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_15 // PH.15 + #elif defined(PCBX12S) + // Gimbal switch left + #define STORAGE_SWITCH_I + #define HARDWARE_SWITCH_I + #define SWITCHES_GPIO_REG_I GPIOB + #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_1 // PB.01 + // Gimbal switch right + #define STORAGE_SWITCH_J + #define HARDWARE_SWITCH_J + #define SWITCHES_GPIO_REG_J GPIOB + #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_0 // PB.00 + #endif #endif // Trims -#if defined(PCBX12S) +#if defined(RADIO_T15) + #define TRIMS_GPIO_REG_LHL GPIOD + #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PD.03 + #define TRIMS_GPIO_REG_LHR GPIOD + #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_7 // PD.07 + #define TRIMS_GPIO_REG_LVU GPIOJ + #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_12 // PJ.12 + #define TRIMS_GPIO_REG_LVD GPIOJ + #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_13 // PJ.13 + #define TRIMS_GPIO_REG_RVD GPIOG + #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_12 // PG.12 + #define TRIMS_GPIO_REG_RHL GPIOA + #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_6 // PA.06 + #define TRIMS_GPIO_REG_RVU GPIOJ + #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_14 // PJ.14 + #define TRIMS_GPIO_REG_RHR GPIOC + #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_4 // PC.04 +#elif defined(PCBX12S) #define TRIMS_GPIO_REG_RHL GPIOC #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_0 // PC.00 #define TRIMS_GPIO_REG_RHR GPIOI @@ -287,21 +398,36 @@ #define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES #define ADC_VREF_PREC2 600 #elif defined(PCBX10) +#if defined(RADIO_T15) + #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_1 // PA.01 + #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_0 // PA.00 + #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_2 // PA.02 + #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_3 // PA.03 + #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_2 // PC.02 + #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_0 // PC.00 + #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_12 // ADC3_IN12 + #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_10 // ADC3_IN10 +#else #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_1 // PA.01 #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_3 // PA.03 #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_2 // PA.02 #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PC.00 #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PC.01 + #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_10 // ADC3_IN10 + #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_11 // ADC3_IN11 +#endif + #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_7 // PF.07 +#if !defined(RADIO_T15) #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_2 // PC.02 // #define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_6 // PF.06 #define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_3 // PC.03 // - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_7 // PF.07 #define ADC_GPIO_PIN_EXT1 LL_GPIO_PIN_8 // PF.08 #define ADC_GPIO_PIN_EXT2 LL_GPIO_PIN_9 // PF.09 #define ADC_GPIO_PIN_EXT3 ADC_GPIO_PIN_STICK_RH #define ADC_GPIO_PIN_EXT4 ADC_GPIO_PIN_STICK_RV - #if !defined(RADIO_TX16S) +#endif + #if !defined(RADIO_TX16S) && !defined(RADIO_T15) #define PWM_STICKS #define PWM_TIMER TIM5 #define PWM_GPIO GPIOA @@ -314,24 +440,38 @@ #define STICK_PWM_CHANNEL_RV 3 #define STICK_PWM_CHANNEL_RH 2 #endif - #define ADC_GPIOA_PINS_FS (LL_GPIO_PIN_2 | LL_GPIO_PIN_3) - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_RV) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_SLIDER2) - #define ADC_GPIOF_PINS (ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_BATT | ADC_GPIO_PIN_EXT1 | ADC_GPIO_PIN_EXT2) +#if defined(RADIO_T15) + #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_1 // ADC3_IN1 + #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_0 // ADC3_IN0 + #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_3 // ADC3_IN3 + #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_2 // ADC3_IN2 + #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_5 // ADC3_IN5 +#else #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_0 // ADC3_IN0 #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_1 // ADC3_IN1 #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_2 // ADC3_IN2 #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_3 // ADC3_IN3 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_10 // ADC3_IN10 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_11 // ADC3_IN11 + #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_5 // ADC3_IN5 +#endif +#if !defined(RADIO_T15) #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_12 // ADC3_IN12 #define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_4 // ADC3_IN4 #define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_13 // ADC3_IN13 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_5 // ADC3_IN5 #define ADC_CHANNEL_EXT1 LL_ADC_CHANNEL_6 // ADC3_IN6 #define ADC_CHANNEL_EXT2 LL_ADC_CHANNEL_7 // ADC3_IN7 #define ADC_CHANNEL_EXT3 LL_ADC_CHANNEL_2 // ADC3_IN2: same as RH #define ADC_CHANNEL_EXT4 LL_ADC_CHANNEL_3 // ADC3_IN3: same as RV +#endif +#if defined(RADIO_T15) + #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_RV) + #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2) + #define ADC_GPIOF_PINS (ADC_GPIO_PIN_BATT) +#else + #define ADC_GPIOA_PINS_FS (LL_GPIO_PIN_2 | LL_GPIO_PIN_3) + #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_RV) + #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_SLIDER2) + #define ADC_GPIOF_PINS (ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_BATT | ADC_GPIO_PIN_EXT1 | ADC_GPIO_PIN_EXT2) +#endif #define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN18 #define ADC_MAIN ADC3 #define ADC_EXT ADC1 @@ -345,7 +485,7 @@ #define ADC_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler // VBat divider is /4 on F42x and F43x devices - #if defined(RADIO_TX16S) + #if defined(RADIO_TX16S) || defined(RADIO_T15) #define ADC_VREF_PREC2 660 #elif defined(RADIO_T16) || defined(RADIO_T18) #define ADC_VREF_PREC2 600 @@ -354,7 +494,9 @@ #endif #endif -#if defined(RADIO_T16) +#if defined(RADIO_T15) + #define ADC_DIRECTION {1,-1,1,-1, 1,1} +#elif defined(RADIO_T16) #define ADC_DIRECTION {1,-1,1,-1, 1,1,1, -1,1,1,1, -1,1 } #elif defined(RADIO_T18) #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1, -1,1,1,1, -1,1 } @@ -392,12 +534,16 @@ #define SPORT_MAX_BAUDRATE 250000 // < 400000 #endif -#if defined(PCBX10) && !defined(RADIO_FAMILY_T16) +#if defined(PCBX10) && !defined(RADIO_FAMILY_T16) && !defined(RADIO_T15) #define SPORT_UPDATE_PWR_GPIO GPIO_PIN(GPIOH, 13) // PH.13 #endif // PCBREV -#if defined(PCBX10) +#if defined(RADIO_T15) + #define PCBREV_GPIO_1 GPIO_PIN(GPIOH, 7) // PH.07 + #define PCBREV_GPIO_2 GPIO_PIN(GPIOH, 8) // PH.08 + #define PCBREV_VALUE() ((gpio_read(PCBREV_GPIO_1) | gpio_read(PCBREV_GPIO_2)) >> 7) +#elif defined(PCBX10) #define PCBREV_GPIO_1 GPIO_PIN(GPIOH, 7) // PH.07 #define PCBREV_GPIO_2 GPIO_PIN(GPIOH, 8) // PH.08 #define PCBREV_TOUCH_GPIO GPIO_PIN(GPIOA, 6) // PA.06 @@ -412,12 +558,26 @@ #define STATUS_LEDS #if defined(PCBX12S) #define LED_GPIO GPIO_PIN(GPIOI, 5) // PI.05 +#elif defined(RADIO_T15) + #define LED_RED_GPIO GPIO_PIN(GPIOI, 14) //PI.14 + #define LED_GREEN_GPIO GPIO_PIN(GPIOC, 13) //PC.13 + #define LED_BLUE_GPIO GPIO_PIN(GPIOE, 3) //PE.03 #elif defined(PCBX10) #define LED_RED_GPIO GPIO_PIN(GPIOE, 2) // PE.02 #define LED_GREEN_GPIO GPIO_PIN(GPIOE, 4) // PE.04 #define LED_BLUE_GPIO GPIO_PIN(GPIOE, 5) // PE.05 #endif +// Customisable switches leds +#if defined(RADIO_T15) +#define FSLED_GPIO_1 GPIO_PIN(GPIOA, 15) //PA.15 +#define FSLED_GPIO_2 GPIO_PIN(GPIOC, 5) //PC.05 +#define FSLED_GPIO_3 GPIO_PIN(GPIOH, 13) //PH.13 +#define FSLED_GPIO_4 GPIO_PIN(GPIOG, 11) //PG.11 +#define FSLED_GPIO_5 GPIO_PIN(GPIOC, 3) //PC.03 +#define FSLED_GPIO_6 GPIO_PIN(GPIOC, 1) //PC.01 +#endif + // Serial Port (DEBUG) #if defined(AUX_SERIAL) #define AUX_SERIAL_TX_GPIO GPIO_PIN(GPIOB, 10) // PB.10 @@ -507,6 +667,20 @@ #define USB_GPIO_AF GPIO_AF10 // LCD +#if defined(RADIO_T15) + #define LCD_RCC_AHB1Periph (LL_AHB1_GRP1_PERIPH_GPIOE | LL_AHB1_GRP1_PERIPH_GPIOG | LL_AHB1_GRP1_PERIPH_GPIOI | LL_AHB1_GRP1_PERIPH_GPIOJ | LL_AHB1_GRP1_PERIPH_GPIOK | LL_AHB1_GRP1_PERIPH_DMA2D) + #define LCD_RCC_APB1Periph 0 + #define LCD_RCC_APB2Periph LL_APB2_GRP1_PERIPH_LTDC + #define LCD_NRST_GPIO GPIOG + #define LCD_NRST_GPIO_PIN LL_GPIO_PIN_10 // PG.10 + #define LCD_SPI_GPIO GPIOE + #define LCD_SPI_CS_GPIO_PIN LL_GPIO_PIN_4 // PE.04 + #define LCD_SPI_SCK_GPIO_PIN LL_GPIO_PIN_2 // PE.02 + #define LCD_SPI_MISO_GPIO_PIN LL_GPIO_PIN_5 // PE.05 + #define LCD_SPI_MOSI_GPIO_PIN LL_GPIO_PIN_6 // PE.06 + #define LTDC_IRQ_PRIO 4 + #define DMA_SCREEN_IRQ_PRIO 6 +#else #define LCD_RCC_AHB1Periph LL_AHB1_GRP1_PERIPH_DMA2D #define LCD_RCC_APB2Periph LL_APB2_GRP1_PERIPH_LTDC #if defined(PCBX12S) @@ -519,6 +693,7 @@ #endif #define LTDC_IRQ_PRIO 4 #define DMA_SCREEN_IRQ_PRIO 6 +#endif // Backlight #if defined(PCBX12S) @@ -545,7 +720,9 @@ #endif // SD +#if !defined(RADIO_T15) #define SD_PRESENT_GPIO GPIO_PIN(GPIOC, 5) // PC.05 +#endif #define SD_SDIO_DMA DMA2 #define SD_SDIO_DMA_STREAM DMA2_Stream3 // or Stream6 #define SD_SDIO_DMA_CHANNEL LL_DMA_CHANNEL_4 @@ -675,7 +852,7 @@ #endif // HARDWARE_TOUCH // First I2C Bus -#if defined(RADIO_TX16S) || defined(PCBX12S) +#if defined(RADIO_TX16S) || defined(PCBX12S) || defined(RADIO_T15) #define I2C_B1 I2C1 #define I2C_B1_GPIO GPIOB #define I2C_B1_SCL_GPIO_PIN LL_GPIO_PIN_8 // PB.08 @@ -722,6 +899,13 @@ #define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC1E #define HAPTIC_TIMER_MODE TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 #define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR1 +#elif defined(RADIO_T15) // TIM2_CH1 + #define HAPTIC_GPIO GPIO_PIN(GPIOA, 5) // PA.05 + #define HAPTIC_GPIO_TIMER TIM2 + #define HAPTIC_GPIO_AF GPIO_AF1 + #define HAPTIC_TIMER_OUTPUT_ENABLE TIM_CCER_CC1E | TIM_CCER_CC1NE; + #define HAPTIC_TIMER_MODE TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE + #define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR1 #elif defined(PCBX10) #define HAPTIC_GPIO GPIO_PIN(GPIOE, 6) // PE.06 #define HAPTIC_GPIO_TIMER TIM9 @@ -904,10 +1088,18 @@ #define PORTRAIT_LCD false #define LANDSCAPE_LCD true +#if defined(RADIO_T15) +#define LCD_W 480 +#define LCD_H 320 +#define LCD_PHYS_H LCD_H +#define LCD_PHYS_W LCD_W +#define LCD_DEPTH 16 +#else #define LCD_W 480 #define LCD_H 272 #define LCD_PHYS_H LCD_H #define LCD_PHYS_W LCD_W #define LCD_DEPTH 16 +#endif #endif // _HAL_H_ diff --git a/radio/src/targets/horus/lcd_st7796s_driver.cpp b/radio/src/targets/horus/lcd_st7796s_driver.cpp new file mode 100644 index 000000000..3d9b12af0 --- /dev/null +++ b/radio/src/targets/horus/lcd_st7796s_driver.cpp @@ -0,0 +1,460 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "lcd_st7796s_driver.h" + +#include "board.h" +#include "debug.h" +#include "delays_driver.h" +#include "dma2d.h" +#include "hal.h" +#include "lcd.h" +#include "opentx_types.h" +#include "stm32_hal.h" +#include "stm32_hal_ll.h" + +static LTDC_HandleTypeDef hltdc; +static void* initialFrameBuffer = nullptr; + +static volatile uint8_t _frame_addr_reloaded = 0; + +static void startLcdRefresh(lv_disp_drv_t* disp_drv, uint16_t* buffer, + const rect_t& copy_area) +{ + (void)disp_drv; + (void)copy_area; + + LTDC_Layer1->CFBAR &= ~(LTDC_LxCFBAR_CFBADD); + LTDC_Layer1->CFBAR = (uint32_t)buffer; + // reload shadow registers on vertical blank + _frame_addr_reloaded = 0; + LTDC->SRCR = LTDC_SRCR_VBR; + __HAL_LTDC_ENABLE_IT(&hltdc, LTDC_IT_LI); + + // wait for reload + // TODO: replace through some smarter mechanism without busy wait + while (_frame_addr_reloaded == 0); +} + +uint32_t lcdPixelClock; + +static void LCD_AF_GPIOConfig(void) +{ + /* + ----------------------------------------------------------------------------- + LCD_CLK <-> PG.07 | LCD_HSYNC <-> PI.12 | LCD_R3 <-> PJ.02 | LCD_G5 <-> PK.00 + | LCD VSYNC <-> PI.13 | LCD_R4 <-> PJ.03 | LCD_G6 <-> PK.01 + | | LCD_R5 <-> PJ.04 | LCD_G7 <-> PK.02 + | | LCD_R6 <-> PJ.05 | LCD_B4 <-> PK.03 + | | LCD_R7 <-> PJ.06 | LCD_B5 <-> PK.04 + | | LCD_G2 <-> PJ.09 | LCD_B6 <-> PK.05 + | | LCD_G3 <-> PJ.10 | LCD_B7 <-> PK.06 + | | LCD_G4 <-> PJ.11 | LCD_DE <-> PK.07 + | | LCD_B3 <-> PJ.15 | + */ + + LL_GPIO_InitTypeDef GPIO_InitStructure; + LL_GPIO_StructInit(&GPIO_InitStructure); + + // GPIOG configuration + GPIO_InitStructure.Pin = LL_GPIO_PIN_7; + GPIO_InitStructure.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStructure.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStructure.Pull = LL_GPIO_PULL_NO; + GPIO_InitStructure.Alternate = LL_GPIO_AF_14; // AF LTDC + LL_GPIO_Init(GPIOG, &GPIO_InitStructure); + + // GPIOI configuration + GPIO_InitStructure.Pin = LL_GPIO_PIN_12 | LL_GPIO_PIN_13; + LL_GPIO_Init(GPIOI, &GPIO_InitStructure); + + // GPIOJ configuration + GPIO_InitStructure.Pin = LL_GPIO_PIN_2 | LL_GPIO_PIN_3 | LL_GPIO_PIN_4 | + LL_GPIO_PIN_5 | LL_GPIO_PIN_6 | LL_GPIO_PIN_9 | + LL_GPIO_PIN_10 | LL_GPIO_PIN_11 | LL_GPIO_PIN_15; + LL_GPIO_Init(GPIOJ, &GPIO_InitStructure); + + // GPIOK configuration + GPIO_InitStructure.Pin = LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | + LL_GPIO_PIN_3 | LL_GPIO_PIN_4 | LL_GPIO_PIN_5 | + LL_GPIO_PIN_6 | LL_GPIO_PIN_7; + LL_GPIO_Init(GPIOK, &GPIO_InitStructure); +} + +static void lcdSpiConfig(void) +{ + LL_GPIO_InitTypeDef GPIO_InitStructure; + LL_GPIO_StructInit(&GPIO_InitStructure); + + GPIO_InitStructure.Pin = LCD_SPI_SCK_GPIO_PIN | LCD_SPI_MOSI_GPIO_PIN; + GPIO_InitStructure.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Mode = LL_GPIO_MODE_OUTPUT; + GPIO_InitStructure.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStructure.Pull = LL_GPIO_PULL_NO; + LL_GPIO_Init(LCD_SPI_GPIO, &GPIO_InitStructure); + + GPIO_InitStructure.Pin = LCD_SPI_CS_GPIO_PIN; + GPIO_InitStructure.Pull = LL_GPIO_PULL_UP; + LL_GPIO_Init(LCD_SPI_GPIO, &GPIO_InitStructure); + + GPIO_InitStructure.Pin = LCD_NRST_GPIO_PIN; + LL_GPIO_Init(LCD_NRST_GPIO, &GPIO_InitStructure); + + /* Set the chip select pin always low */ + LCD_CS_LOW(); +} + +void lcdDelay() { delay_01us(1); } + +static void lcdReset() +{ + LCD_NRST_HIGH(); + delay_ms(1); + + LCD_NRST_LOW(); // RESET(); + delay_ms(100); + + LCD_NRST_HIGH(); + delay_ms(100); +} + +static void lcdWriteByte(uint8_t data_enable, uint8_t byte) +{ + LCD_SCK_LOW(); + + if (data_enable) { + LCD_MOSI_HIGH(); + } else { + LCD_MOSI_LOW(); + } + + lcdDelay(); + LCD_SCK_HIGH(); + + for (int i = 0; i < 8; i++) { + lcdDelay(); + LCD_SCK_LOW(); + + if (byte & 0x80) { + LCD_MOSI_HIGH(); + } else { + LCD_MOSI_LOW(); + } + + lcdDelay(); + LCD_SCK_HIGH(); + byte <<= 1; + } + + lcdDelay(); + LCD_SCK_LOW(); +} + +void lcdWriteCommand(uint8_t command) +{ + LCD_CS_LOW(); + lcdWriteByte(0, command); + LCD_CS_HIGH(); + lcdDelay(); +} + +void lcdWriteData(uint8_t data) +{ + LCD_CS_LOW(); + lcdWriteByte(1, data); + LCD_CS_HIGH(); + lcdDelay(); +} + +void LCD_ST7796S_On(void) { lcdWriteCommand(0x29); } + +void LCD_ST7796S_Init(void) +{ + delay_ms(120); + + lcdWriteCommand(0x11); + delay_ms(120); + + lcdWriteCommand(0xF0); + lcdWriteData(0xC3); + + lcdWriteCommand(0xF0); + lcdWriteData(0x96); + + lcdWriteCommand(0x36); + lcdWriteData(0x28); + + lcdWriteCommand(0x2A); + lcdWriteData(0x00); + lcdWriteData(0x00); + lcdWriteData(0x01); + lcdWriteData(0xDF); + lcdWriteCommand(0x2B); + lcdWriteData(0x00); + lcdWriteData(0x00); + lcdWriteData(0x01); + lcdWriteData(0x3F); + + lcdWriteCommand(0x3A); +#if defined(RADIO_T15) + lcdWriteData(0x55); +#else + lcdWriteData(0x66); +#endif + + lcdWriteCommand(0x34); + + // SET RGB STRAT + lcdWriteCommand(0xB0); // SET HS VS DE CLK 上升还是下降有效 + lcdWriteData(0x80); + + lcdWriteCommand(0xB4); + lcdWriteData(0x01); + + lcdWriteCommand(0xB6); + // lcdWriteData( 0x20 ); + // lcdWriteData( 0x02 ); + // lcdWriteData( 0x3B ); + lcdWriteData(0x20); + lcdWriteData(0x02); + lcdWriteData(0x3B); + // SET RGB END + + lcdWriteCommand(0xB7); + lcdWriteData(0xC6); + + lcdWriteCommand(0xB9); + lcdWriteData(0x02); + lcdWriteData(0xE0); + + lcdWriteCommand(0xC0); + lcdWriteData(0x80); + lcdWriteData(0x65); + + lcdWriteCommand(0xC1); + lcdWriteData(0x0D); + + lcdWriteCommand(0xC2); + lcdWriteData(0xA7); + + lcdWriteCommand(0xC5); + lcdWriteData(0x14); + + lcdWriteCommand(0xE8); + lcdWriteData(0x40); + lcdWriteData(0x8A); + lcdWriteData(0x00); + lcdWriteData(0x00); + lcdWriteData(0x29); + lcdWriteData(0x19); + lcdWriteData(0xA5); + lcdWriteData(0x33); + + lcdWriteCommand(0xE0); + lcdWriteData(0xD0); + lcdWriteData(0x00); + lcdWriteData(0x04); + lcdWriteData(0x05); + lcdWriteData(0x04); + lcdWriteData(0x21); + lcdWriteData(0x25); + lcdWriteData(0x43); + lcdWriteData(0x3F); + lcdWriteData(0x37); + lcdWriteData(0x13); + lcdWriteData(0x13); + lcdWriteData(0x29); + lcdWriteData(0x32); + + lcdWriteCommand(0xE1); + lcdWriteData(0xD0); + lcdWriteData(0x04); + lcdWriteData(0x06); + lcdWriteData(0x09); + lcdWriteData(0x06); + lcdWriteData(0x03); + lcdWriteData(0x25); + lcdWriteData(0x32); + lcdWriteData(0x3E); + lcdWriteData(0x18); + lcdWriteData(0x15); + lcdWriteData(0x15); + lcdWriteData(0x2B); + lcdWriteData(0x30); + + lcdWriteCommand(0xF0); + lcdWriteData(0x3C); + + lcdWriteCommand(0xF0); + lcdWriteData(0x69); + + delay_ms(120); + +#if defined(RADIO_T15) + if (hardwareOptions.pcbrev == PCBREV_T15_IPS) lcdWriteCommand(0x21); +#endif + + LCD_ST7796S_On(); +} + +void LCD_ST7796S_Off(void) { lcdWriteCommand(0x28); } + +void LCD_Init_LTDC() +{ + hltdc.Instance = LTDC; + + /* Configure PLLSAI prescalers for LCD */ + /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */ + /* PLLSAI_VCO Output = PLLSAI_VCO Input * lcdPixelclock * 16 = XX Mhz */ + /* PLLLCDCLK = PLLSAI_VCO Output/PLL_LTDC = PLLSAI_VCO/4 = YY Mhz */ + /* LTDC clock frequency = PLLLCDCLK / RCC_PLLSAIDivR = YY/4 = lcdPixelClock + * Mhz */ + uint32_t clock = (lcdPixelClock * 16) / 1000000; // clock*16 in MHz + RCC_PeriphCLKInitTypeDef clkConfig; + clkConfig.PeriphClockSelection = RCC_PERIPHCLK_LTDC; + clkConfig.PLLSAI.PLLSAIN = clock; + clkConfig.PLLSAI.PLLSAIR = 4; + clkConfig.PLLSAIDivQ = 6; + clkConfig.PLLSAIDivR = RCC_PLLSAIDIVR_4; + HAL_RCCEx_PeriphCLKConfig(&clkConfig); + + /* LTDC Configuration + * *********************************************************/ + /* Polarity configuration */ + /* Initialize the horizontal synchronization polarity as active low */ + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + /* Initialize the vertical synchronization polarity as active low */ + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + /* Initialize the data enable polarity as active low */ + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + /* Initialize the pixel clock polarity as input pixel clock */ + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IIPC; + + /* Configure R,G,B component values for LCD background color */ + hltdc.Init.Backcolor.Red = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Blue = 0; + + /* Configure horizontal synchronization width */ + hltdc.Init.HorizontalSync = HSW; + /* Configure vertical synchronization height */ + hltdc.Init.VerticalSync = VSH; + /* Configure accumulated horizontal back porch */ + hltdc.Init.AccumulatedHBP = HBP; + /* Configure accumulated vertical back porch */ + hltdc.Init.AccumulatedVBP = VBP; + /* Configure accumulated active width */ + hltdc.Init.AccumulatedActiveW = LCD_H + HBP; + /* Configure accumulated active height */ + hltdc.Init.AccumulatedActiveH = LCD_W + VBP; + /* Configure total width */ + hltdc.Init.TotalWidth = LCD_H + HBP + HFP; + /* Configure total height */ + hltdc.Init.TotalHeigh = LCD_W + VBP + VFP; + + HAL_LTDC_Init(&hltdc); + + // Configure IRQ (line) + NVIC_SetPriority(LTDC_IRQn, LTDC_IRQ_PRIO); + NVIC_EnableIRQ(LTDC_IRQn); + + // Trigger on last line + HAL_LTDC_ProgramLineEvent(&hltdc, LCD_W); + __HAL_LTDC_ENABLE_IT(&hltdc, LTDC_IT_LI); +} + +void LCD_LayerInit() +{ + auto& layer = hltdc.LayerCfg[0]; + + /* Windowing configuration */ + layer.WindowX0 = 0; + layer.WindowX1 = LCD_H; + layer.WindowY0 = 0; + layer.WindowY1 = LCD_W; + + /* Pixel Format configuration*/ + layer.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + + /* Alpha constant (255 totally opaque) */ + layer.Alpha = 255; + + /* Default Color configuration (configure A,R,G,B component values) */ + layer.Backcolor.Blue = 0; + layer.Backcolor.Green = 0; + layer.Backcolor.Red = 0; + layer.Alpha0 = 0; + + /* Configure blending factors */ + layer.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA; + layer.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA; + + layer.ImageWidth = LCD_H; + layer.ImageHeight = LCD_W; + + /* Start Address configuration : the LCD Frame buffer is defined on SDRAM w/ + * Offset */ + layer.FBStartAdress = (intptr_t)initialFrameBuffer; + + /* Initialize LTDC layer 1 */ + HAL_LTDC_ConfigLayer(&hltdc, &hltdc.LayerCfg[0], 0); + + /* dithering activation */ + HAL_LTDC_EnableDither(&hltdc); +} + +extern "C" void lcdSetInitalFrameBuffer(void* fbAddress) +{ + initialFrameBuffer = fbAddress; +} + +extern "C" void lcdInit(void) +{ + /* Configure the LCD SPI+RESET pins */ + lcdSpiConfig(); + + /* Reset the LCD --------------------------------------------------------*/ + lcdReset(); + + /* Configure the LCD Control pins */ + LCD_AF_GPIOConfig(); + + /* Send LCD initialization commands */ + lcdPixelClock = 12000000; + + LCD_ST7796S_Init(); + + LCD_Init_LTDC(); + LCD_LayerInit(); + + // Enable LCD display + __HAL_LTDC_ENABLE(&hltdc); + + lcdSetFlushCb(startLcdRefresh); +} + +extern "C" void LTDC_IRQHandler(void) +{ + __HAL_LTDC_CLEAR_FLAG(&hltdc, LTDC_FLAG_LI); + __HAL_LTDC_DISABLE_IT(&hltdc, LTDC_IT_LI); + _frame_addr_reloaded = 1; +} diff --git a/radio/src/targets/horus/lcd_st7796s_driver.h b/radio/src/targets/horus/lcd_st7796s_driver.h new file mode 100644 index 000000000..678b0ca6d --- /dev/null +++ b/radio/src/targets/horus/lcd_st7796s_driver.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#pragma once + +#define HBP (24) +#define VBP (10) + +#define HSW (4) +#define VSH (2) + +#define HFP (140 - HBP) +#define VFP (22 - VBP) + +#define SET_IO_INPUT(PORT, PIN) \ + LL_GPIO_SetPinMode(PORT, PIN, LL_GPIO_MODE_INPUT) +#define SET_IO_OUTPUT(PORT, PIN) \ + LL_GPIO_SetPinMode(PORT, PIN, LL_GPIO_MODE_OUTPUT) + +#define LCD_NRST_HIGH() LL_GPIO_SetOutputPin(LCD_NRST_GPIO, LCD_NRST_GPIO_PIN) +#define LCD_NRST_LOW() LL_GPIO_ResetOutputPin(LCD_NRST_GPIO, LCD_NRST_GPIO_PIN) + +#define LCD_CS_HIGH() LL_GPIO_SetOutputPin(LCD_SPI_GPIO, LCD_SPI_CS_GPIO_PIN) +#define LCD_CS_LOW() LL_GPIO_ResetOutputPin(LCD_SPI_GPIO, LCD_SPI_CS_GPIO_PIN) + +#define LCD_SCK_HIGH() LL_GPIO_SetOutputPin(LCD_SPI_GPIO, LCD_SPI_SCK_GPIO_PIN) +#define LCD_SCK_LOW() LL_GPIO_ResetOutputPin(LCD_SPI_GPIO, LCD_SPI_SCK_GPIO_PIN) + +#define LCD_MOSI_HIGH() \ + LL_GPIO_SetOutputPin(LCD_SPI_GPIO, LCD_SPI_MOSI_GPIO_PIN) +#define LCD_MOSI_LOW() \ + LL_GPIO_ResetOutputPin(LCD_SPI_GPIO, LCD_SPI_MOSI_GPIO_PIN) + +#define LCD_MOSI_AS_INPUT() SET_IO_INPUT(LCD_SPI_GPIO, LCD_SPI_MOSI_GPIO_PIN) +#define LCD_MOSI_AS_OUTPUT() SET_IO_OUTPUT(LCD_SPI_GPIO, LCD_SPI_MOSI_GPIO_PIN) + +#define LCD_READ_DATA_PIN() \ + LL_GPIO_IsInputPinSet(LCD_SPI_GPIO, LCD_SPI_MOSI_GPIO_PIN) + +#define HORIZONTAL_SYNC_WIDTH (4) +#define HORIZONTAL_BACK_PORCH (24) +#define HORIZONTAL_FRONT_PORCH (140 - HORIZONTAL_BACK_PORCH) +#define VERTICAL_SYNC_HEIGHT (2) +#define VERTICAL_BACK_PORCH (10) +#define VERTICAL_FRONT_PORCH (22 - VERTICAL_BACK_PORCH) diff --git a/radio/src/targets/horus/led_driver.cpp b/radio/src/targets/horus/led_driver.cpp index c74297cdf..53eca1ba5 100644 --- a/radio/src/targets/horus/led_driver.cpp +++ b/radio/src/targets/horus/led_driver.cpp @@ -38,8 +38,39 @@ void ledInit() #if defined(LED_BLUE_GPIO) gpio_init(LED_BLUE_GPIO, GPIO_OUT, GPIO_PIN_SPEED_LOW); #endif + +#if defined(FUNCTION_SWITCHES) + gpio_init(FSLED_GPIO_1, GPIO_OUT, GPIO_PIN_SPEED_LOW); + gpio_init(FSLED_GPIO_2, GPIO_OUT, GPIO_PIN_SPEED_LOW); + gpio_init(FSLED_GPIO_3, GPIO_OUT, GPIO_PIN_SPEED_LOW); + gpio_init(FSLED_GPIO_4, GPIO_OUT, GPIO_PIN_SPEED_LOW); + gpio_init(FSLED_GPIO_5, GPIO_OUT, GPIO_PIN_SPEED_LOW); + gpio_init(FSLED_GPIO_6, GPIO_OUT, GPIO_PIN_SPEED_LOW); +#endif + } +#if defined(FUNCTION_SWITCHES) +gpio_t fsLeds[] = {FSLED_GPIO_1, FSLED_GPIO_2, + FSLED_GPIO_3, FSLED_GPIO_4, + FSLED_GPIO_5, FSLED_GPIO_6}; + +void fsLedOff(uint8_t index) +{ + gpio_clear(fsLeds[index]); +} + +void fsLedOn(uint8_t index) +{ + gpio_set(fsLeds[index]); +} + +bool getFSLedState(uint8_t index) +{ + return (gpio_read(fsLeds[index])); +} +#endif + #if defined(LED_GPIO) // Single GPIO for dual color LED diff --git a/radio/src/targets/horus/usb_descriptor.h b/radio/src/targets/horus/usb_descriptor.h index 70cac72bf..397adf9d3 100644 --- a/radio/src/targets/horus/usb_descriptor.h +++ b/radio/src/targets/horus/usb_descriptor.h @@ -26,6 +26,10 @@ #define USB_NAME "FrSky Horus" #define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */ #define USB_PRODUCT 'H', 'o', 'r', 'u', 's', ' ', ' ', ' ' /* 8 Bytes */ +#elif defined(RADIO_T15) + #define USB_NAME "Jumper T15" + #define USB_MANUFACTURER 'J', 'u', 'm', 'p', 'e', 'r', ' ', ' ' /* 8 bytes */ + #define USB_PRODUCT 'T', '1', '5', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */ #elif defined(RADIO_T16) #define USB_NAME "Jumper T16" #define USB_MANUFACTURER 'J', 'u', 'm', 'p', 'e', 'r', ' ', ' ' /* 8 bytes */ diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 0be92e2bc..239877dd6 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -131,17 +131,6 @@ uint32_t isBootloaderStart(const uint8_t * buffer); #endif -#if defined(FUNCTION_SWITCHES) -extern uint8_t fsPreviousState; -void evalFunctionSwitches(); -void setFSStartupPosition(); -void fsLedOff(uint8_t); -void fsLedOn(uint8_t); -uint8_t getFSLogicalState(uint8_t index); -uint8_t getFSPhysicalState(uint8_t index); -bool getFSLedState(uint8_t index); -#endif - #if defined(ADC_GPIO_PIN_STICK_TH) #define SURFACE_RADIO true #endif diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index cd9961d05..5619fd383 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -100,6 +100,9 @@ ISTR(ADCFILTERVALUES); ISTR(TIMER_DIR); ISTR(PREFLIGHT_POTSLIDER_CHECK); ISTR(PPMUNIT); +#if defined(FUNCTION_SWITCHES) +ISTR(FUNCTION_SWITCH_GROUPS); +#endif #if defined(HELI) ISTR(VSWASHTYPE); @@ -162,6 +165,12 @@ const char STR_REFRESHRATE[] = TR_REFRESHRATE; const char STR_MS[] = TR_MS; const char STR_SWITCH[] = TR_SWITCH; #if defined(FUNCTION_SWITCHES) +const char STR_GROUPS[] = TR_GROUPS; +const char STR_LAST[] = TR_LAST; +const char STR_MORE_INFO[] = TR_MORE_INFO; +const char STR_SWITCH_TYPE[] = TR_SWITCH_TYPE; +const char STR_SWITCH_GROUP[] = TR_SWITCH_GROUP; +const char STR_SWITCH_STARTUP[] = TR_SWITCH_STARTUP; const char STR_FUNCTION_SWITCHES[] = TR_FUNCTION_SWITCHES; const char STR_GROUP[] = TR_GROUP; const char STR_GROUP_ALWAYS_ON[] = TR_GROUP_ALWAYS_ON; diff --git a/radio/src/translations.h b/radio/src/translations.h index 454f824fc..75694f3c8 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -290,6 +290,13 @@ extern const char STR_SWITCH[]; extern const char STR_FUNCTION_SWITCHES[]; extern const char STR_GROUP[]; extern const char STR_GROUP_ALWAYS_ON[]; +extern const char STR_GROUPS[]; +extern const char STR_LAST[]; +extern const char STR_MORE_INFO[]; +extern const char STR_SWITCH_TYPE[]; +extern const char STR_SWITCH_GROUP[]; +extern const char STR_SWITCH_STARTUP[]; +extern const char* const STR_FUNCTION_SWITCH_GROUPS[]; extern const char STR_ADJUST_GVAR[]; extern const char STR_PLAY_TRACK[]; extern const char STR_PLAY_VALUE[]; diff --git a/radio/src/translations/cn.h b/radio/src/translations/cn.h index 4ce872b61..358bf84ac 100644 --- a/radio/src/translations/cn.h +++ b/radio/src/translations/cn.h @@ -282,6 +282,15 @@ #define TR_FUNCTION_SWITCHES "可自定义开关" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "微调" #define TR_FADEIN "渐入" diff --git a/radio/src/translations/cz.h b/radio/src/translations/cz.h index 23bf02074..ee375b239 100644 --- a/radio/src/translations/cz.h +++ b/radio/src/translations/cz.h @@ -297,6 +297,15 @@ #define TR_FUNCTION_SWITCHES "Nastavitelné přepínače" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "Trimy" #define TR_FADEIN "Přechod Zap" diff --git a/radio/src/translations/da.h b/radio/src/translations/da.h index 2e0ced916..8a662608c 100644 --- a/radio/src/translations/da.h +++ b/radio/src/translations/da.h @@ -290,6 +290,15 @@ #define TR_FUNCTION_SWITCHES "Kontakter der kan tilpasses" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Udløser" #define TR_TRIMS "Trim" #define TR_FADEIN "Tone ind" diff --git a/radio/src/translations/de.h b/radio/src/translations/de.h index 02c2170fd..1d1f36921 100644 --- a/radio/src/translations/de.h +++ b/radio/src/translations/de.h @@ -288,6 +288,15 @@ #define TR_FUNCTION_SWITCHES "Anpassbare Schalter" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "Trimmer" #define TR_FADEIN "Langs. Ein" diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 0025bb6a5..6bc77a9f4 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -287,6 +287,13 @@ #define TR_FUNCTION_SWITCHES "Customizable Switches" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "Trims" #define TR_FADEIN "Fade in" diff --git a/radio/src/translations/es.h b/radio/src/translations/es.h index 80e86f319..f7babb535 100644 --- a/radio/src/translations/es.h +++ b/radio/src/translations/es.h @@ -285,6 +285,15 @@ #define TR_FUNCTION_SWITCHES "Customizable switches" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "Trims" #define TR_FADEIN "Inicio" diff --git a/radio/src/translations/fi.h b/radio/src/translations/fi.h index 5d55421a8..8f39c4716 100644 --- a/radio/src/translations/fi.h +++ b/radio/src/translations/fi.h @@ -299,6 +299,15 @@ #define TR_FUNCTION_SWITCHES "Customizable switches" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "Trims" #define TR_FADEIN "Fade In" diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h index 875fee0ef..fe449051b 100644 --- a/radio/src/translations/fr.h +++ b/radio/src/translations/fr.h @@ -292,6 +292,15 @@ #define TR_MS "ms" #define TR_SWITCH TR("Inter", "Interrupteur") #define TR_FUNCTION_SWITCHES "Inters paramétrables" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Interrupteur" #define TR_TRIMS "Trims" #define TR_FADEIN "Fondu ON" diff --git a/radio/src/translations/he.h b/radio/src/translations/he.h index 415cee605..cbc197f1b 100644 --- a/radio/src/translations/he.h +++ b/radio/src/translations/he.h @@ -291,6 +291,15 @@ #define TR_FUNCTION_SWITCHES "מפסקים בהתאמה אישית" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "הדק" #define TR_TRIMS "קיזוזים" #define TR_FADEIN "Fade in" diff --git a/radio/src/translations/it.h b/radio/src/translations/it.h index 15f653119..451417e5b 100644 --- a/radio/src/translations/it.h +++ b/radio/src/translations/it.h @@ -287,6 +287,15 @@ #define TR_FUNCTION_SWITCHES "Interruttori personalizzabili" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "Trims" #define TR_FADEIN "Diss.In" diff --git a/radio/src/translations/jp.h b/radio/src/translations/jp.h index 44658bbe3..5a120e297 100644 --- a/radio/src/translations/jp.h +++ b/radio/src/translations/jp.h @@ -286,6 +286,15 @@ #define TR_FUNCTION_SWITCHES "カスタマイズ スイッチ" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "トリガー" #define TR_TRIMS "トリム" #define TR_FADEIN "フェードイン" diff --git a/radio/src/translations/nl.h b/radio/src/translations/nl.h index 8073dfdf4..84ec3b776 100644 --- a/radio/src/translations/nl.h +++ b/radio/src/translations/nl.h @@ -284,6 +284,15 @@ #define TR_FUNCTION_SWITCHES "Customizable switches" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "Trims" #define TR_FADEIN "Fade in" diff --git a/radio/src/translations/pl.h b/radio/src/translations/pl.h index 15d20050a..ea21dd4ee 100644 --- a/radio/src/translations/pl.h +++ b/radio/src/translations/pl.h @@ -284,6 +284,15 @@ #define TR_FUNCTION_SWITCHES "Ustawiane przełączniki" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "Trymy" #define TR_FADEIN "Pojawia" diff --git a/radio/src/translations/pt.h b/radio/src/translations/pt.h index 7405a7746..86117633b 100644 --- a/radio/src/translations/pt.h +++ b/radio/src/translations/pt.h @@ -290,6 +290,15 @@ #define TR_FUNCTION_SWITCHES "Chaves customizáveis" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Disparo" #define TR_TRIMS "Trims" #define TR_FADEIN "Aparecer" diff --git a/radio/src/translations/ru.h b/radio/src/translations/ru.h index 50e8e64b5..498788ee9 100644 --- a/radio/src/translations/ru.h +++ b/radio/src/translations/ru.h @@ -289,6 +289,15 @@ #define TR_FUNCTION_SWITCHES "Настр тумблеры" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Триггер" #define TR_TRIMS "тримы" #define TR_FADEIN "Затух входа" diff --git a/radio/src/translations/se.h b/radio/src/translations/se.h index 6d93ef406..8d65f3964 100644 --- a/radio/src/translations/se.h +++ b/radio/src/translations/se.h @@ -300,6 +300,15 @@ #define TR_FUNCTION_SWITCHES "Anpassningsbara brytare" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "Trimmar" #define TR_FADEIN "Tona in" diff --git a/radio/src/translations/tw.h b/radio/src/translations/tw.h index e7cae879e..ef3c7d5c6 100644 --- a/radio/src/translations/tw.h +++ b/radio/src/translations/tw.h @@ -287,6 +287,15 @@ #define TR_FUNCTION_SWITCHES "可自定義開關" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Trigger" #define TR_TRIMS "微調" #define TR_FADEIN "漸入" diff --git a/radio/src/translations/ua.h b/radio/src/translations/ua.h index 5aa03e0fa..6a2c5f661 100644 --- a/radio/src/translations/ua.h +++ b/radio/src/translations/ua.h @@ -289,6 +289,15 @@ #define TR_FUNCTION_SWITCHES "Користувацькі перемикачі" #define TR_GROUP "Group" #define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUP "Group" +#define TR_GROUP_ALWAYS_ON "Always on" +#define TR_GROUPS "Always on groups" +#define TR_LAST "Last" +#define TR_MORE_INFO "More info" +#define TR_SWITCH_TYPE "Type" +#define TR_SWITCH_STARTUP "Startup" +#define TR_SWITCH_GROUP "Group" +#define TR_FUNCTION_SWITCH_GROUPS "---", TR_SWITCH_GROUP" 1", TR_SWITCH_GROUP" 2", TR_SWITCH_GROUP" 3" #define TR_SF_SWITCH "Тригери" #define TR_TRIMS "Трим." #define TR_FADEIN "Вх.Згасання" diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index aeada9515..b911eb0d1 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -314,7 +314,11 @@ #define STR_CHAR_BW_DEGREE '@' #define TR_FSGROUPS "-","1","2","3" +#if defined(COLORLCD) +#define TR_FSSWITCHES TR_LAST, "SW1", "SW2", "SW3", "SW4", "SW5", "SW6", TR_OFF +#else #define TR_FSSWITCHES "=", "SW1", "SW2", "SW3", "SW4", "SW5", "SW6", TR_OFF +#endif // // HoTT Telemetry sensor names by Hott device diff --git a/radio/util/build-firmware.py b/radio/util/build-firmware.py index 3f524e01a..f6113764d 100755 --- a/radio/util/build-firmware.py +++ b/radio/util/build-firmware.py @@ -169,6 +169,11 @@ def main(): cmake_options["PCBREV"] = "T8" firmware_options = options_radiomaster_t8 maxsize = 65536 * 8 + elif board_name == "t15": + cmake_options["PCB"] = "X10" + cmake_options["PCBREV"] = "T15" + firmware_options = options_jumper_t16 + maxsize = 2 * 1024 * 1024 elif board_name == "t16": cmake_options["PCB"] = "X10" cmake_options["PCBREV"] = "T16" diff --git a/radio/util/hw_defs/legacy_names.py b/radio/util/hw_defs/legacy_names.py index 3a07943ea..4504d7881 100644 --- a/radio/util/hw_defs/legacy_names.py +++ b/radio/util/hw_defs/legacy_names.py @@ -89,6 +89,37 @@ LEGACY_NAMES = [ } } }, + { + "targets": {"t15"}, + "inputs": { + "LH": { + "yaml": "Rud" + }, + "LV": { + "yaml": "Ele" + }, + "RV": { + "yaml": "Thr" + }, + "RH": { + "yaml": "Ail" + }, + "P1": { + "yaml": "S1", + "lua": "s1", + "label": "S1", + "short_label": "1", + "description": "Potentiometer S1" + }, + "P2": { + "yaml": "S2", + "lua": "s2", + "label": "S2", + "short_label": "2", + "description": "Potentiometer S2" + } + } + }, { "targets": {"x12s"}, "inputs": { diff --git a/radio/util/hw_defs/pot_config.py b/radio/util/hw_defs/pot_config.py index afb60dbdb..bd7abbf47 100644 --- a/radio/util/hw_defs/pot_config.py +++ b/radio/util/hw_defs/pot_config.py @@ -78,6 +78,10 @@ POT_CONFIG = { "P1": {"default": "POT_CENTER"}, "P2": {"default": "POT_CENTER"} }, + "t15": { + "P1": {"default": "POT_CENTER"}, + "P2": {"default": "POT_CENTER"}, + }, "t16": { "P1": {"default": "POT_CENTER"}, "P2": {"default": "MULTIPOS"}, diff --git a/radio/util/hw_defs/switch_config.py b/radio/util/hw_defs/switch_config.py index 22bc907c9..589495026 100644 --- a/radio/util/hw_defs/switch_config.py +++ b/radio/util/hw_defs/switch_config.py @@ -105,6 +105,14 @@ SWITCH_CONFIG = { "SD": {"default": "3POS", "display": [1, 1]}, "SF": {"default": "TOGGLE", "display": [1, 2]} }, + "t15": { + "SA": {"default": "3POS"}, + "SB": {"default": "3POS"}, + "SC": {"default": "3POS"}, + "SD": {"default": "3POS"}, + "SE": {"default": "2POS"}, + "SF": {"default": "2POS"}, + }, "t16": { "SA": {"default": "3POS"}, "SB": {"default": "3POS"}, diff --git a/tools/boards.py b/tools/boards.py index 34368651a..018bf0b80 100755 --- a/tools/boards.py +++ b/tools/boards.py @@ -43,6 +43,11 @@ boards = { "X12S": { "PCB": "X12S", }, + "T15": { + "PCB": "X10", + "PCBREV": "T15", + "INTERNAL_MODULE_CRSF": "YES" + }, "T16": { "PCB": "X10", "PCBREV": "T16", diff --git a/tools/build-companion.sh b/tools/build-companion.sh index 9d7557a93..6be81ebb2 100755 --- a/tools/build-companion.sh +++ b/tools/build-companion.sh @@ -72,7 +72,7 @@ declare -a simulator_plugins=(x9lite x9lites xlite xlites nv14 el18 pl18 pl18ev x10 x10-access x12s - t16 t18 t20 t20v2 tx16s) + t15 t16 t18 t20 t20v2 tx16s) for plugin in "${simulator_plugins[@]}" do @@ -164,6 +164,9 @@ do x12s) BUILD_OPTIONS+="-DPCB=X12S" ;; + t15) + BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T15 -DINTERNAL_MODULE_CRSF=ON" + ;; t16) BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T16 -DINTERNAL_MODULE_MULTI=ON" ;; diff --git a/tools/build-gh.sh b/tools/build-gh.sh index 5a90a49d6..f6a46aa84 100755 --- a/tools/build-gh.sh +++ b/tools/build-gh.sh @@ -182,6 +182,9 @@ do x12s) BUILD_OPTIONS+="-DPCB=X12S" ;; + t15) + BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T15 -DINTERNAL_MODULE_CRSF=ON" + ;; t16) BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T16 -DINTERNAL_MODULE_MULTI=ON" ;; diff --git a/tools/commit-tests.sh b/tools/commit-tests.sh index c87c0adb4..e4b408562 100755 --- a/tools/commit-tests.sh +++ b/tools/commit-tests.sh @@ -142,6 +142,9 @@ do x12s) BUILD_OPTIONS+="-DPCB=X12S" ;; + t15) + BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T15 -DINTERNAL_MODULE_CRSF=ON" + ;; t16) BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T16 -DINTERNAL_MODULE_MULTI=ON" ;; diff --git a/tools/generate-hw-defs.sh b/tools/generate-hw-defs.sh index 44b595507..48aeaa63f 100755 --- a/tools/generate-hw-defs.sh +++ b/tools/generate-hw-defs.sh @@ -6,7 +6,7 @@ set -e : "${SRCDIR:=$(dirname "$(pwd)/$0")/..}" -: ${FLAVOR:="nv14;t12;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;t20;t20v2;t14;lr3pro;mt12;tx12;tx12mk2;boxer;tx16s;x10;x10-access;x12s;x7;x7-access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites"} +: ${FLAVOR:="nv14;t12;t15;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;t20;t20v2;t14;lr3pro;mt12;tx12;tx12mk2;boxer;tx16s;x10;x10-access;x12s;x7;x7-access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites"} : ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"} # wipe build directory clean @@ -108,6 +108,9 @@ do x12s) BUILD_OPTIONS+="-DPCB=X12S" ;; + t15) + BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T15 -DINTERNAL_MODULE_CRSF=ON" + ;; t16) BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T16 -DINTERNAL_MODULE_MULTI=ON" ;; diff --git a/tools/generate-yaml.sh b/tools/generate-yaml.sh index 47702b113..42b114fe6 100755 --- a/tools/generate-yaml.sh +++ b/tools/generate-yaml.sh @@ -8,7 +8,7 @@ if [[ -n ${GCC_ARM} ]] ; then export PATH=${GCC_ARM}:$PATH fi -: ${FLAVOR:="tx16s;x12s;nv14;pl18;x9d;x9dp;x9e;xlites;x7;tpro;t20"} +: ${FLAVOR:="t15;tx16s;x12s;nv14;pl18;x9d;x9dp;x9e;xlites;x7;tpro;t20"} : ${SRCDIR:=$(dirname "$(pwd)/$0")/..} : ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DDISABLE_COMPANION=YES -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"} @@ -107,6 +107,9 @@ do x12s) BUILD_OPTIONS+="-DPCB=X12S" ;; + t15) + BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T15 -DINTERNAL_MODULE_CRSF=ON" + ;; t16) BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=T16 -DINTERNAL_MODULE_MULTI=ON" ;; diff --git a/tools/msys2_fetch_and_build_all.sh b/tools/msys2_fetch_and_build_all.sh index 6e5bf7e1b..b444a245e 100644 --- a/tools/msys2_fetch_and_build_all.sh +++ b/tools/msys2_fetch_and_build_all.sh @@ -9,7 +9,7 @@ # ----------------------------------------------------------------------------- export BRANCH_NAME="main" # main|2.9|... -export RADIO_TYPE="tx16s" # tx16s|x10|x10-access|x12s|x9d|x9dp|x9lite|x9lites|x7|x7-access|t12|tx12|tx12mk2|mt12|boxer|t8|zorro|pocket|tlite|tpro|t20|t20v2|t14|lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t16|t18|nv14|commando8 +export RADIO_TYPE="tx16s" # tx16s|x10|x10-access|x12s|x9d|x9dp|x9lite|x9lites|x7|x7-access|t12|tx12|tx12mk2|mt12|boxer|t8|zorro|pocket|tlite|tpro|t20|t20v2|t14|lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t15|t16|t18|nv14|commando8 export BUILD_OPTIONS="-DDEFAULT_MODE=2 -DGVARS=YES" @@ -99,6 +99,9 @@ case $RADIO_TYPE in x12s) BUILD_OPTIONS+=" -DPCB=X12S" ;; + t15) + BUILD_OPTIONS+=" -DPCB=X10 -DPCBREV=T15 -DINTERNAL_MODULE_CRSF=ON" + ;; t16) BUILD_OPTIONS+=" -DPCB=X10 -DPCBREV=T16 -DINTERNAL_MODULE_MULTI=ON" ;;