ÿØÿà 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ÿÙ  je=@UdZddlZddlZddlmZddlmZmZmZddl m Z ddl m Z dZ d d d d d ddddddddddZ ejdej ej"zZej&ed< GddZ d#dededee ddffd Zd!edeefd"Zy)$z8Classes and methods utilized to work with MySQL Scripts.N)deque)Deque GeneratorOptional)InterfaceError)MySQLScriptPartition;s\$s\^s\?s\(s\)s\[s\]s\{s\}s\.s\|s\+s\-s\*)$^?()[]{}.|+-*sA(delimiter\s+)(?=(?:[^"'`]*(?:"[^"]*"|'[^']*'|`[^`]*`))*[^"'`]*$))flagsDELIMITER_PATTERNceZdZdZdZdeddfdZdededeefd Ze d e de fd Z e d e de fd Z e d edeefdZe dede fdZe dedefdZdde deefdZdefdZy)MySQLScriptSplitterzBreaks a MySQL script into single statements. It strips custom delimiters and comments along the way, except for comments representing a MySQL extension or optimizer hint. s3(?=(?:[^"'`]*(?:"[^"]*"|'[^']*'|`[^`]*`))*[^"'`]*$) sql_scriptreturnNc<||_d|_d|_i|_y)z Constructor.N)_code _single_stmts_mappable_stmts_re_sql_split_stmts)selfrs K/opt/nydus/tmp/pip-target-mjwu0ny1/lib/python/mysql/connector/_scripting.py__init__zMySQLScriptSplitter.__init__Ns! 486:<> code delimitercg}||jvrd|vr td|jDcgc]&}tj ||j (}}t jdj||jz|j|<|j|j|D]&}|j}|s|j|(|Scc}w)z Split code context by delimiter.\z5The backslash (\) character is not a valid delimiter.r') r#rdecodeDELIMITER_RESERVED_SYMBOLSgetencoderecompilejoin_regex_sql_split_stmtssplitstripappend)r$r(r)snippetschardelimiter_patternsnippet snippet_strips r%_split_statementz$MySQLScriptSplitter._split_statementUs D44 4 !$L &,,.!.D+..tT[[]C. !35***+d.I.II3D $ $Y /// :@@FG#MMOM .G !s+C&r8cHtjt|ddvS)z;Validates whether `char` is a white-space character or not.r>Z unicodedatacategorychrr8s r%is_white_space_charz'MySQLScriptSplitter.is_white_space_charm###CI.q1U::r'cHtjt|ddvS)z7Validates whether `char` is a control character or not.r>Cr?rCs r%is_control_charz#MySQLScriptSplitter.is_control_charrrEr'stringc.tjd|S)z6Split `string` by any control character or whitespace.s[\s\x00-\x1f\x7f-\x9f])r0r4)rIs r%$split_by_control_char_or_white_spacez8MySQLScriptSplitter.split_by_control_char_or_white_spacewsxx2F;;r'c:tjt|duS)zBValidates whether `code` has the delimiter command pattern or not.N)r0searchrr(s r% has_delimiterz!MySQLScriptSplitter.has_delimiter|syy*D1==r'cFdtdtdtfd}dtdtfd}dtdtdtfd}td}d\}}t d t d t d } }}|t |kr|Qd } ||d d ||rd} n||dd rd} n||d d ||rd} | | dvr3|t |krh|||k7r`|dz }|t |krM|||k7rnC|dzt |kr-|||dzdk7r"|dz }|dzt |kr |||dzdk7r"|dz }t t | D]} |j|rttj|dstj|drD|j|r2tj|dr+tj|drDc||||| fvr||}n | ||||hvrd }|j|||dz }|t |krt|S)aRemove MySQL comments which include `--`-style, `#`-style and `C`-style comments. A `--`-style comment spans from `--` to the end of the line. It requires the second dash to be followed by at least one whitespace or control character (such as a space, tab, newline, and so on). A `#`-style comment spans from `#` to the end of the line. A C-style comment spans from a `/*` sequence to the following `*/` sequence, as in the C programming language. This syntax enables a comment to extend over multiple lines because the beginning and closing sequences need not be on the same line. **NOTE: Only C-style comments representing MySQL extensions or optimizer hints are preserved**. E.g., ``` /*! MySQL-specific code */ /*+ MySQL-specific code */ ``` *For Reference Manual- MySQL Comments*, see https://dev.mysql.com/doc/refman/en/comments.html. b_strb_charrch|dk(xr,tj|xstj|S)Ns--)rrHrDrQrRs r% is_dash_stylez:MySQLScriptSplitter.remove_comments..is_dash_styles5E>#33F;C&::6B r'c |dk(S)N#)rQs r% is_hash_stylez:MySQLScriptSplitter.remove_comments..is_hash_styles D= r'c@|dk(xr|tdtdhvS)Ns/*!r)ordrTs r% is_c_stylez7MySQLScriptSplitter.remove_comments..is_c_styles#E>HfSXs3x4H&H Hr'r')rN '"N--#z/*)rbrdrs*/) bytesintbool bytearrayr\lenrangepoprrHrDr6) r(rUrYr]bufi literal_ctx line_break single_quote double_quotestyle_s r%remove_commentsz#MySQLScriptSplitter.remove_commentss\<      ! !4 ! Ie IS IT In ;14TCHc#h,L #d)m" RS473 E"3rs8,EBC$q'2 E$ +#d)mQ:0EFA #d)mQ:0E !ec$i/DQUOu4LFA !ec$i/DQUOu4LQ"3u:. /+;;CGD.BB3r7K +;;CGD.BB3r7K"tAw<2N'N"1g (T!Wj8Q-Q" JJtAw  FAG#d)mJSzr'ruc|j |jSg|_t}g}d}|r!tj|j}n |j}t j t|D]}t jt|rq|j|d}|j|jj|jdj||||t|dg}}n|j||}|r;|jj|jdj|||jS)aSplits the given script text into a sequence of individual statements. The word DELIMITER and any of its lower and upper case combinations such as delimiter, DeLiMiter, etc., are considered reserved words by the connector. Users must quote these when included in multi statements for other purposes different from declaring an actual statement delimiter; e.g., as names for tables, columns, variables, in comments, etc. ``` CREATE TABLE `delimiter` (begin INT, end INT); -- I am a `DELimiTer` comment ``` If they are not quoted, the statement-mapping will not produce the expected experience. See https://dev.mysql.com/doc/refman/8.0/en/keywords.html to know more about quoting a reserved word. *Note that comments are always ignored as they are not considered to be part of statements, with one exeception; **C-style comments representing MySQL extensions or optimizer hints are preserved***. Nr'rN)patternrIr )r(r))r!DEFAULT_DELIMITERrrur r0r4rrMrKrlextendr<r2rjr6)r$rur)rmprevr(currnext_delimiters r% split_scriptz MySQLScriptSplitter.split_scriptsJ0    )%% % %  &66DJJ6GD::DHH%6tDDyy*D1"&!J!J4!PQR!S ""))))tyy~)S "0$s>7J7L2M1N3  4 D1E6     % %%%499S>Y%O !!!r'c8|jjdS)Nutf-8)r r,)r$s r%__repr__zMySQLScriptSplitter.__repr__ szz  ))r')T)__name__ __module__ __qualname____doc__r3rfr&listr< staticmethodrgrhrDrHrKrOrur~strrrXr'r%rrEs X?5?T?Uue0;#;$;;;c;d;;E>d>>QeQQQfI"DI"DKI"V*#*r'rsql_code map_resultsrc #Ktj|s|sttg|yt|}|j }|sttdgdy|s(tt|dj |yd}dt |D}|D]X}||kDr-tdj |||t|||t||t||g|d z}Z|t|kr@tdj ||t|t||t|yyw) aBreaks a MySQL script into sub-scripts. If the given script uses `DELIMITER` statements (which are not recognized by MySQL Server), the connector will parse such statements to remove them from the script and substitute delimiters as needed. This pre-processing may cause a performance hit when using long scripts. Note that when enabling `map_results`, the script is expected to use `DELIMITER` statements in order to split the script into multiple query strings. Args: sql_code: MySQL script. map_results: If True, each sub-script is `statement-result` mappable. Returns: A generator of typed dictionaries with keys `single_stmts` and `mappable_stmts`. If mapping disabled and no delimiters detected, it returns a 1-item generator, the field `single_stmts` is an empty list and the `mappable_stmt` field corresponds to the unmodified script, that may be mappable. If mapping disabled and delimiters detected, it returns a 1-item generator, the field `single_stmts` is a list including all the single statements found in the script and the `mappable_stmt` field corresponds to the processed script (delimiters are stripped) that may be mappable. If maping enabled, the script is broken into mappable partitions. It returns an N-item generator (as many items as computed partitions), the field `single_stmts` is a list including all the single statements of the partition and the `mappable_stmt` field corresponds to the sub-script (partition) that is guaranteed to be mappable. Raises: `InterfaceError` if an invalid delimiter string is found. ) single_stmts mappable_stmtN)rr's; rc3TK|] \}}|ddjdk(s|"yw)NsCALL )upper).0jstmts r% z(split_multi_statement..js+W&671d$r(..:Jh:VQ&6s(()rrr)rrOr rr~r2 enumeraterj)rrtokstmtsrn partition_idsrs r%split_multi_statementr$sZL  , ,X 6{ #b RR  2C    E #se CPP #uV[[5G    AWi&6WM  q5$"(++eAaj"9!&uQqz!2  #(az1B   E 3u:~ $kk%CJ*?@"5SZ#89  sEEscriptctjdtj|tj}|rt |ddk7r t gSt |Dcgc]}|djdc}Scc}w)alScans the MySQL script looking for `filenames` (one for each `LOCAL INFILE` statement found). Arguments: script: a MySQL script that may include one or more `LOCAL INFILE` statements. Returns: filenames: a list of filenames (one for each `LOCAL INFILE` statement found). An empty list is returned if no matches are found. s2LOCAL\s+INFILE\s+(["'])((?:\\\1|(?:(?!\1)).)*)(\1))rwrIrrrr)r0findallrru IGNORECASErjrr,)rmatchesmatchs r%get_local_infile_filenamesrstjjJ"226:mmG c'!*o*Ry @u%(//'*@ AA@s!B)F)rr0r@ collectionsrtypingrrrerrorsrtypesr ryr-r1r MULTILINErPattern__annotations__rrfrhrrrrXr'r%rs:? --"',               E * M --",, &!2::D\*\*BZ Z Z #T4/0Z zBuBsBr'