summaryrefslogtreecommitdiffstats
path: root/Python/compile.c
Commit message (Collapse)AuthorAgeFilesLines
* bpo-46831: Update __build_class__ comment (GH-31522)Miss Islington (bot)2022-03-031-3/+2
| | | | | | Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com> (cherry picked from commit 81d968b7c30d5b41f3f28b297b7ee5345d569509) Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
* Set line number of END_ASYNC_FOR so that it doesn't show in traces. (GH-27255)Mark Shannon2021-07-201-0/+6
|
* [3.9] bpo-39934: Account for control blocks in 'except' in compiler. ↵Irit Katriel2020-11-171-8/+11
| | | | | (GH-22395) (GH-23303) * bpo-39934: backport PR 22395 to 3.9
* bpo-41531: Fix compilation of dict literals with more than 0xFFFF elements ↵Miss Islington (bot)2020-09-041-1/+1
| | | | | | | (GH-21850) (GH-22107) (cherry picked from commit c51db0ea40ddabaf5f771ea633b37fcf4c90a495) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
* [3.9] bpo-41218: Only mark async code with CO_COROUTINE. (GH-21357) (GH-21362)Pablo Galindo2020-07-061-4/+6
| | | | | | | | | | 3.8.3 had a regression where compiling with ast.PyCF_ALLOW_TOP_LEVEL_AWAIT woudl agressively mark things are coroutine even if there were not. (cherry picked from commit bd46174) Co-authored-by: Matthias Bussonnier <bussonniermatthias@gmail.com> Co-authored-by: Matthias Bussonnier <bussonniermatthias@gmail.com>
* Make sure that keyword arguments are merged into the arguments dictionary ↵Miss Islington (bot)2020-06-011-0/+3
| | | | | | | when dict unpacking and keyword arguments are interleaved. (GH-20553) (GH-20569) (cherry picked from commit db64f12e4deda2abbafb6d2bd5c06762fca991ff) Co-authored-by: Mark Shannon <mark@hotpy.org>
* bpo-40334: Don't downcast from Py_ssize_t to int (GH-19671)Pablo Galindo2020-04-231-1/+1
|
* bpo-40334: PEP 617 implementation: New PEG parser for CPython (GH-19503)Pablo Galindo2020-04-221-0/+67
| | | | Co-authored-by: Guido van Rossum <guido@python.org> Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
* bpo-40268: Add _PyInterpreterState_GetConfig() (GH-19492)Victor Stinner2020-04-131-3/+1
| | | | | | | | Don't access PyInterpreterState.config member directly anymore, but use new functions: * _PyInterpreterState_GetConfig() * _PyInterpreterState_SetConfig() * _Py_GetConfig()
* bpo-40147: Fix a compiler warning on Windows in Python/compile.c (GH-19389)Zackery Spytz2020-04-061-4/+5
| | | Change the type of nkeywords to Py_ssize_t.
* bpo-40147: Move the check for duplicate keywords to the compiler (GH-19289)Pablo Galindo2020-04-031-0/+29
|
* bpo-40067: Improve error messages for multiple star expressions in ↵Furkan Önder2020-03-261-1/+1
| | | | | | assignments (GH-19168) Co-Authored-By: Batuhan Taşkaya <isidentical@gmail.com> Co-Authored-By: Pablo Galindo <Pablogsal@gmail.com>
* bpo-39882: Add _Py_FatalErrorFormat() function (GH-19157)Victor Stinner2020-03-251-16/+12
|
* Use calloc-based functions, not malloc. (GH-19152)Andy Lester2020-03-251-8/+4
|
* bpo-39562: Allow executing asynchronous comprehensions in the asyncio REPL ↵Batuhan Taşkaya2020-03-191-2/+5
| | | | | (GH-18968) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
* bpo-39220: Do not optimise annotation if 'from __future__ import ↵Pablo Galindo2020-03-181-1/+5
| | | | | | annotations' is used (GH-17866) Do not apply AST-based optimizations if 'from __future__ import annotations' is used in order to prevent information lost in the final version of the annotations.
* bpo-39988: Remove ast.AugLoad and ast.AugStore node classes. (GH-19038)Serhiy Storchaka2020-03-171-100/+43
|
* bpo-39987: Simplify setting lineno in the compiler. (GH-19037)Serhiy Storchaka2020-03-171-50/+18
|
* bpo-39969: Remove ast.Param node class as is no longer used (GH-19020)Batuhan Taşkaya2020-03-151-18/+19
|
* bpo-39965: Correctly raise SyntaxError if await is used outside async ↵Pablo Galindo2020-03-151-4/+8
| | | | functions when PyCF_ALLOW_TOP_LEVEL_AWAIT is set (GH-19010)
* closes bpo-39922: Remove unused args from four functions. (GH-18893)Andy Lester2020-03-111-17/+17
|
* bpo-34822: Simplify AST for subscription. (GH-9605)Serhiy Storchaka2020-03-101-157/+45
| | | | | | | | | * Remove the slice type. * Make Slice a kind of the expr type instead of the slice type. * Replace ExtSlice(slices) with Tuple(slices, Load()). * Replace Index(value) with a value itself. All non-terminal nodes in AST for expressions are now of the expr type.
* bpo-39890: Don't mutate the AST when compiling starred assignments (GH-18833)Brandt Bucher2020-03-081-2/+4
|
* bpo-39639: Remove the AST "Suite" node and associated code (GH-18513)Batuhan Taşkaya2020-03-041-4/+0
| | | | | | | | The AST "Suite" node is no longer used and it can be removed from the ASDL definition and related structures (compiler, visitors, ...). Co-Authored-By: Victor Stinner <vstinner@python.org> Co-authored-by: Brett Cannon <54418+brettcannon@users.noreply.github.com> Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
* bpo-32856: Optimize the assignment idiom in comprehensions. (GH-16814)Serhiy Storchaka2020-02-121-18/+52
| | | | | Now `for y in [expr]` in comprehensions is as fast as a simple assignment `y = expr`.
* bpo-39573: Use Py_TYPE() macro in Python and Include directories (GH-18391)Victor Stinner2020-02-071-1/+1
| | | Replace direct access to PyObject.ob_type with Py_TYPE().
* bpo-39320: Handle unpacking of **values in compiler (GH-18141)Mark Shannon2020-01-271-32/+58
| | | | | | | | | | | | | * Add DICT_UPDATE and DICT_MERGE bytecodes. Use them for ** unpacking. * Remove BUILD_MAP_UNPACK and BUILD_MAP_UNPACK_WITH_CALL, as they are now unused. * Update magic number for ** unpacking opcodes. * Update dis.rst to incorporate new bytecodes. * Add blurb entry.
* bpo-39320: Handle unpacking of *values in compiler (GH-17984)Mark Shannon2020-01-231-96/+107
| | | | | | | | * Add three new bytecodes: LIST_TO_TUPLE, LIST_EXTEND, SET_UPDATE. Use them to implement star unpacking expressions. * Remove four bytecodes BUILD_LIST_UNPACK, BUILD_TUPLE_UNPACK, BUILD_SET_UNPACK and BUILD_TUPLE_UNPACK_WITH_CALL opcodes as they are now unused. * Update magic number and dis.rst for new bytecodes.
* Fix compiler warning on Windows (GH-18012)Ammar Askar2020-01-151-1/+1
| | | | | | | | Python-ast.h contains a macro named Yield that conflicts with the Yield macro in Windows system headers. While Python-ast.h has an "undef Yield" directive to prevent this, it means that Python-ast.h must be included before Windows header files or we run into a re-declaration warning. In commit c96be811fa7d an include for pycore_pystate.h was added which indirectly includes Windows header files. In this commit we re-order the includes to fix this warning.
* bpo-39156: Break up COMPARE_OP into four logically distinct opcodes. (GH-17754)Mark Shannon2020-01-141-27/+44
| | | | | | | | Break up COMPARE_OP into four logically distinct opcodes: * COMPARE_OP for rich comparisons * IS_OP for 'is' and 'is not' tests * CONTAINS_OP for 'in' and 'is not' tests * JUMP_IF_NOT_EXC_MATCH for checking exceptions in 'try-except' statements.
* Fix handling of line numbers around finally-blocks. (#17737)Mark Shannon2019-12-301-0/+4
|
* bpo-38328: Speed up the creation time of constant list and set display. ↵Brandt Bucher2019-11-261-0/+22
| | | | (GH-17114)
* Produce cleaner bytecode for 'with' and 'async with' by generating separate ↵Mark Shannon2019-11-211-213/+233
| | | | | | code for normal and exceptional paths. (#6641) Remove BEGIN_FINALLY, END_FINALLY, CALL_FINALLY and POP_FINALLY bytecodes. Implement finally blocks by code duplication. Reimplement frame.lineno setter using line numbers rather than bytecode offsets.
* bpo-38640: Allow break and continue in always false while loops (GH-16992)Pablo Galindo2019-10-301-0/+8
|
* Typo fix: "empy" should be "empty". (GH-16666)Hansraj Das2019-10-091-1/+1
|
* Revert "Fix depth-first-search computation in compile.c (GH-16042)" (GH-16050)T. Wouters2019-09-121-24/+30
| | | | | This reverts commit 355f3e1e5caf16198255df573a1f5e8b98b30105. bpo-38135
* Fix depth-first-search computation in compile.c (GH-16042)Mark Shannon2019-09-121-30/+24
|
* bpo-34880: Add the LOAD_ASSERTION_ERROR opcode. (GH-15073)Zackery Spytz2019-08-251-7/+3
| | | | Fix assert statement misbehavior if AssertionError is shadowed.
* bpo-37830: Fix compilation of break and continue in finally. (GH-15320)Serhiy Storchaka2019-08-241-11/+55
| | | | | | Fix compilation of "break" and "continue" in the "finally" block when the corresponding "try" block contains "return" with a non-constant value.
* Fix typos in comments, docs and test names (#15018)Min ho Kim2019-07-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | * Fix typos in comments, docs and test names * Update test_pyparse.py account for change in string length * Apply suggestion: splitable -> splittable Co-Authored-By: Terry Jan Reedy <tjreedy@udel.edu> * Apply suggestion: splitable -> splittable Co-Authored-By: Terry Jan Reedy <tjreedy@udel.edu> * Apply suggestion: Dealloccte -> Deallocate Co-Authored-By: Terry Jan Reedy <tjreedy@udel.edu> * Update posixmodule checksum. * Reverse idlelib changes.
* bpo-37500: Make sure dead code does not generate bytecode but also detect ↵Pablo Galindo2019-07-151-5/+64
| | | | | | | | | | | | syntax errors (GH-14612) https://bugs.python.org/issue37500 Add a new field to the compiler structure that allows to be configured so no bytecode is emitted. In this way is possible to detect errors by walking the nodes while preserving optimizations. https://bugs.python.org/issue37500
* bpo-37221: Add PyCode_NewWithPosOnlyArgs to be used internally and set ↵Pablo Galindo2019-07-011-7/+5
| | | | | | PyCode_New as a compatibility wrapper (GH-13959) Add PyCode_NewEx to be used internally and set PyCode_New as a compatibility wrapper
* bpo-35224: Reverse evaluation order of key: value in dict comprehensions ↵Jörn Heissler2019-06-221-4/+4
| | | | | | | | | | | (GH-14139) … as proposed in PEP 572; key is now evaluated before value. https://bugs.python.org/issue35224
* bpo-37253: Add _PyCompilerFlags_INIT macro (GH-14018)Victor Stinner2019-06-131-3/+1
| | | | | Add a new _PyCompilerFlags_INIT macro to initialize PyCompilerFlags variables, rather than initializing cf_flags and cf_feature_version explicitly in each variable.
* bpo-37122: Make co->co_argcount represent the total number of positonal ↵Pablo Galindo2019-06-011-4/+4
| | | | arguments in the code object (GH-13726)
* bpo-37115: Support annotations in positional-only arguments (GH-13698)Pablo Galindo2019-05-311-0/+2
|
* bpo-37050: Remove expr_text from FormattedValue ast node, use Constant node ↵Eric V. Smith2019-05-271-11/+0
| | | | | instead (GH-13597) When using the "=" debug functionality of f-strings, use another Constant node (or a merged constant node) instead of adding expr_text to the FormattedValue node.
* bpo-36763: Implement the PEP 587 (GH-13592)Victor Stinner2019-05-271-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add a whole new documentation page: "Python Initialization Configuration" * PyWideStringList_Append() return type is now PyStatus, instead of int * PyInterpreterState_New() now calls PyConfig_Clear() if PyConfig_InitPythonConfig() fails. * Rename files: * Python/coreconfig.c => Python/initconfig.c * Include/cpython/coreconfig.h => Include/cpython/initconfig.h * Include/internal/: pycore_coreconfig.h => pycore_initconfig.h * Rename structures * _PyCoreConfig => PyConfig * _PyPreConfig => PyPreConfig * _PyInitError => PyStatus * _PyWstrList => PyWideStringList * Rename PyConfig fields: * use_module_search_paths => module_search_paths_set * module_search_path_env => pythonpath_env * Rename PyStatus field: _func => func * PyInterpreterState: rename core_config field to config * Rename macros and functions: * _PyCoreConfig_SetArgv() => PyConfig_SetBytesArgv() * _PyCoreConfig_SetWideArgv() => PyConfig_SetArgv() * _PyCoreConfig_DecodeLocale() => PyConfig_SetBytesString() * _PyInitError_Failed() => PyStatus_Exception() * _Py_INIT_ERROR_TYPE_xxx enums => _PyStatus_TYPE_xxx * _Py_UnixMain() => Py_BytesMain() * _Py_ExitInitError() => Py_ExitStatusException() * _Py_PreInitializeFromArgs() => Py_PreInitializeFromBytesArgs() * _Py_PreInitializeFromWideArgs() => Py_PreInitializeFromArgs() * _Py_PreInitialize() => Py_PreInitialize() * _Py_RunMain() => Py_RunMain() * _Py_InitializeFromConfig() => Py_InitializeFromConfig() * _Py_INIT_XXX() => _PyStatus_XXX() * _Py_INIT_FAILED() => _PyStatus_EXCEPTION() * Rename 'err' PyStatus variables to 'status' * Convert RUN_CODE() macro to config_run_code() static inline function * Remove functions: * _Py_InitializeFromArgs() * _Py_InitializeFromWideArgs() * _PyInterpreterState_GetCoreConfig()
* bpo-34616: Add PyCF_ALLOW_TOP_LEVEL_AWAIT to allow top-level await (GH-13148)Matthias Bussonnier2019-05-211-7/+21
| | | Co-Authored-By: Yury Selivanov <yury@magic.io>
* Annotate the unexplained assignment in exception unbinding (GH-11448)Chris Angelico2019-05-211-1/+1
|
'ro3y),IOlMh=^]L)؆ uJ\`#bwY*LdoBUG= y3)[<9N=n?-ƙ^P8뮪j6 ~ze~<8}9t=j7/(0>7F z'ڂ|~GD)$ s@nRE8ftU =msSK "WRĠWAY 4]BV榝#Byg&r5 Q\]6˂) !bs *g)<]@dP X'lX#=ШH G mg̑̌4vȖlph9&h(e91r~="VN('`+iucIR5)jk,4="tj.BbKlMuir ؉~d KdfDPSP[XC)i*D";Q9xL0>AE"e" > Yl,nct~UlWq~RLn0+c(@ ?@%62lh9Ȕ5jE2λ<=C M!R_1{E'<aR`LAx@s%N2BƊ)DS;tZYUe|/; 32dB/1n&de"V|@*'BzQY  *dVgq {I%τvQX,SEZ02?xU}=u{܂xL9M&*nFVo? 꽩4&ܾuUuX$Bzq0O}dNLͧ՟ODҐ11T;MDɥM i R*3ԨЩ7- V0WE$ԧ4X)v)E1gQHmeɘUDD&6=5 S$)9 J+ Ke80mrR 5=Oպg4 _Mg @gMvJ%1Ib#r="-ِz454.%8fPHnWX A!l\jՈ]A81Gv&LSvnA>-r[N+Usܲq 5>449KYp€ƩdM7=HFWp;(7TEϔU.c5G!-}Q{ԲVm ]mϗY.xx-cT~9|CDM2ڵ8J`>CI. SS("",WPY.zE1]zF&pLXb(e V] B0W˗Cڇ(Pys ޸]aֵGrݱmN7F2ݯ%^NaWSk(10-"v&"Q(gO 8b"\=i 8z9{5)lZ,>_jK3VO x!Z(\e(MG*N]@rBnw:Fyz +aTnDlǰq{&n`1a"8⮬QH}qM@(9|Ø-5bðM'ŬLyGDG_Ğ֜!ʼK#m84 -&%A4*8PXxNp&oӸYP3KD$[W}r{⢴AWE tQ!m&p,Q2F]83%M~%øo0Qn ) gj PIMBbp 0D$оzD&D&i&'_" =ǨLD RgF㝉 P[4}քNR7x){V!bPgD6%8'3syOme6$EyN"3h0A.YNeC>*H)PҬ .r.p$mDMg xkP67 S0a5@aƸN[f$f3mq8+ UdPL3-o+`m V%(%H dbmЏ/3M#G붃3Ɇ`rfM9x1~)U:>*]c;c 8C*4 \d.[nzp>E7l "$z@cY{,T=kP5YZ 7=3 f@Կh'-jFb kEeZB+F2 {F^/\.@K$Hcxa x5Ņn(xsal#1Z]0Qp&6f+M7E>pzI3;g.TXD3 j`F^[Fͷ3=6λ48WG2)H'~Pok+֨]j6ئlADm{̵K)cL&)9K![!Eȍf@FRԟl?owy5_ZͅDqjE`jM !°bf ±Bx,i^l7\d1pR"J)Xh t6l򸈧AˁtE3-FY;'b#c;e#vЧE %P]VH/u)ñiJHb5]}/0w]΢o_V0q} ,dՉ0/&6Df䕗d3'D,,Wľ;|knӲ\ Emb}CQq܁&b K@ rADdU2!_V1cG @&K\f@z8QeφJDNčcqa0 Ci4GYRH|aZCPnA['H#NA#ٮU E|m倊a,U 8`X$p gqdʉQ.r`a1 L/SSJ_ IR˖,2K3v/D໕1US[k,zMfu:/ûkzgÇw[/ow޺:wK[õR?soc<Ӱu VokkM%p#iwMM~{ʶYOsJ${{|yUW_:{_ϭ;^\\]2e jEJ٨K{ ة^bV`XI(F z7ĥނZmL )/O&e:V$ _D}<#w9ҟ:Q-5+Q(;PQr:=Ah<2 IM|ݱX۰ 8&{V_LUȎԕ O E1gR"X@ )O9+EK#WhqLvv˽R#O{㻮D%˚,$D̆{:ޚhY9Q$0T,78:2cMWFh7 /uCODM}F f CW(x:RO_tO󁭝ӽ0l0UDzeۃՄ;n ӽCԘhu4д8;w4J?-"r=@3\qY 1Yiq TI?\dw8 AYe릢É7T[b 4b%4N4(K& uoڢ1rxHpEY4f2g\y.D5cÝЋNY|Čl$8 n qsygQzEF 6na}Wk}Dn[a!騕$n٠<թQk4A֔]Ho d4h!]EzCtMm$S6a=;3M@sx M $t#`_v1f42$ai1zNifi;ϳJGǥT4]UTcZ&  "6d]U~`*csdG6hҭ=⇚"i^Z%K0^Iΰ^fi`JPb[bw5:"kk Ȥ6jY[Bل%)]m㺌{oˌ!t]0MoƛT' neiSpd̬x6ܺH%czFB kN|ӄwOG̔jqgi4zx%O%,ܱ^"g,gC1}YTyOÛDLGZQw!uɫ>ġj:}Iw* Ŋ1qV ]|z:KxdAhKFxTamFQk.H;;lP774 /՞4?2"6ҿGi}0Sy39pnq0ż@K[V¸<vk<ᦨlC.^e*έt񃾗j8~TDc=R|6-Ek"lTZ)T"y90W=Ey5ό$4= esRKu!pK/QI5^bKW(7WK=oe5+ir6jٱ>AQ Z{1UF$),dV`܌,.TFbNcIՍrtmLy^hM&[n_~aZ4pSEaP 7/K&Fìkl Rk/VZrm=yZUb[$껈>ȧp.a jF QCK5q9fWkI(%O\'5|:H[*)!!2|b <,jhyla8$焆3E!3fҐ0BRon^=~4x'ZT][-Zd on-,af8o籘$1pwLrȭTo.nNFygXˢM=a<9g,<9X^i~#/ PGVkh='/ֺaK^6@ ,@S9,G#`u**pJI`%~g).V΅j6Z"pa,JD'?`.5s6j k,H0Nz49h.o1\CKܡNG5"bZF(M㣩䗁Yѣ퓭g]AbٓvE<*Nw]aLUL i&GX)%դ튆^[oܽw7hi7l@u~vC'eD>r52t1pK>ĺOt526o*nixu| xX-a _R2O~ؕR$w[|?io:a!)#GfT` ntEHQ?[,,–8Qq=bzZvGE qvnB`~4fhU-ΟTШR]Tmuv%l"$5<ڢ ^yY((sS3|̴WOx2@53̒)QeJrq-v(mD'J jzx4_P$7ʋL}w:gFh0IKoS0x5ؽ}zz][ik+Fx'Ŀ+7X8ГYzaVG2יӭzpo05!( Zn^ &t)wugL\A윣I&LiY 7o)+jUܿ~mg+fX@+GuFYw07X/;"V@ n,-8u1l0ɶ/=զRrKj# T8{nkX] A",A5tD4𴕤 :Ob„n5onF-,K6[7G+*<  3Io:t#opm(S\l]8OŔ^Qݓuo̸ɺo@Q='nMN5`+W-Up]h gзUF AD+}iW彰!S/b(Ӛ`%ɷ}԰em ibmf"W *pt~~5X /3P W,6+ HsWQJِ%Ͽ|at",4u9j4804,h P5kL-ߥ!7t9vX?;tYaNz&y91ZO^/ҠTϨ}0bf&$,N!~guc,d@avP0o7o|I^?EI'\LQ l(?ٔߵǂa Zu=S&G^U:5ϋ jycLNٍl GhEGfVwz]'oxh.f`XSq.O9cux$T^igY&wzn˖4:^T0SwͧWI~G6(1e da\/lVf+?ޖ*81F̑ze佥_m1~b~ՌUխ9 ^V:1&PtqoΪ\zXŽTÅ߈N\W{ ݺr'P7y1w}Rc3ΜϢ * Ԣ@WXڟ_GXZCXW[^*:@\~F(|=9^w5= mN+Cw"w,T&QfۀY7kUaAn>>M.|5!wΪ hfPm$ ' ZN{A50`K(N(t{ce=z0ȖuflyrNkּN׼tR8V~ Cϻ`p3>,>9['N"KF|zo">xZON=\Ծvv \)ߜ ^ި<¶Wĕ*_V 2+~w_U$R F4 |ӕ^ -_+*allbB2./_㴍9hK2 ug8O8eG"m~+U0ƕ\kg?1h.1 ܌Q\M[rһBg*2p01j;Jߔܗ{Be"Oxyt GrWV>n;JssjrP+m[Ɉ6 'KCqz*E<F2DJ]Kk(CQ/MtpׄhvH$H5KذH aISjGv;Nsrg2 F{&9V[(!^:ϗ-8a]Fd;}Ưtfvɻ.UW_Su{kNbTve mr7JҘ)@Zl;9x9^hj2O1\#43<ύ׸d@-/3W)ic %Sw} 2%m&;vko yI&F_) {FJ yv>Lh 6(KRl0BMΘ;p>D-2v b8e p]6M{B]^Jb$&1bSVw6܂(ڡ^L[OY&7oDZx 4O}\c}o^ggcg _-falk_:uI5U "3|5,e!TԁfRNΡ&rJØC&rJ&:yAMF%<*͘+^_֛rcxyz.Jϗrpg~?i ˢ2bO,/\f81cq;oFsC'nt+驛V.Uµ$l\=0iul#GY\w5 uJU';VkZ75ҞO_?r^;wHw+`h8A8-0ANķR <$4)?%&3i{Ta]zK!rN}ʒ3­xD7g-]e&c%%Qh,&E5i]ܬk^[wCϿ9i뿿u}/3 F]9\֤71%$$'b2ӵ\ȅdZ MBֵ$g(93k־sO9J5cm^],6O^{3tu7{+=b;P: 1lIA1BbTs砙Q= ?7w1,4 %s믭 >,*$dti$ƒ驺 -_n# +^XX4P諙CYm 6sv@OVxO1v@c}ED1qYRQ$o`ȾfW vJiE -?Qwצq gӀr @bL0\@BMaky3oE7R9}{'xj%;64Vu9U~\7oA#(NگFcaM[쿩_hj~U[arR9l[IAQr*&5%·̙EkS@}@Kmb=qf5|i%nLZ;x<&GK"=\W5h&ܖFoG u4)~uĦU\W 6 D\pb zwLxYDX U>IǓ?")n _俟뿍ëk}U e![#1mH8u0G xʪh4FC B5թCTА/S%}8\3KuqNd;"8k/$EINX oWݺ.0 Y,JD PyufO3rPd$Jh٠Jżi4 lB7Җs4j|ҐĀqb]Q^DX+d}Z 5`@ninUɐoZ]87۷§'oA:Iٌ"dR<tF( + Wـ#HKKb r#ӐW e*샇Ne/IPO 2U4Щ$ "1cYiaS׸&Dk>&̒dI|4J8΍b<)0syZd^t`CO9&Ln=/c\pŝYqJǝd "./.@5w"?ǎ2Gg)ޫ, u~+bEy(\`,T u^W)0EhC _Q9/ C$ڵ;Cy|8r5j[F~FIڂ2L.I5/@d׌ 4reҞ%tBH 3aƩl!j\4DA$<B1G@{v1ǜ(Y,6+:>7pt7܂i>h&Y/D^.n2 zC!Х&\/!C7:!P'%,4jMm[o{UO 7\m5j= HiÿgOh۝V ";-nid9m͂;c./h9Q/X)9pk oY[6k(^ {f7jpcI[v'{ I@YFdT}^xp/?LJl`Z2뺱BXWgI#AC"L4)LR~)Y $C^>4݈DE {K)1 :;;CM>ɋ6:WDG9R%n_H(P/@&_X5 R4p G#IH @8y%Xpx)үs^L$c?47.9#b(\k^ #բvOLڠ^/rv '5ܙ X4 L fսϺⱒ-P5T2]Mr.ʃl74|\)!~+,JɋıvPNWug'Cl:g@E_P>Huƭ̘yNյZfv7nxm5qXyPB"t l7$j.]>pzh_&t0J-a(:(*wy ?o| M<%ARRf3F>lwXRbf`Ӷ2吃-/p[TrfH9#񆕩pT1#ͤ]X8K^#[ l;w'GoH5epi=L)0Blo8<Z'c>N5R3m|]_qADXS[!~.`VgVi@C;-DԓVj1 -c ;,lI ?τ:WԠDfK1'AcR+jAbR.P3;$Œ(? l{BzFPno]!$՗ Ύ&_rJ7Zc6Kat;6G>'9h{Ipϗ+fuVA tn7>_Y}^i+/K '¬lUYZф=6FXbi&f /uol{OӑLYF|qq5g١~z`ZgOOe1A {A}1Vcݜּ)s|jS3=|?PYpz*[?1&n!=> |a_??ˇ?fR6jNVdN|wK;5@@2'.(k zےBK~F0A*1Kژ!_xbNQA|) 9: venA8nNV:.U#:D9t#-Wٰu_C-Y6j%z;&ُ&]M3V愷; ˬqU-Z*vBOF"eA}vcG_o!7+rK\aޔaƻ%f-.a]Q\K8;8gW7khm`d[^͎(_kpqpMeC5x-3|"fԯgu>ΆfM[WtOɉKrhhXf ^ax'r>DH$‡ 咐``kWnw66) k_+PY |urq:/ݰ.WW~E In4vhhpR1p=*ۭHG[_ I*/o_eJvY;Ӿ{k~=U> Ϯsl=x b|Vz[S*q." RTgPH/jz0 . $AsC-hFqӲL Տf]ԈuI1.3GSh h٢o )T`RrhlxfdɐF/*+"u"Ű̞1և9v%\~ɦ3:`7Ն.;,B_^Q:# ,RC>~1u^E$W@{BK:l妜MfzJ N(>Rdeb*}/UOI.*kVYrsv䲯P/JfG1,둧 [<Wi_5{A}]37=@A.]E62A?jK`($beCN*I'( DiV3oUs4&43z^|Zfvе)l[v R1v͍/cp,@s*/ZhX"2NQN8'^o:oOu`92ۖ\ip)v&z' юT|I} gJރ_U0UlESxS5kD}dos`E.&' ~yݘ{0Δ6@["o_R5Cw;C,k`b`^kĻ m(5n_k W18Xt|_79hzV>l7?iy3f*l<}5D /0P 0yw2cSxWάsxCtnEӼZ C{J>>trĹfss˷C!s! 唜yW֚МϩMn=)`oJi2Gjt\ܣ:kkz@:HrNX^pŒ2jX">MkR璎bs*fp˃xmXj>̅Ֆ&*j Cx?Vۭ]nJ_zNpU2L3$]j{ukFΪ’vqђ`ʄI&zww ^e*+cX7~=:Q|Uz1-MnnI:]0鱇J n[tn&tcAú[!{ė+9Vm"n5ȍfm_gl7a|Kδ7kX[}a RD& &k e\?&U#Q]bg's(p;&Xbp߭G*e@?/r(%; nv.*Y]V1γF/4P\ IJBeR u;"D~ h?0ׯD*ͺպc*%lxx]lp?D#i K_Zmp׷ҬiW>bMewGGuOt[do-u@/ ٻEHIDxk_*Zkx-a˦)V$ڙHv^ YBpi}s 4]^ E\c2^])Q875q.s\yA8q_=Aemj79ըB .( V3ץEr~AlN3^E$^QuJ  !8ok)¥>aښ~Uk«+iffus-3U"^pFʃ1Q[b:|L'hJ4BX`^m-1 #׾s$w ܈V_QCTOjη#U}[J,./D/onvU~n߿_{aU`A^*["q,ZbWWWe+ k%ŗ_?-u}\{5/_{QgOGϏ^<;tZ?||O^ߓWOɫnğ uzJlzF"[K 8{rXdk=_xduPǭ` - 즓G0S(oq)"G?yg0z?^Y_\.6Lcpa\o"B*S8^sς#RH PS6(ei_I2-UH2ϳaar HJp?A [N$`[?نǯCN6ī.O͑Fw6ƖlR-:9yJd9*V -;[m2>t:䤬fs⌤_5$}6B@-;I=CHt.Z`5[$6Hm̘,Ž〿,E`2IMY>q2Y:[,;{JlOE~1맣jIyoc۷@x iMh{* φy>> {fW{H~4s3Zl1,ƈFf1Q{nYĚiV7 Q 6Yyax ʄ Gλ(ϗgBẲ!8e {W3q2t#|;<Uur2Kv nкMwn"xr|Rwå ԘI=Bٜe98hJ4㲔pm!m( {9jل(G{v@sEGޑYƋT@`+3L. `/Lr ]SCR$S-K9, ˄P`ܤcɱ^qǯeNJZ#st_#jIULM6Hi F1!*I''].)kj ^BWZl[DzbӋ꿗c"ݥl 9IȆIR͍P%$uY XDh'eyox8 *6=%?m|<ג | y܌ <$ȵV}iJ2jA ɉji=*E[mAg(;\b'exf.Q!W8<ҙ3{_4301D(Eigm_v#8¥,9{*Q%rJRjB~Ov<"N2d> _DxbKI@ܦؤ2̈́`e]72uټ9IJVr.l 7f6E&*MYˎkqDN]2_D^sM4+}ՇsS&z) ;,{EK00o &{=ښ@/HnG[_1"B_iftmx";E 7ZsKD0J8leC}Ѯ|$vU6!hJt[jMc4"vZ`  x7a8 Xpdx]ZͶqEՍT ^ +^hZW Xpݵ{6=$ 셢rY6''֊d Mx>( jU qwC6v>Dyq{AŦ-3`cP :Q? +iى C\Ep62_Cd3?[mr 1W^d!T;=v.CpxI|Mf$*QQ:{L8iCn>Hpۭ'PmtYp5@ɲt,|9Ӻ!<ʹ2qXq/1 v̀g>-6%(,/ܸ*zmiEj4Xlrtkhn^h+-[[p VsM=]|s͏dB]r1tu~^򃘘s!6t {ٽQ*\cʇlի MDI861I>Dϔm]"༸LtBa>MV?I"okӕh?;;VX0h"cZJᾲWЗTA\,[E/hXH[S}McN<eyK&zS+8 ,CrQGk#Y ;Z-lE%*kIJ{7rajKYPҨtQ{4J9]R nlmW\Д1⑝8;]<Kŗ@2d՞ʌ'bDUU'*.:诬 C<|/Xy{JQI3rlW>*9HiSwh1I)z-C9Z4<I*SN)g/Ԗ1`̜'zY (%-YF-'H47njᰭ"Wܑu8zZ)Xxnj I2ވ+ޚ71tUQ$r¢q6pC8"s{Ə7kdžF^1MxwH>ޏEHx[.]s{|#i?I|X} ,L3r Ll%k=K2 NLf?G&6#"JT `MLE UpقN1;&rO QdY?w'2L$A?S1pFpIh愨(WD+ ԰ޕFsyxs(+ uZ5(WÙd%(/1RX8C{sF+yxm]8+T7cNI+cd`oHo2M8,'HQ-9M&[ +jX_RT1$$H([;\W]v\ <,J48${ Ȥ5n jӀ^>NN܋[HՊ ]")ͩ.-8TzP܌Tgyс 3##quNjI|1é:#GR 4+L0i!FR4(*7B-"GmHvq/lnPGr:q1B !IuSuj&jeE-sAl.#у/P XQcOpkv~<)sd'pҹdf D<(Q3D }FO3~91EF7f3ڴLP>$O#bÝEڢQ xt֋X>ʗ(_|wTeŻYyiD)5M17#XfGM,b㲑En BFPҊȏ5JG>B܂odO*Ykd~5Ɍ+7S*ͫ> W5{E*/ق&Uwi-mMJ7(Az5)6L0umɟRLqQ=к2,/C(Xf;vޞb6τk\9rLv+[NE8@x TH@5 ͸V&5zuqA|z6p>޸yF]l31[EvĢҰ5հUTz o.Y Z>H-N"8 C_%RuB8,;uA;un"}@ t~>z97 xYYE+x10[-.-)34C7z ;. sq{]l +Ff\fPnj& {D~upL[Z>s%USI}QZ&9T̜ON""| bu1>nַ{R uS4dJ˓FZىpGV)tDˊ_ych6x ZNTwMrWaͶEd(~74qzI܀+R8#=-h*gu:IN_9el뀇FW;l(+I1JGj֨ڙ45 Js+N ;=SQ #FW-qTde. WJմ8U"DTn\XEzJ;AY.ˬBMLDo=Zlq)/Ln^3O7w*s3?I1}Q 4dܬ)Y2).YOq.f,7@az$20;k{ Sb$,TyLJ1Uc3YzgE.{3wwdψmС4dh+ _}QV{ nHiÈG']cŝˍX/RoG4a8#5L{iYO癵6=CXxvhQk;{~7X?gP[Ue)_G +^$%8.&M~dsmawPuiU(P&&#%!z6Ej.5b6{ys([UN[I]7L.Iv)-d fOxzg6 (=~=Yh'β 4-- U%JgH;G )3+@6"" {03sP`{,Ug|mT&SԢeA5}r>n(䡧89o"]ww#yOQ"aBX/2a צ`g"#}.>?^~$U¿tZPA}V^6U@g#GT#B\AXNKpEvzPϛZ6nNņcr_CՖ喗VݯMYO+zHXܾ8XƗ1H3%ZNokX yRk ۊ6-pcGP\22 '!z~tN 7¼j6Ԥ]2Ph\_/HM2y`7DSw8!.8m {K2-Uώ҉[c*?OYPR3,Y7Ee }6Aùu"|uGCEm]G@$|&=$r^.T|3>t4~1oRFܧ/Öj0 SIGvҩ9 4f}">q}W _9CT"Fq{[Q𽡝>:@``G4H Xu8J{ܠl$,痠*Rd 3H;\4k7=lȪp7#},"5as1i5gU2{|8Bɣi(w'l_lF"|zyPlxt=_e6(qXr;J/{ogvv? Xϙ<I73cm_{_8(h^/oH!YIj'z9oiȰי~XF39sfϸ3~ ODHUv~Oٱ~{S䧆"s+ 4 {~lZV!xbuU勣̊/К<|@ΟP;dg+ՀP4nF,820%cN%6zu5ZSQ;B` !}燇#ts3?%8ˡ'^td64'BtjRL@_GE2^(A`Qxh4qZE0Rz!a4Ej8oc0+<(gaSHDVɉA.f$iuWIXuY[=Dqul~Ky+9!w7ݎ9.D!`iio?6?ݏϦi\EG11* Qq(gNda=1^d$z,hl@)I)9#ep;nnon?ཋbˠN8(-{`I$gE{DEE1aw8:̋Bd}J7 Z.ԋUGD_g Y굉ۇTmeM+±dQ6$᪢sJ-H.ߔL9tud]SьV$CF5_ Grӽ[yF])MdlC@`b9gSxrN܈b J8z NV\Ahd VPRpO/]n{ff1S;`$cG,7WTnEБ\T#uw>Av=4머}L9WߚS&v:ԯJ M޹]{ɻBax6eA#KTpҐuVaucno!b Jhk_Tx38;Cz4m٨9@oD 3F%o%-C޶JP7=i:Sp{hsĎ!Q0G;hx`ّä @.o{j =L;y*${C$<]!pt4I0^F󋝾3 N\C[A+Ucv.-z[%&rB짋8~xF]"J#gH 3{ FHp#bf艬Dbcz,ƒ1d b+3ȟ 8tdifچӝi]ߘ wݠj lwNpʄ)HLyxA~ !b,d >uw(UH8q|S@~DnX;fzC]rlfG۳g1 s\{Z5.ƭ{:2DH8bPy.|:+hސtdZo`oFl$7ljxpMWjA{+[VYg6X_b2jfY5_|<'[xNe1:ڃagb:rv`M}DD^TT⑪]g}fH)0s,8lhڄT8.[ &9m- x\5#Xο'H$TB%T?@jCt/~Tfӳ,&{=G޾ľnӞ"ݾ) F`*~pMWݚ VJgaկNG!wHCh[z zNd$bf' ~jh#+)PyYhx2/QBxYr6[z@+tg{yʟL:;6OE(pf+.rZK٪z b+^4UT)͢UYs;&C FS_ Y@̪4?E)]:e-a x@n4l |o ؂D(1 $na4aݔ[L[s8lƸ͊˚ȡ9U1ZEU'ZVI:HKމh":Mi$5R9I3k?Y^r7v"#2/=5Ģ[G4dN^NӍӳP1g8U7*.ukhesX5JbNȞ_  "8P_H~үDӄbBiEb'Z q].q(m8r#&/7$NsuZ$s:K wUD1]Xw8 V3CVB9 j"Iֳlt[þ5tDfWͪ|zmx llSUyj4q1ECղg={:w>_ћi=X>4/Tت_ AY-*x.}_𮩺17No޿GkTk5AN?WW`k`Hjٰ{NX/i+s9\! ~\~z9[9471Zw\jku;sUWPޜR/!G-spJ*`|FLSɏвjvFOI62z =W\M8RH,wKS>uZpa?غlΎ=_"9z|ǣ_/IGAD6;"/[^g߳M[6PN$&e?Ľ1'5 ǽl2L;8(?﬙hNE_r?50 L^W/;roN搜$]ʋ`wdQJo[,Gq:A1p5yMn4Y9DAe#U 'K*-њL>rmO=)o,/鿄Vjdd'"^|20'$# >?So(!{`?MQͳϮ:݃ZB?Hf%Y$)N]V|4mO? GFXDN=XS't>wXލ!e>u;_gg.tԵw.G8M&i-_J&`{`3cBNyMX۳g93y)9RRG+t fgi8Rqt( ԛ'}0Xgj Zo`VT LYy-t-:\)`day8뛟rNሃKBQHږAIrӻl\o7yEִM/t0I(o/޲lDZEWՒtr'P0g7~j25{Ko_*O9ixjzK+=mܨ:Ђn|j:}MokQHKi1HX:DLb励搛8;oC XRp!Sҽugsl-5o^ -9j0k6ۧ\;|e@/i0:? ;%m9b̉"gu0 R.8ʱUT8IX<(n(fLۢiBDִc:G/]Rt -l`(G)JF}i08%NRLaД]w7:YJ*WL"v ]l㯱W+)r'Sf'@kgxY7n}] |*9@ѝh?΍