Ë
    !täi�=  ã                   ó€   — d Z ddlZddlmZmZmZmZmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZ dgZg d¢Z G d„ de«      Zy)zÈ
    pygments.lexers.crystal
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexer for Crystal.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)ÚExtendedRegexLexerÚincludeÚbygroupsÚdefaultÚwordsÚline_re)	ÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚErrorÚ
WhitespaceÚCrystalLexer)z!=z!~Ú!Ú%z&&Ú&z**Ú*Ú+Ú-Ú/z<=>z<<z<=Ú<z===z==z=~Ú=z>=z>>Ú>z[]=z[]?z[]Ú^z||Ú|Ú~c                   ó@
  — e Zd ZdZdZdZddgZdgZdgZdZ	e
j                  e
j                  z  Zd	„ Zd
„ Zg dej"                  f‘ edj'                  «       d¬«      ef‘ edj'                  «       dd¬«      ej*                  f‘dej*                  f‘ eg d¢d¬«      ej,                  f‘d eeeej4                  «      f‘d eeeej4                  «      df‘dedf‘d eeeej4                  «      df‘ edj'                  «       dd¬«      ej*                  f‘dej6                  j*                  f‘ edj'                  «       dd¬«      ej6                  f‘dej6                  j*                  f‘def‘def‘d ej8                  d!f‘d" eeej<                  «      d#f‘d$ej<                  d#f‘d% eeej<                  «      d#f‘d& eej@                  ee!«      f‘d' eejD                  ee!«      f‘d( eejF                  ee!«      f‘d) eejH                  ee!«      f‘d* eejH                  ee!«      f‘d+ eejH                  ee!«      f‘d, eejJ                  ee!«      f‘d-ejL                  jN                  f‘d.ejL                  jP                  f‘d/ejL                  jR                  f‘d0ejL                  jR                  f‘d1ejL                  jR                  f‘d2e!f‘ e*d3«      ‘d4ejV                  f‘d5ej,                  f‘d6ejX                  d7f‘d8ejX                  d9f‘d: ee!eejZ                  «      d;f‘ ee.d<¬=«       ee!ejB                  «      f‘d> ee!e«      f‘d?ef‘d@e!f‘dAe!f‘dBe/f‘dCef‘dD eejN                  e!ej`                  «      dEf e1dE«      gdFejN                  fdG ee/eejN                  ee/«      f e1dE«      gdHejX                  dIfdJejX                  dEf e*dK«      gdLejX                  dMfgdNejd                  fg e*dO«       e*dP«      g e*dO«      dQej<                  fdRej<                  fg e*dO«      dQejf                  fdRejf                  fg e*dO«      dSej<                  fdTej<                  fdQej<                  fdUej<                  fdVej<                  dEfgdWej8                  dEfgd6ejX                  dIfdXejX                  dEfdYef e*dK«      gd8ejX                  dIfdZejX                  dEf e*dK«      gd[e!dIfd\e!dEf e*dK«      gd]œZ4e4jk                   e«       «       y^)_r   z"
    For Crystal source code.
    ÚCrystalzhttps://crystal-lang.orgÚcrÚcrystalz*.crztext/x-crystalz2.2c              #   óH  K  — |j                  d«      }|t        |j                  d«      f–— |j                  d«      t        j                  |j                  d«      f–— |j                  d«      t        j
                  |j                  d«      f–— |j                  d«      t        j                  |j                  d«      f–— |j                  j                  dg «      }t        |«       }|j                  |j                  d«      dk(  |j                  d«      f«       |j                  d«      |_
        |j                  d«      |_        t        |«      dk  r| j                  |¬	«      E d {  –—†  n.|j                  t        j                  |j                  d«      f–— |j                  «       |_
        |�r`|D �]:  \  }}g }t        j                  |j                   |j                  «      D ]×  }|r|j                  «       j#                  «       }	n|j                  «       j%                  «       }	|	|k(  r€|D ]3  }
|
j                  «       t        j                  |
j                  «       f–— Œ5 |j                  «       t        j
                  |j                  «       f–— |j                  «       |_
         Œú|j                  |«       ŒÙ |D ])  }
|
j                  «       t&        |
j                  «       f–— Œ+ �Œ= t        |j                   «      |_        |d d …= y y 7 �Œ­­w)
Né   é   é   é   Úheredocstackz<<-é   éd   )Úcontext)Ústartr
   Úgroupr   ÚHeredocÚ	DelimiterÚ__dict__Ú
setdefaultÚboolÚappendÚposÚendÚlenÚget_tokens_unprocessedr   ÚfinditerÚtextÚstripÚrstripr   )ÚselfÚmatchÚctxr-   r)   Ú	outermostÚtolerantÚhdnameÚlinesÚcheckÚamatchs              úf/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/pygments/lexers/crystal.pyÚheredoc_callbackzCrystalLexer.heredoc_callback)   sY  è ø€ ð —‘˜A“ˆØ”X˜uŸ{™{¨1›~Ð-Ò-Ø�k‰k˜!‹nœfŸn™n¨e¯k©k¸!«nÐ<Ò<Ø�k‰k˜!‹nœf×.Ñ.°·±¸A³Ð>Ò>Ø�k‰k˜!‹nœfŸn™n¨e¯k©k¸!«nÐ<Ò<à—|‘|×.Ñ.¨~¸rÓBˆÜ˜\Ó*Ð*ˆ	Ø×Ñ˜UŸ[™[¨›^¨uÑ4°e·k±kÀ!³nÐEÔFà—+‘+˜a“.ˆŒØ—)‘)˜A“,ˆŒäˆ|Ó˜sÒ"Ø×2Ñ2¸3Ð2Ó?×?Ñ?à—'‘'œ6Ÿ>™>¨5¯;©;°q«>Ð9Ò9Ø—)‘)“+ˆŒâä$0Ñ �˜&Ø�Ü$×-Ñ-¨c¯h©h¸¿¹Ö@�EÙØ %§¡£× 3Ñ 3Ó 5™à %§¡£× 4Ñ 4Ó 6˜Ø ’Û&+˜FØ"(§,¡,£.´&·.±.À&Ç,Á,Ã.Ð"PÓPð ',à#Ÿk™k›m¬V×-=Ñ-=¸u¿{¹{»}ÐLÒLØ"'§)¡)£+˜œÙàŸ™ UÕ+ð Aó #(˜Ø$Ÿl™l›n¬e°V·\±\³^ÐCÓCò #(ð# %1ô& ˜#Ÿ(™(“mˆCŒGØšQ‘ð- ð @ûs   ‚E0L"Å2LÅ3F-L"c            
      óh  — i } dt         j                  ft        t        d¬«      t         j                  fdt         j                  fdt         j                  fdt         j                  dfdt        t         j                  t        «      fd	t         j                  d
fdt         j                  dfg| d<   dt         j                  d	fdt         j                  d	fdt         j                  dffD ]-  \  }}}t        |dk(  rdnd«      d|› d�|fd|f||dfg| d|z   <   Œ/ dD �]  \  }}}}d|z   t         j                  fg||k7  |t         j                  dfgz  z   |t         j                  dft        d«      d|z   dz   t         j                  fd|z   dz   t         j                  fgz   | |d z   <   | d   j                  d!|z   t         j                  |d z   f«       d"|z   dz   t         j                  fg||k7  |t         j                  dfgz  z   |t         j                  dfd|z   dz   t         j                  fd|z   dz   t         j                  fgz   | |d#z   <   | d   j                  d$|z   t         j                  |d#z   f«       d"|z   dz   t         j                  fg||k7  |t         j                  dfgz  z   |d%z   t         j                  dft        d&«      d|z   dz   t         j                  fd|z   dz   t         j                  fgz   | |d'z   <   | d   j                  d(|z   t         j                  |d'z   f«       �Œ | S ))Nz
\:\w+[!?]?z\:©Úprefixz:'(\\\\|\\[^\\]|[^'\\])*'z'(\\\\|\\'|[^']|\\[^'\\]+)'z:"z
simple-symz([a-zA-Z_]\w*)(:)(?!:)Ú"zsimple-stringz(?<!\.)`zsimple-backtickÚstringsÚstringÚsymÚbacktickÚ`ústring-escapedústring-intp-escapedz[^\\z#]+ú[\\#]ú#popzsimple-))ú\{ú\}z{}Úcb)ú\[ú\]z\[\]Úsb)z\(z\)z()Úpa)r   r   z<>Úab)ú\|r]   r]   Úpiz\\ú#pushz[\\#Ú]z[^\\#z]+z-intp-stringz%Q?z\\[\\z-stringz%[qwi]z[imsx]*ústring-intpz-regexz%r)r   ÚSymbolr   ÚCRYSTAL_OPERATORSÚCharr   r   ÚDoubleÚBacktickr   ÚOtherr4   ÚRegex)ÚstatesÚnameÚttyper6   ÚlbraceÚrbraceÚbraceccs          rF   Úgen_crystalstrings_rulesz%CrystalLexer.gen_crystalstrings_rulesX   s„  € ØˆàœFŸM™MÐ*ÜÔ$¨UÔ3´V·]±]ÐCØ)¬6¯=©=Ð9à+¬V¯[©[Ð9Ø”F—M‘M <Ð0à&¬´·±ÄÓ(LÐMØ”6—=‘= /Ð2Øœ&Ÿ/™/Ð+<Ð=ð
ˆˆyÑð "*¬6¯=©=¸#Ð >Ø!&¬¯©°sÐ ;Ø!+¬V¯_©_¸cÐ Bó!CÑˆD�%˜ô ¨D°EªMÑ(Ð?TÓUØ˜˜˜SÐ! 5Ð)Ø˜5Ð!Ø�e˜VÐ$ð	&ˆF�9˜T‘>Ò"ð!Cô,ñ *ˆF�F˜G Tð ˜‘¤§¡Ð.ð+à˜6Ñ!ØœŸ™ wÐ/ð&ñ ñ+ð
 œŸ™ vÐ.ÜÐ-Ó.Ø˜7Ñ" SÑ(¬&¯,©,Ð7Ø˜GÑ# dÑ*¬F¯L©LÐ9ð	ñ		+ˆF�4˜Ñ&Ñ'ð �9Ñ×$Ñ$ f¨v¡o´v·|±|Ø&*¨>Ñ&9ð&;ô <ð ˜GÑ# cÑ)¬6¯<©<Ð8ð&à˜6Ñ!ØœŸ™ wÐ/ð&ñ ñ&ð
 œŸ™ vÐ.Ø˜7Ñ" SÑ(¬&¯,©,Ð7Ø˜GÑ# dÑ*¬F¯L©LÐ9ðñ	&ˆF�4˜	‘>Ñ"ð �9Ñ×$Ñ$ i°&Ñ&8¼&¿,¹,Ø&*¨9¡nð&6ô 7ð ˜GÑ# cÑ)¬6¯<©<Ð8ð%à˜6Ñ!ØœŸ™ wÐ/ð&ñ ñ%ð
 ˜)Ñ#¤V§\¡\°6Ð:Ü˜Ó&Ø˜7Ñ" SÑ(¬&¯,©,Ð7Ø˜GÑ# dÑ*¬F¯L©LÐ9ð	ñ		%ˆF�4˜‘=Ñ!ð �9Ñ×$Ñ$ e¨f¡n´f·l±lØ&*¨8¡mð&5ö 6ðO,ðT ˆó    z#.*?$zó
                abstract asm begin break case do else elsif end ensure extend if in
                include next of private protected require rescue return select self super
                then unless until when while with yield
            z\b)Úsuffixzz
                previous_def forall out uninitialized __DIR__ __FILE__ __LINE__
                __END_LINE__
            z(?<!\.))rJ   rq   z(\.(is_a\?|nil\?|responds_to\?|as\?|as\b))ÚtrueÚfalseÚnilz2(module|lib)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)z)(def|fun|macro)(\s+)((?:[a-zA-Z_]\w*::)*)Úfuncnamezdef(?=[*%&^`~+-/\[<>=])zI(annotation|class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)Ú	classnamezN
                instance_sizeof offsetof pointerof sizeof typeof
            z+(?<!\.)(debugger\b|p!|pp!|record\b|spawn\b)z�
                abort at_exit caller exit gets loop main p pp print printf puts
                raise rand read_line sleep spawn sprintf system
            z(?<!\.)(((class_)?((getter|property)\b[!?]?|setter\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\b)z/(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)z(<<-?)("|\')()(\2)(.*?\n)Ú__END__úend-partab  (?:^|(?<=[=<>~!:])|(?<=(?:\s|;)when\s)|(?<=(?:\s|;)or\s)|(?<=(?:\s|;)and\s)|(?<=\.index\s)|(?<=\.scan\s)|(?<=\.sub\s)|(?<=\.sub!\s)|(?<=\.gsub\s)|(?<=\.gsub!\s)|(?<=\.match\s)|(?<=(?:\s|;)if\s)|(?<=(?:\s|;)elsif\s)|(?<=^when\s)|(?<=^index\s)|(?<=^scan\s)|(?<=^sub\s)|(?<=^gsub\s)|(?<=^sub!\s)|(?<=^gsub!\s)|(?<=^match\s)|(?<=^if\s)|(?<=^elsif\s))(\s*)(/)úmultiline-regexz(?<=\(|,|\[)/z(\s+)(/)(?![\s=])z5(0o[0-7]+(?:_[0-7]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?zA(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?z3(0b[01]+(?:_[01]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)(?:e[+-]?[0-9]+)?(?:_?f[0-9]+)?)(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)(?:_?f[0-9]+)?)(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)?(?:_?f[0-9]+))(\s*)([/?])?z8(0\b|[1-9][\d]*(?:_\d+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?z@@[a-zA-Z_]\w*z@[a-zA-Z_]\w*z\$\w+z\$[!@&`\'+~=/\\,;.<>_*$?:"^-]z\$-[0adFiIlpvw]z::rL   zi\?(\\[MC]-)*(\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})|\S)(?!\w)z[A-Z][A-Z_]+\b(?!::|\.)z\{%úin-macro-controlz\{\{úin-macro-exprz!(@\[)(\s*)([A-Z]\w*(::[A-Z]\w*)*)úin-annotz(\.|::)rI   z,(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])z[a-zA-Z_]\w*(?:[!?](?!=))?z:(\[|\]\??|\*\*|<=>?|>=|<<?|>>?|=~|===|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&!^|~]=?z[(){};,/?:\\]z\s+z\(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)rT   z	[A-Z_]\w*z(\()(\s*)([A-Z_]\w*)(\s*)(\))rU   r_   rV   Úrootz#\{úin-intpzR\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})ra   rQ   rS   z[^\\#]+z\\\\z\\/z[^\\/#]+z/[imsx]*z.+z%\}z(for|verbatim)\bz\}\}rX   rY   )r}   ru   rv   r~   ra   rQ   rR   zinterpolated-regexzinterpolated-stringry   rx   rz   r{   r|   N)6Ú__name__Ú
__module__Ú__qualname__Ú__doc__rj   ÚurlÚaliasesÚ	filenamesÚ	mimetypesÚversion_addedÚreÚDOTALLÚ	MULTILINEÚflagsrG   ro   r	   ÚSingler   Úsplitr   ÚPseudoÚConstantr   r   r   Ú	NamespaceÚBuiltinÚPreprocr   rh   r   ÚOctr
   ÚHexÚBinÚFloatÚIntegerÚVariableÚClassÚInstanceÚGlobalr   rd   ÚInterpolÚ	Decoratorrc   r   ÚFunctionr   ÚEscaperg   ÚtokensÚupdate© rp   rF   r   r      s–  „ ñð €DØ
$€CØ�YÐ€GØ�€IØ!Ð"€IØ€Mà�I‰I˜Ÿ™Ñ$€Eò- ò^FðRF
Ø�w—~‘~Ð&ðF
ñ ð ÷ ‘“ ô	'ð )0ð	1ðF
ñ ð ÷ ‘“ 
°5ô:ð <C¿>¹>ðKðF
ð 9¸'¿.¹.ÐIðF
ñ Ò+°EÔ:¸G×<LÑ<LÐMðF
ð  CÙ�g˜z¨4¯>©>Ó:ð<ð!F
ð$ :Ù�g˜z¨4¯>©>Ó:¸JðHð%F
ð( (¨°*Ð=ð)F
ð* ZÙ�g˜z¨4¯>©>Ó:¸KðIð+F
ñ0 ð ç‘“ 
°5ô:à;B¿>¹>ðKð1F
ð8 <¸T¿\¹\×=PÑ=PÐQð9F
ñ< ð ÷ ‘“ 
°5ô:ð <@¿<¹<ðIð=F
ðFYà�\‰\× Ñ ð"ðGF
ðN @ØððOF
ðT *Ð+;Ð<ðUF
ðV ˜Ÿ™¨*Ð5ðWF
ðZñ. $ J°·±Ó=Ð?Pð/Rð[F
ðL ˜vŸ|™|Ð->Ð?ðMF
ðP "¡8¨J¸¿¹Ó#EØð ðQF
ðd FÙ�f—j‘j *¨hÓ7ð9ðeF
ðh RÙ�f—j‘j *¨hÓ7ð9ðiF
ðl DÙ�f—j‘j *¨hÓ7ð9ðmF
ðt,á�f—l‘l J°Ó9ð;ðuF
ðz,á�f—l‘l J°Ó9ð;ð{F
ð@+á�f—l‘l J°Ó9ð;ðAF
ðF IÙ�f—n‘n j°(Ó;ð=ðGF
ðL  §¡× 3Ñ 3Ð4ðMF
ðN ˜tŸ}™}×5Ñ5Ð6ðOF
ðP �t—}‘}×+Ñ+Ð,ðQF
ðR .¨t¯}©}×/CÑ/CÐDðSF
ðT   §¡×!5Ñ!5Ð6ðUF
ðV �HÐðWF
ñX �IÓðYF
ð\ð �[‰[ðð]F
ðd (¨¯©Ð7ðeF
ðh �V—_‘_Ð&8Ð9ðiF
ðj �f—o‘o Ð7ðkF
ðn 2Ù�h 
¨D¯N©NÓ;¸ZðIðoF
ñv Ð$¨ZÔ8Ù�h §¡Ó.ð0ðwF
ðz =Ù�h Ó%ð'ð{F
ð@ +¨DÐ1ðAF
ðB%Ø&.ð0ðCF
ðF " 8Ð,ðGF
ðH ˜{Ð+ðIF
ðJ �ZÐ ðKF
ðP6ñ �d—j‘j (¨D¯M©MÓ:¸FðDñ �F‹Oð
ð ˜4Ÿ:™:Ð&Ø-Ù�k :¨t¯z©z¸:À{ÓSðUá�F‹Oð	
ð �F—O‘O WÐ-Ø�F—O‘O VÐ,Ù�F‹Oð
ð �V—_‘_ iÐ0ð
ð
 cØ�]‰]ðð
ñ �MÓ"ÙÐ$Ó%ð 
ñ
 �MÓ"Ø�v—|‘|Ð$Ø˜Ÿ™Ð&ð
ñ �MÓ"Ø�v—|‘|Ð$Ø˜Ÿ™Ð&ð 
ñ �MÓ"Ø�f—l‘lÐ#Ø�V—\‘\Ð"Ø�v—|‘|Ð$Ø˜&Ÿ,™,Ð'Ø˜&Ÿ,™,¨Ð/ð
ð �G—O‘O VÐ,ð
ð �V—_‘_ gÐ.Ø�V—_‘_ fÐ-Ø  'Ð*Ù�F‹Oð	
ð �f—o‘o wÐ/Ø�f—o‘o vÐ.Ù�F‹Oð
ð �H˜gÐ&Ø�H˜fÐ%Ù�F‹Oð
ñMK€FðX ‡M�MÑ*Ó,Õ-rp   )r‚   rˆ   Úpygments.lexerr   r   r   r   r   r   Úpygments.tokenr	   r
   r   r   r   r   r   r   r   Ú__all__rc   r   r¢   rp   rF   Ú<module>r¦      sI   ðñó 
÷÷ ÷#÷ #õ #ð Ð
€òÐ ôQ.Ð%õ Q.rp   