Rhe`dZddlZddlmZddlddlmZejek(sJdee hZ e e hZ eehZe eehzZeeeefeeeefeee efiZej<fdZd Z d Z!dd Z"ejFd zZ$de$zdz Z%d Z&e$e'fdZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3ddZ4y)zInternal support module for sreN)_parser)*) _EXTRA_CASESzSRE module mismatchc*||zr||z}||z|zSN)flags add_flags del_flags TYPE_FLAGSs #/usr/lib/python3.12/re/_compiler.py_combine_flagsrs(: * I ) ++c  |j}t}t}t}t}t }d} d} d} |t zrY|tzsP|tzr'tj} tj} t} n tj} tj} |D]d\} } | |vr|t zs|| || &|tzr|t| || G| | s|| || `| | }| s|t | |||| vr|t"| |||t$||}|d| t&ur |t(|f| |zD]}|t*|||t,|||z ||< | t.urt1| | | | \}}|t zr|tzr |t2n*|s |t.n| s |t4n |t$||}|dt7||||||z ||<| t8ur%|t:zr|t<|t8| |vr|t>zrtAd| tC| dr`||| d||}|d|| d|| dtE|| d||tF|||z ||<Q||| d||}|d|| d|| dtE|| d||||z ||<||| d| tHur^| \}}}}|r|tJ||dz dztE||tM||||s|tJ||dz dzdz| tNurE|tN||}|dtE|| ||tF|||z ||<f| |vr || t| |vr|| ||}|d| ddk\r |dnB| djQ\}}|tRkDr tAd||k7r tAd||tE|| d||tF|||z ||<| tTurp|| |tVzrtXj[| | } |tzrt\j[| | } n|tzrt^j[| | } || | t`ur|| g}|j}| dD]O} ||}|dtE|| ||tb||||d|||z ||<Q|t,|D]}|||z ||<| tdur7|| |tzr tf| } n|tzr th| } || ^| tjurP|t zs || n1|tzr |tln| s |tnn |tp|| dz | trur|| || ddz ||}|dtE|| d|| drM|tb||}|d|||z dz||<tE|| d||||z ||<F|||z dz||<YtAd| y)Nrz(internal: unsupported template operator rzlooks too much behindz(look-behind requires fixed-width patternz#internal: unsupported operand type ):appendlen_LITERAL_CODES_REPEATING_CODES_SUCCESS_CODES _ASSERT_CODESSRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_UNICODE_sreunicode_iscasedunicode_tolowerr ascii_iscased ascii_tolowerOP_LOCALE_IGNORE OP_IGNOREOP_UNICODE_IGNORE IN_UNI_IGNORE NOT_LITERALNEGATELITERALFAILUREIN_optimize_charset IN_LOC_IGNORE IN_IGNORE_compile_charsetANYSRE_FLAG_DOTALLANY_ALLSRE_FLAG_TEMPLATEerror_simple_compileSUCCESS SUBPATTERNMARKr ATOMIC_GROUPgetwidthMAXCODEATSRE_FLAG_MULTILINE AT_MULTILINEget AT_LOCALE AT_UNICODEBRANCHJUMPCATEGORY CH_LOCALE CH_UNICODEGROUPREFGROUPREF_LOC_IGNOREGROUPREF_IGNOREGROUPREF_UNI_IGNOREGROUPREF_EXISTS)codepatternr emit_len LITERAL_CODESREPEATING_CODES SUCCESS_CODES ASSERT_CODESiscasedtolowerfixesopavloskipkcharsethascasedgroupr r phitail tailappendskipyesskipnos rr4r4%s ;;D D"M&O"M LGG E ""5?+B # #**G**G E((G((G^IB  ..RR(%b)*RR[RRR[2'Hu_*2./H':DtAw[(V  UU2Y. W Q M!%dd!2DJ 2X 1"gw N GX**u/F]#RY]#:DtAw WeT 2dd*DJ 3Y&W S ? "((BPQQr!u~_R(+,Dz47RU RU r!ue,W !$Z$.T _R(+,Dz47RU RU r!ue,!$Z$.T _R(+, : -/ *E9iT eAgq[! T1nUIyI JT eAgq[]# <   :DtAw T2u % Mdd*DJ = H <  H:DtAw!uzQA)B< 7888 JKKR T2a5% ( Mdd*DJ 2X H))!%%b"-&]]2r*))^^B+ H 6\ HDJe /Dz47r5)T 4:&Q!$Z$.T  / M /!$Z$.T  / 8^ H&r]))^ H 8^..R(()_%() AJ ? " H AqM4jG$q' T2a5% (!uT dT!W $T W 4q 8W r!ue,#DzF2V $T W 4q 8W 2GH H}^Irc|j}|D]\}}|||tur|tur ||(|tus|tur||d||dO|t ur|j |i|tur|j ||tur;|tzr|t||tzr|t|||td||ty)Nrrz#internal: unsupported set operator )rr&r'RANGERANGE_UNI_IGNORECHARSETextend BIGCHARSETrCrrDrrEr2r()r[r rKrMrVrWs rr-r-s ;;DIB R <  7] H 5[B"22 AK AK 7] KKO :  KKO 8^&Yr]#))Z^$R2GH H+I, Mrc@g}g}td}d}|D]\}} |tur7|r/|| } d|| <|r| |vr|| D]} d|| < |s|| rd}nd|| <n|turt| d| ddz} |r[|r+t || D]} d|| <| |vs || D]} d|| < nt || D]} d|| < |sRt t || }n<| D]} d|| < n/|t ur|j|| fn|j|| fg}d} |jd|}|dkrnYt|dk\rd}nH|jd|}|dkr|j|t|fn|j||fq|l|D]A\}}||z dk(r|jt|f&|jt||dz ffC||z }|st|t|kr||fS||fSt|dk(r+t|}|jt|f||z }||fSt|}i}td}d}t}tdd dD]1} || | dz}||vr |||| dz<|x|| dz<||<|dz }||z }3t|}|gt|z|dd|jt |f||z }||fS#t$rBt|dk(r |ddzz }Y|rd}|turt}|j|| fY wxYw) NFTrriri) bytearrayr'rerangemapanyr&r IndexErrorrrffind _mk_bitmaprgbytes_bytes_to_codesri)r[rSfixuprUoutr`charmapr\rVrWrXrZrirunsqr^datacompsmappingblockchunks rr*r*s C DnGH9B6 &="2Y&'  R5[%*2Y/-. /'GBK'+H&' 5[beRU1W-A %(]7-. #$:-21X%756 %77 &)]/-. /''*3w?';H!"+A)*GAJ+6\JJBx(KKR). s9x D A  LLA  q5  t9>D  LLA  q5 KKCL) *  QF   0DAq1uz GQ<( EAq1u:./  0 t  s3x#g,.=    7|s'" GT?# t H},GnG EnG E ;D 1eS !1s7# E> %e GAH /4 4GAH e QJE EMD d D/'22D1IJJ D!"4KC =C &w<3&uv~-G#HU{- RH%+ &sA8KA|S)aj Generate an overlap table for the following prefix. An overlap table is a table of the same size as the prefix which informs about the potential self-overlap for each index in the prefix: - if overlap[i] == 0, prefix[i:] can't overlap prefix[0:...] - if overlap[i] == k with 0 < k <= i, prefix[i-k+1:i+1] overlaps with prefix[0:k] rr)rrn)prefixtablerzidxs r_generate_overlap_tablersC#f+ E 1c&k "AElQi6#;&axaa.C Qi6#;& QwE!H Lrch|tzsy|tzrtjStjSr)rrrrr)r s r _get_iscasedrs/ & & ! !###!!!rcg}|j}d}t|}|jD]\}}|tur|r ||rn||#|turn|\}} } } t || | } | t zr | tzrnNt| | \} }}|| t|}n|t||z}|j| |rnn||dfS||dfS)NTF) rrr}r'r6rrr_get_literal_prefixrrh)rLr r prefixappend prefix_skiprSrVrWr]r r r^flags1prefix1 prefix_skip1got_alls rrrs F==LK5!G,,)B =72;   : -/ *E9i#E9i@F++0H-@F-K *G\7"$"%f+K!-"%f+ "?# $ rc |j\}}|tkDrt}|dk(r|jtdd||gyg}d}g}|tzr |t zst ||\}}}|s t||}|j} | tt|} | dd} |rt} |r| tz} n |r | tz} | | |tkr | |n| t|dt}| ||rR| t|| t|}| ||j||jt|n!|rt|\}} | rJt|||t|| z || <y)Nr)r9r:rhINFOrrrrrrSRE_INFO_PREFIXSRE_INFO_LITERALSRE_INFO_CHARSETrr*r-) rKrLr rXr_rrr[rrMrYmaskr\s r _compile_infors~   FB G|  Qw T1aR() FKG ' 'EO,C':7E'J$ W)'59G ;;DJ t9Dd1g D   7**D &&J G| R W !H  S[  v;K [ F +F34 -g6|%.TT!DJrc.t|ttfSr) isinstancestrrt)objs risstringr:s cC< ((rc|jj|z}g}t|||t||j||j t |Sr)stater rr4r}rr5)r^r rKs r_coder=sJ GGMME !E D$5! T1665!KK Krc8ddjd|DzS)N[%s], c3RK|]}dtjdzdz|fz!yw)z%#0*xrN)rr.0xs r z_hex_code..Ms'M1gq):A(>>Ms%')join)rKs r _hex_coderLs DIIMMM MMrcddltdtttdz fddty)Nrrc  ddfd }fd}dz }||kr#||}|dz }t|}|ttttt t tfvr ||n|ttttttttfvr#|}|dz }||d|t!|fzn|t"ur4|}|dz }t%t&|}|dddk(sJ|||ddnK|t(ur4|}|dz }t%t*|}|ddd k(sJ|||ddn|t,t.t0t2fvr)|}|||||z|dz||z||z }n|t4t6fvr4||d z\}} |d z }||d || t!|t!| fzn|t8ur-||t;||d t<zz|d t<zz }nW|t>ur|}|dz }tAd jCfd||d tDjFzzD} |||| |d tDjFzz }dz tI|D],} |t;||d t<zz|d t<zz }.dzn|tJtLtNtPtRfvr|}|dz }|||ns|tTur|}|||||z|dz }nQ|tVurW|}|||||z|r;|dz||z||z }||}|r|d|||zn |t|r;|dz }n|tXtZt\t^t`fvr=||dz\}} } | tbk(rd} |||| | ||z|dz||z||z }n|tdur!||d z\}}||||||z|d z }no|tfthfvr0||d z\}}||||||z|d z||z||z }n1|tjur)|}|||||z|dz||z||z }n|tlur||dz\}}} } | tbk(rd} |||to|| | ||z|dz|tpzr|dz|dz\}}|d||dz|z}|dddjCd|DzddjCtst |z|z |d|z|z |ttzrdz |d||zdz||z }n tw|||kr#dzy)N)toc|j||d|fzfz }tdvrdndfzddz zt|y)Nz(to %d)z%*d%s :.z rend)addprint)rargslabelslevel offset_widthstarts rprint_z!dis..dis_..print_WsW~ 2bU*,, (lE%6/3sSSE!Gn & 4Lrc@tddzzzt|y)N rr)r)rrrs rprint_2z"dis..dis_..print_2_s c.dis_..s.(R,-)* 4==#--(P(Rs47branch MAXREPEATrz prefix_skipz prefixrrc3&K|] }d|z yw)z%#02xNr rs rrz$dis..dis_..s.Kqw{.Ksz(%r)z overlapin)<OPCODESr5r(r.r0 MAX_UNTIL MIN_UNTILr&r'r%LITERAL_IGNORENOT_LITERAL_IGNORELITERAL_UNI_IGNORENOT_LITERAL_UNI_IGNORELITERAL_LOC_IGNORENOT_LITERAL_LOC_IGNOREchrr;rATCODESrCCHCODESr)r,r$r+rerfrgrrrilistrrrrnr7rFrHrIrGrBrAREPEAT REPEAT_ONEMIN_REPEAT_ONEPOSSESSIVE_REPEATPOSSESSIVE_REPEAT_ONErrJASSERT ASSERT_NOTr8rbinrror ValueError)rrrrrzrVargrYrXr_rjminmaxr prefix_lenrrrKdis_rrrrs` rrzdis..dis_Vs/!      #gEaB FABgwWF44r &(:*,B*,BDD1gQr<3C/9:r1gQ'#,'2Aw%'''r3qr7#x1gQ'#,'2Aw+---r3qr7#I}mDDAwr4AdF+QqS!D&!T /00a1BQr0BCGSW3MMNwr9T!Qi-?%@ABS)^#z!1gQsxx(R15aS$--=O9O1P(R RSr3(S$--'' s(AId1a#y..@&ABCi'A( h9L+--1gQr3tAwr4AdF+QvAwr4AdF+1af%IAE7Dx!D&9wQ N)+@BB!%a1c3)#%Cr4caf5QqS!D&!T & AaCL Tr340Q ++ AaCL cr440QqS!D&!T |#Awr4AdF+QqS!D&!T t(,Q! %eS#)#%Cr4US#!D&A!?*.21Q3!n+J O[9EE!%z)9:FJ"TYY.KF.K%KK"RWWSf-=%>>@Z'EKeU:5E)FGZ'E++QJEDM$'QJET  n$o#gr  r)rsetrr)rKrrrrrs`@@@@@rdisrOsF UF Es3t9q=)*LIIV CIrc t|r|}tj||}nd}t||}|tzrt t ||jj}dg|jjz}|jD] \}}|||< tj|||jjz||jjdz |t|S)Nr)rrparserSRE_FLAG_DEBUGrrr groupdictgroupsitemsrcompiler tuple)r^r rLrK groupindex indexgrouprZrzs rrrs{ MM!U # E?D ~  D ""J!''..(J  "1 1  <<& qE*%  r)NNN)r)5__doc__rrr _constants_casefixrMAGICr'r%rr5r(rrrrr.r)r MIN_REPEATrrr MAX_REPEATrrrrrr rr4r-r*rrr:rintrsrur3rrrrrrrrrrr rrrs& " zzU111;'7#$ Ry( N3J/)74IJ&00, qIf6JX MMA  >Q  (s3 *"&>*X9"v) NRj r