ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3g}@sddlZddlZddlZddlZddlZddlZddlZddlmZe dZ ddl Z ddl m Z ddl m Z zddlmZmZWneyejZZYn0eeee jdZdadd ZGd d d ejZGd d d ejZGdddejZddZe dkre!dS)N)support_tkinter)Tcl)TclError)INT_MAXPY_SSIZE_T_MAX.cCstdurt}|dd}td|}|\}}}}t|t|t|}}}dddd|}|dkrz||||dfan||d||fatS) Ninfo patchlevelz(\d+)\.(\d+)([ab.])(\d+)alphabetafinal)abrr)_tk_patchlevelrcallre fullmatchgroupsint)tclr mmajorminor releaselevelserialr,/opt/python39/lib/python3.9/test/test_tcl.pyget_tk_patchlevels  rc@seZdZddZdS) TkinterTestcCsF|ttjd|ttji|ttjd|ttjdhdS)NTstringset) assertRaises TypeErrorrZ_flattenselfrrrtestFlattenLen+szTkinterTest.testFlattenLenN)__name__ __module__ __qualname__r&rrrrr)src@sveZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zee j!d7kd8d9d:Z"d;d<Z#d=d>Z$d?d@Z%dAdBZ&ee'dCkdDdEdFZ(dGdHZ)dIdJZ*dKdLZ+dMdNZ,dOdPZ-dQdRZ.dSdTZ/dUdVZ0dWS)XTclTestcCst|_|jj|_dSN)rinterptk wantobjectsr$rrrsetUp8sz TclTest.setUpcCs&|j}|d||dddS)Nset a 1set a1)r,eval assertEqualr%rrrrtestEval<s zTclTest.testEvalcCs|j}||dddS)Nz set a "a\0b"ab)r,r4r3r5rrrtest_eval_null_in_resultAsz TclTest.test_eval_null_in_resultcCs|j}||dddS)Nzset a "<\ud83d\udcbb>"<💻>)r,assertInr3r5rrrtest_eval_surrogates_in_resultEsz&TclTest.test_eval_surrogates_in_resultcCs|j}|t|jddS)Nr1r,r"rr3r5rrrtestEvalExceptionIszTclTest.testEvalExceptioncCs|j}|t|jddS)Nz this is wrongr<r5rrrtestEvalException2MszTclTest.testEvalException2cCs,|j}|ddd||ddddS)Nr!rr2)r,rr4r5rrrtestCallQszTclTest.testCallcCs|j}|t|jdddS)Nr!rr,r"rrr5rrrtestCallExceptionVszTclTest.testCallExceptioncCs|j}|t|jddddS)NthisisZwrongr@r5rrrtestCallException2ZszTclTest.testCallException2cCs(|j}|dd||dddS)Nrr2r1r,setvarr4r3r5rrr testSetVar^s zTclTest.testSetVarcCs(|j}|dd||dddS)Na(1)r2zset a(1)rEr5rrrtestSetVarArraycs zTclTest.testSetVarArraycCs&|j}|d||dddS)Nr0rr2r,r3r4getvarr5rrr testGetVarhs zTclTest.testGetVarcCs&|j}|d||dddS)Nz set a(1) 1rHr2rJr5rrrtestGetVarArrayms zTclTest.testGetVarArraycCs|j}|t|jddSNrr,r"rrKr5rrrtestGetVarExceptionrszTclTest.testGetVarExceptioncCs|j}|t|jddS)NrHrOr5rrrtestGetVarArrayExceptionvsz TclTest.testGetVarArrayExceptioncCsD|j}|dd||dd|d||dddS)Nrz info exists ar20r,rFr4r3unsetvarr5rrr testUnsetVarzs   zTclTest.testUnsetVarcCst|j}|dd|dd||dd||dd|d||dd||dddS) NrHrRza(2)zinfo exists a(1)r2zinfo exists a(2)rSrTr5rrrtestUnsetVarArrays   zTclTest.testUnsetVarArraycCs|j}|t|jddSrN)r,r"rrUr5rrrtestUnsetVarExceptionszTclTest.testUnsetVarExceptioncCsPd}tdkrLt}|dks2d|kr.dkrLnn|dddd dd  f7}|S) N) rrRiillll)r\rr )r\r]r\)r\r^llrW) tcl_versionr)r%Zintegersvrrr get_integerss  zTclTest.get_integersc Cs0|jj}|D]l}||d||tdkrH||d||||d|dd|||d||qtdkr|t|jt dd||d d |t |j|t |jd d |t |jd |t |jd |t|jd|t t tf|jd|t t tf|jddS)Nz %d r[z %#o oz %#x rWr_*Z4210s42E@rz42u42) r,r-rbr4getintr`replacer"rstrr# ValueErrorUnicodeEncodeError)r%rirrr test_getints*   zTclTest.test_getintcCs|jj}||dd||dd||dd||dd|t|j|t|jdd|t|jd|t|jd |tttf|jd |tttf|jd dS) Nz 42 rgz 42.5 g@E@rez42.5rfs42.5rz42.5u42.5) r,r-r4 getdoubler"r#rrkrlr5rrrtest_getdoubles  zTclTest.test_getdoublecCs|jj}||dd||dd||dd||dd|t|j|t|jdd|t|jd|t|jd|t|jd |tttf|jd |tttf|jd dS) NonTr2rerFson?rzonuon) r,r-ZassertIs getbooleanr"r#rrkrlr5rrrtest_getbooleans   zTclTest.test_getbooleancCs|j}tj}|tj|t|d}|dWdn1sD0Y|||| dd|| dd|| dddS) NwzKset a 1 set b 2 set c [ expr $a + $b ] r1r2set b2zset c3 r,r TESTFN_ASCII addCleanupunlinkopenwriteevalfiler4r3r%rfilenamefrrr testEvalFiles ( zTclTest.testEvalFilecCs|j}tj}|tj|t|d}|dWdn1sD0Y|||| dd|| dddS)Nruz> set a "ab" set b "a\0b" r1r7rvryrrrrtest_evalfile_null_in_results ( z$TclTest.test_evalfile_null_in_resultcCs|j}|dd}||jdd||dddtj}|tj|t|d}|dWdn1sp0Y||| | dd| | dddS) Nencodingsystemzutf-8wbsM set a "<>" set b "<\ud83d\udcbb>" r1r9rv) r,rr{rrzr|r}r~rr4r3)r%rrrrrrr"test_evalfile_surrogates_in_results  ( z*TclTest.test_evalfile_surrogates_in_resultc CsR|j}d}zt|Wn$ty<}z WYd}~n d}~00|t|j|dS)NZ doesnotexists)r,osremove Exceptionr"rr)r%rrerrrtestEvalFileExceptionszTclTest.testEvalFileExceptioncCs|j}|t|jddS)Nzpackage require DNEr<r5rrrtestPackageRequireExceptionsz#TclTest.testPackageRequireExceptionwin32zRequires WindowscCstjtj}|ddkr$tddtjd|d|ddf}tj|sZtdt *}| d t |d d g}Wdn1s0Y|d |dS) NrR:z$Absolute path should have drive partz \\%s\%s$\%sZ COMPUTERNAMErzCannot connect to UNC PathZ TCL_LIBRARY-czimport tkinter; print(tkinter)stkinter)rpathabspathsys executableunittestZSkipTestenvironexistsrZEnvironmentVarGuardZunset subprocess check_outputr:)r%fullnameZunc_nameenvstdoutrrrtestLoadWithUNCs        "zTclTest.testLoadWithUNCcsJjddddddfdd}tjtjdd tjd tjd |d d |dd|dd|dd|dd|dd |dd |dd|dd|dd|dd|dd |d!d|d"d#|d$d#|d%d&|d'd(|d)d(|d*d+td,krF|d-td.dS)/Nr!rrrr^cs&|}|||tdSr+) exprstringr4assertIsInstancerjexprexpectedresultr5rrcheck"s  z&TclTest.test_exprstring..check8.2+68.2 + 6spamrdrS8.2 + 6z14.23.1 + $az6.1 2 + "$a.$b"z5.64*[llength "6 2"]8{word one} < "word $a"4*2 < 7 hypot($a, 4)z5.05 / 4r25 / 4.0z1.25$5 / ( [string length "abcd"] + 0.0 )20.0/5.0z4.0 "0x03" > "2"[string length "a½€"]rx[string length "a\xbd\u20ac"]"abc"abcu"a½€"ua½€z "a\xbd\u20ac"z"a\0b"r7r[2**64)r,rr"r#rrr`rjr%rrr5rtest_exprstrings:                    zTclTest.test_exprstringcs2jddddddfdd}tjtjdd tjd tjd |d d |dd|dd|dd|dd|dd |dd |dd|dd|dd|dd|dd |d!d|d"d#|d$d#tjd%td&kr.|d'td(dS))Nr!rrrr^cs&|}|||tdSr+) exprdoubler4rfloatrr5rrrEs  z&TclTest.test_exprdouble..checkrrrrrdrgffffff,@rgffffff@rgffffff@rg @rrrg@rrrrg?rrg@rrg@rrr[rr)r,rr"r#rrr`rrrr5rtest_exprdoubleAs4                zTclTest.test_exprdoublecs4jddddddfdd}tjtjdd tjd tjd |d d |dd|dd|dd|dd|dd |dd |dd|dd|dd|dd|dd|dd|dd|d dtjd!td"kr0tjd#dS)$Nr!rrrr^cs&|}|||tdSr+)exprlongr4rrrr5rrres  z$TclTest.test_exprlong..checkrrrrrdrrrrr]rr\rrrrrRrrrrrrrr[r)r,rr"r#rrr`rrr5r test_exprlongas4                zTclTest.test_exprlongcsjddddddfdd}tjtjdd tjd tjd |d d dD]*}||d |d|d |d|d q~dD]*}||d|d|d|d|dq|dd|dd|dd|dd|dd |dd |dd|dd|dd|dd|dd|dd|dd|d dtjd!td"kr|d#ddS)$Nr!rrrr^cs2|}|||t|tdSr+) exprbooleanr4rrZassertNotIsInstanceboolrr5rrrs   z'TclTest.test_exprboolean..checkrrrrrdF)rSfalsenooffz"%s"z{%s})r2trueyesrqTrrrrrrrrrrrrrrrr[r)r,rr"r#rrr`)r%rvaluerr5rtest_exprbooleansD                  zTclTest.test_exprbooleanr[zrequires Tcl version >= 8.5cshjfdd}|dd|dd|dd|dd|d d|d d|d d|d ddS) NcsVd|}r.|||tn$||tt|f|tdS)Nr)rr.r4rrr:rjrr5rrrs   z$TclTest.test_booleans..checkrTrrqrFrrz1 < 2z1 > 2)r,rrr5r test_booleanss       zTclTest.test_booleanscCs|j}|D]P}|dt|}|jrB|||||tq||t|||tqtdkr| t |jdtdddS)Nrr[rWr_) r,rbrrjr.r4rrrr"r)r%rrmrrrrtest_expr_bignums   zTclTest.test_expr_bignumcsfdd}|djr dnd|djr:dnd|dd|dd|d d |d d |d d |d d |d d tjdkrڈ|dd|dd|djrdnd |djr dnd|djr&dndD]&}||jrN|nt|q4tdkr|ddtddddddtjjtjj tjj tjj fD]4}jrȈ|||nt |||qjr6|t d} |||t d t d |t d  t d  n<t |t d t d t |t d  t d  |d!jrd!nd"|d#d$d%ggjrd&nd'dS)(Ncsjdd|S)Nr!_)r,rrr$rr passValuesz.TclTest.test_passing_values..passValueTr2FrSr string€ string💻string string½ string€u string💻r <><€><>r9stringstring strÀ€ingsstringustr½ingr[rWr_rrrUUUUUU?naninfrRrw333333 @z1 2 3.4rrcr)rra {b c}) r4r.rplatformrbrjr` float_infominmaxrZassertNotEqual)r%rrmrrr$rtest_passing_valuessh          $      zTclTest.test_passing_valuescsdfdd}jd|jjjdd1jdfdd }fdd}|d d |d d |d |d|d|dtjdkr|dd|dd|d|dd |dd|dd|dd|d|d|d|dd|d d!|d"d#D]}||t |qt d$krJ|d%d&t d%d&d'D]}||t |qNd(tj j tj jtj j tj j fD]}|||dq|td)|d|td) |d|d*d|d+d,|d-d%gd.d/gd0ggd,dS)2Ncs||Sr+r)arg)rrrtestfuncsz+TclTest.test_user_command..testfuncr)eqcsN|dur |}djd|}t|||t|||dS)Nr)r,rrrj)rrrrrr%rrrs   z(TclTest.test_user_command..checkcs jt||t|dddS)Ng|=)Zdelta)ZassertAlmostEqualrabs)actualrr$rrfloat_eqs  z+TclTest.test_user_command..float_eqTr2FrSr ustring½rrrrrrr9rdsstrings string€u string€sstringrrrrrrs string€ustrÀ€ing€r[rWr_)rrrrrrr)rR)rW)rr5 6rz1 2 {3 4} {5 6} {}rRrrr)N)r, createcommandr{r- deletecommandr4rrrbrjr`reprrrrr)r%rrrrmrrrrtest_user_commandsR                  zTclTest.test_user_commandc Cs,|jjj}|jjj}|t||t|dd|t|ddddddd d d d d ddddddddddgdfdddggdddgff|dddd|jrdndfg}t}td kr|jr|d!krd"}nd#}||d$d%d&d'd(d|fg7}d)|jt|f}|D]"\}}| |||d*||fq|t |d+dS),NrrrW)rw)rw)rdr){}rd)""rz a b c rrrs a b c rua €r€)ua 💻ru💻sa €r)sa 💻r)sa rs ab cd)r7zcd)rrb c)a b\ cr )r r za 2)rrwrrWrza 3.4)r3.4rrrrrrrlistrRrwrrr2rwrr[r\r]r]Z12ru€r r€rdictcreaterrrz4want objects? %s, Tcl version: %s, Tk patchlevel: %sz arg=%a, %s{) r,r- splitlistrr"r#r.rr`r4r) r%rr testcasesZ tk_patchlevelrZdbg_inforresrrrtest_splitlist7sd         zTclTest.test_splitlistcCsp|jjj}|jjj}tHtddt|t ||t |dd|t |dWdn1sj0Ydddd d d d d ddddddddddddddgdfddgdfdddggdf|d d!d"d#|j rd$nd%fg}t d&kr|j rt d'krd(}nd)}||d*d+d,d-d.d#|fg7}|D]J\}}| t$|j||||d/Wdn1s^0Yq dS)0Nignorez\bsplit\b.*\bsplitlist\brrrW)rwrw)rdrd)rrd)rrd)rrrrrr)sabr7r )s {ab cdz{ab cd)rr)r r))rsb cr)r rr rrr)r)rWrr$rrr rrrrRrwrrrr[rrrrrrrr)msg)r,r-splitrwarningscatch_warningsfilterwarningsDeprecationWarningr"r#r.r`rZ assertWarnsr4)r%r&rr rrr!rrr test_splitjsf    ,      zTclTest.test_splitc CsBtj}|jj}d}||||ddddd||||ddddd}||||dd dd d||||d dd d|t||d |t||d |d dd dddd}|||||jrd nddddt dkr>|dddd dddd}|jrt dkr dddd}n d ddd}|||||dS)Nz#-a {1 2 3} -something foo status {}Fz1 2 3foord)-a -somethingstatus)rZ somethingr/)r-rRrWrr.r,r/rr0rz-a b -c )r-rrrr-r.r/rr[rrr) tkinterZ _splitdictr,r-r4r" RuntimeErrorrr.r`r)r%Z splitdictrrrrrrtest_splitdictsD            zTclTest.test_splitdictcstjjjfddfdd}|d|d|d|d|d |d |d |d |d |d|d|d|d|d|d|d|d|d|d|d|d|d|d|ddS)Ncsd|dS)NZlindexr)r)srrrunpacksz!TclTest.test_join..unpackcs|g||dg||gg||dgg||gdg||dgdg|dS)Nr)r4r)joinr%r6rrrs z TclTest.test_join..checkrdrzsp amzsp amzsp amz z{spam}z{sp am}z"spam"z"sp am"z{"spam"}z"{spam}"zsp\amz"sp\am"z "{}" "{}"z"\z"{z"}z \z {z }z\ z{ z} )r1Z_joinr,r-rr)r7r%rr6r test_joins8 zTclTest.test_joincCs|ttjdSr+)r"r#rZTcl_Objr$rrrtest_new_tcl_objszTclTest.test_new_tcl_objN)1r'r(r)r/r6r8r;r=r>r?rArDrGrIrLrMrPrQrVrXrYrbrnrprtrrrrrr skipUnlessrrrrrrrr`rrrrr"r+r3r8r9rrrrr*6sV     #  )  2:35#%r*c@seZdZddZejeee kdej edddddd Z ejeee kdej edd ddd d Z ejeee kdej edd ddddZ dS) BigmemTclTestcCs t|_dSr+)rr,r$rrrr/szBigmemTclTest.setUpzneeds UINT_MAX < SIZE_MAXrRr]F)sizeZmemusedry_runcCs$d|}|t|jjdd|ddS)N r indexr)r" OverflowErrorr,r)r%r<rrrrtest_huge_string_callsz#BigmemTclTest.test_huge_string_callrWcCsT|jj}dd|}|t|j||t|j||t|j||t|j||t|j||t|j ||t|j ||t|j |dd|t|j d|d|t|j ||t|j d||t|j ||t|j ||t|j||t|j||t|j||t|j||t|j|t|t|j|dS)Nr2r>xr)r,r-r"r@rhrorsr3rrecordZ adderrorinforFrUrrrrr&rrrr%r<r-rrrrtest_huge_string_builtinss* z'BigmemTclTest.test_huge_string_builtinsr^cCsJ|jj}dd|}|t|j||t|j||t|jd|dS)Nr2r>rB)r,r-r"r@rrUrDrrrtest_huge_string_builtins2s  z(BigmemTclTest.test_huge_string_builtins2N)r'r(r)r/rZ cpython_onlyrr:rrZ bigmemtestrArErFrrrrr;sr;cCs"tjrt}td|dddS)Nz patchlevel =r r )rverboserprintrr5rrr setUpModulesrI__main__)"rlocalerrrrr'testr import_modulerr1rrZ _testcapirr ImportErrormaxsizetuplemaprZ TCL_VERSIONr&r`rrZTestCaserr*r;rIr'mainrrrrs:      92