Open RayBB opened 3 years ago
Hi @RayBB! It's entirely probable that SW has changed their private API, again. I'll take a look at some point but it's sadly hard to keep up. It might be easier to go back to a web-crawler interface instead of making raw HTTP requests...
As an aside, your use case is one that I hadn't considered. I'm surprised that they wouldn't "make a route" for that kind of trip.
@redfern314
Maybe that don't make a route for a trip like that because of complications with checked bags or some other logistical challenge. I even messaged them about it and they said they can't book things like that for us over the phone either it would have to be done manually.
Maybe doing a js based thing in the browser will get more consistent results.
Once I got this working it was still intermittent and will work one time but not the next. When it does work it is fantastic though!
Here's what I found:
stopsDetails
is now nested under segments
.
Like this:
Aside from that things seemed (idk still not consistent) to work when adding these headers: 'x-app-id': 'air-booking', 'x-channel-id': 'southwest', 'x-user-experience-id': '8731fe8c-7b95-4c3d-951a-27e757d56b64'
Also, 'ee30zvqlwf-d' and 'ee30zvqlwf-z' seem to have changed so I did update those in my code.
I can make a PR for the segments change if you'd like.
Sure, go ahead and open up the PR if you don't mind!
Heh I noticed that at least on chrome (doesn't seem to happen on FF) the SW site starts giving search errors when you open the dev tools. I'll open a PR later.
I've been playing around with this - it seems the headers are only valid for a short amount of time.
I had to do what @RayBB did and update all the ee30* headers (I also seemed to have an additional one: -a0
) API_KEY and x-user-experience-id. Seems like Southwest is making this hard on us!
headers = {
"content-type": "application/json",
"x-app-id": "air-booking",
"x-channel-id": "southwest",
# Edit me
"x-user-experience-id": "723bb53b-193e-48a4-818c-5bf8af51fcb7",
# Edit me
"x-api-key": l7xx944d175ea25f4b9c903a583ea82a1c4c,
"dnt": "1",
# Must not be empty, so I added a period here.
"user-agent": ".",
# Change all lines below this.
"ee30zvqlwf-d": "ABaChIjBDKGNgUGAQZIQhISi0eIApJmBDgD4nWksBWFzbAAAAAAW_oC0AP5Mc6sz1Vvx8bQ7o_97ktI",
"ee30zvqlwf-z": "q",
"ee30zvqlwf-a": "PYTJtf4Pi6JTdTwNzRKmLKvIFbPgD5t6UtU2F-U7T9jBwbiLrIcGrFDFJE7EMDHiTzkgpfqJ2rd6BnP7R-7TU-S39aB5OU5dELfJy7TYbNwpR2nUkhKnKGPAWCAkpzc6Gaumv0TeBiYi3I6mDjfm-MW3cy-zB2uepkYsi-CdTZtRqmBm57DqLzniHXyHDsKjvXEaHPjzXWtPLI3j8UpYev2M29-Hnazk48qNUt42EHbHHoh6FhvZ4S_8li9Cc1BUslzW7BumwV9FM-RWi9XTwmtyWw8dNXJ4aIJtAHjWAKATNOTp9l6dEHwxiIEsqr0t431Ebx_CIBmKIijtHO2RGnVwPznnOnfi26zmJa-YeoqxZRnfZsK-ySxzwE0GIcGKn1U7jN7KyYN0h6GKUc42rB0TIm54_9yCJf7u92igaury03jlGSCOoogaYWjM18b_dtaI20AYzayotM2W6yRLh5Cp6qjpx_hB5aK6I_HZPNfhjlCG_4l9Wh-O6B__J=rKdGJZ=9miuODT-jt3qNL8MNqFI3L44XNZsGLdqXuEPF883DBAYz2D-27cOiNEyHh5MhUM-Hj--w1I_mSPUzBj_7xiH7kJ4B5WZbAC2ZvnlC2_Czsl7=pNEObsyvIErGmNZ2=HkL=g3KpaLp-h9xIHKwkI0i=JJs5J62e-CzG-3dcfAPspedidqvlDXAjocb-VJE0rZ6Eb6wR37uxtBfSsWqXGXIqoThnXK=I76qU2XRtzB3haaLSoGvoWsn_iAjEiE80y5It6mqjedBTbgg7VtT_KM8CVtXBeKDsSOgk-V6T8zKI5v=udr1IyZjpFAo4fbCHpSYLKTm8EzcMH3KUrHEChdOC-MYeWA_DucTJMFBEDnSGaDaiAXOhJWqw_vAP4MJNDxeFHA1S0rRaVh1L4guU89eOOwX0EqOr1noUR7R9bVif6JoXWbsqyJsPsxjoDiv=vbMreevlvj4=Pn0zIVcWsLzajY8P70E6zhczLwkBBHWsRv5kH0UBL-ZcE4laXnpS6rZ9=UIatX4OeXECDWgY8Y2dkql4knZ3vxJgvkhW2bXZyrefjEpZEo8nHnusB7MO=Rrd6Vqwo4dx0Y_Zrufc-EjCIIKgi4ua_uOA7MODSV9XG9wgCdiK1esE4RtyW7RCxvx_Bpy9h=NG_FS4_T5d5Lq4IC9vcowsKK8CfG-E=YhXEW0vOgxSbcSrO2YKKr6jJvND=Dk-KGvLCOD_-DH1m0CpGJjF9Np8CX_Eq5DMKTc_pJW-DHnmqsJvH6dIZuZCCCNBAk=HNfZCW3jKEoZ_=KgZ7FgG5c-rs3fpXcJFXujhfPUBY=g157oDqrwW0V0PDdTwfNq0a5_VgJdxmKuT4DtJODYMHI8xwkcYwVp1RjcbJczHHRqHOWE4HWVuW169==KD64E3CP4oN=z4Ro6k0Muh38tP=5V9BmG6_VwaM8i7Zoh40Uw5YNm4nX2mj=P6VkzBHcHi95g2mCPZxKr22Wbx5ZBW4K0swuVZCyAuUtdCcukpAJ6JDPkXqjlK2Vk2jRqwgHszqgK-dU0AKh8Nu2PEU-T1G21PKvcFqyFAUEB62X8kIqTI_aSoDuBegm97KPWB-puP4wutUxcJKM0MIGf9hEcgjSeZoM0y3K6tpedlkOkd3-0et-YfwpJUYo3NX8cVWsHz3-JO_yyAevOrl0yUkVUwBJq9B4up=Oy120J-KhC3fnMBoityv-Z8L3XA=dc28y2XDIx5qrAli4=6rdBKDhrujW5P=OyugfTy8MWVqA3ww4ZbugDnUs1yP4DLaWELMPcM3LOv72kfVw2ggVzWldHcJ=4eoJ_zSo8t8pPH=aPcEpFTA=gT_KXvYkNEdhq=l9W_FmV79g53=YXk4l1MaZM59J0L30rWK39f2LdImtZSXdfMhtc-yxESDlu80MbCkrqwA6IxMNodxms-IsniE=mFCsk_2lccB1RlyWvcc3AyHWHfW=YF-GK-m-h-Vwc87Bb6B60cWyqotF7tIuGEWDKAG_uxZXVfVRlIbWW2VgizZK0HwcH-a0P9NXpoKdNVBO2hYLDw_HT8111tOl_aSlGL=6lyk9Os99tJZ8NqUZ2Zr_AGj6YlbdCZH-9aygv-G8Kv1VrV0JStF-SttCTUZjvTLw2wAjr-xD0KXzfkyPemm6Rx8AEosm7eZeftrF-pLFLp36mRZ4jNYhP-Zr3JtdHacOtcBxMOI14p0FER5yrIHyBi2W_W6DViMbdMCzEFx9LibpflK8u1PArHslGtDtvPWAKqGeB3dP8m5cYgn4I8J3OV8xdMLL7B1tKJLckePafM2ob3YoCXunTMbwaKApXnfAbvPO=NnybFuHRBx9UhlnC7oz4ySKeOeIPpPArPU0CiSNj4nmCMff4GPKvkT_AbUWx7a5tKZ9KIy2FP4dVkjTVyWDIik-MX_TU3SxbOntUiD8AZKTrgOTIR9Hoo3j1bEGcxBz=rIuO0BSZKBbtimNLDu4xUy4IpuYkYTv_tC=q59GfRzI0_wsDsMhAMJeJhmT1Jn8GLIfnUjvl4zcGW3Zt3D764-yXwYnjgKLTPJqt_ipN2up2JElS_kMyXRh1WE6od6a1rA7LtjYYHNJbMtkJO0ficlsdrRjIvmheHYRJRp3Hl21aAbA02jxdCPMJ0OcwC62FFjZR3U=MDb1vch8Ztze=9YD1viZPVobI9chO4oOsrALqwWC7zu0DVv5kdt50TOzHPuuc5DB7dlT4lNu69ef9faevr8K9PZ26jD7nbyKmINBrB7hG-Wnf2qs6AmG8J1vhYiD=24q-Z8wYiIR=9ljr0LTqzo=78U_UUe8LjSM7kb49GT5NO44HI72JOwl2-kmO3xBy1sPrlcnu45=KdjSiVF=N_zymzyvbi6Yhr=gtzx9WNmV=hAxIGK66217x-VzL2ZBZMTiMoksXeReaTaLnDOZZ6VyMDZ6mIEhFnSU_vqPBlBzG1r_xcCt71o27F__4-m73vheihq7xmlXrleqUoX-mGJwMpC2UzH_wjyRqeaX6g65uSDKDDizOnxFoLVp6F1kw6weWvnAAETWxYvdSa0C7OEMlEnvp3IxcFMEek3GaOPgBgwXtXsH39WaZcj_9iI45FALxXEFNf0wEBuGsMVTYRRl2DsCKyR4OKp09=-i_noPa85pI_9xyTTc4Kam2gaGHoJKZa1LSS0iEnxBewwJCnh84nYppD_pomkMmUDNE5i93-3t3sm=Do20wyY=qV74tSUjnstdnSRtLZ_Eeo_Z38l1TVsnYr7de41Toy2TVChu_u2G6-qJEwG=nG3H2_Dc6ICWT4GN2KVW_BKwbr8grDy=cOtssZmRuFfLtk1yi_vYr5RxD-uJj2YOUClNxok7i1Ve6vwdrb-Oq8IiYz4PinmUhzBS2zRUFupiw=YPoIda4GLsgDAVFv3o8XYFPJYoWfITV-Z2ZUb91lCBaIKEhrwqwhuZ7v4Tfw6oda9rxvdk2XUP-S5gUx_olnhCMZd8yyxiV=gUvNiVkbBOP=ef4AAtpL6_ug927Pt4zF66LxkU9nmFs60YOYVoMIOln5JI2ruTmRUdrE1yEBmB1nk_4Cw17g2ufSw0AhbEitcITqi3zZkB=PWe3r1UChDusNz3yCdgHm1Ww09HYne0l59NC=0Abb-dXEgZt6-MrlkT9folqzAhYilp6iLNjKjaFOd=og4ZxKNU5=ipalkNiH9cc5435OI4oMFjTL1WoPUdUkXK8uUfM8Vq-62fNinGOobD4GZmdA-mgspXlbut1iztABRgUl3YVWhlJIiUtbGF-xutilXlH9zfuofRi146j3djFxd-E_sF-JMvfsEwrdX6UqbB6Py17T6ZWEq0aLX_gA7kG=r0yCfqNcxr=svcAYDp1H6qMVorXWZY_o9qO-MVdpv9V_Wt6YEwf9Gc9xbJd3zdTd190a1eN-5s=Yd=ns11i6ayL1GZP=CvjWSUcPo2nP_slUNIkuFz1kmYa69x7Z4kzs=qAnFuFx6iJs7nLBvGef3C_-55sBIdXjyCrUPSq928Fzdl3pxdWeeOYq0=ElJ4pNhUGtd09BCw_OOGwDKh5yGahabEcH1esyXzYBcph7F1zl9hd4rqper-_rxyHreIFd2Nphe-GiA28m-2oz23f4Gv4DIHwWf9MRJ7EkD9xLyR1BPw7OD9slGThFtC4CHhJE9HEcCjib2LfPeRGZewrCrOzWr1Dp_4ieVAIKC=et80b-yzdE4WHVcvf0RqjUt5Vv3B6-x5B9F3L7hggj_yygTUoIVNlvhrqF4Xknw4sbj7o3s1CCpu6Hn_eOelE0=ZRasjc6wDFp-AidHR_64_E8=K8V2nCZrJO4uR18dL12yCfjcPJl8Y7MDz4d6AeGBY8IPsyuozWXwtU9xrt6ZvvUs5lXif8kSm6tOhNJWttzlRLBpCvNA_G9SRkGYhGdF23xBfoklJhES5waPRxPj6Ju-r7r9Oplgo2sFR=DDlWzt8l1D8aHd4M7LUMHCi1dSPjCrMRgf4C8Nw4-NzXuNY3RIUUlFEsMhjRWttzeiIn2y8NsXFTs48EtvGZtOLOxc4m86GdiU6UHXbL4aDS5eUO46sy=jA4V9IygC5EgrG-zbMx8dVF5H=sAHdZAYaXitNp3xpPMhFMafr3XbnlJ=TecY3lowyKd-D3_Wul7VGf-=V=57-LukRaPueHiwKp_UtJa22GUkN7=lB1_ZBAD3F94NqanW2=MHxK9ErI6jw1OOIG4gUIe08dkuysIuL1NgozPG2WeKsSENpJU8N6zLy2yPbpkzN21wrflIg2-w-Wkm6kJvNYvErXZU7mxNESmwSWw=Ds6D-tBuIaod4X3mAvMAltMo5cNr1oSRgw4u8bcG0DdpMomo_=OVhI=Oi112KC0qYTm_CGgCma-e9S8hmWnE-kqb1pqt8nSJk016Xeqi0e51dMgBImo1_Hpn6TE4Na3tEj8sg8nGc3nEeAg3IV8i5Uk09Uqewu8ok9j5oZ2pRWLUAf2ZBEg9vayG6lLRW4mjVhGAJtWcINC5xEFHpH3-XGnW03MKFdDz2YB9z15O1Ybb---yF4168-3XAckZb01Y29XedRRxHnAxE0uqst66LzXm20gBYB5SDJmHIHKe0qfZDIVyKE_UfB0AhPcWFmvcBl6Fg27gS=0kZ_nhZaht6MIdaHYrwhC=M-bmpVIGeVSTg=piRjMv3mZOMMTm9MR-mUp_qYBA5JBzmCgTmV0VB3xYD4lqMaISjse9UewAREE8_TOnUMsxZ_sw=ne6utwrjb97jh6OghClKucBamq=HVGdHn_aMXaSxTBgOdaTx7M-FMPdI_O2a9NHwRGZIsz5jZU8HOvkogB=Wa7mPcdBtA--6j7Y0YUTPZC9cFPzaqdZuBol5_nyP-RJqOGL8ahqmJzKEkndr4pWk9R3EgZCiujZUuRZ_P-g1Z5BRUZfm2XuJpszJ2hfV59qeNoUZZ3i20_6Gp3HIDfPUhNEBeOxKVdR0p3UqCsLI3JTZLxZnRpjvNMa6wY2u-PvcR8gMZyp_783oYROFkWYG_j_wW1md_sIttIftugJ8tjo4BqCHHfBBt1CtVIun4UM-kep22-NJI3KWcgNLEaD4kj=4boau2l6AkWcWgaWZ6qHLshAKoAKGnvxfTd2FYxesYL6r-mXndAMW_aWooiR5mc_taW11vps2JZdnEB_aOE0kquOfrKobfBsvZKxSlz0oVkw16AFCJu7BpnswoSGJXrNm_AYDMeuS809uCLo36HnhvrJMXGDpXJpf50BnwwrnJnLwp5814AY7Sif6SD5y=21lySFmyFzyi04k_n8FNvrN99JpZBMB0nVvIHjqs5eWycU-M-1HC5DPEjjFdceALb=Trrk_eZnEKfRdrfS0ttKEcNuTi3jh6mJ35cwS-IqpSMP_atI85xso3eDDbp8-HxMOAFG9LrRnv7RIOUMjzx9cjr8IPNalvX=dy608LZJlX9XrnUWOguje=EEUPwxVH4vdGODUra0xdv6uWbuLavriSd3F_FyuGnGYA4V_2Tp03k0yYOHJ9S9wVZdiqU3nvxnwHrUaULgsC8d1OBG-7uS_TdqA2EV9z840tShX3AZUoeVWFlzSYwG7l3Bmxb7BP2fFzPtBu3EApCWu0KTKsAh-nXwMScGkF21nCOIEzJ9ZksoLUM3e5TWEGcAf5OTc4EzGFsp-0g9pjsigTK=LMo817zhWVf2DtCq2g-oS0sLsAlbp4PT2oOgZPz8ZnwjCaklY==Bi-O=Zn_S8WbZqSTI7SftoDVEBT7sb6DxB-LJKtDWRkjjmZAtqjdlNTMMgiNM=H5joyEcOUdjg9UnGMp75MnIDS8SOXnY045WGOdMygIgr3WUS2VJfaeR-snWyZwt3vDEqg-lXKYIrY-gc-Tcb1nRr-Im-Pi6rF0XbFY0s2Kc-GlgvT75SjvV13RX0YlFExS4p-HrJpGvwW3SOLVJ7KZy5bIjVVbRcueMpNjrAHLFrlnzuW4x23E--vIMgGD4vP2MgEUURMv4rtab0qVM7Y-_a-qS2O25aw3P33Me78VzJZB_D_grf5g6rOm878ac4k44oFi5RI9jCfwZTOV=or7kJmhcL-HHijjmC8GHv_-HUV-zTmUNxHan8f6i7WbbYhSkD58ltel_BXIpP0dAh2LrM7HECPlRADxmCzihjxtvhZJHtJHOMsCS4dI4JsLxfVrpOS=0ipsFMIZODBl1XnFSiv9AcUHv-EJGcD8Su5mCUP4lZzww9XxxhuLiudVcBZcgNm_y=DccWs_4_3vzOXWOMOm6uL=t3WAriFRn9o4ZnJDxFpy05L468O7RwtKeUO3Ux_93zIKhe2emPSbSgHE_NgVEiqI5RmL97EOiyqbqiLsfi0j_OcnF2BNkRfXKWDPRyUj4-4_CS_IiIIxk01l6z=3fSJlHpObtKtJvT02jXpz4nBdLOrgIL2eAGwa6M1qe9WLx3x6KLp4FwVTleZuc3GBBefdRylSLndZFDUZt4mVo9ixiyoWjyDEX_ttP3n7FzdjS5N_XJ4anchfCjyOa0LZA5=zyVwbqFJtjd_2l8-gEAMgMgBmEI97BqLBNsuEFZSvZoObY6E_1Xtjc-a2=n0CWu2HFcUvtPA8hycMj8IliZs3z437Rr6qp2=MpaJLODpVvc0SMH0qmZ=61rEiw9oZW2YKSD9UF1wYqbaO4noEOA=zjsRosa741-YAv2ewg6dVu_9XOVt_-Ni4-SDV0AsUmTSmykgcBYYFgj81BeknI6=1H07ck82surNa1qah4ydpRdcG9J2zfjcwIaBwEZtRjp7_hW-DRSi2BuTtZphS8aJp3fAWYk076Nndr4IMCCh0IptvEH9vnUf6uusbyRY6xmTZRzpw6Xs=n_c7UTASiODS-_Yi7MYKdJPZyxB0boyziRa_J8pVBdGI34MzteTO790VvtcT-r2DsWiPaGet=aoWqA0LrE6ifBS3a-n_nKES1xPKV0WzBz6u=ICldR9RPf9kSGWnx_plgCaPTk5skYxdqarCLDdfUoMMoF27cknFfubi0cK3=m1ZBx0=-FEqyz5pbj3fnciwYvMcLA==5hT3Dpfachw7cB_He2aG5nEc_6pnNipmNnTuKPfaW4D64XWxw_XY8CVgPEIVG2aU6e695GiAIF=mPdMo0wab6=yrKrqY8C0p0w0d1Nmv4OtpMN36X9NqamV5aF0Su80WgMeDquNHKtiazf6t82l5Wqb-wDspLAW4F7p0ZMX_Sn=5m9kMfqL6vtALUUVa5pOjqB9cR84rz=2C0wz8MfeRWbNHiJWkb7lA6hqVyZ6MWy3nR=pErvgXUOYU4OIR2Xe5gnjjMz20vZUadG-sae0nGXcRk7jCy7wjiPxXWIc8=DDkGPm_cawuJ5wHSJD0SY892Vont",
"ee30zvqlwf-b": "juzi7n",
"ee30zvqlwf-c": "AOATKnJ9AQAA01p5i4zVnDieWlz3lJvzFSAUoqHQgMwmAGedIPidaSwFYXNs",
"ee30zvqlwf-f": "A2CCKnJ9AQAAN6yBvJ6sYvim__NSpvsjQDci37HaWk7FYYnZ2DICffM_qBKwAUM66ZKuci2nwH8AAEB3AAAAAA==",
"ee30zvqlwf-a0": "K=N5l52ljfMsN4-vf3ClOhpXC-pgP6MfteRLWmj4NMTmL=Su-iHARuchJsSdjGh0eecYwKNGvChr4GwTlj-q6=0g59sKJbNHtfYZtAsPYxUm6lj4GWYHPnZ9ld99KGFJ=GHa0aWL=Rjb9jqNbNfz7hdcHG64XG7dp3VB=JZ1fgZteuIqmhbtMegs4ZMNGLNv0=s7EUiKjyRSyek0HFsfouZ-LxN3KDY5LP-uovN",
}
Has the request header been resolved?
Hi folks - I'm mentally switching this project to abandoned, unless someone else is able to come up with a solution to the magic headers and PR it. I've tried a few different methods and from what I can tell Southwest is just too sensitive these days. They can always tell if you're scraping - requests will just get 403'd. Sorry!
RIP. Thanks for keeping it going as long as you did 🙏
Hey, I don't have time to make a PR just yet, but some other projects have figured how to get the headers programmatically - see: https://github.com/byalextran/southwest-headers, you could likely have this script run, and grab the headers before each search.
Huh... I spent a few hours yesterday trying to do exactly that (even down to using selenium-wire), but the headers I captured weren't working for future requests for some reason. I'll try this out and see if it helps!
I spent quite a few hours attempting this, and could not accomplish much. The headers never worked out for me, so I played around with the chrome webdriver and seeing if I could actually get to the SW search page.
This ended up working which gave me confidence to just use the webdriver code to actually fetch all the data, but the body of all the request looks like this below:
I'm not sure what kind of encoding this is, and decided to stop here. SW likely killed this :(
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed]ko\xdb8\x16\xfd/\xfe\xec\x11DR/\xe7\x9b\xd3$\xdb\xa2\xce\x03\xb53\x99b1(T[\xce\x08\xebXY\xd9n\x9b\x9d\xe9\x7f_\x92\x92#\x91\xa2$R\x8fXV\r\x0c0\xa9l\xd1"\xcf\xbd\xd49\xe4\xbd\x97\x7f\x0f\x16\xee\xd6\x1d\x9c\xfd=\xd8xn8\xff\xeb\x93\xb7\xd9\xad\xb6\x1bra\xe9\x86\xdet\xf7\xf4\xe4\x86/\x83\xb3\x7fG\xff\xber\x9f\xfc\x15\xfe\xe7\xe0\xe1_\xe3\xc1p\xf0\xe4\xaf\xfd\xa7\xdd\xd3\x15\xfe\x84\xdc\xf1\xcd]\xed\xf0\x1f\x03\x08,m\xe4\xe0\xcf\xe7\xbb0\xf4\xd6\xf3\x97w\xc1\x82\\\xbf\x9f^\x0c~\xfe\x1crM\x9d\xdfO\xf3\x9bB\xbaJS\xe3\x9b\xcf\x05Oe\x155\xf5\xe7p\xe0\xfa\xe1]\x18,vs\xd2\x7f\xdc\xe1 \xf4\x1f\xfd\xb5\xbb\xf5\x83\xf5\xd8\x0f\x9f\x83p\x1b\xdf1\xbd\xbe\xc2\xcd,\xbc\xcdV\xf8\xf1\x84\x8e\xcd\xd2\xddl\xf17.v!\xfd\n\xben@\x9d\xfcz\xb0\xde\xba\xfez3\xfe\xe6\xfa+\xf7\xab\xbf\xf2\xb7\xf8\xd1\xb7\xe1\xceK>\xbb\t\xd6\x9bm\xf0<8[\xba\xabM\xea\xfa\xb9\xb7\x0cB\xef& \xcdq\x1f\x91\x8b\xb3`\xea\xff\xc8|2^n\xbdP\xf4\xc1\xcc\x7f\xf2n\x97\x17\xeeK\xe6\x93)\xfe\xf1\r\xffP\x17~\xe8\xcd\xb7\xc9w\x99Q\\\xefV+2$\xf8\x9b\xab&Fo\xe1=\xbb\xe1v\x17z\xe4!\xf1U\xdd:3M|\xdd\rC\x1f\x03\x1a_\x05\xf6\x99N\xae\xae\xbd\x1f\xdbt?\xb6\xc1\xd6]%#o \x1d\xe3\xb1\xf2\x1f\xff\xda\xde\xec\x9e\xbez!y\xc2\x01D\x8e\x81\xef\x05\x96\xa1\x0f0\xfaK\x7f\x85\xc7i\xe6>\xd2\x0f\xcf/\xafn?]~\xb9\xb9\xbd\xbd\xc1\xdf\x19\xff>\xfe0\x19\x9fO.\xf1\xdf\xd3\xd9\xed\xdd\x94\xdc\xf0\xfa\x88\x17\xeev\xff\x98P\x87\xf07\x1d\xffg\xcc\xe8\x13\x9f\xe9\xba\xa6\xeb\xfao\xba\x83\xffJ\x1e_|\x07\xed\xcd\xeb\x1dft\xc7\xc6{|\xf2\xd65-r:\x9b\x0c\xd8\x11 \xbf\x1c\xf5\x7f\x91\x18\xa8\x8e\xce\x10\x1dN\xfa\x95\xdbel\x06\xba4\x1c\xf0\x0c\xe9\x836F\x864\xfcz\x87\x15\xdd\x11<{\xe4\xc9\xd7\x8f\xef\xc8\xbd^\x18\xf7\xf5\x81\x00\x86\'\xad\xffx9\x9fa7\x9f\x87\xeer{\xf9\xdf\x9d\xffL\xc6v\xf6\xf2L>\xb4\xd1{\xfc\xe9w\x7f\xe9\xdf\xae\xcf\x037\\\xec\x1d\x80\xb8\xe2\xe6\xa2\x01\xd3.\x82a\xe5=&\x06\x0b\x81\x19\xfdlr\xc9\xc6W\xe6\x7f\xb9\xebG\xefn\xe5\xae\xbdW\xef\xec\x1e2?\xff$\xf3r\xfe\x18\xd1A(\x9b<\xd91\xa2>\xca\x9a*<\xa3\xb3i\xb9\xa9\x02tf\xe4\xcf\x1c%\x03Bo\xe6\rO\xdd\x89\x9b7\xd5\x87\xda\xa6Z\x1d\x06\xc6T\x81\xa1\xf3\xa6\xdaI\x10\xb0U\x92I\x1es\x82\xe4\x1d\xff\xf7`|q?\x99\x91?\x08\x9f\xc1\xff{\x8e>\xfb\xb0\x88(\xce?\xb3\xc9X\xff\x04\xdf\x0fgC\xec\xdaC<fC\xde["7\x19\xf2.\x11=\xe7\xf0\xe1\x86\xfcG\\|\x88\xa7\x97ts\xb8)<\xc6C\xbe\x9b\xf1}|_\xa2N\xc4\xcd\x11\x18\x86\x91\t\xccW\xeef\x83\xad\xdf\x0b\xbf\xf9\xf3\xd7\xd7\xf03\xbe\xe8\xe1\x99"\x8c\xcd%\xea%\x1e\xb3\x14\xe5\x98n\xdd\xednC>L\xbd\xdbbkYE\xd4)jl\x19\xd3\xa8\xaf\xee\xc6\xe3)\x15\xb0G\x9a3\xca\xa1T\xf1kx\xe6\xfe\xf06\xe3\xf5\xe2\xca\xf36\x0c\xb3\xb35\xbd\xe4V%^\x89\xbb7\x9f\x87;wu\x17\xf8\xf4}9\x00\xba\xa3\x93\xeb\xdf]\xff\x9b\xb7H\xfa\x84/\x11\xce\xc9\xc1\x8d/\xfdsN\xf0qf\xc3\xf3f\xe0N5\xd7\x0b\xb8\xa1\x854\x0b\xe4\x8e?V\x10\xdb\xcd\xc4[b\x8eh\x96\x80o \r\xd9j\xe0\x17*\x81,\xf8\x08\x0f[\x0e\xf8D%p\xe0\xe3K\x91sZ\xe7\x8d\xfaz\xd4\\?\xc0\x87\x96F\xa7\xff\n\xben\xe8\x9a\x99\x0f\x9d\xd8\xd7\x8b\xd4Z\x16n\xfctb\xb8\x7f\xfe,f#\x15\xc5\x08\x10\xbc\xcd\x9c3(!FLS$FF\x10\xe2[!\x82\xa5ZDA\x7f\x00E.G:\xd0\x8a\xfe\xb8\xb8\xbc\xc9\xb2\x89\xa8\xcb,\xa7\x03\xd2\xf2C\x00\x80>\x92%\xb9\x8a\x03C\x1b~\xbd\xc3n\x8b\xd39-\xcb\x8f\x02\x14XJ\x872\xea\x03\xe2\tIV~\x1c\x18\x99\x12\xf9\x11\r\x82\x1a\xef\xa5nYQ)\xe37\x84\xa9\xe7\xce\x15e\xcc\x97\xdc\xcc\x1b\x9e\xba\x0fwP~\xd4\x80\xa1L)w\x12\x84&\xe4\x07\x1e\xb3!\xef-YJB]"z\xce\x98C`\x17\xc7\x14\xc2I\xb5FZ\xe2\x19\t\xe9e|\x1b\xdf\x15\x86\x91\x10\x14\x9ac$\xd3\xdb\xc9\xc5\x97\xdb\xfbY1!\xa9A\xe2\xeb\x0eZ\xd2Z?\x06M\x8a\xfc6bi\xb4\xb5>\x0cZ+\x14\x92}\xbb\xedg\xa4Q\xfcZ)\xa1\x90d\xd2\xcbPH\x93\xbe\xc9\x91\x81ZY\xcd&\xcf\xab\xc6&I_Za\x93\xe7\xf7\x9f\xb2/\x073\xc3&\x81\xec\n\xa1\x18\x0bl\xddP\x86\xb3(\x0f\x0cm\x98\xbf\xa3\x83\xaf\xe8\xea(0oh\'\xb3>h\xc8r\xc9\x83\xe3R\xc2%\xa3!P#1\xc4?Y;\xb5\x84T\x12\x08X\x8c^4g\x94\xb1\x18\xbd\x11\x07\xee\xa0\x9d\x96\xa0p}\xf1\x90\x87\x02\xcb$\x91\x84\xa1\xc6\xf3\xb1$2f\xc4:\x9bG\xc6L3\xd2h\xd3\xa5\xc8N\xa3!\xa8b\xa7\xac.\x84R\\\xdb\x8a\xb4^5+\xb5\x04\x1b}\xaaV\xda\x04\xd7\xc6F5\xe4g\x13!\x03\x82\xfb\xcb\x11g1)\x03zH\xb5FZ\xe2\x19\x90.l\x8dv\x85a@\x18\x84n,\xfe\xd5Y\xe87\x80f\xaa.\xf4C\xa0\x19o\xb7\xd0_\x17\xec\xa4\xb5^\x80]\xb2\xcc_\x0c\xb6\xad9\xaa\x0b\xfb@\t\xec\xba\x0b\xfb\x8dx6m\xad\x1f`\xd7Y\xd675]uY\xdfV\x02\xfb\xad\x97\xf5E\xabD\x92\x9a\xcc\x11j2\xc3"\xcb\xfa\xd06\xda\n1\xea\x8a(\xbb\x18\x0bb[\xa2\xee\xb3\xeb\xa6\xf2K\xfc"0\xa0T\xc4@\x85\x81\x81\xe9\x88\x81\xa3\x8d0*@\x81\xa5r\xa3\x0c\x953\x15\x02\x8c\x0e\x0bL\xd9\n\xffX=\xb2\x85z(k\xa9\xa6\xb4,Cud\x19J\x93\xff\x8a\x84\xb7\x93\xb2\xac\x04\x86\xd9]>\x0c\xdcnT\r]&\x86\xc6:\x032\xbaL\x1d\x1a\xd20\xa7E\x8a,5\x1a\x83J\x96\xca\x0e\x91%)\xcc\n^o\xe5\xc2\xcc\xd4y\xab;\x840\xc3f\xc5\xc7e\x88\x08\x17\xa4\x81\x14\xa9\xb8\x0c<\tr!X\xa4\xa5lX\xc6\x1e\xebb\xfaFP\xe8\xc2\xd2t\xae\xc0\xf9\x88\xbby\xe9|\x1c~ld\xd0\x92\xd6\xba3huH\xaf\xe5`\x99\x92OzS\x81L\xa0\x84\x02c]l)\x8a[\xdb\xb25#\xff\x1e\x9e\x02;\xd0T\xd4;\x9f1Zw\xd6\xe7\xe1\xe7F\xb0OZ\xeb\t\xf6\xa6\xa9A\xa3\x11\xec\xed\xa2\x86\xc4\xd8#\xa8"\x7f\xf0\xb3\xa2\xb7\x94?\xb0\xb2\xfc\xb1\x84[R\xc0q\xda\xdc\x93\xb2\x04\x1b)]\xda\x93\x8a\xbb_mSJ\x88\x86n\x9f\x19r\x814\x8a#C\x1b\xee\xe9\xa6T\x0cC\xc9\xae\x14\x90\xde\x96:82\xa7m\xa9#\xd0?\xa7m\xa9\xd3\xb6T\xeb\xdbRV\xb2J\xcdO\x19\xcc\xe25\x99\x02O\xfbR\xc7\xbe/\xa5\x8c\xf6ic\xea\x887\xa6\xaa\xf9\xf6ig\x8a\xa2\xdd\xbb\x9d\xa9\xea\xd1\x82\x16\x12I3\x88L \'\xcd\x14\xe4XgB\x04\x85\xec*\xee2\xbb\xc8o\x08\xe4\x98\x80\xe4\xe6 \x80dI\xbf\xea\xc8\xa04\xe9om;\xaam96\x19Osa`8\xdc\xa8:\xc9\x15#\x83\xa7I\xc9\x8c\x13\xd5(A;M\x05\x9dR\x92\x1b\rA%C\xe5\x12\x1d\xb2\x8a\xd5\x96\x0f\xa4\x04\xd5\x8d\xd7IojT4\xde\x12\xc5Z]\t\xb0\xe9c\xbadN\xce\xc1\xb5@\'\x9d\xf9\xa4\xc7\x94\xf5\x18\x1e\xb2!?\x9d\x08H\x16\xa2\x9c\x8d\xc9\x126\x01\xa7\xc7HS<g\xb3\x92\xec\xe2\xb7\xe3l\xad\xa7\xe4\xd4\x1e\xb4\xa4\xb9^\x0c\x9a\x94:h\xc6\xd2hs=\x18\xb47\xcc\xea\x8e\xaf\x96\x95\x98\x82\xf9Y\xdd\x0e4[\xda\xfePM\xf0f\xee8%x\x9f\x12\xbc\x13\x91(\x1f\xfd\xd5\xbf\xfcn\'J\x03f\xc2\x14E\xbaPDc\xf4\x88\xb0\x88\'\x8d\xf2%\xf6\x14)\x91\xca,\x16yp\x07\r\xb5:\n\xac\xe8\x81R\xc5\xa5\x0e\x8eA5*9\xc5o\xe4\x07\xcc\xfd\xa6\x8d\xe4\xdc&\xad\x89rnu\xfa"\xcf\xe4\xdcF?\x92z\xbfc\x10\x86\x11\xfe\x87^\xfd\xd3G\x9ae\xe5.\xc7)\x84i\xa0\x91\x86\xa0\xe2Z\xa0\xe1(\x15\x9a\x82\xa6\xa3\xbe\xce\xff\xe0L\x1b\xccQ\x8fZ\xeb\x07\xf4#\xa4\xa1\x92\xd5\xdb\x82\x85_\xabd\xcd8\xb3\xcc\x8f\x94\xc0F&\x04j\xcb\xfc\xd431\xf3n\xd0\xcfik\xfd\x00\xdb\xb44\x90\xbf1\xa3\xe0\xe7\x06\xd4\x9c\x92\xcd\xa1\xac\xa5)A\x8f\x9f\x15\xbe\xdd\x9a\xbf#bZP\x8f\xca{\x96f\xa3\x88\xe4\x08\x006\xe9\xac\x8d\xec\x96J\x04(\xb2;\xda\x99V\xf4\xc8\xfb\xdb\xfb,\xc1\x88\xbb\xcf\xae\xff\xeb\x92\xeb\xffB4p\x7fe8\x86\xfa\xc8\xd0\x86\x8f\x7f\xfd\x7f|/X\xff\x8fa(\xcbG12\x8a$o\x03@\x0c\r\x92\x93$\xea\xd0\xa0l\xc5\xdb"\xe7\x8f\xc6\xa0\x92\xa52Cde\xa8\xb0#\xa9\xd9\x80Q\xc3v\xe9\xcdjK\xadY\xdb-\xd1l\xd1\x18\xa8\xa9\x05\x9b\xd6\x8f\xac\x94Z\x86\xdf\x86Fv\xe9y?\xb3\x96/=gw\xe6\xd4g\xb9\x0e\xfaru\x14\xca\\\xb9\x93\x18T\xd3l\xd7\xf1z\xfd5\xe5rx\xc8\x86\xfcd"X\x945\xe9\xe5\xd4\xa2,\xf1o\xba(\x9b4G\x9a\xca.\xca\x1a\x82EY\xda\x17\x86\xcca\x14\xba\x12\xb2\x014\xdbl\x84\xcc\x19\x9a\x8d\x14\xc9\x9ce)\x05g!\x94\xc7\xe3\x0bw1\xaec\xd1V\x1b\xfb\xa4\xb9^`\x8ftS3\x1a!\xf2&\xd0tE"\x8fL%\xec\x91eYj\x1a\xee:\xde=i\xd2\xefis\xbd\xc0\x1eZ\x8e\x06\x1bY\xac1pC\x8a\x8b5\x08(a\x8f\x9f\xf5MsjD9\x97q\xae@\xd9\x9e\x92-\x12qQ67\x18\xe9\xb0#%\x05\x98\xfc\x84SI\x81SI\x01&\xc9\xe6\x97-)@=\xb4\xaaBAQeZ\xf1\xb4Q\x9e\xb7\x0e\x15\x15\x9b\xc8\x85;\xa8Pj\xc0PE\xa2\x1c\x1c\x84j\x12\xe5S\xac)>5\x92\xfe\x9b\xb4&N\xff\x85\xe2c\x0c\x0c\x9d=\xc6\x00\xa3\xd0\x11\xaabCmT5\x87\xc0\xd0t\xe5\x1c\x02\xb5#K,\xa4\xb8\x934\xa1*\xe2\xd3p\xd2\x08\xdaIk\xfd@\x1b\x8d\x90\xe6\x94\xe4h\xe7\xca\x10\xa4\x01\xc5\xf4n\xc3PB\xdb\xb0\xa1\xad&C\xa87Z\x93&}\x9b\xb6\xd6\x13\xb4\xb1\n\xb4JV\rr\xd1\xd65\x94\xbfr!F[\xf1D\x1a\xd3\x12\xa3\xdd\x8a\xf0\x18\x89\x8e\x81\x83@\xae\x96\x998\x98\x8df\xd4\x00\xc3\xb4Z\x11\x1e#\xd5\xa3\xe7hg\xde0\x9aM\xe77\x8f\xe4\xa3\xd9\x84``\x07\x93)C\xa4>0\xb4\xe1\xf6\xa3\xd9Z\x17\x1e\xf9(\x94E\xb3\xc9gF\x1c\x1c\x99\x16\xc2\xd9\xa8\x8b\xf2\xcaC\xf6\xb8\x12a6\xcd~\xde(_\x97\xd73\x86\xa7\xee\xc3]T\x1e\xd5a\xa8r\\\xc9\xc1A\xa8\xa6<\x1e\xe2\x10\xb4\x07a\xa0\xcbH|\x82\x1aq\t6\xd0Ew(;IZ\x13\x05\xbaD\xf1\xef|\xa0\x0b\xed\n\xcbN0\n\xdd`\'$\xd8D\xcfg\'*\x8b\xa4\xa66R\xe4*\xc8@J:\xc4vFU"\xda\x1er"\xdaT\xb1OZ\xeb\x07\xf6\xc8ijc\xcc\x84\x1aT\xdc\x183\x90\x12\xf6\x86\xe9(\x06\xb8=\xc4!i\r\xfa=m\xad\'\xd8\x1b\x86f6Rp\xcc\x18i\x86\xa2"%\x02XE\xa3`\x05\x9b\xa7Q\xf0\x0ba\x15|\xc7\xaf\xc0\xfdo\x90N_\xb9O\xfe\xea%\x9a\xff\xc5\xbf2\xe4\x8fo-V;{9\x93w\x846\xe5\x8cKw\xb3\xc5\xdfH^\xa2\xd8-h\xd4\xe7\xfe\xc8\xfb\x14\x86\x99\xc3\xedo\x825y\x03g\xae\x9f{\xcb \xf4n\x02\xd2^\xc4\x0f\x92;\x82\xf5,\x98\xfa?\xf8\x0f\xc6K\xac\x81\xe8u\xae-\xf2\x92\xbd]R\x89\xc5\xde\x113/\xf6\xe2\x85\x1fz\xf3m\xd2\x083\x88\x91\x81-dX\x8a\xd4\xd8I.s\x8e\xe2d\xda*J\x11\xd1\xed[\x08-A\x9c!\x91\x88_f\xb7_\xa6\x1f\xfe\xa8\xa4\x14mni\xb5\xbc\x14\xa9=\xa3\x9d\xe1\x89\xba\x9cR,\x19Rq\x15\'\x9d/3\x10\x9f\xbe^y\xe1\xdf\x90\x08\x8b\xa940FZ\xc1t7\xcc\xb0:\n\xacR4\xb31t\x92B\xf1\xf0\xc0\xd4K\xa1\x8f\xe7M\xbe\x96\xb0\xc5\x07\xd1\x19\xd1N\x9c\x94P\x14\x05\x15\x8e$\xf6\xecl.\x85\xa6|w$\xc7\x85;\xb8\xa6Q\x03\x06V(f+bt\x12\x84\xbaI\xf4\x84\xde1\xa9\xcd\xf6~\xe1\xd9d(^\xec\x12\xcc26\xf6pA\x0e=\xa1\xa0|/\xf9e\xec\xb8+L\x19%\x82\xc20\xb2\x80#.j\x86lMW-j\xa6\xb8EU\xa3\xa8Y\x13h\xb3\xc9\xff\xc7\x8fv\xad\xa2fHC\xaa\x1b\x92\x8a\x9b\x165\x8a\x9a5\xe6\xdb\xafU\x0bz\x80v\x9d\xa2f\xbaf\xaa\x165\xb3\x94\xd0\xaeZ\xd4\xac\x9a\xf0\x80"J\x05\xe3\x9a\xa5\x95\x8a\x9a\x01\x08H\xb0\x07\xb0A;\xca\x03\xaa\xf28(*\xa2\xda\x88\xf2\x10\xee\x8e\xc4\xfdg\t\x9d!}P\xb9\x88\xe1\x9a\x12[!UF\x866\xdc\xfe&U\xdb\xd2\xa3\x08\x06\x96\xd09\xd9]*\xe9\x04\x9e\x83CSo\x97J\xc8z\xa9\x93\xf22Y\xd6V\xf3r#u\x99\x01aR\xbe\xca7Hr\xbc\xb8\x83\xb6Z\x03\x86*\xe7\xc9\x1c\x1c\x84&\xc4\x07\xb3Z\x1d{\x8b\x80\xa0\x98\xfcj5\xf1qN}\x90\xa6x\x86\x12e\x06\xd8\\s0U\x8c5n\x0e\xc3\xd0\x8d\xe5\xea~\xab\x8f\xdap\'\xcd\xf5\x03\xee~\xcb\x8ff\xbc\x9b6\xd7\x13\xb8O\xfa\xa3\xa4\xa4\xef\xbe$@\xb1\xfe\xb0\x85\x1b\x1f\x00\xd1\xa4E\xe0\x00\xa7\xf9\x189\x9b\xabV+I\xe5\xda\xd2\x1fcAZH\xdc\x7fV\x7f\xc8g\xe7\x88\xea\xf8\x8e$\xb2\xd4\xab\x8c\x0cm\xf8\xf8\xb7>\x8a``\xf5\x87\x99\xe1t\xf4h\x11\xc9\xfc\x9c\x03CS/?GL|\x89\x93\xf2Qr\xa6t~\x8e.\x14dR\xd4\x17\t\xf2\xc2\xd4\xbd\xb8\x8bU\xdf\xaa\xc3\xc0\x9dy#\x99\x9fs`\x10\x1a\xd1\x1f\xe9\x18~{_\xd7\x95g(\xd4%\xd8Tb\xec\xe3\xbc\xfe\x18O2\x0c\x05%\xb1\xff|_\xb8C$\x80\xd3\x8d\x82P=\xd7\x1fu\xe1N\xe9\x8f^\xc0\xdds\xfd\xd1\x88wG\xfa\xa3\x1fp\x9f\xf4G*\xf7\xc0\xa8\x1cxe\x1bB\xfda\xda\xf9\x91W\r\xe8\x0f\xf2\xc4]\x8e\xbc\x8a\xfb_iM9\x07\x0e QF\xac\xd2\xc8\x00\xc1\x11\x06\xc7\xa7?\x8a`([S\x86\xb2\xfb\x1f\x87\x87\xe6\x14|u\n\xbe\xea\x1e\x08-\x04_Qo\x11\xac\x90\x82\xe4|\x88\x98R`\x1f?E_\x1d\x9d\xfe\xa8\r\xf7)\xfc\xea\x98\xf4G3\xde}\x8a\xbf\xea\xa5\xfe\xb0s\xea\xdb\xc8\x9cwc\x0bk\x93a\xd9J\xfc\x01\xeaF+\xf2\xc3V\x8ed\xb1\x05\xd5}[\x0c\xbf\x8a\xba\xcf\x85_\xc9Q\xba\x1c4t)6Qad\xf44\x9b\xe8Y\xf8U\x04\x03\x17~\x95\xa1tHz\xfb\xe3\xe0\xd0\xb4\x10~E|4\xa3\x94%\xd5\x87)<o\xc5\x96\xda\x0e\xa27+\x05\xfe\x08\x9d\xb8\x83\xea\xa3:\n\x9cP\x96\x12\x1f\x07\xc7\xa0\x85\xe0+\xea+\x02z\xa2S>\x91\x0e\xcf\xc0\x1e.\x11|e\n\x0e\xc3\x88\xfb\xc2\xd2\x13\xdd\xe8\x06;\xe9\xb7\xf6\xa8\x8dvq\xec\xd5\xd1\xa1\xddo\xe9\xd1\x8co\xe7\x86^\x1d\x1f\xda\'\xe5Q\x9e\xf9!s\x9c\xbdx\xe7#\n\xb97\xa1\xa08\xd9\xa1\x12?\xdeRy\x9c\x12?:\xa1<\xe4\x12?\xec_9\xef\xc3\x84|q2\xb1F\x16\x1c\xc2\x04\xac\xa2y\xa3|\xc5\x1d\xaa\x91^\xa1\x0f\x1f\x9f\xf0\xb8\xbd\x99\xe5\xa1\xc0\n\x0f#c\xa8fF!\xe7\x9c\xc1$F\x06\xbf\x8dM\x19KUF\x866\xcc\xc9\x91";\x8d\x86\xa0\x8a\x9d2#\x94\xf5dqZ\x8c\xf8d\x1b)#u\xd2E\xa0\xcbK\n\n\x8d\xf4\x08\xd2b,\xda\x9c(p\x9eeo\x18\x84n\xb0\xb7:\xca\xcc\x00\x9a\xa9\xaa\xcc P:\xcb\xa6\xdbY1G\x87v-efk\x8er\x91p%\xb4;\x9e\x14s|h\xd7Qf\xa6\xa6\xab*3[\t\xed7\xcf\x89\x11\x969\x92)\x1bm\x8d\xc4{B\xf4TV`\x8e@[91\xca\xb5\x95P;\xd2L\x1c\x0c\x15\xf5\x9f+\x07&\x9f\x13\x93\x85C\x979\x82\xa2\xca\xc8\xe8\xb6\xe0\\\xbd\xe3\x93fE0p\xf5\xc0\xb29\xf9@6&\xed\xe0\xd0\xb4\x10\x93F\x9d\x94\xb5\xd5\x98\x8eK\x9c\x90;\x12\xeeH\x18\x12E\x8bi`B\xca\'\xa5\xc2\xa1D^\xdcA[-\x81\xe1\xee\xfd\x1f\xb90p\xf9[\x99m!CV\x9d\xe5@\x13\x87\xc66\x0f\rLG\\\xda\xa5\xea,\x1a\x83J\x96\xca\x15\x82\x97\xda9\xcb\xab\xe4\'c\xa7l%?)\xa9\x9a\xb5\xd36\xc2\xf6,\xca\xae2\x89\x05vr\x92\xe0~u\xdd\x91\x08\xdb\xa3\x98\x0b\x02{\x0cz9\x9dX\x80a\xe8Fbs\x89@KU\xd9EG(\xd7>b\xb4.\x9d\x8f\xc3\x8f\xcd\x80\x9f4\xd7\x0f\xf0-\x07\x8b\xae|\x06\x9f\x02\x1f\x96\x80\x8f\xad\xc8R\x04\xdf\xb6l\xcd\xc8\xbf\x87\x07\xdf\x81\xa6\xa2z\xfb\x8c\xd1\xba\xb3>\x0f?7\x03~\xd2\\O\xc07M\rJ\xd5\xd76\xcb\xc0\xb7\x8b\x1a\x12\x83\x8f\xa0\x8a\xe7\xe3g\xadt\xf8h\xb3\x05\x0e\x80L\x81\x03$\x14s\x0e=|\x14\xa0v\x02\xfc\xaa\xd47\x00\xed\xd478\x7f\xf8 `\x1d\x0e\xbfw\x01j\x967\x90\x0b\xd8\xa9\x90C\xcf\x04\xect\xf7`\x95\xea(0\xd4\xcf\x16\x1c\x01\xa4 \xe4\x0e\x0bL\x89\x90\x8b\xc6@\x91\x1e\x13\x0fe-\xd5\x91\x15r\xd8\xa1@\xfe\xb4QF\x90\xf5\xb4CVv\xe1\x0eZj\t\x0c\x93\xf14\x17\x06\xc6TQ\xb6\xb8\x81\xb4\x90\xcb\x81FN\xc8U\x80\x86\x11r\xe5\xdbl\xd1\x18T\xb2TV\xc8\xe95\xceg\x95\xb4SF\xc8\xc9l\xb4\t\xec\xb4\t!\x87\xcdJ&C<\x8akJ\x9fo\xe2X\x9c\x8e#-\xf1k\xf1:]\xc3\xcfY\xdaO\xb39\x8cBslnz;\xb9\xf8r{?+&s5\x04P\xddAKZ\xeb\xce\xa0\xbd\x8d\xfe)\xa5\xc0\x9d\xd7?u\xb1OZ\xeb\t\xf6\xc5\xf2\xe7\x97\x12<\xe2D\r+\x8e/*\x13<\xc2\x8a\xd2qF\x13~kw$\xa5\xc9\x12D\x88\x9cR\x9aN)M\xaf\x1bZ\xbfnJ\x13\x8a\x96\xf0S\xb6\xba/\xe6X.z\xa0(jk?u\x94\x87Z\x1a\x99\x90Vu/>\xbe\xd0\xc2\xe9X`\xab1\x0ce;\xad\xf2\xb1\x85bh\x0c\xb9T\'uh\x8cl\xaaS\xe1\xf1\xdc\xe3\xca\x96\xca\x0c\xd1HJ\xf3\x98\xc2\xf8\x0cI35\x05\xf1\xac\xaafz\x04i_\x90.}gRC,z9\x9d\x1aB\xa4x\'"\x90~\xa9\xe8\xc2\xa6\xf3\xbe\x8e\x0f\xee_*\xbc\xb0\xe9\xc4\xaf#\x84\xfb\x14_\x98Z\xc04\x05\x19\x1c@\xae\xe6\x9d0\xbe\xd0\xb2\xc9\xec\x07\x0c\x04\xdb\x10h\xf4\x81\x95\xb8.\xedL;\x02m,\xa8\xf5\x1cu\x9f\xd5gP2\x8f_\x08\x86,\xb1R\x1e\x18\x96X\x1dmta\x01\n\xac<\xcb\xe6\xf1C\xd9\xe0\xc2\xc3#\xd3F\xc1m\xe2\xa2\xbc<\x13\xed\x9e\x8a\xe4Y\x9cI$\x9e7\xca\x06\x84\xc9\x16\x92\x89`\x13\xfap\x07M\xb5\x04\x06\xf1\x9eT\x04\x03+\xcf\xb2\x99M(c\xaay\xf2L\x08\rp\xe4N\xc6U\x86\x866\xdc\xf6\x9e\x94`\x88\xe4\xe4\xd9(*IY\xcdLG\xe9\xb2\x93R\xb9_Y3m\xa1$9\x9dO\x84g6rE\x8b\xf1$(Q\x91\x9c \x9e\r0\xa2]aW\xd81\x08\xddXa\x97\x0f-\x04\xc7\xaf\xd5jb_\\\x9e\xfc\xf8\xb0\xef\xb9Tk\xc2\xd3s\xab\x93\x1f!\xda\xc5JM\xc5\xd3\x0f\xaa\xdb\xf0+`\x15|\xc7\xef\xbc\xfdo\x90N_\xb9O\xfe\xea%\x9a\xf1\xc5\xbf2\xe4+\x03\xd1\x96\xb0\t=\x05\xb3\xe0?\xdez\xff\x03x$v\xf3\xb9\xb7y\xe5\xaf\xeb`\x8bi\xcc\x9c\xbe\x187\xfb\x81\xde\xf9\xd7\x98\xc3,\xdc\xadK\r\xd1}!\xdc\xe7\xc3z\x19\xbc\xa2\x1b\x93_\x7f3\x0fv\xebm|\xf9\xda\xc5\x1d\xf4\xd6\xee\x1a\xff\x89\x1f\xed*\x08/\x82\xed<xJ\x08H\xd9\xf7\xa7\xdf\xb1M\xfc\xef\xf5\xfb\xf3o\xdf\xc8E\x17\x8f\xd2\xbb\xd0[\xf8\xdbw)\xae%\xfcp\xdf@\xfc\x157|\x17\x06\x9b\xcd\xd4[\xad.\xd7\xee\xd7\x95\xc7\xdd}\x89\x7f?\x14\xdd\xbf\x7f\x80\xbf\xdcg\xffw,W#\xd6KP\xc6ol\x80~\x03(\xa2\x87W~\xb8\xd9\x92\xd7\xfb\xd5\xea\x85\x10\x90\xa8\xf1\x10\xdf\xb5\xf8\xe4}\xc7\rnR\x9d|m\xd6s\xc3\xd5\xcb\xb9\x1f.\xf2\x9e\x0e\x03\xf7\xe3e\x12<\x06\xbb\xed\xeb%\xf7\xe5\xce]q\x00,w\xeb\xc5\x86\xb9\xf6\xf3\xe7\xff\x019\xe0\x9f\x14\x18\x06\x01\x00'
Hi @redfern314 ,
Have you looked at https://github.com/jdholtz/auto-southwest-check-in/ to pull the header information?
CMD line returns 'success' because the code is coded to catch HTTP request errors (403, 500, etc.).
I believe the issue is with CORS, and unless you are on the website and on the debugging console running JS it won't work. I have read up on a few options and there may be a way to use Node.JS to get past the CORS issue.
Hey folks - appreciate all the input here.
I'm going to archive this repository. Any of you are welcome to fork and revive it, using whatever method you think will work; it's MIT-licensed so go wild. However, the main complaints I had when I originally made this have been resolved:
Personally, I don't have much use for a tool that runs locally and breaks frequently, when I can just go on Google Flights instead :).
Hey there, thanks for making this awesome tool. I really could use something like this for some places where Southwest has planes flying between two locations that require a layover they don't make routes for (like HNL to LGA).
Anyway, when I search I get empty results:
Any ideas? I updated the request headers as mentioned in readme.